atagen

matrix-rust-sdk

public
Star0
Watch0

Commit 7ff8adafe9e4

tarball

atagen <boss@atagen.co>2026-10-22 12:30 UTC

994 files changed+454591-0
base: snapshot of upstream 1c44fb662
Added file: .cargo/config.toml+16 additions
@@ -0,0 +1,16 @@
1+[alias]
2+xtask = "run --package xtask --"
3+uniffi-bindgen = "run --package uniffi-bindgen --"
4+
5+[doc.extern-map.registries]
6+crates-io = "https://docs.rs/"
7+
8+[unstable]
9+rustdoc-map = true
10+
11+[target.aarch64-linux-android]
12+# These rust flags improve the performance on Android on arm64
13+rustflags = ["-C", "target-feature=+neon,+aes,+sha2,+sha3,+pmuv3"]
14+
15+[env]
16+IPHONEOS_DEPLOYMENT_TARGET = "16.0"
Added file: .config/nextest.toml+13 additions
@@ -0,0 +1,13 @@
1+[profile.default]
2+retries = { backoff = "exponential", count = 3, delay = "1s", jitter = true }
3+# kill the slow tests if they still aren't up after 180s
4+slow-timeout = { period = "60s", terminate-after = 3 }
5+
6+[profile.ci]
7+retries = { backoff = "exponential", count = 4, delay = "1s", jitter = true }
8+# kill the slow tests if they still aren't up after 180s
9+slow-timeout = { period = "60s", terminate-after = 3 }
10+
11+[profile.ci.junit]
12+path = "junit.xml"
13+store-success-output = true
Added file: .deny.toml+53 additions
@@ -0,0 +1,53 @@
1+# https://embarkstudios.github.io/cargo-deny/checks/cfg.html
2+[graph]
3+all-features = true
4+exclude = [
5+ # dev only dependency
6+ "criterion"
7+]
8+
9+[advisories]
10+version = 2
11+ignore = [
12+ { id = "RUSTSEC-2024-0388", reason = "Unmaintained derivative crate, not a direct dependency" },
13+]
14+
15+[licenses]
16+version = 2
17+allow = [
18+ "Apache-2.0",
19+ "Apache-2.0 WITH LLVM-exception",
20+ "CDLA-Permissive-2.0",
21+ "BSD-2-Clause",
22+ "BSD-3-Clause",
23+ "BSL-1.0",
24+ "ISC",
25+ "MIT",
26+ "MPL-2.0",
27+ "Unicode-3.0",
28+ "Zlib",
29+]
30+
31+[bans]
32+# We should disallow this, but it's currently a PITA.
33+multiple-versions = "allow"
34+wildcards = "allow"
35+
36+[sources]
37+unknown-registry = "deny"
38+unknown-git = "deny"
39+
40+allow-git = [
41+ # A patch override for the bindings fixing a bug for Android before upstream
42+ # releases a new version.
43+ "https://github.com/tokio-rs/tracing.git",
44+ # Well, it's Ruma.
45+ "https://github.com/ruma/ruma",
46+ # A patch override for the bindings: https://github.com/rodrimati1992/const_panic/pull/10
47+ "https://github.com/jplatte/const_panic",
48+ # A patch override for the bindings: https://github.com/smol-rs/async-compat/pull/22
49+ "https://github.com/element-hq/async-compat",
50+ # We can release vodozemac whenever we need but let's not block development
51+ # on releases.
52+ "https://github.com/matrix-org/vodozemac",
53+]
Added file: .editorconfig+6 additions
@@ -0,0 +1,6 @@
1+root = true
2+
3+# Unix-style newlines with a newline ending every file
4+[*]
5+end_of_line = lf
6+insert_final_newline = true
Added file: .github/CODEOWNERS+3 additions
@@ -0,0 +1,3 @@
1+* @matrix-org/rust
2+/crates/matrix-sdk-crypto @matrix-org/rust @matrix-org/rust-crypto-reviewers
3+/crates/matrix-sdk-indexeddb/src/crypto_store @matrix-org/rust @matrix-org/rust-crypto-reviewers
Added file: .github/dependabot.yml+9 additions
@@ -0,0 +1,9 @@
1+version: 2
2+updates:
3+ - package-ecosystem: "github-actions"
4+ directory: "/"
5+ schedule:
6+ # Check for updates to GitHub Actions every week
7+ interval: "weekly"
8+ cooldown:
9+ default-days: 7
Added file: .github/pull_request_template.md+11 additions
@@ -0,0 +1,11 @@
1+<!-- description of the changes in this PR -->
2+
3+- [ ] I've documented the public API changes in the appropriate changelog files
4+ (see [Writing changelog entries][pull-request-template-changelog]).
5+- [ ] This PR was made with the help of AI.
6+
7+<!-- Sign-off, if not part of the commits -->
8+<!-- See CONTRIBUTING.md if you don't know what this is -->
9+Signed-off-by:
10+
11+[pull-request-template-changelog]: https://github.com/matrix-org/matrix-rust-sdk/blob/main/CONTRIBUTING.md#writing-changelog-entries
Added file: .github/workflows/benchmarks.yml+103 additions
@@ -0,0 +1,103 @@
1+name: Benchmarks
2+
3+on:
4+ push:
5+ branches:
6+ - "main"
7+ pull_request:
8+ workflow_dispatch:
9+
10+jobs:
11+ benchmarks:
12+ name: Run Benchmarks
13+ runs-on: ubuntu-latest
14+ permissions:
15+ contents: read
16+ id-token: write
17+ strategy:
18+ matrix:
19+ benchmark:
20+ - crypto_bench
21+ - event_cache
22+ - linked_chunk
23+ - store_bench
24+ - timeline
25+ - room_list
26+
27+ steps:
28+ # This CI workflow can run into space issue, so we're cleaning up some
29+ # space here.
30+ - name: Create some more space
31+ run: |
32+ echo "Disk space before cleanup"
33+ df -h
34+
35+ cd /opt
36+ find . -maxdepth 1 -mindepth 1 '!' -path ./containerd '!' -path ./actionarchivecache '!' -path ./runner '!' -path ./runner-cache -exec rm -rf '{}' ';'
37+ rm -rf /opt/hostedtoolcache
38+
39+ # Get rid of binaries and libs we're not interested in.
40+ sudo rm -rf \
41+ /usr/local/julia* \
42+ /usr/local/aws*
43+
44+ sudo rm -rf \
45+ /usr/local/bin/minikube \
46+ /usr/local/bin/node \
47+ /usr/local/bin/stack \
48+ /usr/local/bin/bicep \
49+ /usr/local/bin/pulumi* \
50+ /usr/local/bin/helm \
51+ /usr/local/bin/azcopy \
52+ /usr/local/bin/packer \
53+ /usr/local/bin/cmake-gui \
54+ /usr/local/bin/cpack
55+
56+ sudo rm -rf \
57+ /usr/local/share/powershell \
58+ /usr/local/share/chromium
59+
60+ sudo rm -rf /usr/local/lib/android
61+
62+ echo "::group::/usr/local/bin/*"
63+ du -hsc /usr/local/bin/* | sort -h
64+ echo "::endgroup::"
65+
66+ echo "::group::/usr/local/share/*"
67+ du -hsc /usr/local/share/* | sort -h
68+ echo "::endgroup::"
69+
70+ echo "::group::/usr/local/*"
71+ du -hsc /usr/local/* | sort -h
72+ echo "::endgroup::"
73+
74+ echo "::group::/usr/local/lib/*"
75+ du -hsc /usr/local/lib/* | sort -h
76+ echo "::endgroup::"
77+
78+ echo "::group::/opt/*"
79+ du -hsc /opt/* | sort -h
80+ echo "::endgroup::"
81+
82+ echo "Disk space after cleanup"
83+ df -h
84+
85+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
86+ with:
87+ persist-credentials: false
88+
89+ - name: Setup rust toolchain, cache and cargo-codspeed binary
90+ uses: moonrepo/setup-rust@abb2d32350334249b178c401e5ec5836e0cd88d3
91+ with:
92+ channel: stable
93+ cache-target: release
94+ bins: cargo-codspeed
95+
96+ - name: Build the benchmark target(s)
97+ run: cargo codspeed build -p benchmarks --bench ${{ matrix.benchmark }} --features codspeed
98+
99+ - name: Run the benchmarks
100+ uses: CodSpeedHQ/action@3194d9a39c4d46684cb44bf7207fc56626aad8fd
101+ with:
102+ run: cargo codspeed run
103+ mode: simulation
Added file: .github/workflows/bindings_ci.yml+243 additions
@@ -0,0 +1,243 @@
1+name: Bindings tests
2+
3+on:
4+ workflow_dispatch:
5+ push:
6+ branches: ["main", "features/**", "release-**"]
7+ pull_request:
8+ branches: ["main", "features/**", "release-**"]
9+ types:
10+ - opened
11+ - reopened
12+ - synchronize
13+ - ready_for_review
14+
15+permissions: {}
16+
17+concurrency:
18+ group: ${{ github.workflow }}-${{ github.ref }}
19+ cancel-in-progress: true
20+
21+env:
22+ CARGO_TERM_COLOR: always
23+
24+jobs:
25+ xtask:
26+ uses: ./.github/workflows/xtask.yml
27+
28+ test-uniffi-codegen:
29+ name: Test UniFFI bindings generation
30+ needs: xtask
31+ if: github.event_name == 'push' || !github.event.pull_request.draft
32+ runs-on: ubuntu-latest
33+
34+ steps:
35+ - name: Checkout
36+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
37+ with:
38+ persist-credentials: false
39+
40+ - name: Install protoc
41+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1
42+ with:
43+ tool: protoc@3.20.3
44+
45+ - name: Install Rust
46+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
47+ with:
48+ toolchain: stable
49+
50+ # Cargo config can screw with caching and is only used for alias config
51+ # and extra lints, which we don't care about here
52+ - name: Delete cargo config
53+ run: rm .cargo/config.toml
54+
55+ - name: Load cache
56+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
57+ with:
58+ save-if: ${{ github.ref == 'refs/heads/main' }}
59+
60+ - name: Get xtask
61+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
62+ with:
63+ path: target/debug/xtask
64+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
65+ fail-on-cache-miss: true
66+
67+ - name: Build library & generate bindings
68+ run: target/debug/xtask ci bindings
69+
70+ test-android:
71+ name: matrix-rust-components-kotlin
72+ needs: xtask
73+ runs-on: ubuntu-latest
74+ if: github.event_name == 'push' || !github.event.pull_request.draft
75+
76+ steps:
77+ - name: Checkout Rust SDK
78+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
79+ with:
80+ persist-credentials: false
81+
82+ - name: Checkout Kotlin Rust Components project
83+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
84+ with:
85+ repository: matrix-org/matrix-rust-components-kotlin
86+ path: rust-components-kotlin
87+ ref: main
88+ persist-credentials: false
89+
90+ - name: Use JDK 17
91+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
92+ with:
93+ distribution: 'temurin' # See 'Supported distributions' for available options
94+ java-version: '17'
95+
96+ - name: Install android sdk
97+ uses: malinskiy/action-android/install-sdk@fa103ef30331e95f266418a6a97e98f61f626887 # release/0.1.7
98+
99+ - name: Install android ndk
100+ uses: nttld/setup-ndk@ed92fe6cadad69be94a966a7ee3271275e62f779 # v1
101+ id: install-ndk
102+ with:
103+ ndk-version: r27
104+
105+ - name: Install Rust
106+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
107+ with:
108+ toolchain: stable
109+
110+ # Cargo config can screw with caching and is only used for alias config
111+ # and extra lints, which we don't care about here
112+ - name: Delete cargo config
113+ run: rm .cargo/config.toml
114+
115+ - name: Load cache
116+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
117+ with:
118+ save-if: ${{ github.ref == 'refs/heads/main' }}
119+
120+ - name: Get xtask
121+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
122+ with:
123+ path: target/debug/xtask
124+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
125+ fail-on-cache-miss: true
126+
127+ - name: Install Rust dependencies
128+ run: |
129+ rustup target add x86_64-linux-android
130+ cargo install cargo-ndk
131+
132+ - name: Build SDK bindings for Android
133+ # Building for x86_64-linux-android as it's the most prone to breaking and building for every arch is too much
134+ run: |
135+ echo "Building SDK for x86_64-linux-android and creating bindings"
136+ target/debug/xtask kotlin build-android-library --package full-sdk --only-target x86_64-linux-android --src-dir rust-components-kotlin/sdk/sdk-android/src/main
137+ echo "Copying the result binary to the Android project"
138+ cd rust-components-kotlin
139+ echo "Building the Kotlin bindings"
140+ ./gradlew :sdk:sdk-android:assembleDebug
141+
142+ test-apple:
143+ name: matrix-rust-components-swift
144+ needs: xtask
145+ runs-on: macos-15
146+ if: github.event_name == 'push' || !github.event.pull_request.draft
147+
148+ steps:
149+ - name: Checkout
150+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
151+ with:
152+ persist-credentials: false
153+
154+ # install protoc in case we end up rebuilding opentelemetry-proto
155+ - name: Install protoc
156+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1
157+ with:
158+ tool: protoc@3.20.3
159+
160+ - name: Install Rust
161+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
162+ with:
163+ toolchain: stable
164+
165+ - name: Install aarch64-apple-ios target
166+ run: rustup target install aarch64-apple-ios
167+
168+ # Cargo config can screw with caching and is only used for alias config
169+ # and extra lints, which we don't care about here
170+ - name: Delete cargo config
171+ run: rm .cargo/config.toml
172+
173+ - name: Load cache
174+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
175+ with:
176+ save-if: ${{ github.ref == 'refs/heads/main' }}
177+
178+ - name: Get xtask
179+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
180+ with:
181+ path: target/debug/xtask
182+ key: "${{ needs.xtask.outputs.cachekey-macos }}"
183+ fail-on-cache-miss: true
184+
185+ - name: Build library & bindings
186+ run: target/debug/xtask swift build-library
187+
188+ - name: Run XCTests
189+ working-directory: bindings/apple
190+ run: swift test
191+
192+ - name: Build Framework
193+ run: target/debug/xtask swift build-framework --target=aarch64-apple-ios --profile=dev --ios-deployment-target=18.0
194+
195+ complement-crypto:
196+ name: "Run Complement Crypto tests"
197+ uses: matrix-org/complement-crypto/.github/workflows/single_sdk_tests.yml@399a1deeab0d7e4fa9604cbe83b1df6058c40193 # main
198+ with:
199+ use_rust_sdk: "." # use local checkout
200+ use_complement_crypto: "MATCHING_BRANCH"
201+
202+ test-crypto-apple-framework-generation:
203+ name: Generate Crypto FFI Apple XCFramework
204+ runs-on: macos-15
205+ if: github.event_name == 'push' || !github.event.pull_request.draft
206+
207+ steps:
208+ - name: Checkout
209+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
210+ with:
211+ persist-credentials: false
212+
213+ # install protoc in case we end up rebuilding opentelemetry-proto
214+ - name: Install protoc
215+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1
216+ with:
217+ tool: protoc@3.20.3
218+
219+ - name: Install Rust
220+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
221+ with:
222+ toolchain: stable
223+
224+ - name: Add rust targets
225+ run: |
226+ rustup target add aarch64-apple-ios
227+
228+ # Cargo config can screw with caching and is only used for alias config
229+ # and extra lints, which we don't care about here
230+ - name: Delete cargo config
231+ run: rm .cargo/config.toml
232+
233+ - name: Load cache
234+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
235+ with:
236+ save-if: ${{ github.ref == 'refs/heads/main' }}
237+
238+ - name: Run the Build Framework script
239+ run: ./bindings/apple/build_crypto_xcframework.sh -i
240+
241+ - name: Is XCFramework generated?
242+ if: ${{ hashFiles('generated/MatrixSDKCryptoFFI.zip') != '' }}
243+ run: echo "XCFramework exists"
Added file: .github/workflows/ci.yml+433 additions
@@ -0,0 +1,433 @@
1+name: Rust tests
2+
3+on:
4+ workflow_dispatch:
5+ push:
6+ branches: ["main", "features/**", "release-**"]
7+ pull_request:
8+ branches: ["main", "features/**", "release-**"]
9+
10+permissions: {}
11+
12+concurrency:
13+ group: ${{ github.workflow }}-${{ github.ref }}
14+ cancel-in-progress: true
15+
16+env:
17+ CARGO_TERM_COLOR: always
18+ # Insta.rs is run directly via cargo test. We don't want insta.rs to create new snapshots files.
19+ # Just want it to run the tests (option `no` instead of `auto`).
20+ INSTA_UPDATE: no
21+
22+jobs:
23+ xtask:
24+ uses: ./.github/workflows/xtask.yml
25+
26+ test-matrix-sdk-features:
27+ name: 🐧 [m], ${{ matrix.name }}
28+ needs: xtask
29+
30+ runs-on: ubuntu-latest
31+ strategy:
32+ fail-fast: true
33+ matrix:
34+ name:
35+ - no-encryption
36+ - no-sqlite
37+ - no-encryption-and-sqlite
38+ - sqlite-cryptostore
39+ - experimental-encrypted-state-events
40+ - markdown
41+ - socks
42+ - sso-login
43+ - search
44+
45+ steps:
46+ - name: Checkout
47+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
48+ with:
49+ persist-credentials: false
50+
51+ - name: Install Rust
52+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
53+ with:
54+ toolchain: stable
55+
56+ - name: Install libsqlite
57+ run: |
58+ sudo apt-get update
59+ sudo apt-get install libsqlite3-dev
60+
61+ - name: Load cache
62+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
63+ with:
64+ # use a separate cache for each job to work around
65+ # https://github.com/Swatinem/rust-cache/issues/124
66+ key: "${{ matrix.name }}"
67+
68+ # ... but only save the cache on the main branch
69+ # cf https://github.com/Swatinem/rust-cache/issues/95
70+ save-if: ${{ github.ref == 'refs/heads/main' }}
71+
72+ - name: Install nextest
73+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
74+ with:
75+ tool: nextest
76+
77+ - name: Get xtask
78+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
79+ with:
80+ path: target/debug/xtask
81+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
82+ fail-on-cache-miss: true
83+
84+ - name: Test
85+ run: |
86+ target/debug/xtask ci test-features ${{ matrix.name }}
87+
88+ test-matrix-sdk-examples:
89+ name: 🐧 [m]-examples
90+ needs: xtask
91+ runs-on: ubuntu-latest
92+
93+ steps:
94+ - name: Checkout the repo
95+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
96+ with:
97+ persist-credentials: false
98+
99+ - name: Install Rust
100+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
101+ with:
102+ toolchain: stable
103+
104+ - name: Load cache
105+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
106+ with:
107+ save-if: ${{ github.ref == 'refs/heads/main' }}
108+
109+ - name: Install nextest
110+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
111+ with:
112+ tool: nextest
113+
114+ - name: Get xtask
115+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
116+ with:
117+ path: target/debug/xtask
118+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
119+ fail-on-cache-miss: true
120+
121+ - name: Test
122+ run: |
123+ target/debug/xtask ci examples
124+
125+ test-matrix-sdk-crypto:
126+ name: 🐧 [m]-crypto
127+ needs: xtask
128+ runs-on: ubuntu-latest
129+
130+ steps:
131+ - name: Checkout the repo
132+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
133+ with:
134+ persist-credentials: false
135+
136+ - name: Install libsqlite
137+ run: |
138+ sudo apt-get update
139+ sudo apt-get install libsqlite3-dev
140+
141+ - name: Install Rust
142+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
143+ with:
144+ toolchain: stable
145+ components: clippy
146+
147+ - name: Load cache
148+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
149+ with:
150+ save-if: ${{ github.ref == 'refs/heads/main' }}
151+
152+ - name: Install nextest
153+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
154+ with:
155+ tool: nextest
156+
157+ - name: Get xtask
158+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
159+ with:
160+ path: target/debug/xtask
161+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
162+ fail-on-cache-miss: true
163+
164+ - name: Test
165+ run: |
166+ target/debug/xtask ci test-crypto
167+
168+ test-all-crates:
169+ name: ${{ matrix.name }}
170+
171+ runs-on: ${{ matrix.os }}
172+ strategy:
173+ fail-fast: true
174+ matrix:
175+ include:
176+ - name: 🐧 all crates, 🦀 stable
177+ rust: stable
178+ os: ubuntu-latest
179+
180+ - name: 🐧 all crates, 🦀 beta
181+ rust: beta
182+ os: ubuntu-latest
183+
184+ - name: 🍏 all crates, 🦀 stable
185+ rust: stable
186+ os: macos-latest
187+
188+ steps:
189+ - name: Checkout
190+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
191+ with:
192+ persist-credentials: false
193+
194+ - name: Install protoc
195+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1
196+ with:
197+ tool: protoc@3.20.3
198+
199+ - name: Install libsqlite
200+ if: runner.os == 'Linux'
201+ run: |
202+ sudo apt-get update
203+ sudo apt-get install libsqlite3-dev
204+
205+ - name: Install Rust toolchain
206+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
207+ with:
208+ toolchain: ${{ matrix.rust }}
209+
210+ - name: Load cache
211+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
212+ with:
213+ save-if: ${{ github.ref == 'refs/heads/main' }}
214+
215+ - name: Install nextest
216+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
217+ with:
218+ tool: nextest
219+
220+ - name: Test
221+ run: |
222+ cargo nextest run --workspace \
223+ --exclude matrix-sdk-integration-testing --features testing
224+
225+ - name: Test documentation
226+ run: |
227+ cargo test --doc --features docsrs
228+
229+ test-wasm:
230+ name: 🕸️ ${{ matrix.name }}
231+ needs: xtask
232+
233+ runs-on: ubuntu-latest
234+
235+ strategy:
236+ fail-fast: true
237+ matrix:
238+ include:
239+ - name: '[m]-qrcode'
240+ cmd: matrix-sdk-qrcode
241+
242+ - name: '[m]-base'
243+ cmd: matrix-sdk-base
244+
245+ - name: '[m]-common'
246+ cmd: matrix-sdk-common
247+
248+ - name: '[m], no-default'
249+ cmd: matrix-sdk-no-default
250+
251+ - name: '[m]-ui'
252+ cmd: matrix-sdk-ui
253+ check_only: true
254+
255+ - name: '[m]-indexeddb'
256+ cmd: indexeddb
257+
258+ - name: '[m], indexeddb stores'
259+ cmd: matrix-sdk-indexeddb-stores
260+
261+ - name: '[m], indexeddb stores, no crypto'
262+ cmd: matrix-sdk-indexeddb-stores-no-crypto
263+
264+ steps:
265+ - name: Checkout the repo
266+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
267+ with:
268+ persist-credentials: false
269+
270+ - name: Install Rust
271+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
272+ with:
273+ toolchain: stable
274+ targets: wasm32-unknown-unknown
275+ components: clippy
276+
277+ - name: Install wasm-pack
278+ uses: qmaru/wasm-pack-action@785fe709cd17eb6a97607eda9b6f5dbebed2b89c # v0.5.3
279+ if: '!matrix.check_only'
280+ with:
281+ version: v0.13.1
282+
283+ - name: Load cache
284+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
285+ with:
286+ # use a separate cache for each job to work around
287+ # https://github.com/Swatinem/rust-cache/issues/124
288+ key: "${{ matrix.cmd }}"
289+
290+ # ... but only save the cache on the main branch
291+ # cf https://github.com/Swatinem/rust-cache/issues/95
292+ save-if: ${{ github.ref == 'refs/heads/main' }}
293+
294+ - name: Install nextest
295+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
296+ with:
297+ tool: nextest
298+
299+ - name: Get xtask
300+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
301+ with:
302+ path: target/debug/xtask
303+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
304+ fail-on-cache-miss: true
305+
306+ - name: Rust Check
307+ run: |
308+ target/debug/xtask ci wasm ${{ matrix.cmd }}
309+
310+ - name: Wasm-Pack test
311+ if: '!matrix.check_only'
312+ run: |
313+ target/debug/xtask ci wasm-pack ${{ matrix.cmd }}
314+
315+ typos:
316+ name: Spell Check with Typos
317+ runs-on: ubuntu-latest
318+
319+ steps:
320+ - name: Checkout Actions Repository
321+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
322+ with:
323+ persist-credentials: false
324+
325+ - name: Check the spelling of the files in our repo
326+ uses: crate-ci/typos@aca895bf05aec0cb7dffa6f94495e923224d9f17 # v1.46.2
327+
328+ lint:
329+ name: Lint
330+ needs: xtask
331+ runs-on: ubuntu-latest
332+
333+ steps:
334+ - name: Checkout the repo
335+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
336+ with:
337+ persist-credentials: false
338+
339+ - name: Install protoc
340+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1
341+ with:
342+ tool: protoc@3.20.3
343+
344+ - name: Install Rust
345+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
346+ with:
347+ toolchain: nightly-2026-02-26
348+ components: clippy, rustfmt
349+
350+ - name: Load cache
351+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
352+ with:
353+ save-if: ${{ github.ref == 'refs/heads/main' }}
354+
355+ - name: Get xtask
356+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
357+ with:
358+ path: target/debug/xtask
359+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
360+ fail-on-cache-miss: true
361+
362+ - name: Check Formatting
363+ run: |
364+ target/debug/xtask ci style
365+
366+ - name: Clippy
367+ run: |
368+ target/debug/xtask ci clippy
369+
370+ integration-tests:
371+ name: 'Integration test (features: ${{ matrix.feature }})'
372+ runs-on: ubuntu-latest
373+
374+ # run several docker containers with the same networking stack so the hostname 'synapse'
375+ # maps to the synapse container, etc.
376+ services:
377+ # tests need a synapse: this is a service and not michaelkaye/setup-matrix-synapse@main as the
378+ # latter does not provide networking for services to communicate with it.
379+ synapse:
380+ image: ghcr.io/matrix-org/synapse-service:v1.117.0 # keep in sync with ./coverage.yml
381+ env:
382+ SYNAPSE_COMPLEMENT_DATABASE: sqlite
383+ SERVER_NAME: synapse
384+ ports:
385+ - 8008:8008
386+
387+ strategy:
388+ fail-fast: true
389+ matrix:
390+ feature:
391+ - "default"
392+ - "experimental-encrypted-state-events"
393+
394+ steps:
395+ - name: Checkout the repo
396+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
397+ with:
398+ persist-credentials: false
399+
400+ - name: Install libsqlite
401+ run: |
402+ sudo apt-get update
403+ sudo apt-get install libsqlite3-dev
404+
405+ - name: Install Rust
406+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
407+ with:
408+ toolchain: stable
409+
410+ - name: Load cache
411+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
412+ with:
413+ save-if: ${{ github.ref == 'refs/heads/main' }}
414+
415+ - name: Install nextest
416+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
417+ with:
418+ tool: nextest
419+
420+ - name: Test
421+ env:
422+ RUST_LOG: "info,matrix_sdk=trace"
423+ HOMESERVER_URL: "http://localhost:8008"
424+ HOMESERVER_DOMAIN: "synapse"
425+ run: |
426+ cargo nextest run --profile ci -p matrix-sdk-integration-testing --features "${{ matrix.feature }}"
427+
428+ - name: Upload test results to Codecov
429+ if: ${{ !cancelled() }}
430+ uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3
431+ with:
432+ files: ./target/nextest/ci/junit.xml
433+ token: ${{ secrets.CODECOV_TOKEN }}
Added file: .github/workflows/coverage.yml+168 additions
@@ -0,0 +1,168 @@
1+name: Code Coverage
2+
3+on:
4+ push:
5+ branches: ["main", "features/**"]
6+ pull_request:
7+ branches: ["main", "features/**"]
8+
9+permissions: {}
10+
11+concurrency:
12+ group: ${{ github.workflow }}-${{ github.ref }}
13+ cancel-in-progress: true
14+
15+env:
16+ CARGO_TERM_COLOR: always
17+ # without matrix_sdk=trace, expressions in `trace!` fields are not evaluated
18+ # when the `trace!` statement is hit, and thus not covered
19+ RUST_LOG: info,matrix_sdk=trace
20+
21+jobs:
22+ xtask:
23+ uses: ./.github/workflows/xtask.yml
24+
25+ code_coverage:
26+ name: Code Coverage
27+ needs: xtask
28+ runs-on: "ubuntu-latest"
29+ permissions:
30+ contents: read
31+ id-token: write
32+
33+ # run several docker containers with the same networking stack so the hostname 'synapse'
34+ # maps to the synapse container, etc.
35+ services:
36+ # tests need a synapse: this is a service and not michaelkaye/setup-matrix-synapse@main as the
37+ # latter does not provide networking for services to communicate with it.
38+ synapse:
39+ image: ghcr.io/matrix-org/synapse-service:v1.117.0 # keep in sync with ./ci.yml
40+ env:
41+ SYNAPSE_COMPLEMENT_DATABASE: sqlite
42+ SERVER_NAME: synapse
43+ ports:
44+ - 8008:8008
45+
46+ steps:
47+ # This CI workflow can run into space issue, so we're cleaning up some
48+ # space here.
49+ - name: Create some more space
50+ run: |
51+ echo "Disk space before cleanup"
52+ df -h
53+
54+ cd /opt
55+ find . -maxdepth 1 -mindepth 1 '!' -path ./containerd '!' -path ./actionarchivecache '!' -path ./runner '!' -path ./runner-cache -exec rm -rf '{}' ';'
56+ rm -rf /opt/hostedtoolcache
57+
58+ # Get rid of binaries and libs we're not interested in.
59+ sudo rm -rf \
60+ /usr/local/julia* \
61+ /usr/local/aws*
62+
63+ sudo rm -rf \
64+ /usr/local/bin/minikube \
65+ /usr/local/bin/node \
66+ /usr/local/bin/stack \
67+ /usr/local/bin/bicep \
68+ /usr/local/bin/pulumi* \
69+ /usr/local/bin/helm \
70+ /usr/local/bin/azcopy \
71+ /usr/local/bin/packer \
72+ /usr/local/bin/cmake-gui \
73+ /usr/local/bin/cpack
74+
75+ sudo rm -rf \
76+ /usr/local/share/powershell \
77+ /usr/local/share/chromium
78+
79+ sudo rm -rf /usr/local/lib/android
80+
81+ echo "::group::/usr/local/bin/*"
82+ du -hsc /usr/local/bin/* | sort -h
83+ echo "::endgroup::"
84+
85+ echo "::group::/usr/local/share/*"
86+ du -hsc /usr/local/share/* | sort -h
87+ echo "::endgroup::"
88+
89+ echo "::group::/usr/local/*"
90+ du -hsc /usr/local/* | sort -h
91+ echo "::endgroup::"
92+
93+ echo "::group::/usr/local/lib/*"
94+ du -hsc /usr/local/lib/* | sort -h
95+ echo "::endgroup::"
96+
97+ echo "::group::/opt/*"
98+ du -hsc /opt/* | sort -h
99+ echo "::endgroup::"
100+
101+ echo "Disk space after cleanup"
102+ df -h
103+
104+ - name: Checkout repository
105+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
106+ with:
107+ ref: ${{ github.event.pull_request.head.sha }}
108+ persist-credentials: false
109+
110+ - name: Install libsqlite
111+ run: |
112+ sudo apt-get update
113+ sudo apt-get install libsqlite3-dev
114+ sudo apt-get clean
115+ sudo rm -rf /var/lib/apt/lists/*
116+
117+ - name: Install Rust
118+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
119+ with:
120+ toolchain: stable
121+
122+ # Cargo config can screw with caching and is only used for alias config
123+ # and extra lints, which we don't care about here
124+ - name: Delete cargo config
125+ run: rm .cargo/config.toml
126+
127+ - name: Load cache
128+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
129+ with:
130+ prefix-key: "coverage"
131+ save-if: ${{ github.ref == 'refs/heads/main' }}
132+
133+ - name: Install nextest and llvm-cov
134+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1
135+ with:
136+ tool: nextest,cargo-llvm-cov
137+
138+ - name: Get xtask
139+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
140+ with:
141+ path: target/debug/xtask
142+ key: "${{ needs.xtask.outputs.cachekey-linux }}"
143+ fail-on-cache-miss: true
144+
145+ - name: Check total disk space before running
146+ run: |
147+ df -h
148+
149+ - name: Create the coverage report
150+ run: |
151+ target/debug/xtask ci coverage -o codecov
152+ env:
153+ CARGO_PROFILE_COV_INHERITS: 'dev'
154+ CARGO_PROFILE_COV_DEBUG: 1
155+ HOMESERVER_URL: "http://localhost:8008"
156+ HOMESERVER_DOMAIN: "synapse"
157+
158+ - name: Upload coverage to Codecov
159+ uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2
160+ with:
161+ use_oidc: true
162+
163+ - name: Upload test results to Codecov
164+ if: ${{ !cancelled() }}
165+ uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2
166+ with:
167+ use_oidc: true
168+ report_type: "test_results"
Added file: .github/workflows/deny.yml+19 additions
@@ -0,0 +1,19 @@
1+name: Lint dependencies (for licences, allowed sources, banned dependencies, vulnerabilities)
2+on:
3+ pull_request:
4+ paths:
5+ - '**/Cargo.toml'
6+ workflow_dispatch:
7+ schedule:
8+ - cron: '0 0 * * *'
9+
10+permissions: {}
11+
12+jobs:
13+ cargo-deny:
14+ runs-on: ubuntu-latest
15+ steps:
16+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
17+ with:
18+ persist-credentials: false
19+ - uses: EmbarkStudios/cargo-deny-action@6c8f9facfa5047ec02d8485b6bf52b587b7777d1 # v2.0.18
Added file: .github/workflows/detect-long-path.yml+39 additions
@@ -0,0 +1,39 @@
1+# Check if the path of changed file is longer than 260 characters
2+# that windows filesystem allows
3+
4+name: Detect long path among changed files
5+
6+on:
7+ workflow_dispatch:
8+ pull_request: # focus on the changed files in current PR
9+ branches: ["main", "features/**", "release-**"]
10+
11+permissions: {}
12+
13+concurrency:
14+ group: ${{ github.workflow }}-${{ github.ref }}
15+ cancel-in-progress: true
16+
17+jobs:
18+ long-path:
19+ runs-on: ubuntu-latest
20+
21+ steps:
22+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
23+ with:
24+ persist-credentials: false
25+ - name: Check for changed files
26+ id: changed-files
27+ uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.6
28+ - name: Detect long path
29+ env:
30+ ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} # ignore the deleted files
31+ MAX_LENGTH: 120 # set max length to 120, considering the base path of app project that uses matrix-sdk
32+ run: |
33+ for file in ${ALL_CHANGED_FILES}; do
34+ if [ ${#file} -gt $MAX_LENGTH ]; then
35+ echo "File path is too long. Length: ${#file}, Path: $file"
36+ exit 1
37+ fi
38+ done
39+ exit 0
Added file: .github/workflows/detect-unused-dependencies.yml+16 additions
@@ -0,0 +1,16 @@
1+name: Detects unused dependencies
2+on:
3+ pull_request: { branches: "*" }
4+
5+permissions: {}
6+
7+jobs:
8+ build:
9+ runs-on: ubuntu-latest
10+ steps:
11+ - name: Checkout
12+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
13+ with:
14+ persist-credentials: false
15+ - name: Machete
16+ uses: bnjbvr/cargo-machete@ac30a525c0a8d163a92d727b3ff079ee3f6ecb08
Added file: .github/workflows/documentation.yml+64 additions
@@ -0,0 +1,64 @@
1+name: Documentation
2+
3+on:
4+ push:
5+ branches: [main]
6+ pull_request:
7+
8+concurrency:
9+ group: ${{ github.workflow }}-${{ github.ref }}
10+ cancel-in-progress: true
11+
12+permissions:
13+ contents: read
14+ pages: write
15+ id-token: write
16+
17+jobs:
18+ docs:
19+ name: All crates
20+ runs-on: ubuntu-latest
21+
22+ steps:
23+ - name: Checkout repository
24+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
25+ with:
26+ persist-credentials: false
27+
28+ - name: Install protoc
29+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1
30+ with:
31+ tool: protoc@3.20.3
32+
33+ - name: Install Rust
34+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
35+ with:
36+ toolchain: nightly-2026-02-26
37+
38+ - name: Install Node.js
39+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
40+ with:
41+ node-version: 20
42+
43+ - name: Load cache
44+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
45+ with:
46+ save-if: ${{ github.ref == 'refs/heads/main' }}
47+
48+ # Keep in sync with xtask docs
49+ - name: Build documentation
50+ env:
51+ RUSTDOCFLAGS: "--enable-index-page -Zunstable-options --cfg docsrs -Dwarnings"
52+ run:
53+ cargo doc --no-deps --workspace --features docsrs --exclude=xtask
54+
55+ - name: Upload artifact
56+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
57+ uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
58+ with:
59+ path: './target/doc/'
60+
61+ - name: Deploy to GitHub Pages
62+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
63+ id: deployment
64+ uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
Added file: .github/workflows/fixup-block.yml+16 additions
@@ -0,0 +1,16 @@
1+name: Git Checks
2+
3+on: [pull_request]
4+
5+permissions: {}
6+
7+jobs:
8+ block-fixup:
9+ runs-on: ubuntu-latest
10+
11+ steps:
12+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
13+ with:
14+ persist-credentials: false
15+ - name: Block Fixup Commit Merge
16+ uses: 13rac1/block-fixup-merge-action@bd5504fb9ca0253e109d98eb86b7debc01970cdc # v2.0.0
Added file: .github/workflows/msrv.yaml+22 additions
@@ -0,0 +1,22 @@
1+name: Rust version
2+
3+on:
4+ workflow_dispatch:
5+ push:
6+ branches: ["main", "features/**", "release-**"]
7+ pull_request:
8+ branches: ["main", "features/**", "release-**"]
9+
10+permissions: {}
11+
12+jobs:
13+ msrv:
14+ runs-on: ubuntu-latest
15+ steps:
16+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
17+ with:
18+ persist-credentials: false
19+ - uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # cargo-hack
20+ with:
21+ tool: cargo-hack
22+ - run: cargo hack check --rust-version --workspace --all-targets
Added file: .github/workflows/xtask.yml+82 additions
@@ -0,0 +1,82 @@
1+# A reusable github actions workflow that will build xtask, if it is not
2+# already cached.
3+#
4+# It will create a pair of GHA cache entries, if they do not already exist.
5+# The cache keys take the form `xtask-{os}-{hash}`, where "{os}" is "linux"
6+# or "macos", and "{hash}" is the hash of the xtask# directory.
7+#
8+# The cache keys are written to output variables named "cachekey-{os}".
9+#
10+
11+name: Build xtask if necessary
12+
13+on:
14+ workflow_call:
15+ outputs:
16+ cachekey-linux:
17+ description: "The cache key for the linux build artifact"
18+ value: "${{ jobs.xtask.outputs.cachekey-linux }}"
19+ cachekey-macos:
20+ description: "The cache key for the macos build artifact"
21+ value: "${{ jobs.xtask.outputs.cachekey-macos }}"
22+
23+permissions: {}
24+
25+env:
26+ CARGO_TERM_COLOR: always
27+
28+jobs:
29+ xtask:
30+ name: "xtask-${{ matrix.os-name }}"
31+
32+ strategy:
33+ fail-fast: true
34+ matrix:
35+ include:
36+ - os: ubuntu-latest
37+ os-name: 🐧
38+ cachekey-id: linux
39+
40+ - os: macos-15
41+ os-name: 🍏
42+ cachekey-id: macos
43+
44+ runs-on: "${{ matrix.os }}"
45+
46+ steps:
47+ - name: Checkout repo
48+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
49+ with:
50+ persist-credentials: false
51+
52+ - name: Calculate cache key
53+ id: cachekey
54+ # set a step output variable "cachekey-{os}" that can be referenced in
55+ # the job outputs below.
56+ run: |
57+ echo "cachekey-${{ matrix.cachekey-id }}=xtask-${{ matrix.cachekey-id }}-${{ hashFiles('Cargo.toml', 'xtask/**') }}" >> $GITHUB_OUTPUT
58+
59+ - name: Check xtask cache
60+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
61+ id: xtask-cache
62+ with:
63+ path: target/debug/xtask
64+ # use the cache key calculated in the step above. Bit of an awkward
65+ # syntax
66+ key: |
67+ ${{ steps.cachekey.outputs[format('cachekey-{0}', matrix.cachekey-id)] }}
68+
69+ - name: Install Rust stable toolchain
70+ if: steps.xtask-cache.outputs.cache-hit != 'true'
71+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
72+ with:
73+ toolchain: stable
74+
75+ - name: Build
76+ if: steps.xtask-cache.outputs.cache-hit != 'true'
77+ run: |
78+ cargo build -p xtask
79+
80+ outputs:
81+ "cachekey-linux": "${{ steps.cachekey.outputs.cachekey-linux }}"
82+ "cachekey-macos": "${{ steps.cachekey.outputs.cachekey-macos }}"
Added file: .github/workflows/zizmor.yml+24 additions
@@ -0,0 +1,24 @@
1+name: Lint GHA workflows with zizmor
2+
3+on:
4+ push:
5+ branches: ["main"]
6+ pull_request:
7+ branches: ["**"]
8+
9+permissions: {}
10+
11+jobs:
12+ zizmor:
13+ name: Run zizmor
14+ runs-on: ubuntu-latest
15+ permissions:
16+ security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files.
17+ steps:
18+ - name: Checkout repository
19+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
20+ with:
21+ persist-credentials: false
22+
23+ - name: Run zizmor
24+ uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
Added file: .gitignore+24 additions
@@ -0,0 +1,24 @@
1+target
2+generated
3+master.zip
4+emsdk-*
5+.idea/
6+.env
7+.envrc
8+.build
9+.swiftpm
10+/Package.swift
11+# code coverage report
12+cobertura.xml
13+
14+## User settings
15+xcuserdata/
16+.vscode/
17+
18+## OS garbage
19+.DS_Store
20+
21+## Kotlin bindings generated files
22+bindings/kotlin/.gradle/
23+bindings/kotlin/buildSrc/build/
24+bindings/kotlin/buildSrc/.gradle/
Added file: .rumdl.toml+91 additions
@@ -0,0 +1,91 @@
1+[global]
2+# Use the GitHub Markdown flavour, https://github.com/rvben/rumdl/blob/main/docs/flavors/gfm.md.
3+flavor = "gfm"
4+disable = [
5+ # `commands-show-output`, https://github.com/rvben/rumdl/blob/main/docs/md014.md.
6+ # Not necessary to show the shell commands output every time.
7+ "MD014",
8+
9+ # `first-line-heading`, https://github.com/rvben/rumdl/blob/main/docs/md041.md.
10+ # Some documents are fragments, the first heading is defined somewhere else.
11+ "MD041",
12+]
13+
14+# `heading-style`, https://github.com/rvben/rumdl/blob/main/docs/md003.md.
15+[MD003]
16+style = "atx"
17+
18+# `ul-style`, https://github.com/rvben/rumdl/blob/main/docs/md004.md.
19+[MD004]
20+style = "dash"
21+
22+# `line-length`, https://github.com/rvben/rumdl/blob/main/docs/md013.md.
23+[MD013]
24+line-length = 80
25+code-blocks = false
26+reflow = true
27+
28+# `no-trailing-punctuation`, https://github.com/rvben/rumdl/blob/main/docs/md026.md.
29+[MD026]
30+punctuation = ".,;:"
31+
32+# `ol-prefix`, https://github.com/rvben/rumdl/blob/main/docs/md029.md.
33+[MD029]
34+style = "ordered"
35+
36+# `no-inline-html`, https://github.com/rvben/rumdl/blob/main/docs/md033.md.
37+[MD033]
38+allowed-elements = [
39+ "i",
40+ "q",
41+ "cite",
42+ "a",
43+ "time",
44+ "sub",
45+ "sup",
46+ "figure", "figcaption",
47+ "table",
48+ "summary", "details",
49+ "math", "mo", "mn", "mi", "semantics", "annotation",
50+]
51+disallowed-elements = ["gfm"]
52+fix = true
53+fix-mode = "relaxed"
54+
55+# `code-block-style`, https://github.com/rvben/rumdl/blob/main/docs/md046.md.
56+[MD046]
57+style = "fenced"
58+
59+# `code-fence-style`, https://github.com/rvben/rumdl/blob/main/docs/md048.md.
60+[MD048]
61+style = "backtick"
62+
63+# `emphasis-style`, https://github.com/rvben/rumdl/blob/main/docs/md049.md.
64+[MD049]
65+style = "underscore"
66+
67+# `strong-style`, https://github.com/rvben/rumdl/blob/main/docs/md050.md.
68+[MD050]
69+style = "asterisk"
70+
71+# `link-image-style`, https://github.com/rvben/rumdl/blob/main/docs/md054.md.
72+[MD054]
73+autolink = false
74+collapsed = false
75+preferred-style = "full"
76+
77+# `table-format`, https://github.com/rvben/rumdl/blob/main/docs/md060.md.
78+[MD060]
79+enabled = true
80+
81+# `heading-capitalization`, https://github.com/rvben/rumdl/blob/main/docs/md063.md.
82+[MD063]
83+enabled = true
84+style = "sentence-case"
85+max-level = 3
86+ignore-words = ["Matrix", "Rust", "Swift", "Android", "Java"]
87+
88+# `list-item-spacing`, https://github.com/rvben/rumdl/blob/main/docs/md076.md.
89+[MD076]
90+style = "tight"
91+allow-loose-continuation = true
Added file: .rustfmt.toml+10 additions
@@ -0,0 +1,10 @@
1+max_width = 100
2+comment_width = 80
3+wrap_comments = true
4+imports_granularity = "Crate"
5+use_small_heuristics = "Max"
6+group_imports = "StdExternalCrate"
7+format_code_in_doc_comments = true
8+doc_comment_code_block_width = 80
9+# Workaround for https://github.com/rust-lang/rust.vim/issues/464
10+edition = "2024"
Added file: .typos.toml+44 additions
@@ -0,0 +1,44 @@
1+[default]
2+extend-ignore-re = [
3+ # base 58 strings with spaces every four chars.
4+ # this would also match regular sentence parts with eight or more words of
5+ # exactly four characters in row, but that doesn't really happen.
6+ "[1-9A-Za-z]{4}( [1-9A-Za-z]{4}){7,}",
7+ # some heuristics for base64 strings with no false matches found at the
8+ # time of writing.
9+ "[A-Za-z0-9+=]{72,}",
10+ "([A-Za-z0-9+=]|\\\\\\s\\*){72,}",
11+ "[0-9+][A-Za-z0-9+]{30,}[a-z0-9+]",
12+ "\\$[A-Z0-9+][A-Za-z0-9+]{6,}[a-z0-9+]",
13+ "\\b[a-z0-9+/=][A-Za-z0-9+/=]{7,}[a-z0-9+/=][A-Z]\\b",
14+]
15+
16+[default.extend-identifiers]
17+WeeChat = "WeeChat"
18+
19+[default.extend-words]
20+# all of these are valid words, but should never appear in this repo
21+bellow = "below"
22+stat = "state"
23+sing = "sign"
24+singed = "signed"
25+singing = "signing"
26+# crate name
27+ratatui = "ratatui"
28+# path name
29+consts = "consts"
30+# base64 false positives
31+Nd = "Nd"
32+Abl = "Abl"
33+Som = "Som"
34+Ba = "Ba"
35+Yur = "Yur" # as found in crates/matrix-sdk-indexeddb/src/crypto_store/migrations/mod.rs
36+TYE = "TYE" # as found in testing/matrix-sdk-test/src/test_json/keys_query_sets.rs
37+
38+[files]
39+extend-exclude = [
40+ # Our json files contain a bunch of base64 encoded ed25519 keys.
41+ "*.json",
42+ # Fuzzy match patterns that can be understood as typos confusingly.
43+ "crates/matrix-sdk-ui/tests/integration/room_list_service.rs",
44+]
Added file: .zizmor.yml+3 additions
@@ -0,0 +1,3 @@
1+rules:
2+ unpinned-uses:
3+ severity: high
Added file: ARCHITECTURE.md+128 additions
@@ -0,0 +1,128 @@
1+# Architecture
2+
3+The SDK is split into multiple layers:
4+
5+```text
6+ WASM (external crate matrix-rust-sdk-crypto-wasm)
7+ /
8+ / uniffi
9+ / /
10+ / bindings (matrix-sdk-ffi)
11+ crypto |
12+bindings |
13+ | |
14+ | UI (matrix-sdk-ui)
15+ | \
16+ | \
17+ | main (matrix-sdk)
18+ | / /
19+crypto /
20+ \ /
21+ store (matrix-sdk-base, + all the store impls)
22+ |
23+ common (matrix-sdk-common)
24+```
25+
26+Where the store implementations are `matrix-sdk-sqlite` and
27+`matrix-sdk-indexeddb` as well as `MemoryStore` which is defined in
28+`matrix-sdk-base`.
29+
30+## `crates/matrix-sdk`
31+
32+This is the main crate, and one that is expected to be used by most consumers.
33+Notable data types include:
34+
35+- the `Client`, which can run room-independent requests: logging in/out,
36+ creating rooms, running sync, etc.
37+- the `Room`, which represents a room and its state (notably via the observable
38+ `RoomInfo`), and allows running queries that are room-specific, notably
39+ sending events.
40+
41+## `crates/matrix-sdk-base`
42+
43+A _sans I/O_ crate to represent the base data types persisted in the SDK. No
44+network or storage I/O happens in this crate, although it defines traits
45+(`StateStore` and `EventCacheStore`) representing storage backends, as well as
46+dummy in-memory implementations of these traits.
47+
48+## `crates/matrix-sdk-common`
49+
50+Common helpers used by most of the other crates; almost a leaf in the dependency
51+tree of our own crates (the only crate it's using is test helpers).
52+
53+## `crates/matrix-sdk-crypto`
54+
55+A _sans I/O_ implementation of a state machine that handles end-to-end
56+encryption for Matrix clients. It defines a `CryptoStore` trait representing
57+storage backends that will perform the actual storage I/O later, as well as a
58+dummy in-memory implementation of this trait.
59+
60+## `crates/matrix-sdk-indexeddb`
61+
62+Implementations of `EventCacheStore`, `StateStore` and `CryptoStore` for a
63+indexeddb backend (for use in Web browsers, via WebAssembly).
64+
65+## `crates/matrix-sdk-qrcode`
66+
67+Implementation of QR codes for interactive verifications, used in the crypto
68+crate.
69+
70+## `crates/matrix-sdk-sqlite`
71+
72+Implementations of `EventCacheStore`, `StateStore` and `CryptoStore` for a
73+SQLite backend.
74+
75+## `crates/matrix-sdk-store-encryption`
76+
77+Low-level primitives for encrypting/decrypting/hashing values. Store
78+implementations that implement encryption at rest can use those primitives.
79+
80+## `crates/matrix-sdk-ui`
81+
82+Very high-level primitives implementing the best practices and cutting-edge
83+Matrix tech:
84+
85+- `EncryptionSyncService`: a specialized service running simplified sliding sync
86+ (MSC4186) for everything related to crypto and E2EE for the current `Client`.
87+- `RoomListService`: a specialized service running simplified sliding sync
88+ (MSC4186) for retrieving the list of current rooms, and exposing its entries.
89+- `SyncService`: a wrapper for the two previous services, coordinating their
90+ running and shutting down.
91+- `Timeline`: a high-level view for a `Room`'s timeline of events, grouping
92+ related events (aggregations) into single timeline items.
93+
94+## `bindings/matrix-sdk-crypto-ffi/`
95+
96+FFI bindings for the crypto crate, used in a Web browser context via
97+WebAssembly. These use `wasm-bindgen` to generate the bindings. These bindings
98+are used in Element Web and the legacy Element apps, as of 2024-11-07.
99+
100+## `bindings/matrix-sdk-ffi/`
101+
102+FFI bindings for important concepts in `matrix-sdk-ui` and `matrix-sdk`,
103+generated with [UniFFI](https://github.com/mozilla/uniffi-rs) and to be used
104+from other languages like Swift/Go/Kotlin. These bindings are used in the
105+ElementX apps, as of 2024-11-07.
106+
107+## `bindings/matrix-sdk-ffi-macros/`
108+
109+Macros used in `bindings/matrix-sdk-ffi`.
110+
111+## `testing/matrix-sdk-test/`
112+
113+Common test helpers, used by all the other crates.
114+
115+## `testing/matrix-sdk-test-macros/`
116+
117+Implementation of the `#[async_test]` test macro.
118+
119+## `testing/matrix-sdk-integration-testing/`
120+
121+Fully-fledged integration tests that require spawning a Synapse instance to run.
122+A docker-compose setup is provided to ease running the tests, and it is
123+compatible for running with Podman too.
124+
125+## Inspiration
126+
127+This document has been inspired by the reading of this
128+[blog post](https://matklad.github.io/2021/02/06/ARCHITECTURE.md.html).
Added file: CONTRIBUTING.md+412 additions
@@ -0,0 +1,412 @@
1+# Contributing to `matrix-rust-sdk`
2+
3+## Chat rooms
4+
5+In addition to our [main Matrix room], we have a development room at
6+[#matrix-rust-sdk-dev:flipdot.org]. Please use it to discuss potential changes,
7+the overall direction of development and related topics.
8+
9+[main Matrix room]: https://matrix.to/#/#matrix-rust-sdk:matrix.org
10+[#matrix-rust-sdk-dev:flipdot.org]: https://matrix.to/#/#matrix-rust-sdk-dev:flipdot.org
11+
12+## Testing
13+
14+You can run most of the tests that also happen in CI also using
15+`cargo xtask ci`. This needs a few dependencies to be installed, as it also runs
16+automatic WASM tests:
17+
18+```bash
19+rustup component add clippy
20+cargo install cargo-nextest typos-cli wasm-pack
21+```
22+
23+If you want to execute only one part of CI, there are a few sub-commands (see
24+`cargo xtask ci --help`).
25+
26+Some tests are not automatically run in `cargo xtask ci`, for example the
27+integration tests that need a running synapse instance. These tests reside in
28+`./testing/matrix-sdk-integration-testing`. See its
29+[README](./testing/matrix-sdk-integration-testing/README.md) to easily set up a
30+synapse for testing purposes.
31+
32+### Snapshot testing
33+
34+You can add/review snapshot tests using [insta.rs](https://insta.rs)
35+
36+Every new struct/enum that derives `Serialize` `Deserialise` should have a
37+snapshot test for it. Any code change that breaks serialisation will then break
38+a test, the author will then have to decide how to handle migration and test it
39+if needed.
40+
41+And for an improved review experience it's recommended (but not necessary) to
42+install the `cargo-insta` tool:
43+
44+Unix:
45+
46+```shell
47+curl -LsSf https://insta.rs/install.sh | sh
48+```
49+
50+Windows:
51+
52+```shell
53+powershell -c "irm https://insta.rs/install.ps1 | iex"
54+```
55+
56+Usual flow is to first run the test, then review them.
57+
58+```shell
59+cargo insta test
60+cargo insta review
61+```
62+
63+### Intermittent failure policy
64+
65+While we strive to add test coverage for as many features as we can, it
66+sometimes happens that the tests will be intermittently failing in CI (such
67+tests are sometimes called "flaky"). This can be caused by race conditions
68+of all sorts, either in the test code itself, but sometimes in the underlying
69+feature being tested too, and as such, it requires some investigation, usually
70+from the original author of the test.
71+
72+Whenever such an intermittent failure happens, we try to open an issue to track
73+the failures, adding the
74+[`intermittent-failure`](https://github.com/matrix-org/matrix-rust-sdk/issues?q=is%3Aissue%20state%3Aopen%20label%3Aintermittent-failure)
75+label to it, and commenting with links to CI runs where the failure happened.
76+
77+If a test has been intermittently failing for **two weeks** or more, and no one
78+is actively working on fixing it, then we might decide to mark the test as
79+`ignored` until it is fixed, to not cause unrelated failures in other
80+contributors' pull requests and pushes.
81+
82+## Pull requests
83+
84+Ideally, a PR should have a _proper title_, with _atomic logical commits_, and
85+each commit should have a _good commit message_.
86+
87+A _proper PR title_ would be a one-liner summary of the changes in the PR,
88+following the same guidelines of a good commit message, including the
89+area/feature prefix. Something like `FFI: Allow logs files to be pruned.` would
90+be a good PR title.
91+
92+(An additional bad example of a bad PR title would be `mynickname/branch name`,
93+that is, just the branch name.)
94+
95+## Writing changelog entries
96+
97+We use towncrier to generate changelogs from individual fragment files. Each
98+change must be documented as a changelog fragment in the appropriate crate:
99+
100+```text
101+/crates/<crate-name>/changelog.d/
102+```
103+
104+Each changelog fragment must include **both the pull request number and the
105+fragment type** in its filename:
106+
107+```text
108+<PR number>.<fragment type>.md
109+```
110+
111+For example:
112+
113+```text
114+4357.added.md
115+4357.fixed.md
116+4357.changed.md
117+```
118+
119+The pull request link is automatically added during changelog generation, so it
120+must not be included manually.
121+
122+We use standard towncrier fragment types to categorize changes. Common types
123+include:
124+
125+- `added` – new features or functionality
126+- `changed` – changes in existing behavior
127+- `fixed` – bug fixes
128+- `removed` – removed features or APIs
129+- `security` – security-related fixes
130+- `internal` – changes that do not affect users (refactoring, CI, tooling)
131+
132+Choose the type that best matches the nature of the change.
133+
134+A well-written changelog entry should be understandable even to those who may
135+not be deeply familiar with the project. Provide enough context to ensure
136+clarity and ease of understanding.
137+
138+A couple of examples of bad changelog entry would look like:
139+
140+```markdown
141+- Fixed a panic.
142+```
143+
144+```markdown
145+Added the Bar function to Foo.
146+```
147+
148+A good example of a changelog entry could look like the following:
149+
150+```markdown
151+Use the inviter's server name and the server name from the room alias as
152+fallback values for the via parameter when requesting the room summary from the
153+homeserver. This ensures requests succeed even when the room being previewed is
154+hosted on a federated server.
155+```
156+
157+For security-related changelog entries, please include the following additional
158+details alongside the pull request number:
159+
160+- Impact: Clearly describe the issue's potential impact on users or systems.
161+- CVE Number: If available, include the CVE (Common Vulnerabilities and
162+ Exposures) identifier.
163+- GitHub Advisory Link: Provide a link to the corresponding GitHub security
164+ advisory for further context.
165+
166+```markdown
167+Use a constant-time Base64 encoder for secret key material to mitigate
168+side-channel attacks leaking secret key material
169+[CVE-2024-40640](https://www.cve.org/CVERecord?id=CVE-2024-40640),
170+[GHSA-j8cm-g7r6-hfpq](https://github.com/matrix-org/vodozemac/security/advisories/GHSA-j8cm-g7r6-hfpq)).
171+```
172+
173+## Commit message format
174+
175+Commit messages should be formatted as Conventional Commits. In addition, some
176+git trailers are supported and have special meaning (see below).
177+
178+### Conventional commits
179+
180+Conventional Commits are structured as follows:
181+
182+```text
183+<type>(<scope>): <short summary>
184+```
185+
186+The type of changes which will be included in changelogs is one of the
187+following:
188+
189+- `feat`: A new feature
190+- `fix`: A bugfix
191+- `doc`: Documentation changes
192+- `refactor`: Code refactoring
193+- `perf`: Performance improvements
194+- `ci`: Changes to CI configuration files and scripts
195+
196+The scope is optional and can specify the area of the codebase affected (e.g.,
197+olm, cipher).
198+
199+### Security fixes
200+
201+Commits addressing security vulnerabilities must include specific trailers for
202+vulnerability metadata, which should also be reflected in the corresponding
203+changelog entry.
204+
205+The metadata must be included in the following git-trailers:
206+
207+- `Security-Impact`: The magnitude of harm that can be expected, i.e.
208+ low/moderate/high/critical.
209+- `CVE`: The CVE that was assigned to this issue.
210+- `GitHub-Advisory`: The GitHub advisory identifier.
211+
212+Please include all the fields that are available.
213+
214+Example:
215+
216+```text
217+fix(crypto): Use a constant-time Base64 encoder for secret key material
218+
219+This patch fixes a security issue around a side-channel vulnerability[1]
220+when decoding secret key material using Base64.
221+
222+In some circumstances an attacker can obtain information about secret
223+secret key material via a controlled-channel and side-channel attack.
224+
225+This patch avoids the side-channel by switching to the base64ct crate
226+for the encoding, and more importantly, the decoding of secret key
227+material.
228+
229+Security-Impact: Low
230+CVE: CVE-2024-40640
231+GitHub-Advisory: GHSA-j8cm-g7r6-hfpq
232+```
233+
234+## Review process
235+
236+To streamline the review process and make it easier for maintainers to review
237+your contributions, follow these basic rules:
238+
239+1. Do not force push after a review has started. This helps maintainers track
240+ incremental changes without confusion and makes it easier to follow the
241+ evolution of the code.
242+
243+2. Do not mix moves and refactoring with functional changes. Keep these in
244+ separate commits for clarity. This ensures that the purpose of each commit is
245+ clear and easy to review.
246+
247+3. Each commit must compile. If commits don’t compile, git bisect becomes
248+ unusable, which hampers the debugging process and makes it harder to identify
249+ the source of issues.
250+
251+4. Commits should only introduce test failures if they are proving that a bug
252+ exists. New features should never introduce test failures. Test failures
253+ should only be used to demonstrate existing bugs, not as part of adding new
254+ functionality.
255+
256+5. Keep PRs on topic and small. Large PRs are harder to review and more prone to
257+ delays. Create small, focused commits that address a single topic. Use a
258+ combination of [git add] -p or [git checkout] -p to split changes into
259+ logical units. This makes your work easier to review and reduces the chance
260+ of introducing unrelated changes.
261+
262+[git add]: https://git-scm.com/docs/git-add#Documentation/git-add.txt---patch
263+[git checkout]: https://git-scm.com/docs/git-checkout#Documentation/git-checkout.txt---patch
264+
265+### Addressing review comments using fixup commits
266+
267+So you posted a PR and the maintainers aren't quite happy with it. Here are some
268+guidelines to make the maintainers life easier and increase the chances that
269+your PR will be reviewed swiftly.
270+
271+1. Use [fixup] commits. When addressing reviewer feedback, you can create fixup
272+ commits. These commits mark your changes as corrections of specific previous
273+ commits in the PR.
274+
275+Example:
276+
277+```shell
278+git commit --fixup=<commit-hash>
279+```
280+
281+This command creates a new commit that refers to an existing one, making it
282+easier to rebase and squash later while showing reviewers the history of fixes.
283+For extra points, link to the fixup commit in the thread where the change was
284+requested.
285+
286+2. After all requested changes were addressed, feel free to re-request a review.
287+ People might not notice that all changes were addressed.
288+
289+3. Once the PR has been approved, rebase your PR to squash all the fixup
290+ commits, the [autosquash] option can help with this.
291+
292+```shell
293+git rebase main --interactive --autosquash
294+```
295+
296+[fixup]: https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---fixupamendrewordltcommitgt
297+[autosquash]: https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---autosquash
298+
299+## Sign off
300+
301+In order to have a concrete record that your contribution is intentional
302+and you agree to license it under the same terms as the project's
303+license, we've adopted the same lightweight approach that the [Linux
304+Kernel](https://www.kernel.org/doc/Documentation/SubmittingPatches),
305+[Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md),
306+and many other projects use: the DCO ([Developer Certificate of
307+Origin](http://developercertificate.org/)). This is a simple declaration that
308+you wrote the contribution or otherwise have the right to contribute it to
309+Matrix:
310+
311+```text
312+Developer Certificate of Origin
313+Version 1.1
314+
315+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
316+660 York Street, Suite 102,
317+San Francisco, CA 94110 USA
318+
319+Everyone is permitted to copy and distribute verbatim copies of this
320+license document, but changing it is not allowed.
321+
322+Developer's Certificate of Origin 1.1
323+
324+By making a contribution to this project, I certify that:
325+
326+(a) The contribution was created in whole or in part by me and I
327+ have the right to submit it under the open source license
328+ indicated in the file; or
329+
330+(b) The contribution is based upon previous work that, to the best
331+ of my knowledge, is covered under an appropriate open source
332+ license and I have the right under that license to submit that
333+ work with modifications, whether created in whole or in part
334+ by me, under the same open source license (unless I am
335+ permitted to submit under a different license), as indicated
336+ in the file; or
337+
338+(c) The contribution was provided directly to me by some other
339+ person who certified (a), (b) or (c) and I have not modified
340+ it.
341+
342+(d) I understand and agree that this project and the contribution
343+ are public and that a record of the contribution (including all
344+ personal information I submit with it, including my sign-off) is
345+ maintained indefinitely and may be redistributed consistent with
346+ this project or the open source license(s) involved.
347+```
348+
349+If you agree to this for your contribution, then all that's needed is to
350+include the line in your commit or pull request comment:
351+
352+```text
353+Signed-off-by: Your Name <your@email.example.org>
354+```
355+
356+Git allows you to add this signoff automatically when using the `-s` flag to
357+`git commit`, which uses the name and email set in your `user.name` and
358+`user.email` git configs.
359+
360+If you forgot to sign off your commits before making your pull request and are
361+on Git 2.17+ you can mass signoff using rebase:
362+
363+```text
364+git rebase --signoff origin/main
365+```
366+
367+## AI policy
368+
369+This policy is a copy of the [Forgejo's AI agreement][Forgejo].
370+
371+### Terminology
372+
373+This does not necessarily reflect the official or commonly used terminology.
374+
375+Software and services that heavily rely on large language model technology to
376+generate their outcomes are referred to as _Artificial Intelligence_ (AI).
377+Examples of products that fit this definition: GitHub Copilot, ChatGPT, Claude
378+Sonnet, DeepSeek, Llama and Gemini.
379+
380+There is a distinction between _general_ and _narrow_ AI, all the aforementioned
381+examples fall under general AI as they were not trained to execute a specific
382+well-defined task. Narrow AI is trained to be used for specific well-defined
383+tasks where the problem space is known in advance.
384+
385+_Vibe coding_ is the practice where AI creates a code change (feature, bugfix,
386+tests, refactor) with a human that describes what needs to be implemented.
387+
388+_AI agents_ are AIs that are configured to perform interactions or make changes
389+with little to no human supervision.
390+
391+### Agreement
392+
393+1. If content was made with the help of AI, you **must** convey that this is
394+ the case. This includes content that you authored but was motivated by a
395+ suggestion of AI.
396+2. If at any point you used AI's work in your contribution you should make
397+ an effort to **verify** that you can submit this under the license of the
398+ repository.
399+3. The **accountability** of using AI in a contribution lies with the person
400+ that makes that contribution.
401+4. All communication, that includes: commit messages, pull request messages,
402+ documentation, code comments and issues (and comments on issues/pull
403+ requests), that is intended to be read by people to understand your thoughts
404+ and work **must not** have been generated with AI. We exclude machine
405+ translation and tooling that helps with grammar and spelling check.
406+5. Using general AI for review is **forbidden**. If the change contains changes
407+ to the user experience it has to be approved by a human reviewer.
408+6. It is **not allowed** to use AI in an autonomous-looking way to contribute to
409+ the Matrix Rust SDK. This also applies when someone engages in _vibe coding_
410+ or uses so-called _agent mode_.
411+
412+[Forgejo]: https://codeberg.org/forgejo/governance/src/branch/main/AIAgreement.md
Added file: Cargo.lock+8266 additions
@@ -0,0 +1,8266 @@
1+# This file is automatically @generated by Cargo.
2+# It is not intended for manual editing.
3+version = 4
4+
5+[[package]]
6+name = "accessory"
7+version = "2.1.0"
8+source = "registry+https://github.com/rust-lang/crates.io-index"
9+checksum = "28e416a3ab45838bac2ab2d81b1088d738d7b2d2c5272a54d39366565a29bd80"
10+dependencies = [
11+ "macroific",
12+ "proc-macro2",
13+ "quote",
14+ "syn 2.0.101",
15+]
16+
17+[[package]]
18+name = "addr2line"
19+version = "0.25.1"
20+source = "registry+https://github.com/rust-lang/crates.io-index"
21+checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
22+dependencies = [
23+ "gimli",
24+]
25+
26+[[package]]
27+name = "adler2"
28+version = "2.0.1"
29+source = "registry+https://github.com/rust-lang/crates.io-index"
30+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
31+
32+[[package]]
33+name = "aead"
34+version = "0.5.2"
35+source = "registry+https://github.com/rust-lang/crates.io-index"
36+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
37+dependencies = [
38+ "crypto-common",
39+ "generic-array",
40+]
41+
42+[[package]]
43+name = "aes"
44+version = "0.8.4"
45+source = "registry+https://github.com/rust-lang/crates.io-index"
46+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
47+dependencies = [
48+ "cfg-if",
49+ "cipher",
50+ "cpufeatures 0.2.12",
51+]
52+
53+[[package]]
54+name = "aho-corasick"
55+version = "1.1.3"
56+source = "registry+https://github.com/rust-lang/crates.io-index"
57+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
58+dependencies = [
59+ "memchr",
60+]
61+
62+[[package]]
63+name = "allocator-api2"
64+version = "0.2.18"
65+source = "registry+https://github.com/rust-lang/crates.io-index"
66+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
67+
68+[[package]]
69+name = "android_system_properties"
70+version = "0.1.5"
71+source = "registry+https://github.com/rust-lang/crates.io-index"
72+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
73+dependencies = [
74+ "libc",
75+]
76+
77+[[package]]
78+name = "anes"
79+version = "0.1.6"
80+source = "registry+https://github.com/rust-lang/crates.io-index"
81+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
82+
83+[[package]]
84+name = "anstyle"
85+version = "1.0.11"
86+source = "registry+https://github.com/rust-lang/crates.io-index"
87+checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
88+
89+[[package]]
90+name = "anyhow"
91+version = "1.0.100"
92+source = "registry+https://github.com/rust-lang/crates.io-index"
93+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
94+
95+[[package]]
96+name = "anymap2"
97+version = "0.13.0"
98+source = "registry+https://github.com/rust-lang/crates.io-index"
99+checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"
100+
101+[[package]]
102+name = "approx"
103+version = "0.5.1"
104+source = "registry+https://github.com/rust-lang/crates.io-index"
105+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
106+dependencies = [
107+ "num-traits",
108+]
109+
110+[[package]]
111+name = "aquamarine"
112+version = "0.6.0"
113+source = "registry+https://github.com/rust-lang/crates.io-index"
114+checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2"
115+dependencies = [
116+ "include_dir",
117+ "itertools 0.10.5",
118+ "proc-macro-error2",
119+ "proc-macro2",
120+ "quote",
121+ "syn 2.0.101",
122+]
123+
124+[[package]]
125+name = "arc-swap"
126+version = "1.7.1"
127+source = "registry+https://github.com/rust-lang/crates.io-index"
128+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
129+
130+[[package]]
131+name = "archery"
132+version = "1.2.1"
133+source = "registry+https://github.com/rust-lang/crates.io-index"
134+checksum = "eae2ed21cd55021f05707a807a5fc85695dafb98832921f6cfa06db67ca5b869"
135+
136+[[package]]
137+name = "arrayref"
138+version = "0.3.8"
139+source = "registry+https://github.com/rust-lang/crates.io-index"
140+checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"
141+
142+[[package]]
143+name = "arrayvec"
144+version = "0.7.6"
145+source = "registry+https://github.com/rust-lang/crates.io-index"
146+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
147+dependencies = [
148+ "serde",
149+]
150+
151+[[package]]
152+name = "as_variant"
153+version = "1.3.0"
154+source = "registry+https://github.com/rust-lang/crates.io-index"
155+checksum = "9dbc3a507a82b17ba0d98f6ce8fd6954ea0c8152e98009d36a40d8dcc8ce078a"
156+
157+[[package]]
158+name = "askama"
159+version = "0.14.0"
160+source = "registry+https://github.com/rust-lang/crates.io-index"
161+checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"
162+dependencies = [
163+ "askama_derive",
164+ "itoa",
165+ "percent-encoding",
166+ "serde",
167+ "serde_json",
168+]
169+
170+[[package]]
171+name = "askama_derive"
172+version = "0.14.0"
173+source = "registry+https://github.com/rust-lang/crates.io-index"
174+checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"
175+dependencies = [
176+ "askama_parser",
177+ "basic-toml",
178+ "memchr",
179+ "proc-macro2",
180+ "quote",
181+ "rustc-hash",
182+ "serde",
183+ "serde_derive",
184+ "syn 2.0.101",
185+]
186+
187+[[package]]
188+name = "askama_parser"
189+version = "0.14.0"
190+source = "registry+https://github.com/rust-lang/crates.io-index"
191+checksum = "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358"
192+dependencies = [
193+ "memchr",
194+ "serde",
195+ "serde_derive",
196+ "winnow 0.7.13",
197+]
198+
199+[[package]]
200+name = "assert-json-diff"
201+version = "2.0.2"
202+source = "registry+https://github.com/rust-lang/crates.io-index"
203+checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
204+dependencies = [
205+ "serde",
206+ "serde_json",
207+]
208+
209+[[package]]
210+name = "assert_matches"
211+version = "1.5.0"
212+source = "registry+https://github.com/rust-lang/crates.io-index"
213+checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
214+
215+[[package]]
216+name = "assert_matches2"
217+version = "0.1.2"
218+source = "registry+https://github.com/rust-lang/crates.io-index"
219+checksum = "15832d94c458da98cac0ffa6eca52cc19c2a3c6c951058500a5ae8f01f0fdf56"
220+
221+[[package]]
222+name = "assign"
223+version = "1.1.1"
224+source = "registry+https://github.com/rust-lang/crates.io-index"
225+checksum = "5f093eed78becd229346bf859eec0aa4dd7ddde0757287b2b4107a1f09c80002"
226+
227+[[package]]
228+name = "async-channel"
229+version = "2.5.0"
230+source = "registry+https://github.com/rust-lang/crates.io-index"
231+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
232+dependencies = [
233+ "concurrent-queue",
234+ "event-listener-strategy",
235+ "futures-core",
236+ "pin-project-lite",
237+]
238+
239+[[package]]
240+name = "async-compat"
241+version = "0.2.5"
242+source = "git+https://github.com/element-hq/async-compat?rev=5a27c8b290f1f1dcfc0c4ec22c464e38528aa591#5a27c8b290f1f1dcfc0c4ec22c464e38528aa591"
243+dependencies = [
244+ "futures-core",
245+ "futures-io",
246+ "once_cell",
247+ "pin-project-lite",
248+ "tokio",
249+]
250+
251+[[package]]
252+name = "async-compression"
253+version = "0.4.12"
254+source = "registry+https://github.com/rust-lang/crates.io-index"
255+checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"
256+dependencies = [
257+ "flate2",
258+ "futures-core",
259+ "memchr",
260+ "pin-project-lite",
261+ "tokio",
262+]
263+
264+[[package]]
265+name = "async-once-cell"
266+version = "0.5.4"
267+source = "registry+https://github.com/rust-lang/crates.io-index"
268+checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a"
269+
270+[[package]]
271+name = "async-rx"
272+version = "0.2.0"
273+source = "registry+https://github.com/rust-lang/crates.io-index"
274+checksum = "9053bf9b3852b83be29d9a29dd7dcf68273f81b10d55ae8beceedb4d23f41448"
275+dependencies = [
276+ "futures-core",
277+ "pin-project-lite",
278+]
279+
280+[[package]]
281+name = "async-stream"
282+version = "0.3.6"
283+source = "registry+https://github.com/rust-lang/crates.io-index"
284+checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
285+dependencies = [
286+ "async-stream-impl",
287+ "futures-core",
288+ "pin-project-lite",
289+]
290+
291+[[package]]
292+name = "async-stream-impl"
293+version = "0.3.6"
294+source = "registry+https://github.com/rust-lang/crates.io-index"
295+checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
296+dependencies = [
297+ "proc-macro2",
298+ "quote",
299+ "syn 2.0.101",
300+]
301+
302+[[package]]
303+name = "async-trait"
304+version = "0.1.89"
305+source = "registry+https://github.com/rust-lang/crates.io-index"
306+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
307+dependencies = [
308+ "proc-macro2",
309+ "quote",
310+ "syn 2.0.101",
311+]
312+
313+[[package]]
314+name = "async_cell"
315+version = "0.2.3"
316+source = "registry+https://github.com/rust-lang/crates.io-index"
317+checksum = "447ab28afbb345f5408b120702a44e5529ebf90b1796ec76e9528df8e288e6c2"
318+dependencies = [
319+ "loom",
320+]
321+
322+[[package]]
323+name = "atomic"
324+version = "0.6.1"
325+source = "registry+https://github.com/rust-lang/crates.io-index"
326+checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
327+dependencies = [
328+ "bytemuck",
329+]
330+
331+[[package]]
332+name = "atomic-waker"
333+version = "1.1.2"
334+source = "registry+https://github.com/rust-lang/crates.io-index"
335+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
336+
337+[[package]]
338+name = "autocfg"
339+version = "1.3.0"
340+source = "registry+https://github.com/rust-lang/crates.io-index"
341+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
342+
343+[[package]]
344+name = "aws-lc-rs"
345+version = "1.16.2"
346+source = "registry+https://github.com/rust-lang/crates.io-index"
347+checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc"
348+dependencies = [
349+ "aws-lc-sys",
350+ "zeroize",
351+]
352+
353+[[package]]
354+name = "aws-lc-sys"
355+version = "0.39.0"
356+source = "registry+https://github.com/rust-lang/crates.io-index"
357+checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a"
358+dependencies = [
359+ "cc",
360+ "cmake",
361+ "dunce",
362+ "fs_extra",
363+]
364+
365+[[package]]
366+name = "axum"
367+version = "0.8.4"
368+source = "registry+https://github.com/rust-lang/crates.io-index"
369+checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5"
370+dependencies = [
371+ "axum-core",
372+ "bytes",
373+ "form_urlencoded",
374+ "futures-util",
375+ "http",
376+ "http-body",
377+ "http-body-util",
378+ "hyper",
379+ "hyper-util",
380+ "itoa",
381+ "matchit",
382+ "memchr",
383+ "mime",
384+ "percent-encoding",
385+ "pin-project-lite",
386+ "rustversion",
387+ "serde",
388+ "serde_json",
389+ "serde_path_to_error",
390+ "serde_urlencoded",
391+ "sync_wrapper",
392+ "tokio",
393+ "tower",
394+ "tower-layer",
395+ "tower-service",
396+ "tracing",
397+]
398+
399+[[package]]
400+name = "axum-core"
401+version = "0.5.2"
402+source = "registry+https://github.com/rust-lang/crates.io-index"
403+checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6"
404+dependencies = [
405+ "bytes",
406+ "futures-core",
407+ "http",
408+ "http-body",
409+ "http-body-util",
410+ "mime",
411+ "pin-project-lite",
412+ "rustversion",
413+ "sync_wrapper",
414+ "tower-layer",
415+ "tower-service",
416+ "tracing",
417+]
418+
419+[[package]]
420+name = "backon"
421+version = "1.6.0"
422+source = "registry+https://github.com/rust-lang/crates.io-index"
423+checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef"
424+dependencies = [
425+ "fastrand",
426+ "gloo-timers",
427+ "tokio",
428+]
429+
430+[[package]]
431+name = "backtrace"
432+version = "0.3.76"
433+source = "registry+https://github.com/rust-lang/crates.io-index"
434+checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
435+dependencies = [
436+ "addr2line",
437+ "cfg-if",
438+ "libc",
439+ "miniz_oxide",
440+ "object",
441+ "rustc-demangle",
442+ "windows-link 0.2.1",
443+]
444+
445+[[package]]
446+name = "base64"
447+version = "0.22.1"
448+source = "registry+https://github.com/rust-lang/crates.io-index"
449+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
450+
451+[[package]]
452+name = "base64ct"
453+version = "1.8.3"
454+source = "registry+https://github.com/rust-lang/crates.io-index"
455+checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
456+
457+[[package]]
458+name = "basic-toml"
459+version = "0.1.9"
460+source = "registry+https://github.com/rust-lang/crates.io-index"
461+checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8"
462+dependencies = [
463+ "serde",
464+]
465+
466+[[package]]
467+name = "benchmarks"
468+version = "1.0.0"
469+dependencies = [
470+ "assert_matches",
471+ "codspeed-criterion-compat",
472+ "futures-util",
473+ "matrix-sdk",
474+ "matrix-sdk-base",
475+ "matrix-sdk-crypto",
476+ "matrix-sdk-sqlite",
477+ "matrix-sdk-test",
478+ "matrix-sdk-ui",
479+ "rand 0.10.1",
480+ "ruma",
481+ "serde",
482+ "serde_json",
483+ "tempfile",
484+ "tokio",
485+ "wiremock",
486+]
487+
488+[[package]]
489+name = "bit-set"
490+version = "0.5.3"
491+source = "registry+https://github.com/rust-lang/crates.io-index"
492+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
493+dependencies = [
494+ "bit-vec",
495+]
496+
497+[[package]]
498+name = "bit-vec"
499+version = "0.6.3"
500+source = "registry+https://github.com/rust-lang/crates.io-index"
501+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
502+
503+[[package]]
504+name = "bitflags"
505+version = "1.3.2"
506+source = "registry+https://github.com/rust-lang/crates.io-index"
507+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
508+
509+[[package]]
510+name = "bitflags"
511+version = "2.10.0"
512+source = "registry+https://github.com/rust-lang/crates.io-index"
513+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
514+dependencies = [
515+ "serde_core",
516+]
517+
518+[[package]]
519+name = "bitmaps"
520+version = "3.2.1"
521+source = "registry+https://github.com/rust-lang/crates.io-index"
522+checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6"
523+
524+[[package]]
525+name = "bitpacking"
526+version = "0.9.3"
527+source = "registry+https://github.com/rust-lang/crates.io-index"
528+checksum = "96a7139abd3d9cebf8cd6f920a389cf3dc9576172e32f4563f188cae3c3eb019"
529+dependencies = [
530+ "crunchy",
531+]
532+
533+[[package]]
534+name = "blake3"
535+version = "1.8.2"
536+source = "registry+https://github.com/rust-lang/crates.io-index"
537+checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0"
538+dependencies = [
539+ "arrayref",
540+ "arrayvec",
541+ "cc",
542+ "cfg-if",
543+ "constant_time_eq",
544+]
545+
546+[[package]]
547+name = "block-buffer"
548+version = "0.10.4"
549+source = "registry+https://github.com/rust-lang/crates.io-index"
550+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
551+dependencies = [
552+ "generic-array",
553+]
554+
555+[[package]]
556+name = "block-padding"
557+version = "0.3.3"
558+source = "registry+https://github.com/rust-lang/crates.io-index"
559+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
560+dependencies = [
561+ "generic-array",
562+]
563+
564+[[package]]
565+name = "bon"
566+version = "3.6.5"
567+source = "registry+https://github.com/rust-lang/crates.io-index"
568+checksum = "33d9ef19ae5263a138da9a86871eca537478ab0332a7770bac7e3f08b801f89f"
569+dependencies = [
570+ "bon-macros",
571+ "rustversion",
572+]
573+
574+[[package]]
575+name = "bon-macros"
576+version = "3.6.5"
577+source = "registry+https://github.com/rust-lang/crates.io-index"
578+checksum = "577ae008f2ca11ca7641bd44601002ee5ab49ef0af64846ce1ab6057218a5cc1"
579+dependencies = [
580+ "darling 0.21.1",
581+ "ident_case",
582+ "prettyplease",
583+ "proc-macro2",
584+ "quote",
585+ "rustversion",
586+ "syn 2.0.101",
587+]
588+
589+[[package]]
590+name = "bs58"
591+version = "0.5.1"
592+source = "registry+https://github.com/rust-lang/crates.io-index"
593+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
594+dependencies = [
595+ "tinyvec",
596+]
597+
598+[[package]]
599+name = "bumpalo"
600+version = "3.16.0"
601+source = "registry+https://github.com/rust-lang/crates.io-index"
602+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
603+
604+[[package]]
605+name = "bytemuck"
606+version = "1.16.3"
607+source = "registry+https://github.com/rust-lang/crates.io-index"
608+checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83"
609+
610+[[package]]
611+name = "byteorder"
612+version = "1.5.0"
613+source = "registry+https://github.com/rust-lang/crates.io-index"
614+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
615+
616+[[package]]
617+name = "byteorder-lite"
618+version = "0.1.0"
619+source = "registry+https://github.com/rust-lang/crates.io-index"
620+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
621+
622+[[package]]
623+name = "bytes"
624+version = "1.11.1"
625+source = "registry+https://github.com/rust-lang/crates.io-index"
626+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
627+
628+[[package]]
629+name = "bytesize"
630+version = "2.3.0"
631+source = "registry+https://github.com/rust-lang/crates.io-index"
632+checksum = "00f4369ba008f82b968b1acbe31715ec37bd45236fa0726605a36cc3060ea256"
633+
634+[[package]]
635+name = "camino"
636+version = "1.2.2"
637+source = "registry+https://github.com/rust-lang/crates.io-index"
638+checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"
639+dependencies = [
640+ "serde_core",
641+]
642+
643+[[package]]
644+name = "cargo-platform"
645+version = "0.1.9"
646+source = "registry+https://github.com/rust-lang/crates.io-index"
647+checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
648+dependencies = [
649+ "serde",
650+]
651+
652+[[package]]
653+name = "cargo_metadata"
654+version = "0.19.2"
655+source = "registry+https://github.com/rust-lang/crates.io-index"
656+checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
657+dependencies = [
658+ "camino",
659+ "cargo-platform",
660+ "semver",
661+ "serde",
662+ "serde_json",
663+ "thiserror 2.0.18",
664+]
665+
666+[[package]]
667+name = "cast"
668+version = "0.3.0"
669+source = "registry+https://github.com/rust-lang/crates.io-index"
670+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
671+
672+[[package]]
673+name = "castaway"
674+version = "0.2.3"
675+source = "registry+https://github.com/rust-lang/crates.io-index"
676+checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"
677+dependencies = [
678+ "rustversion",
679+]
680+
681+[[package]]
682+name = "cbc"
683+version = "0.1.2"
684+source = "registry+https://github.com/rust-lang/crates.io-index"
685+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
686+dependencies = [
687+ "cipher",
688+]
689+
690+[[package]]
691+name = "cc"
692+version = "1.2.52"
693+source = "registry+https://github.com/rust-lang/crates.io-index"
694+checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"
695+dependencies = [
696+ "find-msvc-tools",
697+ "jobserver",
698+ "libc",
699+ "shlex",
700+]
701+
702+[[package]]
703+name = "census"
704+version = "0.4.2"
705+source = "registry+https://github.com/rust-lang/crates.io-index"
706+checksum = "4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0"
707+
708+[[package]]
709+name = "cesu8"
710+version = "1.1.0"
711+source = "registry+https://github.com/rust-lang/crates.io-index"
712+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
713+
714+[[package]]
715+name = "cfg-if"
716+version = "1.0.4"
717+source = "registry+https://github.com/rust-lang/crates.io-index"
718+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
719+
720+[[package]]
721+name = "cfg_aliases"
722+version = "0.2.1"
723+source = "registry+https://github.com/rust-lang/crates.io-index"
724+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
725+
726+[[package]]
727+name = "chacha20"
728+version = "0.9.1"
729+source = "registry+https://github.com/rust-lang/crates.io-index"
730+checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"
731+dependencies = [
732+ "cfg-if",
733+ "cipher",
734+ "cpufeatures 0.2.12",
735+]
736+
737+[[package]]
738+name = "chacha20"
739+version = "0.10.0"
740+source = "registry+https://github.com/rust-lang/crates.io-index"
741+checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
742+dependencies = [
743+ "cfg-if",
744+ "cpufeatures 0.3.0",
745+ "rand_core 0.10.0",
746+]
747+
748+[[package]]
749+name = "chacha20poly1305"
750+version = "0.10.1"
751+source = "registry+https://github.com/rust-lang/crates.io-index"
752+checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"
753+dependencies = [
754+ "aead",
755+ "chacha20 0.9.1",
756+ "cipher",
757+ "poly1305",
758+ "zeroize",
759+]
760+
761+[[package]]
762+name = "chrono"
763+version = "0.4.42"
764+source = "registry+https://github.com/rust-lang/crates.io-index"
765+checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
766+dependencies = [
767+ "iana-time-zone",
768+ "js-sys",
769+ "num-traits",
770+ "serde",
771+ "wasm-bindgen",
772+ "windows-link 0.2.1",
773+]
774+
775+[[package]]
776+name = "ciborium"
777+version = "0.2.2"
778+source = "registry+https://github.com/rust-lang/crates.io-index"
779+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
780+dependencies = [
781+ "ciborium-io",
782+ "ciborium-ll",
783+ "serde",
784+]
785+
786+[[package]]
787+name = "ciborium-io"
788+version = "0.2.2"
789+source = "registry+https://github.com/rust-lang/crates.io-index"
790+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
791+
792+[[package]]
793+name = "ciborium-ll"
794+version = "0.2.2"
795+source = "registry+https://github.com/rust-lang/crates.io-index"
796+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
797+dependencies = [
798+ "ciborium-io",
799+ "half",
800+]
801+
802+[[package]]
803+name = "cipher"
804+version = "0.4.4"
805+source = "registry+https://github.com/rust-lang/crates.io-index"
806+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
807+dependencies = [
808+ "crypto-common",
809+ "inout",
810+ "zeroize",
811+]
812+
813+[[package]]
814+name = "clap"
815+version = "4.5.53"
816+source = "registry+https://github.com/rust-lang/crates.io-index"
817+checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"
818+dependencies = [
819+ "clap_builder",
820+ "clap_derive",
821+]
822+
823+[[package]]
824+name = "clap_builder"
825+version = "4.5.53"
826+source = "registry+https://github.com/rust-lang/crates.io-index"
827+checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"
828+dependencies = [
829+ "anstyle",
830+ "clap_lex",
831+ "strsim",
832+]
833+
834+[[package]]
835+name = "clap_derive"
836+version = "4.5.49"
837+source = "registry+https://github.com/rust-lang/crates.io-index"
838+checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
839+dependencies = [
840+ "heck",
841+ "proc-macro2",
842+ "quote",
843+ "syn 2.0.101",
844+]
845+
846+[[package]]
847+name = "clap_lex"
848+version = "0.7.5"
849+source = "registry+https://github.com/rust-lang/crates.io-index"
850+checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
851+
852+[[package]]
853+name = "cmake"
854+version = "0.1.57"
855+source = "registry+https://github.com/rust-lang/crates.io-index"
856+checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d"
857+dependencies = [
858+ "cc",
859+]
860+
861+[[package]]
862+name = "codspeed"
863+version = "4.2.1"
864+source = "registry+https://github.com/rust-lang/crates.io-index"
865+checksum = "5f0d98d97fd75ca4489a1a0997820a6521531085e7c8a98941bd0e1264d567dd"
866+dependencies = [
867+ "anyhow",
868+ "cc",
869+ "colored",
870+ "getrandom 0.2.15",
871+ "glob",
872+ "libc",
873+ "nix 0.30.1",
874+ "serde",
875+ "serde_json",
876+ "statrs",
877+]
878+
879+[[package]]
880+name = "codspeed-criterion-compat"
881+version = "4.2.1"
882+source = "registry+https://github.com/rust-lang/crates.io-index"
883+checksum = "d16fe2db207123f7b3a3b5cfff0c22f99469f7534145f3573f57f4c8a5653c2c"
884+dependencies = [
885+ "clap",
886+ "codspeed",
887+ "codspeed-criterion-compat-walltime",
888+ "colored",
889+ "futures",
890+ "regex",
891+ "tokio",
892+]
893+
894+[[package]]
895+name = "codspeed-criterion-compat-walltime"
896+version = "4.2.1"
897+source = "registry+https://github.com/rust-lang/crates.io-index"
898+checksum = "b035c7f9846b143aeabb3833f5b584023eb97b43ecbff3d997db74c4372df2bd"
899+dependencies = [
900+ "anes",
901+ "cast",
902+ "ciborium",
903+ "clap",
904+ "codspeed",
905+ "criterion-plot",
906+ "futures",
907+ "is-terminal",
908+ "itertools 0.10.5",
909+ "num-traits",
910+ "once_cell",
911+ "oorandom",
912+ "plotters",
913+ "rayon",
914+ "regex",
915+ "serde",
916+ "serde_derive",
917+ "serde_json",
918+ "tinytemplate",
919+ "tokio",
920+ "walkdir",
921+]
922+
923+[[package]]
924+name = "color-eyre"
925+version = "0.6.5"
926+source = "registry+https://github.com/rust-lang/crates.io-index"
927+checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d"
928+dependencies = [
929+ "backtrace",
930+ "color-spantrace",
931+ "eyre",
932+ "indenter",
933+ "once_cell",
934+ "owo-colors",
935+ "tracing-error",
936+]
937+
938+[[package]]
939+name = "color-spantrace"
940+version = "0.3.0"
941+source = "registry+https://github.com/rust-lang/crates.io-index"
942+checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427"
943+dependencies = [
944+ "once_cell",
945+ "owo-colors",
946+ "tracing-core",
947+ "tracing-error",
948+]
949+
950+[[package]]
951+name = "colored"
952+version = "2.2.0"
953+source = "registry+https://github.com/rust-lang/crates.io-index"
954+checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
955+dependencies = [
956+ "lazy_static",
957+ "windows-sys 0.59.0",
958+]
959+
960+[[package]]
961+name = "combine"
962+version = "4.6.7"
963+source = "registry+https://github.com/rust-lang/crates.io-index"
964+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
965+dependencies = [
966+ "bytes",
967+ "memchr",
968+]
969+
970+[[package]]
971+name = "compact_str"
972+version = "0.9.0"
973+source = "registry+https://github.com/rust-lang/crates.io-index"
974+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
975+dependencies = [
976+ "castaway",
977+ "cfg-if",
978+ "itoa",
979+ "rustversion",
980+ "ryu",
981+ "static_assertions",
982+]
983+
984+[[package]]
985+name = "concurrent-queue"
986+version = "2.5.0"
987+source = "registry+https://github.com/rust-lang/crates.io-index"
988+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
989+dependencies = [
990+ "crossbeam-utils",
991+]
992+
993+[[package]]
994+name = "console"
995+version = "0.15.8"
996+source = "registry+https://github.com/rust-lang/crates.io-index"
997+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
998+dependencies = [
999+ "encode_unicode",
1000+ "lazy_static",
1001+ "libc",
1002+ "windows-sys 0.52.0",
1003+]
1004+
1005+[[package]]
1006+name = "console_error_panic_hook"
1007+version = "0.1.7"
1008+source = "registry+https://github.com/rust-lang/crates.io-index"
1009+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
1010+dependencies = [
1011+ "cfg-if",
1012+ "wasm-bindgen",
1013+]
1014+
1015+[[package]]
1016+name = "const-oid"
1017+version = "0.9.6"
1018+source = "registry+https://github.com/rust-lang/crates.io-index"
1019+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
1020+
1021+[[package]]
1022+name = "const_panic"
1023+version = "0.2.15"
1024+source = "git+https://github.com/jplatte/const_panic?rev=e0b317a9a7bde2d48a7d15b6a60d70e4a41d3b5f#e0b317a9a7bde2d48a7d15b6a60d70e4a41d3b5f"
1025+dependencies = [
1026+ "typewit",
1027+]
1028+
1029+[[package]]
1030+name = "constant_time_eq"
1031+version = "0.3.1"
1032+source = "registry+https://github.com/rust-lang/crates.io-index"
1033+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
1034+
1035+[[package]]
1036+name = "convert_case"
1037+version = "0.7.1"
1038+source = "registry+https://github.com/rust-lang/crates.io-index"
1039+checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7"
1040+dependencies = [
1041+ "unicode-segmentation",
1042+]
1043+
1044+[[package]]
1045+name = "core-foundation"
1046+version = "0.10.1"
1047+source = "registry+https://github.com/rust-lang/crates.io-index"
1048+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
1049+dependencies = [
1050+ "core-foundation-sys",
1051+ "libc",
1052+]
1053+
1054+[[package]]
1055+name = "core-foundation-sys"
1056+version = "0.8.6"
1057+source = "registry+https://github.com/rust-lang/crates.io-index"
1058+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
1059+
1060+[[package]]
1061+name = "cpufeatures"
1062+version = "0.2.12"
1063+source = "registry+https://github.com/rust-lang/crates.io-index"
1064+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
1065+dependencies = [
1066+ "libc",
1067+]
1068+
1069+[[package]]
1070+name = "cpufeatures"
1071+version = "0.3.0"
1072+source = "registry+https://github.com/rust-lang/crates.io-index"
1073+checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
1074+dependencies = [
1075+ "libc",
1076+]
1077+
1078+[[package]]
1079+name = "crc32fast"
1080+version = "1.4.2"
1081+source = "registry+https://github.com/rust-lang/crates.io-index"
1082+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
1083+dependencies = [
1084+ "cfg-if",
1085+]
1086+
1087+[[package]]
1088+name = "criterion-plot"
1089+version = "0.5.0"
1090+source = "registry+https://github.com/rust-lang/crates.io-index"
1091+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
1092+dependencies = [
1093+ "cast",
1094+ "itertools 0.10.5",
1095+]
1096+
1097+[[package]]
1098+name = "crossbeam-channel"
1099+version = "0.5.15"
1100+source = "registry+https://github.com/rust-lang/crates.io-index"
1101+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
1102+dependencies = [
1103+ "crossbeam-utils",
1104+]
1105+
1106+[[package]]
1107+name = "crossbeam-deque"
1108+version = "0.8.5"
1109+source = "registry+https://github.com/rust-lang/crates.io-index"
1110+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
1111+dependencies = [
1112+ "crossbeam-epoch",
1113+ "crossbeam-utils",
1114+]
1115+
1116+[[package]]
1117+name = "crossbeam-epoch"
1118+version = "0.9.18"
1119+source = "registry+https://github.com/rust-lang/crates.io-index"
1120+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
1121+dependencies = [
1122+ "crossbeam-utils",
1123+]
1124+
1125+[[package]]
1126+name = "crossbeam-utils"
1127+version = "0.8.20"
1128+source = "registry+https://github.com/rust-lang/crates.io-index"
1129+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
1130+
1131+[[package]]
1132+name = "crossterm"
1133+version = "0.29.0"
1134+source = "registry+https://github.com/rust-lang/crates.io-index"
1135+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
1136+dependencies = [
1137+ "bitflags 2.10.0",
1138+ "crossterm_winapi",
1139+ "derive_more 2.0.1",
1140+ "document-features",
1141+ "mio",
1142+ "parking_lot",
1143+ "rustix",
1144+ "signal-hook",
1145+ "signal-hook-mio",
1146+ "winapi",
1147+]
1148+
1149+[[package]]
1150+name = "crossterm_winapi"
1151+version = "0.9.1"
1152+source = "registry+https://github.com/rust-lang/crates.io-index"
1153+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
1154+dependencies = [
1155+ "winapi",
1156+]
1157+
1158+[[package]]
1159+name = "crunchy"
1160+version = "0.2.2"
1161+source = "registry+https://github.com/rust-lang/crates.io-index"
1162+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
1163+
1164+[[package]]
1165+name = "crypto-common"
1166+version = "0.1.6"
1167+source = "registry+https://github.com/rust-lang/crates.io-index"
1168+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
1169+dependencies = [
1170+ "generic-array",
1171+ "rand_core 0.6.4",
1172+ "typenum",
1173+]
1174+
1175+[[package]]
1176+name = "csscolorparser"
1177+version = "0.6.2"
1178+source = "registry+https://github.com/rust-lang/crates.io-index"
1179+checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf"
1180+dependencies = [
1181+ "lab",
1182+ "phf 0.11.3",
1183+]
1184+
1185+[[package]]
1186+name = "ctor"
1187+version = "0.2.9"
1188+source = "registry+https://github.com/rust-lang/crates.io-index"
1189+checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
1190+dependencies = [
1191+ "quote",
1192+ "syn 2.0.101",
1193+]
1194+
1195+[[package]]
1196+name = "ctr"
1197+version = "0.9.2"
1198+source = "registry+https://github.com/rust-lang/crates.io-index"
1199+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
1200+dependencies = [
1201+ "cipher",
1202+]
1203+
1204+[[package]]
1205+name = "curve25519-dalek"
1206+version = "4.1.3"
1207+source = "registry+https://github.com/rust-lang/crates.io-index"
1208+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
1209+dependencies = [
1210+ "cfg-if",
1211+ "cpufeatures 0.2.12",
1212+ "curve25519-dalek-derive",
1213+ "digest",
1214+ "fiat-crypto",
1215+ "rustc_version",
1216+ "serde",
1217+ "subtle",
1218+ "zeroize",
1219+]
1220+
1221+[[package]]
1222+name = "curve25519-dalek-derive"
1223+version = "0.1.1"
1224+source = "registry+https://github.com/rust-lang/crates.io-index"
1225+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
1226+dependencies = [
1227+ "proc-macro2",
1228+ "quote",
1229+ "syn 2.0.101",
1230+]
1231+
1232+[[package]]
1233+name = "darling"
1234+version = "0.20.10"
1235+source = "registry+https://github.com/rust-lang/crates.io-index"
1236+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
1237+dependencies = [
1238+ "darling_core 0.20.10",
1239+ "darling_macro 0.20.10",
1240+]
1241+
1242+[[package]]
1243+name = "darling"
1244+version = "0.21.1"
1245+source = "registry+https://github.com/rust-lang/crates.io-index"
1246+checksum = "d6b136475da5ef7b6ac596c0e956e37bad51b85b987ff3d5e230e964936736b2"
1247+dependencies = [
1248+ "darling_core 0.21.1",
1249+ "darling_macro 0.21.1",
1250+]
1251+
1252+[[package]]
1253+name = "darling_core"
1254+version = "0.20.10"
1255+source = "registry+https://github.com/rust-lang/crates.io-index"
1256+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
1257+dependencies = [
1258+ "fnv",
1259+ "ident_case",
1260+ "proc-macro2",
1261+ "quote",
1262+ "strsim",
1263+ "syn 2.0.101",
1264+]
1265+
1266+[[package]]
1267+name = "darling_core"
1268+version = "0.21.1"
1269+source = "registry+https://github.com/rust-lang/crates.io-index"
1270+checksum = "b44ad32f92b75fb438b04b68547e521a548be8acc339a6dacc4a7121488f53e6"
1271+dependencies = [
1272+ "fnv",
1273+ "ident_case",
1274+ "proc-macro2",
1275+ "quote",
1276+ "strsim",
1277+ "syn 2.0.101",
1278+]
1279+
1280+[[package]]
1281+name = "darling_macro"
1282+version = "0.20.10"
1283+source = "registry+https://github.com/rust-lang/crates.io-index"
1284+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
1285+dependencies = [
1286+ "darling_core 0.20.10",
1287+ "quote",
1288+ "syn 2.0.101",
1289+]
1290+
1291+[[package]]
1292+name = "darling_macro"
1293+version = "0.21.1"
1294+source = "registry+https://github.com/rust-lang/crates.io-index"
1295+checksum = "2b5be8a7a562d315a5b92a630c30cec6bcf663e6673f00fbb69cca66a6f521b9"
1296+dependencies = [
1297+ "darling_core 0.21.1",
1298+ "quote",
1299+ "syn 2.0.101",
1300+]
1301+
1302+[[package]]
1303+name = "datasketches"
1304+version = "0.2.0"
1305+source = "registry+https://github.com/rust-lang/crates.io-index"
1306+checksum = "c286de4e81ea2590afc24d754e0f83810c566f50a1388fa75ebd57928c0d9745"
1307+
1308+[[package]]
1309+name = "date_header"
1310+version = "1.0.5"
1311+source = "registry+https://github.com/rust-lang/crates.io-index"
1312+checksum = "0c03c416ed1a30fbb027ef484ba6ab6f80e1eada675e1a2b92fd673c045a1f1d"
1313+
1314+[[package]]
1315+name = "deadpool"
1316+version = "0.12.3"
1317+source = "registry+https://github.com/rust-lang/crates.io-index"
1318+checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b"
1319+dependencies = [
1320+ "deadpool-runtime 0.1.4",
1321+ "lazy_static",
1322+ "num_cpus",
1323+ "tokio",
1324+]
1325+
1326+[[package]]
1327+name = "deadpool"
1328+version = "0.13.0"
1329+source = "registry+https://github.com/rust-lang/crates.io-index"
1330+checksum = "883466cb8db62725aee5f4a6011e8a5d42912b42632df32aad57fc91127c6e04"
1331+dependencies = [
1332+ "deadpool-runtime 0.3.1",
1333+ "num_cpus",
1334+ "tokio",
1335+]
1336+
1337+[[package]]
1338+name = "deadpool-runtime"
1339+version = "0.1.4"
1340+source = "registry+https://github.com/rust-lang/crates.io-index"
1341+checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b"
1342+
1343+[[package]]
1344+name = "deadpool-runtime"
1345+version = "0.3.1"
1346+source = "registry+https://github.com/rust-lang/crates.io-index"
1347+checksum = "2657f61fb1dd8bf37a8d51093cc7cee4e77125b22f7753f49b289f831bec2bae"
1348+dependencies = [
1349+ "tokio",
1350+]
1351+
1352+[[package]]
1353+name = "deadpool-sync"
1354+version = "0.2.0"
1355+source = "registry+https://github.com/rust-lang/crates.io-index"
1356+checksum = "e385cc95d3d582c328b36d1ff90feac061102b001894b555e6b465a2e0eaabbf"
1357+dependencies = [
1358+ "deadpool-runtime 0.3.1",
1359+]
1360+
1361+[[package]]
1362+name = "debugid"
1363+version = "0.8.0"
1364+source = "registry+https://github.com/rust-lang/crates.io-index"
1365+checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d"
1366+dependencies = [
1367+ "serde",
1368+ "uuid",
1369+]
1370+
1371+[[package]]
1372+name = "decancer"
1373+version = "3.3.3"
1374+source = "registry+https://github.com/rust-lang/crates.io-index"
1375+checksum = "a9244323129647178bf41ac861a2cdb9d9c81b9b09d3d0d1de9cd302b33b8a1d"
1376+
1377+[[package]]
1378+name = "delegate-display"
1379+version = "3.0.0"
1380+source = "registry+https://github.com/rust-lang/crates.io-index"
1381+checksum = "9926686c832494164c33a36bf65118f4bd6e704000b58c94681bf62e9ad67a74"
1382+dependencies = [
1383+ "impartial-ord",
1384+ "itoa",
1385+ "macroific",
1386+ "proc-macro2",
1387+ "quote",
1388+ "syn 2.0.101",
1389+]
1390+
1391+[[package]]
1392+name = "deltae"
1393+version = "0.3.2"
1394+source = "registry+https://github.com/rust-lang/crates.io-index"
1395+checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4"
1396+
1397+[[package]]
1398+name = "der"
1399+version = "0.7.9"
1400+source = "registry+https://github.com/rust-lang/crates.io-index"
1401+checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
1402+dependencies = [
1403+ "const-oid",
1404+ "zeroize",
1405+]
1406+
1407+[[package]]
1408+name = "deranged"
1409+version = "0.5.3"
1410+source = "registry+https://github.com/rust-lang/crates.io-index"
1411+checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc"
1412+dependencies = [
1413+ "powerfmt",
1414+ "serde",
1415+]
1416+
1417+[[package]]
1418+name = "derivative"
1419+version = "2.2.0"
1420+source = "registry+https://github.com/rust-lang/crates.io-index"
1421+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
1422+dependencies = [
1423+ "proc-macro2",
1424+ "quote",
1425+ "syn 1.0.109",
1426+]
1427+
1428+[[package]]
1429+name = "derive_builder"
1430+version = "0.20.2"
1431+source = "registry+https://github.com/rust-lang/crates.io-index"
1432+checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
1433+dependencies = [
1434+ "derive_builder_macro",
1435+]
1436+
1437+[[package]]
1438+name = "derive_builder_core"
1439+version = "0.20.2"
1440+source = "registry+https://github.com/rust-lang/crates.io-index"
1441+checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
1442+dependencies = [
1443+ "darling 0.20.10",
1444+ "proc-macro2",
1445+ "quote",
1446+ "syn 2.0.101",
1447+]
1448+
1449+[[package]]
1450+name = "derive_builder_macro"
1451+version = "0.20.2"
1452+source = "registry+https://github.com/rust-lang/crates.io-index"
1453+checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
1454+dependencies = [
1455+ "derive_builder_core",
1456+ "syn 2.0.101",
1457+]
1458+
1459+[[package]]
1460+name = "derive_more"
1461+version = "1.0.0"
1462+source = "registry+https://github.com/rust-lang/crates.io-index"
1463+checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
1464+dependencies = [
1465+ "derive_more-impl 1.0.0",
1466+]
1467+
1468+[[package]]
1469+name = "derive_more"
1470+version = "2.0.1"
1471+source = "registry+https://github.com/rust-lang/crates.io-index"
1472+checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
1473+dependencies = [
1474+ "derive_more-impl 2.0.1",
1475+]
1476+
1477+[[package]]
1478+name = "derive_more-impl"
1479+version = "1.0.0"
1480+source = "registry+https://github.com/rust-lang/crates.io-index"
1481+checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
1482+dependencies = [
1483+ "proc-macro2",
1484+ "quote",
1485+ "syn 2.0.101",
1486+]
1487+
1488+[[package]]
1489+name = "derive_more-impl"
1490+version = "2.0.1"
1491+source = "registry+https://github.com/rust-lang/crates.io-index"
1492+checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
1493+dependencies = [
1494+ "convert_case",
1495+ "proc-macro2",
1496+ "quote",
1497+ "syn 2.0.101",
1498+ "unicode-xid",
1499+]
1500+
1501+[[package]]
1502+name = "difflib"
1503+version = "0.4.0"
1504+source = "registry+https://github.com/rust-lang/crates.io-index"
1505+checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
1506+
1507+[[package]]
1508+name = "digest"
1509+version = "0.10.7"
1510+source = "registry+https://github.com/rust-lang/crates.io-index"
1511+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
1512+dependencies = [
1513+ "block-buffer",
1514+ "crypto-common",
1515+ "subtle",
1516+]
1517+
1518+[[package]]
1519+name = "dirs"
1520+version = "6.0.0"
1521+source = "registry+https://github.com/rust-lang/crates.io-index"
1522+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
1523+dependencies = [
1524+ "dirs-sys",
1525+]
1526+
1527+[[package]]
1528+name = "dirs-sys"
1529+version = "0.5.0"
1530+source = "registry+https://github.com/rust-lang/crates.io-index"
1531+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
1532+dependencies = [
1533+ "libc",
1534+ "option-ext",
1535+ "redox_users",
1536+ "windows-sys 0.61.2",
1537+]
1538+
1539+[[package]]
1540+name = "displaydoc"
1541+version = "0.2.5"
1542+source = "registry+https://github.com/rust-lang/crates.io-index"
1543+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
1544+dependencies = [
1545+ "proc-macro2",
1546+ "quote",
1547+ "syn 2.0.101",
1548+]
1549+
1550+[[package]]
1551+name = "document-features"
1552+version = "0.2.12"
1553+source = "registry+https://github.com/rust-lang/crates.io-index"
1554+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
1555+dependencies = [
1556+ "litrs",
1557+]
1558+
1559+[[package]]
1560+name = "downcast-rs"
1561+version = "2.0.1"
1562+source = "registry+https://github.com/rust-lang/crates.io-index"
1563+checksum = "ea8a8b81cacc08888170eef4d13b775126db426d0b348bee9d18c2c1eaf123cf"
1564+
1565+[[package]]
1566+name = "dunce"
1567+version = "1.0.5"
1568+source = "registry+https://github.com/rust-lang/crates.io-index"
1569+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
1570+
1571+[[package]]
1572+name = "ed25519"
1573+version = "2.2.3"
1574+source = "registry+https://github.com/rust-lang/crates.io-index"
1575+checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
1576+dependencies = [
1577+ "pkcs8",
1578+ "serde",
1579+ "signature",
1580+]
1581+
1582+[[package]]
1583+name = "ed25519-dalek"
1584+version = "2.1.1"
1585+source = "registry+https://github.com/rust-lang/crates.io-index"
1586+checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
1587+dependencies = [
1588+ "curve25519-dalek",
1589+ "ed25519",
1590+ "rand_core 0.6.4",
1591+ "serde",
1592+ "sha2",
1593+ "subtle",
1594+ "zeroize",
1595+]
1596+
1597+[[package]]
1598+name = "either"
1599+version = "1.13.0"
1600+source = "registry+https://github.com/rust-lang/crates.io-index"
1601+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
1602+
1603+[[package]]
1604+name = "emojis"
1605+version = "0.8.0"
1606+source = "registry+https://github.com/rust-lang/crates.io-index"
1607+checksum = "50c1c1870b766fc398e5f0526498d09c94b6de15be5fd769a28bbc804fb1b05d"
1608+dependencies = [
1609+ "phf 0.13.1",
1610+]
1611+
1612+[[package]]
1613+name = "encode_unicode"
1614+version = "0.3.6"
1615+source = "registry+https://github.com/rust-lang/crates.io-index"
1616+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
1617+
1618+[[package]]
1619+name = "equivalent"
1620+version = "1.0.1"
1621+source = "registry+https://github.com/rust-lang/crates.io-index"
1622+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
1623+
1624+[[package]]
1625+name = "erased-serde"
1626+version = "0.4.10"
1627+source = "registry+https://github.com/rust-lang/crates.io-index"
1628+checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec"
1629+dependencies = [
1630+ "serde",
1631+ "serde_core",
1632+ "typeid",
1633+]
1634+
1635+[[package]]
1636+name = "errno"
1637+version = "0.3.13"
1638+source = "registry+https://github.com/rust-lang/crates.io-index"
1639+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
1640+dependencies = [
1641+ "libc",
1642+ "windows-sys 0.60.2",
1643+]
1644+
1645+[[package]]
1646+name = "euclid"
1647+version = "0.22.14"
1648+source = "registry+https://github.com/rust-lang/crates.io-index"
1649+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
1650+dependencies = [
1651+ "num-traits",
1652+]
1653+
1654+[[package]]
1655+name = "event-listener"
1656+version = "5.4.1"
1657+source = "registry+https://github.com/rust-lang/crates.io-index"
1658+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1659+dependencies = [
1660+ "concurrent-queue",
1661+ "parking",
1662+ "pin-project-lite",
1663+]
1664+
1665+[[package]]
1666+name = "event-listener-strategy"
1667+version = "0.5.4"
1668+source = "registry+https://github.com/rust-lang/crates.io-index"
1669+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
1670+dependencies = [
1671+ "event-listener",
1672+ "pin-project-lite",
1673+]
1674+
1675+[[package]]
1676+name = "example-autojoin"
1677+version = "0.1.0"
1678+dependencies = [
1679+ "anyhow",
1680+ "matrix-sdk",
1681+ "tokio",
1682+ "tracing-subscriber",
1683+]
1684+
1685+[[package]]
1686+name = "example-backups"
1687+version = "0.1.0"
1688+dependencies = [
1689+ "anyhow",
1690+ "clap",
1691+ "futures-util",
1692+ "matrix-sdk",
1693+ "tokio",
1694+ "tracing-subscriber",
1695+ "url",
1696+]
1697+
1698+[[package]]
1699+name = "example-command-bot"
1700+version = "0.1.0"
1701+dependencies = [
1702+ "anyhow",
1703+ "matrix-sdk",
1704+ "tokio",
1705+ "tracing-subscriber",
1706+]
1707+
1708+[[package]]
1709+name = "example-cross-signing-bootstrap"
1710+version = "0.1.0"
1711+dependencies = [
1712+ "anyhow",
1713+ "matrix-sdk",
1714+ "tokio",
1715+ "tracing-subscriber",
1716+ "url",
1717+]
1718+
1719+[[package]]
1720+name = "example-custom-events"
1721+version = "0.1.0"
1722+dependencies = [
1723+ "anyhow",
1724+ "matrix-sdk",
1725+ "serde",
1726+ "tokio",
1727+ "tracing-subscriber",
1728+]
1729+
1730+[[package]]
1731+name = "example-emoji-verification"
1732+version = "0.1.0"
1733+dependencies = [
1734+ "anyhow",
1735+ "clap",
1736+ "futures-util",
1737+ "matrix-sdk",
1738+ "tokio",
1739+ "tracing-subscriber",
1740+ "url",
1741+]
1742+
1743+[[package]]
1744+name = "example-get-profiles"
1745+version = "0.1.0"
1746+dependencies = [
1747+ "anyhow",
1748+ "matrix-sdk",
1749+ "tokio",
1750+ "tracing-subscriber",
1751+ "url",
1752+]
1753+
1754+[[package]]
1755+name = "example-getting-started"
1756+version = "0.1.0"
1757+dependencies = [
1758+ "anyhow",
1759+ "matrix-sdk",
1760+ "tokio",
1761+ "tracing-subscriber",
1762+]
1763+
1764+[[package]]
1765+name = "example-image-bot"
1766+version = "0.1.0"
1767+dependencies = [
1768+ "anyhow",
1769+ "matrix-sdk",
1770+ "mime",
1771+ "tokio",
1772+ "tracing-subscriber",
1773+ "url",
1774+]
1775+
1776+[[package]]
1777+name = "example-login"
1778+version = "0.1.0"
1779+dependencies = [
1780+ "anyhow",
1781+ "matrix-sdk",
1782+ "tokio",
1783+ "tracing-subscriber",
1784+ "url",
1785+]
1786+
1787+[[package]]
1788+name = "example-oauth-cli"
1789+version = "0.1.0"
1790+dependencies = [
1791+ "anyhow",
1792+ "dirs",
1793+ "futures-util",
1794+ "matrix-sdk",
1795+ "matrix-sdk-ui",
1796+ "rand 0.10.1",
1797+ "serde",
1798+ "serde_json",
1799+ "tokio",
1800+ "tracing-subscriber",
1801+ "url",
1802+]
1803+
1804+[[package]]
1805+name = "example-persist-session"
1806+version = "0.1.0"
1807+dependencies = [
1808+ "anyhow",
1809+ "dirs",
1810+ "matrix-sdk",
1811+ "rand 0.10.1",
1812+ "serde",
1813+ "serde_json",
1814+ "tokio",
1815+ "tracing-subscriber",
1816+]
1817+
1818+[[package]]
1819+name = "example-qr-login"
1820+version = "0.1.0"
1821+dependencies = [
1822+ "anyhow",
1823+ "clap",
1824+ "futures-util",
1825+ "matrix-sdk",
1826+ "tokio",
1827+ "tracing-subscriber",
1828+ "url",
1829+]
1830+
1831+[[package]]
1832+name = "example-secret-storage"
1833+version = "0.1.0"
1834+dependencies = [
1835+ "anyhow",
1836+ "clap",
1837+ "matrix-sdk",
1838+ "tokio",
1839+ "tracing-subscriber",
1840+ "url",
1841+]
1842+
1843+[[package]]
1844+name = "example-timeline"
1845+version = "0.1.0"
1846+dependencies = [
1847+ "anyhow",
1848+ "clap",
1849+ "futures-util",
1850+ "matrix-sdk",
1851+ "matrix-sdk-ui",
1852+ "tokio",
1853+ "tracing-subscriber",
1854+ "url",
1855+]
1856+
1857+[[package]]
1858+name = "extension-trait"
1859+version = "1.0.2"
1860+source = "registry+https://github.com/rust-lang/crates.io-index"
1861+checksum = "dd65f1b59dd22d680c7a626cc4a000c1e03d241c51c3e034d2bc9f1e90734f9b"
1862+dependencies = [
1863+ "proc-macro2",
1864+ "quote",
1865+ "syn 2.0.101",
1866+]
1867+
1868+[[package]]
1869+name = "eyeball"
1870+version = "0.8.8"
1871+source = "registry+https://github.com/rust-lang/crates.io-index"
1872+checksum = "d93bd0ebf93d61d6332d3c09a96e97975968a44e19a64c947bde06e6baff383f"
1873+dependencies = [
1874+ "futures-core",
1875+ "readlock",
1876+ "readlock-tokio",
1877+ "tokio",
1878+ "tokio-util",
1879+ "tracing",
1880+]
1881+
1882+[[package]]
1883+name = "eyeball-im"
1884+version = "0.8.0"
1885+source = "registry+https://github.com/rust-lang/crates.io-index"
1886+checksum = "4790c03df183c2b46665c1a58118c04fd3e3976ec2fe16a0aa00e00c9eea7754"
1887+dependencies = [
1888+ "futures-core",
1889+ "imbl",
1890+ "tokio",
1891+ "tracing",
1892+]
1893+
1894+[[package]]
1895+name = "eyeball-im-util"
1896+version = "0.10.0"
1897+source = "registry+https://github.com/rust-lang/crates.io-index"
1898+checksum = "809fa2e8e59c25a41f5b2440aa937f1e84df6ae48b707e65f69ce259b1c44bda"
1899+dependencies = [
1900+ "arrayvec",
1901+ "eyeball-im",
1902+ "futures-core",
1903+ "imbl",
1904+ "pin-project-lite",
1905+ "smallvec",
1906+]
1907+
1908+[[package]]
1909+name = "eyre"
1910+version = "0.6.12"
1911+source = "registry+https://github.com/rust-lang/crates.io-index"
1912+checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
1913+dependencies = [
1914+ "indenter",
1915+ "once_cell",
1916+]
1917+
1918+[[package]]
1919+name = "fallible-iterator"
1920+version = "0.3.0"
1921+source = "registry+https://github.com/rust-lang/crates.io-index"
1922+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
1923+
1924+[[package]]
1925+name = "fallible-streaming-iterator"
1926+version = "0.1.9"
1927+source = "registry+https://github.com/rust-lang/crates.io-index"
1928+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
1929+
1930+[[package]]
1931+name = "fancy-regex"
1932+version = "0.11.0"
1933+source = "registry+https://github.com/rust-lang/crates.io-index"
1934+checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
1935+dependencies = [
1936+ "bit-set",
1937+ "regex",
1938+]
1939+
1940+[[package]]
1941+name = "fancy_constructor"
1942+version = "2.1.0"
1943+source = "registry+https://github.com/rust-lang/crates.io-index"
1944+checksum = "28a27643a5d05f3a22f5afd6e0d0e6e354f92d37907006f97b84b9cb79082198"
1945+dependencies = [
1946+ "macroific",
1947+ "proc-macro2",
1948+ "quote",
1949+ "syn 2.0.101",
1950+]
1951+
1952+[[package]]
1953+name = "fastdivide"
1954+version = "0.4.2"
1955+source = "registry+https://github.com/rust-lang/crates.io-index"
1956+checksum = "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471"
1957+
1958+[[package]]
1959+name = "fastrand"
1960+version = "2.2.0"
1961+source = "registry+https://github.com/rust-lang/crates.io-index"
1962+checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4"
1963+
1964+[[package]]
1965+name = "fiat-crypto"
1966+version = "0.2.9"
1967+source = "registry+https://github.com/rust-lang/crates.io-index"
1968+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
1969+
1970+[[package]]
1971+name = "filedescriptor"
1972+version = "0.8.3"
1973+source = "registry+https://github.com/rust-lang/crates.io-index"
1974+checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
1975+dependencies = [
1976+ "libc",
1977+ "thiserror 1.0.63",
1978+ "winapi",
1979+]
1980+
1981+[[package]]
1982+name = "find-msvc-tools"
1983+version = "0.1.7"
1984+source = "registry+https://github.com/rust-lang/crates.io-index"
1985+checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"
1986+
1987+[[package]]
1988+name = "findshlibs"
1989+version = "0.10.2"
1990+source = "registry+https://github.com/rust-lang/crates.io-index"
1991+checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64"
1992+dependencies = [
1993+ "cc",
1994+ "lazy_static",
1995+ "libc",
1996+ "winapi",
1997+]
1998+
1999+[[package]]
2000+name = "finl_unicode"
2001+version = "1.4.0"
2002+source = "registry+https://github.com/rust-lang/crates.io-index"
2003+checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5"
2004+
2005+[[package]]
2006+name = "fixedbitset"
2007+version = "0.4.2"
2008+source = "registry+https://github.com/rust-lang/crates.io-index"
2009+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
2010+
2011+[[package]]
2012+name = "flate2"
2013+version = "1.1.5"
2014+source = "registry+https://github.com/rust-lang/crates.io-index"
2015+checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
2016+dependencies = [
2017+ "crc32fast",
2018+ "miniz_oxide",
2019+]
2020+
2021+[[package]]
2022+name = "fnv"
2023+version = "1.0.7"
2024+source = "registry+https://github.com/rust-lang/crates.io-index"
2025+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
2026+
2027+[[package]]
2028+name = "foldhash"
2029+version = "0.1.5"
2030+source = "registry+https://github.com/rust-lang/crates.io-index"
2031+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
2032+
2033+[[package]]
2034+name = "foldhash"
2035+version = "0.2.0"
2036+source = "registry+https://github.com/rust-lang/crates.io-index"
2037+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
2038+
2039+[[package]]
2040+name = "form_urlencoded"
2041+version = "1.2.2"
2042+source = "registry+https://github.com/rust-lang/crates.io-index"
2043+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
2044+dependencies = [
2045+ "percent-encoding",
2046+]
2047+
2048+[[package]]
2049+name = "fs-err"
2050+version = "2.11.0"
2051+source = "registry+https://github.com/rust-lang/crates.io-index"
2052+checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41"
2053+dependencies = [
2054+ "autocfg",
2055+]
2056+
2057+[[package]]
2058+name = "fs4"
2059+version = "0.13.1"
2060+source = "registry+https://github.com/rust-lang/crates.io-index"
2061+checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4"
2062+dependencies = [
2063+ "rustix",
2064+ "windows-sys 0.59.0",
2065+]
2066+
2067+[[package]]
2068+name = "fs_extra"
2069+version = "1.3.0"
2070+source = "registry+https://github.com/rust-lang/crates.io-index"
2071+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
2072+
2073+[[package]]
2074+name = "futures"
2075+version = "0.3.31"
2076+source = "registry+https://github.com/rust-lang/crates.io-index"
2077+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
2078+dependencies = [
2079+ "futures-channel",
2080+ "futures-core",
2081+ "futures-executor",
2082+ "futures-io",
2083+ "futures-sink",
2084+ "futures-task",
2085+ "futures-util",
2086+]
2087+
2088+[[package]]
2089+name = "futures-channel"
2090+version = "0.3.31"
2091+source = "registry+https://github.com/rust-lang/crates.io-index"
2092+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
2093+dependencies = [
2094+ "futures-core",
2095+ "futures-sink",
2096+]
2097+
2098+[[package]]
2099+name = "futures-core"
2100+version = "0.3.31"
2101+source = "registry+https://github.com/rust-lang/crates.io-index"
2102+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
2103+
2104+[[package]]
2105+name = "futures-executor"
2106+version = "0.3.31"
2107+source = "registry+https://github.com/rust-lang/crates.io-index"
2108+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
2109+dependencies = [
2110+ "futures-core",
2111+ "futures-task",
2112+ "futures-util",
2113+]
2114+
2115+[[package]]
2116+name = "futures-io"
2117+version = "0.3.31"
2118+source = "registry+https://github.com/rust-lang/crates.io-index"
2119+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
2120+
2121+[[package]]
2122+name = "futures-macro"
2123+version = "0.3.31"
2124+source = "registry+https://github.com/rust-lang/crates.io-index"
2125+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
2126+dependencies = [
2127+ "proc-macro2",
2128+ "quote",
2129+ "syn 2.0.101",
2130+]
2131+
2132+[[package]]
2133+name = "futures-sink"
2134+version = "0.3.31"
2135+source = "registry+https://github.com/rust-lang/crates.io-index"
2136+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
2137+
2138+[[package]]
2139+name = "futures-task"
2140+version = "0.3.31"
2141+source = "registry+https://github.com/rust-lang/crates.io-index"
2142+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
2143+
2144+[[package]]
2145+name = "futures-util"
2146+version = "0.3.31"
2147+source = "registry+https://github.com/rust-lang/crates.io-index"
2148+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
2149+dependencies = [
2150+ "futures-channel",
2151+ "futures-core",
2152+ "futures-io",
2153+ "futures-macro",
2154+ "futures-sink",
2155+ "futures-task",
2156+ "memchr",
2157+ "pin-project-lite",
2158+ "pin-utils",
2159+ "slab",
2160+]
2161+
2162+[[package]]
2163+name = "fuzzy-matcher"
2164+version = "0.3.7"
2165+source = "registry+https://github.com/rust-lang/crates.io-index"
2166+checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"
2167+dependencies = [
2168+ "thread_local",
2169+]
2170+
2171+[[package]]
2172+name = "generator"
2173+version = "0.8.7"
2174+source = "registry+https://github.com/rust-lang/crates.io-index"
2175+checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2"
2176+dependencies = [
2177+ "cc",
2178+ "cfg-if",
2179+ "libc",
2180+ "log",
2181+ "rustversion",
2182+ "windows",
2183+]
2184+
2185+[[package]]
2186+name = "generic-array"
2187+version = "0.14.7"
2188+source = "registry+https://github.com/rust-lang/crates.io-index"
2189+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
2190+dependencies = [
2191+ "typenum",
2192+ "version_check",
2193+]
2194+
2195+[[package]]
2196+name = "getrandom"
2197+version = "0.2.15"
2198+source = "registry+https://github.com/rust-lang/crates.io-index"
2199+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
2200+dependencies = [
2201+ "cfg-if",
2202+ "js-sys",
2203+ "libc",
2204+ "wasi",
2205+ "wasm-bindgen",
2206+]
2207+
2208+[[package]]
2209+name = "getrandom"
2210+version = "0.3.4"
2211+source = "registry+https://github.com/rust-lang/crates.io-index"
2212+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
2213+dependencies = [
2214+ "cfg-if",
2215+ "js-sys",
2216+ "libc",
2217+ "r-efi 5.3.0",
2218+ "wasip2",
2219+ "wasm-bindgen",
2220+]
2221+
2222+[[package]]
2223+name = "getrandom"
2224+version = "0.4.2"
2225+source = "registry+https://github.com/rust-lang/crates.io-index"
2226+checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
2227+dependencies = [
2228+ "cfg-if",
2229+ "js-sys",
2230+ "libc",
2231+ "r-efi 6.0.0",
2232+ "rand_core 0.10.0",
2233+ "wasip2",
2234+ "wasip3",
2235+ "wasm-bindgen",
2236+]
2237+
2238+[[package]]
2239+name = "gimli"
2240+version = "0.32.3"
2241+source = "registry+https://github.com/rust-lang/crates.io-index"
2242+checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
2243+
2244+[[package]]
2245+name = "glob"
2246+version = "0.3.3"
2247+source = "registry+https://github.com/rust-lang/crates.io-index"
2248+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
2249+
2250+[[package]]
2251+name = "gloo-timers"
2252+version = "0.3.0"
2253+source = "registry+https://github.com/rust-lang/crates.io-index"
2254+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
2255+dependencies = [
2256+ "futures-channel",
2257+ "futures-core",
2258+ "js-sys",
2259+ "wasm-bindgen",
2260+]
2261+
2262+[[package]]
2263+name = "gloo-utils"
2264+version = "0.2.0"
2265+source = "registry+https://github.com/rust-lang/crates.io-index"
2266+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
2267+dependencies = [
2268+ "js-sys",
2269+ "serde",
2270+ "serde_json",
2271+ "wasm-bindgen",
2272+ "web-sys",
2273+]
2274+
2275+[[package]]
2276+name = "goblin"
2277+version = "0.8.2"
2278+source = "registry+https://github.com/rust-lang/crates.io-index"
2279+checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47"
2280+dependencies = [
2281+ "log",
2282+ "plain",
2283+ "scroll",
2284+]
2285+
2286+[[package]]
2287+name = "goblin"
2288+version = "0.9.3"
2289+source = "registry+https://github.com/rust-lang/crates.io-index"
2290+checksum = "daa0a64d21a7eb230583b4c5f4e23b7e4e57974f96620f42a7e75e08ae66d745"
2291+dependencies = [
2292+ "log",
2293+ "plain",
2294+ "scroll",
2295+]
2296+
2297+[[package]]
2298+name = "growable-bloom-filter"
2299+version = "2.1.1"
2300+source = "registry+https://github.com/rust-lang/crates.io-index"
2301+checksum = "d174ccb4ba660d431329e7f0797870d0a4281e36353ec4b4a3c5eab6c2cfb6f1"
2302+dependencies = [
2303+ "serde",
2304+ "serde_bytes",
2305+ "serde_derive",
2306+ "xxhash-rust",
2307+]
2308+
2309+[[package]]
2310+name = "h2"
2311+version = "0.4.5"
2312+source = "registry+https://github.com/rust-lang/crates.io-index"
2313+checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"
2314+dependencies = [
2315+ "atomic-waker",
2316+ "bytes",
2317+ "fnv",
2318+ "futures-core",
2319+ "futures-sink",
2320+ "http",
2321+ "indexmap",
2322+ "slab",
2323+ "tokio",
2324+ "tokio-util",
2325+ "tracing",
2326+]
2327+
2328+[[package]]
2329+name = "half"
2330+version = "2.4.1"
2331+source = "registry+https://github.com/rust-lang/crates.io-index"
2332+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
2333+dependencies = [
2334+ "cfg-if",
2335+ "crunchy",
2336+]
2337+
2338+[[package]]
2339+name = "hashbrown"
2340+version = "0.15.2"
2341+source = "registry+https://github.com/rust-lang/crates.io-index"
2342+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
2343+dependencies = [
2344+ "foldhash 0.1.5",
2345+]
2346+
2347+[[package]]
2348+name = "hashbrown"
2349+version = "0.16.1"
2350+source = "registry+https://github.com/rust-lang/crates.io-index"
2351+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
2352+dependencies = [
2353+ "allocator-api2",
2354+ "equivalent",
2355+ "foldhash 0.2.0",
2356+]
2357+
2358+[[package]]
2359+name = "hashlink"
2360+version = "0.10.0"
2361+source = "registry+https://github.com/rust-lang/crates.io-index"
2362+checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
2363+dependencies = [
2364+ "hashbrown 0.15.2",
2365+]
2366+
2367+[[package]]
2368+name = "headers"
2369+version = "0.4.1"
2370+source = "registry+https://github.com/rust-lang/crates.io-index"
2371+checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb"
2372+dependencies = [
2373+ "base64",
2374+ "bytes",
2375+ "headers-core",
2376+ "http",
2377+ "httpdate",
2378+ "mime",
2379+ "sha1",
2380+]
2381+
2382+[[package]]
2383+name = "headers-core"
2384+version = "0.3.0"
2385+source = "registry+https://github.com/rust-lang/crates.io-index"
2386+checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4"
2387+dependencies = [
2388+ "http",
2389+]
2390+
2391+[[package]]
2392+name = "heck"
2393+version = "0.5.0"
2394+source = "registry+https://github.com/rust-lang/crates.io-index"
2395+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
2396+
2397+[[package]]
2398+name = "hermit-abi"
2399+version = "0.3.9"
2400+source = "registry+https://github.com/rust-lang/crates.io-index"
2401+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
2402+
2403+[[package]]
2404+name = "hermit-abi"
2405+version = "0.5.2"
2406+source = "registry+https://github.com/rust-lang/crates.io-index"
2407+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
2408+
2409+[[package]]
2410+name = "hex"
2411+version = "0.4.3"
2412+source = "registry+https://github.com/rust-lang/crates.io-index"
2413+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
2414+
2415+[[package]]
2416+name = "hkdf"
2417+version = "0.12.4"
2418+source = "registry+https://github.com/rust-lang/crates.io-index"
2419+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
2420+dependencies = [
2421+ "hmac",
2422+]
2423+
2424+[[package]]
2425+name = "hmac"
2426+version = "0.12.1"
2427+source = "registry+https://github.com/rust-lang/crates.io-index"
2428+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
2429+dependencies = [
2430+ "digest",
2431+]
2432+
2433+[[package]]
2434+name = "hostname"
2435+version = "0.4.1"
2436+source = "registry+https://github.com/rust-lang/crates.io-index"
2437+checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65"
2438+dependencies = [
2439+ "cfg-if",
2440+ "libc",
2441+ "windows-link 0.1.1",
2442+]
2443+
2444+[[package]]
2445+name = "html5ever"
2446+version = "0.39.0"
2447+source = "registry+https://github.com/rust-lang/crates.io-index"
2448+checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8"
2449+dependencies = [
2450+ "log",
2451+ "markup5ever",
2452+]
2453+
2454+[[package]]
2455+name = "htmlescape"
2456+version = "0.3.1"
2457+source = "registry+https://github.com/rust-lang/crates.io-index"
2458+checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163"
2459+
2460+[[package]]
2461+name = "http"
2462+version = "1.3.1"
2463+source = "registry+https://github.com/rust-lang/crates.io-index"
2464+checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
2465+dependencies = [
2466+ "bytes",
2467+ "fnv",
2468+ "itoa",
2469+]
2470+
2471+[[package]]
2472+name = "http-auth"
2473+version = "0.1.10"
2474+source = "registry+https://github.com/rust-lang/crates.io-index"
2475+checksum = "150fa4a9462ef926824cf4519c84ed652ca8f4fbae34cb8af045b5cbcaf98822"
2476+dependencies = [
2477+ "memchr",
2478+]
2479+
2480+[[package]]
2481+name = "http-body"
2482+version = "1.0.1"
2483+source = "registry+https://github.com/rust-lang/crates.io-index"
2484+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
2485+dependencies = [
2486+ "bytes",
2487+ "http",
2488+]
2489+
2490+[[package]]
2491+name = "http-body-util"
2492+version = "0.1.2"
2493+source = "registry+https://github.com/rust-lang/crates.io-index"
2494+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
2495+dependencies = [
2496+ "bytes",
2497+ "futures-util",
2498+ "http",
2499+ "http-body",
2500+ "pin-project-lite",
2501+]
2502+
2503+[[package]]
2504+name = "httparse"
2505+version = "1.9.4"
2506+source = "registry+https://github.com/rust-lang/crates.io-index"
2507+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
2508+
2509+[[package]]
2510+name = "httpdate"
2511+version = "1.0.3"
2512+source = "registry+https://github.com/rust-lang/crates.io-index"
2513+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
2514+
2515+[[package]]
2516+name = "hyper"
2517+version = "1.7.0"
2518+source = "registry+https://github.com/rust-lang/crates.io-index"
2519+checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
2520+dependencies = [
2521+ "atomic-waker",
2522+ "bytes",
2523+ "futures-channel",
2524+ "futures-core",
2525+ "h2",
2526+ "http",
2527+ "http-body",
2528+ "httparse",
2529+ "httpdate",
2530+ "itoa",
2531+ "pin-project-lite",
2532+ "pin-utils",
2533+ "smallvec",
2534+ "tokio",
2535+ "want",
2536+]
2537+
2538+[[package]]
2539+name = "hyper-rustls"
2540+version = "0.27.2"
2541+source = "registry+https://github.com/rust-lang/crates.io-index"
2542+checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
2543+dependencies = [
2544+ "futures-util",
2545+ "http",
2546+ "hyper",
2547+ "hyper-util",
2548+ "rustls",
2549+ "rustls-pki-types",
2550+ "tokio",
2551+ "tokio-rustls",
2552+ "tower-service",
2553+]
2554+
2555+[[package]]
2556+name = "hyper-util"
2557+version = "0.1.16"
2558+source = "registry+https://github.com/rust-lang/crates.io-index"
2559+checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
2560+dependencies = [
2561+ "base64",
2562+ "bytes",
2563+ "futures-channel",
2564+ "futures-core",
2565+ "futures-util",
2566+ "http",
2567+ "http-body",
2568+ "hyper",
2569+ "ipnet",
2570+ "libc",
2571+ "percent-encoding",
2572+ "pin-project-lite",
2573+ "socket2 0.6.0",
2574+ "tokio",
2575+ "tower-service",
2576+ "tracing",
2577+]
2578+
2579+[[package]]
2580+name = "iana-time-zone"
2581+version = "0.1.60"
2582+source = "registry+https://github.com/rust-lang/crates.io-index"
2583+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
2584+dependencies = [
2585+ "android_system_properties",
2586+ "core-foundation-sys",
2587+ "iana-time-zone-haiku",
2588+ "js-sys",
2589+ "wasm-bindgen",
2590+ "windows-core 0.52.0",
2591+]
2592+
2593+[[package]]
2594+name = "iana-time-zone-haiku"
2595+version = "0.1.2"
2596+source = "registry+https://github.com/rust-lang/crates.io-index"
2597+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
2598+dependencies = [
2599+ "cc",
2600+]
2601+
2602+[[package]]
2603+name = "icu_collections"
2604+version = "1.5.0"
2605+source = "registry+https://github.com/rust-lang/crates.io-index"
2606+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
2607+dependencies = [
2608+ "displaydoc",
2609+ "yoke",
2610+ "zerofrom",
2611+ "zerovec",
2612+]
2613+
2614+[[package]]
2615+name = "icu_locid"
2616+version = "1.5.0"
2617+source = "registry+https://github.com/rust-lang/crates.io-index"
2618+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
2619+dependencies = [
2620+ "displaydoc",
2621+ "litemap",
2622+ "tinystr",
2623+ "writeable",
2624+ "zerovec",
2625+]
2626+
2627+[[package]]
2628+name = "icu_locid_transform"
2629+version = "1.5.0"
2630+source = "registry+https://github.com/rust-lang/crates.io-index"
2631+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
2632+dependencies = [
2633+ "displaydoc",
2634+ "icu_locid",
2635+ "icu_locid_transform_data",
2636+ "icu_provider",
2637+ "tinystr",
2638+ "zerovec",
2639+]
2640+
2641+[[package]]
2642+name = "icu_locid_transform_data"
2643+version = "1.5.0"
2644+source = "registry+https://github.com/rust-lang/crates.io-index"
2645+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
2646+
2647+[[package]]
2648+name = "icu_normalizer"
2649+version = "1.5.0"
2650+source = "registry+https://github.com/rust-lang/crates.io-index"
2651+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
2652+dependencies = [
2653+ "displaydoc",
2654+ "icu_collections",
2655+ "icu_normalizer_data",
2656+ "icu_properties",
2657+ "icu_provider",
2658+ "smallvec",
2659+ "utf16_iter",
2660+ "utf8_iter",
2661+ "write16",
2662+ "zerovec",
2663+]
2664+
2665+[[package]]
2666+name = "icu_normalizer_data"
2667+version = "1.5.0"
2668+source = "registry+https://github.com/rust-lang/crates.io-index"
2669+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
2670+
2671+[[package]]
2672+name = "icu_properties"
2673+version = "1.5.1"
2674+source = "registry+https://github.com/rust-lang/crates.io-index"
2675+checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
2676+dependencies = [
2677+ "displaydoc",
2678+ "icu_collections",
2679+ "icu_locid_transform",
2680+ "icu_properties_data",
2681+ "icu_provider",
2682+ "tinystr",
2683+ "zerovec",
2684+]
2685+
2686+[[package]]
2687+name = "icu_properties_data"
2688+version = "1.5.0"
2689+source = "registry+https://github.com/rust-lang/crates.io-index"
2690+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
2691+
2692+[[package]]
2693+name = "icu_provider"
2694+version = "1.5.0"
2695+source = "registry+https://github.com/rust-lang/crates.io-index"
2696+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
2697+dependencies = [
2698+ "displaydoc",
2699+ "icu_locid",
2700+ "icu_provider_macros",
2701+ "stable_deref_trait",
2702+ "tinystr",
2703+ "writeable",
2704+ "yoke",
2705+ "zerofrom",
2706+ "zerovec",
2707+]
2708+
2709+[[package]]
2710+name = "icu_provider_macros"
2711+version = "1.5.0"
2712+source = "registry+https://github.com/rust-lang/crates.io-index"
2713+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
2714+dependencies = [
2715+ "proc-macro2",
2716+ "quote",
2717+ "syn 2.0.101",
2718+]
2719+
2720+[[package]]
2721+name = "id-arena"
2722+version = "2.3.0"
2723+source = "registry+https://github.com/rust-lang/crates.io-index"
2724+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
2725+
2726+[[package]]
2727+name = "ident_case"
2728+version = "1.0.1"
2729+source = "registry+https://github.com/rust-lang/crates.io-index"
2730+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
2731+
2732+[[package]]
2733+name = "idna"
2734+version = "1.1.0"
2735+source = "registry+https://github.com/rust-lang/crates.io-index"
2736+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
2737+dependencies = [
2738+ "idna_adapter",
2739+ "smallvec",
2740+ "utf8_iter",
2741+]
2742+
2743+[[package]]
2744+name = "idna_adapter"
2745+version = "1.2.0"
2746+source = "registry+https://github.com/rust-lang/crates.io-index"
2747+checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
2748+dependencies = [
2749+ "icu_normalizer",
2750+ "icu_properties",
2751+]
2752+
2753+[[package]]
2754+name = "image"
2755+version = "0.25.9"
2756+source = "registry+https://github.com/rust-lang/crates.io-index"
2757+checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a"
2758+dependencies = [
2759+ "bytemuck",
2760+ "byteorder-lite",
2761+ "moxcms",
2762+ "num-traits",
2763+]
2764+
2765+[[package]]
2766+name = "imbl"
2767+version = "6.1.0"
2768+source = "registry+https://github.com/rust-lang/crates.io-index"
2769+checksum = "0fade8ae6828627ad1fa094a891eccfb25150b383047190a3648d66d06186501"
2770+dependencies = [
2771+ "archery",
2772+ "bitmaps",
2773+ "imbl-sized-chunks",
2774+ "rand_core 0.9.3",
2775+ "rand_xoshiro",
2776+ "serde",
2777+ "version_check",
2778+]
2779+
2780+[[package]]
2781+name = "imbl-sized-chunks"
2782+version = "0.1.3"
2783+source = "registry+https://github.com/rust-lang/crates.io-index"
2784+checksum = "8f4241005618a62f8d57b2febd02510fb96e0137304728543dfc5fd6f052c22d"
2785+dependencies = [
2786+ "bitmaps",
2787+]
2788+
2789+[[package]]
2790+name = "impartial-ord"
2791+version = "1.0.6"
2792+source = "registry+https://github.com/rust-lang/crates.io-index"
2793+checksum = "0ab604ee7085efba6efc65e4ebca0e9533e3aff6cb501d7d77b211e3a781c6d5"
2794+dependencies = [
2795+ "proc-macro2",
2796+ "quote",
2797+ "syn 2.0.101",
2798+]
2799+
2800+[[package]]
2801+name = "include_dir"
2802+version = "0.7.4"
2803+source = "registry+https://github.com/rust-lang/crates.io-index"
2804+checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd"
2805+dependencies = [
2806+ "include_dir_macros",
2807+]
2808+
2809+[[package]]
2810+name = "include_dir_macros"
2811+version = "0.7.4"
2812+source = "registry+https://github.com/rust-lang/crates.io-index"
2813+checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"
2814+dependencies = [
2815+ "proc-macro2",
2816+ "quote",
2817+]
2818+
2819+[[package]]
2820+name = "indenter"
2821+version = "0.3.3"
2822+source = "registry+https://github.com/rust-lang/crates.io-index"
2823+checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
2824+
2825+[[package]]
2826+name = "indexmap"
2827+version = "2.12.1"
2828+source = "registry+https://github.com/rust-lang/crates.io-index"
2829+checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
2830+dependencies = [
2831+ "equivalent",
2832+ "hashbrown 0.16.1",
2833+ "serde",
2834+ "serde_core",
2835+]
2836+
2837+[[package]]
2838+name = "indoc"
2839+version = "2.0.7"
2840+source = "registry+https://github.com/rust-lang/crates.io-index"
2841+checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
2842+dependencies = [
2843+ "rustversion",
2844+]
2845+
2846+[[package]]
2847+name = "inout"
2848+version = "0.1.3"
2849+source = "registry+https://github.com/rust-lang/crates.io-index"
2850+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
2851+dependencies = [
2852+ "block-padding",
2853+ "generic-array",
2854+]
2855+
2856+[[package]]
2857+name = "insta"
2858+version = "1.44.1"
2859+source = "registry+https://github.com/rust-lang/crates.io-index"
2860+checksum = "e8732d3774162a0851e3f2b150eb98f31a9885dd75985099421d393385a01dfd"
2861+dependencies = [
2862+ "console",
2863+ "once_cell",
2864+ "pest",
2865+ "pest_derive",
2866+ "serde",
2867+ "similar",
2868+]
2869+
2870+[[package]]
2871+name = "instability"
2872+version = "0.3.7"
2873+source = "registry+https://github.com/rust-lang/crates.io-index"
2874+checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d"
2875+dependencies = [
2876+ "darling 0.20.10",
2877+ "indoc",
2878+ "proc-macro2",
2879+ "quote",
2880+ "syn 2.0.101",
2881+]
2882+
2883+[[package]]
2884+name = "inventory"
2885+version = "0.3.24"
2886+source = "registry+https://github.com/rust-lang/crates.io-index"
2887+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"
2888+dependencies = [
2889+ "rustversion",
2890+]
2891+
2892+[[package]]
2893+name = "ipnet"
2894+version = "2.9.0"
2895+source = "registry+https://github.com/rust-lang/crates.io-index"
2896+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
2897+
2898+[[package]]
2899+name = "iri-string"
2900+version = "0.7.8"
2901+source = "registry+https://github.com/rust-lang/crates.io-index"
2902+checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
2903+dependencies = [
2904+ "memchr",
2905+ "serde",
2906+]
2907+
2908+[[package]]
2909+name = "is-terminal"
2910+version = "0.4.16"
2911+source = "registry+https://github.com/rust-lang/crates.io-index"
2912+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
2913+dependencies = [
2914+ "hermit-abi 0.5.2",
2915+ "libc",
2916+ "windows-sys 0.59.0",
2917+]
2918+
2919+[[package]]
2920+name = "itertools"
2921+version = "0.10.5"
2922+source = "registry+https://github.com/rust-lang/crates.io-index"
2923+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
2924+dependencies = [
2925+ "either",
2926+]
2927+
2928+[[package]]
2929+name = "itertools"
2930+version = "0.14.0"
2931+source = "registry+https://github.com/rust-lang/crates.io-index"
2932+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
2933+dependencies = [
2934+ "either",
2935+]
2936+
2937+[[package]]
2938+name = "itoa"
2939+version = "1.0.11"
2940+source = "registry+https://github.com/rust-lang/crates.io-index"
2941+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
2942+
2943+[[package]]
2944+name = "jni"
2945+version = "0.21.1"
2946+source = "registry+https://github.com/rust-lang/crates.io-index"
2947+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
2948+dependencies = [
2949+ "cesu8",
2950+ "cfg-if",
2951+ "combine",
2952+ "jni-sys",
2953+ "log",
2954+ "thiserror 1.0.63",
2955+ "walkdir",
2956+ "windows-sys 0.45.0",
2957+]
2958+
2959+[[package]]
2960+name = "jni-sys"
2961+version = "0.3.0"
2962+source = "registry+https://github.com/rust-lang/crates.io-index"
2963+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
2964+
2965+[[package]]
2966+name = "jobserver"
2967+version = "0.1.32"
2968+source = "registry+https://github.com/rust-lang/crates.io-index"
2969+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
2970+dependencies = [
2971+ "libc",
2972+]
2973+
2974+[[package]]
2975+name = "js-sys"
2976+version = "0.3.91"
2977+source = "registry+https://github.com/rust-lang/crates.io-index"
2978+checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
2979+dependencies = [
2980+ "once_cell",
2981+ "wasm-bindgen",
2982+]
2983+
2984+[[package]]
2985+name = "js_int"
2986+version = "0.2.2"
2987+source = "registry+https://github.com/rust-lang/crates.io-index"
2988+checksum = "d937f95470b270ce8b8950207715d71aa8e153c0d44c6684d59397ed4949160a"
2989+dependencies = [
2990+ "serde",
2991+]
2992+
2993+[[package]]
2994+name = "js_option"
2995+version = "0.2.0"
2996+source = "registry+https://github.com/rust-lang/crates.io-index"
2997+checksum = "c7dd3e281add16813cf673bf74a32249b0aa0d1c8117519a17b3ada5e8552b3c"
2998+dependencies = [
2999+ "serde_core",
3000+]
3001+
3002+[[package]]
3003+name = "json-structural-diff"
3004+version = "0.2.0"
3005+source = "registry+https://github.com/rust-lang/crates.io-index"
3006+checksum = "e878e36a8a44c158505c2c818abdc1350413ad83dcb774a0459f6a7ef2b65cbf"
3007+dependencies = [
3008+ "difflib",
3009+ "regex",
3010+ "serde_json",
3011+]
3012+
3013+[[package]]
3014+name = "jvm-getter"
3015+version = "0.1.0"
3016+source = "registry+https://github.com/rust-lang/crates.io-index"
3017+checksum = "6a9353d43a802ba22de0de749f4aa51f3414a6a9b5037559eaac65584db65218"
3018+dependencies = [
3019+ "goblin 0.9.3",
3020+ "jni-sys",
3021+ "libc",
3022+ "windows-sys 0.60.2",
3023+]
3024+
3025+[[package]]
3026+name = "kasuari"
3027+version = "0.4.12"
3028+source = "registry+https://github.com/rust-lang/crates.io-index"
3029+checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
3030+dependencies = [
3031+ "hashbrown 0.16.1",
3032+ "portable-atomic",
3033+ "thiserror 2.0.18",
3034+]
3035+
3036+[[package]]
3037+name = "konst"
3038+version = "0.4.3"
3039+source = "registry+https://github.com/rust-lang/crates.io-index"
3040+checksum = "f660d5f887e3562f9ab6f4a14988795b694099d66b4f5dedc02d197ba9becb1d"
3041+dependencies = [
3042+ "const_panic",
3043+ "typewit",
3044+]
3045+
3046+[[package]]
3047+name = "lab"
3048+version = "0.11.0"
3049+source = "registry+https://github.com/rust-lang/crates.io-index"
3050+checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"
3051+
3052+[[package]]
3053+name = "language-tags"
3054+version = "0.3.2"
3055+source = "registry+https://github.com/rust-lang/crates.io-index"
3056+checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
3057+dependencies = [
3058+ "serde",
3059+]
3060+
3061+[[package]]
3062+name = "lazy_static"
3063+version = "1.5.0"
3064+source = "registry+https://github.com/rust-lang/crates.io-index"
3065+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
3066+
3067+[[package]]
3068+name = "leb128fmt"
3069+version = "0.1.0"
3070+source = "registry+https://github.com/rust-lang/crates.io-index"
3071+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
3072+
3073+[[package]]
3074+name = "levenshtein_automata"
3075+version = "0.2.1"
3076+source = "registry+https://github.com/rust-lang/crates.io-index"
3077+checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25"
3078+
3079+[[package]]
3080+name = "libc"
3081+version = "0.2.175"
3082+source = "registry+https://github.com/rust-lang/crates.io-index"
3083+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
3084+
3085+[[package]]
3086+name = "libm"
3087+version = "0.2.15"
3088+source = "registry+https://github.com/rust-lang/crates.io-index"
3089+checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
3090+
3091+[[package]]
3092+name = "libredox"
3093+version = "0.1.3"
3094+source = "registry+https://github.com/rust-lang/crates.io-index"
3095+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
3096+dependencies = [
3097+ "bitflags 2.10.0",
3098+ "libc",
3099+]
3100+
3101+[[package]]
3102+name = "libsqlite3-sys"
3103+version = "0.35.0"
3104+source = "registry+https://github.com/rust-lang/crates.io-index"
3105+checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f"
3106+dependencies = [
3107+ "cc",
3108+ "pkg-config",
3109+ "vcpkg",
3110+]
3111+
3112+[[package]]
3113+name = "line-clipping"
3114+version = "0.3.5"
3115+source = "registry+https://github.com/rust-lang/crates.io-index"
3116+checksum = "5f4de44e98ddbf09375cbf4d17714d18f39195f4f4894e8524501726fd9a8a4a"
3117+dependencies = [
3118+ "bitflags 2.10.0",
3119+]
3120+
3121+[[package]]
3122+name = "linux-raw-sys"
3123+version = "0.9.4"
3124+source = "registry+https://github.com/rust-lang/crates.io-index"
3125+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
3126+
3127+[[package]]
3128+name = "litemap"
3129+version = "0.7.4"
3130+source = "registry+https://github.com/rust-lang/crates.io-index"
3131+checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
3132+
3133+[[package]]
3134+name = "litrs"
3135+version = "1.0.0"
3136+source = "registry+https://github.com/rust-lang/crates.io-index"
3137+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
3138+
3139+[[package]]
3140+name = "lock_api"
3141+version = "0.4.12"
3142+source = "registry+https://github.com/rust-lang/crates.io-index"
3143+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
3144+dependencies = [
3145+ "autocfg",
3146+ "scopeguard",
3147+]
3148+
3149+[[package]]
3150+name = "log"
3151+version = "0.4.27"
3152+source = "registry+https://github.com/rust-lang/crates.io-index"
3153+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
3154+
3155+[[package]]
3156+name = "log-panics"
3157+version = "2.1.0"
3158+source = "registry+https://github.com/rust-lang/crates.io-index"
3159+checksum = "68f9dd8546191c1850ecf67d22f5ff00a935b890d0e84713159a55495cc2ac5f"
3160+dependencies = [
3161+ "backtrace",
3162+ "log",
3163+]
3164+
3165+[[package]]
3166+name = "loom"
3167+version = "0.7.2"
3168+source = "registry+https://github.com/rust-lang/crates.io-index"
3169+checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
3170+dependencies = [
3171+ "cfg-if",
3172+ "generator",
3173+ "scoped-tls",
3174+ "tracing",
3175+ "tracing-subscriber",
3176+]
3177+
3178+[[package]]
3179+name = "lru"
3180+version = "0.16.4"
3181+source = "registry+https://github.com/rust-lang/crates.io-index"
3182+checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39"
3183+dependencies = [
3184+ "hashbrown 0.16.1",
3185+]
3186+
3187+[[package]]
3188+name = "lru-slab"
3189+version = "0.1.2"
3190+source = "registry+https://github.com/rust-lang/crates.io-index"
3191+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
3192+
3193+[[package]]
3194+name = "lz4_flex"
3195+version = "0.13.1"
3196+source = "registry+https://github.com/rust-lang/crates.io-index"
3197+checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e"
3198+
3199+[[package]]
3200+name = "mac_address"
3201+version = "1.1.8"
3202+source = "registry+https://github.com/rust-lang/crates.io-index"
3203+checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303"
3204+dependencies = [
3205+ "nix 0.29.0",
3206+ "winapi",
3207+]
3208+
3209+[[package]]
3210+name = "macroific"
3211+version = "2.0.0"
3212+source = "registry+https://github.com/rust-lang/crates.io-index"
3213+checksum = "89f276537b4b8f981bf1c13d79470980f71134b7bdcc5e6e911e910e556b0285"
3214+dependencies = [
3215+ "macroific_attr_parse",
3216+ "macroific_core",
3217+ "macroific_macro",
3218+]
3219+
3220+[[package]]
3221+name = "macroific_attr_parse"
3222+version = "2.0.0"
3223+source = "registry+https://github.com/rust-lang/crates.io-index"
3224+checksum = "ad4023761b45fcd36abed8fb7ae6a80456b0a38102d55e89a57d9a594a236be9"
3225+dependencies = [
3226+ "proc-macro2",
3227+ "quote",
3228+ "sealed",
3229+ "syn 2.0.101",
3230+]
3231+
3232+[[package]]
3233+name = "macroific_core"
3234+version = "2.0.0"
3235+source = "registry+https://github.com/rust-lang/crates.io-index"
3236+checksum = "d0a7594d3c14916fa55bef7e9d18c5daa9ed410dd37504251e4b75bbdeec33e3"
3237+dependencies = [
3238+ "proc-macro2",
3239+ "quote",
3240+ "sealed",
3241+ "syn 2.0.101",
3242+]
3243+
3244+[[package]]
3245+name = "macroific_macro"
3246+version = "2.0.0"
3247+source = "registry+https://github.com/rust-lang/crates.io-index"
3248+checksum = "4da6f2ed796261b0a74e2b52b42c693bb6dee1effba3a482c49592659f824b3b"
3249+dependencies = [
3250+ "macroific_attr_parse",
3251+ "macroific_core",
3252+ "proc-macro2",
3253+ "quote",
3254+ "syn 2.0.101",
3255+]
3256+
3257+[[package]]
3258+name = "maplit"
3259+version = "1.0.2"
3260+source = "registry+https://github.com/rust-lang/crates.io-index"
3261+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
3262+
3263+[[package]]
3264+name = "markup5ever"
3265+version = "0.39.0"
3266+source = "registry+https://github.com/rust-lang/crates.io-index"
3267+checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de"
3268+dependencies = [
3269+ "log",
3270+ "tendril",
3271+ "web_atoms",
3272+]
3273+
3274+[[package]]
3275+name = "matchers"
3276+version = "0.2.0"
3277+source = "registry+https://github.com/rust-lang/crates.io-index"
3278+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
3279+dependencies = [
3280+ "regex-automata",
3281+]
3282+
3283+[[package]]
3284+name = "matchit"
3285+version = "0.8.4"
3286+source = "registry+https://github.com/rust-lang/crates.io-index"
3287+checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
3288+
3289+[[package]]
3290+name = "matrix-pickle"
3291+version = "0.2.1"
3292+source = "registry+https://github.com/rust-lang/crates.io-index"
3293+checksum = "4e2551de3bba2cc65b52dc6b268df6114011fe118ac24870fbcf1b35537bd721"
3294+dependencies = [
3295+ "matrix-pickle-derive",
3296+ "thiserror 1.0.63",
3297+]
3298+
3299+[[package]]
3300+name = "matrix-pickle-derive"
3301+version = "0.2.1"
3302+source = "registry+https://github.com/rust-lang/crates.io-index"
3303+checksum = "f75de44c3120d78e978adbcf6d453b20ba011f3c46363e52d1dbbc72f545e9fb"
3304+dependencies = [
3305+ "proc-macro-crate",
3306+ "proc-macro-error2",
3307+ "proc-macro2",
3308+ "quote",
3309+ "syn 2.0.101",
3310+]
3311+
3312+[[package]]
3313+name = "matrix-sdk"
3314+version = "0.18.0"
3315+dependencies = [
3316+ "anyhow",
3317+ "anymap2",
3318+ "aquamarine",
3319+ "as_variant",
3320+ "assert-json-diff",
3321+ "assert_matches",
3322+ "assert_matches2",
3323+ "async-channel",
3324+ "async-once-cell",
3325+ "async-stream",
3326+ "async-trait",
3327+ "axum",
3328+ "backon",
3329+ "bytes",
3330+ "bytesize",
3331+ "cfg-if",
3332+ "ctor",
3333+ "dirs",
3334+ "event-listener",
3335+ "eyeball",
3336+ "eyeball-im",
3337+ "eyre",
3338+ "futures-core",
3339+ "futures-executor",
3340+ "futures-util",
3341+ "gloo-timers",
3342+ "http",
3343+ "imbl",
3344+ "indexmap",
3345+ "insta",
3346+ "itertools 0.14.0",
3347+ "js_int",
3348+ "language-tags",
3349+ "matrix-sdk-base",
3350+ "matrix-sdk-common",
3351+ "matrix-sdk-ffi-macros",
3352+ "matrix-sdk-indexeddb",
3353+ "matrix-sdk-search",
3354+ "matrix-sdk-sqlite",
3355+ "matrix-sdk-test",
3356+ "matrix-sdk-test-utils",
3357+ "mime",
3358+ "mime2ext",
3359+ "oauth2",
3360+ "oauth2-reqwest",
3361+ "percent-encoding",
3362+ "pin-project-lite",
3363+ "proptest",
3364+ "rand 0.10.1",
3365+ "reqwest",
3366+ "ruma",
3367+ "rustls",
3368+ "rustls-native-certs",
3369+ "rustls-pki-types",
3370+ "serde",
3371+ "serde_html_form",
3372+ "serde_json",
3373+ "serde_urlencoded",
3374+ "sha2",
3375+ "similar-asserts",
3376+ "stream_assert",
3377+ "tempfile",
3378+ "thiserror 2.0.18",
3379+ "tokio",
3380+ "tokio-stream",
3381+ "tokio-test",
3382+ "tokio-util",
3383+ "tower",
3384+ "tracing",
3385+ "tracing-subscriber",
3386+ "uniffi",
3387+ "url",
3388+ "urlencoding",
3389+ "uuid",
3390+ "vodozemac",
3391+ "wasm-bindgen-test",
3392+ "webpki-roots",
3393+ "wiremock",
3394+ "zeroize",
3395+]
3396+
3397+[[package]]
3398+name = "matrix-sdk-base"
3399+version = "0.18.0"
3400+dependencies = [
3401+ "anyhow",
3402+ "as_variant",
3403+ "assert_matches",
3404+ "assert_matches2",
3405+ "assign",
3406+ "async-trait",
3407+ "bitflags 2.10.0",
3408+ "decancer",
3409+ "eyeball",
3410+ "eyeball-im",
3411+ "futures-executor",
3412+ "futures-util",
3413+ "getrandom 0.3.4",
3414+ "gloo-timers",
3415+ "growable-bloom-filter",
3416+ "http",
3417+ "matrix-sdk-common",
3418+ "matrix-sdk-crypto",
3419+ "matrix-sdk-store-encryption",
3420+ "matrix-sdk-test",
3421+ "matrix-sdk-test-utils",
3422+ "proptest",
3423+ "regex",
3424+ "ruma",
3425+ "serde",
3426+ "serde_json",
3427+ "similar-asserts",
3428+ "stream_assert",
3429+ "thiserror 2.0.18",
3430+ "tokio",
3431+ "tracing",
3432+ "unicode-normalization",
3433+ "uniffi",
3434+ "wasm-bindgen-test",
3435+]
3436+
3437+[[package]]
3438+name = "matrix-sdk-common"
3439+version = "0.18.0"
3440+dependencies = [
3441+ "assert_matches",
3442+ "assert_matches2",
3443+ "eyeball-im",
3444+ "futures-core",
3445+ "futures-executor",
3446+ "futures-util",
3447+ "getrandom 0.3.4",
3448+ "getrandom 0.4.2",
3449+ "gloo-timers",
3450+ "imbl",
3451+ "insta",
3452+ "js-sys",
3453+ "matrix-sdk-test-macros",
3454+ "matrix-sdk-test-utils",
3455+ "proptest",
3456+ "ruma",
3457+ "serde",
3458+ "serde_json",
3459+ "thiserror 2.0.18",
3460+ "tokio",
3461+ "tracing",
3462+ "tracing-subscriber",
3463+ "uniffi",
3464+ "wasm-bindgen",
3465+ "wasm-bindgen-futures",
3466+ "wasm-bindgen-test",
3467+ "web-sys",
3468+]
3469+
3470+[[package]]
3471+name = "matrix-sdk-crypto"
3472+version = "0.18.0"
3473+dependencies = [
3474+ "aes",
3475+ "anyhow",
3476+ "aquamarine",
3477+ "as_variant",
3478+ "assert_matches",
3479+ "assert_matches2",
3480+ "async-trait",
3481+ "bs58",
3482+ "byteorder",
3483+ "cfg-if",
3484+ "ctr",
3485+ "eyeball",
3486+ "futures-core",
3487+ "futures-executor",
3488+ "futures-util",
3489+ "hkdf",
3490+ "hmac",
3491+ "http",
3492+ "insta",
3493+ "itertools 0.14.0",
3494+ "js_option",
3495+ "matrix-sdk-common",
3496+ "matrix-sdk-qrcode",
3497+ "matrix-sdk-test",
3498+ "matrix-sdk-test-utils",
3499+ "pbkdf2",
3500+ "proptest",
3501+ "rand 0.10.1",
3502+ "rmp-serde",
3503+ "ruma",
3504+ "serde",
3505+ "serde_json",
3506+ "sha2",
3507+ "similar-asserts",
3508+ "stream_assert",
3509+ "subtle",
3510+ "thiserror 2.0.18",
3511+ "time",
3512+ "tokio",
3513+ "tokio-stream",
3514+ "tracing",
3515+ "ulid",
3516+ "uniffi",
3517+ "url",
3518+ "vodozemac",
3519+ "zeroize",
3520+]
3521+
3522+[[package]]
3523+name = "matrix-sdk-crypto-ffi"
3524+version = "0.1.0"
3525+dependencies = [
3526+ "anyhow",
3527+ "assert_matches2",
3528+ "futures-util",
3529+ "hmac",
3530+ "http",
3531+ "js_int",
3532+ "matrix-sdk-common",
3533+ "matrix-sdk-crypto",
3534+ "matrix-sdk-ffi-macros",
3535+ "matrix-sdk-sqlite",
3536+ "pbkdf2",
3537+ "rand 0.10.1",
3538+ "ruma",
3539+ "serde",
3540+ "serde_json",
3541+ "sha2",
3542+ "tempfile",
3543+ "thiserror 2.0.18",
3544+ "tokio",
3545+ "tracing-subscriber",
3546+ "uniffi",
3547+ "vergen-gitcl",
3548+ "vodozemac",
3549+ "zeroize",
3550+]
3551+
3552+[[package]]
3553+name = "matrix-sdk-ffi"
3554+version = "0.18.0"
3555+dependencies = [
3556+ "anyhow",
3557+ "async-compat",
3558+ "chrono",
3559+ "console_error_panic_hook",
3560+ "extension-trait",
3561+ "eyeball-im",
3562+ "futures-executor",
3563+ "futures-util",
3564+ "jni",
3565+ "jvm-getter",
3566+ "language-tags",
3567+ "log-panics",
3568+ "matrix-sdk",
3569+ "matrix-sdk-base",
3570+ "matrix-sdk-common",
3571+ "matrix-sdk-ffi-macros",
3572+ "matrix-sdk-ui",
3573+ "mime",
3574+ "oauth2",
3575+ "once_cell",
3576+ "paranoid-android",
3577+ "ruma",
3578+ "rustls-platform-verifier",
3579+ "sentry",
3580+ "sentry-tracing",
3581+ "serde",
3582+ "serde_json",
3583+ "similar-asserts",
3584+ "tempfile",
3585+ "thiserror 2.0.18",
3586+ "tokio",
3587+ "tracing",
3588+ "tracing-appender",
3589+ "tracing-core",
3590+ "tracing-subscriber",
3591+ "uniffi",
3592+ "url",
3593+ "uuid",
3594+ "vergen-gitcl",
3595+ "zeroize",
3596+]
3597+
3598+[[package]]
3599+name = "matrix-sdk-ffi-macros"
3600+version = "0.7.0"
3601+dependencies = [
3602+ "proc-macro2",
3603+ "quote",
3604+ "syn 2.0.101",
3605+]
3606+
3607+[[package]]
3608+name = "matrix-sdk-indexeddb"
3609+version = "0.18.0"
3610+dependencies = [
3611+ "assert_matches",
3612+ "assert_matches2",
3613+ "async-trait",
3614+ "base64",
3615+ "futures-util",
3616+ "getrandom 0.4.2",
3617+ "gloo-timers",
3618+ "gloo-utils",
3619+ "growable-bloom-filter",
3620+ "hkdf",
3621+ "js-sys",
3622+ "matrix-sdk-base",
3623+ "matrix-sdk-common",
3624+ "matrix-sdk-crypto",
3625+ "matrix-sdk-store-encryption",
3626+ "matrix-sdk-test",
3627+ "matrix_indexed_db_futures",
3628+ "rand 0.10.1",
3629+ "rmp-serde",
3630+ "ruma",
3631+ "serde",
3632+ "serde-wasm-bindgen",
3633+ "serde_json",
3634+ "sha2",
3635+ "thiserror 2.0.18",
3636+ "tokio",
3637+ "tracing",
3638+ "tracing-subscriber",
3639+ "uuid",
3640+ "wasm-bindgen",
3641+ "wasm-bindgen-test",
3642+ "web-sys",
3643+ "zeroize",
3644+]
3645+
3646+[[package]]
3647+name = "matrix-sdk-integration-testing"
3648+version = "0.1.0"
3649+dependencies = [
3650+ "anyhow",
3651+ "assert_matches",
3652+ "assert_matches2",
3653+ "assign",
3654+ "eyeball",
3655+ "eyeball-im",
3656+ "futures",
3657+ "futures-core",
3658+ "futures-util",
3659+ "http",
3660+ "json-structural-diff",
3661+ "matrix-sdk",
3662+ "matrix-sdk-base",
3663+ "matrix-sdk-common",
3664+ "matrix-sdk-test",
3665+ "matrix-sdk-test-utils",
3666+ "matrix-sdk-ui",
3667+ "rand 0.10.1",
3668+ "reqwest",
3669+ "serde_json",
3670+ "similar-asserts",
3671+ "stream_assert",
3672+ "tempfile",
3673+ "tokio",
3674+ "tracing",
3675+ "wiremock",
3676+]
3677+
3678+[[package]]
3679+name = "matrix-sdk-qrcode"
3680+version = "0.18.0"
3681+dependencies = [
3682+ "byteorder",
3683+ "image",
3684+ "qrcode",
3685+ "ruma",
3686+ "thiserror 2.0.18",
3687+ "vodozemac",
3688+]
3689+
3690+[[package]]
3691+name = "matrix-sdk-search"
3692+version = "0.18.0"
3693+dependencies = [
3694+ "aes",
3695+ "byteorder",
3696+ "ctr",
3697+ "hkdf",
3698+ "hmac",
3699+ "matrix-sdk-test",
3700+ "pbkdf2",
3701+ "rand 0.10.1",
3702+ "ruma",
3703+ "sha2",
3704+ "tantivy",
3705+ "tempfile",
3706+ "thiserror 2.0.18",
3707+ "tracing",
3708+ "zeroize",
3709+]
3710+
3711+[[package]]
3712+name = "matrix-sdk-sqlite"
3713+version = "0.18.0"
3714+dependencies = [
3715+ "as_variant",
3716+ "assert_matches",
3717+ "async-trait",
3718+ "deadpool 0.13.0",
3719+ "deadpool-sync",
3720+ "glob",
3721+ "itertools 0.14.0",
3722+ "matrix-sdk-base",
3723+ "matrix-sdk-common",
3724+ "matrix-sdk-crypto",
3725+ "matrix-sdk-store-encryption",
3726+ "matrix-sdk-test",
3727+ "matrix-sdk-test-utils",
3728+ "num_cpus",
3729+ "rmp-serde",
3730+ "ruma",
3731+ "rusqlite",
3732+ "serde",
3733+ "serde_json",
3734+ "serde_path_to_error",
3735+ "similar-asserts",
3736+ "tempfile",
3737+ "thiserror 2.0.18",
3738+ "tokio",
3739+ "tracing",
3740+ "vodozemac",
3741+ "zeroize",
3742+]
3743+
3744+[[package]]
3745+name = "matrix-sdk-store-encryption"
3746+version = "0.18.0"
3747+dependencies = [
3748+ "anyhow",
3749+ "base64",
3750+ "blake3",
3751+ "chacha20poly1305",
3752+ "getrandom 0.2.15",
3753+ "getrandom 0.4.2",
3754+ "hmac",
3755+ "pbkdf2",
3756+ "rand 0.10.1",
3757+ "rmp-serde",
3758+ "serde",
3759+ "serde_json",
3760+ "sha2",
3761+ "thiserror 2.0.18",
3762+ "zeroize",
3763+]
3764+
3765+[[package]]
3766+name = "matrix-sdk-test"
3767+version = "0.18.0"
3768+dependencies = [
3769+ "as_variant",
3770+ "ctor",
3771+ "getrandom 0.4.2",
3772+ "http",
3773+ "insta",
3774+ "matrix-sdk-common",
3775+ "matrix-sdk-test-macros",
3776+ "ruma",
3777+ "serde",
3778+ "serde_json",
3779+ "sha2",
3780+ "tokio",
3781+ "tracing-subscriber",
3782+ "vodozemac",
3783+ "wasm-bindgen-test",
3784+ "wiremock",
3785+]
3786+
3787+[[package]]
3788+name = "matrix-sdk-test-macros"
3789+version = "0.18.0"
3790+dependencies = [
3791+ "quote",
3792+ "syn 2.0.101",
3793+]
3794+
3795+[[package]]
3796+name = "matrix-sdk-test-utils"
3797+version = "0.18.0"
3798+dependencies = [
3799+ "ctor",
3800+ "tracing-subscriber",
3801+]
3802+
3803+[[package]]
3804+name = "matrix-sdk-ui"
3805+version = "0.18.0"
3806+dependencies = [
3807+ "anyhow",
3808+ "as_variant",
3809+ "assert-json-diff",
3810+ "assert_matches",
3811+ "assert_matches2",
3812+ "async-rx",
3813+ "async-stream",
3814+ "async_cell",
3815+ "bitflags 2.10.0",
3816+ "chrono",
3817+ "emojis",
3818+ "eyeball",
3819+ "eyeball-im",
3820+ "eyeball-im-util",
3821+ "futures-core",
3822+ "futures-util",
3823+ "fuzzy-matcher",
3824+ "growable-bloom-filter",
3825+ "imbl",
3826+ "indexmap",
3827+ "itertools 0.14.0",
3828+ "matrix-sdk",
3829+ "matrix-sdk-base",
3830+ "matrix-sdk-common",
3831+ "matrix-sdk-test",
3832+ "matrix-sdk-test-utils",
3833+ "mime",
3834+ "pin-project-lite",
3835+ "proptest",
3836+ "ruma",
3837+ "serde",
3838+ "serde_json",
3839+ "stream_assert",
3840+ "tempfile",
3841+ "thiserror 2.0.18",
3842+ "tokio",
3843+ "tokio-stream",
3844+ "tracing",
3845+ "unicode-normalization",
3846+ "unicode-segmentation",
3847+ "uniffi",
3848+ "url",
3849+ "wiremock",
3850+]
3851+
3852+[[package]]
3853+name = "matrix_indexed_db_futures"
3854+version = "0.7.0"
3855+source = "registry+https://github.com/rust-lang/crates.io-index"
3856+checksum = "245ff6a224b4df7b0c90dda2dd5a6eb46112708d49e8bdd8b007fccb09fea8e4"
3857+dependencies = [
3858+ "accessory",
3859+ "cfg-if",
3860+ "delegate-display",
3861+ "derive_more 2.0.1",
3862+ "fancy_constructor",
3863+ "futures-core",
3864+ "js-sys",
3865+ "matrix_indexed_db_futures_macros_internal",
3866+ "sealed",
3867+ "serde",
3868+ "serde-wasm-bindgen",
3869+ "smallvec",
3870+ "thiserror 2.0.18",
3871+ "tokio",
3872+ "wasm-bindgen",
3873+ "wasm-bindgen-futures",
3874+ "wasm_evt_listener",
3875+ "web-sys",
3876+ "web-time",
3877+]
3878+
3879+[[package]]
3880+name = "matrix_indexed_db_futures_macros_internal"
3881+version = "1.0.0"
3882+source = "registry+https://github.com/rust-lang/crates.io-index"
3883+checksum = "b428aee5c0fe9e5babd29e99d289b7f64718c444989aac0442d1fd6d3e3f66d1"
3884+dependencies = [
3885+ "macroific",
3886+ "proc-macro2",
3887+ "quote",
3888+ "syn 2.0.101",
3889+]
3890+
3891+[[package]]
3892+name = "measure_time"
3893+version = "0.9.0"
3894+source = "registry+https://github.com/rust-lang/crates.io-index"
3895+checksum = "51c55d61e72fc3ab704396c5fa16f4c184db37978ae4e94ca8959693a235fc0e"
3896+dependencies = [
3897+ "log",
3898+]
3899+
3900+[[package]]
3901+name = "memchr"
3902+version = "2.7.4"
3903+source = "registry+https://github.com/rust-lang/crates.io-index"
3904+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
3905+
3906+[[package]]
3907+name = "memmap2"
3908+version = "0.9.7"
3909+source = "registry+https://github.com/rust-lang/crates.io-index"
3910+checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28"
3911+dependencies = [
3912+ "libc",
3913+]
3914+
3915+[[package]]
3916+name = "memmem"
3917+version = "0.1.1"
3918+source = "registry+https://github.com/rust-lang/crates.io-index"
3919+checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15"
3920+
3921+[[package]]
3922+name = "memoffset"
3923+version = "0.9.1"
3924+source = "registry+https://github.com/rust-lang/crates.io-index"
3925+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
3926+dependencies = [
3927+ "autocfg",
3928+]
3929+
3930+[[package]]
3931+name = "mime"
3932+version = "0.3.17"
3933+source = "registry+https://github.com/rust-lang/crates.io-index"
3934+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
3935+
3936+[[package]]
3937+name = "mime2ext"
3938+version = "0.1.54"
3939+source = "registry+https://github.com/rust-lang/crates.io-index"
3940+checksum = "cbf6f36070878c42c5233846cd3de24cf9016828fd47bc22957a687298bb21fc"
3941+
3942+[[package]]
3943+name = "minicov"
3944+version = "0.3.8"
3945+source = "registry+https://github.com/rust-lang/crates.io-index"
3946+checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"
3947+dependencies = [
3948+ "cc",
3949+ "walkdir",
3950+]
3951+
3952+[[package]]
3953+name = "minimal-lexical"
3954+version = "0.2.1"
3955+source = "registry+https://github.com/rust-lang/crates.io-index"
3956+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
3957+
3958+[[package]]
3959+name = "miniz_oxide"
3960+version = "0.8.9"
3961+source = "registry+https://github.com/rust-lang/crates.io-index"
3962+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
3963+dependencies = [
3964+ "adler2",
3965+ "simd-adler32",
3966+]
3967+
3968+[[package]]
3969+name = "mio"
3970+version = "1.0.2"
3971+source = "registry+https://github.com/rust-lang/crates.io-index"
3972+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
3973+dependencies = [
3974+ "hermit-abi 0.3.9",
3975+ "libc",
3976+ "log",
3977+ "wasi",
3978+ "windows-sys 0.52.0",
3979+]
3980+
3981+[[package]]
3982+name = "moxcms"
3983+version = "0.7.5"
3984+source = "registry+https://github.com/rust-lang/crates.io-index"
3985+checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08"
3986+dependencies = [
3987+ "num-traits",
3988+ "pxfm",
3989+]
3990+
3991+[[package]]
3992+name = "multiverse"
3993+version = "0.1.0"
3994+dependencies = [
3995+ "clap",
3996+ "color-eyre",
3997+ "crossterm",
3998+ "futures-util",
3999+ "imbl",
4000+ "indexmap",
4001+ "itertools 0.14.0",
4002+ "matrix-sdk",
4003+ "matrix-sdk-base",
4004+ "matrix-sdk-common",
4005+ "matrix-sdk-ui",
4006+ "ratatui",
4007+ "ratatui-textarea",
4008+ "rpassword",
4009+ "serde_json",
4010+ "strum",
4011+ "textwrap",
4012+ "throbber-widgets-tui",
4013+ "tokio",
4014+ "tracing",
4015+ "tracing-appender",
4016+ "tracing-subscriber",
4017+ "tui-widget-list",
4018+]
4019+
4020+[[package]]
4021+name = "murmurhash32"
4022+version = "0.3.1"
4023+source = "registry+https://github.com/rust-lang/crates.io-index"
4024+checksum = "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b"
4025+
4026+[[package]]
4027+name = "ndk-sys"
4028+version = "0.5.0+25.2.9519653"
4029+source = "registry+https://github.com/rust-lang/crates.io-index"
4030+checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"
4031+dependencies = [
4032+ "jni-sys",
4033+]
4034+
4035+[[package]]
4036+name = "new_debug_unreachable"
4037+version = "1.0.6"
4038+source = "registry+https://github.com/rust-lang/crates.io-index"
4039+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
4040+
4041+[[package]]
4042+name = "nix"
4043+version = "0.29.0"
4044+source = "registry+https://github.com/rust-lang/crates.io-index"
4045+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
4046+dependencies = [
4047+ "bitflags 2.10.0",
4048+ "cfg-if",
4049+ "cfg_aliases",
4050+ "libc",
4051+ "memoffset",
4052+]
4053+
4054+[[package]]
4055+name = "nix"
4056+version = "0.30.1"
4057+source = "registry+https://github.com/rust-lang/crates.io-index"
4058+checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
4059+dependencies = [
4060+ "bitflags 2.10.0",
4061+ "cfg-if",
4062+ "cfg_aliases",
4063+ "libc",
4064+]
4065+
4066+[[package]]
4067+name = "nom"
4068+version = "7.1.3"
4069+source = "registry+https://github.com/rust-lang/crates.io-index"
4070+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
4071+dependencies = [
4072+ "memchr",
4073+ "minimal-lexical",
4074+]
4075+
4076+[[package]]
4077+name = "nu-ansi-term"
4078+version = "0.50.1"
4079+source = "registry+https://github.com/rust-lang/crates.io-index"
4080+checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"
4081+dependencies = [
4082+ "windows-sys 0.52.0",
4083+]
4084+
4085+[[package]]
4086+name = "num-conv"
4087+version = "0.2.0"
4088+source = "registry+https://github.com/rust-lang/crates.io-index"
4089+checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
4090+
4091+[[package]]
4092+name = "num-derive"
4093+version = "0.4.2"
4094+source = "registry+https://github.com/rust-lang/crates.io-index"
4095+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
4096+dependencies = [
4097+ "proc-macro2",
4098+ "quote",
4099+ "syn 2.0.101",
4100+]
4101+
4102+[[package]]
4103+name = "num-traits"
4104+version = "0.2.19"
4105+source = "registry+https://github.com/rust-lang/crates.io-index"
4106+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
4107+dependencies = [
4108+ "autocfg",
4109+ "libm",
4110+]
4111+
4112+[[package]]
4113+name = "num_cpus"
4114+version = "1.17.0"
4115+source = "registry+https://github.com/rust-lang/crates.io-index"
4116+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
4117+dependencies = [
4118+ "hermit-abi 0.5.2",
4119+ "libc",
4120+]
4121+
4122+[[package]]
4123+name = "num_threads"
4124+version = "0.1.7"
4125+source = "registry+https://github.com/rust-lang/crates.io-index"
4126+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
4127+dependencies = [
4128+ "libc",
4129+]
4130+
4131+[[package]]
4132+name = "oauth2"
4133+version = "5.0.0"
4134+source = "registry+https://github.com/rust-lang/crates.io-index"
4135+checksum = "51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d"
4136+dependencies = [
4137+ "base64",
4138+ "chrono",
4139+ "getrandom 0.2.15",
4140+ "http",
4141+ "rand 0.8.6",
4142+ "serde",
4143+ "serde_json",
4144+ "serde_path_to_error",
4145+ "sha2",
4146+ "thiserror 1.0.63",
4147+ "url",
4148+]
4149+
4150+[[package]]
4151+name = "oauth2-reqwest"
4152+version = "0.1.0-alpha.3"
4153+source = "registry+https://github.com/rust-lang/crates.io-index"
4154+checksum = "234fb5c965bbce983ee5de636a7a51d6a3223da8067ea02f9ab2d2d78ac08be2"
4155+dependencies = [
4156+ "oauth2",
4157+ "reqwest",
4158+]
4159+
4160+[[package]]
4161+name = "object"
4162+version = "0.37.3"
4163+source = "registry+https://github.com/rust-lang/crates.io-index"
4164+checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
4165+dependencies = [
4166+ "memchr",
4167+]
4168+
4169+[[package]]
4170+name = "once_cell"
4171+version = "1.21.4"
4172+source = "registry+https://github.com/rust-lang/crates.io-index"
4173+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
4174+
4175+[[package]]
4176+name = "oneshot"
4177+version = "0.1.13"
4178+source = "registry+https://github.com/rust-lang/crates.io-index"
4179+checksum = "269bca4c2591a28585d6bf10d9ed0332b7d76900a1b02bec41bdc3a2cdcda107"
4180+
4181+[[package]]
4182+name = "oorandom"
4183+version = "11.1.5"
4184+source = "registry+https://github.com/rust-lang/crates.io-index"
4185+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
4186+
4187+[[package]]
4188+name = "opaque-debug"
4189+version = "0.3.1"
4190+source = "registry+https://github.com/rust-lang/crates.io-index"
4191+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
4192+
4193+[[package]]
4194+name = "openssl-probe"
4195+version = "0.2.0"
4196+source = "registry+https://github.com/rust-lang/crates.io-index"
4197+checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391"
4198+
4199+[[package]]
4200+name = "option-ext"
4201+version = "0.2.0"
4202+source = "registry+https://github.com/rust-lang/crates.io-index"
4203+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
4204+
4205+[[package]]
4206+name = "ordered-float"
4207+version = "4.6.0"
4208+source = "registry+https://github.com/rust-lang/crates.io-index"
4209+checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
4210+dependencies = [
4211+ "num-traits",
4212+]
4213+
4214+[[package]]
4215+name = "ordered-float"
4216+version = "5.3.0"
4217+source = "registry+https://github.com/rust-lang/crates.io-index"
4218+checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"
4219+dependencies = [
4220+ "num-traits",
4221+]
4222+
4223+[[package]]
4224+name = "os_info"
4225+version = "3.11.0"
4226+source = "registry+https://github.com/rust-lang/crates.io-index"
4227+checksum = "41fc863e2ca13dc2d5c34fb22ea4a588248ac14db929616ba65c45f21744b1e9"
4228+dependencies = [
4229+ "log",
4230+ "serde",
4231+ "windows-sys 0.52.0",
4232+]
4233+
4234+[[package]]
4235+name = "ownedbytes"
4236+version = "0.9.0"
4237+source = "registry+https://github.com/rust-lang/crates.io-index"
4238+checksum = "2fbd56f7631767e61784dc43f8580f403f4475bd4aaa4da003e6295e1bab4a7e"
4239+dependencies = [
4240+ "stable_deref_trait",
4241+]
4242+
4243+[[package]]
4244+name = "owo-colors"
4245+version = "4.2.2"
4246+source = "registry+https://github.com/rust-lang/crates.io-index"
4247+checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e"
4248+
4249+[[package]]
4250+name = "paranoid-android"
4251+version = "0.2.2"
4252+source = "registry+https://github.com/rust-lang/crates.io-index"
4253+checksum = "101795d63d371b43e38d6e7254677657be82f17022f7f7893c268f33ac0caadc"
4254+dependencies = [
4255+ "lazy_static",
4256+ "ndk-sys",
4257+ "sharded-slab",
4258+ "smallvec",
4259+ "tracing-core",
4260+ "tracing-subscriber",
4261+]
4262+
4263+[[package]]
4264+name = "parking"
4265+version = "2.2.0"
4266+source = "registry+https://github.com/rust-lang/crates.io-index"
4267+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
4268+
4269+[[package]]
4270+name = "parking_lot"
4271+version = "0.12.3"
4272+source = "registry+https://github.com/rust-lang/crates.io-index"
4273+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
4274+dependencies = [
4275+ "lock_api",
4276+ "parking_lot_core",
4277+]
4278+
4279+[[package]]
4280+name = "parking_lot_core"
4281+version = "0.9.10"
4282+source = "registry+https://github.com/rust-lang/crates.io-index"
4283+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
4284+dependencies = [
4285+ "cfg-if",
4286+ "libc",
4287+ "redox_syscall",
4288+ "smallvec",
4289+ "windows-targets 0.52.6",
4290+]
4291+
4292+[[package]]
4293+name = "pbkdf2"
4294+version = "0.12.2"
4295+source = "registry+https://github.com/rust-lang/crates.io-index"
4296+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
4297+dependencies = [
4298+ "digest",
4299+]
4300+
4301+[[package]]
4302+name = "percent-encoding"
4303+version = "2.3.2"
4304+source = "registry+https://github.com/rust-lang/crates.io-index"
4305+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
4306+
4307+[[package]]
4308+name = "pest"
4309+version = "2.8.0"
4310+source = "registry+https://github.com/rust-lang/crates.io-index"
4311+checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6"
4312+dependencies = [
4313+ "memchr",
4314+ "thiserror 2.0.18",
4315+ "ucd-trie",
4316+]
4317+
4318+[[package]]
4319+name = "pest_derive"
4320+version = "2.8.0"
4321+source = "registry+https://github.com/rust-lang/crates.io-index"
4322+checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5"
4323+dependencies = [
4324+ "pest",
4325+ "pest_generator",
4326+]
4327+
4328+[[package]]
4329+name = "pest_generator"
4330+version = "2.8.0"
4331+source = "registry+https://github.com/rust-lang/crates.io-index"
4332+checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841"
4333+dependencies = [
4334+ "pest",
4335+ "pest_meta",
4336+ "proc-macro2",
4337+ "quote",
4338+ "syn 2.0.101",
4339+]
4340+
4341+[[package]]
4342+name = "pest_meta"
4343+version = "2.8.0"
4344+source = "registry+https://github.com/rust-lang/crates.io-index"
4345+checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0"
4346+dependencies = [
4347+ "once_cell",
4348+ "pest",
4349+ "sha2",
4350+]
4351+
4352+[[package]]
4353+name = "phf"
4354+version = "0.11.3"
4355+source = "registry+https://github.com/rust-lang/crates.io-index"
4356+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
4357+dependencies = [
4358+ "phf_macros",
4359+ "phf_shared 0.11.3",
4360+]
4361+
4362+[[package]]
4363+name = "phf"
4364+version = "0.13.1"
4365+source = "registry+https://github.com/rust-lang/crates.io-index"
4366+checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
4367+dependencies = [
4368+ "phf_shared 0.13.1",
4369+ "serde",
4370+]
4371+
4372+[[package]]
4373+name = "phf_codegen"
4374+version = "0.11.3"
4375+source = "registry+https://github.com/rust-lang/crates.io-index"
4376+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
4377+dependencies = [
4378+ "phf_generator 0.11.3",
4379+ "phf_shared 0.11.3",
4380+]
4381+
4382+[[package]]
4383+name = "phf_codegen"
4384+version = "0.13.1"
4385+source = "registry+https://github.com/rust-lang/crates.io-index"
4386+checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"
4387+dependencies = [
4388+ "phf_generator 0.13.1",
4389+ "phf_shared 0.13.1",
4390+]
4391+
4392+[[package]]
4393+name = "phf_generator"
4394+version = "0.11.3"
4395+source = "registry+https://github.com/rust-lang/crates.io-index"
4396+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
4397+dependencies = [
4398+ "phf_shared 0.11.3",
4399+ "rand 0.8.6",
4400+]
4401+
4402+[[package]]
4403+name = "phf_generator"
4404+version = "0.13.1"
4405+source = "registry+https://github.com/rust-lang/crates.io-index"
4406+checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
4407+dependencies = [
4408+ "fastrand",
4409+ "phf_shared 0.13.1",
4410+]
4411+
4412+[[package]]
4413+name = "phf_macros"
4414+version = "0.11.3"
4415+source = "registry+https://github.com/rust-lang/crates.io-index"
4416+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
4417+dependencies = [
4418+ "phf_generator 0.11.3",
4419+ "phf_shared 0.11.3",
4420+ "proc-macro2",
4421+ "quote",
4422+ "syn 2.0.101",
4423+]
4424+
4425+[[package]]
4426+name = "phf_shared"
4427+version = "0.11.3"
4428+source = "registry+https://github.com/rust-lang/crates.io-index"
4429+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
4430+dependencies = [
4431+ "siphasher",
4432+]
4433+
4434+[[package]]
4435+name = "phf_shared"
4436+version = "0.13.1"
4437+source = "registry+https://github.com/rust-lang/crates.io-index"
4438+checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
4439+dependencies = [
4440+ "siphasher",
4441+]
4442+
4443+[[package]]
4444+name = "pin-project-lite"
4445+version = "0.2.16"
4446+source = "registry+https://github.com/rust-lang/crates.io-index"
4447+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
4448+
4449+[[package]]
4450+name = "pin-utils"
4451+version = "0.1.0"
4452+source = "registry+https://github.com/rust-lang/crates.io-index"
4453+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
4454+
4455+[[package]]
4456+name = "pkcs8"
4457+version = "0.10.2"
4458+source = "registry+https://github.com/rust-lang/crates.io-index"
4459+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
4460+dependencies = [
4461+ "der",
4462+ "spki",
4463+]
4464+
4465+[[package]]
4466+name = "pkg-config"
4467+version = "0.3.30"
4468+source = "registry+https://github.com/rust-lang/crates.io-index"
4469+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
4470+
4471+[[package]]
4472+name = "plain"
4473+version = "0.2.3"
4474+source = "registry+https://github.com/rust-lang/crates.io-index"
4475+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
4476+
4477+[[package]]
4478+name = "plotters"
4479+version = "0.3.6"
4480+source = "registry+https://github.com/rust-lang/crates.io-index"
4481+checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
4482+dependencies = [
4483+ "num-traits",
4484+ "plotters-backend",
4485+ "plotters-svg",
4486+ "wasm-bindgen",
4487+ "web-sys",
4488+]
4489+
4490+[[package]]
4491+name = "plotters-backend"
4492+version = "0.3.6"
4493+source = "registry+https://github.com/rust-lang/crates.io-index"
4494+checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
4495+
4496+[[package]]
4497+name = "plotters-svg"
4498+version = "0.3.6"
4499+source = "registry+https://github.com/rust-lang/crates.io-index"
4500+checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
4501+dependencies = [
4502+ "plotters-backend",
4503+]
4504+
4505+[[package]]
4506+name = "poly1305"
4507+version = "0.8.0"
4508+source = "registry+https://github.com/rust-lang/crates.io-index"
4509+checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"
4510+dependencies = [
4511+ "cpufeatures 0.2.12",
4512+ "opaque-debug",
4513+ "universal-hash",
4514+]
4515+
4516+[[package]]
4517+name = "portable-atomic"
4518+version = "1.13.1"
4519+source = "registry+https://github.com/rust-lang/crates.io-index"
4520+checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
4521+
4522+[[package]]
4523+name = "powerfmt"
4524+version = "0.2.0"
4525+source = "registry+https://github.com/rust-lang/crates.io-index"
4526+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
4527+
4528+[[package]]
4529+name = "ppv-lite86"
4530+version = "0.2.17"
4531+source = "registry+https://github.com/rust-lang/crates.io-index"
4532+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
4533+
4534+[[package]]
4535+name = "precomputed-hash"
4536+version = "0.1.1"
4537+source = "registry+https://github.com/rust-lang/crates.io-index"
4538+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
4539+
4540+[[package]]
4541+name = "prettyplease"
4542+version = "0.2.34"
4543+source = "registry+https://github.com/rust-lang/crates.io-index"
4544+checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55"
4545+dependencies = [
4546+ "proc-macro2",
4547+ "syn 2.0.101",
4548+]
4549+
4550+[[package]]
4551+name = "proc-macro-crate"
4552+version = "3.2.0"
4553+source = "registry+https://github.com/rust-lang/crates.io-index"
4554+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
4555+dependencies = [
4556+ "toml_edit",
4557+]
4558+
4559+[[package]]
4560+name = "proc-macro-error-attr2"
4561+version = "2.0.0"
4562+source = "registry+https://github.com/rust-lang/crates.io-index"
4563+checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
4564+dependencies = [
4565+ "proc-macro2",
4566+ "quote",
4567+]
4568+
4569+[[package]]
4570+name = "proc-macro-error2"
4571+version = "2.0.1"
4572+source = "registry+https://github.com/rust-lang/crates.io-index"
4573+checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
4574+dependencies = [
4575+ "proc-macro-error-attr2",
4576+ "proc-macro2",
4577+ "quote",
4578+]
4579+
4580+[[package]]
4581+name = "proc-macro2"
4582+version = "1.0.106"
4583+source = "registry+https://github.com/rust-lang/crates.io-index"
4584+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
4585+dependencies = [
4586+ "unicode-ident",
4587+]
4588+
4589+[[package]]
4590+name = "proptest"
4591+version = "1.9.0"
4592+source = "registry+https://github.com/rust-lang/crates.io-index"
4593+checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40"
4594+dependencies = [
4595+ "bitflags 2.10.0",
4596+ "num-traits",
4597+ "rand 0.9.4",
4598+ "rand_chacha 0.9.0",
4599+ "rand_xorshift",
4600+ "regex-syntax",
4601+ "unarray",
4602+]
4603+
4604+[[package]]
4605+name = "prost"
4606+version = "0.14.3"
4607+source = "registry+https://github.com/rust-lang/crates.io-index"
4608+checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"
4609+dependencies = [
4610+ "bytes",
4611+ "prost-derive",
4612+]
4613+
4614+[[package]]
4615+name = "prost-derive"
4616+version = "0.14.3"
4617+source = "registry+https://github.com/rust-lang/crates.io-index"
4618+checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"
4619+dependencies = [
4620+ "anyhow",
4621+ "itertools 0.14.0",
4622+ "proc-macro2",
4623+ "quote",
4624+ "syn 2.0.101",
4625+]
4626+
4627+[[package]]
4628+name = "pulldown-cmark"
4629+version = "0.13.0"
4630+source = "registry+https://github.com/rust-lang/crates.io-index"
4631+checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0"
4632+dependencies = [
4633+ "bitflags 2.10.0",
4634+ "memchr",
4635+ "pulldown-cmark-escape",
4636+ "unicase",
4637+]
4638+
4639+[[package]]
4640+name = "pulldown-cmark-escape"
4641+version = "0.11.0"
4642+source = "registry+https://github.com/rust-lang/crates.io-index"
4643+checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae"
4644+
4645+[[package]]
4646+name = "pxfm"
4647+version = "0.1.20"
4648+source = "registry+https://github.com/rust-lang/crates.io-index"
4649+checksum = "6e790881194f6f6e86945f0a42a6981977323669aeb6c40e9c7ec253133b96f8"
4650+dependencies = [
4651+ "num-traits",
4652+]
4653+
4654+[[package]]
4655+name = "qrcode"
4656+version = "0.14.1"
4657+source = "registry+https://github.com/rust-lang/crates.io-index"
4658+checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec"
4659+dependencies = [
4660+ "image",
4661+]
4662+
4663+[[package]]
4664+name = "quinn"
4665+version = "0.11.9"
4666+source = "registry+https://github.com/rust-lang/crates.io-index"
4667+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
4668+dependencies = [
4669+ "bytes",
4670+ "cfg_aliases",
4671+ "pin-project-lite",
4672+ "quinn-proto",
4673+ "quinn-udp",
4674+ "rustc-hash",
4675+ "rustls",
4676+ "socket2 0.6.0",
4677+ "thiserror 2.0.18",
4678+ "tokio",
4679+ "tracing",
4680+ "web-time",
4681+]
4682+
4683+[[package]]
4684+name = "quinn-proto"
4685+version = "0.11.14"
4686+source = "registry+https://github.com/rust-lang/crates.io-index"
4687+checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
4688+dependencies = [
4689+ "aws-lc-rs",
4690+ "bytes",
4691+ "getrandom 0.3.4",
4692+ "lru-slab",
4693+ "rand 0.9.4",
4694+ "ring",
4695+ "rustc-hash",
4696+ "rustls",
4697+ "rustls-pki-types",
4698+ "slab",
4699+ "thiserror 2.0.18",
4700+ "tinyvec",
4701+ "tracing",
4702+ "web-time",
4703+]
4704+
4705+[[package]]
4706+name = "quinn-udp"
4707+version = "0.5.3"
4708+source = "registry+https://github.com/rust-lang/crates.io-index"
4709+checksum = "25a78e6f726d84fcf960409f509ae354a32648f090c8d32a2ea8b1a1bc3bab14"
4710+dependencies = [
4711+ "libc",
4712+ "once_cell",
4713+ "socket2 0.5.7",
4714+ "tracing",
4715+ "windows-sys 0.52.0",
4716+]
4717+
4718+[[package]]
4719+name = "quote"
4720+version = "1.0.37"
4721+source = "registry+https://github.com/rust-lang/crates.io-index"
4722+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
4723+dependencies = [
4724+ "proc-macro2",
4725+]
4726+
4727+[[package]]
4728+name = "r-efi"
4729+version = "5.3.0"
4730+source = "registry+https://github.com/rust-lang/crates.io-index"
4731+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
4732+
4733+[[package]]
4734+name = "r-efi"
4735+version = "6.0.0"
4736+source = "registry+https://github.com/rust-lang/crates.io-index"
4737+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
4738+
4739+[[package]]
4740+name = "rand"
4741+version = "0.8.6"
4742+source = "registry+https://github.com/rust-lang/crates.io-index"
4743+checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
4744+dependencies = [
4745+ "libc",
4746+ "rand_chacha 0.3.1",
4747+ "rand_core 0.6.4",
4748+]
4749+
4750+[[package]]
4751+name = "rand"
4752+version = "0.9.4"
4753+source = "registry+https://github.com/rust-lang/crates.io-index"
4754+checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
4755+dependencies = [
4756+ "rand_chacha 0.9.0",
4757+ "rand_core 0.9.3",
4758+]
4759+
4760+[[package]]
4761+name = "rand"
4762+version = "0.10.1"
4763+source = "registry+https://github.com/rust-lang/crates.io-index"
4764+checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
4765+dependencies = [
4766+ "chacha20 0.10.0",
4767+ "getrandom 0.4.2",
4768+ "rand_core 0.10.0",
4769+]
4770+
4771+[[package]]
4772+name = "rand_chacha"
4773+version = "0.3.1"
4774+source = "registry+https://github.com/rust-lang/crates.io-index"
4775+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
4776+dependencies = [
4777+ "ppv-lite86",
4778+ "rand_core 0.6.4",
4779+]
4780+
4781+[[package]]
4782+name = "rand_chacha"
4783+version = "0.9.0"
4784+source = "registry+https://github.com/rust-lang/crates.io-index"
4785+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
4786+dependencies = [
4787+ "ppv-lite86",
4788+ "rand_core 0.9.3",
4789+]
4790+
4791+[[package]]
4792+name = "rand_core"
4793+version = "0.6.4"
4794+source = "registry+https://github.com/rust-lang/crates.io-index"
4795+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
4796+dependencies = [
4797+ "getrandom 0.2.15",
4798+]
4799+
4800+[[package]]
4801+name = "rand_core"
4802+version = "0.9.3"
4803+source = "registry+https://github.com/rust-lang/crates.io-index"
4804+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
4805+dependencies = [
4806+ "getrandom 0.3.4",
4807+]
4808+
4809+[[package]]
4810+name = "rand_core"
4811+version = "0.10.0"
4812+source = "registry+https://github.com/rust-lang/crates.io-index"
4813+checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
4814+
4815+[[package]]
4816+name = "rand_xorshift"
4817+version = "0.4.0"
4818+source = "registry+https://github.com/rust-lang/crates.io-index"
4819+checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
4820+dependencies = [
4821+ "rand_core 0.9.3",
4822+]
4823+
4824+[[package]]
4825+name = "rand_xoshiro"
4826+version = "0.7.0"
4827+source = "registry+https://github.com/rust-lang/crates.io-index"
4828+checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41"
4829+dependencies = [
4830+ "rand_core 0.9.3",
4831+]
4832+
4833+[[package]]
4834+name = "ratatui"
4835+version = "0.30.0"
4836+source = "registry+https://github.com/rust-lang/crates.io-index"
4837+checksum = "d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc"
4838+dependencies = [
4839+ "instability",
4840+ "ratatui-core",
4841+ "ratatui-crossterm",
4842+ "ratatui-macros",
4843+ "ratatui-termwiz",
4844+ "ratatui-widgets",
4845+]
4846+
4847+[[package]]
4848+name = "ratatui-core"
4849+version = "0.1.0"
4850+source = "registry+https://github.com/rust-lang/crates.io-index"
4851+checksum = "5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293"
4852+dependencies = [
4853+ "bitflags 2.10.0",
4854+ "compact_str",
4855+ "hashbrown 0.16.1",
4856+ "indoc",
4857+ "itertools 0.14.0",
4858+ "kasuari",
4859+ "lru",
4860+ "strum",
4861+ "thiserror 2.0.18",
4862+ "unicode-segmentation",
4863+ "unicode-truncate",
4864+ "unicode-width",
4865+]
4866+
4867+[[package]]
4868+name = "ratatui-crossterm"
4869+version = "0.1.0"
4870+source = "registry+https://github.com/rust-lang/crates.io-index"
4871+checksum = "577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3"
4872+dependencies = [
4873+ "cfg-if",
4874+ "crossterm",
4875+ "instability",
4876+ "ratatui-core",
4877+]
4878+
4879+[[package]]
4880+name = "ratatui-macros"
4881+version = "0.7.0"
4882+source = "registry+https://github.com/rust-lang/crates.io-index"
4883+checksum = "a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4"
4884+dependencies = [
4885+ "ratatui-core",
4886+ "ratatui-widgets",
4887+]
4888+
4889+[[package]]
4890+name = "ratatui-termwiz"
4891+version = "0.1.0"
4892+source = "registry+https://github.com/rust-lang/crates.io-index"
4893+checksum = "0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c"
4894+dependencies = [
4895+ "ratatui-core",
4896+ "termwiz",
4897+]
4898+
4899+[[package]]
4900+name = "ratatui-textarea"
4901+version = "0.9.1"
4902+source = "registry+https://github.com/rust-lang/crates.io-index"
4903+checksum = "2950274c0e155944158cf766848dd87bd6db6dad27da1c23ee4a7c8de71dbf1f"
4904+dependencies = [
4905+ "ratatui-core",
4906+ "ratatui-crossterm",
4907+ "ratatui-widgets",
4908+ "unicode-segmentation",
4909+ "unicode-width",
4910+]
4911+
4912+[[package]]
4913+name = "ratatui-widgets"
4914+version = "0.3.0"
4915+source = "registry+https://github.com/rust-lang/crates.io-index"
4916+checksum = "d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db"
4917+dependencies = [
4918+ "bitflags 2.10.0",
4919+ "hashbrown 0.16.1",
4920+ "indoc",
4921+ "instability",
4922+ "itertools 0.14.0",
4923+ "line-clipping",
4924+ "ratatui-core",
4925+ "strum",
4926+ "time",
4927+ "unicode-segmentation",
4928+ "unicode-width",
4929+]
4930+
4931+[[package]]
4932+name = "rayon"
4933+version = "1.10.0"
4934+source = "registry+https://github.com/rust-lang/crates.io-index"
4935+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
4936+dependencies = [
4937+ "either",
4938+ "rayon-core",
4939+]
4940+
4941+[[package]]
4942+name = "rayon-core"
4943+version = "1.12.1"
4944+source = "registry+https://github.com/rust-lang/crates.io-index"
4945+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
4946+dependencies = [
4947+ "crossbeam-deque",
4948+ "crossbeam-utils",
4949+]
4950+
4951+[[package]]
4952+name = "readlock"
4953+version = "0.1.8"
4954+source = "registry+https://github.com/rust-lang/crates.io-index"
4955+checksum = "072cfe5b1d2dcd38d20e18f85e9c9978b6cc08f0b373e9f1fff1541335622974"
4956+
4957+[[package]]
4958+name = "readlock-tokio"
4959+version = "0.1.3"
4960+source = "registry+https://github.com/rust-lang/crates.io-index"
4961+checksum = "867fac64d07214a87e5cf4e88b4ce855844a1cea243534392377d1ac2c911653"
4962+dependencies = [
4963+ "tokio",
4964+]
4965+
4966+[[package]]
4967+name = "redox_syscall"
4968+version = "0.5.3"
4969+source = "registry+https://github.com/rust-lang/crates.io-index"
4970+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
4971+dependencies = [
4972+ "bitflags 2.10.0",
4973+]
4974+
4975+[[package]]
4976+name = "redox_users"
4977+version = "0.5.0"
4978+source = "registry+https://github.com/rust-lang/crates.io-index"
4979+checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
4980+dependencies = [
4981+ "getrandom 0.2.15",
4982+ "libredox",
4983+ "thiserror 2.0.18",
4984+]
4985+
4986+[[package]]
4987+name = "regex"
4988+version = "1.12.2"
4989+source = "registry+https://github.com/rust-lang/crates.io-index"
4990+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
4991+dependencies = [
4992+ "aho-corasick",
4993+ "memchr",
4994+ "regex-automata",
4995+ "regex-syntax",
4996+]
4997+
4998+[[package]]
4999+name = "regex-automata"
5000+version = "0.4.13"
5001+source = "registry+https://github.com/rust-lang/crates.io-index"
5002+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
5003+dependencies = [
5004+ "aho-corasick",
5005+ "memchr",
5006+ "regex-syntax",
5007+]
5008+
5009+[[package]]
5010+name = "regex-syntax"
5011+version = "0.8.5"
5012+source = "registry+https://github.com/rust-lang/crates.io-index"
5013+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
5014+
5015+[[package]]
5016+name = "reqwest"
5017+version = "0.13.2"
5018+source = "registry+https://github.com/rust-lang/crates.io-index"
5019+checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
5020+dependencies = [
5021+ "base64",
5022+ "bytes",
5023+ "futures-channel",
5024+ "futures-core",
5025+ "futures-util",
5026+ "h2",
5027+ "http",
5028+ "http-body",
5029+ "http-body-util",
5030+ "hyper",
5031+ "hyper-rustls",
5032+ "hyper-util",
5033+ "js-sys",
5034+ "log",
5035+ "percent-encoding",
5036+ "pin-project-lite",
5037+ "quinn",
5038+ "rustls",
5039+ "rustls-pki-types",
5040+ "rustls-platform-verifier",
5041+ "serde",
5042+ "serde_json",
5043+ "sync_wrapper",
5044+ "tokio",
5045+ "tokio-rustls",
5046+ "tokio-util",
5047+ "tower",
5048+ "tower-http",
5049+ "tower-service",
5050+ "url",
5051+ "wasm-bindgen",
5052+ "wasm-bindgen-futures",
5053+ "wasm-streams",
5054+ "web-sys",
5055+]
5056+
5057+[[package]]
5058+name = "ring"
5059+version = "0.17.14"
5060+source = "registry+https://github.com/rust-lang/crates.io-index"
5061+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
5062+dependencies = [
5063+ "cc",
5064+ "cfg-if",
5065+ "getrandom 0.2.15",
5066+ "libc",
5067+ "untrusted",
5068+ "windows-sys 0.52.0",
5069+]
5070+
5071+[[package]]
5072+name = "rmp"
5073+version = "0.8.15"
5074+source = "registry+https://github.com/rust-lang/crates.io-index"
5075+checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c"
5076+dependencies = [
5077+ "num-traits",
5078+]
5079+
5080+[[package]]
5081+name = "rmp-serde"
5082+version = "1.3.0"
5083+source = "registry+https://github.com/rust-lang/crates.io-index"
5084+checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
5085+dependencies = [
5086+ "byteorder",
5087+ "rmp",
5088+ "serde",
5089+]
5090+
5091+[[package]]
5092+name = "rpassword"
5093+version = "7.5.3"
5094+source = "registry+https://github.com/rust-lang/crates.io-index"
5095+checksum = "835a57a69104632d64deb0df2e09a69945cd7a6eab4070fc9b1d7e50cf6c3edc"
5096+dependencies = [
5097+ "libc",
5098+ "rtoolbox",
5099+ "windows-sys 0.61.2",
5100+]
5101+
5102+[[package]]
5103+name = "rtoolbox"
5104+version = "0.0.2"
5105+source = "registry+https://github.com/rust-lang/crates.io-index"
5106+checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e"
5107+dependencies = [
5108+ "libc",
5109+ "windows-sys 0.48.0",
5110+]
5111+
5112+[[package]]
5113+name = "ruma"
5114+version = "0.16.0"
5115+source = "registry+https://github.com/rust-lang/crates.io-index"
5116+checksum = "ee4fe5bfacdb0e95e733da3b6c37d98edf46447a4a8e8dea824e0da266d8ad59"
5117+dependencies = [
5118+ "assign",
5119+ "js_int",
5120+ "js_option",
5121+ "language-tags",
5122+ "ruma-client-api",
5123+ "ruma-common",
5124+ "ruma-events",
5125+ "ruma-federation-api",
5126+ "ruma-html",
5127+ "ruma-signatures",
5128+ "web-time",
5129+]
5130+
5131+[[package]]
5132+name = "ruma-client-api"
5133+version = "0.24.0"
5134+source = "registry+https://github.com/rust-lang/crates.io-index"
5135+checksum = "bf7ca43a888ca569168d7e3901f4dd14a777b860bb19f4c08e35414162eb261c"
5136+dependencies = [
5137+ "as_variant",
5138+ "assign",
5139+ "bytes",
5140+ "http",
5141+ "js_int",
5142+ "js_option",
5143+ "maplit",
5144+ "ruma-common",
5145+ "ruma-events",
5146+ "serde",
5147+ "serde_html_form",
5148+ "serde_json",
5149+ "thiserror 2.0.18",
5150+ "url",
5151+ "web-time",
5152+]
5153+
5154+[[package]]
5155+name = "ruma-common"
5156+version = "0.19.0"
5157+source = "registry+https://github.com/rust-lang/crates.io-index"
5158+checksum = "2c3b4f00112791b490acce57df1ce3eb3f88899b045bebcff8a29f75369640cc"
5159+dependencies = [
5160+ "as_variant",
5161+ "base64",
5162+ "bytes",
5163+ "date_header",
5164+ "form_urlencoded",
5165+ "getrandom 0.4.2",
5166+ "http",
5167+ "indexmap",
5168+ "js_int",
5169+ "konst",
5170+ "percent-encoding",
5171+ "rand 0.10.1",
5172+ "regex",
5173+ "ruma-identifiers-validation",
5174+ "ruma-macros",
5175+ "serde",
5176+ "serde_html_form",
5177+ "serde_json",
5178+ "thiserror 2.0.18",
5179+ "time",
5180+ "tracing",
5181+ "url",
5182+ "uuid",
5183+ "web-time",
5184+ "wildmatch",
5185+ "zeroize",
5186+]
5187+
5188+[[package]]
5189+name = "ruma-events"
5190+version = "0.34.0"
5191+source = "registry+https://github.com/rust-lang/crates.io-index"
5192+checksum = "85d2f90830fc131691349b96a69ff53444eb6c3e8dc7869c77961b43cfaf3344"
5193+dependencies = [
5194+ "as_variant",
5195+ "indexmap",
5196+ "js_int",
5197+ "js_option",
5198+ "language-tags",
5199+ "pulldown-cmark",
5200+ "ruma-common",
5201+ "ruma-html",
5202+ "ruma-macros",
5203+ "serde",
5204+ "serde_json",
5205+ "thiserror 2.0.18",
5206+ "tracing",
5207+ "web-time",
5208+ "wildmatch",
5209+ "zeroize",
5210+]
5211+
5212+[[package]]
5213+name = "ruma-federation-api"
5214+version = "0.15.0"
5215+source = "registry+https://github.com/rust-lang/crates.io-index"
5216+checksum = "d4c9638f18d8da3183ebdf034a552ba6d7e86d217e6e680eebaa97c4e8d13d1a"
5217+dependencies = [
5218+ "headers",
5219+ "http",
5220+ "http-auth",
5221+ "httparse",
5222+ "js_int",
5223+ "memchr",
5224+ "mime",
5225+ "ruma-common",
5226+ "ruma-events",
5227+ "ruma-signatures",
5228+ "serde",
5229+ "serde_json",
5230+ "thiserror 2.0.18",
5231+ "tracing",
5232+]
5233+
5234+[[package]]
5235+name = "ruma-html"
5236+version = "0.8.0"
5237+source = "registry+https://github.com/rust-lang/crates.io-index"
5238+checksum = "48d33a944650f4bbd2188dd204d39dd87a9a1498f14b3a13252910c90ed7cd43"
5239+dependencies = [
5240+ "as_variant",
5241+ "html5ever",
5242+ "tracing",
5243+ "wildmatch",
5244+]
5245+
5246+[[package]]
5247+name = "ruma-identifiers-validation"
5248+version = "0.12.1"
5249+source = "registry+https://github.com/rust-lang/crates.io-index"
5250+checksum = "9d6cff00317675f487c4e7ccfb18875a14c5a14867b51d13f2a826053f03c432"
5251+dependencies = [
5252+ "js_int",
5253+ "thiserror 2.0.18",
5254+]
5255+
5256+[[package]]
5257+name = "ruma-macros"
5258+version = "0.19.0"
5259+source = "registry+https://github.com/rust-lang/crates.io-index"
5260+checksum = "c8cfb39eaa9b9fd389126ff941e060b496add5cbbfef559d80c46e571dda459c"
5261+dependencies = [
5262+ "as_variant",
5263+ "cfg-if",
5264+ "proc-macro-crate",
5265+ "proc-macro2",
5266+ "quote",
5267+ "ruma-identifiers-validation",
5268+ "serde",
5269+ "syn 2.0.101",
5270+ "toml 1.1.2+spec-1.1.0",
5271+]
5272+
5273+[[package]]
5274+name = "ruma-signatures"
5275+version = "0.21.0"
5276+source = "registry+https://github.com/rust-lang/crates.io-index"
5277+checksum = "3d374cdc542bcb881da80fcb3e58403e5fd17cfe5e0ab03939fdf12f99ef9ba2"
5278+dependencies = [
5279+ "base64",
5280+ "ed25519-dalek",
5281+ "pkcs8",
5282+ "rand 0.10.1",
5283+ "ruma-common",
5284+ "serde_json",
5285+ "sha2",
5286+ "thiserror 2.0.18",
5287+]
5288+
5289+[[package]]
5290+name = "rusqlite"
5291+version = "0.37.0"
5292+source = "registry+https://github.com/rust-lang/crates.io-index"
5293+checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f"
5294+dependencies = [
5295+ "bitflags 2.10.0",
5296+ "fallible-iterator",
5297+ "fallible-streaming-iterator",
5298+ "hashlink",
5299+ "libsqlite3-sys",
5300+ "smallvec",
5301+]
5302+
5303+[[package]]
5304+name = "rust-stemmers"
5305+version = "1.2.0"
5306+source = "registry+https://github.com/rust-lang/crates.io-index"
5307+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
5308+dependencies = [
5309+ "serde",
5310+ "serde_derive",
5311+]
5312+
5313+[[package]]
5314+name = "rustc-demangle"
5315+version = "0.1.24"
5316+source = "registry+https://github.com/rust-lang/crates.io-index"
5317+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
5318+
5319+[[package]]
5320+name = "rustc-hash"
5321+version = "2.0.0"
5322+source = "registry+https://github.com/rust-lang/crates.io-index"
5323+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
5324+
5325+[[package]]
5326+name = "rustc_version"
5327+version = "0.4.0"
5328+source = "registry+https://github.com/rust-lang/crates.io-index"
5329+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
5330+dependencies = [
5331+ "semver",
5332+]
5333+
5334+[[package]]
5335+name = "rustix"
5336+version = "1.0.8"
5337+source = "registry+https://github.com/rust-lang/crates.io-index"
5338+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
5339+dependencies = [
5340+ "bitflags 2.10.0",
5341+ "errno",
5342+ "libc",
5343+ "linux-raw-sys",
5344+ "windows-sys 0.60.2",
5345+]
5346+
5347+[[package]]
5348+name = "rustls"
5349+version = "0.23.38"
5350+source = "registry+https://github.com/rust-lang/crates.io-index"
5351+checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21"
5352+dependencies = [
5353+ "aws-lc-rs",
5354+ "log",
5355+ "once_cell",
5356+ "rustls-pki-types",
5357+ "rustls-webpki",
5358+ "subtle",
5359+ "zeroize",
5360+]
5361+
5362+[[package]]
5363+name = "rustls-native-certs"
5364+version = "0.8.3"
5365+source = "registry+https://github.com/rust-lang/crates.io-index"
5366+checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
5367+dependencies = [
5368+ "openssl-probe",
5369+ "rustls-pki-types",
5370+ "schannel",
5371+ "security-framework",
5372+]
5373+
5374+[[package]]
5375+name = "rustls-pki-types"
5376+version = "1.14.0"
5377+source = "registry+https://github.com/rust-lang/crates.io-index"
5378+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
5379+dependencies = [
5380+ "web-time",
5381+ "zeroize",
5382+]
5383+
5384+[[package]]
5385+name = "rustls-platform-verifier"
5386+version = "0.6.2"
5387+source = "registry+https://github.com/rust-lang/crates.io-index"
5388+checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
5389+dependencies = [
5390+ "core-foundation",
5391+ "core-foundation-sys",
5392+ "jni",
5393+ "log",
5394+ "once_cell",
5395+ "rustls",
5396+ "rustls-native-certs",
5397+ "rustls-platform-verifier-android",
5398+ "rustls-webpki",
5399+ "security-framework",
5400+ "security-framework-sys",
5401+ "webpki-root-certs",
5402+ "windows-sys 0.61.2",
5403+]
5404+
5405+[[package]]
5406+name = "rustls-platform-verifier-android"
5407+version = "0.1.1"
5408+source = "registry+https://github.com/rust-lang/crates.io-index"
5409+checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
5410+
5411+[[package]]
5412+name = "rustls-webpki"
5413+version = "0.103.13"
5414+source = "registry+https://github.com/rust-lang/crates.io-index"
5415+checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
5416+dependencies = [
5417+ "aws-lc-rs",
5418+ "ring",
5419+ "rustls-pki-types",
5420+ "untrusted",
5421+]
5422+
5423+[[package]]
5424+name = "rustversion"
5425+version = "1.0.22"
5426+source = "registry+https://github.com/rust-lang/crates.io-index"
5427+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
5428+
5429+[[package]]
5430+name = "ryu"
5431+version = "1.0.18"
5432+source = "registry+https://github.com/rust-lang/crates.io-index"
5433+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
5434+
5435+[[package]]
5436+name = "same-file"
5437+version = "1.0.6"
5438+source = "registry+https://github.com/rust-lang/crates.io-index"
5439+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
5440+dependencies = [
5441+ "winapi-util",
5442+]
5443+
5444+[[package]]
5445+name = "schannel"
5446+version = "0.1.29"
5447+source = "registry+https://github.com/rust-lang/crates.io-index"
5448+checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
5449+dependencies = [
5450+ "windows-sys 0.61.2",
5451+]
5452+
5453+[[package]]
5454+name = "scoped-tls"
5455+version = "1.0.1"
5456+source = "registry+https://github.com/rust-lang/crates.io-index"
5457+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
5458+
5459+[[package]]
5460+name = "scopeguard"
5461+version = "1.2.0"
5462+source = "registry+https://github.com/rust-lang/crates.io-index"
5463+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
5464+
5465+[[package]]
5466+name = "scroll"
5467+version = "0.12.0"
5468+source = "registry+https://github.com/rust-lang/crates.io-index"
5469+checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"
5470+dependencies = [
5471+ "scroll_derive",
5472+]
5473+
5474+[[package]]
5475+name = "scroll_derive"
5476+version = "0.12.0"
5477+source = "registry+https://github.com/rust-lang/crates.io-index"
5478+checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932"
5479+dependencies = [
5480+ "proc-macro2",
5481+ "quote",
5482+ "syn 2.0.101",
5483+]
5484+
5485+[[package]]
5486+name = "sealed"
5487+version = "0.6.0"
5488+source = "registry+https://github.com/rust-lang/crates.io-index"
5489+checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107"
5490+dependencies = [
5491+ "proc-macro2",
5492+ "quote",
5493+ "syn 2.0.101",
5494+]
5495+
5496+[[package]]
5497+name = "security-framework"
5498+version = "3.5.1"
5499+source = "registry+https://github.com/rust-lang/crates.io-index"
5500+checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
5501+dependencies = [
5502+ "bitflags 2.10.0",
5503+ "core-foundation",
5504+ "core-foundation-sys",
5505+ "libc",
5506+ "security-framework-sys",
5507+]
5508+
5509+[[package]]
5510+name = "security-framework-sys"
5511+version = "2.15.0"
5512+source = "registry+https://github.com/rust-lang/crates.io-index"
5513+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
5514+dependencies = [
5515+ "core-foundation-sys",
5516+ "libc",
5517+]
5518+
5519+[[package]]
5520+name = "semver"
5521+version = "1.0.27"
5522+source = "registry+https://github.com/rust-lang/crates.io-index"
5523+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
5524+dependencies = [
5525+ "serde",
5526+ "serde_core",
5527+]
5528+
5529+[[package]]
5530+name = "sentry"
5531+version = "0.47.0"
5532+source = "registry+https://github.com/rust-lang/crates.io-index"
5533+checksum = "eb25f439f97d26fea01d717fa626167ceffcd981addaa670001e70505b72acbb"
5534+dependencies = [
5535+ "cfg_aliases",
5536+ "httpdate",
5537+ "reqwest",
5538+ "sentry-backtrace",
5539+ "sentry-contexts",
5540+ "sentry-core",
5541+ "sentry-debug-images",
5542+ "sentry-panic",
5543+ "sentry-tracing",
5544+ "tokio",
5545+]
5546+
5547+[[package]]
5548+name = "sentry-backtrace"
5549+version = "0.47.0"
5550+source = "registry+https://github.com/rust-lang/crates.io-index"
5551+checksum = "46a8c2c1bd5c1f735e84f28b48e7d72efcaafc362b7541bc8253e60e8fcdffc6"
5552+dependencies = [
5553+ "backtrace",
5554+ "regex",
5555+ "sentry-core",
5556+]
5557+
5558+[[package]]
5559+name = "sentry-contexts"
5560+version = "0.47.0"
5561+source = "registry+https://github.com/rust-lang/crates.io-index"
5562+checksum = "9b88a90baa654d7f0e1f4b667f6b434293d9f72c71bef16b197c76af5b7d5803"
5563+dependencies = [
5564+ "hostname",
5565+ "libc",
5566+ "os_info",
5567+ "rustc_version",
5568+ "sentry-core",
5569+ "uname",
5570+]
5571+
5572+[[package]]
5573+name = "sentry-core"
5574+version = "0.47.0"
5575+source = "registry+https://github.com/rust-lang/crates.io-index"
5576+checksum = "0ac170a5bba8bec6e3339c90432569d89641fa7a3d3e4f44987d24f0762e6adf"
5577+dependencies = [
5578+ "rand 0.9.4",
5579+ "sentry-types",
5580+ "serde",
5581+ "serde_json",
5582+ "url",
5583+]
5584+
5585+[[package]]
5586+name = "sentry-debug-images"
5587+version = "0.47.0"
5588+source = "registry+https://github.com/rust-lang/crates.io-index"
5589+checksum = "dd9646a972b57896d4a92ed200cf76139f8e30b3cfd03b6662ae59926d26633c"
5590+dependencies = [
5591+ "findshlibs",
5592+ "sentry-core",
5593+]
5594+
5595+[[package]]
5596+name = "sentry-panic"
5597+version = "0.47.0"
5598+source = "registry+https://github.com/rust-lang/crates.io-index"
5599+checksum = "6127d3d304ba5ce0409401e85aae538e303a569f8dbb031bf64f9ba0f7174346"
5600+dependencies = [
5601+ "sentry-backtrace",
5602+ "sentry-core",
5603+]
5604+
5605+[[package]]
5606+name = "sentry-tracing"
5607+version = "0.47.0"
5608+source = "registry+https://github.com/rust-lang/crates.io-index"
5609+checksum = "27701acc51e68db5281802b709010395bfcbcb128b1d0a4e5873680d3b47ff0c"
5610+dependencies = [
5611+ "bitflags 2.10.0",
5612+ "sentry-backtrace",
5613+ "sentry-core",
5614+ "tracing-core",
5615+ "tracing-subscriber",
5616+]
5617+
5618+[[package]]
5619+name = "sentry-types"
5620+version = "0.47.0"
5621+source = "registry+https://github.com/rust-lang/crates.io-index"
5622+checksum = "56780cb5597d676bf22e6c11d1f062eb4def46390ea3bfb047bcbcf7dfd19bdb"
5623+dependencies = [
5624+ "debugid",
5625+ "hex",
5626+ "rand 0.9.4",
5627+ "serde",
5628+ "serde_json",
5629+ "thiserror 2.0.18",
5630+ "time",
5631+ "url",
5632+ "uuid",
5633+]
5634+
5635+[[package]]
5636+name = "serde"
5637+version = "1.0.228"
5638+source = "registry+https://github.com/rust-lang/crates.io-index"
5639+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
5640+dependencies = [
5641+ "serde_core",
5642+ "serde_derive",
5643+]
5644+
5645+[[package]]
5646+name = "serde-wasm-bindgen"
5647+version = "0.6.5"
5648+source = "registry+https://github.com/rust-lang/crates.io-index"
5649+checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"
5650+dependencies = [
5651+ "js-sys",
5652+ "serde",
5653+ "wasm-bindgen",
5654+]
5655+
5656+[[package]]
5657+name = "serde_bytes"
5658+version = "0.11.19"
5659+source = "registry+https://github.com/rust-lang/crates.io-index"
5660+checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"
5661+dependencies = [
5662+ "serde",
5663+ "serde_core",
5664+]
5665+
5666+[[package]]
5667+name = "serde_core"
5668+version = "1.0.228"
5669+source = "registry+https://github.com/rust-lang/crates.io-index"
5670+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
5671+dependencies = [
5672+ "serde_derive",
5673+]
5674+
5675+[[package]]
5676+name = "serde_derive"
5677+version = "1.0.228"
5678+source = "registry+https://github.com/rust-lang/crates.io-index"
5679+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
5680+dependencies = [
5681+ "proc-macro2",
5682+ "quote",
5683+ "syn 2.0.101",
5684+]
5685+
5686+[[package]]
5687+name = "serde_html_form"
5688+version = "0.4.0"
5689+source = "registry+https://github.com/rust-lang/crates.io-index"
5690+checksum = "0946d52b4b7e28823148aebbeceb901012c595ad737920d504fa8634bb099e6f"
5691+dependencies = [
5692+ "form_urlencoded",
5693+ "indexmap",
5694+ "itoa",
5695+ "ryu",
5696+ "serde_core",
5697+]
5698+
5699+[[package]]
5700+name = "serde_json"
5701+version = "1.0.145"
5702+source = "registry+https://github.com/rust-lang/crates.io-index"
5703+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
5704+dependencies = [
5705+ "itoa",
5706+ "memchr",
5707+ "ryu",
5708+ "serde",
5709+ "serde_core",
5710+]
5711+
5712+[[package]]
5713+name = "serde_path_to_error"
5714+version = "0.1.20"
5715+source = "registry+https://github.com/rust-lang/crates.io-index"
5716+checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
5717+dependencies = [
5718+ "itoa",
5719+ "serde",
5720+ "serde_core",
5721+]
5722+
5723+[[package]]
5724+name = "serde_spanned"
5725+version = "1.1.1"
5726+source = "registry+https://github.com/rust-lang/crates.io-index"
5727+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
5728+dependencies = [
5729+ "serde_core",
5730+]
5731+
5732+[[package]]
5733+name = "serde_urlencoded"
5734+version = "0.7.1"
5735+source = "registry+https://github.com/rust-lang/crates.io-index"
5736+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
5737+dependencies = [
5738+ "form_urlencoded",
5739+ "itoa",
5740+ "ryu",
5741+ "serde",
5742+]
5743+
5744+[[package]]
5745+name = "sha1"
5746+version = "0.10.6"
5747+source = "registry+https://github.com/rust-lang/crates.io-index"
5748+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
5749+dependencies = [
5750+ "cfg-if",
5751+ "cpufeatures 0.2.12",
5752+ "digest",
5753+]
5754+
5755+[[package]]
5756+name = "sha2"
5757+version = "0.10.9"
5758+source = "registry+https://github.com/rust-lang/crates.io-index"
5759+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
5760+dependencies = [
5761+ "cfg-if",
5762+ "cpufeatures 0.2.12",
5763+ "digest",
5764+]
5765+
5766+[[package]]
5767+name = "sharded-slab"
5768+version = "0.1.7"
5769+source = "registry+https://github.com/rust-lang/crates.io-index"
5770+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
5771+dependencies = [
5772+ "lazy_static",
5773+]
5774+
5775+[[package]]
5776+name = "shlex"
5777+version = "1.3.0"
5778+source = "registry+https://github.com/rust-lang/crates.io-index"
5779+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
5780+
5781+[[package]]
5782+name = "signal-hook"
5783+version = "0.3.17"
5784+source = "registry+https://github.com/rust-lang/crates.io-index"
5785+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
5786+dependencies = [
5787+ "libc",
5788+ "signal-hook-registry",
5789+]
5790+
5791+[[package]]
5792+name = "signal-hook-mio"
5793+version = "0.2.4"
5794+source = "registry+https://github.com/rust-lang/crates.io-index"
5795+checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"
5796+dependencies = [
5797+ "libc",
5798+ "mio",
5799+ "signal-hook",
5800+]
5801+
5802+[[package]]
5803+name = "signal-hook-registry"
5804+version = "1.4.2"
5805+source = "registry+https://github.com/rust-lang/crates.io-index"
5806+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
5807+dependencies = [
5808+ "libc",
5809+]
5810+
5811+[[package]]
5812+name = "signature"
5813+version = "2.2.0"
5814+source = "registry+https://github.com/rust-lang/crates.io-index"
5815+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
5816+dependencies = [
5817+ "rand_core 0.6.4",
5818+]
5819+
5820+[[package]]
5821+name = "simd-adler32"
5822+version = "0.3.7"
5823+source = "registry+https://github.com/rust-lang/crates.io-index"
5824+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
5825+
5826+[[package]]
5827+name = "similar"
5828+version = "2.6.0"
5829+source = "registry+https://github.com/rust-lang/crates.io-index"
5830+checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
5831+
5832+[[package]]
5833+name = "similar-asserts"
5834+version = "1.7.0"
5835+source = "registry+https://github.com/rust-lang/crates.io-index"
5836+checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a"
5837+dependencies = [
5838+ "console",
5839+ "similar",
5840+]
5841+
5842+[[package]]
5843+name = "siphasher"
5844+version = "1.0.1"
5845+source = "registry+https://github.com/rust-lang/crates.io-index"
5846+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
5847+
5848+[[package]]
5849+name = "sketches-ddsketch"
5850+version = "0.4.0"
5851+source = "registry+https://github.com/rust-lang/crates.io-index"
5852+checksum = "05e40b6cf54d988dc1a2223531b969c9a9e30906ad90ef64890c27b4bfbb46ea"
5853+dependencies = [
5854+ "serde",
5855+]
5856+
5857+[[package]]
5858+name = "slab"
5859+version = "0.4.9"
5860+source = "registry+https://github.com/rust-lang/crates.io-index"
5861+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
5862+dependencies = [
5863+ "autocfg",
5864+]
5865+
5866+[[package]]
5867+name = "smallvec"
5868+version = "1.13.2"
5869+source = "registry+https://github.com/rust-lang/crates.io-index"
5870+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
5871+dependencies = [
5872+ "serde",
5873+]
5874+
5875+[[package]]
5876+name = "smawk"
5877+version = "0.3.2"
5878+source = "registry+https://github.com/rust-lang/crates.io-index"
5879+checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
5880+
5881+[[package]]
5882+name = "socket2"
5883+version = "0.5.7"
5884+source = "registry+https://github.com/rust-lang/crates.io-index"
5885+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
5886+dependencies = [
5887+ "libc",
5888+ "windows-sys 0.52.0",
5889+]
5890+
5891+[[package]]
5892+name = "socket2"
5893+version = "0.6.0"
5894+source = "registry+https://github.com/rust-lang/crates.io-index"
5895+checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
5896+dependencies = [
5897+ "libc",
5898+ "windows-sys 0.59.0",
5899+]
5900+
5901+[[package]]
5902+name = "spki"
5903+version = "0.7.3"
5904+source = "registry+https://github.com/rust-lang/crates.io-index"
5905+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
5906+dependencies = [
5907+ "base64ct",
5908+ "der",
5909+]
5910+
5911+[[package]]
5912+name = "stable_deref_trait"
5913+version = "1.2.0"
5914+source = "registry+https://github.com/rust-lang/crates.io-index"
5915+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
5916+
5917+[[package]]
5918+name = "static_assertions"
5919+version = "1.1.0"
5920+source = "registry+https://github.com/rust-lang/crates.io-index"
5921+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
5922+
5923+[[package]]
5924+name = "statrs"
5925+version = "0.18.0"
5926+source = "registry+https://github.com/rust-lang/crates.io-index"
5927+checksum = "2a3fe7c28c6512e766b0874335db33c94ad7b8f9054228ae1c2abd47ce7d335e"
5928+dependencies = [
5929+ "approx",
5930+ "num-traits",
5931+]
5932+
5933+[[package]]
5934+name = "stream_assert"
5935+version = "0.1.1"
5936+source = "registry+https://github.com/rust-lang/crates.io-index"
5937+checksum = "7fab678a73c9013f0427c63cfb42d98bd459a465194e7e583df486f679684b96"
5938+dependencies = [
5939+ "futures-util",
5940+]
5941+
5942+[[package]]
5943+name = "string_cache"
5944+version = "0.9.0"
5945+source = "registry+https://github.com/rust-lang/crates.io-index"
5946+checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901"
5947+dependencies = [
5948+ "new_debug_unreachable",
5949+ "parking_lot",
5950+ "phf_shared 0.13.1",
5951+ "precomputed-hash",
5952+]
5953+
5954+[[package]]
5955+name = "string_cache_codegen"
5956+version = "0.6.1"
5957+source = "registry+https://github.com/rust-lang/crates.io-index"
5958+checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69"
5959+dependencies = [
5960+ "phf_generator 0.13.1",
5961+ "phf_shared 0.13.1",
5962+ "proc-macro2",
5963+ "quote",
5964+]
5965+
5966+[[package]]
5967+name = "strsim"
5968+version = "0.11.1"
5969+source = "registry+https://github.com/rust-lang/crates.io-index"
5970+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
5971+
5972+[[package]]
5973+name = "strum"
5974+version = "0.27.2"
5975+source = "registry+https://github.com/rust-lang/crates.io-index"
5976+checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
5977+dependencies = [
5978+ "strum_macros",
5979+]
5980+
5981+[[package]]
5982+name = "strum_macros"
5983+version = "0.27.1"
5984+source = "registry+https://github.com/rust-lang/crates.io-index"
5985+checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8"
5986+dependencies = [
5987+ "heck",
5988+ "proc-macro2",
5989+ "quote",
5990+ "rustversion",
5991+ "syn 2.0.101",
5992+]
5993+
5994+[[package]]
5995+name = "subtle"
5996+version = "2.6.1"
5997+source = "registry+https://github.com/rust-lang/crates.io-index"
5998+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
5999+
6000+[[package]]
6001+name = "syn"
6002+version = "1.0.109"
6003+source = "registry+https://github.com/rust-lang/crates.io-index"
6004+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
6005+dependencies = [
6006+ "proc-macro2",
6007+ "quote",
6008+ "unicode-ident",
6009+]
6010+
6011+[[package]]
6012+name = "syn"
6013+version = "2.0.101"
6014+source = "registry+https://github.com/rust-lang/crates.io-index"
6015+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
6016+dependencies = [
6017+ "proc-macro2",
6018+ "quote",
6019+ "unicode-ident",
6020+]
6021+
6022+[[package]]
6023+name = "sync_wrapper"
6024+version = "1.0.1"
6025+source = "registry+https://github.com/rust-lang/crates.io-index"
6026+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
6027+dependencies = [
6028+ "futures-core",
6029+]
6030+
6031+[[package]]
6032+name = "synstructure"
6033+version = "0.13.1"
6034+source = "registry+https://github.com/rust-lang/crates.io-index"
6035+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
6036+dependencies = [
6037+ "proc-macro2",
6038+ "quote",
6039+ "syn 2.0.101",
6040+]
6041+
6042+[[package]]
6043+name = "tantivy"
6044+version = "0.26.1"
6045+source = "registry+https://github.com/rust-lang/crates.io-index"
6046+checksum = "edde6a10743fff00a4e1a8c9ef020bf5f3cbad301b7d2d39f2b07f123c4eac07"
6047+dependencies = [
6048+ "aho-corasick",
6049+ "arc-swap",
6050+ "base64",
6051+ "bitpacking",
6052+ "bon",
6053+ "byteorder",
6054+ "census",
6055+ "crc32fast",
6056+ "crossbeam-channel",
6057+ "datasketches",
6058+ "downcast-rs",
6059+ "fastdivide",
6060+ "fnv",
6061+ "fs4",
6062+ "htmlescape",
6063+ "itertools 0.14.0",
6064+ "levenshtein_automata",
6065+ "log",
6066+ "lru",
6067+ "lz4_flex",
6068+ "measure_time",
6069+ "memmap2",
6070+ "once_cell",
6071+ "oneshot",
6072+ "rayon",
6073+ "regex",
6074+ "rust-stemmers",
6075+ "rustc-hash",
6076+ "serde",
6077+ "serde_json",
6078+ "sketches-ddsketch",
6079+ "smallvec",
6080+ "tantivy-bitpacker",
6081+ "tantivy-columnar",
6082+ "tantivy-common",
6083+ "tantivy-fst",
6084+ "tantivy-query-grammar",
6085+ "tantivy-stacker",
6086+ "tantivy-tokenizer-api",
6087+ "tempfile",
6088+ "thiserror 2.0.18",
6089+ "time",
6090+ "typetag",
6091+ "uuid",
6092+ "winapi",
6093+]
6094+
6095+[[package]]
6096+name = "tantivy-bitpacker"
6097+version = "0.10.0"
6098+source = "registry+https://github.com/rust-lang/crates.io-index"
6099+checksum = "4fed3d674429bcd2de5d0a6d1aa5495fed8afd9c5ecce993019caf7615f53fa4"
6100+dependencies = [
6101+ "bitpacking",
6102+]
6103+
6104+[[package]]
6105+name = "tantivy-columnar"
6106+version = "0.7.0"
6107+source = "registry+https://github.com/rust-lang/crates.io-index"
6108+checksum = "c57166f5bcfd478f370ab8445afb4678dce44801fa5ce5c451aaf8595583c5dc"
6109+dependencies = [
6110+ "downcast-rs",
6111+ "fastdivide",
6112+ "itertools 0.14.0",
6113+ "serde",
6114+ "tantivy-bitpacker",
6115+ "tantivy-common",
6116+ "tantivy-sstable",
6117+ "tantivy-stacker",
6118+]
6119+
6120+[[package]]
6121+name = "tantivy-common"
6122+version = "0.11.0"
6123+source = "registry+https://github.com/rust-lang/crates.io-index"
6124+checksum = "bbf10915aa75da3c3b0d58b58853d2e889efbaf32d4982a4c3715dde6bba23e5"
6125+dependencies = [
6126+ "async-trait",
6127+ "byteorder",
6128+ "ownedbytes",
6129+ "serde",
6130+ "time",
6131+]
6132+
6133+[[package]]
6134+name = "tantivy-fst"
6135+version = "0.5.0"
6136+source = "registry+https://github.com/rust-lang/crates.io-index"
6137+checksum = "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18"
6138+dependencies = [
6139+ "byteorder",
6140+ "regex-syntax",
6141+ "utf8-ranges",
6142+]
6143+
6144+[[package]]
6145+name = "tantivy-query-grammar"
6146+version = "0.26.0"
6147+source = "registry+https://github.com/rust-lang/crates.io-index"
6148+checksum = "dfadb8526b6da90704feb293b0701a6aae62ea14983143344be2dc5ce30f1d82"
6149+dependencies = [
6150+ "fnv",
6151+ "nom",
6152+ "ordered-float 5.3.0",
6153+ "serde",
6154+ "serde_json",
6155+]
6156+
6157+[[package]]
6158+name = "tantivy-sstable"
6159+version = "0.7.0"
6160+source = "registry+https://github.com/rust-lang/crates.io-index"
6161+checksum = "8a2cfc3ac5164cbadc28965ffb145a8f47582a60ae5897859ad8d4316596c606"
6162+dependencies = [
6163+ "futures-util",
6164+ "itertools 0.14.0",
6165+ "tantivy-bitpacker",
6166+ "tantivy-common",
6167+ "tantivy-fst",
6168+ "zstd",
6169+]
6170+
6171+[[package]]
6172+name = "tantivy-stacker"
6173+version = "0.7.0"
6174+source = "registry+https://github.com/rust-lang/crates.io-index"
6175+checksum = "6cbb051742da9d53ca9e8fff43a9b10e319338b24e2c0e15d0372df19ffeb951"
6176+dependencies = [
6177+ "murmurhash32",
6178+ "tantivy-common",
6179+]
6180+
6181+[[package]]
6182+name = "tantivy-tokenizer-api"
6183+version = "0.7.0"
6184+source = "registry+https://github.com/rust-lang/crates.io-index"
6185+checksum = "eac258c2c6390673f2685813afeeafcb8c4e0ee7de8dd3fc46838dcc37263f98"
6186+dependencies = [
6187+ "serde",
6188+]
6189+
6190+[[package]]
6191+name = "tempfile"
6192+version = "3.23.0"
6193+source = "registry+https://github.com/rust-lang/crates.io-index"
6194+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
6195+dependencies = [
6196+ "fastrand",
6197+ "getrandom 0.3.4",
6198+ "once_cell",
6199+ "rustix",
6200+ "windows-sys 0.61.2",
6201+]
6202+
6203+[[package]]
6204+name = "tendril"
6205+version = "0.5.0"
6206+source = "registry+https://github.com/rust-lang/crates.io-index"
6207+checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24"
6208+dependencies = [
6209+ "new_debug_unreachable",
6210+ "utf-8",
6211+]
6212+
6213+[[package]]
6214+name = "terminfo"
6215+version = "0.9.0"
6216+source = "registry+https://github.com/rust-lang/crates.io-index"
6217+checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"
6218+dependencies = [
6219+ "fnv",
6220+ "nom",
6221+ "phf 0.11.3",
6222+ "phf_codegen 0.11.3",
6223+]
6224+
6225+[[package]]
6226+name = "termios"
6227+version = "0.3.3"
6228+source = "registry+https://github.com/rust-lang/crates.io-index"
6229+checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b"
6230+dependencies = [
6231+ "libc",
6232+]
6233+
6234+[[package]]
6235+name = "termwiz"
6236+version = "0.23.3"
6237+source = "registry+https://github.com/rust-lang/crates.io-index"
6238+checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"
6239+dependencies = [
6240+ "anyhow",
6241+ "base64",
6242+ "bitflags 2.10.0",
6243+ "fancy-regex",
6244+ "filedescriptor",
6245+ "finl_unicode",
6246+ "fixedbitset",
6247+ "hex",
6248+ "lazy_static",
6249+ "libc",
6250+ "log",
6251+ "memmem",
6252+ "nix 0.29.0",
6253+ "num-derive",
6254+ "num-traits",
6255+ "ordered-float 4.6.0",
6256+ "pest",
6257+ "pest_derive",
6258+ "phf 0.11.3",
6259+ "sha2",
6260+ "signal-hook",
6261+ "siphasher",
6262+ "terminfo",
6263+ "termios",
6264+ "thiserror 1.0.63",
6265+ "ucd-trie",
6266+ "unicode-segmentation",
6267+ "vtparse",
6268+ "wezterm-bidi",
6269+ "wezterm-blob-leases",
6270+ "wezterm-color-types",
6271+ "wezterm-dynamic",
6272+ "wezterm-input-types",
6273+ "winapi",
6274+]
6275+
6276+[[package]]
6277+name = "textwrap"
6278+version = "0.16.2"
6279+source = "registry+https://github.com/rust-lang/crates.io-index"
6280+checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"
6281+dependencies = [
6282+ "smawk",
6283+ "unicode-linebreak",
6284+ "unicode-width",
6285+]
6286+
6287+[[package]]
6288+name = "thiserror"
6289+version = "1.0.63"
6290+source = "registry+https://github.com/rust-lang/crates.io-index"
6291+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
6292+dependencies = [
6293+ "thiserror-impl 1.0.63",
6294+]
6295+
6296+[[package]]
6297+name = "thiserror"
6298+version = "2.0.18"
6299+source = "registry+https://github.com/rust-lang/crates.io-index"
6300+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
6301+dependencies = [
6302+ "thiserror-impl 2.0.18",
6303+]
6304+
6305+[[package]]
6306+name = "thiserror-impl"
6307+version = "1.0.63"
6308+source = "registry+https://github.com/rust-lang/crates.io-index"
6309+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
6310+dependencies = [
6311+ "proc-macro2",
6312+ "quote",
6313+ "syn 2.0.101",
6314+]
6315+
6316+[[package]]
6317+name = "thiserror-impl"
6318+version = "2.0.18"
6319+source = "registry+https://github.com/rust-lang/crates.io-index"
6320+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
6321+dependencies = [
6322+ "proc-macro2",
6323+ "quote",
6324+ "syn 2.0.101",
6325+]
6326+
6327+[[package]]
6328+name = "thread_local"
6329+version = "1.1.8"
6330+source = "registry+https://github.com/rust-lang/crates.io-index"
6331+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
6332+dependencies = [
6333+ "cfg-if",
6334+ "once_cell",
6335+]
6336+
6337+[[package]]
6338+name = "throbber-widgets-tui"
6339+version = "0.11.0"
6340+source = "registry+https://github.com/rust-lang/crates.io-index"
6341+checksum = "f1e6941f74491a80911cb8821cb1f55f7e13bca867b28a2b14e5a1daaf691eb3"
6342+dependencies = [
6343+ "ratatui",
6344+]
6345+
6346+[[package]]
6347+name = "time"
6348+version = "0.3.47"
6349+source = "registry+https://github.com/rust-lang/crates.io-index"
6350+checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
6351+dependencies = [
6352+ "deranged",
6353+ "itoa",
6354+ "libc",
6355+ "num-conv",
6356+ "num_threads",
6357+ "powerfmt",
6358+ "serde_core",
6359+ "time-core",
6360+ "time-macros",
6361+]
6362+
6363+[[package]]
6364+name = "time-core"
6365+version = "0.1.8"
6366+source = "registry+https://github.com/rust-lang/crates.io-index"
6367+checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
6368+
6369+[[package]]
6370+name = "time-macros"
6371+version = "0.2.27"
6372+source = "registry+https://github.com/rust-lang/crates.io-index"
6373+checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
6374+dependencies = [
6375+ "num-conv",
6376+ "time-core",
6377+]
6378+
6379+[[package]]
6380+name = "tinystr"
6381+version = "0.7.6"
6382+source = "registry+https://github.com/rust-lang/crates.io-index"
6383+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
6384+dependencies = [
6385+ "displaydoc",
6386+ "zerovec",
6387+]
6388+
6389+[[package]]
6390+name = "tinytemplate"
6391+version = "1.2.1"
6392+source = "registry+https://github.com/rust-lang/crates.io-index"
6393+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
6394+dependencies = [
6395+ "serde",
6396+ "serde_json",
6397+]
6398+
6399+[[package]]
6400+name = "tinyvec"
6401+version = "1.8.0"
6402+source = "registry+https://github.com/rust-lang/crates.io-index"
6403+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
6404+dependencies = [
6405+ "tinyvec_macros",
6406+]
6407+
6408+[[package]]
6409+name = "tinyvec_macros"
6410+version = "0.1.1"
6411+source = "registry+https://github.com/rust-lang/crates.io-index"
6412+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
6413+
6414+[[package]]
6415+name = "tokio"
6416+version = "1.48.0"
6417+source = "registry+https://github.com/rust-lang/crates.io-index"
6418+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
6419+dependencies = [
6420+ "bytes",
6421+ "libc",
6422+ "mio",
6423+ "pin-project-lite",
6424+ "socket2 0.6.0",
6425+ "tokio-macros",
6426+ "windows-sys 0.61.2",
6427+]
6428+
6429+[[package]]
6430+name = "tokio-macros"
6431+version = "2.6.0"
6432+source = "registry+https://github.com/rust-lang/crates.io-index"
6433+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
6434+dependencies = [
6435+ "proc-macro2",
6436+ "quote",
6437+ "syn 2.0.101",
6438+]
6439+
6440+[[package]]
6441+name = "tokio-rustls"
6442+version = "0.26.0"
6443+source = "registry+https://github.com/rust-lang/crates.io-index"
6444+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
6445+dependencies = [
6446+ "rustls",
6447+ "rustls-pki-types",
6448+ "tokio",
6449+]
6450+
6451+[[package]]
6452+name = "tokio-stream"
6453+version = "0.1.17"
6454+source = "registry+https://github.com/rust-lang/crates.io-index"
6455+checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
6456+dependencies = [
6457+ "futures-core",
6458+ "pin-project-lite",
6459+ "tokio",
6460+ "tokio-util",
6461+]
6462+
6463+[[package]]
6464+name = "tokio-test"
6465+version = "0.4.4"
6466+source = "registry+https://github.com/rust-lang/crates.io-index"
6467+checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7"
6468+dependencies = [
6469+ "async-stream",
6470+ "bytes",
6471+ "futures-core",
6472+ "tokio",
6473+ "tokio-stream",
6474+]
6475+
6476+[[package]]
6477+name = "tokio-util"
6478+version = "0.7.17"
6479+source = "registry+https://github.com/rust-lang/crates.io-index"
6480+checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
6481+dependencies = [
6482+ "bytes",
6483+ "futures-core",
6484+ "futures-sink",
6485+ "pin-project-lite",
6486+ "tokio",
6487+]
6488+
6489+[[package]]
6490+name = "toml"
6491+version = "0.9.7"
6492+source = "registry+https://github.com/rust-lang/crates.io-index"
6493+checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0"
6494+dependencies = [
6495+ "indexmap",
6496+ "serde_core",
6497+ "serde_spanned",
6498+ "toml_datetime 0.7.2",
6499+ "toml_parser",
6500+ "toml_writer",
6501+ "winnow 0.7.13",
6502+]
6503+
6504+[[package]]
6505+name = "toml"
6506+version = "1.1.2+spec-1.1.0"
6507+source = "registry+https://github.com/rust-lang/crates.io-index"
6508+checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
6509+dependencies = [
6510+ "serde_core",
6511+ "serde_spanned",
6512+ "toml_datetime 1.1.1+spec-1.1.0",
6513+ "toml_parser",
6514+ "winnow 1.0.1",
6515+]
6516+
6517+[[package]]
6518+name = "toml_datetime"
6519+version = "0.6.8"
6520+source = "registry+https://github.com/rust-lang/crates.io-index"
6521+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
6522+
6523+[[package]]
6524+name = "toml_datetime"
6525+version = "0.7.2"
6526+source = "registry+https://github.com/rust-lang/crates.io-index"
6527+checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1"
6528+dependencies = [
6529+ "serde_core",
6530+]
6531+
6532+[[package]]
6533+name = "toml_datetime"
6534+version = "1.1.1+spec-1.1.0"
6535+source = "registry+https://github.com/rust-lang/crates.io-index"
6536+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
6537+dependencies = [
6538+ "serde_core",
6539+]
6540+
6541+[[package]]
6542+name = "toml_edit"
6543+version = "0.22.22"
6544+source = "registry+https://github.com/rust-lang/crates.io-index"
6545+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
6546+dependencies = [
6547+ "indexmap",
6548+ "toml_datetime 0.6.8",
6549+ "winnow 0.6.20",
6550+]
6551+
6552+[[package]]
6553+name = "toml_parser"
6554+version = "1.1.2+spec-1.1.0"
6555+source = "registry+https://github.com/rust-lang/crates.io-index"
6556+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
6557+dependencies = [
6558+ "winnow 1.0.1",
6559+]
6560+
6561+[[package]]
6562+name = "toml_writer"
6563+version = "1.0.4"
6564+source = "registry+https://github.com/rust-lang/crates.io-index"
6565+checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
6566+
6567+[[package]]
6568+name = "tower"
6569+version = "0.5.2"
6570+source = "registry+https://github.com/rust-lang/crates.io-index"
6571+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
6572+dependencies = [
6573+ "futures-core",
6574+ "futures-util",
6575+ "pin-project-lite",
6576+ "sync_wrapper",
6577+ "tokio",
6578+ "tower-layer",
6579+ "tower-service",
6580+ "tracing",
6581+]
6582+
6583+[[package]]
6584+name = "tower-http"
6585+version = "0.6.8"
6586+source = "registry+https://github.com/rust-lang/crates.io-index"
6587+checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
6588+dependencies = [
6589+ "async-compression",
6590+ "bitflags 2.10.0",
6591+ "bytes",
6592+ "futures-core",
6593+ "futures-util",
6594+ "http",
6595+ "http-body",
6596+ "http-body-util",
6597+ "iri-string",
6598+ "pin-project-lite",
6599+ "tokio",
6600+ "tokio-util",
6601+ "tower",
6602+ "tower-layer",
6603+ "tower-service",
6604+]
6605+
6606+[[package]]
6607+name = "tower-layer"
6608+version = "0.3.3"
6609+source = "registry+https://github.com/rust-lang/crates.io-index"
6610+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
6611+
6612+[[package]]
6613+name = "tower-service"
6614+version = "0.3.3"
6615+source = "registry+https://github.com/rust-lang/crates.io-index"
6616+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
6617+
6618+[[package]]
6619+name = "tracing"
6620+version = "0.1.41"
6621+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"
6622+dependencies = [
6623+ "log",
6624+ "pin-project-lite",
6625+ "tracing-attributes",
6626+ "tracing-core",
6627+]
6628+
6629+[[package]]
6630+name = "tracing-appender"
6631+version = "0.2.3"
6632+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"
6633+dependencies = [
6634+ "crossbeam-channel",
6635+ "thiserror 2.0.18",
6636+ "time",
6637+ "tracing-subscriber",
6638+]
6639+
6640+[[package]]
6641+name = "tracing-attributes"
6642+version = "0.1.30"
6643+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"
6644+dependencies = [
6645+ "proc-macro2",
6646+ "quote",
6647+ "syn 2.0.101",
6648+]
6649+
6650+[[package]]
6651+name = "tracing-core"
6652+version = "0.1.34"
6653+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"
6654+dependencies = [
6655+ "once_cell",
6656+ "valuable",
6657+]
6658+
6659+[[package]]
6660+name = "tracing-error"
6661+version = "0.2.0"
6662+source = "registry+https://github.com/rust-lang/crates.io-index"
6663+checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e"
6664+dependencies = [
6665+ "tracing",
6666+ "tracing-subscriber",
6667+]
6668+
6669+[[package]]
6670+name = "tracing-log"
6671+version = "0.2.0"
6672+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"
6673+dependencies = [
6674+ "log",
6675+ "once_cell",
6676+ "tracing-core",
6677+]
6678+
6679+[[package]]
6680+name = "tracing-subscriber"
6681+version = "0.3.20"
6682+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"
6683+dependencies = [
6684+ "matchers",
6685+ "nu-ansi-term",
6686+ "once_cell",
6687+ "regex-automata",
6688+ "sharded-slab",
6689+ "smallvec",
6690+ "thread_local",
6691+ "tracing",
6692+ "tracing-core",
6693+ "tracing-log",
6694+]
6695+
6696+[[package]]
6697+name = "try-lock"
6698+version = "0.2.5"
6699+source = "registry+https://github.com/rust-lang/crates.io-index"
6700+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
6701+
6702+[[package]]
6703+name = "tui-widget-list"
6704+version = "0.15.2"
6705+source = "registry+https://github.com/rust-lang/crates.io-index"
6706+checksum = "8fbf7f6c7d04beb3602630d83db44e81d7a1de1fea11ca3435d82e094c5c0192"
6707+dependencies = [
6708+ "ratatui-core",
6709+ "ratatui-widgets",
6710+]
6711+
6712+[[package]]
6713+name = "typeid"
6714+version = "1.0.3"
6715+source = "registry+https://github.com/rust-lang/crates.io-index"
6716+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
6717+
6718+[[package]]
6719+name = "typenum"
6720+version = "1.17.0"
6721+source = "registry+https://github.com/rust-lang/crates.io-index"
6722+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
6723+
6724+[[package]]
6725+name = "typetag"
6726+version = "0.2.22"
6727+source = "registry+https://github.com/rust-lang/crates.io-index"
6728+checksum = "c5a897b12c6c1151ad0b138b8db50252dc301f93bc3b027db05eec82aeed298c"
6729+dependencies = [
6730+ "erased-serde",
6731+ "inventory",
6732+ "once_cell",
6733+ "serde",
6734+ "typetag-impl",
6735+]
6736+
6737+[[package]]
6738+name = "typetag-impl"
6739+version = "0.2.22"
6740+source = "registry+https://github.com/rust-lang/crates.io-index"
6741+checksum = "cf808357c6ed7e13ba0f3277ec8d8f21b2d501274895104263985330c726c1c5"
6742+dependencies = [
6743+ "proc-macro2",
6744+ "quote",
6745+ "syn 2.0.101",
6746+]
6747+
6748+[[package]]
6749+name = "typewit"
6750+version = "1.14.2"
6751+source = "registry+https://github.com/rust-lang/crates.io-index"
6752+checksum = "f8c1ae7cc0fdb8b842d65d127cb981574b0d2b249b74d1c7a2986863dc134f71"
6753+
6754+[[package]]
6755+name = "ucd-trie"
6756+version = "0.1.7"
6757+source = "registry+https://github.com/rust-lang/crates.io-index"
6758+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
6759+
6760+[[package]]
6761+name = "ulid"
6762+version = "1.1.4"
6763+source = "registry+https://github.com/rust-lang/crates.io-index"
6764+checksum = "f294bff79170ed1c5633812aff1e565c35d993a36e757f9bc0accf5eec4e6045"
6765+dependencies = [
6766+ "rand 0.8.6",
6767+ "web-time",
6768+]
6769+
6770+[[package]]
6771+name = "uname"
6772+version = "0.1.1"
6773+source = "registry+https://github.com/rust-lang/crates.io-index"
6774+checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8"
6775+dependencies = [
6776+ "libc",
6777+]
6778+
6779+[[package]]
6780+name = "unarray"
6781+version = "0.1.4"
6782+source = "registry+https://github.com/rust-lang/crates.io-index"
6783+checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
6784+
6785+[[package]]
6786+name = "unicase"
6787+version = "2.7.0"
6788+source = "registry+https://github.com/rust-lang/crates.io-index"
6789+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
6790+dependencies = [
6791+ "version_check",
6792+]
6793+
6794+[[package]]
6795+name = "unicode-ident"
6796+version = "1.0.22"
6797+source = "registry+https://github.com/rust-lang/crates.io-index"
6798+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
6799+
6800+[[package]]
6801+name = "unicode-linebreak"
6802+version = "0.1.5"
6803+source = "registry+https://github.com/rust-lang/crates.io-index"
6804+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
6805+
6806+[[package]]
6807+name = "unicode-normalization"
6808+version = "0.1.25"
6809+source = "registry+https://github.com/rust-lang/crates.io-index"
6810+checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"
6811+dependencies = [
6812+ "tinyvec",
6813+]
6814+
6815+[[package]]
6816+name = "unicode-segmentation"
6817+version = "1.12.0"
6818+source = "registry+https://github.com/rust-lang/crates.io-index"
6819+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
6820+
6821+[[package]]
6822+name = "unicode-truncate"
6823+version = "2.0.1"
6824+source = "registry+https://github.com/rust-lang/crates.io-index"
6825+checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5"
6826+dependencies = [
6827+ "itertools 0.14.0",
6828+ "unicode-segmentation",
6829+ "unicode-width",
6830+]
6831+
6832+[[package]]
6833+name = "unicode-width"
6834+version = "0.2.0"
6835+source = "registry+https://github.com/rust-lang/crates.io-index"
6836+checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
6837+
6838+[[package]]
6839+name = "unicode-xid"
6840+version = "0.2.6"
6841+source = "registry+https://github.com/rust-lang/crates.io-index"
6842+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
6843+
6844+[[package]]
6845+name = "uniffi"
6846+version = "0.31.0"
6847+source = "registry+https://github.com/rust-lang/crates.io-index"
6848+checksum = "b8c6dec3fc6645f71a16a3fa9ff57991028153bd194ca97f4b55e610c73ce66a"
6849+dependencies = [
6850+ "anyhow",
6851+ "camino",
6852+ "cargo_metadata",
6853+ "clap",
6854+ "uniffi_bindgen",
6855+ "uniffi_build",
6856+ "uniffi_core",
6857+ "uniffi_macros",
6858+ "uniffi_pipeline",
6859+]
6860+
6861+[[package]]
6862+name = "uniffi-bindgen"
6863+version = "0.1.0"
6864+dependencies = [
6865+ "uniffi",
6866+]
6867+
6868+[[package]]
6869+name = "uniffi_bindgen"
6870+version = "0.31.0"
6871+source = "registry+https://github.com/rust-lang/crates.io-index"
6872+checksum = "4ed0150801958d4825da56a41c71f000a457ac3a4613fa9647df78ac4b6b6881"
6873+dependencies = [
6874+ "anyhow",
6875+ "askama",
6876+ "camino",
6877+ "cargo_metadata",
6878+ "fs-err",
6879+ "glob",
6880+ "goblin 0.8.2",
6881+ "heck",
6882+ "indexmap",
6883+ "once_cell",
6884+ "serde",
6885+ "tempfile",
6886+ "textwrap",
6887+ "toml 0.9.7",
6888+ "uniffi_internal_macros",
6889+ "uniffi_meta",
6890+ "uniffi_pipeline",
6891+ "uniffi_udl",
6892+]
6893+
6894+[[package]]
6895+name = "uniffi_build"
6896+version = "0.31.0"
6897+source = "registry+https://github.com/rust-lang/crates.io-index"
6898+checksum = "b78fd9271a4c2e85bd2c266c5a9ede1fac676eb39fd77f636c27eaf67426fd5f"
6899+dependencies = [
6900+ "anyhow",
6901+ "camino",
6902+ "uniffi_bindgen",
6903+]
6904+
6905+[[package]]
6906+name = "uniffi_core"
6907+version = "0.31.0"
6908+source = "registry+https://github.com/rust-lang/crates.io-index"
6909+checksum = "b0ef62e69762fbb9386dcb6c87cd3dd05d525fa8a3a579a290892e60ddbda47e"
6910+dependencies = [
6911+ "anyhow",
6912+ "async-compat",
6913+ "bytes",
6914+ "once_cell",
6915+ "static_assertions",
6916+]
6917+
6918+[[package]]
6919+name = "uniffi_internal_macros"
6920+version = "0.31.0"
6921+source = "registry+https://github.com/rust-lang/crates.io-index"
6922+checksum = "98f51ebca0d9a4b2aa6c644d5ede45c56f73906b96403c08a1985e75ccb64a01"
6923+dependencies = [
6924+ "anyhow",
6925+ "indexmap",
6926+ "proc-macro2",
6927+ "quote",
6928+ "syn 2.0.101",
6929+]
6930+
6931+[[package]]
6932+name = "uniffi_macros"
6933+version = "0.31.0"
6934+source = "registry+https://github.com/rust-lang/crates.io-index"
6935+checksum = "db9d12529f1223d014fd501e5f29ca0884d15d6ed5ddddd9f506e55350327dc3"
6936+dependencies = [
6937+ "camino",
6938+ "fs-err",
6939+ "once_cell",
6940+ "proc-macro2",
6941+ "quote",
6942+ "serde",
6943+ "syn 2.0.101",
6944+ "toml 0.9.7",
6945+ "uniffi_meta",
6946+]
6947+
6948+[[package]]
6949+name = "uniffi_meta"
6950+version = "0.31.0"
6951+source = "registry+https://github.com/rust-lang/crates.io-index"
6952+checksum = "9df6d413db2827c68588f8149d30d49b71d540d46539e435b23a7f7dbd4d4f86"
6953+dependencies = [
6954+ "anyhow",
6955+ "siphasher",
6956+ "uniffi_internal_macros",
6957+ "uniffi_pipeline",
6958+]
6959+
6960+[[package]]
6961+name = "uniffi_pipeline"
6962+version = "0.31.0"
6963+source = "registry+https://github.com/rust-lang/crates.io-index"
6964+checksum = "a806dddc8208f22efd7e95a5cdf88ed43d0f3271e8f63b47e757a8bbdb43b63a"
6965+dependencies = [
6966+ "anyhow",
6967+ "heck",
6968+ "indexmap",
6969+ "tempfile",
6970+ "uniffi_internal_macros",
6971+]
6972+
6973+[[package]]
6974+name = "uniffi_udl"
6975+version = "0.31.0"
6976+source = "registry+https://github.com/rust-lang/crates.io-index"
6977+checksum = "0d1a7339539bf6f6fa3e9b534dece13f778bda2d54b1a6d4e40b4d6090ac26e7"
6978+dependencies = [
6979+ "anyhow",
6980+ "textwrap",
6981+ "uniffi_meta",
6982+ "weedle2",
6983+]
6984+
6985+[[package]]
6986+name = "universal-hash"
6987+version = "0.5.1"
6988+source = "registry+https://github.com/rust-lang/crates.io-index"
6989+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
6990+dependencies = [
6991+ "crypto-common",
6992+ "subtle",
6993+]
6994+
6995+[[package]]
6996+name = "untrusted"
6997+version = "0.9.0"
6998+source = "registry+https://github.com/rust-lang/crates.io-index"
6999+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
7000+
7001+[[package]]
7002+name = "url"
7003+version = "2.5.7"
7004+source = "registry+https://github.com/rust-lang/crates.io-index"
7005+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
7006+dependencies = [
7007+ "form_urlencoded",
7008+ "idna",
7009+ "percent-encoding",
7010+ "serde",
7011+]
7012+
7013+[[package]]
7014+name = "urlencoding"
7015+version = "2.1.3"
7016+source = "registry+https://github.com/rust-lang/crates.io-index"
7017+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
7018+
7019+[[package]]
7020+name = "utf-8"
7021+version = "0.7.6"
7022+source = "registry+https://github.com/rust-lang/crates.io-index"
7023+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
7024+
7025+[[package]]
7026+name = "utf16_iter"
7027+version = "1.0.5"
7028+source = "registry+https://github.com/rust-lang/crates.io-index"
7029+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
7030+
7031+[[package]]
7032+name = "utf8-ranges"
7033+version = "1.0.5"
7034+source = "registry+https://github.com/rust-lang/crates.io-index"
7035+checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba"
7036+
7037+[[package]]
7038+name = "utf8_iter"
7039+version = "1.0.4"
7040+source = "registry+https://github.com/rust-lang/crates.io-index"
7041+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
7042+
7043+[[package]]
7044+name = "utf8parse"
7045+version = "0.2.2"
7046+source = "registry+https://github.com/rust-lang/crates.io-index"
7047+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
7048+
7049+[[package]]
7050+name = "uuid"
7051+version = "1.18.1"
7052+source = "registry+https://github.com/rust-lang/crates.io-index"
7053+checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
7054+dependencies = [
7055+ "atomic",
7056+ "getrandom 0.3.4",
7057+ "js-sys",
7058+ "serde",
7059+ "wasm-bindgen",
7060+]
7061+
7062+[[package]]
7063+name = "valuable"
7064+version = "0.1.0"
7065+source = "registry+https://github.com/rust-lang/crates.io-index"
7066+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
7067+
7068+[[package]]
7069+name = "vcpkg"
7070+version = "0.2.15"
7071+source = "registry+https://github.com/rust-lang/crates.io-index"
7072+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
7073+
7074+[[package]]
7075+name = "vergen"
7076+version = "9.0.6"
7077+source = "registry+https://github.com/rust-lang/crates.io-index"
7078+checksum = "6b2bf58be11fc9414104c6d3a2e464163db5ef74b12296bda593cac37b6e4777"
7079+dependencies = [
7080+ "anyhow",
7081+ "derive_builder",
7082+ "rustversion",
7083+ "time",
7084+ "vergen-lib",
7085+]
7086+
7087+[[package]]
7088+name = "vergen-gitcl"
7089+version = "1.0.8"
7090+source = "registry+https://github.com/rust-lang/crates.io-index"
7091+checksum = "b9dfc1de6eb2e08a4ddf152f1b179529638bedc0ea95e6d667c014506377aefe"
7092+dependencies = [
7093+ "anyhow",
7094+ "derive_builder",
7095+ "rustversion",
7096+ "time",
7097+ "vergen",
7098+ "vergen-lib",
7099+]
7100+
7101+[[package]]
7102+name = "vergen-lib"
7103+version = "0.1.6"
7104+source = "registry+https://github.com/rust-lang/crates.io-index"
7105+checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166"
7106+dependencies = [
7107+ "anyhow",
7108+ "derive_builder",
7109+ "rustversion",
7110+]
7111+
7112+[[package]]
7113+name = "version_check"
7114+version = "0.9.4"
7115+source = "registry+https://github.com/rust-lang/crates.io-index"
7116+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
7117+
7118+[[package]]
7119+name = "vodozemac"
7120+version = "0.10.0"
7121+source = "registry+https://github.com/rust-lang/crates.io-index"
7122+checksum = "b98bf83c0992966775b8012f194b07b44928996163e5a05b741b43891571ae5b"
7123+dependencies = [
7124+ "aes",
7125+ "arrayvec",
7126+ "base64",
7127+ "base64ct",
7128+ "cbc",
7129+ "chacha20poly1305",
7130+ "curve25519-dalek",
7131+ "ed25519-dalek",
7132+ "getrandom 0.2.15",
7133+ "hkdf",
7134+ "hmac",
7135+ "matrix-pickle",
7136+ "prost",
7137+ "rand 0.8.6",
7138+ "serde",
7139+ "serde_bytes",
7140+ "serde_json",
7141+ "sha2",
7142+ "subtle",
7143+ "thiserror 2.0.18",
7144+ "x25519-dalek",
7145+ "zeroize",
7146+]
7147+
7148+[[package]]
7149+name = "vtparse"
7150+version = "0.6.2"
7151+source = "registry+https://github.com/rust-lang/crates.io-index"
7152+checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0"
7153+dependencies = [
7154+ "utf8parse",
7155+]
7156+
7157+[[package]]
7158+name = "walkdir"
7159+version = "2.5.0"
7160+source = "registry+https://github.com/rust-lang/crates.io-index"
7161+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
7162+dependencies = [
7163+ "same-file",
7164+ "winapi-util",
7165+]
7166+
7167+[[package]]
7168+name = "want"
7169+version = "0.3.1"
7170+source = "registry+https://github.com/rust-lang/crates.io-index"
7171+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
7172+dependencies = [
7173+ "try-lock",
7174+]
7175+
7176+[[package]]
7177+name = "wasi"
7178+version = "0.11.0+wasi-snapshot-preview1"
7179+source = "registry+https://github.com/rust-lang/crates.io-index"
7180+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
7181+
7182+[[package]]
7183+name = "wasip2"
7184+version = "1.0.2+wasi-0.2.9"
7185+source = "registry+https://github.com/rust-lang/crates.io-index"
7186+checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
7187+dependencies = [
7188+ "wit-bindgen",
7189+]
7190+
7191+[[package]]
7192+name = "wasip3"
7193+version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
7194+source = "registry+https://github.com/rust-lang/crates.io-index"
7195+checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
7196+dependencies = [
7197+ "wit-bindgen",
7198+]
7199+
7200+[[package]]
7201+name = "wasm-bindgen"
7202+version = "0.2.114"
7203+source = "registry+https://github.com/rust-lang/crates.io-index"
7204+checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
7205+dependencies = [
7206+ "cfg-if",
7207+ "once_cell",
7208+ "rustversion",
7209+ "wasm-bindgen-macro",
7210+ "wasm-bindgen-shared",
7211+]
7212+
7213+[[package]]
7214+name = "wasm-bindgen-futures"
7215+version = "0.4.64"
7216+source = "registry+https://github.com/rust-lang/crates.io-index"
7217+checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"
7218+dependencies = [
7219+ "cfg-if",
7220+ "futures-util",
7221+ "js-sys",
7222+ "once_cell",
7223+ "wasm-bindgen",
7224+ "web-sys",
7225+]
7226+
7227+[[package]]
7228+name = "wasm-bindgen-macro"
7229+version = "0.2.114"
7230+source = "registry+https://github.com/rust-lang/crates.io-index"
7231+checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
7232+dependencies = [
7233+ "quote",
7234+ "wasm-bindgen-macro-support",
7235+]
7236+
7237+[[package]]
7238+name = "wasm-bindgen-macro-support"
7239+version = "0.2.114"
7240+source = "registry+https://github.com/rust-lang/crates.io-index"
7241+checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
7242+dependencies = [
7243+ "bumpalo",
7244+ "proc-macro2",
7245+ "quote",
7246+ "syn 2.0.101",
7247+ "wasm-bindgen-shared",
7248+]
7249+
7250+[[package]]
7251+name = "wasm-bindgen-shared"
7252+version = "0.2.114"
7253+source = "registry+https://github.com/rust-lang/crates.io-index"
7254+checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
7255+dependencies = [
7256+ "unicode-ident",
7257+]
7258+
7259+[[package]]
7260+name = "wasm-bindgen-test"
7261+version = "0.3.64"
7262+source = "registry+https://github.com/rust-lang/crates.io-index"
7263+checksum = "6311c867385cc7d5602463b31825d454d0837a3aba7cdb5e56d5201792a3f7fe"
7264+dependencies = [
7265+ "async-trait",
7266+ "cast",
7267+ "js-sys",
7268+ "libm",
7269+ "minicov",
7270+ "nu-ansi-term",
7271+ "num-traits",
7272+ "oorandom",
7273+ "serde",
7274+ "serde_json",
7275+ "wasm-bindgen",
7276+ "wasm-bindgen-futures",
7277+ "wasm-bindgen-test-macro",
7278+ "wasm-bindgen-test-shared",
7279+]
7280+
7281+[[package]]
7282+name = "wasm-bindgen-test-macro"
7283+version = "0.3.64"
7284+source = "registry+https://github.com/rust-lang/crates.io-index"
7285+checksum = "67008cdde4769831958536b0f11b3bdd0380bde882be17fff9c2f34bb4549abd"
7286+dependencies = [
7287+ "proc-macro2",
7288+ "quote",
7289+ "syn 2.0.101",
7290+]
7291+
7292+[[package]]
7293+name = "wasm-bindgen-test-shared"
7294+version = "0.2.114"
7295+source = "registry+https://github.com/rust-lang/crates.io-index"
7296+checksum = "cfe29135b180b72b04c74aa97b2b4a2ef275161eff9a6c7955ea9eaedc7e1d4e"
7297+
7298+[[package]]
7299+name = "wasm-encoder"
7300+version = "0.244.0"
7301+source = "registry+https://github.com/rust-lang/crates.io-index"
7302+checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
7303+dependencies = [
7304+ "leb128fmt",
7305+ "wasmparser",
7306+]
7307+
7308+[[package]]
7309+name = "wasm-metadata"
7310+version = "0.244.0"
7311+source = "registry+https://github.com/rust-lang/crates.io-index"
7312+checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
7313+dependencies = [
7314+ "anyhow",
7315+ "indexmap",
7316+ "wasm-encoder",
7317+ "wasmparser",
7318+]
7319+
7320+[[package]]
7321+name = "wasm-streams"
7322+version = "0.5.0"
7323+source = "registry+https://github.com/rust-lang/crates.io-index"
7324+checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"
7325+dependencies = [
7326+ "futures-util",
7327+ "js-sys",
7328+ "wasm-bindgen",
7329+ "wasm-bindgen-futures",
7330+ "web-sys",
7331+]
7332+
7333+[[package]]
7334+name = "wasm_evt_listener"
7335+version = "0.1.0"
7336+source = "registry+https://github.com/rust-lang/crates.io-index"
7337+checksum = "dc92d6378b411ed94839112a36d9dbc77143451d85b05dfb0cce93a78dab1963"
7338+dependencies = [
7339+ "accessory",
7340+ "derivative",
7341+ "derive_more 1.0.0",
7342+ "fancy_constructor",
7343+ "futures-core",
7344+ "js-sys",
7345+ "smallvec",
7346+ "tokio",
7347+ "wasm-bindgen",
7348+ "web-sys",
7349+]
7350+
7351+[[package]]
7352+name = "wasmparser"
7353+version = "0.244.0"
7354+source = "registry+https://github.com/rust-lang/crates.io-index"
7355+checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
7356+dependencies = [
7357+ "bitflags 2.10.0",
7358+ "hashbrown 0.15.2",
7359+ "indexmap",
7360+ "semver",
7361+]
7362+
7363+[[package]]
7364+name = "web-sys"
7365+version = "0.3.91"
7366+source = "registry+https://github.com/rust-lang/crates.io-index"
7367+checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
7368+dependencies = [
7369+ "js-sys",
7370+ "wasm-bindgen",
7371+]
7372+
7373+[[package]]
7374+name = "web-time"
7375+version = "1.1.0"
7376+source = "registry+https://github.com/rust-lang/crates.io-index"
7377+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
7378+dependencies = [
7379+ "js-sys",
7380+ "serde",
7381+ "wasm-bindgen",
7382+]
7383+
7384+[[package]]
7385+name = "web_atoms"
7386+version = "0.2.3"
7387+source = "registry+https://github.com/rust-lang/crates.io-index"
7388+checksum = "57a9779e9f04d2ac1ce317aee707aa2f6b773afba7b931222bff6983843b1576"
7389+dependencies = [
7390+ "phf 0.13.1",
7391+ "phf_codegen 0.13.1",
7392+ "string_cache",
7393+ "string_cache_codegen",
7394+]
7395+
7396+[[package]]
7397+name = "webpki-root-certs"
7398+version = "1.0.2"
7399+source = "registry+https://github.com/rust-lang/crates.io-index"
7400+checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a"
7401+dependencies = [
7402+ "rustls-pki-types",
7403+]
7404+
7405+[[package]]
7406+name = "webpki-roots"
7407+version = "1.0.6"
7408+source = "registry+https://github.com/rust-lang/crates.io-index"
7409+checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed"
7410+dependencies = [
7411+ "rustls-pki-types",
7412+]
7413+
7414+[[package]]
7415+name = "weedle2"
7416+version = "5.0.0"
7417+source = "registry+https://github.com/rust-lang/crates.io-index"
7418+checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e"
7419+dependencies = [
7420+ "nom",
7421+]
7422+
7423+[[package]]
7424+name = "wezterm-bidi"
7425+version = "0.2.3"
7426+source = "registry+https://github.com/rust-lang/crates.io-index"
7427+checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec"
7428+dependencies = [
7429+ "log",
7430+ "wezterm-dynamic",
7431+]
7432+
7433+[[package]]
7434+name = "wezterm-blob-leases"
7435+version = "0.1.1"
7436+source = "registry+https://github.com/rust-lang/crates.io-index"
7437+checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7"
7438+dependencies = [
7439+ "getrandom 0.3.4",
7440+ "mac_address",
7441+ "sha2",
7442+ "thiserror 1.0.63",
7443+ "uuid",
7444+]
7445+
7446+[[package]]
7447+name = "wezterm-color-types"
7448+version = "0.3.0"
7449+source = "registry+https://github.com/rust-lang/crates.io-index"
7450+checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296"
7451+dependencies = [
7452+ "csscolorparser",
7453+ "deltae",
7454+ "lazy_static",
7455+ "wezterm-dynamic",
7456+]
7457+
7458+[[package]]
7459+name = "wezterm-dynamic"
7460+version = "0.2.1"
7461+source = "registry+https://github.com/rust-lang/crates.io-index"
7462+checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac"
7463+dependencies = [
7464+ "log",
7465+ "ordered-float 4.6.0",
7466+ "strsim",
7467+ "thiserror 1.0.63",
7468+ "wezterm-dynamic-derive",
7469+]
7470+
7471+[[package]]
7472+name = "wezterm-dynamic-derive"
7473+version = "0.1.1"
7474+source = "registry+https://github.com/rust-lang/crates.io-index"
7475+checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b"
7476+dependencies = [
7477+ "proc-macro2",
7478+ "quote",
7479+ "syn 1.0.109",
7480+]
7481+
7482+[[package]]
7483+name = "wezterm-input-types"
7484+version = "0.1.0"
7485+source = "registry+https://github.com/rust-lang/crates.io-index"
7486+checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e"
7487+dependencies = [
7488+ "bitflags 1.3.2",
7489+ "euclid",
7490+ "lazy_static",
7491+ "serde",
7492+ "wezterm-dynamic",
7493+]
7494+
7495+[[package]]
7496+name = "wildmatch"
7497+version = "2.6.1"
7498+source = "registry+https://github.com/rust-lang/crates.io-index"
7499+checksum = "29333c3ea1ba8b17211763463ff24ee84e41c78224c16b001cd907e663a38c68"
7500+
7501+[[package]]
7502+name = "winapi"
7503+version = "0.3.9"
7504+source = "registry+https://github.com/rust-lang/crates.io-index"
7505+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
7506+dependencies = [
7507+ "winapi-i686-pc-windows-gnu",
7508+ "winapi-x86_64-pc-windows-gnu",
7509+]
7510+
7511+[[package]]
7512+name = "winapi-i686-pc-windows-gnu"
7513+version = "0.4.0"
7514+source = "registry+https://github.com/rust-lang/crates.io-index"
7515+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
7516+
7517+[[package]]
7518+name = "winapi-util"
7519+version = "0.1.8"
7520+source = "registry+https://github.com/rust-lang/crates.io-index"
7521+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
7522+dependencies = [
7523+ "windows-sys 0.52.0",
7524+]
7525+
7526+[[package]]
7527+name = "winapi-x86_64-pc-windows-gnu"
7528+version = "0.4.0"
7529+source = "registry+https://github.com/rust-lang/crates.io-index"
7530+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
7531+
7532+[[package]]
7533+name = "windows"
7534+version = "0.61.1"
7535+source = "registry+https://github.com/rust-lang/crates.io-index"
7536+checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419"
7537+dependencies = [
7538+ "windows-collections",
7539+ "windows-core 0.61.2",
7540+ "windows-future",
7541+ "windows-link 0.1.1",
7542+ "windows-numerics",
7543+]
7544+
7545+[[package]]
7546+name = "windows-collections"
7547+version = "0.2.0"
7548+source = "registry+https://github.com/rust-lang/crates.io-index"
7549+checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
7550+dependencies = [
7551+ "windows-core 0.61.2",
7552+]
7553+
7554+[[package]]
7555+name = "windows-core"
7556+version = "0.52.0"
7557+source = "registry+https://github.com/rust-lang/crates.io-index"
7558+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
7559+dependencies = [
7560+ "windows-targets 0.52.6",
7561+]
7562+
7563+[[package]]
7564+name = "windows-core"
7565+version = "0.61.2"
7566+source = "registry+https://github.com/rust-lang/crates.io-index"
7567+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
7568+dependencies = [
7569+ "windows-implement",
7570+ "windows-interface",
7571+ "windows-link 0.1.1",
7572+ "windows-result",
7573+ "windows-strings",
7574+]
7575+
7576+[[package]]
7577+name = "windows-future"
7578+version = "0.2.1"
7579+source = "registry+https://github.com/rust-lang/crates.io-index"
7580+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
7581+dependencies = [
7582+ "windows-core 0.61.2",
7583+ "windows-link 0.1.1",
7584+ "windows-threading",
7585+]
7586+
7587+[[package]]
7588+name = "windows-implement"
7589+version = "0.60.0"
7590+source = "registry+https://github.com/rust-lang/crates.io-index"
7591+checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
7592+dependencies = [
7593+ "proc-macro2",
7594+ "quote",
7595+ "syn 2.0.101",
7596+]
7597+
7598+[[package]]
7599+name = "windows-interface"
7600+version = "0.59.1"
7601+source = "registry+https://github.com/rust-lang/crates.io-index"
7602+checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
7603+dependencies = [
7604+ "proc-macro2",
7605+ "quote",
7606+ "syn 2.0.101",
7607+]
7608+
7609+[[package]]
7610+name = "windows-link"
7611+version = "0.1.1"
7612+source = "registry+https://github.com/rust-lang/crates.io-index"
7613+checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
7614+
7615+[[package]]
7616+name = "windows-link"
7617+version = "0.2.1"
7618+source = "registry+https://github.com/rust-lang/crates.io-index"
7619+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
7620+
7621+[[package]]
7622+name = "windows-numerics"
7623+version = "0.2.0"
7624+source = "registry+https://github.com/rust-lang/crates.io-index"
7625+checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
7626+dependencies = [
7627+ "windows-core 0.61.2",
7628+ "windows-link 0.1.1",
7629+]
7630+
7631+[[package]]
7632+name = "windows-result"
7633+version = "0.3.4"
7634+source = "registry+https://github.com/rust-lang/crates.io-index"
7635+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
7636+dependencies = [
7637+ "windows-link 0.1.1",
7638+]
7639+
7640+[[package]]
7641+name = "windows-strings"
7642+version = "0.4.2"
7643+source = "registry+https://github.com/rust-lang/crates.io-index"
7644+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
7645+dependencies = [
7646+ "windows-link 0.1.1",
7647+]
7648+
7649+[[package]]
7650+name = "windows-sys"
7651+version = "0.45.0"
7652+source = "registry+https://github.com/rust-lang/crates.io-index"
7653+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
7654+dependencies = [
7655+ "windows-targets 0.42.2",
7656+]
7657+
7658+[[package]]
7659+name = "windows-sys"
7660+version = "0.48.0"
7661+source = "registry+https://github.com/rust-lang/crates.io-index"
7662+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
7663+dependencies = [
7664+ "windows-targets 0.48.5",
7665+]
7666+
7667+[[package]]
7668+name = "windows-sys"
7669+version = "0.52.0"
7670+source = "registry+https://github.com/rust-lang/crates.io-index"
7671+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
7672+dependencies = [
7673+ "windows-targets 0.52.6",
7674+]
7675+
7676+[[package]]
7677+name = "windows-sys"
7678+version = "0.59.0"
7679+source = "registry+https://github.com/rust-lang/crates.io-index"
7680+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
7681+dependencies = [
7682+ "windows-targets 0.52.6",
7683+]
7684+
7685+[[package]]
7686+name = "windows-sys"
7687+version = "0.60.2"
7688+source = "registry+https://github.com/rust-lang/crates.io-index"
7689+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
7690+dependencies = [
7691+ "windows-targets 0.53.5",
7692+]
7693+
7694+[[package]]
7695+name = "windows-sys"
7696+version = "0.61.2"
7697+source = "registry+https://github.com/rust-lang/crates.io-index"
7698+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
7699+dependencies = [
7700+ "windows-link 0.2.1",
7701+]
7702+
7703+[[package]]
7704+name = "windows-targets"
7705+version = "0.42.2"
7706+source = "registry+https://github.com/rust-lang/crates.io-index"
7707+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
7708+dependencies = [
7709+ "windows_aarch64_gnullvm 0.42.2",
7710+ "windows_aarch64_msvc 0.42.2",
7711+ "windows_i686_gnu 0.42.2",
7712+ "windows_i686_msvc 0.42.2",
7713+ "windows_x86_64_gnu 0.42.2",
7714+ "windows_x86_64_gnullvm 0.42.2",
7715+ "windows_x86_64_msvc 0.42.2",
7716+]
7717+
7718+[[package]]
7719+name = "windows-targets"
7720+version = "0.48.5"
7721+source = "registry+https://github.com/rust-lang/crates.io-index"
7722+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
7723+dependencies = [
7724+ "windows_aarch64_gnullvm 0.48.5",
7725+ "windows_aarch64_msvc 0.48.5",
7726+ "windows_i686_gnu 0.48.5",
7727+ "windows_i686_msvc 0.48.5",
7728+ "windows_x86_64_gnu 0.48.5",
7729+ "windows_x86_64_gnullvm 0.48.5",
7730+ "windows_x86_64_msvc 0.48.5",
7731+]
7732+
7733+[[package]]
7734+name = "windows-targets"
7735+version = "0.52.6"
7736+source = "registry+https://github.com/rust-lang/crates.io-index"
7737+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
7738+dependencies = [
7739+ "windows_aarch64_gnullvm 0.52.6",
7740+ "windows_aarch64_msvc 0.52.6",
7741+ "windows_i686_gnu 0.52.6",
7742+ "windows_i686_gnullvm 0.52.6",
7743+ "windows_i686_msvc 0.52.6",
7744+ "windows_x86_64_gnu 0.52.6",
7745+ "windows_x86_64_gnullvm 0.52.6",
7746+ "windows_x86_64_msvc 0.52.6",
7747+]
7748+
7749+[[package]]
7750+name = "windows-targets"
7751+version = "0.53.5"
7752+source = "registry+https://github.com/rust-lang/crates.io-index"
7753+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
7754+dependencies = [
7755+ "windows-link 0.2.1",
7756+ "windows_aarch64_gnullvm 0.53.1",
7757+ "windows_aarch64_msvc 0.53.1",
7758+ "windows_i686_gnu 0.53.1",
7759+ "windows_i686_gnullvm 0.53.1",
7760+ "windows_i686_msvc 0.53.1",
7761+ "windows_x86_64_gnu 0.53.1",
7762+ "windows_x86_64_gnullvm 0.53.1",
7763+ "windows_x86_64_msvc 0.53.1",
7764+]
7765+
7766+[[package]]
7767+name = "windows-threading"
7768+version = "0.1.0"
7769+source = "registry+https://github.com/rust-lang/crates.io-index"
7770+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
7771+dependencies = [
7772+ "windows-link 0.1.1",
7773+]
7774+
7775+[[package]]
7776+name = "windows_aarch64_gnullvm"
7777+version = "0.42.2"
7778+source = "registry+https://github.com/rust-lang/crates.io-index"
7779+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
7780+
7781+[[package]]
7782+name = "windows_aarch64_gnullvm"
7783+version = "0.48.5"
7784+source = "registry+https://github.com/rust-lang/crates.io-index"
7785+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
7786+
7787+[[package]]
7788+name = "windows_aarch64_gnullvm"
7789+version = "0.52.6"
7790+source = "registry+https://github.com/rust-lang/crates.io-index"
7791+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
7792+
7793+[[package]]
7794+name = "windows_aarch64_gnullvm"
7795+version = "0.53.1"
7796+source = "registry+https://github.com/rust-lang/crates.io-index"
7797+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
7798+
7799+[[package]]
7800+name = "windows_aarch64_msvc"
7801+version = "0.42.2"
7802+source = "registry+https://github.com/rust-lang/crates.io-index"
7803+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
7804+
7805+[[package]]
7806+name = "windows_aarch64_msvc"
7807+version = "0.48.5"
7808+source = "registry+https://github.com/rust-lang/crates.io-index"
7809+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
7810+
7811+[[package]]
7812+name = "windows_aarch64_msvc"
7813+version = "0.52.6"
7814+source = "registry+https://github.com/rust-lang/crates.io-index"
7815+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
7816+
7817+[[package]]
7818+name = "windows_aarch64_msvc"
7819+version = "0.53.1"
7820+source = "registry+https://github.com/rust-lang/crates.io-index"
7821+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
7822+
7823+[[package]]
7824+name = "windows_i686_gnu"
7825+version = "0.42.2"
7826+source = "registry+https://github.com/rust-lang/crates.io-index"
7827+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
7828+
7829+[[package]]
7830+name = "windows_i686_gnu"
7831+version = "0.48.5"
7832+source = "registry+https://github.com/rust-lang/crates.io-index"
7833+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
7834+
7835+[[package]]
7836+name = "windows_i686_gnu"
7837+version = "0.52.6"
7838+source = "registry+https://github.com/rust-lang/crates.io-index"
7839+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
7840+
7841+[[package]]
7842+name = "windows_i686_gnu"
7843+version = "0.53.1"
7844+source = "registry+https://github.com/rust-lang/crates.io-index"
7845+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
7846+
7847+[[package]]
7848+name = "windows_i686_gnullvm"
7849+version = "0.52.6"
7850+source = "registry+https://github.com/rust-lang/crates.io-index"
7851+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
7852+
7853+[[package]]
7854+name = "windows_i686_gnullvm"
7855+version = "0.53.1"
7856+source = "registry+https://github.com/rust-lang/crates.io-index"
7857+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
7858+
7859+[[package]]
7860+name = "windows_i686_msvc"
7861+version = "0.42.2"
7862+source = "registry+https://github.com/rust-lang/crates.io-index"
7863+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
7864+
7865+[[package]]
7866+name = "windows_i686_msvc"
7867+version = "0.48.5"
7868+source = "registry+https://github.com/rust-lang/crates.io-index"
7869+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
7870+
7871+[[package]]
7872+name = "windows_i686_msvc"
7873+version = "0.52.6"
7874+source = "registry+https://github.com/rust-lang/crates.io-index"
7875+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
7876+
7877+[[package]]
7878+name = "windows_i686_msvc"
7879+version = "0.53.1"
7880+source = "registry+https://github.com/rust-lang/crates.io-index"
7881+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
7882+
7883+[[package]]
7884+name = "windows_x86_64_gnu"
7885+version = "0.42.2"
7886+source = "registry+https://github.com/rust-lang/crates.io-index"
7887+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
7888+
7889+[[package]]
7890+name = "windows_x86_64_gnu"
7891+version = "0.48.5"
7892+source = "registry+https://github.com/rust-lang/crates.io-index"
7893+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
7894+
7895+[[package]]
7896+name = "windows_x86_64_gnu"
7897+version = "0.52.6"
7898+source = "registry+https://github.com/rust-lang/crates.io-index"
7899+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
7900+
7901+[[package]]
7902+name = "windows_x86_64_gnu"
7903+version = "0.53.1"
7904+source = "registry+https://github.com/rust-lang/crates.io-index"
7905+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
7906+
7907+[[package]]
7908+name = "windows_x86_64_gnullvm"
7909+version = "0.42.2"
7910+source = "registry+https://github.com/rust-lang/crates.io-index"
7911+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
7912+
7913+[[package]]
7914+name = "windows_x86_64_gnullvm"
7915+version = "0.48.5"
7916+source = "registry+https://github.com/rust-lang/crates.io-index"
7917+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
7918+
7919+[[package]]
7920+name = "windows_x86_64_gnullvm"
7921+version = "0.52.6"
7922+source = "registry+https://github.com/rust-lang/crates.io-index"
7923+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
7924+
7925+[[package]]
7926+name = "windows_x86_64_gnullvm"
7927+version = "0.53.1"
7928+source = "registry+https://github.com/rust-lang/crates.io-index"
7929+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
7930+
7931+[[package]]
7932+name = "windows_x86_64_msvc"
7933+version = "0.42.2"
7934+source = "registry+https://github.com/rust-lang/crates.io-index"
7935+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
7936+
7937+[[package]]
7938+name = "windows_x86_64_msvc"
7939+version = "0.48.5"
7940+source = "registry+https://github.com/rust-lang/crates.io-index"
7941+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
7942+
7943+[[package]]
7944+name = "windows_x86_64_msvc"
7945+version = "0.52.6"
7946+source = "registry+https://github.com/rust-lang/crates.io-index"
7947+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
7948+
7949+[[package]]
7950+name = "windows_x86_64_msvc"
7951+version = "0.53.1"
7952+source = "registry+https://github.com/rust-lang/crates.io-index"
7953+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
7954+
7955+[[package]]
7956+name = "winnow"
7957+version = "0.6.20"
7958+source = "registry+https://github.com/rust-lang/crates.io-index"
7959+checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
7960+dependencies = [
7961+ "memchr",
7962+]
7963+
7964+[[package]]
7965+name = "winnow"
7966+version = "0.7.13"
7967+source = "registry+https://github.com/rust-lang/crates.io-index"
7968+checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
7969+dependencies = [
7970+ "memchr",
7971+]
7972+
7973+[[package]]
7974+name = "winnow"
7975+version = "1.0.1"
7976+source = "registry+https://github.com/rust-lang/crates.io-index"
7977+checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5"
7978+
7979+[[package]]
7980+name = "wiremock"
7981+version = "0.6.5"
7982+source = "registry+https://github.com/rust-lang/crates.io-index"
7983+checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031"
7984+dependencies = [
7985+ "assert-json-diff",
7986+ "base64",
7987+ "deadpool 0.12.3",
7988+ "futures",
7989+ "http",
7990+ "http-body-util",
7991+ "hyper",
7992+ "hyper-util",
7993+ "log",
7994+ "once_cell",
7995+ "regex",
7996+ "serde",
7997+ "serde_json",
7998+ "tokio",
7999+ "url",
8000+]
8001+
8002+[[package]]
8003+name = "wit-bindgen"
8004+version = "0.51.0"
8005+source = "registry+https://github.com/rust-lang/crates.io-index"
8006+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
8007+dependencies = [
8008+ "wit-bindgen-rust-macro",
8009+]
8010+
8011+[[package]]
8012+name = "wit-bindgen-core"
8013+version = "0.51.0"
8014+source = "registry+https://github.com/rust-lang/crates.io-index"
8015+checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
8016+dependencies = [
8017+ "anyhow",
8018+ "heck",
8019+ "wit-parser",
8020+]
8021+
8022+[[package]]
8023+name = "wit-bindgen-rust"
8024+version = "0.51.0"
8025+source = "registry+https://github.com/rust-lang/crates.io-index"
8026+checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
8027+dependencies = [
8028+ "anyhow",
8029+ "heck",
8030+ "indexmap",
8031+ "prettyplease",
8032+ "syn 2.0.101",
8033+ "wasm-metadata",
8034+ "wit-bindgen-core",
8035+ "wit-component",
8036+]
8037+
8038+[[package]]
8039+name = "wit-bindgen-rust-macro"
8040+version = "0.51.0"
8041+source = "registry+https://github.com/rust-lang/crates.io-index"
8042+checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
8043+dependencies = [
8044+ "anyhow",
8045+ "prettyplease",
8046+ "proc-macro2",
8047+ "quote",
8048+ "syn 2.0.101",
8049+ "wit-bindgen-core",
8050+ "wit-bindgen-rust",
8051+]
8052+
8053+[[package]]
8054+name = "wit-component"
8055+version = "0.244.0"
8056+source = "registry+https://github.com/rust-lang/crates.io-index"
8057+checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
8058+dependencies = [
8059+ "anyhow",
8060+ "bitflags 2.10.0",
8061+ "indexmap",
8062+ "log",
8063+ "serde",
8064+ "serde_derive",
8065+ "serde_json",
8066+ "wasm-encoder",
8067+ "wasm-metadata",
8068+ "wasmparser",
8069+ "wit-parser",
8070+]
8071+
8072+[[package]]
8073+name = "wit-parser"
8074+version = "0.244.0"
8075+source = "registry+https://github.com/rust-lang/crates.io-index"
8076+checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
8077+dependencies = [
8078+ "anyhow",
8079+ "id-arena",
8080+ "indexmap",
8081+ "log",
8082+ "semver",
8083+ "serde",
8084+ "serde_derive",
8085+ "serde_json",
8086+ "unicode-xid",
8087+ "wasmparser",
8088+]
8089+
8090+[[package]]
8091+name = "write16"
8092+version = "1.0.0"
8093+source = "registry+https://github.com/rust-lang/crates.io-index"
8094+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
8095+
8096+[[package]]
8097+name = "writeable"
8098+version = "0.5.5"
8099+source = "registry+https://github.com/rust-lang/crates.io-index"
8100+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
8101+
8102+[[package]]
8103+name = "x25519-dalek"
8104+version = "2.0.1"
8105+source = "registry+https://github.com/rust-lang/crates.io-index"
8106+checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
8107+dependencies = [
8108+ "curve25519-dalek",
8109+ "rand_core 0.6.4",
8110+ "serde",
8111+ "zeroize",
8112+]
8113+
8114+[[package]]
8115+name = "xshell"
8116+version = "0.2.2"
8117+source = "registry+https://github.com/rust-lang/crates.io-index"
8118+checksum = "6d47097dc5c85234b1e41851b3422dd6d19b3befdd35b4ae5ce386724aeca981"
8119+dependencies = [
8120+ "xshell-macros",
8121+]
8122+
8123+[[package]]
8124+name = "xshell-macros"
8125+version = "0.2.2"
8126+source = "registry+https://github.com/rust-lang/crates.io-index"
8127+checksum = "88301b56c26dd9bf5c43d858538f82d6f3f7764767defbc5d34e59459901c41a"
8128+
8129+[[package]]
8130+name = "xtask"
8131+version = "0.1.0"
8132+dependencies = [
8133+ "camino",
8134+ "chrono",
8135+ "clap",
8136+ "fs_extra",
8137+ "indexmap",
8138+ "lazy_static",
8139+ "regex",
8140+ "serde",
8141+ "serde_json",
8142+ "uniffi_bindgen",
8143+ "url",
8144+ "xshell",
8145+]
8146+
8147+[[package]]
8148+name = "xxhash-rust"
8149+version = "0.8.11"
8150+source = "registry+https://github.com/rust-lang/crates.io-index"
8151+checksum = "63658493314859b4dfdf3fb8c1defd61587839def09582db50b8a4e93afca6bb"
8152+
8153+[[package]]
8154+name = "yoke"
8155+version = "0.7.5"
8156+source = "registry+https://github.com/rust-lang/crates.io-index"
8157+checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
8158+dependencies = [
8159+ "serde",
8160+ "stable_deref_trait",
8161+ "yoke-derive",
8162+ "zerofrom",
8163+]
8164+
8165+[[package]]
8166+name = "yoke-derive"
8167+version = "0.7.5"
8168+source = "registry+https://github.com/rust-lang/crates.io-index"
8169+checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
8170+dependencies = [
8171+ "proc-macro2",
8172+ "quote",
8173+ "syn 2.0.101",
8174+ "synstructure",
8175+]
8176+
8177+[[package]]
8178+name = "zerofrom"
8179+version = "0.1.5"
8180+source = "registry+https://github.com/rust-lang/crates.io-index"
8181+checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e"
8182+dependencies = [
8183+ "zerofrom-derive",
8184+]
8185+
8186+[[package]]
8187+name = "zerofrom-derive"
8188+version = "0.1.5"
8189+source = "registry+https://github.com/rust-lang/crates.io-index"
8190+checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
8191+dependencies = [
8192+ "proc-macro2",
8193+ "quote",
8194+ "syn 2.0.101",
8195+ "synstructure",
8196+]
8197+
8198+[[package]]
8199+name = "zeroize"
8200+version = "1.8.2"
8201+source = "registry+https://github.com/rust-lang/crates.io-index"
8202+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
8203+dependencies = [
8204+ "zeroize_derive",
8205+]
8206+
8207+[[package]]
8208+name = "zeroize_derive"
8209+version = "1.4.2"
8210+source = "registry+https://github.com/rust-lang/crates.io-index"
8211+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
8212+dependencies = [
8213+ "proc-macro2",
8214+ "quote",
8215+ "syn 2.0.101",
8216+]
8217+
8218+[[package]]
8219+name = "zerovec"
8220+version = "0.10.4"
8221+source = "registry+https://github.com/rust-lang/crates.io-index"
8222+checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
8223+dependencies = [
8224+ "yoke",
8225+ "zerofrom",
8226+ "zerovec-derive",
8227+]
8228+
8229+[[package]]
8230+name = "zerovec-derive"
8231+version = "0.10.3"
8232+source = "registry+https://github.com/rust-lang/crates.io-index"
8233+checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
8234+dependencies = [
8235+ "proc-macro2",
8236+ "quote",
8237+ "syn 2.0.101",
8238+]
8239+
8240+[[package]]
8241+name = "zstd"
8242+version = "0.13.3"
8243+source = "registry+https://github.com/rust-lang/crates.io-index"
8244+checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
8245+dependencies = [
8246+ "zstd-safe",
8247+]
8248+
8249+[[package]]
8250+name = "zstd-safe"
8251+version = "7.2.4"
8252+source = "registry+https://github.com/rust-lang/crates.io-index"
8253+checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
8254+dependencies = [
8255+ "zstd-sys",
8256+]
8257+
8258+[[package]]
8259+name = "zstd-sys"
8260+version = "2.0.15+zstd.1.5.7"
8261+source = "registry+https://github.com/rust-lang/crates.io-index"
8262+checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
8263+dependencies = [
8264+ "cc",
8265+ "pkg-config",
8266+]
Added file: Cargo.toml+241 additions
@@ -0,0 +1,241 @@
1+[workspace]
2+members = [
3+ "benchmarks",
4+ "bindings/matrix-sdk-crypto-ffi",
5+ "bindings/matrix-sdk-ffi",
6+ "crates/*",
7+ "examples/*",
8+ "labs/*",
9+ "testing/*",
10+ "uniffi-bindgen",
11+ "xtask",
12+]
13+exclude = ["testing/data"]
14+# xtask, multiverse, testing and the bindings should only be built when invoked explicitly.
15+default-members = ["benchmarks", "crates/*"]
16+resolver = "3"
17+
18+[workspace.package]
19+rust-version = "1.93"
20+
21+[workspace.dependencies]
22+anyhow = { version = "1.0.100", default-features = false }
23+aquamarine = { version = "0.6.0", default-features = false }
24+as_variant = { version = "1.3.0", default-features = false }
25+assert-json-diff = { version = "2.0.2", default-features = false }
26+assert_matches = { version = "1.5.0", default-features = false }
27+assert_matches2 = { version = "0.1.2", default-features = false }
28+async_cell = { version = "0.2.3", default-features = false }
29+async-compat = { version = "0.2.5", default-features = false }
30+async-once-cell = { version = "0.5.4", default-features = false }
31+async-rx = { version = "0.2.0", default-features = false }
32+# Bumping this to 0.3.6 produces a test failure because the semantic between the
33+# versions changed subtly: https://github.com/matrix-org/matrix-rust-sdk/issues/4599
34+async-stream = { version = "0.3.6", default-features = false }
35+async-trait = { version = "0.1.89", default-features = false }
36+base64 = { version = "0.22.1", default-features = false, features = ["std"] }
37+bitflags = { version = "2.10.0", default-features = false }
38+byteorder = { version = "1.5.0", default-features = false, features = ["std"] }
39+cfg-if = { version = "1.0.4", default-features = false }
40+clap = { version = "4.5.53", default-features = false, features = ["std", "help", "usage"] }
41+chrono = { version = "0.4.42", default-features = false, features = ["clock", "std", "oldtime", "wasmbind"] }
42+dirs = { version = "6.0.0", default-features = false }
43+eyeball = { version = "0.8.8", default-features = false, features = ["tracing"] }
44+eyeball-im = { version = "0.8.0", default-features = false, features = ["tracing"] }
45+eyeball-im-util = { version = "0.10.0", default-features = false }
46+futures-core = { version = "0.3.31", default-features = false, features = ["std"] }
47+futures-executor = { version = "0.3.31", default-features = false, features = ["std"] }
48+futures-util = { version = "0.3.31", default-features = false, features = ["std"] }
49+getrandom = { version = "0.4.2", default-features = false }
50+gloo-timers = { version = "0.3.0", default-features = false }
51+gloo-utils = { version = "0.2.0", default-features = false, features = ["serde"] }
52+growable-bloom-filter = { version = "2.1.1", default-features = false }
53+hkdf = { version = "0.12.4", default-features = false }
54+hmac = { version = "0.12.1", default-features = false }
55+http = { version = "1.3.1", default-features = false }
56+imbl = { version = "6.1.0", default-features = false }
57+indexed_db_futures = { version = "0.7.0", package = "matrix_indexed_db_futures", default-features = false }
58+indexmap = { version = "2.12.1", default-features = false }
59+insta = { version = "1.44.1", features = ["json", "redactions"] }
60+itertools = { version = "0.14.0", default-features = false, features = ["use_std"] }
61+js-sys = { version = "0.3.82", default-features = false, features = ["std"] }
62+mime = { version = "0.3.17", default-features = false }
63+oauth2 = { version = "5.0.0", default-features = false, features = ["timing-resistant-secret-traits"] }
64+oauth2-reqwest = { version = "0.1.0-alpha.3", default-features = false }
65+pbkdf2 = { version = "0.12.2", default-features = false }
66+pin-project-lite = { version = "0.2.16", default-features = false }
67+proc-macro2 = { version = "1.0.106", default-features = false }
68+proptest = { version = "1.9.0", default-features = false, features = ["std"] }
69+quote = { version = "1.0.37", default-features = false }
70+rand = { version = "0.10.1", default-features = false, features = ["std", "std_rng", "thread_rng"] }
71+regex = { version = "1.12.2", default-features = false }
72+reqwest = { version = "0.13.1", default-features = false }
73+rmp-serde = { version = "1.3.0", default-features = false }
74+ruma = { version = "0.16.0", features = [
75+ "client-api-c",
76+ "compat-unset-avatar",
77+ "compat-upload-signatures",
78+ "compat-arbitrary-length-ids",
79+ "compat-tag-info",
80+ "compat-encrypted-stickers",
81+ "compat-lax-room-create-deser",
82+ "compat-lax-room-topic-deser",
83+ "unstable-msc3230",
84+ "unstable-msc3401",
85+ "unstable-msc3417",
86+ "unstable-msc3488",
87+ "unstable-msc3489",
88+ "unstable-msc4075",
89+ "unstable-msc4140",
90+ "unstable-msc4143",
91+ "unstable-msc4171",
92+ "unstable-msc4195",
93+ "unstable-msc4278",
94+ "unstable-msc4286",
95+ "unstable-msc4306",
96+ "unstable-msc4308",
97+ "unstable-msc4310",
98+] }
99+sentry = { version = "0.47.0", default-features = false }
100+sentry-tracing = { version = "0.47.0", default-features = false }
101+serde = { version = "1.0.228", default-features = false, features = ["std", "rc", "derive"] }
102+serde_html_form = { version = "0.4.0", default-features = false }
103+serde_json = { version = "1.0.145", default-features = false, features = ["std"] }
104+sha2 = { version = "0.10.9", default-features = false }
105+similar-asserts = { version = "1.7.0", default-features = false }
106+stream_assert = { version = "0.1.1", default-features = false }
107+syn = { version = "2.0.43", default-features = false, features = ["derive", "parsing", "printing", "clone-impls"] }
108+tempfile = { version = "3.23.0", default-features = false }
109+thiserror = { version = "2.0.17", default-features = false }
110+tokio = { version = "1.48.0", default-features = false, features = ["sync"] }
111+tokio-stream = { version = "0.1.17", default-features = false }
112+tracing = { version = "0.1.41", default-features = false, features = ["std"] }
113+tracing-appender = { version = "0.2.3", default-features = false }
114+tracing-core = { version = "0.1.34", default-features = false }
115+tracing-subscriber = { version = "0.3.20", default-features = false, features = ["std", "smallvec", "fmt"] }
116+unicode-normalization = { version = "0.1.25", default-features = false }
117+unicode-segmentation = { version = "1.12.0", default-features = false }
118+uniffi = { version = "0.31.0", default-features = false, features = ["cargo-metadata"] }
119+uniffi_bindgen = { version = "0.31.0", default-features = false, features = ["cargo-metadata"] }
120+url = { version = "2.5.7", default-features = false }
121+uuid = { version = "1.18.1", default-features = false }
122+vergen-gitcl = { version = "1.0.8", default-features = false }
123+vodozemac = { version = "0.10.0", default-features = false, features = ["libolm-compat", "insecure-pk-encryption", "experimental-session-config"] }
124+wasm-bindgen = { version = "0.2.105", default-features = false }
125+wasm-bindgen-test = { version = "0.3.55", default-features = false, features = ["std"] }
126+web-sys = { version = "0.3.82", default-features = false }
127+wiremock = { version = "0.6.5", default-features = false }
128+zeroize = { version = "1.8.2", default-features = false }
129+
130+matrix-sdk = { path = "crates/matrix-sdk", version = "0.18.0", default-features = false }
131+matrix-sdk-base = { path = "crates/matrix-sdk-base", version = "0.18.0" }
132+matrix-sdk-common = { path = "crates/matrix-sdk-common", version = "0.18.0" }
133+matrix-sdk-crypto = { path = "crates/matrix-sdk-crypto", version = "0.18.0" }
134+matrix-sdk-ffi-macros = { path = "bindings/matrix-sdk-ffi-macros", version = "0.7.0" }
135+matrix-sdk-indexeddb = { path = "crates/matrix-sdk-indexeddb", version = "0.18.0", default-features = false }
136+matrix-sdk-qrcode = { path = "crates/matrix-sdk-qrcode", version = "0.18.0" }
137+matrix-sdk-sqlite = { path = "crates/matrix-sdk-sqlite", version = "0.18.0", default-features = false }
138+matrix-sdk-store-encryption = { path = "crates/matrix-sdk-store-encryption", version = "0.18.0" }
139+matrix-sdk-test = { path = "testing/matrix-sdk-test", version = "0.18.0" }
140+matrix-sdk-test-utils = { path = "testing/matrix-sdk-test-utils", version = "0.18.0" }
141+matrix-sdk-ui = { path = "crates/matrix-sdk-ui", version = "0.18.0", default-features = false }
142+matrix-sdk-search = { path = "crates/matrix-sdk-search", version = "0.18.0" }
143+
144+[workspace.lints.rust]
145+rust_2018_idioms = "warn"
146+semicolon_in_expressions_from_macros = "warn"
147+unexpected_cfgs = { level = "warn", check-cfg = [
148+ 'cfg(tarpaulin_include)', # Used by tarpaulin (code coverage)
149+ 'cfg(ruma_unstable_exhaustive_types)', # Used by Ruma's EventContent derive macro
150+] }
151+unused_extern_crates = "warn"
152+unused_import_braces = "warn"
153+unused_qualifications = "warn"
154+trivial_casts = "warn"
155+trivial_numeric_casts = "warn"
156+
157+[workspace.lints.clippy]
158+assigning_clones = "allow"
159+box_default = "allow"
160+cloned_instead_of_copied = "warn"
161+dbg_macro = "warn"
162+inefficient_to_string = "warn"
163+macro_use_imports = "warn"
164+manual_let_else = "warn"
165+mut_mut = "warn"
166+needless_borrow = "warn"
167+nonstandard_macro_braces = "warn"
168+redundant_clone = "warn"
169+str_to_string = "warn"
170+todo = "warn"
171+unnecessary_semicolon = "warn"
172+unused_async = "warn"
173+
174+# Default development profile; default for most Cargo commands, otherwise
175+# selected with `--debug`
176+[profile.dev]
177+# Saves a lot of disk space. If symbols are needed, use the dbg profile.
178+debug = 0
179+
180+# Profile for debug builds with full optimization and minimal debug symbols.
181+# This should be just enough to have proper backtraces, having way smaller binaries
182+# (10% of the size with full debug symbols profile, like `reldbg`).
183+# This profile differs from `reldbg` in not containing the debug symbols needed for
184+# debugging with LLDB/GDB, trading that for binary size, allowing quick iterations
185+# of building the bindings, installing in a real device, testing your changes, repeat.
186+# It's also different from `dev` in having enough debug symbols to display backtraces.
187+[profile.reldev]
188+inherits = "dev"
189+opt-level = 3
190+debug = "line-tables-only"
191+strip = "debuginfo"
192+
193+[profile.dev.package]
194+# Optimize quote even in debug mode. Speeds up proc-macros enough to account
195+# for the extra time of optimizing it for a clean build of matrix-sdk-ffi.
196+quote = { opt-level = 2 }
197+sha2 = { opt-level = 2 }
198+# faster runs for insta.rs snapshot testing
199+insta.opt-level = 3
200+similar.opt-level = 3
201+
202+# Custom profile with full debugging info, use `--profile dbg` to select
203+[profile.dbg]
204+inherits = "dev"
205+debug = 2
206+
207+# Custom profile for use in (debug) builds of the binding crates, use
208+# `--profile reldbg` to select
209+[profile.reldbg]
210+inherits = "dbg"
211+opt-level = 3
212+
213+[profile.dist]
214+# Use release profile as a base
215+inherits = "release"
216+# Strip the minimal debug info, while still allowing us to have proper backtraces, but it will affect debuggers
217+strip = "debuginfo"
218+# Use link time optimizations
219+lto = true
220+# Use binary size optimization, since this is intended for distributed copies of the SDK
221+opt-level = "s"
222+
223+[profile.profiling]
224+inherits = "release"
225+# LTO is too slow to compile.
226+lto = false
227+# Get symbol names for profiling purposes.
228+debug = true
229+
230+[profile.bench]
231+inherits = "release"
232+lto = false
233+
234+[patch.crates-io]
235+async-compat = { git = "https://github.com/element-hq/async-compat", rev = "5a27c8b290f1f1dcfc0c4ec22c464e38528aa591" }
236+const_panic = { git = "https://github.com/jplatte/const_panic", rev = "e0b317a9a7bde2d48a7d15b6a60d70e4a41d3b5f" }
237+# Needed to fix rotation log issue on Android (https://github.com/tokio-rs/tracing/issues/2937)
238+tracing = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
239+tracing-core = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
240+tracing-subscriber = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
241+tracing-appender = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
Added file: LICENSE+177 additions
@@ -0,0 +1,177 @@
1+
2+ Apache License
3+ Version 2.0, January 2004
4+ http://www.apache.org/licenses/
5+
6+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7+
8+ 1. Definitions.
9+
10+ "License" shall mean the terms and conditions for use, reproduction,
11+ and distribution as defined by Sections 1 through 9 of this document.
12+
13+ "Licensor" shall mean the copyright owner or entity authorized by
14+ the copyright owner that is granting the License.
15+
16+ "Legal Entity" shall mean the union of the acting entity and all
17+ other entities that control, are controlled by, or are under common
18+ control with that entity. For the purposes of this definition,
19+ "control" means (i) the power, direct or indirect, to cause the
20+ direction or management of such entity, whether by contract or
21+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22+ outstanding shares, or (iii) beneficial ownership of such entity.
23+
24+ "You" (or "Your") shall mean an individual or Legal Entity
25+ exercising permissions granted by this License.
26+
27+ "Source" form shall mean the preferred form for making modifications,
28+ including but not limited to software source code, documentation
29+ source, and configuration files.
30+
31+ "Object" form shall mean any form resulting from mechanical
32+ transformation or translation of a Source form, including but
33+ not limited to compiled object code, generated documentation,
34+ and conversions to other media types.
35+
36+ "Work" shall mean the work of authorship, whether in Source or
37+ Object form, made available under the License, as indicated by a
38+ copyright notice that is included in or attached to the work
39+ (an example is provided in the Appendix below).
40+
41+ "Derivative Works" shall mean any work, whether in Source or Object
42+ form, that is based on (or derived from) the Work and for which the
43+ editorial revisions, annotations, elaborations, or other modifications
44+ represent, as a whole, an original work of authorship. For the purposes
45+ of this License, Derivative Works shall not include works that remain
46+ separable from, or merely link (or bind by name) to the interfaces of,
47+ the Work and Derivative Works thereof.
48+
49+ "Contribution" shall mean any work of authorship, including
50+ the original version of the Work and any modifications or additions
51+ to that Work or Derivative Works thereof, that is intentionally
52+ submitted to Licensor for inclusion in the Work by the copyright owner
53+ or by an individual or Legal Entity authorized to submit on behalf of
54+ the copyright owner. For the purposes of this definition, "submitted"
55+ means any form of electronic, verbal, or written communication sent
56+ to the Licensor or its representatives, including but not limited to
57+ communication on electronic mailing lists, source code control systems,
58+ and issue tracking systems that are managed by, or on behalf of, the
59+ Licensor for the purpose of discussing and improving the Work, but
60+ excluding communication that is conspicuously marked or otherwise
61+ designated in writing by the copyright owner as "Not a Contribution."
62+
63+ "Contributor" shall mean Licensor and any individual or Legal Entity
64+ on behalf of whom a Contribution has been received by Licensor and
65+ subsequently incorporated within the Work.
66+
67+ 2. Grant of Copyright License. Subject to the terms and conditions of
68+ this License, each Contributor hereby grants to You a perpetual,
69+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70+ copyright license to reproduce, prepare Derivative Works of,
71+ publicly display, publicly perform, sublicense, and distribute the
72+ Work and such Derivative Works in Source or Object form.
73+
74+ 3. Grant of Patent License. Subject to the terms and conditions of
75+ this License, each Contributor hereby grants to You a perpetual,
76+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77+ (except as stated in this section) patent license to make, have made,
78+ use, offer to sell, sell, import, and otherwise transfer the Work,
79+ where such license applies only to those patent claims licensable
80+ by such Contributor that are necessarily infringed by their
81+ Contribution(s) alone or by combination of their Contribution(s)
82+ with the Work to which such Contribution(s) was submitted. If You
83+ institute patent litigation against any entity (including a
84+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85+ or a Contribution incorporated within the Work constitutes direct
86+ or contributory patent infringement, then any patent licenses
87+ granted to You under this License for that Work shall terminate
88+ as of the date such litigation is filed.
89+
90+ 4. Redistribution. You may reproduce and distribute copies of the
91+ Work or Derivative Works thereof in any medium, with or without
92+ modifications, and in Source or Object form, provided that You
93+ meet the following conditions:
94+
95+ (a) You must give any other recipients of the Work or
96+ Derivative Works a copy of this License; and
97+
98+ (b) You must cause any modified files to carry prominent notices
99+ stating that You changed the files; and
100+
101+ (c) You must retain, in the Source form of any Derivative Works
102+ that You distribute, all copyright, patent, trademark, and
103+ attribution notices from the Source form of the Work,
104+ excluding those notices that do not pertain to any part of
105+ the Derivative Works; and
106+
107+ (d) If the Work includes a "NOTICE" text file as part of its
108+ distribution, then any Derivative Works that You distribute must
109+ include a readable copy of the attribution notices contained
110+ within such NOTICE file, excluding those notices that do not
111+ pertain to any part of the Derivative Works, in at least one
112+ of the following places: within a NOTICE text file distributed
113+ as part of the Derivative Works; within the Source form or
114+ documentation, if provided along with the Derivative Works; or,
115+ within a display generated by the Derivative Works, if and
116+ wherever such third-party notices normally appear. The contents
117+ of the NOTICE file are for informational purposes only and
118+ do not modify the License. You may add Your own attribution
119+ notices within Derivative Works that You distribute, alongside
120+ or as an addendum to the NOTICE text from the Work, provided
121+ that such additional attribution notices cannot be construed
122+ as modifying the License.
123+
124+ You may add Your own copyright statement to Your modifications and
125+ may provide additional or different license terms and conditions
126+ for use, reproduction, or distribution of Your modifications, or
127+ for any such Derivative Works as a whole, provided Your use,
128+ reproduction, and distribution of the Work otherwise complies with
129+ the conditions stated in this License.
130+
131+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132+ any Contribution intentionally submitted for inclusion in the Work
133+ by You to the Licensor shall be under the terms and conditions of
134+ this License, without any additional terms or conditions.
135+ Notwithstanding the above, nothing herein shall supersede or modify
136+ the terms of any separate license agreement you may have executed
137+ with Licensor regarding such Contributions.
138+
139+ 6. Trademarks. This License does not grant permission to use the trade
140+ names, trademarks, service marks, or product names of the Licensor,
141+ except as required for reasonable and customary use in describing the
142+ origin of the Work and reproducing the content of the NOTICE file.
143+
144+ 7. Disclaimer of Warranty. Unless required by applicable law or
145+ agreed to in writing, Licensor provides the Work (and each
146+ Contributor provides its Contributions) on an "AS IS" BASIS,
147+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148+ implied, including, without limitation, any warranties or conditions
149+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150+ PARTICULAR PURPOSE. You are solely responsible for determining the
151+ appropriateness of using or redistributing the Work and assume any
152+ risks associated with Your exercise of permissions under this License.
153+
154+ 8. Limitation of Liability. In no event and under no legal theory,
155+ whether in tort (including negligence), contract, or otherwise,
156+ unless required by applicable law (such as deliberate and grossly
157+ negligent acts) or agreed to in writing, shall any Contributor be
158+ liable to You for damages, including any direct, indirect, special,
159+ incidental, or consequential damages of any character arising as a
160+ result of this License or out of the use or inability to use the
161+ Work (including but not limited to damages for loss of goodwill,
162+ work stoppage, computer failure or malfunction, or any and all
163+ other commercial damages or losses), even if such Contributor
164+ has been advised of the possibility of such damages.
165+
166+ 9. Accepting Warranty or Additional Liability. While redistributing
167+ the Work or Derivative Works thereof, You may choose to offer,
168+ and charge a fee for, acceptance of support, warranty, indemnity,
169+ or other liability obligations and/or rights consistent with this
170+ License. However, in accepting such obligations, You may act only
171+ on Your own behalf and on Your sole responsibility, not on behalf
172+ of any other Contributor, and only if You agree to indemnify,
173+ defend, and hold each Contributor harmless for any liability
174+ incurred by, or claims asserted against, such Contributor by reason
175+ of your accepting any such warranty or additional liability.
176+
177+ END OF TERMS AND CONDITIONS
Added file: README.md+101 additions
@@ -0,0 +1,101 @@
1+<h1 align="center">Matrix Rust SDK</h1>
2+
3+<div align="center">
4+ <em>Your all-in-one toolkit for creating Matrix clients with Rust, from simple bots to full-featured apps.</em>
5+ <br />
6+ <img src="contrib/logo.svg">
7+ <hr />
8+ <a href="https://github.com/matrix-org/matrix-rust-sdk/releases">
9+ <img src="https://img.shields.io/github/v/release/matrix-org/matrix-rust-sdk?style=flat&labelColor=1C2E27&color=66845F&logo=GitHub&logoColor=white"></a>
10+ <a href="https://crates.io/crates/matrix-sdk/">
11+ <img src="https://img.shields.io/crates/v/matrix-sdk?style=flat&labelColor=1C2E27&color=66845F&logo=Rust&logoColor=white"></a>
12+ <a href="https://codecov.io/gh/matrix-org/matrix-rust-sdk">
13+ <img src="https://img.shields.io/codecov/c/gh/matrix-org/matrix-rust-sdk?style=flat&labelColor=1C2E27&color=66845F&logo=Codecov&logoColor=white"></a>
14+ <br />
15+ <a href="https://docs.rs/matrix-sdk/">
16+ <img src="https://img.shields.io/docsrs/matrix-sdk?style=flat&labelColor=1C2E27&color=66845F&logo=Rust&logoColor=white"></a>
17+ <a href="https://github.com/matrix-org/matrix-rust-sdk/actions/workflows/ci.yml">
18+ <img src="https://img.shields.io/github/actions/workflow/status/matrix-org/matrix-rust-sdk/ci.yml?style=flat&labelColor=1C2E27&color=66845F&logo=GitHub%20Actions&logoColor=white"></a>
19+</div>
20+
21+<div align="center">
22+
23+The Matrix Rust SDK is a collection of libraries that make it easier to build
24+[Matrix] clients in [Rust].
25+<br />
26+<br />
27+
28+<picture>
29+ <source srcset="contrib/element-logo-light.png" media="(prefers-color-scheme: dark)">
30+ <source srcset="contrib/element-logo-dark.png" media="(prefers-color-scheme: light)">
31+ <img src="contrib/element-logo-fallback.png" alt="Element logo">
32+</picture>
33+
34+<br />
35+<br />
36+
37+Development of the SDK is proudly sponsored and maintained by
38+[Element](https://element.io). Element uses the SDK in their next-generation
39+mobile apps Element X on [iOS](https://github.com/element-hq/element-x-ios) and
40+[Android](https://github.com/element-hq/element-x-android) and has plans to
41+introduce it to the web and desktop clients as well.
42+
43+The SDK is also the basis for multiple Matrix projects and we welcome
44+contributions from all.
45+
46+</div>
47+
48+## Purpose
49+
50+The SDK takes care of the low-level details like encryption,
51+syncing, and room state, so you can focus on your app's logic and UI. Whether
52+you're writing a small bot, a desktop client, or something in between, the SDK
53+is designed to be flexible, async-friendly, and ready to use out of the box.
54+
55+## Project structure
56+
57+The Matrix Rust SDK is made up of several crates that build on top of each
58+other. The following crates are expected to be usable as direct dependencies:
59+
60+- [matrix-sdk-ui](https://docs.rs/matrix-sdk-ui/latest/matrix_sdk_ui/) – A
61+ high-level client library that makes it easy to build full-featured UI clients
62+ with minimal setup. Check out our reference client,
63+ [multiverse](https://github.com/matrix-org/matrix-rust-sdk/tree/main/labs/multiverse),
64+ for an example.
65+- [matrix-sdk](https://docs.rs/matrix-sdk/latest/matrix_sdk/) – A mid-level
66+ client library, ideal for building bots, custom clients, or higher-level
67+ abstractions. You can find example usage in the
68+ [examples directory](https://github.com/matrix-org/matrix-rust-sdk/tree/main/examples).
69+- [matrix-sdk-crypto](https://docs.rs/matrix-sdk-crypto/latest/matrix_sdk_crypto/)
70+ – A standalone encryption state machine with no network I/O, providing
71+ end-to-end encryption support for Matrix clients and libraries. See the
72+ [crypto tutorial](https://docs.rs/matrix-sdk-crypto/latest/matrix_sdk_crypto/tutorial/index.html)
73+ for a step-by-step introduction.
74+
75+All other crates are effectively internal-only and only structured as crates for
76+organizational purposes and to improve compilation times. Direct usage of them
77+is discouraged.
78+
79+## Status
80+
81+The library is considered production ready and backs multiple client
82+implementations such as Element X
83+[[1]](https://github.com/element-hq/element-x-ios)
84+[[2]](https://github.com/element-hq/element-x-android),
85+[Fractal](https://gitlab.gnome.org/World/fractal) and
86+[iamb](https://github.com/ulyssa/iamb). Client developers should feel confident
87+to build upon it.
88+
89+## Bindings
90+
91+The higher-level crates of the Matrix Rust SDK can be embedded in other
92+environments such as Swift, Kotlin, JavaScript, and Node.js. Check out the
93+[bindings/](./bindings/) directory to learn more about how to integrate the SDK
94+into your language of choice.
95+
96+## License
97+
98+[Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0)
99+
100+[Matrix]: https://matrix.org/
101+[Rust]: https://www.rust-lang.org/
Added file: RELEASING.md+50 additions
@@ -0,0 +1,50 @@
1+# Releasing and publishing the SDK
2+
3+While the release process can be handled manually, `cargo-release` has been
4+configured to make it more convenient.
5+
6+By default, [`cargo-release`](https://github.com/crate-ci/cargo-release) assumes
7+that no pull request is required to cut a release. However, since the SDK
8+repo is set up so that each push requires a pull request, we need to slightly
9+deviate from the default workflow. A `cargo-xtask` has been created to make the
10+process as smooth as possible.
11+
12+The procedure is as follows:
13+
14+1. Switch to a release branch:
15+
16+ ```bash
17+ git switch -c release-x.y.z
18+ ```
19+
20+2. Prepare the release. This will update the `README.md`, set the versions in
21+ the `CHANGELOG.md` file, and bump the version in the `Cargo.toml` file.
22+
23+ ```bash
24+ cargo xtask release prepare --execute minor|patch|rc
25+ ```
26+
27+3. Double-check and edit the `CHANGELOG.md` and `README.md` if necessary. Once
28+ you are satisfied, push the branch and open a PR.
29+
30+ ```bash
31+ git push --set-upstream origin/release-x.y.z
32+ ```
33+
34+4. Pass the review and merge the branch as you would with any other branch.
35+5. Create tags for your new release, publish the release on crates.io and push
36+ the tags:
37+
38+ ```bash
39+ # Switch to main first.
40+ git switch main
41+ # Pull in the now-merged release commit(s).
42+ git pull
43+ # Create tags, publish the release on crates.io, and push the tags.
44+ cargo xtask release publish --execute
45+ ```
46+
47+ For more information on cargo-release:
48+ [https://github.com/crate-ci/cargo-release][https-github-com-crate-ci-cargo-release]
49+
50+[https-github-com-crate-ci-cargo-release]: https://github.com/crate-ci/cargo-release
Added file: benchmarks/Cargo.toml+60 additions
@@ -0,0 +1,60 @@
1+[package]
2+name = "benchmarks"
3+description = "Matrix SDK benchmarks"
4+edition = "2024"
5+license = "Apache-2.0"
6+rust-version.workspace = true
7+version = "1.0.0"
8+publish = false
9+
10+[package.metadata.release]
11+release = false
12+
13+[features]
14+codspeed = []
15+
16+[dependencies]
17+assert_matches.workspace = true
18+criterion = { version = "4.2.1", features = ["async", "async_tokio", "html_reports"], package = "codspeed-criterion-compat" }
19+futures-util.workspace = true
20+matrix-sdk = { workspace = true, features = ["e2e-encryption", "sqlite", "testing"] }
21+matrix-sdk-base.workspace = true
22+matrix-sdk-crypto.workspace = true
23+matrix-sdk-sqlite = { workspace = true, features = ["crypto-store"] }
24+matrix-sdk-test.workspace = true
25+matrix-sdk-ui.workspace = true
26+rand.workspace = true
27+ruma.workspace = true
28+serde.workspace = true
29+serde_json.workspace = true
30+tempfile.workspace = true
31+tokio = { workspace = true, features = ["rt-multi-thread"] }
32+wiremock.workspace = true
33+
34+[[bench]]
35+name = "crypto_bench"
36+harness = false
37+
38+[[bench]]
39+name = "linked_chunk"
40+harness = false
41+
42+[[bench]]
43+name = "store_bench"
44+harness = false
45+
46+[[bench]]
47+name = "room_bench"
48+harness = false
49+
50+[[bench]]
51+name = "timeline"
52+harness = false
53+
54+[[bench]]
55+name = "event_cache"
56+harness = false
57+
58+[[bench]]
59+name = "room_list"
60+harness = false
Added file: benchmarks/README.md+89 additions
@@ -0,0 +1,89 @@
1+# Benchmarks for the rust-sdk crypto layer
2+
3+This directory contains various benchmarks that test critical functionality in
4+the crypto layer in the rust-sdk.
5+
6+We're using [Criterion] for the benchmarks,
7+[the full documentation for Criterion can be found here](https://bheisler.github.io/criterion.rs/book/criterion_rs.html).
8+
9+## Running the benchmarks
10+
11+The benchmark can be run by using the `bench` command of `cargo`:
12+
13+```bash
14+$ cargo bench
15+```
16+
17+This will work from the workspace directory of the rust-sdk.
18+
19+To lower compile times, you might be interested in using the `profiling`
20+profile, that's optimized for a fair tradeoff between compile times and runtime
21+performance:
22+
23+```bash
24+$ cargo bench --profile profiling
25+```
26+
27+If you want to pass options to the benchmark
28+[you'll need to specify the name of the benchmark](https://bheisler.github.io/criterion.rs/book/faq.html#cargo-bench-gives-unrecognized-option-errors-for-valid-command-line-options):
29+
30+```bash
31+$ cargo bench --bench crypto_bench -- # Your options go here
32+```
33+
34+If you want to run only a specific benchmark, pass the name of the
35+benchmark as an argument:
36+
37+```bash
38+$ cargo bench --bench crypto_bench "Room key sharing/"
39+```
40+
41+After the benchmarks are done, a HTML report can be found in
42+`target/criterion/report/index.html`.
43+
44+### Using a baseline for the benchmark
45+
46+The benchmarks will by default compare the results to the previous run of the
47+benchmark. If you are improving the performance of a specific feature and run
48+the benchmark many times, it may be useful to store a baseline to compare
49+against instead.
50+
51+The `--save-baseline` switch can be used to create a baseline for the benchmark.
52+
53+```bash
54+$ cargo bench --bench crypto_bench -- --save-baseline libolm
55+```
56+
57+After you make your changes you can use the baseline to compare the results like
58+so:
59+
60+```bash
61+$ cargo bench --bench crypto_bench -- --baseline libolm
62+```
63+
64+### Generating flame graphs for the benchmarks
65+
66+The benchmarks support profiling and generating [Flame Graphs] while they run in
67+profiling mode using [pprof].
68+
69+Profiling usually requires root permissions, to avoid the need for root
70+permissions you can adjust the value of `perf_event_paranoid`, e.g. the most
71+permisive value is `-1`:
72+
73+```bash
74+$ echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
75+```
76+
77+To generate flame graphs feature, enable the profiling mode using the
78+`--profile-time` command line flag:
79+
80+```bash
81+$ cargo bench --bench crypto_bench -- --profile-time=5
82+```
83+
84+After the benchmarks are done, a flame graph for each individual benchmark can
85+be found in `target/criterion/<name-of-benchmark>/profile/flamegraph.svg`.
86+
87+[pprof]: https://docs.rs/pprof/0.5.0/pprof/index.html#
88+[Criterion]: https://docs.rs/criterion/0.3.5/criterion/
89+[Flame Graphs]: https://www.brendangregg.com/flamegraphs.html
Added file: benchmarks/benches/crypto_bench.rs+324 additions
@@ -0,0 +1,324 @@
1+use std::{ops::Deref, sync::Arc};
2+
3+use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
4+use matrix_sdk_crypto::{EncryptionSettings, OlmMachine};
5+use matrix_sdk_sqlite::SqliteCryptoStore;
6+use matrix_sdk_test::ruma_response_from_json;
7+use ruma::{
8+ DeviceId, OwnedUserId, TransactionId, UserId,
9+ api::client::{
10+ keys::{claim_keys, get_keys},
11+ to_device::send_event_to_device::v3::Response as ToDeviceResponse,
12+ },
13+ device_id, room_id, user_id,
14+};
15+use serde_json::Value;
16+use tokio::runtime::Builder;
17+
18+fn alice_id() -> &'static UserId {
19+ user_id!("@alice:example.org")
20+}
21+
22+fn alice_device_id() -> &'static DeviceId {
23+ device_id!("JLAFKJWSCS")
24+}
25+
26+fn keys_query_response() -> get_keys::v3::Response {
27+ let data = include_bytes!("crypto_bench/keys_query.json");
28+ let data: Value = serde_json::from_slice(data).unwrap();
29+ ruma_response_from_json(&data)
30+}
31+
32+fn keys_claim_response() -> claim_keys::v3::Response {
33+ let data = include_bytes!("crypto_bench/keys_claim.json");
34+ let data: Value = serde_json::from_slice(data).unwrap();
35+ ruma_response_from_json(&data)
36+}
37+
38+fn huge_keys_query_response() -> get_keys::v3::Response {
39+ let data = include_bytes!("crypto_bench/keys_query_2000_members.json");
40+ let data: Value = serde_json::from_slice(data).unwrap();
41+ ruma_response_from_json(&data)
42+}
43+
44+pub fn keys_query(c: &mut Criterion) {
45+ let runtime = Builder::new_multi_thread().build().expect("Can't create runtime");
46+ let machine = runtime.block_on(OlmMachine::new(alice_id(), alice_device_id()));
47+ let response = keys_query_response();
48+ let txn_id = TransactionId::new();
49+
50+ let count = response.device_keys.values().fold(0, |acc, d| acc + d.len())
51+ + response.master_keys.len()
52+ + response.self_signing_keys.len()
53+ + response.user_signing_keys.len();
54+
55+ let mut group = c.benchmark_group("Keys querying");
56+ group.throughput(Throughput::Elements(count as u64));
57+
58+ let name = format!("{count} device and cross signing keys");
59+
60+ // Benchmark memory store.
61+
62+ group.bench_with_input(
63+ BenchmarkId::new("Device keys query [memory]", &name),
64+ &response,
65+ |b, response| {
66+ b.to_async(&runtime)
67+ .iter(|| async { machine.mark_request_as_sent(&txn_id, response).await.unwrap() })
68+ },
69+ );
70+
71+ // Benchmark sqlite store.
72+
73+ let dir = tempfile::tempdir().unwrap();
74+ let store = Arc::new(runtime.block_on(SqliteCryptoStore::open(dir.path(), None)).unwrap());
75+ let machine = runtime
76+ .block_on(OlmMachine::with_store(alice_id(), alice_device_id(), store, None))
77+ .unwrap();
78+
79+ group.bench_with_input(
80+ BenchmarkId::new("Device keys query [SQLite]", &name),
81+ &response,
82+ |b, response| {
83+ b.to_async(&runtime)
84+ .iter(|| async { machine.mark_request_as_sent(&txn_id, response).await.unwrap() })
85+ },
86+ );
87+
88+ {
89+ let _guard = runtime.enter();
90+ drop(machine);
91+ }
92+
93+ group.finish()
94+}
95+
96+/// This test panics on the CI, not sure why so we're disabling it for now.
97+#[cfg(not(feature = "codspeed"))]
98+pub fn keys_claiming(c: &mut Criterion) {
99+ let runtime = Builder::new_multi_thread().build().expect("Can't create runtime");
100+
101+ let keys_query_response = keys_query_response();
102+ let txn_id = TransactionId::new();
103+
104+ let response = keys_claim_response();
105+
106+ let count = response.one_time_keys.values().fold(0, |acc, d| acc + d.len());
107+
108+ let mut group = c.benchmark_group("Olm session creation");
109+ group.throughput(Throughput::Elements(count as u64));
110+
111+ let name = format!("{count} one-time keys");
112+
113+ group.bench_with_input(
114+ BenchmarkId::new("One-time keys claiming [memory]", &name),
115+ &response,
116+ |b, response| {
117+ b.iter_batched(
118+ || {
119+ let machine = runtime.block_on(OlmMachine::new(alice_id(), alice_device_id()));
120+ runtime
121+ .block_on(machine.mark_request_as_sent(&txn_id, &keys_query_response))
122+ .unwrap();
123+ (machine, &runtime, &txn_id)
124+ },
125+ move |(machine, runtime, txn_id)| {
126+ runtime.block_on(async {
127+ machine.mark_request_as_sent(txn_id, response).await.unwrap();
128+ drop(machine);
129+ })
130+ },
131+ criterion::BatchSize::SmallInput,
132+ )
133+ },
134+ );
135+
136+ group.bench_with_input(
137+ BenchmarkId::new("One-time keys claiming [SQLite]", &name),
138+ &response,
139+ |b, response| {
140+ b.iter_batched(
141+ || {
142+ let dir = tempfile::tempdir().unwrap();
143+ let store = Arc::new(
144+ runtime.block_on(SqliteCryptoStore::open(dir.path(), None)).unwrap(),
145+ );
146+
147+ let machine = runtime
148+ .block_on(OlmMachine::with_store(
149+ alice_id(),
150+ alice_device_id(),
151+ store,
152+ None,
153+ ))
154+ .unwrap();
155+ runtime
156+ .block_on(machine.mark_request_as_sent(&txn_id, &keys_query_response))
157+ .unwrap();
158+ (machine, &runtime, &txn_id)
159+ },
160+ move |(machine, runtime, txn_id)| {
161+ runtime.block_on(async {
162+ machine.mark_request_as_sent(txn_id, response).await.unwrap();
163+ });
164+
165+ let _ = runtime.enter();
166+ drop(machine);
167+ },
168+ criterion::BatchSize::SmallInput,
169+ )
170+ },
171+ );
172+
173+ group.finish()
174+}
175+
176+pub fn room_key_sharing(c: &mut Criterion) {
177+ let runtime = Builder::new_multi_thread().build().expect("Can't create runtime");
178+
179+ let keys_query_response = keys_query_response();
180+ let txn_id = TransactionId::new();
181+ let response = keys_claim_response();
182+ let room_id = room_id!("!test:localhost");
183+
184+ let to_device_response = ToDeviceResponse::new();
185+ let users: Vec<OwnedUserId> = keys_query_response.device_keys.keys().cloned().collect();
186+
187+ let count = response.one_time_keys.values().fold(0, |acc, d| acc + d.len());
188+
189+ let machine = runtime.block_on(OlmMachine::new(alice_id(), alice_device_id()));
190+ runtime.block_on(machine.mark_request_as_sent(&txn_id, &keys_query_response)).unwrap();
191+ runtime.block_on(machine.mark_request_as_sent(&txn_id, &response)).unwrap();
192+
193+ let mut group = c.benchmark_group("Room key sharing");
194+ group.throughput(Throughput::Elements(count as u64));
195+ let name = format!("{count} devices");
196+
197+ // Benchmark memory store.
198+
199+ group.bench_function(BenchmarkId::new("Room key sharing [memory]", &name), |b| {
200+ b.to_async(&runtime).iter(|| async {
201+ let requests = machine
202+ .share_room_key(
203+ room_id,
204+ users.iter().map(Deref::deref),
205+ EncryptionSettings::default(),
206+ )
207+ .await
208+ .unwrap();
209+
210+ assert!(!requests.is_empty());
211+
212+ for request in requests {
213+ machine.mark_request_as_sent(&request.txn_id, &to_device_response).await.unwrap();
214+ }
215+
216+ machine.discard_room_key(room_id).await.unwrap();
217+ })
218+ });
219+
220+ // Benchmark sqlite store.
221+
222+ let dir = tempfile::tempdir().unwrap();
223+ let store = Arc::new(runtime.block_on(SqliteCryptoStore::open(dir.path(), None)).unwrap());
224+
225+ let machine = runtime
226+ .block_on(OlmMachine::with_store(alice_id(), alice_device_id(), store, None))
227+ .unwrap();
228+ runtime.block_on(machine.mark_request_as_sent(&txn_id, &keys_query_response)).unwrap();
229+ runtime.block_on(machine.mark_request_as_sent(&txn_id, &response)).unwrap();
230+
231+ group.bench_function(BenchmarkId::new("Room key sharing [SQLite]", &name), |b| {
232+ b.to_async(&runtime).iter(|| async {
233+ let requests = machine
234+ .share_room_key(
235+ room_id,
236+ users.iter().map(Deref::deref),
237+ EncryptionSettings::default(),
238+ )
239+ .await
240+ .unwrap();
241+
242+ assert!(!requests.is_empty());
243+
244+ for request in requests {
245+ machine.mark_request_as_sent(&request.txn_id, &to_device_response).await.unwrap();
246+ }
247+
248+ machine.discard_room_key(room_id).await.unwrap();
249+ })
250+ });
251+
252+ {
253+ let _guard = runtime.enter();
254+ drop(machine);
255+ }
256+
257+ group.finish()
258+}
259+
260+pub fn devices_missing_sessions_collecting(c: &mut Criterion) {
261+ let runtime = Builder::new_multi_thread().build().expect("Can't create runtime");
262+
263+ let machine = runtime.block_on(OlmMachine::new(alice_id(), alice_device_id()));
264+ let response = huge_keys_query_response();
265+ let txn_id = TransactionId::new();
266+ let users: Vec<OwnedUserId> = response.device_keys.keys().cloned().collect();
267+
268+ let count = response.device_keys.values().fold(0, |acc, d| acc + d.len());
269+
270+ let mut group = c.benchmark_group("Devices missing sessions collecting");
271+ group.throughput(Throughput::Elements(count as u64));
272+
273+ let name = format!("{count} devices");
274+
275+ runtime.block_on(machine.mark_request_as_sent(&txn_id, &response)).unwrap();
276+
277+ // Benchmark memory store.
278+
279+ group.bench_function(BenchmarkId::new("Devices collecting [memory]", &name), |b| {
280+ b.to_async(&runtime).iter_with_large_drop(|| async {
281+ machine.get_missing_sessions(users.iter().map(Deref::deref)).await.unwrap()
282+ })
283+ });
284+
285+ // Benchmark sqlite store.
286+
287+ let dir = tempfile::tempdir().unwrap();
288+ let store = Arc::new(runtime.block_on(SqliteCryptoStore::open(dir.path(), None)).unwrap());
289+
290+ let machine = runtime
291+ .block_on(OlmMachine::with_store(alice_id(), alice_device_id(), store, None))
292+ .unwrap();
293+
294+ runtime.block_on(machine.mark_request_as_sent(&txn_id, &response)).unwrap();
295+
296+ group.bench_function(BenchmarkId::new("Devices collecting [SQLite]", &name), |b| {
297+ b.to_async(&runtime).iter(|| async {
298+ machine.get_missing_sessions(users.iter().map(Deref::deref)).await.unwrap()
299+ })
300+ });
301+
302+ {
303+ let _guard = runtime.enter();
304+ drop(machine);
305+ }
306+
307+ group.finish()
308+}
309+
310+#[cfg(not(feature = "codspeed"))]
311+criterion_group! {
312+ name = benches;
313+ config = Criterion::default();
314+ targets = keys_query, keys_claiming, room_key_sharing, devices_missing_sessions_collecting,
315+}
316+
317+#[cfg(feature = "codspeed")]
318+criterion_group! {
319+ name = benches;
320+ config = Criterion::default();
321+ targets = keys_query, room_key_sharing, devices_missing_sessions_collecting,
322+}
323+
324+criterion_main!(benches);
Added file: benchmarks/benches/crypto_bench/keys_claim.json+1 additions
@@ -0,0 +1 @@
1+{"one_time_keys":{"@example2:localhost":{"NMMBNBUSNR":{"signed_curve25519:AAAADg":{"key":"Tib0yzXb6gAdrZsb74DQ80N3VEx7rw/AM5pO3vyBOWc","signatures":{"@example2:localhost":{"ed25519:NMMBNBUSNR":"UnK5GSQE7Oj4aG56ftAK0qBzzylwE/r3gHLFJqsKKRgZO13D3BlfQG8nGJ2vH+dU8jGfjWxMreHWoiK7JUasAw"}}}},"SKISMLNIMH":{"signed_curve25519:AAAAVQ":{"key":"nuNElix5zk/v2YaKh6YW6tD9tXGlJ283ixm1pLa0NiI","signatures":{"@example2:localhost":{"ed25519:SKISMLNIMH":"rC8Mn+ac0ClLhsBZ59+iWoD6hxq3L3CM17qi+Pw60ybOt/W5TvU8PPViDoyfPQB26jG9z9Q2rbvxorbwxZiQCQ"}}}}},"@example:localhost":{"AFGUOBTZWM":{"signed_curve25519:AAAABQ":{"key":"9IGouMnkB6c6HOd4xUsNv4i3Dulb4IS96TzDordzOws","signatures":{"@example:localhost":{"ed25519:AFGUOBTZWM":"2bvUbbmJegrV0eVP/vcJKuIWC3kud+V8+C0dZtg4dVovOSJdTP/iF36tQn2bh5+rb9xLlSeztXBdhy4c+LiOAg"}}}},"ARCIQGAOXH":{"signed_curve25519:AAAABQ":{"key":"hb2zAbIYFQHQxfVnDXMpaOOtIw7Sm+/IM2xNsh4tfkA","signatures":{"@example:localhost":{"ed25519:ARCIQGAOXH":"FyO4OmRuzCPZHWyhYEoAOTg6Tu03CUS3h+1c0zFc3HFvJ7oI4TVmbUP20KenX8/xnTO5CQaUCXVyH8QN6s+oDQ"}}}},"AYUJPHPSAC":{"signed_curve25519:AAAABQ":{"key":"se2bMxnTTbxCZHI6bMPijc7ereFfUZ0ML8W3BcU/vGU","signatures":{"@example:localhost":{"ed25519:AYUJPHPSAC":"7bKgbXDAfOgqgUdlIL2ladoZK4xbisMHoIv1kG84j788U/bzoGYY3ETqjf5m99DTroBd5+7W1u7XBf0vMksGBA"}}}},"AZWYEFDSDX":{"signed_curve25519:AAAABQ":{"key":"xsoUhL7yH3i1anuXeVzCjgzjP1JKouki7kAlF96kmSo","signatures":{"@example:localhost":{"ed25519:AZWYEFDSDX":"ABDNOM7lDXqXCCvCTx+ruWle5BPJWEp7J86zC5vIzWgo6uMs+AnxTHeRcdzArZyDgo31hWHgExj/mCbcGWQpDg"}}}},"BBGXWJCGEV":{"signed_curve25519:AAAABQ":{"key":"x8GEvcwcs08Jx6KJ6DzAPwo+2YuD1pXZ0mxPfy0U10U","signatures":{"@example:localhost":{"ed25519:BBGXWJCGEV":"9ZpEJxOMkjIQh34UQ1ZFpgU/92h1kk/f46dCNaRAPfOYiQLhBTnDx+yHT2ys6IeJ/RjtWe5nrFJRPgAFf+t/Bg"}}}},"BNPGUGDFAE":{"signed_curve25519:AAAABQ":{"key":"QSiaJfFPKo7YelLnezHpNwl7+54NnJyX2aPuqR2/Y2o","signatures":{"@example:localhost":{"ed25519:BNPGUGDFAE":"EzemA6kDlDrNJy6DXcTAY7MZMK/14FqNFr8PrjZUAFTGdiDvNvTrsr9kNMssJQkJr05YSh9SGzsVhzRXFEtrDg"}}}},"BZKAGPQUAB":{"signed_curve25519:AAAABQ":{"key":"Ng1qyxiWyTz1h8i7VOX/oNvtOtklFvzdCzrjhP9Gczg","signatures":{"@example:localhost":{"ed25519:BZKAGPQUAB":"vHTUl/MQC5lMQgslTFXdyZ3p+68df2Oa2VIB2hUu2cB/QILZcQh7CepsvK2wkU8elQNehUaB699f7yI62A3QDA"}}}},"CCECSKBEDH":{"signed_curve25519:AAAABQ":{"key":"6wdkkNbRv5KOCQEAJpx6Adx7Pp8Baa3vtm3Qx0iRN3c","signatures":{"@example:localhost":{"ed25519:CCECSKBEDH":"Q8t6n0Ch1WNzc0azZZf8pGmvI6DZbBfmwOUyAQY5ZBNdY3d6sJZXunw4HroDcQpxAGdI09Ju8Kx8mBVg31P9BQ"}}}},"CEVBXZPTZI":{"signed_curve25519:AAAABQ":{"key":"JgEjoYPflqUDz+mZ6kWZuGfv59PgFXQalWUMBDXvQEA","signatures":{"@example:localhost":{"ed25519:CEVBXZPTZI":"plsxT+REpfILkbV2soWSdJKaBO82pX0q+HJHWXNJePmogBH+JavxZvfCRQXnRcqNVqvVZMbd7LzdE9MGs1ePDw"}}}},"CEVLRMVPBD":{"signed_curve25519:AAAABQ":{"key":"yuM+176WD2MwzgTCNKNgU5hTreRd6kTB2NQzrApp+GY","signatures":{"@example:localhost":{"ed25519:CEVLRMVPBD":"7ngNlt5SUEQ8k2pdmrYeiF2y6iTZzHScVfZEL7Uaf3uGkxu3i2qhdWmaZhlUCGhAJWg/u9Gmz/dOHM8GqCELDg"}}}},"CHWHHLVNRU":{"signed_curve25519:AAAABQ":{"key":"UM3FRT6cFTvwZ7XFDI59rG1lBIfvbYx6l2sRlYteuhA","signatures":{"@example:localhost":{"ed25519:CHWHHLVNRU":"8iQU5ROmvy+weXD7riod4cvHvTYrxvin/YnumOl/eFZFUqYf+fJtqDxTUVpcrpMO2Mn1vlZ6IUFPQoeTllozCQ"}}}},"COTJRBEJRK":{"signed_curve25519:AAAABQ":{"key":"TjdvLmI/S1ZfDXlxPpR8SEHLrWllkOiEWPsOYrSFGCc","signatures":{"@example:localhost":{"ed25519:COTJRBEJRK":"CnCUBx9yRBJGc2iPrMAWdJIMftkGn4wgGW8i9l6VkV8ORAH07q0gO08IEI8XNiveLzuC2vq4hjqGxYWJFYMYCA"}}}},"COZKBAJDSL":{"signed_curve25519:AAAABQ":{"key":"diq2cZEb46nCLvMj9SsY1WXSNLo0LkKwhGnZYbtwCVU","signatures":{"@example:localhost":{"ed25519:COZKBAJDSL":"Tu3byXcnF59k75UO2aRrVZHrxq63FwZ/7qG2jz1IhyslttMpExhLv+BCYmPaFZHR4pkb/aNwTLBAmugLZ5gtAQ"}}}},"CPLENDMCJZ":{"signed_curve25519:AAAABQ":{"key":"Yv8Q7EuPA7dpxxJaFl9Mjo9S0CSGKCgsufSXrr0dRRY","signatures":{"@example:localhost":{"ed25519:CPLENDMCJZ":"SVIpMqBbqLMyP2mfHd6fqGjDCUPV1BqV+Hrw54xIAVI0FIu2EipCtU64OIl55+dHOBFuhGwzAtlVfnJJa5k5Cg"}}}},"CQSGOHRFJE":{"signed_curve25519:AAAABQ":{"key":"EW4AYmZ65GGUGy0mNla7gjybMDvqyB0s4r9AgxMKQFo","signatures":{"@example:localhost":{"ed25519:CQSGOHRFJE":"TmZDCRzSqu8EC/xg2Fob6U5DhGeQ6HRgR02TWqcUR44GnwcgibANQemWvV/agu6LnJjAkREggXZC47xceZExDQ"}}}},"CRYYTUURSR":{"signed_curve25519:AAAABQ":{"key":"0u8F+/8lHiIxgrdHrBnSFbWOyJ5+4k9GGF7nAmdF00g","signatures":{"@example:localhost":{"ed25519:CRYYTUURSR":"+UK3EP4BJqXPCfhKMtl7/iWgXbIM7zUYmvWEh2vT1oQnboOIOM5vsRltarjv7RIfDiP5N2m7TeEBvNjrf3e0Cg"}}}},"CXLMFOVYUX":{"signed_curve25519:AAAABQ":{"key":"Y8QbX9D7p+3AIYT8uxOzzaT2AqefrffptfQlkljjpk8","signatures":{"@example:localhost":{"ed25519:CXLMFOVYUX":"gHN8yzyDURb5XiaCr/gKYfIIVkYOhLFNqVJ7C39YSOVWC7QALMKY1Aiy63b0ldNVofMCoCqogbTxyfs6t7DtDw"}}}},"DDMJJSUUSH":{"signed_curve25519:AAAABQ":{"key":"qcJDtyiLcu7li19tCmaVfh1cnYFLTxM7YTISLGuFsS0","signatures":{"@example:localhost":{"ed25519:DDMJJSUUSH":"m6moRaWZkCYueh6nvbR5kIQbZmTvZFRMLQte2b8Z9NSM6Boa+/SR4Ds0YA4I8OVe5CEBA9tdsS68sH4NubRBAA"}}}},"DEFPMZXZCM":{"signed_curve25519:AAAABQ":{"key":"T3kZS/F3tDWy2P0kPP8NcugNF1rf4TaYEeX2loLmhAI","signatures":{"@example:localhost":{"ed25519:DEFPMZXZCM":"R/lm/iL4xedB+fldEqFSMgYbga1KdhVxHa42vRPb9ucD34pKAoB2So11nKG4pxBujzO258VofWPXToz4AmRkAA"}}}},"DHJPFSVBXZ":{"signed_curve25519:AAAABQ":{"key":"8qdZCJXi9jUJHaBNvW4xC1Z45+djh0sJOakuJknSTEg","signatures":{"@example:localhost":{"ed25519:DHJPFSVBXZ":"igHPMqdtAsVwBfmWoQz62Hp1HnPDQ/YrTIFLKcIFzMX/Mat9uJRj/C/4WYdJ+AWq+A+cEMS3/mlnZERpTqS2Bw"}}}},"DKJOMBOOJT":{"signed_curve25519:AAAABQ":{"key":"OKQJW/h8MPLO3fTaFFhlu0eu8JpfiIwVVKWUITjZBC0","signatures":{"@example:localhost":{"ed25519:DKJOMBOOJT":"aqV5z0vDMj5IgozTtr45L8kXTlL9m7o8UFLy5/RLfLn3RGOlm4VoImrhJLMLCe/Unn0qiyesq2wLS5KTYXxRCg"}}}},"DKTFRSRHCO":{"signed_curve25519:AAAABQ":{"key":"TpPJMlL6XY6tV3J7+0IxSVVLwO73wyC648Zk0xBELCI","signatures":{"@example:localhost":{"ed25519:DKTFRSRHCO":"0nlR1AtN+dFhjtP6ODOSkcfYVg6A3bIZ41378tXTsl3ZlOsMHitfo8mEyo+uKzj6ManK6rxdGA5+WpqDnBO9AQ"}}}},"DQCYLQFCGB":{"signed_curve25519:AAAAAw":{"key":"TmtqlsSp8X8HUrGsCBwOXAPGaC0UaDpS4vXRcljNyEk","signatures":{"@example:localhost":{"ed25519:DQCYLQFCGB":"1LAyTQYZ+T+YDOC3kmf7fWY0ZB9xCmi8yWi1yc7zH1TVzC3cvDHF4sUgqCqJvlHlG/oo7m0dfsdo43cX3FWiDQ"}}}},"DTFJXETAZD":{"signed_curve25519:AAAABQ":{"key":"/vV7pIZFVsMm7ny2LA0vwuGrSXox/Oh9dSr0hHb+xFQ","signatures":{"@example:localhost":{"ed25519:DTFJXETAZD":"AnKflgTS+JrNrNKTRLfkUCH+uVH7WAfRT+DVRNVHanGIVeJyWbLC0HAetTE3O5B2DQlw3FLCQTFTCIIsp+00CA"}}}},"EDECYDJGSA":{"signed_curve25519:AAAABQ":{"key":"5jo6mb1OdQ0xXLAaG5M+w/W8eZASHjwQJU3s/XNYRDU","signatures":{"@example:localhost":{"ed25519:EDECYDJGSA":"ULBYHkRRFutZ1cbJVV93f/2llA1kWQ0WkrhqiJuIg+wt9CVFocUYPFa0KwdOQ9y3zcSbUL7QJTRxwb084SzODw"}}}},"EFZNCETFCJ":{"signed_curve25519:AAAABQ":{"key":"XdfKhyXK1z4+h3li3qRo9S5Guw6IqniXhuVvSbYiDRQ","signatures":{"@example:localhost":{"ed25519:EFZNCETFCJ":"YNCHbhPgQl0ChOUmd+nD22Fx16imrLGwEvqeLooKqltqhB9rvRl65ta85FsnoZleRnLPGhQwmum0Vcj9eE5ACw"}}}},"EVMLDDWANA":{"signed_curve25519:AAAABQ":{"key":"f9XvwIZgXRPRG5RvgQD58ek/quiA1vi9qUohromPjSU","signatures":{"@example:localhost":{"ed25519:EVMLDDWANA":"6g1HsO60iXjHMeQnzUDKsaEIgA2Wkvm4R88Mlm+LkCjX3agFRCLmWQbDbCNyhfAuKp5RtGVztwLP+w/7qr5OBw"}}}},"FAQIGNOZEI":{"signed_curve25519:AAAABQ":{"key":"W3nw8o5bls1FakhZcXXm7bu754GSDZhDuy1h5Z2qlF8","signatures":{"@example:localhost":{"ed25519:FAQIGNOZEI":"s0ytdVbNqoibCBIg/H8eoDapHnK30x3f8LgYQelGAK1JeYaHV2jsXErB08IqMX+ExveuZJjhC2UruMotjM38DA"}}}},"FEEBAUWTGH":{"signed_curve25519:AAAABQ":{"key":"nmMKZNw2GNnX5IrC+mLxs7VygFGe4Rr8Luzir/wlZgY","signatures":{"@example:localhost":{"ed25519:FEEBAUWTGH":"3jDEjcUS1zh1Ls79HcgIU9s4Hbkp7X2+31O4bLwfuZmHX4qgfhEJdHAqw4rnv8d5sGurRvij9SrrsrurX0kSAA"}}}},"FIFUHVFZPB":{"signed_curve25519:AAAAAw":{"key":"7XG2DKzDDUhmOaYAuBnVfmvzg+CYOiwBJHh38xpGjW0","signatures":{"@example:localhost":{"ed25519:FIFUHVFZPB":"WolHVbPLD/GnbXr0Sat78bV6YEVf3tWK3NQV+59VGGUA09ktj2Ks8UgPNpbCQSRs/w10PMITcA0wqDOdCzO2CA"}}}},"FLAIGGZDUI":{"signed_curve25519:AAAABQ":{"key":"C24KE70E2Q8oGhntRH9A8ecJQ4c+NqcT/Sr7U++2K3M","signatures":{"@example:localhost":{"ed25519:FLAIGGZDUI":"+zbDEA7vbM++Ykg+l1KucVnM4wAnlJhw+ynAWG2pXwooPz0Dwss9Svv3o+TtbRxoVj9mSMafN0qjoiOrJWQIBA"}}}},"FPPORJYJWZ":{"signed_curve25519:AAAABQ":{"key":"7Qeko4af6cyac1/UH0RtvcjhIwVbTH9XjPn22a3jiHo","signatures":{"@example:localhost":{"ed25519:FPPORJYJWZ":"/4huQ0h2v24kRvqCIiZsjtucgMoc2/0ak7tQ52ACWma1iEFkjFkJhs5QKf81qfb73jkwjcnSHfUtcLMago/eBA"}}}},"FRZAXXLFNO":{"signed_curve25519:AAAABQ":{"key":"m+LMjhyRoutQij2tLLynQpOpWmYLrNilywl8QkFe8AU","signatures":{"@example:localhost":{"ed25519:FRZAXXLFNO":"so0lZOlknaNZopmQ6hWAnZSo822V4dYDRAZtD/FL9UPj8WLNUCoArkDzaU05mi95Eu5fAmr15hs3FJXamBFhAg"}}}},"GGBGEQJNSJ":{"signed_curve25519:AAAABQ":{"key":"B0b2TKhfX9aaGllKtqRpczjBkD33C5Vo+GFZok9qC38","signatures":{"@example:localhost":{"ed25519:GGBGEQJNSJ":"EWeAsi4wsssk6Y62h8mMLQi1UZNj+atYQLsyoGmcmGRZ9IYAuXz/qLkGGTErvMzlA6OxeJPBUWSEj9tgq5V/AQ"}}}},"GIOUUFLOLZ":{"signed_curve25519:AAAABQ":{"key":"4gaX6tSP2CH3SuFhHbJewTJnTv1ATfmLyvqGySFKvTM","signatures":{"@example:localhost":{"ed25519:GIOUUFLOLZ":"hoiLlIRhzEG74Jp69ckkIlhtuVRqRIf7GHOYrSW5UFaxzxwdcqVWUeXHL4cq9KUAhk+Sq7WIDojavU8Ia99dCQ"}}}},"GOAKBDPUKJ":{"signed_curve25519:AAAABQ":{"key":"UDn9ExvHIO2cddBqPas4KXePMaX1vRJ6zmUdQq5GPVs","signatures":{"@example:localhost":{"ed25519:GOAKBDPUKJ":"kELcOheftQVdcgouGW+uAbiA0Z74qgql0ucoWAWeh6GW5z5xiKpGkPgUDa2QLyV760nJY24dSFVbk5XBcHCpDA"}}}},"GOVWXTWHIQ":{"signed_curve25519:AAAABQ":{"key":"LQiTE14erDyDGZWJGRgbzbTOdPqZNUqUUZmGRU8wnQ4","signatures":{"@example:localhost":{"ed25519:GOVWXTWHIQ":"mabFSjzBrFkgRYNQcizR5U0GwAazZVzXIU6tEjG1cHx5dp6j/ZaXMUBQqYIsdzaO+yNYRvn4RUoD0JhCDnQjBw"}}}},"GSKQTOKLNQ":{"signed_curve25519:AAAABQ":{"key":"Mmy/vwjtOj5kMBrj1fijI5H7oswIOELDczyto74hZGM","signatures":{"@example:localhost":{"ed25519:GSKQTOKLNQ":"5N69Kp3isctfVDdVnoaBIc0/d3nRSiTHT04eHdMNXTDKkxbeZpVqCgl42W6IMYFcGrDMeK2WJVEfYxGstXTGCw"}}}},"HHQFHSMEYG":{"signed_curve25519:AAAABQ":{"key":"CDF79o3JSPwt5pLoP+2QUUi/EL7N4hlbdXzkBCTr8Ts","signatures":{"@example:localhost":{"ed25519:HHQFHSMEYG":"NTitNxtT3qbi2mbTsqpW/DueRJBHdwHe7MzWH7PaS50skqcNpGm+9nWmMMXeyHtMCgGKISOy1gNo+/FGPo2DDQ"}}}},"HVAILYUHDN":{"signed_curve25519:AAAABQ":{"key":"zfV6yLaZ5Z3u7Hk1UWtfYy55FMl1+fsi+dgIk+L6j3o","signatures":{"@example:localhost":{"ed25519:HVAILYUHDN":"JYfDBJSpMmGZiENM0uXRHHEZrh2cBQNnTLzsDwA+LFcPmpAgBXbN7xxRLuV/K5ndfsNu66JlzgU8a99p1lR4Cw"}}}},"ICPHTICSZV":{"signed_curve25519:AAAABQ":{"key":"fQbah5Bz/1fmGZ6eK/vfbUBIgeoz/yknAILK2FrNSV4","signatures":{"@example:localhost":{"ed25519:ICPHTICSZV":"sT2vwmRj1gBR0cPJKXEEkndti9T6eubuKZogHS9AYAuKSL6rjmE3E4vsBKQQNgKZROim2oUc4DqUYDkHm+LBAA"}}}},"IDZMWJANDA":{"signed_curve25519:AAAABQ":{"key":"FOrahT+LcAIUXPLJwF8kxhB/q9VhOy0TMLndwTHZH3w","signatures":{"@example:localhost":{"ed25519:IDZMWJANDA":"NXVD65HL34YhcdfayixruoSVW4UmVqqtcCsNdCLvcjQrjgRCeTQ20U5g2qLde9MhpGmPZEI07ovVTFh0dWShDg"}}}},"IFLWAVYNOG":{"signed_curve25519:AAAABQ":{"key":"d9f8PJdxzTwjhbiL+KSsQp7O0AP564wAoKO0YPlTUBY","signatures":{"@example:localhost":{"ed25519:IFLWAVYNOG":"wkdJG9IbrjkZFiSuAu05gjv0rZRU5t9qiU/Xetlreo2pZjUfRUttvpxqlti9ms5IVFRjf2yqIWjhOjajq2pgCA"}}}},"IKHFOAKJYY":{"signed_curve25519:AAAABQ":{"key":"3wEwFj17WW2A7X/LEQche7nUSwtyKD0qYf7kyUlVOF0","signatures":{"@example:localhost":{"ed25519:IKHFOAKJYY":"3o972gJH+KZZ+41P03rPbfCPiRQJR2lwPFyH6RLRqW9yZCF5io1mT/cnhQFT55bc7fdLp9eH1hOntkp88rsjDw"}}}},"IKJVWFOXIF":{"signed_curve25519:AAAABQ":{"key":"zHDptdgkl/sZI2zcmal15TR7fvgpbIC7tjOStACZUjc","signatures":{"@example:localhost":{"ed25519:IKJVWFOXIF":"TeukT6OLHwq3+VVSLbuLsYr515fp369hzUCiC7e024e8nRXvT4it1wPT+3dd/XFtkZK9gdQaNrOHO+dnJUeCAw"}}}},"IUQJOWHVID":{"signed_curve25519:AAAAAw":{"key":"GCFQ3E66D0tW8yV78UJvZ0LQxesyxlgxyqba4X4ywX0","signatures":{"@example:localhost":{"ed25519:IUQJOWHVID":"Ot9fkViT03WSXkya0+szJ6tbAte+6hQhwvQe+vY7juQpeW9X0/gYXz07P13yVoG1mjLyQEn691U4sG31q9aMAw"}}}},"IZKJKHXKYI":{"signed_curve25519:AAAABA":{"key":"cyuP5zHIU8y4Di8IIwT1O3pK1Y6PUo5X1MO8KInsWhc","signatures":{"@example:localhost":{"ed25519:IZKJKHXKYI":"aOhRAXBCWdNai6VtUSb+lAa1/jjXb65ZySTE061CwilmXp5y3nmpXtu3cU3+ENRuGVbBiIBU1GlDCALtOWTMDA"}}}},"JDKSTVQUQM":{"signed_curve25519:AAAAAw":{"key":"vwgDSMn59usFwH4zT3H3QPWWtBfWHX0ibX0d4aE4xU8","signatures":{"@example:localhost":{"ed25519:JDKSTVQUQM":"ZcXGAn9J1/EIrFKrPWceC5oDMKHeBvXxkXz5Y3jzl9mwDRy7xKcfM9tBMgb7Nt873wdvIIz9M4L6Rw4h/pG2AQ"}}}},"JHCACATEDC":{"signed_curve25519:AAAABQ":{"key":"WgUdgP1x6sDs0aRje145nVn+OASZCNChSR0yg1Gq63A","signatures":{"@example:localhost":{"ed25519:JHCACATEDC":"apswiRhdR4E5waOxCpORduI/AyH/2oZvWf7WKECDE/iDhw7mc0NFzuO7PZZbMGQ/cZBXZHl379mhr/MK9zpxBQ"}}}},"JKEXZVRELA":{"signed_curve25519:AAAABQ":{"key":"vT8xV+yDhZXazduqUYXy2PUOBcy9xNal4LZd9JUEYxE","signatures":{"@example:localhost":{"ed25519:JKEXZVRELA":"hd4WVbRyt9ZMPzdDybJwloBMpvOWhYufVtNI+Ff/tiIVDfan9Fsh1GylweKqhcfLOWpgxlZGe92P1FGkVk+vDg"}}}},"JSJZHEGJHQ":{"signed_curve25519:AAAABQ":{"key":"Pm3bmSAt4N9aBsglBl7I3Mse9Mkm/o/VTMkkoNmnny0","signatures":{"@example:localhost":{"ed25519:JSJZHEGJHQ":"zeC0n5IO9n9RnBNEU5Bzwkhg++xxHYw9Hc+XcuDreu0bg/TmPgKFvJFSOIoYc2ETlNrusu2Srl1TRWq0zmsECg"}}}},"JSXCDTJQTQ":{"signed_curve25519:AAAABQ":{"key":"7Sg6EctVD6ohjNFKJWH19oMYuSEkI95SOFirJIxnaRM","signatures":{"@example:localhost":{"ed25519:JSXCDTJQTQ":"qvytL/sppF6UyGTYbjqSCZVtKtQyD9Yh3gr1gA5oLqUibrWAsuLyFJVT5QJp/boLN8WrNbcu1YZMFtOd7mWnDg"}}}},"JVUSWHJVVM":{"signed_curve25519:AAAABQ":{"key":"Q9B+aCB8MbsGR+HzFAr3rRhKt4NmVT3laRPJtc5ckXY","signatures":{"@example:localhost":{"ed25519:JVUSWHJVVM":"z+qdE54OxTt7+2d7S2ogA6IevyLJVXcYGy0maqvbhRl/ItVp5zI/QkgYR6r0C2oDp7TkA9AwfP8fdZcxD3RyBA"}}}},"JXESGIWWOX":{"signed_curve25519:AAAABQ":{"key":"9Syd/W/GDKVtFA9vqRq2AxiQXpze5B/tdnmYt1DzxUc","signatures":{"@example:localhost":{"ed25519:JXESGIWWOX":"3GKCdNYurZyinprjXYpL25eCTwd9ZZVyvluJ6bBLp6Cr0Ho/Pa+IN7ddEIvv+XeM7xh14L2OTkCm4V+TcpXrDQ"}}}},"KAJPYAZKWG":{"signed_curve25519:AAAAAw":{"key":"5kcrA5y+i7Q6NT9o4k9pXUHeBeDa/Iz4yfyiIkVvWgU","signatures":{"@example:localhost":{"ed25519:KAJPYAZKWG":"20ie3Apsm2iNz25Gaqeb2ubU1GzOVAKwKJnvMoCbbgcXM3DgdZIIRylWYyKU4FKt7Fqhh/8Z7YClBRSY7M/GCA"}}}},"KIAYGCDGBV":{"signed_curve25519:AAAAAw":{"key":"c84WaZULk36GTbbVJru7a2wg0tTai7T8dxpZvN64mgQ","signatures":{"@example:localhost":{"ed25519:KIAYGCDGBV":"d6wwo19qdQgbTjivp+2vTH9799ftbBeeTcqFobTDZLVxxruteCr5DcTg07q8+12AngBrhUZoL9ArUit4stPPDA"}}}},"KISRZEPQWM":{"signed_curve25519:AAAABQ":{"key":"Y0WAaJIRREfjrloJklpbWynqPBro+32vBEDtQ4O8AFw","signatures":{"@example:localhost":{"ed25519:KISRZEPQWM":"fGXr6nqQztJMfSFGm15QztdKOTNFEYzRuCLftS3B6gShUiGsJxUpUuyf0/woko1kkYbeOvb9LJK7pVONMCEpDw"}}}},"KKCOTIXYTM":{"signed_curve25519:AAAABQ":{"key":"7s2XFE+l1wzwuv7R6l2HtIM9wjOPeNLPDr5T322zCVc","signatures":{"@example:localhost":{"ed25519:KKCOTIXYTM":"ZYOZAa2SEa2hPNyc41AeRC7bZmNmaRfBR5rATNI4EB+nSE3N5SQ2FCkryHlNKFn4NCa/GuJ05F6WlfX9veAlDA"}}}},"KKZJWRYGSG":{"signed_curve25519:AAAABQ":{"key":"opFUiO9oFOaTVxp9mcgCOfiFVKSBc4rgyp1DiRj8rxg","signatures":{"@example:localhost":{"ed25519:KKZJWRYGSG":"rbzItmBcHF3E1gg1c51W2JfUcdY7LIzdvqi4K/TbTwqonk5Gc6DhQtPIqLSxHXWspGD+9bR29Tlz3bViTzlIBQ"}}}},"KMKRBJXMDJ":{"signed_curve25519:AAAABQ":{"key":"XybOfpwgQdki0smx6fwjqRKVuqepXCb50DnVTAVCux0","signatures":{"@example:localhost":{"ed25519:KMKRBJXMDJ":"ztiwAH+beqnRaEuA+GqRWeBC+tml1+fOLLH+mQ5fIzmaQev6w3bQhBPjJmDkIugMFvscu2IQoGN7QazUXg71CA"}}}},"KTZXWCPEZU":{"signed_curve25519:AAAABQ":{"key":"ujpucE+5OJxupcNllB658jL32g9GCUtGCS15okUKqmA","signatures":{"@example:localhost":{"ed25519:KTZXWCPEZU":"9hTNg4KrzOS4gxKNX4ElI11CYOGrnNv6/AtiAZ9evZbuS+EGIR2im336JwHoqAQbspPwdQgPk6A1Dks3X1GPBw"}}}},"LMAUZPCZJE":{"signed_curve25519:AAAACA":{"key":"PQa8Id/xkNPqU+xK3l0hVs2gtk6feWm2wncWHYf3DBk","signatures":{"@example:localhost":{"ed25519:LMAUZPCZJE":"UgkfOr4R2gLaxP4DYVHxqFWcssNaDqYovUm5IRMvoUl+b1hH5Iv4XP9to3XAERbV4l2G34UhpGJ0ZMzC6ehrCg"}}}},"LTPSXLWMGZ":{"signed_curve25519:AAAABQ":{"key":"mvkq27g4aGic71BotAtFZqPgd+2fbr18VsGbjOCA800","signatures":{"@example:localhost":{"ed25519:LTPSXLWMGZ":"38/8fbSvrO3Qz3m03hWUb/Ef5jDKapbd0pztSeAMILv0MewdQcF9zxSFkIUNOtczWZvsUeSj15vv+UfYIWkXCA"}}}},"LVWOVGOXME":{"signed_curve25519:AAAAsQ":{"key":"H2sqFeswPO1HiMNlWUByDWYuk2S00fXlDwcDjCw9Y28","signatures":{"@example:localhost":{"ed25519:LVWOVGOXME":"IMIkKYDkbnGLpfiOmv4gGZkhUy400+gpsqmNJxwYUt5f2TfhiDvoh7tX7kSSIx56hAqNQV6A5hSPlp8Qjh2fAg"}}}},"MJUNZFVNEB":{"signed_curve25519:AAAABQ":{"key":"l7/ezZMwt6TuNzijz1E2gr6sxUQQUH/0AO5XFNMeYzc","signatures":{"@example:localhost":{"ed25519:MJUNZFVNEB":"lJUYlp9/kGXN4R+uEU/JG0DsQPzgA5APcSbULvUPoSzDye3Exg4FdDE7ro0/yd4632DzcDWJk12UttK/r9ZLBA"}}}},"MOGWGGXXBZ":{"signed_curve25519:AAAABQ":{"key":"D4NvD7OchpyaCWaZj4v00CIvCFUQvfo+8kFYpv3n1WM","signatures":{"@example:localhost":{"ed25519:MOGWGGXXBZ":"Yx/cWF3XJVFwHik1Mt9sEnZ0g6hz4uCDQZ8lqzY7Pg1RcQAjVCWMpP8UgrcqAkZcswg/MpH4o9iBl3huT2daBQ"}}}},"MPLCYWDUMV":{"signed_curve25519:AAAABQ":{"key":"runHg1CANPy3vGq+nFBSOUSiGZzDgYZ6ZcpN8BT6mCo","signatures":{"@example:localhost":{"ed25519:MPLCYWDUMV":"8BadaF/wscICNyno+fsMkQQHJTUFp51U2TV9JD8o4X+OeCts+Al+Q3pB1hoAQwXlBKVqVVAUVpCyPpGaR7x5Dw"}}}},"MWFXPINOAO":{"signed_curve25519:AAAABQ":{"key":"7547iJG8yD7rsQioFeR/6VNrePgagKuamNoTCiA8PQw","signatures":{"@example:localhost":{"ed25519:MWFXPINOAO":"xUVkHAeLyHrLyYnUltJmCAJZUJmdGfpdUwXZZFN0dVlbP0TbB33bIq91pQcjsbUFA+9zGBtqj1wV/Z2rvyr2CA"}}}},"MWVTUXDNNM":{"signed_curve25519:AAAABQ":{"key":"lwfLjFqwJN1Z8xFzb830030NVKXKQjXy46HQnn8WWUA","signatures":{"@example:localhost":{"ed25519:MWVTUXDNNM":"Em6DNEOvM0Ym1wDT8Dtmcnl/4ArBghW0H8g6rzfvfFIy/fBuMTp54JrJVIm/zCqdmH/ygfsn7jUi5IieXaPWBg"}}}},"MYTNISNDKK":{"signed_curve25519:AAAABQ":{"key":"S4/rTuzq2XxbfoACFgbVPPOVEa2biEvpoZWaOsG/c08","signatures":{"@example:localhost":{"ed25519:MYTNISNDKK":"GFuyakFesGnYwk0pIlPQeQgCrST7M4qgMSuGe8SD9cS/owb4GhI633Uya6jYvI3NitzF+50fOq5ScvsR1x6NAw"}}}},"MZECYDWJFY":{"signed_curve25519:AAAABQ":{"key":"fjopoO0I90USyQskjdORu9iEtEJVcNRUF7DBCsEcpAc","signatures":{"@example:localhost":{"ed25519:MZECYDWJFY":"2wFJsn/+K3/92A6SDQUYQCeRcW7oxJbkv2rOJRIfKnDGqg7t1sVtRcJwrIoqxhQ+zn/N9pT/DjTgcv2tM5eFCQ"}}}},"NATWAGSISG":{"signed_curve25519:AAAABQ":{"key":"3wItCw+Ps1x4A4Hx88MM6s4yLXJYT5WTwEOiOQLRzQo","signatures":{"@example:localhost":{"ed25519:NATWAGSISG":"wUFCL+lBn3dKqt7DomiNefz88cznNfvUM+1ou7QDWCmhtV3OugnM1vOldQC6wcL+Sni6mOyxh07nqTYnxFAMAA"}}}},"NFOYODETZN":{"signed_curve25519:AAAABQ":{"key":"o58N6afcIfD+vLIj/NEKG16xDGBBm0bInEltzGmk/AA","signatures":{"@example:localhost":{"ed25519:NFOYODETZN":"VYA8+P5axweIHMPETW8hds6AYdozfs6byHwV/g04UmmJayViJu8MBPdmrW5E93Zfhxtgrf78y8BrxS2WW0+UDw"}}}},"NKYXFHUYWE":{"signed_curve25519:AAAABQ":{"key":"XAj2MOH7RIOlfgqkjPsNWS9CxUIh49yUC1bNl59oXxU","signatures":{"@example:localhost":{"ed25519:NKYXFHUYWE":"vMVRtXO20nmd7sK4OEpbAk/fNqxPy1YBpZpaxEDSBtszAcXrEC3b89U237FGJvSQCYgdcYdP1+pRGPcey0TjCg"}}}},"NLWICQEGVA":{"signed_curve25519:AAAABQ":{"key":"igMZya3UYfUWW7UD3ywXhiYlY7YucTxK/EuubQ8wvnQ","signatures":{"@example:localhost":{"ed25519:NLWICQEGVA":"t+vgNIrhCcl1O6H8oJy47pDwzQtqQq4yoy9+n7N9DdL6e9SlhfFXeaev9anjLUBpsJbHOrakw0jKgtPFEWApCg"}}}},"NMEOKLUWNV":{"signed_curve25519:AAAABQ":{"key":"+tWr41BirmesfifQiN/aLTibUyYuWyLCxh94IUMqk2E","signatures":{"@example:localhost":{"ed25519:NMEOKLUWNV":"W6Xw3qZGTQkWPmbkantW12DaF/xERhgdLgIgKpPP/AyoMSMb9QMYbOVPu1k1HnC8ne6usI6OVArB+G3a57bnAg"}}}},"NXGUGXMPQX":{"signed_curve25519:AAAABQ":{"key":"KjO8TWg0SeWQK6EP3PU+lNt/VGpeLOrsdBdMY0SWYxI","signatures":{"@example:localhost":{"ed25519:NXGUGXMPQX":"A58uyovkFugwM0jlth1baDnQlAcADpXgctRedd6dYnuJRbdEsBohizrneHcwCJl03ZP7dgge2d1VDeTwhAspBw"}}}},"OAVYDZNHPK":{"signed_curve25519:AAAABQ":{"key":"XxtK/9qnhuI4EdB5NX8jbf1py0olHhU8R67IzaKR2X0","signatures":{"@example:localhost":{"ed25519:OAVYDZNHPK":"STg4ahB+5Kaxqh/LWr3RcrNJjo6RV8chRrkrQEnCk6euHXPMrH6FzpZZfqSYZWJTjk1qvtKEiYsE1OG8wyWyCg"}}}},"OAXXWDJTWT":{"signed_curve25519:AAAABQ":{"key":"GgNmjyBlfwB2zSi7zbO0xYX5YGstCA3kGeD7xvdBjnA","signatures":{"@example:localhost":{"ed25519:OAXXWDJTWT":"5eOMyEVvJZrJdgARL295Pvg/KG3cPqRf5x3o8gFLrZZ5FI6XzHYRAhmJX/JgdktovhtvfhBerBcl/VDOZR1ODQ"}}}},"OBFHLVDNMU":{"signed_curve25519:AAAABQ":{"key":"1fdMPzmpAjAwGCJkSJQm6cHueLOWVB1FP7KyCgNnj28","signatures":{"@example:localhost":{"ed25519:OBFHLVDNMU":"LcuZBb+pkoM2gOZ6FeVXBaIAk4SHHCiti+BBjcnXwBYIz8ujqiFUN46jIGyPgMeqc3PTB+S4YxpQoAmE3bd2Bg"}}}},"OJBSRLPEIR":{"signed_curve25519:AAAABQ":{"key":"mi6gyEO1RGT1LW4ncMsEulRJjADvl862tyFDBGiLQ0I","signatures":{"@example:localhost":{"ed25519:OJBSRLPEIR":"CB3t9RAHaC3cx2HorunazS6qIQ4iW6/xUoRk+MCOGDfpzCi5B/yd52AQQzKriLbAAag/676JgeQQa9trjP6TDw"}}}},"OOIGEAIKXR":{"signed_curve25519:AAAABQ":{"key":"PbTR9BL/uzEdBa2a+FSAukPe0DbhaQ1B79q6NSuh6GU","signatures":{"@example:localhost":{"ed25519:OOIGEAIKXR":"/KVD7+PxY0CXUA9ME24PNRLFRIumS/uBVhpz6QACxUGee7w2ErDSRotOoqsLf45BvE8cufOmoLfnTDeDPVxwBQ"}}}},"OOJRSPOHZE":{"signed_curve25519:AAAABQ":{"key":"0RhHNv1NpFtifL/jgFTwGQLHdeWLWTThh7K2l9/3Iik","signatures":{"@example:localhost":{"ed25519:OOJRSPOHZE":"lZd7by0GVrFqQIwoVg3LeC95Cc5e9Jeq6wzHojyRNdlYqrggk6ZdADeoJIQLE/S4+zddiXtOY2cbuouCX4jqAg"}}}},"OOWGKJKCAL":{"signed_curve25519:AAAABQ":{"key":"Tuqx8OYyF2zovDEtXL3Vs76MqKk53YRPwc25Rt/0JHI","signatures":{"@example:localhost":{"ed25519:OOWGKJKCAL":"r/WJJTnqWgch4qXIszqKINKXg8Nt8FNrVD65zNaMBBMc0Ijyr1PI9uQ/l1ob5CSLFq6AghGM2BQ6Ii/8eJ/FAA"}}}},"OQUMZGQBZC":{"signed_curve25519:AAAABQ":{"key":"3SC3CYb6asP/0/uMT6IDAmzJfAgnpsbaZAmEQBsJ+Uc","signatures":{"@example:localhost":{"ed25519:OQUMZGQBZC":"hYfJVAwPzSBRONyTK7N+nuwrKzfFYGbkOCKkp4XeEpLfpp8QLpbpuyXtX3ZnixZ579veMsBBSmneIpbYQdI7Ag"}}}},"PCWYNGUAAB":{"signed_curve25519:AAAABQ":{"key":"dGzuxckv84idCdXr6pPrVmpDfEt7YQfssvp4GKiGUnY","signatures":{"@example:localhost":{"ed25519:PCWYNGUAAB":"4hj9MxeXRGcF7I941CWY+8dawPaXLYA57lwMJ5TV62jeQrxGgm/7yQHSdenwdbYIhuvs9oD1wbP+t8n6HRuCCg"}}}},"PFXZAUEJSR":{"signed_curve25519:AAAAAw":{"key":"C6nKhK1Wr7IxWjsbs7akxAGBvcH/Rmx547xnP5+zGCQ","signatures":{"@example:localhost":{"ed25519:PFXZAUEJSR":"lSwwfnCBCLC2bA8Q05uqJq2k03NFrCu2fIik1DEKRhG0BdJmAZOvCpKDpWANN7BkU9YPLsgPZzF5V8alihDFDg"}}}},"PIRRYJJPEE":{"signed_curve25519:AAAABQ":{"key":"getZl6nYQJy4eUwyX3Mpdj0GtZUNpRH1IVqxBjYj0Sc","signatures":{"@example:localhost":{"ed25519:PIRRYJJPEE":"lMiOsoLCjtVgiIZPL6FtjA+ZUcohXaJVXXBDosLCzRzt8GiNtrVKgfBSWLp6+nBFMDHAJDgNRi2g9wyAoOjHDA"}}}},"PITUXWBZKW":{"signed_curve25519:AAAABQ":{"key":"Vy66LQ4mdNqnRGS9PfbUEZBBwMFZXaQROkY+7G1DNh8","signatures":{"@example:localhost":{"ed25519:PITUXWBZKW":"LzEde1/0bQbmMc35jxeuWsVR54RenM/QagnRm7yDVZwwwjDWiK8N+w+8ZOBhp2hbebl0vCuja2k2sv6wGaR0Dw"}}}},"PLKUNRVDEA":{"signed_curve25519:AAAABQ":{"key":"rvviVyDH4f/oWyGA6gxNjq04aw0wcKYwBNboL/youAA","signatures":{"@example:localhost":{"ed25519:PLKUNRVDEA":"pQqvm2m4DAetw0pQO6zh9Eml6zv3Hb+uketW6rag0DXVHaCc26jOsa9w5QyzIAoThs1VRzIShrV7HTtITh+YBg"}}}},"PMTFYTFGTD":{"signed_curve25519:AAAAAw":{"key":"EWTpwhcQmMHfyJhg+nlU7NLYrGrcxZ2U5AHVFfepg2A","signatures":{"@example:localhost":{"ed25519:PMTFYTFGTD":"IY6r6cm1FouDPzcIK/FGs3ZJRTldPyE9vTgss3TPb1enVQDObwaoeci/YXdhBLD/3UmFTlpfmrDFPwZOSvGcDw"}}}},"POEMMCBEMR":{"signed_curve25519:AAAABQ":{"key":"OIzB2zd1+agcQJvRS6KUsndzBi4pEj5pnxpzYPEcVlg","signatures":{"@example:localhost":{"ed25519:POEMMCBEMR":"LPCe18RY0NOqocPDDIOW8npLsinH9V31zwqnevGOjAZwUd4DI95xbqFQ2oyf0zdCBZT2hA6A0md9m6vj8wKiAQ"}}}},"PPHATICKBQ":{"signed_curve25519:AAAABQ":{"key":"GwDTTkGb+5lA/nIuQFSLP/DhcCIqZGKVW+ivVcTdYz4","signatures":{"@example:localhost":{"ed25519:PPHATICKBQ":"swjm0Q5aLiKmOdXfOHQV03v64UVurX1cxWEQx6pkIgN4GcrM0uj2OkJ8KlIokDBTKUrDFiNvkVKSgeQGDSpfDg"}}}},"PTJUYANNPX":{"signed_curve25519:AAAABQ":{"key":"mKOGTrZ2/ByL5F3YkF5T2ilLTeELdQqwY6nKRYkjiH8","signatures":{"@example:localhost":{"ed25519:PTJUYANNPX":"YsVgrAv6OrO4ju5tJOHbS6Zi6Syyn2AklnqYTQ7hqdE1V7rJIEMIn79vJnNfYm9IWzZ3cgVlRs6+q3DybymNAA"}}}},"PVSCUNMZPC":{"signed_curve25519:AAAABQ":{"key":"4cfqHlyFJrustJMMLMoMIXFFzppvkJj7IOb7p7skfiY","signatures":{"@example:localhost":{"ed25519:PVSCUNMZPC":"SrCmBSBZxyEViE3qDiYIpie/k40N9PJiDolwW05rjQYKrETTBPCJq4rHBgu8lJuOsuaDnoTOT+lpyd/v6uWbDQ"}}}},"PYKAGIYQNL":{"signed_curve25519:AAAABQ":{"key":"mqekWemvWR5RT+o2uLy91HYw8qqtpDBzfHWaHiH1PDA","signatures":{"@example:localhost":{"ed25519:PYKAGIYQNL":"NR5NCIMoPuXSEhlUDjsP9UnBCh/FJ+LeDPPE0aOaoM+1mBYFezaCWtDVfi6OftSHBECAM3R6KaYH70fhCxcbAA"}}}},"QEVCPMBWQX":{"signed_curve25519:AAAABQ":{"key":"NOLqrPubBokQcWYtzI/lc3SsQzr/6FP6zFUo2/cAQGk","signatures":{"@example:localhost":{"ed25519:QEVCPMBWQX":"QAHKj1grBgcI0cCwgrXlLbZSndibdGI7UkVRWBa5UzfzFEYeWKTYYwkSMRGZNecRSjLmVTHDDGEN3PeKHMO8Cw"}}}},"QGBSWWBGRL":{"signed_curve25519:AAAABQ":{"key":"zC89+w+d2IMeDVpuDBBvxSbbitEX+bn0wWkx2xDH2XU","signatures":{"@example:localhost":{"ed25519:QGBSWWBGRL":"KFVht65sBVukCeh0/vGxZ7HbrudbsXWXUDNeIQr/b9DmXd1w6cAhVtc4WGJXLYSp8pcYjxkL1BrqXBIHNfgLDg"}}}},"QWHZAEXBJB":{"signed_curve25519:AAAABQ":{"key":"pd+Hg1O3fnsQWpl3/G7fNBBopO1ldYsNR5PJjc7tbmE","signatures":{"@example:localhost":{"ed25519:QWHZAEXBJB":"dnSodBcZiIas0b/hxWKQMgMSdMsORZLmcx2a6dzKp1zxtGAab6Jn1cOx7G7j1P0QG7ZJIMcjH4cFV+5g2AO+BA"}}}},"RDRBMAITSM":{"signed_curve25519:AAAABQ":{"key":"wg3kZ2R8X50VEl5U4sCXeMA4pgBK3Zzhj0Gy14hgAQs","signatures":{"@example:localhost":{"ed25519:RDRBMAITSM":"BEeEnEN/IPUPF7Om+sKVNqHqJgUiU0t0n70FpDUuPNL2asFTuGawIRDrUGsNGJBhQK7dI3hRFTC+q9Seem7nDQ"}}}},"REGDZMINHE":{"signed_curve25519:AAAABQ":{"key":"spP/9TVeRUiwsx7srT/X8cAzxGOhn3lhJBmwtyPfc1Y","signatures":{"@example:localhost":{"ed25519:REGDZMINHE":"tpN7Efa+8KzrXLYT0wpOdIXoxXe5KpgElWz99mxSYIC7zf5Hivez60VUWGwQ9nqXWlao7vsgJBjv1dkarIPMAg"}}}},"RKMGIKJYLD":{"signed_curve25519:AAAABQ":{"key":"WXZacNrPQ3anivmmVkMgO4NXqvuTCrHKGJa+L3GIyCM","signatures":{"@example:localhost":{"ed25519:RKMGIKJYLD":"abljyBMvI5vZhkAAwd6u3IKfTbT05/GZddLjufpL12ScybIyCOneVAm8bD3qqUzSHsXkKP12VEJRBovyCmb1Aw"}}}},"RMFBNJEHOU":{"signed_curve25519:AAAABQ":{"key":"DMGtNTLxGtBG5h39lAJD07Crawq5QQMHSSj5YDp3zXk","signatures":{"@example:localhost":{"ed25519:RMFBNJEHOU":"2SKPf2tlbAWWo/7dybPP/xaYjyVsIvaNgJyzqlWOANqOkL+2nanfrhdyIaAg53SOGcNnTz5YWYmrmVy0VbCWBw"}}}},"RNCCPGZUFA":{"signed_curve25519:AAAAAw":{"key":"IhVaRjse0bZG/+6n1yPY6ncz8Uc0CHib72Ls9hrxBFo","signatures":{"@example:localhost":{"ed25519:RNCCPGZUFA":"rGwEDQixUhQdAEXFx34D6YoOK0zL0lHoTkYxory+cW563jj38+Gy+HuCQ/7xGNg081+hgb/sCMy3gvjmA85QCA"}}}},"RQIKNNRLWT":{"signed_curve25519:AAAABQ":{"key":"+C1abhNI53RuyewxlKnmeQ5LGINpjN0zzpGQKwsR/n0","signatures":{"@example:localhost":{"ed25519:RQIKNNRLWT":"K0S3Hb+HtxhZAKn/mNN+unfx5z6yhOJlmNCFAADCxoip3gEnv1ZKNfye0a1OdeW5m6EwYgFS7Gk0PjpxcuKsDA"}}}},"SFJLADLVLN":{"signed_curve25519:AAAABQ":{"key":"mLPBefUN5dtdwxTSX/RZQ6L7cWLhrQ9JbILoQb/8xVo","signatures":{"@example:localhost":{"ed25519:SFJLADLVLN":"1a5ENQ08Y3tzwo0bY0tihY7q09gFICuTLjfIcN7C/3v6x+zT2QEMymlAMzLm+cjJaIfs01jLyP1vnSQn5mJaBw"}}}},"SFKYKWBWOS":{"signed_curve25519:AAAABQ":{"key":"xtGqXvZJCky4TOW77p4nYeBAmcmCdXwyGrzkQDTSRmw","signatures":{"@example:localhost":{"ed25519:SFKYKWBWOS":"mduwl0FThUlKhT7oW0shPDH8YRDGL3ORSStp0nT3azzb/RtV5Ndj4be7jvOnGxCPCsmiSQ8fe3igaUUE7UHCBQ"}}}},"SFQMEHNZZS":{"signed_curve25519:AAAABQ":{"key":"X3YZD0f3Hh/VsLoQBN7q/D3VmmeZhn/Ctpgi9XWpj1U","signatures":{"@example:localhost":{"ed25519:SFQMEHNZZS":"Od+MLIeXuTPev6tLuK80BVQaIzN84Xm8GrmOb7qJlc04xXdPxrGed6L3RKHEeHADLbcZUvnoOO3+5DOq4ofBAw"}}}},"SJJONGRGGH":{"signed_curve25519:AAAABQ":{"key":"nBLmKUOx9eVq3QnP20B+4dAM74Y8ZYwC+CXGMC0hayw","signatures":{"@example:localhost":{"ed25519:SJJONGRGGH":"Q1a7j8Uvio+RALpVyHLa1ajC28NekDETHGymIgZGH44eK+UBxdXO6SBH4qDTE80zVuG2vEBdpW6+A6+mwdzfAw"}}}},"SJMFYPCVTT":{"signed_curve25519:AAAABQ":{"key":"IS1G2+ma34zs5WsUch2xpLw1I07fzlfxTzqpvwt3Llc","signatures":{"@example:localhost":{"ed25519:SJMFYPCVTT":"UGua/56SkG3whnGUw1cEnoPylmVhBWJVNSY/pVGegxFkYuF3joblIiH1JIkUHr5Yh2aDr3j1EzYnp18eH1BxDQ"}}}},"SLMEYJPPRU":{"signed_curve25519:AAAABQ":{"key":"EXzN4RHRgQiINQCsBP1SOv+VolPL+rHBaftuBsJw93A","signatures":{"@example:localhost":{"ed25519:SLMEYJPPRU":"zDCeiWUvy1gG8lyAb6IpI2+ipj+uBU5Y8Bb8KKorw9aFigKMGvwYTK4OhvSeNrsa+WQeqjZAXh0nNtTwKdKmCA"}}}},"SPQBMGZYIV":{"signed_curve25519:AAAABQ":{"key":"AQyiIz6RGeftx2bKckeeqZjKmPBWPRta1BEb38Y38GU","signatures":{"@example:localhost":{"ed25519:SPQBMGZYIV":"ukScLq/GQrjYwKytzwI4YcZ+fVUEf0I/rvy//VP7dP/cWIVOMktOCrm4JB3fpn8lCmf7yxbkJu5i1er4ebt3Dw"}}}},"SRLQGLPZOH":{"signed_curve25519:AAAABQ":{"key":"LquIiMAZnx4TkQwf76iDrkdtsJ62QPnhwKxWmteslTs","signatures":{"@example:localhost":{"ed25519:SRLQGLPZOH":"xkt69nBhv4M1/NLrbOWiSW6q6rnT/N+Yxk04O3F1d43yulpJh30aA/HIRQNSo4nD2IIg6fulvpNF88149aVJAQ"}}}},"SRWZNGFQQK":{"signed_curve25519:AAAABQ":{"key":"RppHoXv8KOEg0pMsHN2fYnfZHjLFB1HfU/Vr9TJFrW8","signatures":{"@example:localhost":{"ed25519:SRWZNGFQQK":"QfUY6mIZAPH1WuG4FXjOcK3nb5E4H2BGLp71SyqAyeSIxhW9X7+6UnvPdAJIKrzqsS0zPiT7GtNPmh7gW49TBQ"}}}},"SUQWYILHRZ":{"signed_curve25519:AAAAAw":{"key":"R6lNl5jRxhioTdrNJnx5clkR2k51ldV3B0h5jX+5JC4","signatures":{"@example:localhost":{"ed25519:SUQWYILHRZ":"aOLQ0jPUvjTmD0X7tsRPlNBBpnf3KednMC6O1ILHFKAe7npstBbmVthtrc3Pa9jPJ6d/cimEj7Xupj/DvaJGBg"}}}},"SWBGZLVCMH":{"signed_curve25519:AAAAAw":{"key":"tNo9xIeKKbOQVVsCML7sbW3qeIHzSIxjZxBWtUmhbhs","signatures":{"@example:localhost":{"ed25519:SWBGZLVCMH":"Uvwx9OVpB6w0D37u69vK+MOtVy00OzfhTgcYHPHhioHZIEBCWWrmKOXcKV6C66m33JvqUMRBUfsJkQ8yMYlYCA"}}}},"SZVTBGJGBL":{"signed_curve25519:AAAAAw":{"key":"FUT/CqpFfwrHVGS5ruqH0c+PNGqD5POv9s+394gSWmU","signatures":{"@example:localhost":{"ed25519:SZVTBGJGBL":"GI1t0IPwanIEwfj0qK+RxgARB3fY4MJRlIJxkMA4YM91RxKT1wqVKpem1HCRMvqbxlFFBAuLI6tZF7YD9mZ7AQ"}}}},"TCOYAZRGZK":{"signed_curve25519:AAAABQ":{"key":"KOz9ucpAnKBA++zPswsXkohuh0m7z/BaEVKUuJw1Vno","signatures":{"@example:localhost":{"ed25519:TCOYAZRGZK":"uq0CFVJerfkBzE4beMUpsXpeim8CmDlu1zNvPDkGFJvlUYIpq3TPqj/HI/fNfviEs9oYwlZ5nN5/9Ey06kubDA"}}}},"TDQKXBKSKG":{"signed_curve25519:AAAABA":{"key":"4FM24OsPJgaZF6iLW61bZxT9/9ykfEyYrFEfJm15Am8","signatures":{"@example:localhost":{"ed25519:TDQKXBKSKG":"an66kGmbzaJmwze+enZbGQwYRrQUgwjAQW/as6SaOI4qZ/+0PViLyo/3SX9ulIZQdtdZuRSPV1V0ogI+/wGGDg"}}}},"TXOCPFNJLZ":{"signed_curve25519:AAAABQ":{"key":"KN+JqOuGBrYlYvzEbbVacFqk4LIknUrMRpZynXpLekY","signatures":{"@example:localhost":{"ed25519:TXOCPFNJLZ":"QB5PNrI5+gnjEHWxtHC9Na4+0SHGNVYZPiNnXcmKhlQ9XQpGWRq1i0K6/axcmLxeIl70hjZ9ieCOnrbYzqaYBQ"}}}},"TXWZDGLUCI":{"signed_curve25519:AAAABQ":{"key":"QSJuspIfKbxt135IFRs8NZzy4X/LWHolIMrAzFM9B3s","signatures":{"@example:localhost":{"ed25519:TXWZDGLUCI":"a338MAD59U2FPzuLiSXcb/Q7B1dE8b4TL53DZUXrNehJjlUkTiqmDWfGDLOAq7PnsDCFXtjy6Y0XSJfrfwz1Aw"}}}},"TYVVHABYWC":{"signed_curve25519:AAAABQ":{"key":"ayDn1US9YUCrtLPDhQraPdu/Dqum0wD/OrhRukvxEig","signatures":{"@example:localhost":{"ed25519:TYVVHABYWC":"7amVLtIyaRWbo2MZoPlQY8iiiHP7SLA3TaWcxfvA4BwFOlGckNEcLsLMCFWXOh8eW9q/syOztO0UIoPiR2pxDg"}}}},"TYVXUYCJYC":{"signed_curve25519:AAAABQ":{"key":"RBQ2YXiSVaDLS6AdXcUsdvSf2Kl6S+c+6WoJHLSKHRY","signatures":{"@example:localhost":{"ed25519:TYVXUYCJYC":"eUb6G1dDN65gl1HFzyIVrjQrwvaTixJWdKb0fBXovdTnQiiEKs2PuPyRCH8LU3UngB6e24q2L9uA7JF5Dt7TCw"}}}},"UJFFDLXBFG":{"signed_curve25519:AAAABQ":{"key":"KHyV9f0VFN2U39NpKD0AAfgf+5JPWH0rguIpHeLWQTA","signatures":{"@example:localhost":{"ed25519:UJFFDLXBFG":"Od/8j/CHvOAkSzNWDv3vERk0BQYvPloHDyojC+ohVvsafhKSJEuM+jIU7lxQHtqo0Rkp1AsmO0P2vDcbnQx4AA"}}}},"ULJMVHVAOG":{"signed_curve25519:AAAABQ":{"key":"y3dwcVbLHeVa5Rd43nPqfKlqHQEF4KMAThSDgM/YDSA","signatures":{"@example:localhost":{"ed25519:ULJMVHVAOG":"n6NA3X/WHtMPyArLcpJjnl+t0TXvq7B845/9pJFE3kZQjZ9thIwQVV1qUIs3EvdjdqoU5BsMPxFFD4jxWqi0Ag"}}}},"ULRVAILNPW":{"signed_curve25519:AAAABQ":{"key":"zwy6uSf6UWD0cXXmzktB0dO2f24Cq55DfPStS8I2CVQ","signatures":{"@example:localhost":{"ed25519:ULRVAILNPW":"gs/OnCJx8EBQrOxzi/nGpKWd8wPss8lbAyVifEYI79SkZEUieIqRcOdo9OOg1yM89mPFJRG9uwO2uD9lEe88AQ"}}}},"UNOULJXOXX":{"signed_curve25519:AAAABQ":{"key":"oMvdhZCoHj6Dxe67uY9gIm2mnbVAAMi6NNF5yfPEM3Q","signatures":{"@example:localhost":{"ed25519:UNOULJXOXX":"J4QUjCgohmDVlCwf39U//aqeBF1Z89SPpajZkhKWG3bU8Neuuj6cSRNEjxVsREw58VJyTZbOq3EK6BZ9gMNsCQ"}}}},"UPMCUPQRDH":{"signed_curve25519:AAAABQ":{"key":"PWgUmtktUgIUmSNRdfvMKTdonTZSeiIyoEOpwlioWA4","signatures":{"@example:localhost":{"ed25519:UPMCUPQRDH":"xuSDWBaKrpXNvP2PQ1FVHG2pHjjAG1FqltitvUWLcJVPLvjDAlEhL4XQudYjx3I8zbvVIYtPSue63lLZGlxhCQ"}}}},"UPSICJSJXA":{"signed_curve25519:AAAABQ":{"key":"uArB2L11//UuHLvFxMeDrHEjZPQih8HA5LX3LdeaWkE","signatures":{"@example:localhost":{"ed25519:UPSICJSJXA":"nvgdFFWR0P+yTjtW8afOqURMpEst3NfNX16jl2vdsir9pyhXvvyGOjmclDYxvlFQp5fKO1kWnUSb1qXgYDMYDQ"}}}},"UTVPFWOSFH":{"signed_curve25519:AAAABQ":{"key":"KBJi8THRGfIge2/DpB/CCPzcykDYE8ICaEEFmjxaQHM","signatures":{"@example:localhost":{"ed25519:UTVPFWOSFH":"im50KkQkf1vt5XWAPoqnAbhY4gvHSeTJiJgwCzL/OM4Di/YYmdGbrfSW4g4lz4oERLlQrQLs4QCN97DYArXZAA"}}}},"UWKQEPYTKT":{"signed_curve25519:AAAABQ":{"key":"HYdlZiD4ezrg6J9R3jyQTSun+7g6g0wUUQH6N3iNYkc","signatures":{"@example:localhost":{"ed25519:UWKQEPYTKT":"BTR/ZpJh8J25+oP84Q/0FfhMGJaZysuU+y9f2QOest2GIr8X5K0ePiLgBPFeHEBd99aYbtpzMJgVU7YHowS7DQ"}}}},"UYIIXHSTHI":{"signed_curve25519:AAAABQ":{"key":"RB8Rg94m/XOw7aajfhplTJbjGqIMG3vovnWVl7zUjGY","signatures":{"@example:localhost":{"ed25519:UYIIXHSTHI":"+bnWYVUL5xVqtPYGcCYKvkHae2K9njyOXy+IJA7i/TlQ2f//LdE2tClM0jeVeOZEsunBBc8OBj6JV2h2BBpmDA"}}}},"UYIUDLVJWP":{"signed_curve25519:AAAABQ":{"key":"btIdnh5VcFLXEn02Rercxhu++Zs3s1dPLXmGy1gj5zQ","signatures":{"@example:localhost":{"ed25519:UYIUDLVJWP":"lksUHpn87mQYJ5a94LKvHTkV7smfrg82MnlwuCozf3nLuxO46qwOQtEkmZPAabcJHbRQ5rdi8T/H38ov8BzMAg"}}}},"VEGPLVOEVA":{"signed_curve25519:AAAABQ":{"key":"F5Ftz9qLxmZmWDEdD7r352Kn9R4NL+acuch7soAIdjI","signatures":{"@example:localhost":{"ed25519:VEGPLVOEVA":"o5fxPEKcFiqd4fhhri7fr2xy6kLQmPgHnXoiS7Get2wZSxxrDTU96wVo3McJagD2/u1gd+NoqVpL8EUCV88UAw"}}}},"VJLILRHZUW":{"signed_curve25519:AAAABQ":{"key":"2IujXgo0ok0G508s4ToK5tZ6JuwVBGRTZHUPrT5hDkk","signatures":{"@example:localhost":{"ed25519:VJLILRHZUW":"9a2sK2tLY1MvobVp2yrBPhd0miKMu5AFwOYfsZogBO73c7dy+JHZQ/JGegzBp6K9iHPA6dL66wYm2UVtAANGAQ"}}}},"VKUYMBNZQQ":{"signed_curve25519:AAAABQ":{"key":"fdO42BEwP0Xzn2PIin+vuldPwMheySw9iK7tjHLMFyY","signatures":{"@example:localhost":{"ed25519:VKUYMBNZQQ":"z29JbKgyztcsxwhMKw9nYj77k9zY3QqyWQT0Pys75AC015qtEICyn/sbbhGCxfPyqsKm7+Ltvm1OqSybQrU6Ag"}}}},"VRSCQXSSNQ":{"signed_curve25519:AAAABQ":{"key":"djXakT2j688707Od7RoIHjqEZI2FneCr8or2rRYj5FQ","signatures":{"@example:localhost":{"ed25519:VRSCQXSSNQ":"GtSYeL+tkOGPipShCyVNQY9tmg1HJ1BIvpUqhF+M6p6xbWJWQSv6N7qKM0mTrU8nvbly8CiYG7fcMrq29S0NCw"}}}},"VXTRVBKMJB":{"signed_curve25519:AAAABQ":{"key":"kuXok8lJ2zwa4kSi89FT/7Pooa3t4qTrub8Ordy4uTA","signatures":{"@example:localhost":{"ed25519:VXTRVBKMJB":"jY9/JnJ5cv1YWvyhYt2IgifreS9MBLcw74/juVwo7K1C7P2vuseotHV9f6JdPouzZSc3iKZak+gigkvJAPyHAA"}}}},"WBXWCWRWFI":{"signed_curve25519:AAAABQ":{"key":"FLneOCkNi6NST/O5jlF5Fn3dWgZ9pnWr3HC++Z1t+ig","signatures":{"@example:localhost":{"ed25519:WBXWCWRWFI":"kvFyMgpkq9aevA2vlDOmMPEBJ3p6mJFOhq3oI4CPqQoJ3ulVb7XV8r/5qHclnCpIJPK4mZJ8HlA942vW9N/MDQ"}}}},"WINACUTKQK":{"signed_curve25519:AAAABQ":{"key":"YY1iW2zaqy22FnuQnDXiHl25bpLk45fkv2A9tHzjzFg","signatures":{"@example:localhost":{"ed25519:WINACUTKQK":"Hge/EXnK6N7WHaQS7fKI7Sl9GRWwv8ZQBWPd36qH5MeSIc0Q94eUhusok6ta+62OBf4nzJkhEtDUqwDV0iWgDA"}}}},"WNHNFCTQDF":{"signed_curve25519:AAAABQ":{"key":"30NcSoAJE2tAVu4JPf2a98KpRyWJ4E423ho/ZV5klBg","signatures":{"@example:localhost":{"ed25519:WNHNFCTQDF":"L3MXSX9/aud3uU7jWGlyuuyHabXWyM/pO0vsO0ITO0KlKHP6irA6oM2YE+Tfz7tjPpu8AH+R7Q384Z//2JRoDA"}}}},"WUFSXGMGDC":{"signed_curve25519:AAAABQ":{"key":"kNtjFE8rBDZc8DodzBqtsBtES5wfyNCq1BeMGSJ8hSw","signatures":{"@example:localhost":{"ed25519:WUFSXGMGDC":"RTqYH/awDSocgz0IcapT4MN1BafNrbOhs/eWgiK/jGk8NcABaHwBRmiinJPEAm8r5hymI2r2OZbDziNsjMjQDg"}}}},"WWFJHBNUVS":{"signed_curve25519:AAAABQ":{"key":"pnHgn0Jaq6DvR28Vivs9kMXCD7xtlgFA4NYvnEgo80E","signatures":{"@example:localhost":{"ed25519:WWFJHBNUVS":"dbwjnSEr3kPvqMQKtmitxzmTUNoDkG88OeNta3uoKOngNKRbpeccoDe8pVwUJcnVf06W1XZyGBWfc/4IhFEoCw"}}}},"WYEWNGNQLY":{"signed_curve25519:AAAABQ":{"key":"m+LxWZViRuTGO1sP9YoeMf9H0qaIHMQmg0bnhxu23Dw","signatures":{"@example:localhost":{"ed25519:WYEWNGNQLY":"H5R8rmv1JQ4xownu0jO1dgBzFG3mrTc77p8Sqfdd0driKs2yiZQxcOmUjjQLgV5CTkjNQaQD13ooIv/dmFy1Ag"}}}},"WZAEFAVVYB":{"signed_curve25519:AAAABQ":{"key":"u+wyAfIvMOOy50g3KK2Vj3edH7SrBB9lVPZBHLWII38","signatures":{"@example:localhost":{"ed25519:WZAEFAVVYB":"9DRXWbZ8AkkgfHmEB+PKhgZiUrZQWKu6Sud+z8X1TWWuoLXUMq5z7fe8M7y2XGt5b1hu2zEGc54nTvnVEqT9Dw"}}}},"XDGOZRFUAX":{"signed_curve25519:AAAABQ":{"key":"y68SYUbWvJnyUi546cr8eun3YYSvumv/GM7swY203CE","signatures":{"@example:localhost":{"ed25519:XDGOZRFUAX":"pKq+SXQkE+8uvL1fXUCUU/Ipz1VDZry60H1U1mJAywTVSc0TA6G4toZd/nVeU1cmYLDqrUgKIxyWeb9t3Jh+DQ"}}}},"XJNSUWGBNH":{"signed_curve25519:AAAABQ":{"key":"1CH8UzLh/spbZAmrm6hZ87VGvlyoLfrsvI2+q1AgbCw","signatures":{"@example:localhost":{"ed25519:XJNSUWGBNH":"U7vgPxdDNsNm8CXmGKuLWH0xAowa7G6W44md75xXFCj0LCz2Mzw/+VA67b6AcXloKI3NUeypgNJOcvhbPa2PBw"}}}},"XOWLHHFSWM":{"signed_curve25519:AAAAOg":{"key":"nL33vdK1f9IhVipN9oUUzjUhIL0+rGwBOA+dCkknoic","signatures":{"@example:localhost":{"ed25519:XOWLHHFSWM":"V5PMnT3zgkvHLxo+P1wH1XFwaiCt37GvE1VyltYkIsv9xbrihH24gYTgQG+oktZgH9PZArg5x0/VGcdA6qqhCg"}}}},"XVGSJAYERR":{"signed_curve25519:AAAABQ":{"key":"xVW9NhaaLKbdO23WZCtuyBrIpKJqC91Z70xeBDSSJWY","signatures":{"@example:localhost":{"ed25519:XVGSJAYERR":"z+BGFh+zfyjDnOg3yEmUe05PxicRrtEQPcf6WxA8EP7XvLLcbhROyGKftvxhQ3xupAbFNPz2I6ErgIUHhR3ZCA"}}}},"XYMAAFPCXM":{"signed_curve25519:AAAABQ":{"key":"kR+9jLf0UfGemfpEsebR4pZbJxg3uwrbYgOaotjWhh0","signatures":{"@example:localhost":{"ed25519:XYMAAFPCXM":"9tgu3/EDmsbCZJRPng95Ew4cou1aeuYgo4sKXmHHvH9RRgxRoBG2Qxp42LQqUf5JbRoaLgexjDvbrNQaPOEGDA"}}}},"YEETQDERLH":{"signed_curve25519:AAAABQ":{"key":"bNgXd1nPdHv36xBLJz2kSWtmQfOKo3J4YmGO9ZCejwg","signatures":{"@example:localhost":{"ed25519:YEETQDERLH":"RS8sI3k+g1uwu/91KRiG1dvaq1YFQWYPQGAZtqtJL0Zg/wbTFV1N8exTGEo4OxCi45uTJ3r3yK2/har0yodhBw"}}}},"YGMINGOBMN":{"signed_curve25519:AAAABQ":{"key":"eoQwGbDbtzH9guNz5kt+P4y0wD2DG61I7eW3ukYQpkw","signatures":{"@example:localhost":{"ed25519:YGMINGOBMN":"jirRu8NPtHG96cAM29hMwrUZUh9mi0un9Fm8vMTyALm0FDTsJYx8hJiY2rYGtH3gF48W4zcLWwJa9KZ/1aSeBw"}}}},"YLSFRBNBIQ":{"signed_curve25519:AAAABQ":{"key":"wq8ScYQ33p868VizuV3BR3PHtUwaPB8YGi3jzGCgdSY","signatures":{"@example:localhost":{"ed25519:YLSFRBNBIQ":"cT5BnUKOJzD95jIjXGq1n2Qt3xKhRjlJeUe4cUNkduQc7+2+t14cBsiGIsZJRZzogE3Ut/8O6WZP9f1EvBgPAg"}}}},"YMSRVAICJW":{"signed_curve25519:AAAABQ":{"key":"C8vbpciQBiM9jh5x4nY10hc3MY4WyLLJ6da/d0KYnBQ","signatures":{"@example:localhost":{"ed25519:YMSRVAICJW":"8LyCHwYxlhIRf+0Iilvbmu9NgkvkvO7dHpLO+ipBOjtRTgpkDYw+L0x6L+T+tieiqr/51+Y/vDI7OYWtxUv7BQ"}}}},"YPRSATMMOG":{"signed_curve25519:AAAABQ":{"key":"59oiAPEIGNCd6rJVLrtD21K+7y9jRj3XFJK9yjG9sWE","signatures":{"@example:localhost":{"ed25519:YPRSATMMOG":"rNYSNNIlagNBoSAujk0i2o8YdLoSMw5evu+FAE9YFmnJoV9OK9dKC7CXKdHFOnm8NM+hmMloPFgyVkFvB1iOBA"}}}},"YPSHAVNOAF":{"signed_curve25519:AAAABQ":{"key":"7KCLKyTLrOcjDJ2Q73VPipZLo4zLnpoKfN5GY9eh+mw","signatures":{"@example:localhost":{"ed25519:YPSHAVNOAF":"AJ4A5GOM3yD4GHfegaFMecObjjS78TEaO/S3WfJTjT0zCcomy8LYtdjPLmg/jB4Ph9LLQuEB+UOmYexO3CRoCg"}}}},"ZCKUKLKSTF":{"signed_curve25519:AAAABQ":{"key":"xRN+INH//ipFSVS7Nbb1Q/qQ12Ty8O4v1wG8UrAQo2I","signatures":{"@example:localhost":{"ed25519:ZCKUKLKSTF":"ZYyjyN4CIOSp+t21oBoED85UB2sM3+xxNDQ0MrJZnwvh4nHCQJk3v0VBGQ8XWtquU1/nJR1vl4++C1Omoa1lBg"}}}},"ZCOMPAXRXZ":{"signed_curve25519:AAAABQ":{"key":"VcdhjR4vbU43zUpYE9rNRO2lm8tb0H2ezboxvRF3iHU","signatures":{"@example:localhost":{"ed25519:ZCOMPAXRXZ":"7TYpEa+iUwH4dHFEHU6/qc0G8fFVv3D4/fRKo57O8e9yo+CDunutMC20azFJiXijjMUnexqvhlSu3lCINXFnCw"}}}},"ZDHFMSACDV":{"signed_curve25519:AAAABQ":{"key":"0aFaVokTl1WnqVrlbkFU7T1Zx9yw2zv9q75RZgoR8SI","signatures":{"@example:localhost":{"ed25519:ZDHFMSACDV":"VcERdTNlYwwZfCGi02cnNUfB2KE9immPa8HNX9nuwd1tdRsAusxL2tgI8nJQTMaDEUiuu3E1KseRc1wMSGiIDQ"}}}},"ZLSGHJACJW":{"signed_curve25519:AAAABQ":{"key":"Nfv0q06oElGow107VfASK2F9cqxGisYB8Xw9qCbSfBk","signatures":{"@example:localhost":{"ed25519:ZLSGHJACJW":"dRacsgbd1A1ppOkQHWSJgR5fCPnnd3qDJdb6Wv4yplg3N0D4ii//8nePmxT9/MrKSDV/VCMLPrDEMdossOlCCg"}}}},"ZMKDSVIKPT":{"signed_curve25519:AAAABQ":{"key":"tiFh7Ogyw8NzpR5RfMI7mhLUcNMVACgS5BGc/fouJhA","signatures":{"@example:localhost":{"ed25519:ZMKDSVIKPT":"dO4tYN0DzyRmAujbvo7HjrwNvH8nQEGwRz6jnhFb+xKErohppTk3R7A0l3Wong1upfAtkcMkmQzxpkJsX6PxBQ"}}}}}},"failures":{}}
Added file: benchmarks/benches/crypto_bench/keys_query.json+1 additions
@@ -0,0 +1 @@
1+{"device_keys":{"@example:localhost":{"AFGUOBTZWM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"AFGUOBTZWM","keys":{"curve25519:AFGUOBTZWM":"boYjDpaC+7NkECQEeMh5dC+I1+AfriX0VXG2UV7EUQo","ed25519:AFGUOBTZWM":"NayrMQ33ObqMRqz6R9GosmHdT6HQ6b/RX/3QlZ2yiec"},"signatures":{"@example:localhost":{"ed25519:AFGUOBTZWM":"RoSWvru1jj6fs2arnTedWsyIyBmKHMdOu7r9gDi0BZ61h9SbCK2zLXzuJ9ZFLao2VvA0yEd7CASCmDHDLYpXCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ARCIQGAOXH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ARCIQGAOXH","keys":{"curve25519:ARCIQGAOXH":"eZiwiJbwTF/UQvNZBMLJT+R1iMKrrlCGHLQ//YkOMgw","ed25519:ARCIQGAOXH":"Lw1PF6meijJuWKzMm1COAilTL9at0Tkvmn3JFk7XpaQ"},"signatures":{"@example:localhost":{"ed25519:ARCIQGAOXH":"RfBgWjBdCTOLfi0/v98pCMpsJycOtEeiZEaKmOB4VKQGZjKcKVmC+cH/uBRou8DXof7zXkrvmDHQuymO5tkBCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"AYUJPHPSAC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"AYUJPHPSAC","keys":{"curve25519:AYUJPHPSAC":"2DQ0pJMvsf2Yg9UkoZlWybJyX+fBdC+uhqwggrjDF1A","ed25519:AYUJPHPSAC":"oomqAvpzV+inhi2LQ6+dhAtigTfYTArWxXSoYTgEpDA"},"signatures":{"@example:localhost":{"ed25519:AYUJPHPSAC":"mmUmLmAdNeuj7hngHWbKJqDA+PzsPRYsnz1JoBRDI5oFvFiaPiihQ4ZTB6FZUHath+6qPxPH8lcsT6uDmuXsCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"AZWYEFDSDX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"AZWYEFDSDX","keys":{"curve25519:AZWYEFDSDX":"Klonyu0Zuit4W4Z2/EPHRXR16cEGA81j2vdOvBhaUE4","ed25519:AZWYEFDSDX":"F6KHwaNS/DitsYIkwZps6mRR7CUZ5m5dwJ4sPyP7Aa0"},"signatures":{"@example:localhost":{"ed25519:AZWYEFDSDX":"472rltS4MLkM3Scqo0n2fDYTHozlKxVdrVz7lcqtJd8I7vqEh40xjUtefXqV9GkI40oG1vuqqYh7B/efT7efDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"BBGXWJCGEV":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"BBGXWJCGEV","keys":{"curve25519:BBGXWJCGEV":"od5C7iceI1GcXrByZzW0ocAPfrsa59YE6VwFPkttx1Q","ed25519:BBGXWJCGEV":"J9fWumdvwQwk2wtNPg2DJdQXESWzy7Zs8R/4TPG80Hw"},"signatures":{"@example:localhost":{"ed25519:BBGXWJCGEV":"RFhmBPQYCxIvtOFhGiAPd23lKWvdB2YMy99vVCaEn9PfTco0W00ufVOodNMPUiz0VvlWm6/F++oXRSRGKDKeAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"BNPGUGDFAE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"BNPGUGDFAE","keys":{"curve25519:BNPGUGDFAE":"29DDwMuYC3IqUty4GDYW2ticNPc+xb2R+veB7gi0oj8","ed25519:BNPGUGDFAE":"DYR48IbyDDbpjs4QtO4uGZnZXABCMqBkYwEkDJwDHwc"},"signatures":{"@example:localhost":{"ed25519:BNPGUGDFAE":"DeOhR+IRRIe9Ccx3orNnSmcdpNfCW2eXr4/0IEAdlDUvSltGHIBulkM5HwFhunVtMF6lhSZCwbHo+mwTZDUwAw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"BNYQQWUMXO":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"BNYQQWUMXO","keys":{"curve25519:BNYQQWUMXO":"xfgbLIC5WAl1OIkpOzoxpCe8FsRDT6nch7NQsOb15nc","ed25519:BNYQQWUMXO":"2/5LWJMow5zhJqakV88SIc7q/1pa8fmkfgAzx72w9G4"},"signatures":{"@example:localhost":{"ed25519:BNYQQWUMXO":"kTwMrbsLJJM/uFGOj/oqlCaRuw7i9p/6eGrTlXjo8UJMCFAetoyWzoMcF35vSe4S6FTx8RJmqX6rM7ep53MHDQ","ed25519:0C8lCBxrvrv/O7BQfsKnkYogHZX3zAgw3RfJuyiq210":"RakIF9XWAb5y85z5oIGJoozvhYK2Wr/351vp6Lz878hyOrkLo6m9757GSv3AsvUN3sYvnmC8avARQ+6y9DRdDg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"Weechat Matrix"}},"BZKAGPQUAB":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"BZKAGPQUAB","keys":{"curve25519:BZKAGPQUAB":"/X2pLyOrh+9E80qA0Mq1DUY2+pHy7u17PWvixe+P3zw","ed25519:BZKAGPQUAB":"g7W5UERuaIURUrUI0f+aZubJ3tbjPSro9i1n6DX9bzw"},"signatures":{"@example:localhost":{"ed25519:BZKAGPQUAB":"6PS+4OinvDs2OQ4Qycfxj2Mq30KWMvd0uMdz1ycFzJdP+RBhXQnJr2ngV5y5C/kP7E0kelf3jlfDTesnOhbRDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CCECSKBEDH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CCECSKBEDH","keys":{"curve25519:CCECSKBEDH":"QsRFFHs1HF/orwqieQKltHlDDsXW02GrdH0Pp0HDBlA","ed25519:CCECSKBEDH":"p0S9tLw21whnI/XswMmee6k0cmCSu53mFLuxODrvVOE"},"signatures":{"@example:localhost":{"ed25519:CCECSKBEDH":"ReTwQxutab0T/a1CfvX5fegg84pv9xwt0NiHPsgUI81NaK1BeYwX7JXmR1J34s/6+hwylwWQ19iZ8E//FxFYDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CEVBXZPTZI":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CEVBXZPTZI","keys":{"curve25519:CEVBXZPTZI":"iuk223YnZJ3Kx4W6RYP785H+/vqELpxojsXJpOr+YwQ","ed25519:CEVBXZPTZI":"N3FC36pYdI1tEv1p6BUOD2KiTEwQxy2b4KFpg/5suew"},"signatures":{"@example:localhost":{"ed25519:CEVBXZPTZI":"eo9HiXEsNPC97K/ymnu6IWY6Xm9T/etWwAzlQNYjdKfDDxIW0qbrisUk5LWTKXEk+dEfLcJEEbHKDvweXRFzDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CEVLRMVPBD":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CEVLRMVPBD","keys":{"curve25519:CEVLRMVPBD":"fiD62YZpgcTlIqV4NHPm2vdf+LqDSjzi9Ak2I0BHxBE","ed25519:CEVLRMVPBD":"hTzdy04JUjVveH2m5x7Fhs4MNNuBaunO9kRJ5aEI9tA"},"signatures":{"@example:localhost":{"ed25519:CEVLRMVPBD":"Zeibp6v+SI0UmRWXJNz44ZQvF6R5vgRG/1AnZAnnC60gBB8tJc4F6O1UguMZLjyarlEzUgLEDDq5HSBevTYxAw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CHWHHLVNRU":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CHWHHLVNRU","keys":{"curve25519:CHWHHLVNRU":"LQIt7ZpiwStQa+hyPS//iY7CLy8ne2FwL+RswXLM2DM","ed25519:CHWHHLVNRU":"zl6V/o9EMfZnyDYJhhIbo0Aryg97UIs8Gsbh586j/nk"},"signatures":{"@example:localhost":{"ed25519:CHWHHLVNRU":"8UDfQrc3b4fJ3LSmmcIH0+noQLHucUQOr1ksCepZwZsTjPzREVY48txsE+qSnK1+hMfMiCAb/NjVFNI/OZhoBw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"COTJRBEJRK":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"COTJRBEJRK","keys":{"curve25519:COTJRBEJRK":"ytUYh86ZdyJh0OThUOphKW0Eo3baMOzyXja/jBjE3GE","ed25519:COTJRBEJRK":"aCmB8hWjMkw9Zx2jpV5d3mMxiTONirf2m3TNcbr/eaU"},"signatures":{"@example:localhost":{"ed25519:COTJRBEJRK":"nJN9NrRd3uMsLoPix3OHnPK4BukR8uug8smv9htUUvlhAeJ2PLf62Zbvzn59LoiZZ0NGxfU3svCdSp/qV9F+AA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"COZKBAJDSL":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"COZKBAJDSL","keys":{"curve25519:COZKBAJDSL":"O/EwY8A74RZkuwRW5UZT2ibslBkBbYiWhx6FB0RrZls","ed25519:COZKBAJDSL":"B6eH5/uoRFaJqoAALQvhOM3ey9s4GNqspJ8z6/VvXPY"},"signatures":{"@example:localhost":{"ed25519:COZKBAJDSL":"cMe38Jibhq2d15g8JFL5qQXteNpjWlHyFMSfwub1U0niNrYMYArwiz15w8Nm3wYfnEl37pLFumvzBYJJaa5SCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CPLENDMCJZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CPLENDMCJZ","keys":{"curve25519:CPLENDMCJZ":"y6PpQHyk3RB/XCtoyzOibPU3tuI3g0aVp2vIqQHh2U4","ed25519:CPLENDMCJZ":"F6KFxLxokfvx674wfHh2ZSUrQEG6HXduTv/8FM5aWy8"},"signatures":{"@example:localhost":{"ed25519:CPLENDMCJZ":"REio0WOK+O6GRMBjF6DWtj0ZhpYzKhT5QJm9CLkvUMQ7thU1Z6sMmSZWHwI8ZefU8r6f2MyCS2yIDYFMFG0eAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CQSGOHRFJE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CQSGOHRFJE","keys":{"curve25519:CQSGOHRFJE":"Ng7TyX6FnBg/bsDAy2AJral/QOWE2geQIDUZ1LcyxXY","ed25519:CQSGOHRFJE":"Ic/8cSsie1Sy+AzJWKC59LK0YXFtxt8gbr85FSfHMbo"},"signatures":{"@example:localhost":{"ed25519:CQSGOHRFJE":"iQmXBmZyHzuF8K3fw49z6Z1VWUz1oxlUQQK6fdefXjTuQFaZvz/cllbObZQxz0KmBCLT3GYvwmG6+WJ7ybqjDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CRYYTUURSR":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CRYYTUURSR","keys":{"curve25519:CRYYTUURSR":"xWUASbZV35lgdhtFmH1AatJf8L2XxJ8NiWdMabd2l1Q","ed25519:CRYYTUURSR":"fq7baDLZYlsP0EwZESMQ2qa6kf4sEW4HH/SsQCll/JA"},"signatures":{"@example:localhost":{"ed25519:CRYYTUURSR":"FBA24IHX3sI3U4wLU/m3G206qNPAOBxEYN91zIgRRvNCwb3eCIUBB/oSu4wA0h1B72UL1kA23YYvm9JTih7VCw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"CXLMFOVYUX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"CXLMFOVYUX","keys":{"curve25519:CXLMFOVYUX":"1A1HW57+1nh1hI3hzJ0WnV0A2cMWJTaBVu8uUWTRkTo","ed25519:CXLMFOVYUX":"eRdPcOA/bUiGq3jpIXy4bpJ5IbhDrD+/rIJYaljpESg"},"signatures":{"@example:localhost":{"ed25519:CXLMFOVYUX":"0R65WgKhxgpM07HiCvHbi1LcjTqtdr0uBUYX2yEzTrctuowJVGUgFOBPExCtye3El1RRx1F/nkeM6EQD5w6uCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"DDMJJSUUSH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"DDMJJSUUSH","keys":{"curve25519:DDMJJSUUSH":"TK3bSkdn4jJ4xYK0uV1CUc07RRLoRKGxRZrb5fmYqUo","ed25519:DDMJJSUUSH":"337BfZ+gkdawTHAdBV4bY0b4fov9Broh3YwdEhOkd5o"},"signatures":{"@example:localhost":{"ed25519:DDMJJSUUSH":"TFlYWK7c2tXiAMaZLRLAvdso4YumTdqHHesM67oJCi+rqE0y0MzPcrQydQtH4LHFy4prdMb6VziyYTcjIf0yAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"DEFPMZXZCM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"DEFPMZXZCM","keys":{"curve25519:DEFPMZXZCM":"Gvymv2j/h5YL1fWIoJaNPtU1wEfqZsGyzOgom9Q1/24","ed25519:DEFPMZXZCM":"a1iB8jI1F1XHDdWZdmgIsd2XLBOCDF4PEtNkCs1gMFk"},"signatures":{"@example:localhost":{"ed25519:DEFPMZXZCM":"a2U3D5BhPLqmIlOb7mv7qa2Tbv29ziolZIkb2A3AIfjmAMnFVlkAww7O1rzZIlEtlR1VDwIaNWowy0/syFgsAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"DHJPFSVBXZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"DHJPFSVBXZ","keys":{"curve25519:DHJPFSVBXZ":"G/RjulKuWkDV5lpH3DPaAVvkAdUK75g9zXjGA9iBelM","ed25519:DHJPFSVBXZ":"h4hvg3wwLbsMv87auSOTMxuR80gSk0U5TUqEj3wlPMk"},"signatures":{"@example:localhost":{"ed25519:DHJPFSVBXZ":"uITMLXzrgUgF52XbUH5yop2d24ZvkEGLb4y5itE/HU2j18KKnNon8l2pMcOHzsVetqAPiOia255rPAjYLGJTDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk-wasm"}},"DKJOMBOOJT":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"DKJOMBOOJT","keys":{"curve25519:DKJOMBOOJT":"HUMtEoPxWB6EW0Gja4xJWeOKk/JITMzR+faXUsT/gDk","ed25519:DKJOMBOOJT":"VRg3483UtvJK9s3Guv788lBAb5FaEOSYykLnzhZNaOA"},"signatures":{"@example:localhost":{"ed25519:DKJOMBOOJT":"eQFmD6RgZggilfddD7Hd4QEhe+Am15wQAZiy6vJ2puchNTLcTGXRptkK59kx3P+XzyqikYGPCiNqqM7QMiVsAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"DKTFRSRHCO":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"DKTFRSRHCO","keys":{"curve25519:DKTFRSRHCO":"/xhNEY9jYuw8l++H/aHbPUEOTCvJjVLBFuJoKcbxm2Y","ed25519:DKTFRSRHCO":"1EXshkm6VaX+C7/BlpPFTy5p8M+grIgA890xjYLy6W0"},"signatures":{"@example:localhost":{"ed25519:DKTFRSRHCO":"FAOYgeL8YMcXmrXE8po9MkX7bPdmMCcssvHBMZNmgyU5j6J7jRvyJuiGys3uA0Dabk6HhMLnyNm+G3MR9MH/DA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"DTFJXETAZD":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"DTFJXETAZD","keys":{"curve25519:DTFJXETAZD":"abhyVz8dtYfBEcXMOX001paq86q0qqHhCkwgkVM3aWw","ed25519:DTFJXETAZD":"Wbskd0C7Ww6UJlPq+C7dnAAId7RhouaCqTeuNSlRiI0"},"signatures":{"@example:localhost":{"ed25519:DTFJXETAZD":"nUWyvpYq4kEzTbR1+WkCCjF3BgM7tWzEpSjudaf1UPVKyk1kXQ6SnQz6xJSLaBxuZsq7UAjKJhbd8mb+7PdPBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"EDECYDJGSA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"EDECYDJGSA","keys":{"curve25519:EDECYDJGSA":"gc53TigwtxOxVliLM4OFv/RsPlJItIZk3NR2OKpLxn4","ed25519:EDECYDJGSA":"EtlBtNqPlzItQ2iagN1AxqGFUMMtI07IFa4N5wXzmmA"},"signatures":{"@example:localhost":{"ed25519:EDECYDJGSA":"mwLjtrqIy/cSK1UzgMWFqBLV74pC7LD8RMt47Bk+ku6JjfAA92prUGzUGz7HZVDLVgYjlYBbSPELavyFRwUECA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"EFZNCETFCJ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"EFZNCETFCJ","keys":{"curve25519:EFZNCETFCJ":"cmC1n3kWUYrItLQ92tNYYRi5avMG5WTqyJ5nCjN5L2M","ed25519:EFZNCETFCJ":"GlRC/vpaxc6Vhf9EoB11p7TmdSplhB96XIcW6OOL+iY"},"signatures":{"@example:localhost":{"ed25519:EFZNCETFCJ":"EOfk9Jue5Wu1W5F3n6VnhvT34nvQ7q404utuXahaRj2EpMKuBaUNWFP6xUprrHoIOxmR1yZxv9SNDXOr3/lKDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"EVMLDDWANA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"EVMLDDWANA","keys":{"curve25519:EVMLDDWANA":"k8iZGYLn/aC0aHEzIFwUKgHBBTb7ekDZW/3ob+HK/lc","ed25519:EVMLDDWANA":"9ttPUG9PsM5voQC2VCRvXiWzXxFPn9HtClg5VX07lLQ"},"signatures":{"@example:localhost":{"ed25519:EVMLDDWANA":"DqE4vzO3vIyYXDDYfc+Xb8+gZ2z6GLveSeKq+5AtOhmE4Dfu344wlTutoxHn0xRVEew1nMdBQXVs9YqBWH7rBw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"FAQIGNOZEI":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"FAQIGNOZEI","keys":{"curve25519:FAQIGNOZEI":"xP7f4EbPkOWYD4hIFgsWDtlv5INujXEjhEc2tlC1VXc","ed25519:FAQIGNOZEI":"FsQPPSa9SaV6ppuI4zr063hcPvojq5SUUhXha5qKszU"},"signatures":{"@example:localhost":{"ed25519:FAQIGNOZEI":"6Kcc2Vgp2yScVKfbnIFOpWzoVtu4PZe1ESj8iTNcwiXXSgVnJEy6OggX9Z5Q7W+uiPQCRdAqTvzqBZHLomMBDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"FEEBAUWTGH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"FEEBAUWTGH","keys":{"curve25519:FEEBAUWTGH":"7/bg2vnOdjNkgT5dglrUQTxoCXWOJXYfw2VmVk5hRmc","ed25519:FEEBAUWTGH":"x+zNBfbXadw/DxdC57rtSrpOOBFb9G7VZKh5iA4M9KA"},"signatures":{"@example:localhost":{"ed25519:FEEBAUWTGH":"U+oFU6HlrW/1532A7lf00fKE3JEiR5SVeUKETOa2O39FpEZeTwEZbbMyAoeJrcc9sIHXXOfpWdua+IjBjbDjAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"FLAIGGZDUI":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"FLAIGGZDUI","keys":{"curve25519:FLAIGGZDUI":"9n4/BmU0GxgGBX3odfluCNEXnHaioGKBQ+a6UlNz/2Q","ed25519:FLAIGGZDUI":"QEq1PwjrV0e08nobjzdF6VKI2wdBQSfm1kLoYnRr8Js"},"signatures":{"@example:localhost":{"ed25519:FLAIGGZDUI":"vi5VtcRWq7Cwm0l18Do8sQ2STIVS5Hxu2Io6eajTNCMfR+myssfgqYzsVGCkAnKGt0iogXeIv57XMaSLwA+zBQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"FPPORJYJWZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"FPPORJYJWZ","keys":{"curve25519:FPPORJYJWZ":"PpfiaBTGPj0mT7GQxvtwk2/aP24O415R2D+R6eLq6TI","ed25519:FPPORJYJWZ":"+WT2w6O8k4WVaccQ6LhCDU60PI8cTVglK6+4ufp8ZiA"},"signatures":{"@example:localhost":{"ed25519:FPPORJYJWZ":"os7QUz7pLeoHYjKhu6LiuNJQ5XY37fTYKfbOTxgjcVnbaJR7nEXmLMuGS3IXTonvWnVJ2xuacuxlWdJ5odl2Bg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"FRZAXXLFNO":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"FRZAXXLFNO","keys":{"curve25519:FRZAXXLFNO":"pvYDoXisb1Esj6/TpcXeSjBDXvIOAUrcK739/JysLSQ","ed25519:FRZAXXLFNO":"9AE1d/pd8lmtN2AXXmSuOSp85zW3WJlk4WB/gjlGRCk"},"signatures":{"@example:localhost":{"ed25519:FRZAXXLFNO":"DI7bIxC6/Ketflx60ne6E/pHP6fPsSMIlrX3KWRcdO57waPw2bGbWK8mP9H5ckTyuw3JvGS8exakv+P/5FwiBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"GGBGEQJNSJ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"GGBGEQJNSJ","keys":{"curve25519:GGBGEQJNSJ":"chK9JzRYPSj7ThJuE+UYTrMX2BSctWpzItqdvJZ4Gjk","ed25519:GGBGEQJNSJ":"dLq6UtM0Bvky79RjwmeC2xpOmg4mDoOy4ssP79LjH8Q"},"signatures":{"@example:localhost":{"ed25519:GGBGEQJNSJ":"WLluRN6F5qHWBKXBeMPjOEFtCUJERCiNujmyaPSbJgiZy2OWGVEjiTHk5EfOxYEPM5WhfAhHLd32WXOcI8IGBw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"GIOUUFLOLZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"GIOUUFLOLZ","keys":{"curve25519:GIOUUFLOLZ":"/Vko/8rs4Gs4JbYmpesZCGzjPF/Gqbtue5mNf0jhFV0","ed25519:GIOUUFLOLZ":"29hi3+fwS8HK47BixjLNc3L4mAQAqUrQLsys+1RCGcI"},"signatures":{"@example:localhost":{"ed25519:GIOUUFLOLZ":"fnX3om+9LTySamF0z5Mfhyci3pSTZt+l+fKGy4k9hcjHhUJ6D6279oM3PDkFlErwYgEA/GDblveRYBdpTcPWCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"GOAKBDPUKJ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"GOAKBDPUKJ","keys":{"curve25519:GOAKBDPUKJ":"TXqlvxJiVBX8vbHi1LR+W7s1HTrIxnJLa5j124Vz6WI","ed25519:GOAKBDPUKJ":"6D9qpzNz4ZKR7Ze6Th+ctihvNl4Drqdrc9SteewAcwQ"},"signatures":{"@example:localhost":{"ed25519:GOAKBDPUKJ":"hy04yRRua2ninf8QQWlA9MfQWxtVKDpTY2zHaxS4jXeoxg3ugdPMmP01CQryFI4v3NI57KT/YCL3uLbXYO3xBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"GOVWXTWHIQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"GOVWXTWHIQ","keys":{"curve25519:GOVWXTWHIQ":"N6ls7+U7no431Hf+iDh3H0NAD95CMyT+PedFprAYrUc","ed25519:GOVWXTWHIQ":"5KO4QwxpSNRK/q5QNzLRlxx3q7leum3KC5vLAlW+bd8"},"signatures":{"@example:localhost":{"ed25519:GOVWXTWHIQ":"PrMjYMva8vn7DQz0zV+ai/pP0kiWh/SY81WXLq6Zs/FPaFzjcJcbG9UcOOAAngmSRCDOEXF46u35fsMjW0TmBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"GSKQTOKLNQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"GSKQTOKLNQ","keys":{"curve25519:GSKQTOKLNQ":"lgoF1T7Vgb9Tjkj6KerK6WqS0h0jkrmkTqaijT0wZzs","ed25519:GSKQTOKLNQ":"Yk5ims6MWAd/NGOzJViqVQ6egiplEdvZErTnoEBAutY"},"signatures":{"@example:localhost":{"ed25519:GSKQTOKLNQ":"JeuPlg2X2HTtRJppQmOEPMsKgDMXUAX0NOn0bxQhy2lZi/6hgihf8WLMIjaCIGtBTsGu0Vj8IIKsV1TVPXTcBQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"HHQFHSMEYG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"HHQFHSMEYG","keys":{"curve25519:HHQFHSMEYG":"oxNHYLY8dy8/spgTVduUZz/KlqfL1QFxE1iQvT/6xFw","ed25519:HHQFHSMEYG":"IhUxZjz/JriOgqHJf5Yof1bMTB63gxKZcRP+jwDm4TU"},"signatures":{"@example:localhost":{"ed25519:HHQFHSMEYG":"2RhookUlR24U7hKz+a3P8AUQanysGKXldjjNkq9Qh1enoOh7Y4rpezMVlWqZSETYz6Uj+ESJzszw+N99hbTTCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"HVAILYUHDN":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"HVAILYUHDN","keys":{"curve25519:HVAILYUHDN":"aPJndwzHmFdVcoCYHnbKLIHv7/gvTtG5bkVM7i8px10","ed25519:HVAILYUHDN":"VPC7L+WFGpqM4JEoscfskWbDmMKNVDDAGKk4UhlQqws"},"signatures":{"@example:localhost":{"ed25519:HVAILYUHDN":"csFD1gHCW2luzKCvDftInifAHsm5656nKolNKame3+657ys2/R6/hWyzCgzcyYvXwl28zk5v/b7e1rWkOKRoCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ICPHTICSZV":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ICPHTICSZV","keys":{"curve25519:ICPHTICSZV":"tGbZEu8gj2tBjPVb9+CBBi1a8fasfewWup+y3aCbA1c","ed25519:ICPHTICSZV":"JNfXcfs2JWTYbvyAygVM9/WI0iWCp+VRJFgu+l9k6Fw"},"signatures":{"@example:localhost":{"ed25519:ICPHTICSZV":"BC7QK+Lw5cods+EkRnL1Qm85vAbUX+GQIRiBDxavuIHe/6GCCNqV07Bj+eGtuij0RiatS34SqqRktEzqeahkCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"IDZMWJANDA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"IDZMWJANDA","keys":{"curve25519:IDZMWJANDA":"dEtBXqYG8jUaUQRxYTglImxyrwhxbbE0+Zp9wcGLtgQ","ed25519:IDZMWJANDA":"gLe2JUaCLlNJfVaDjdhVSjML/lhSeiJYs6a27ZtSvaA"},"signatures":{"@example:localhost":{"ed25519:IDZMWJANDA":"1R90dIi+dPTmN0pE9DTa2eVVkRC1jTu5HwpAqdqBw/WBPBvGcquD5xODqbNIWiek0jhLWRj/iIuBGgdRE0yhAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"IFLWAVYNOG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"IFLWAVYNOG","keys":{"curve25519:IFLWAVYNOG":"ve+J8V63+tr/aUKM0Arsjh/kkPGTz+7k+wiq8Fkcfic","ed25519:IFLWAVYNOG":"fHkmX5GJjAx6MpcAJkmMNQBUiKAD1A6B5MYkeOG8IwY"},"signatures":{"@example:localhost":{"ed25519:IFLWAVYNOG":"9rK6KhlrBnqid106BWW4nicHqjKNdj3hTdPNEOcr3EFBaUAOJeuW1ggOoSzkmIY9sk7Z4L6NEejqdM74NS05CA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"IKHFOAKJYY":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"IKHFOAKJYY","keys":{"curve25519:IKHFOAKJYY":"MGdliXfcIhZbDpv96xoqE8K8qrP5M9yK40/95b8qMXc","ed25519:IKHFOAKJYY":"VuVczMUP1RgHzVzI8p+js+Xtmm9xGZFvsOhwDyEAJFU"},"signatures":{"@example:localhost":{"ed25519:IKHFOAKJYY":"eMsF163j2U8QrdkjP9CJALZgqgE2h52kDjkDcxbZjLJYDXu/Hi21pw+9YntHDWsRoNatNkyFGDgQOCjDKGaxAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"IKJVWFOXIF":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"IKJVWFOXIF","keys":{"curve25519:IKJVWFOXIF":"GfEiJ2nazgWgHgZOpaFcjSkToVIb3kdtXAz3hvmJGAs","ed25519:IKJVWFOXIF":"TBI04p6Jd/wMUi3yCOMXR4w8A4RVVTGHkyCz3kHtWu4"},"signatures":{"@example:localhost":{"ed25519:IKJVWFOXIF":"g6w+LN82n7Yq3xZKWtSvEdllOQNih+Fy5A5gMsv7aJpXaStybc3WR/viwSMM2Amu+JMEO5ieBk8L4Bg5MkeCDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"JHCACATEDC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"JHCACATEDC","keys":{"curve25519:JHCACATEDC":"PV7axMHURCK9ruLHAQWUqBQMmPrAfn/5ZmzVXC+uPjw","ed25519:JHCACATEDC":"zuqQJcvF0g2sToJvZB4O25jJ3SPZm2BAitQVobU8Uks"},"signatures":{"@example:localhost":{"ed25519:JHCACATEDC":"dfUytbQC90ZKTZNnK8bc7eLMYucbEdTrS7yl9SU55IJxJgDpwZ0VSLdDq7IRX0BDm4mkSo0cdcBsUn8/r6KJBQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"JKEXZVRELA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"JKEXZVRELA","keys":{"curve25519:JKEXZVRELA":"IGJdCZnHGGwtqArZDH6W6IUCliRqBRmRIIrJ7xioiDE","ed25519:JKEXZVRELA":"Zo/LfTiPfn9mDRruPr9hcy6SFInecqilWmLIBJEVI/I"},"signatures":{"@example:localhost":{"ed25519:JKEXZVRELA":"y3O0yJassbk/DECg2fMptdRf24NxdjlqTPd+44+uU0nZHm9xTxjq/kHkcQuONQbuvjQUW00RnW3DORzRGFfFDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"JSJZHEGJHQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"JSJZHEGJHQ","keys":{"curve25519:JSJZHEGJHQ":"BDxVYJ/R91Z2aSzefibP1sYnd19dT+p/s5F28EmpvEE","ed25519:JSJZHEGJHQ":"Kivi/DTNLgt4pJibk55hqPfzDZCd+Z5T5tB8ZBOUpcM"},"signatures":{"@example:localhost":{"ed25519:JSJZHEGJHQ":"7pmAXSVQEYpL8T9eCdo53ykqf9vJTp/XWryHJDVwv9y5k6rQafzKjc0hqNvm1Pj78vVQuNWPUhzTdNscnl4EBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"JSXCDTJQTQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"JSXCDTJQTQ","keys":{"curve25519:JSXCDTJQTQ":"KnNMtfqSZ3LhTKTQy3Z+kfr8UzzejfQ02OLEPUIB5SQ","ed25519:JSXCDTJQTQ":"GFfMGVmIyDM4xTcUTYGv8q6gh6xonEzxSFgf81WRJps"},"signatures":{"@example:localhost":{"ed25519:JSXCDTJQTQ":"jgcuMewlfpuGeuQmov9p0ml3lt5ObsJ/NhSwNqxgwQm6nZvgXVb5DrOxCcTRkehdU8uwpbODEPDNEdjW69oPDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"JVUSWHJVVM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"JVUSWHJVVM","keys":{"curve25519:JVUSWHJVVM":"21N0nwBPQAfefYaHV4uy1ORESMPOQIp+s6uNIBO/JwA","ed25519:JVUSWHJVVM":"PeUOJAE/h2S2PYDV7i3wa5wy+14hoMUKPhj7obcrpMo"},"signatures":{"@example:localhost":{"ed25519:JVUSWHJVVM":"vcbQOooN8fdViUCsEY28TN83/P2uZX152nvu3VvjXfuM7Kp//47SputatcUmX3duVYdImJCWCnsWE7ErMhHNCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"JXESGIWWOX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"JXESGIWWOX","keys":{"curve25519:JXESGIWWOX":"YQpHMSD38HUCJr37jhq9+lx6ON2GPnCl3UZ/Id3kwEw","ed25519:JXESGIWWOX":"GiliD6zI9nGLMIPWHl/ds0D+B1r19Efo5FHxTlQY5uE"},"signatures":{"@example:localhost":{"ed25519:JXESGIWWOX":"QAHTpUSESuNCGUFT727QF1kt9nnWHtnu52VtINbI3HMkDYt44IsQ1Fqwvw6Ke3QNL3YGgPOcGewfUCMOEQORCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"KISRZEPQWM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"KISRZEPQWM","keys":{"curve25519:KISRZEPQWM":"8YNcRFqrKibx6chUTyy67z3EAxAuZ6pIUHEpmMYiYVY","ed25519:KISRZEPQWM":"B9zO5nilPp3ljUg73hkOLXJSjZKmZCXAfectpdFm0TE"},"signatures":{"@example:localhost":{"ed25519:KISRZEPQWM":"eGKgCTDeLsbV1UrJCG80H70OX9x7gjS85Kgjj594x/jPaIqNjY/2ZEZdR4Xp13vkyPKGdTE5WyJSWJFVdhE3CQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"KKCOTIXYTM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"KKCOTIXYTM","keys":{"curve25519:KKCOTIXYTM":"2Mzjyexq0m6EBIqs1ZkTQl8SVyKnM79xjosLoE75PDA","ed25519:KKCOTIXYTM":"JiYyYfzi/f8psRI4UalIxMnvA6lLBqYm2+8kx6Q9G3M"},"signatures":{"@example:localhost":{"ed25519:KKCOTIXYTM":"AuQyOfAtcJtD8OUk9KcSFY6mZvkw6ACxwDDsGGVntufra2LvuxNecV6g9l+1FigseTBLL1TaFWAQ/cn1cO1uCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"KKZJWRYGSG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"KKZJWRYGSG","keys":{"curve25519:KKZJWRYGSG":"8uoPW4pcSNyXsDLoc8fLjI+zcdqfM1bdjmVGXwB6bgU","ed25519:KKZJWRYGSG":"W2hcZGaZeYnc/aB4vN9Xuow/etzXSZfdiR4SP1S3EvQ"},"signatures":{"@example:localhost":{"ed25519:KKZJWRYGSG":"kuRUQegUWcB9oY22SIgICbxyvtE1CWIkuqpGxNIyKdmk171NJHdgxja+8bDqqRfJqLsnLzO97LpIBFyU2kz5Cw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"KMKRBJXMDJ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"KMKRBJXMDJ","keys":{"curve25519:KMKRBJXMDJ":"NMkgdM1QkaBeX5UQjhNZDqWOOaPTknFr2kbE06QmVkI","ed25519:KMKRBJXMDJ":"F748e0IEt3OIEsgFHiCTCjx/Mw2ZLqtu+0dhCNh74R8"},"signatures":{"@example:localhost":{"ed25519:KMKRBJXMDJ":"lQwuhhJXyj1kWguLwVpzXqA7WG86pPf213urpkuEEIHvaYC+IjobwCK52UeSgVwOT5yZK+rWBrduGmFQCv3kBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"KTZXWCPEZU":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"KTZXWCPEZU","keys":{"curve25519:KTZXWCPEZU":"D8o2AjEh9Dq6d296FORsHLCuVmJeultGIoDk78VU1xk","ed25519:KTZXWCPEZU":"GR3EnBgrwFvygzfRXhO6oIoXFDPPa0GQGYHBMptO2I0"},"signatures":{"@example:localhost":{"ed25519:KTZXWCPEZU":"GTI2SIX8AbUaNMSAzfTJ8ZXr4HuD1hJoeUG0xpeho0SNKeMemRfPVy9QVXRlaW/tDzxhWWkchmbk+Iy3kOqNDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"LMAUZPCZJE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"LMAUZPCZJE","keys":{"curve25519:LMAUZPCZJE":"VvrA6rZl1vKuuVWYr2nu9HIo99PIP+sCSMbrISvM6ic","ed25519:LMAUZPCZJE":"FcjySXEpoOXlGKYcVg+7cYcb2NRMROujXfjIH9/HXsc"},"signatures":{"@example:localhost":{"ed25519:LMAUZPCZJE":"l4FW9C1ujsFYq72TkoMqfmQJ4uqme6MYs0oLbZfXifHm7EAmB0oTObtSyYovZKVBC4F3yF2qLU6qB5Dr5W3vDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"Weechat Matrix"}},"LTPSXLWMGZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"LTPSXLWMGZ","keys":{"curve25519:LTPSXLWMGZ":"5lj6CHAUIoTFRPAByYzTBTH1B9a+PCdcUuES8fH4+Cc","ed25519:LTPSXLWMGZ":"ub3m4bev8bGPAIbOpqQZ7f3mWvcW8gAUg4qKDzob3U8"},"signatures":{"@example:localhost":{"ed25519:LTPSXLWMGZ":"fjpzEsPJZTMw/pXVFpnqST/PqB8X2nqHT/V0UyDeR52guYo1PinriWvN+ziz5ykqrd1KRMtswNxcrl1PyryoDg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"LVWOVGOXME":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"LVWOVGOXME","keys":{"curve25519:LVWOVGOXME":"KMfWKUhnDW1D11hNzATs/Ax1FQRsJxKCWzq0NyGtIiI","ed25519:LVWOVGOXME":"k+NC3L7CBD6fBClcHBrKLOkqCyGNSKhWXiH5Q2STRnA"},"signatures":{"@example:localhost":{"ed25519:LVWOVGOXME":"39Ir5Bttpc5+bQwzLj7rkjm5E5/cp/JTbMJ/t0enj6J5w9MXVBFOUqqM2hpaRaRwILMMpwYbJ8IOGjl0Y/MGAw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"pantalaimon"}},"MJUNZFVNEB":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MJUNZFVNEB","keys":{"curve25519:MJUNZFVNEB":"iSvsFJXubQlAWK0uX/0wlLd8fmkhF9Yl5ZydjExibzM","ed25519:MJUNZFVNEB":"+VUUfI84aa2EEzje0dxnMu3pZ9pKUHG9qIiyW001+tE"},"signatures":{"@example:localhost":{"ed25519:MJUNZFVNEB":"WE7PcWTU6hG7fiHArsobkFiQ+D4RYIMll8Kv8f5TSeJY/2HBtzA2s8Liv+cD9BYwtmAiOOYH3sALl6QrE+yuDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"MOGWGGXXBZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MOGWGGXXBZ","keys":{"curve25519:MOGWGGXXBZ":"np8r9X2lqMycqRgEXykbg0Z8pHU9vUFRVUcf965yCRo","ed25519:MOGWGGXXBZ":"Ax1i0KzQv+sdlU2DQSi2iXmNR5kgT+qIbPammwsBJOY"},"signatures":{"@example:localhost":{"ed25519:MOGWGGXXBZ":"BZbstlXDH46EIHtMcAgAMvSFFVHIce7HTT7JdpZrKLU53jaDKuAOxXeQ8gv3ftSnjHC751/7e18jIb7rG7G9CQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"MPLCYWDUMV":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MPLCYWDUMV","keys":{"curve25519:MPLCYWDUMV":"0+FCTk+4FHrlzgh1nEUI46Udtw83luLUc5wjxO1yoDM","ed25519:MPLCYWDUMV":"uEBCy0MQXiEQoAYrvrW0CfXzhNcDPPhhr07vc0nNbTs"},"signatures":{"@example:localhost":{"ed25519:MPLCYWDUMV":"Ul+Y+AGhF2cQqwHh7Ox0/MEZ5y7sDdIowsjTRr6SvTC7oVPF6+tn0dMx2vkJr+KYV7L6ocxOyjOIOuS8J2WEDg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"MWFXPINOAO":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MWFXPINOAO","keys":{"curve25519:MWFXPINOAO":"6zbxEXyLcKzLZmfLuF1Dobnm3ADCyNEPy78LIl0Hh04","ed25519:MWFXPINOAO":"F++g2wR1Nc9Tg8MS0Vt4eJSn0Y9e2TdqorhT01owQLs"},"signatures":{"@example:localhost":{"ed25519:MWFXPINOAO":"xSRpIrdf3XONvsB3nFELqHzhSatSAjinszZtVlFZc2mh/45GYiW6Nxl4wonEic/OGw56w94WFD8mB+XeTywzAw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"MWVTUXDNNM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MWVTUXDNNM","keys":{"curve25519:MWVTUXDNNM":"zfjciR/GCcaJ95MhHf1RebrGiNEoBvLgqUVVc9iLGwo","ed25519:MWVTUXDNNM":"TRceeejqTtArjvPlA4jOEsQEb4jR5JhtSqPobM+WFSM"},"signatures":{"@example:localhost":{"ed25519:MWVTUXDNNM":"PPcPuV36pas9ygXg8d2NNJud8mAEmz0B9u7xPsLXYhX0JLa4CRt8q5RXQTlVcVJbeJ/S9vNjnl4uvBViGvqhDg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"MYTNISNDKK":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MYTNISNDKK","keys":{"curve25519:MYTNISNDKK":"PXTZq1Pglp32Y42GEDW6t04ZxzfOQ0KQQG68yci0l08","ed25519:MYTNISNDKK":"YbevhxHh3SJR0YCWGXaaSe7QTl9KlcZqPBspDNd1GsM"},"signatures":{"@example:localhost":{"ed25519:MYTNISNDKK":"dTGZaD6ZhF2Zs+vIhnWXM7TwdJlqddQiIktkoybQPYgxfeLSwzncTXSVIqESzXhaNe5NJqxS7bTYfAdMOF6IAw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"MZECYDWJFY":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"MZECYDWJFY","keys":{"curve25519:MZECYDWJFY":"auKjVejkjIno48aku83COoTSPx505EAZixyq9FBPxl8","ed25519:MZECYDWJFY":"62bpag8ha91ICj2t4v/glQgO78W+stBxM7q1I5XhyeM"},"signatures":{"@example:localhost":{"ed25519:MZECYDWJFY":"dNWP290Wt7qm8kJp3y0uP2eXPTA0+N8Fx6bBBfKsRKuZRi3izNwRl05TNadqemxnCY6U474cNKe+mwO4zMWxBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"NATWAGSISG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"NATWAGSISG","keys":{"curve25519:NATWAGSISG":"Y0npzPT/N8sjwpC4/bBPTrWsTpXfhoiNVMR5YhNI2ww","ed25519:NATWAGSISG":"KDYHNwXH5JJYswMvH/x/FjnXFphX8F+bMc4SW6TOheI"},"signatures":{"@example:localhost":{"ed25519:NATWAGSISG":"czEWN+4eWnoju/jW5AiaYH6vRNvXN8O57Him4hRnSFfyrhzphyOPtV2OpggLeqG4GWCGmYgqJy8QjsxO/tDoDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"NFOYODETZN":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"NFOYODETZN","keys":{"curve25519:NFOYODETZN":"qaQXKBgtmIwEIqP02jNNhGbZ9ebcbE2VHl2/PF0DomQ","ed25519:NFOYODETZN":"4AgIvFW3C7fMUSEeR3ZteKJOGFRKnAUzH42ygF7SEgQ"},"signatures":{"@example:localhost":{"ed25519:NFOYODETZN":"U9Tix4YASYND2yov8EVD77HWPrYhVTHppOCag6OONMcGMEAl23y5gRk29BfnvbIBhs4V3s/lM2j81Ch9imMCAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"NKYXFHUYWE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"NKYXFHUYWE","keys":{"curve25519:NKYXFHUYWE":"Y4XAaI3o9r2UfjUEOO3mnCXe8BhteuPw5dljj05UxCQ","ed25519:NKYXFHUYWE":"wx6mmOUU5sYnxmRGd2xa7wl0faKEBtWgtJiD80jMJCo"},"signatures":{"@example:localhost":{"ed25519:NKYXFHUYWE":"dCcgkRjbkmThv0KDZ9cu6F+s15gOwE4dhskhHGG6ESv/Fo9FLzwMuwrBVhiKCegNKc4PgLN8FAgyQEYRgifnBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"NLWICQEGVA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"NLWICQEGVA","keys":{"curve25519:NLWICQEGVA":"cu6cPSjQ2LbwV/XmaZgp2TyVR42uZbAce/q2L2ZpKHs","ed25519:NLWICQEGVA":"QpRR2lgoFtnQwALJzSH+8n2dt9xgD5Jz7HNkAAhQXmA"},"signatures":{"@example:localhost":{"ed25519:NLWICQEGVA":"b5HNlyNizaycUsY4jd4vN+tcP5snUApcCNOT0TxZNscZgEeNG1mFErTZ2L6UoCXGFnX63zdRMcYfT6uH5P1JCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"NMEOKLUWNV":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"NMEOKLUWNV","keys":{"curve25519:NMEOKLUWNV":"djM3WnA5JAuBJ4eSioYseMj/0hBurkxLES2QJ020mmU","ed25519:NMEOKLUWNV":"tUqH5H6aXy+aqJhkcHyEZ/S7nIrcnBJtntrlT0WMDqg"},"signatures":{"@example:localhost":{"ed25519:NMEOKLUWNV":"5Y3qiCZ+K8JUPUe3zYc68SeoIcCrjykc7Wj7DGLxuufub4gaD0Ne+1aIWe3p4c/yjkjE+VHHw20EB4YU+Q/1AQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"NXGUGXMPQX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"NXGUGXMPQX","keys":{"curve25519:NXGUGXMPQX":"4FYtp0bZTAQGPCIKBU5PGt9/MXrG/RHBRtdtExPyiVQ","ed25519:NXGUGXMPQX":"EA/f6o6xxOJ5mikfjXfboK6Hsl9I3BThN2gblBQD5F8"},"signatures":{"@example:localhost":{"ed25519:NXGUGXMPQX":"tHxhjtuXq2KVIZmD2PlFKJK45D5CEkbJxyYd3IG8rRN+L7XQ671a28suIfh19K1fpiUgoCrGyHu8DxiEV5uAAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OAVYDZNHPK":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OAVYDZNHPK","keys":{"curve25519:OAVYDZNHPK":"4LaUTm3tkF2h0/WRVyh7hmBHZsMqYd2vSi38j3bxaV8","ed25519:OAVYDZNHPK":"rSCwye+pueSSk/3YefhYiyg5Qb3/d4ULGx21o5WUQgE"},"signatures":{"@example:localhost":{"ed25519:OAVYDZNHPK":"BExfhXdCuAqEmd/19/uKUZ+M3zHg730Djujngx/DAa3Hw2zN1kI8SDrkQP1VnKcXJH1xmRu+wIDFkDBxsl1/Cw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OAXXWDJTWT":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OAXXWDJTWT","keys":{"curve25519:OAXXWDJTWT":"LRAnjevh6cozHocp5P7EO9sS4cFhq2/n5R9p6gsoXXo","ed25519:OAXXWDJTWT":"PvTzNi9HY+2kkuNSOzbCr++X9mymRFdBmpftkApORsI"},"signatures":{"@example:localhost":{"ed25519:OAXXWDJTWT":"GP/2pWtqcim+CMOLaUhC48wvDPDeG1QDSEFCY8h5MOeKPN76z7K/+GK7MLIKAIXfPWfntsmQEgvoVSFEfvcTAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OBFHLVDNMU":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OBFHLVDNMU","keys":{"curve25519:OBFHLVDNMU":"q/xSEFZQXfir1WgOi/8NCMrxSrETRtw3Zs9CHZ1g62A","ed25519:OBFHLVDNMU":"WpvUDNyavyAxPgQn9xEBCZRPCSAWrgSfptlMiIk4Vbk"},"signatures":{"@example:localhost":{"ed25519:OBFHLVDNMU":"pFSjECWgNTVSdyrF3amFzeEOotrqhudS+K9H0LHIlgiUBgtIlECR57jeNrTAW9vJTTip+2ON9Q0YP+wnHetVAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OJBSRLPEIR":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OJBSRLPEIR","keys":{"curve25519:OJBSRLPEIR":"Sin5ESE2QkO/Zwv831+2FxoRrKhXMCyphDuZeuFWYn8","ed25519:OJBSRLPEIR":"JmE2ftGFfdosr2MHaqrcgFfxpoTyy5iYwojYARPUTSw"},"signatures":{"@example:localhost":{"ed25519:OJBSRLPEIR":"PA8DKQlb6xRby/GTKigCQK9pBTkEbOcTsqDLYB20OZB3CVCPeaD5BBwT73QHW4oJMKPSViW6ai7u1YuIgBU6Cg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OOIGEAIKXR":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OOIGEAIKXR","keys":{"curve25519:OOIGEAIKXR":"8AbPTjgj+pOO9mB5cW+Eig0rnOdmahdtjH7J90rK0hU","ed25519:OOIGEAIKXR":"EZWli9hc7E7GJtlpeAJsBbB1mfsqvpOT9JJyHvq8RvY"},"signatures":{"@example:localhost":{"ed25519:OOIGEAIKXR":"CcfGXORlTPQKcG0aB1WS8EtiRwMRLhxS+/G9eYYloHWCx84g58T44YxSG67yTjg1ijB4D5mEwPAN4i6YGYseCw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OOJRSPOHZE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OOJRSPOHZE","keys":{"curve25519:OOJRSPOHZE":"59m/ij2bNAMlbO7fVNHTftl/OPo1luYC5lSYxIXfDX8","ed25519:OOJRSPOHZE":"AuC/o2/DtAa53fAAbefALiqrc64yzgEt+vpmOdixS+Y"},"signatures":{"@example:localhost":{"ed25519:OOJRSPOHZE":"NVUeLpNYymLEXNTzzomvnYNVeprx4Nl8i6NStqe2s/o9qK5kwnbTvT+g0h6+TFnL53ndOxk+qFcMtMETyk+nDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OOWGKJKCAL":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OOWGKJKCAL","keys":{"curve25519:OOWGKJKCAL":"+QvB+KynczhvV3O4/WZPDERqfXp3zEEmkQ7VtM1GrAc","ed25519:OOWGKJKCAL":"KhLZC6lveJyi9qRHlNCrnlG3EFBg331bmoMqO4XzHNU"},"signatures":{"@example:localhost":{"ed25519:OOWGKJKCAL":"+0tBSs5yFkDS+H/gEBMxJk1yDommLubGHAcyJKTKyXf9m3N74rhO2ApTmxJNdbWwt9RFdYhfxTpfxXsPVIyjAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"OQUMZGQBZC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"OQUMZGQBZC","keys":{"curve25519:OQUMZGQBZC":"PsSKtdsRIMalKjDyAnzI+TVeP7aB6bZ/+7O36xxdVV4","ed25519:OQUMZGQBZC":"IvqkNWSRTsFIECHVmSLe98CIFg1i2uaTcMFgRn4FKwQ"},"signatures":{"@example:localhost":{"ed25519:OQUMZGQBZC":"BajB5FyBBmkj4lpvXxNQ4rVUEqj+sPQu+IqUpR28lq5XiNjs6WJZ2wqNXXvD8CBIcDQWZQvt6MCTjjvHAmcLDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PCWYNGUAAB":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PCWYNGUAAB","keys":{"curve25519:PCWYNGUAAB":"QLDSL7ynIAe9MX46HpknGlakaRIghijAinDj7XZer3w","ed25519:PCWYNGUAAB":"QD1+XWYlDBKGV6IomzNpFtNgj9Ol+AOfxa2txuPxF+s"},"signatures":{"@example:localhost":{"ed25519:PCWYNGUAAB":"5FtJOVoC77Y9fREeK9XFNQRAfsEAHrEZt5Vm9kmOc+vxVyrGtxU6ZmfMC5ZwxGCzKycrQ78pz+sVvySgTdvvAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PIRRYJJPEE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PIRRYJJPEE","keys":{"curve25519:PIRRYJJPEE":"WHVOUDJaIyAt13UQO3DYNq0ZL7+DeFvM1GvGlLDNRSc","ed25519:PIRRYJJPEE":"Vy1tE6d9qx2P87IjFFIiFlzOz1GplSLwJKWO2KrjXvU"},"signatures":{"@example:localhost":{"ed25519:PIRRYJJPEE":"0Kt8IeP/zm1O1Dirw4RY9qo4C6Q3XV4i1UTf63Zj5OgdLBMXA734D6/EEW4qvB/46Bg6mpRFqrDUPCE4BVJpAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PITUXWBZKW":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PITUXWBZKW","keys":{"curve25519:PITUXWBZKW":"65ui70Z3BCEPHwT1ccL0Bo7GWENIrflX3AuUjsXg7ms","ed25519:PITUXWBZKW":"irvwObR9gGCTVaZ8gXiLBsyqI0tglgzk+XFSynKymJ4"},"signatures":{"@example:localhost":{"ed25519:PITUXWBZKW":"ePCdO249s6Y3pNobyEO1Sio/sbAoKkqHWZkEzWr9wcWuRW5zgFYKpaUerpNN/SSYXMFufN1yftvefL+VAWT4Bw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PLKUNRVDEA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PLKUNRVDEA","keys":{"curve25519:PLKUNRVDEA":"+yDO4Iizhel4uELH8KgXiUlHQT1d5pXH0dgSCvqKrz4","ed25519:PLKUNRVDEA":"mx8zet9BnmBo026mx71SPbqMDaTbasgQi2noEnXAh8M"},"signatures":{"@example:localhost":{"ed25519:PLKUNRVDEA":"dej6vgtmcevYZGuc6BMtbOGtQxG+BVXvrz8dEToys8gXGkTRqw7NmaBq3FdOJXhOFdRwm6pMtiJINMDEHFbeAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"POEMMCBEMR":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"POEMMCBEMR","keys":{"curve25519:POEMMCBEMR":"v3gzsAw9ODVo6EREELcIK6Pzb0amxHXxcj8YGn3NfXs","ed25519:POEMMCBEMR":"NDz1EeURyJvc7nVoNIXD/saC3JQxg8au/sZSECZ0aYA"},"signatures":{"@example:localhost":{"ed25519:POEMMCBEMR":"p/pBRtKyryQ/PvghKpuDSM6FpO+DsDKbn8d/jImEacE17nbfmwxIHQGKuAfjbR4g96OG9xDHc1CAm4+lgoBrDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PPHATICKBQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PPHATICKBQ","keys":{"curve25519:PPHATICKBQ":"i9GHf0K7XB3LdQiN5BwH1QiqfkCMi+1HTxsch74Z4CA","ed25519:PPHATICKBQ":"p/JndNW78P5ooWB9fihpJI/24QOnHOuqHmS0onKu074"},"signatures":{"@example:localhost":{"ed25519:PPHATICKBQ":"tXojlryYW5Kbva/5vllf4CtsPPUHFLl6UhJZeVDXS/ANAFhE3VkNnSClEVc8ZN75BACvjVkWd0iaBJf+psImCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PTJUYANNPX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PTJUYANNPX","keys":{"curve25519:PTJUYANNPX":"D00NKohz4ZpXSc6yiTaxEsb8n1rqwOBogZzp6VFu8kA","ed25519:PTJUYANNPX":"gjpBq79wOBnewopxoZgkVGgromo1L6r00mthhqotQJw"},"signatures":{"@example:localhost":{"ed25519:PTJUYANNPX":"T528p0/ibl5uc+F9m//3mXZwsrMNOqXJKbBV6TwRLmQsC07VTpxjH5btOKOK0Zd35SA/eXjZXyFQc8Uwwp7vAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PVSCUNMZPC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PVSCUNMZPC","keys":{"curve25519:PVSCUNMZPC":"pIuNOCGcpr/l+VeHRERe1XxOc2wITAUiQ5rs0+MsrDc","ed25519:PVSCUNMZPC":"l8NpVBCzwqJ3b24niw8aQtw+M9x0u8zhRQAhh3tlT/w"},"signatures":{"@example:localhost":{"ed25519:PVSCUNMZPC":"eqEr+/IKgXTuDTOQBdda4QxAbLaFj3JkgWpMIm3v2YPSCzwfNMFZeTFvUb4KqMfoIrKXIlxkzFUsRgzhGajqBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"PYKAGIYQNL":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"PYKAGIYQNL","keys":{"curve25519:PYKAGIYQNL":"XnwcW34M8ReZ7MXnK9dSzbEUfRJB13/819WTH3FkIXk","ed25519:PYKAGIYQNL":"EEayT/Ecj6aEG2b82q5yxPu7vku0uipbAeQoKibr8Ug"},"signatures":{"@example:localhost":{"ed25519:PYKAGIYQNL":"bTJKR90VxJFatUWqGp45wgNuWfK78JflVkOsaXlGYrcnSWREMryslowouJWPytGk52ua61sLAu/caKJItZFJCw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"QEVCPMBWQX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"QEVCPMBWQX","keys":{"curve25519:QEVCPMBWQX":"nf+q6BUx7t0LFtTu14qiNGY/GNatoUNVe0O6DKJh80k","ed25519:QEVCPMBWQX":"EPVnZFdhNZCUeyky2Ipm9K23LBaBmXfnR3CyaEkv0UQ"},"signatures":{"@example:localhost":{"ed25519:QEVCPMBWQX":"Ujj0GNLOsDr002fFgTeeulYHmNi4eZHQdCfoXDDKXet9c+POmhwUDJN6sRXvRRChb5Zqo6qt8ux0HBFS94vhAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"QGBSWWBGRL":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"QGBSWWBGRL","keys":{"curve25519:QGBSWWBGRL":"PCPc5qFcKUlDLDvcM1r7kUZtT6UrDg2H1qmZ/D1UUi8","ed25519:QGBSWWBGRL":"hMtBx3rUKlLINfhamPzeoFhfNRzlSAejzLm5R1X1IcE"},"signatures":{"@example:localhost":{"ed25519:QGBSWWBGRL":"0JlD+fwOICXniES3Cx9i8SQQmG1lsnO3x7noHj2K4H1voaMQ9vXQZ2L34kqJinEBf+cEquN8KfGKHWEOVn3oDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"QWHZAEXBJB":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"QWHZAEXBJB","keys":{"curve25519:QWHZAEXBJB":"wid7PTTK9Zx3uYyMILkZCq/mB9wTWsBKoTWG/nlhVlY","ed25519:QWHZAEXBJB":"i0UMwT3mgg/UEKgk+6OzOIcIag7fAleW8irf2TQtNfc"},"signatures":{"@example:localhost":{"ed25519:QWHZAEXBJB":"LW/jRwYS7KZBrX29aLA5uPENqTLlwphqTXDL4RUVTU5uqzyIjXlNtvhywsH706+rsQvsyJYy+2DqN/Cu0cVACg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"RDRBMAITSM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"RDRBMAITSM","keys":{"curve25519:RDRBMAITSM":"ZQNreVj7slWoJZ2gpbaa5KOeSDUz1yf6Pf5tq6pJMks","ed25519:RDRBMAITSM":"ayGH6/2l5O6FVYZgZsOki9jA9cCj1ZoFkqQJoNmmgj0"},"signatures":{"@example:localhost":{"ed25519:RDRBMAITSM":"duWBvJXaxbHlhOJp79HabqD4q+lOjCxcp9QZZ8iBTZYgw5Pbt/qJn3UKeuw/YYPcnzw0qaZprDXHn8hScWgFAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"REGDZMINHE":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"REGDZMINHE","keys":{"curve25519:REGDZMINHE":"ZWfWlL5Ey8vPzkmUmUYlTe10iyVlIeF2rnVrMD/Ndlo","ed25519:REGDZMINHE":"M+UzA+WnDHJJJjZ5vPoaMcGQzfgjPZ5SJM1TD/Gi9SY"},"signatures":{"@example:localhost":{"ed25519:REGDZMINHE":"h2AVOTzuDahqWurUobat5NH6lN1OXou+tRyLl8cX2lAtauCU5x01qCwIvjyduznKEQLyfy7r3y2DI+jI5e/NAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"RKMGIKJYLD":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"RKMGIKJYLD","keys":{"curve25519:RKMGIKJYLD":"PRKI9C3TkeF92LrmfoarcTY/fzBbhMwB/wBOVJmcHAY","ed25519:RKMGIKJYLD":"ipzwyIc1drUnOmZG/nmWUE4auE0tZqFLSsw5GZ+y5aU"},"signatures":{"@example:localhost":{"ed25519:RKMGIKJYLD":"9K7p3lU4BiIm4eV73NUTbOoK/P3nM8bnz/EpLwxwp0RszM/+nWKOkrfoP3n8P/eWaIVciq9ixSF3YTxMyAh/Cw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"RMFBNJEHOU":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"RMFBNJEHOU","keys":{"curve25519:RMFBNJEHOU":"zsUYoMLLSiplgkV32AyAErwhD69xOE+JT7mFrsbnmHY","ed25519:RMFBNJEHOU":"v/m9j0uWnTOwn1wfxbrdfFWNhp9BQW/680y3XbhbrD0"},"signatures":{"@example:localhost":{"ed25519:RMFBNJEHOU":"2jTsWC4ogrmyDJdhob0uL+AFC0f7qAvseiVQ0eIrZGg/hnxh79PazfuKnR5Fd6jlBzEcm8hbe6Qd05CMako2Dg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"RQIKNNRLWT":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"RQIKNNRLWT","keys":{"curve25519:RQIKNNRLWT":"xDC3X8ai+1DgfoU0trv+BGths3b4xe0LU6f8ba2gKzk","ed25519:RQIKNNRLWT":"rKDPohS4HbqADhdDUeLmPp8CR3/NSdQdQzarArn/5zY"},"signatures":{"@example:localhost":{"ed25519:RQIKNNRLWT":"zc4GVMmWzpkWrx5OEl6sTC732bzAdtuRE/VyX8BUiQe4msRXAsSR+x9x7O+CaahWotRklbd2+c/kI6Ibc2fOAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SFJLADLVLN":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SFJLADLVLN","keys":{"curve25519:SFJLADLVLN":"0nQgDmqEmh4PgN8C4g1otVdAt68F8znOeMzfkCDssEE","ed25519:SFJLADLVLN":"67py5bURkyMdGeZa2iDc4ze1yAumrY5UEfmG31R/uAs"},"signatures":{"@example:localhost":{"ed25519:SFJLADLVLN":"vWJqxJU3xoGZW51NcCZV255l3AooY5jDUDAEGFFDe7rhuiu77DPrpY0tHt/yQ5qutoxVjh63ueOHMYpQXOqFCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SFKYKWBWOS":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SFKYKWBWOS","keys":{"curve25519:SFKYKWBWOS":"aFb9Wr1FYcQ+FfL2LhhCErUlKinDhDcJgVQRY+OirUM","ed25519:SFKYKWBWOS":"R+q6+srEJSBVt+1qwVDeaqu9pVnKOshPWQL9K7YvbB8"},"signatures":{"@example:localhost":{"ed25519:SFKYKWBWOS":"+w95lf5VJUyZVo7fDQy4AdauhfwwMkFmq6fuiYUzwVaKRCUP1Roxcna9Z0iPIfdos8TineOPkGXjhDgtGMlvBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SFQMEHNZZS":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SFQMEHNZZS","keys":{"curve25519:SFQMEHNZZS":"2/UibVqBRl2sDxN8LET20Fg/LNpZjtcMV5PpMOJyQlo","ed25519:SFQMEHNZZS":"vU4iYmheziw20343W0q/4lNShYV7tzdkcVQnGU5FOzE"},"signatures":{"@example:localhost":{"ed25519:SFQMEHNZZS":"nsQpOaDAfq+KoID9G1Zud3jPXn/DR5not+pJWWk84zm/BJJxJz50kjYv2sEocNC/lVEjnCe5HexBd6yIM4dTAw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SJJONGRGGH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SJJONGRGGH","keys":{"curve25519:SJJONGRGGH":"nN/Az1Ev/sPeIDgIYbLEA0vAyTeal2bRoMFzspaKGVs","ed25519:SJJONGRGGH":"6nPJVBIlpRn5DitUZcYXX1sOwlNyGcroVRJgiOd/3tA"},"signatures":{"@example:localhost":{"ed25519:SJJONGRGGH":"Nd/Hwz7J7TR5dXa5HrYL2MAkeRhKhCFr4x4ZNcoI4mGoiLWCmn9k9+xAfYMPL0e/esj4ohEQlZ5875NjXY4gDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SJMFYPCVTT":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SJMFYPCVTT","keys":{"curve25519:SJMFYPCVTT":"ARlbk/Ve+50X5qsPnmIjsZoVkofjyCeYpd/jQGSGuhk","ed25519:SJMFYPCVTT":"8+6euGEKcEetrLRRGnIivu3mxGvButWDyx+hi9l0jv0"},"signatures":{"@example:localhost":{"ed25519:SJMFYPCVTT":"MPDaHvCFMbTRTPFIpySzRTmwFNbO94xru9FyfZtqGovgsWJ/rOO/2daiqQySgPdqoG11r7wFY8pjhdNA5+n5BA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SLMEYJPPRU":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SLMEYJPPRU","keys":{"curve25519:SLMEYJPPRU":"Kui5pTxxe4r841I/13sCykuMTYJzBW0r91vdg6CQmHw","ed25519:SLMEYJPPRU":"qnU646bmyjz4fTlMPvLHM9WreHaKmF5PRLHskhKY3xM"},"signatures":{"@example:localhost":{"ed25519:SLMEYJPPRU":"O+cVzMw6MjunXvL7TiyXnhxqVVzK01XCemQ9FXnKB8wZ/zcsplBIJW9bs5KMqXXNN6hRzzHbo7DkkP3hS6OLBQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SPQBMGZYIV":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SPQBMGZYIV","keys":{"curve25519:SPQBMGZYIV":"AswtHLd3bG/2Rost0kjRo2rQnNE/3qgFmSKxf+fvZHQ","ed25519:SPQBMGZYIV":"ixQEMjrg6KXl3WaQhr4IZYisKplyo952l15KWQ7LTz4"},"signatures":{"@example:localhost":{"ed25519:SPQBMGZYIV":"5QrgrfvpL6TUwzmtuVBU98WY9m5RPQ723L3p1L2PrvevdfY/12D4yGCfWoyd3TZrN96YfS59QRqSUpFpqoUpDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SRLQGLPZOH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SRLQGLPZOH","keys":{"curve25519:SRLQGLPZOH":"XzBUXl0MhApEPbTDYNb1V1xbZhNSYWTiH/jXeuHRd3M","ed25519:SRLQGLPZOH":"jdQfsZANV8XHii8VK+7uz0YllJ3W4DL/yrs21h6yis8"},"signatures":{"@example:localhost":{"ed25519:SRLQGLPZOH":"NTi2AdsAHbnxtd3ZZ1RmmLdgJrp9uiQh1Z0F69tzr1Pb2lkts+jU8/LdnvbjCybCAYQd9PFNzYZGRQlfdEnyDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"SRWZNGFQQK":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"SRWZNGFQQK","keys":{"curve25519:SRWZNGFQQK":"FTLIp2uZdze8b3PyG9Q1wn7mXCdyKx5FnzK6S1aZM0c","ed25519:SRWZNGFQQK":"SLgx/wpJlOjVIJed84A/qnsyIRl9WvhfdBrYMvX1UCw"},"signatures":{"@example:localhost":{"ed25519:SRWZNGFQQK":"GHdEvTAmhULs6L/pBLWIIO+44TL0Ubt01LcdWHL3hnYWt15EOq9CXFvY1lJIEysgIxpzbhlYD0FM7jVW95GlCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"TCOYAZRGZK":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"TCOYAZRGZK","keys":{"curve25519:TCOYAZRGZK":"yHulQUaLolOfA26otau4Dp2Dqg+uNQvjuyLjbqOFczQ","ed25519:TCOYAZRGZK":"ayAReLic8e/56tLgFBAzfOrCspj1W8DKqeRHLUd7/MQ"},"signatures":{"@example:localhost":{"ed25519:TCOYAZRGZK":"u66iDHYT+fOWR4B2KXPJBZzISZqObsRMvYFvGix8agGzdXpBZa9qCOI1021Ckg+ca/NwzhA0q7golmZs7u8BDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"TDQKXBKSKG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"TDQKXBKSKG","keys":{"curve25519:TDQKXBKSKG":"6m7U378PMMXXCkUt4SGxqx9XLR8+jhk/PHkY8JGSVnQ","ed25519:TDQKXBKSKG":"5KO5tuQG/eLrRCFUi+T1wVEpOn/gjlx0+ssWWQpRAfI"},"signatures":{"@example:localhost":{"ed25519:TDQKXBKSKG":"1c+ivErNSnOJaVMSynTn2GxPDelzU6KsgSejVasbw4L6wlXh14W2NgHtdVrnJ7ZY/H/Duqy1E0MjcqvikquKDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"command bot"}},"TXOCPFNJLZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"TXOCPFNJLZ","keys":{"curve25519:TXOCPFNJLZ":"DK6tXaqvxOwYPTf+TIKAAEq1mMW1zXHIbpyw/HZpBHU","ed25519:TXOCPFNJLZ":"uJ1cvkajSbXSuT5cnZmCwhyKGdhB4h6yQCsQmjVLTqM"},"signatures":{"@example:localhost":{"ed25519:TXOCPFNJLZ":"FO2vmBqS1kAE0oxOPA5litr+p5To2ROY2xT+MDNvrUffBUKQ/6dwqDA1AUfCY+arMl8EUTxRwE1l4fjqFnIHAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"TXWZDGLUCI":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"TXWZDGLUCI","keys":{"curve25519:TXWZDGLUCI":"7uE3dU9zyU2wi9B3i71ysFXSVpfwoNZodWQ4Ss1DPx8","ed25519:TXWZDGLUCI":"hbtf+kOqJ5GLWwRfueKJCLJPFS1yLHth61fhokNZsro"},"signatures":{"@example:localhost":{"ed25519:TXWZDGLUCI":"f0sKN6k3sKHFtTY+ZoS0JyKqz6i9KZJZlQ9kI24x91Xi/3tbpl7bIpORPgPCL5tRnhfB3K0PKKrMHbITxHwEAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"Weechat-Matrix-rs"}},"TYVVHABYWC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"TYVVHABYWC","keys":{"curve25519:TYVVHABYWC":"QJadtohEnfJvXY0IjM7L57I50ksACTI4hp0hYPGLaTg","ed25519:TYVVHABYWC":"jnDmWsOA3wrxchNK4wa4wg885p8cUXHxcgARhq0/6w0"},"signatures":{"@example:localhost":{"ed25519:TYVVHABYWC":"MgJcBu9AfKYF/eta5l8pnx1RLaPSY9YdPvAW7/EY85eC9Df7Vrk7BcI3/RdyMHZzAi0QSgGZX5nkc4Sir2cVAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"TYVXUYCJYC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"TYVXUYCJYC","keys":{"curve25519:TYVXUYCJYC":"F9z07wuhtcXvae3bcZ+9ht6vwwrdF7AVKjR5j65pamM","ed25519:TYVXUYCJYC":"N26nx5vuOYXHU6aLI/fEk611nTySPUyyOGHXqy0tkBM"},"signatures":{"@example:localhost":{"ed25519:TYVXUYCJYC":"QpwIIw0pDSumFnPX+CPRyCwqgyBjvpyDhydjF6JFZ79/LpvYqHNrX+wWnmtEWe5aONVVneZQ1QpQWMrwQYrNCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UJFFDLXBFG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UJFFDLXBFG","keys":{"curve25519:UJFFDLXBFG":"3oSgPfOn1uu1Gb+Mx0Ggv08LyOnTM1jiykT0w9ibdFU","ed25519:UJFFDLXBFG":"qywgWH2hwub2ySjeXMv+Bh2fK3bAHP9i0LCWtFQWx2Q"},"signatures":{"@example:localhost":{"ed25519:UJFFDLXBFG":"R/bx3JlQTtzJRZ2bHEqofHy4ASg3olgCLxbkp937kMw5tJn5QfvX12lrTxz+Km8jO3JZKvIRPUfkZDNoVj7UAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ULJMVHVAOG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ULJMVHVAOG","keys":{"curve25519:ULJMVHVAOG":"A2Q+zMywf9vAEW8duBxp/458I9hb96K2r5NSDCJm1AY","ed25519:ULJMVHVAOG":"NAekP17BRbVYaec7gp/WUJekgu5ey9mNTfL+dhZne74"},"signatures":{"@example:localhost":{"ed25519:ULJMVHVAOG":"wHO5CAK12IGuGu/z9BuvcQnrr7FW3ova5bLE84XBM99dZMnWlad69jKKWUoFonC9guBqEwmMjqwXqJHzTYCFAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ULRVAILNPW":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ULRVAILNPW","keys":{"curve25519:ULRVAILNPW":"fl4FJqlz1E6i1lx1p8h7XUH54MiPvhbr8wCXeJI7JBw","ed25519:ULRVAILNPW":"JC2z+kRYg01zt8uH9uNqU3KLOXFuBLGg9m3KNVVrtv0"},"signatures":{"@example:localhost":{"ed25519:ULRVAILNPW":"sIPYMZwjO7cRiqnAuhNNFZyJvE1X5wtI/BoT6pAXdPqwoomxNV9NNWbRjG195QMUKwR+Nt/keE8gXqnH6K5cCw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UNOULJXOXX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UNOULJXOXX","keys":{"curve25519:UNOULJXOXX":"94dOQkf8ENo3hk9cuC3kbOrEdhj8o/W+hI8OwUA9DRI","ed25519:UNOULJXOXX":"6X6kHx9fDcUnd2geSXXDwebIRFMOklVaHnzBR9nA3fA"},"signatures":{"@example:localhost":{"ed25519:UNOULJXOXX":"sZapMjqL0f3djip+Prx1cmKuLaGvdUM2xJFAw231TbX0HAvXDLW/2yPSv5eDfZ2roGTOTBav5VTd3SEbKLRmDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UPMCUPQRDH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UPMCUPQRDH","keys":{"curve25519:UPMCUPQRDH":"3+2qfWP/l12nP3an+WquG6wfJ6sxk94WQMN2iN5TuC4","ed25519:UPMCUPQRDH":"KhhOLB3OLocVuR7Dz77Mi27rOdLzsrwrmPzJz17VA64"},"signatures":{"@example:localhost":{"ed25519:UPMCUPQRDH":"EgMnM0MLXkigEvzKacAFFnQd9kURZ2V0dfilinU6lQoWY6Ll1bxY956uTq3NWXTGvET7sztMiC7EuM6RIdJ0Ag"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UPSICJSJXA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UPSICJSJXA","keys":{"curve25519:UPSICJSJXA":"ijSFTbjz9aKDb47iD0X3FbiwH2PgWBILUXw7tpeQqXU","ed25519:UPSICJSJXA":"4tDWYVz9jBcVsUQT9oPFLiX+1VPM8PEW4/zgRAo99Fk"},"signatures":{"@example:localhost":{"ed25519:UPSICJSJXA":"rv2byUNpixrK/827I2tQT2lVzxrVxP5Bie/ORw6QIFPLADDzmBFYtSJh1WBqKuvqToWXROggdynuffKc4vAdBw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UTVPFWOSFH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UTVPFWOSFH","keys":{"curve25519:UTVPFWOSFH":"cHISeqOynQHbzrFtF2vOVppG5D+iGQmEEdLo6REKixg","ed25519:UTVPFWOSFH":"CNrg8vho+onWjNd/t4WohAuBANps2C4N/zB/w7ISpSk"},"signatures":{"@example:localhost":{"ed25519:UTVPFWOSFH":"eH7iiMOE+qn6CMFEP6L4SAQg6P5OSKm32y7SSn9DvM4x1ENe40zDCuobls0dS+i8fdl1bAktg3fNRP2qTHEMAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UWKQEPYTKT":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UWKQEPYTKT","keys":{"curve25519:UWKQEPYTKT":"E3m1HIfYORRk8mTJqXjnb3Olkqa3PEcUjPEQ9Wjx+lw","ed25519:UWKQEPYTKT":"3oxTXIV5N4hwlMj/Tw8GbZvJhiYrgbr2cTE6VsRTZxc"},"signatures":{"@example:localhost":{"ed25519:UWKQEPYTKT":"eTlyV1cUa8+leIz8Xnho0QA1dOZ+vqVKw0340+n2V+0G7LhUsjqnepWM1G6xbA3m2Q3FSN0eVDlYTFGOrS2cBw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UYIIXHSTHI":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UYIIXHSTHI","keys":{"curve25519:UYIIXHSTHI":"hKCPEMiHjHwQ1uylbgFfbvdBbt1iM7VNil3i7zfiXTE","ed25519:UYIIXHSTHI":"jQTk2R6B059J8HsaSndv+E5OQuIyujzEHWDmQ2pQ6AM"},"signatures":{"@example:localhost":{"ed25519:UYIIXHSTHI":"YFxgmuRaRF/uhcTX4EvLQA89JeK28Trhn531pSPl7tY+wInmm/ElixTG45ZNbAZuIamyi8XvyUsRPz85hXz5Aw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"UYIUDLVJWP":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"UYIUDLVJWP","keys":{"curve25519:UYIUDLVJWP":"CNmdZWpIjJ/xn0PaVFSMo7ifmm5ddb137QPbiF+01yI","ed25519:UYIUDLVJWP":"C/nmjo0X0Hs0s9RSI+w1zA9A9lCaGQ0tPyAG5WyxCS4"},"signatures":{"@example:localhost":{"ed25519:UYIUDLVJWP":"XtRVSB0MMdg9oOTx0gFKD6/TIG623gbdIWVF3ivlqRllDQ3aMOq4kN3acL3B4gENNiRanW1c6XnK8hLyBw4JAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"VEGPLVOEVA":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"VEGPLVOEVA","keys":{"curve25519:VEGPLVOEVA":"14ieCgprBGI8/xRNtFiaqDUeyMoxibWt4t5xoUXTG0o","ed25519:VEGPLVOEVA":"fb//yu8H/X1SSz2YArGTSXbkfqbk4P2oTEnyM8EMs1Q"},"signatures":{"@example:localhost":{"ed25519:VEGPLVOEVA":"HnNSmDVhQEGQjuGRqh3S3iv78UljiiVrS87kPfD4eKtM42lxrINlO8oExYcr87oQu37q0xQqID9HpGr1a8DlCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"VJLILRHZUW":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"VJLILRHZUW","keys":{"curve25519:VJLILRHZUW":"JmKBRKqK5lCaiPZvd3hoMv4vRZhFPocoKK3GZa9jtFs","ed25519:VJLILRHZUW":"tHOuDssOuCmGZT3iNoXuAj1ya7dcbg9Kqk4X8Cz01xI"},"signatures":{"@example:localhost":{"ed25519:VJLILRHZUW":"hszsy9FSkEA8YZhjcmRWEBEdqmO0b0DgkRAynYF16texCt2DJUiYvhxDv3cMWvfxt/wgthE6JtpJhp35yU1DCQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"VKUYMBNZQQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"VKUYMBNZQQ","keys":{"curve25519:VKUYMBNZQQ":"nO+vSLw8m7vjnqBQf5gxwPefIWAIA9cfl70wnjmBRns","ed25519:VKUYMBNZQQ":"OtKvaKYZ6ntieWB9JxkNS4O5vF889Ylc32inFxZ3Cgo"},"signatures":{"@example:localhost":{"ed25519:VKUYMBNZQQ":"T49nUL/rxmUimCRIWzpoEmh8gry44LmOH9Q1zXPEp5ircIGNyGERFVCJOFN+qy6uYxcguoQQBR8lp9meTrr0Cw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"VRSCQXSSNQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"VRSCQXSSNQ","keys":{"curve25519:VRSCQXSSNQ":"rHfDr5yDmNDuN54AIH3mznS9a2UXhxcpSM7Dt7WmFAk","ed25519:VRSCQXSSNQ":"yzXUVycYuXRnH1yAbD+kChVWaBrL0nqvMXBEgL6+r4U"},"signatures":{"@example:localhost":{"ed25519:VRSCQXSSNQ":"I5yLz/KHvCY3vBqCxY/fhLPXOQJYPicCdklx4OHPh428zb6d0w9aQPA+ag6HCz7+JMOI/sOkAPqcMpweg5cTCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"VXTRVBKMJB":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"VXTRVBKMJB","keys":{"curve25519:VXTRVBKMJB":"JLcDjo6IZFq/lM2FtgKwZFzEP2asJhNNL7Ft4Bqn8FI","ed25519:VXTRVBKMJB":"tFPs/l5f3C2H7mBfeoFDQQ9MUT6CjvUgna+53ygVtoA"},"signatures":{"@example:localhost":{"ed25519:VXTRVBKMJB":"OFQnWhcVTrv0BKldx1TFTrPOlelOyVcMNHuaEiTLOxv5wkZt/iQscT3wpRA4PYSIhwy7WpCAlOfgp8dk3ONQCw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WBXWCWRWFI":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WBXWCWRWFI","keys":{"curve25519:WBXWCWRWFI":"zwx7EF4GWpEl+zMRfaT1oVoQSPw6Da5Adoxx041v1Fg","ed25519:WBXWCWRWFI":"4ylojCsaL6JWXeIpLQ3vPt8kkgmQmcJKAUkiUYLi6Kg"},"signatures":{"@example:localhost":{"ed25519:WBXWCWRWFI":"YSgJ36iGE2q6H0Jksqk5AUKoppLXPrncjnxkwlIfxeema9f7z9dvWd/B6I5ozl/tCgBgwOv93tEA7YRViUdyDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WINACUTKQK":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WINACUTKQK","keys":{"curve25519:WINACUTKQK":"6V8eZFFn4AjuKlbs8CqPhHps1bmDTZUaq+q7zJGAsAU","ed25519:WINACUTKQK":"4h45kYwEQEJPQQBDPMVW/outmPp35gpivVV3NrTc3bk"},"signatures":{"@example:localhost":{"ed25519:WINACUTKQK":"O9ptFTyrW1wdvq7X1khN3iKJ1CI1GLUzxNoID0hO2wedtYVtc6TtW0STJZ5ttR9XcxsECmo9tu4FjWhDlRk1BA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WNHNFCTQDF":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WNHNFCTQDF","keys":{"curve25519:WNHNFCTQDF":"AbVL+d8kWc8zNABWQ4C7/U1aU3xqJAPpHSE5rmSZH3s","ed25519:WNHNFCTQDF":"xDtWLIpxQfsc/biteWo+A/XCD0Rp/5iT4Hk2FEpgFVU"},"signatures":{"@example:localhost":{"ed25519:WNHNFCTQDF":"GwH1nbrGxYh5otBbqzYMN0jLApyB7gib0HJXZqA659wOMJFsnMj1hEWJ8JkGxuLw05paceJX/XQvo2dpbxFlBQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WSKKLTJZCL":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WSKKLTJZCL","keys":{"curve25519:WSKKLTJZCL":"wnip2tbJBJxrFayC88NNJpm61TeSNgYcqBH4T9yEDhU","ed25519:WSKKLTJZCL":"lQ+eshkhgKoo+qp9Qgnj3OX5PBoWMU5M9zbuEevwYqE"},"signatures":{"@example:localhost":{"ed25519:WSKKLTJZCL":"SKpIUnq7QK0xleav0PrIQyKjVm+TgZr7Yi8cKjLeZDtkgyToE2d4/e3Aj79dqOlLB92jFVE4d1cM/Ry04wFwCA","ed25519:0C8lCBxrvrv/O7BQfsKnkYogHZX3zAgw3RfJuyiq210":"9UGu1iC5YhFCdELGfB29YaV+QE0t/X5UDSsPf4QcdZyXIwyp9zBbHX2lh9vWudNQ+akZpaq7ZRaaM+4TCnw/Ag","ed25519:e+Qq1hWqN6BkvYR9UQorvxGHqZXN1/UgzHPsFC34So0":"cWYFws+ovmBxDzN9pz2qdTf3eQjMTGxqYj8ElvOq4h5LLf/gFltqhrdXpSKxm6tO1SPMz+Ziil4ddH8++AjzBg","ed25519:CVkM31zG1nev8YoYMQjus8DVUIacMRZEHfx9hxzkODA":"sxovNLx54iqCPh9VnKm2f7VW06lAGZdZ5Z0cogJU209bOgCk2oRAJ3vRbvI6oA3nrtaoiAEurzYZgpURVMVDBA","ed25519:TBUjvDspzp4d9ManEuanzoOvpQSkfwBZy1RYHQPMOFA":"KE75QF8B9acIw0L5ltJuwmhwStPsJDOJQdkJgfmEzbz7dRJEVX28xBBlVZmElkhxBfYYxAA/HAplKcqLC/CEDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"Riot Desktop on Linux"}},"WUFSXGMGDC":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WUFSXGMGDC","keys":{"curve25519:WUFSXGMGDC":"aGxdobdki59r4ydbYqRTvIY9a0qdaXyUatBbfF0QACY","ed25519:WUFSXGMGDC":"WA5i+k+Ln9mVzZxiM3WxU6NHl3tTjQ1h/FaV0ZJ3U5Y"},"signatures":{"@example:localhost":{"ed25519:WUFSXGMGDC":"cZZGFz0ueWAad1zQwHP6D7ZnxOohYs6OWbiXsWOQL69IPQwyh/HRcz2Hp6dWN/9RnnUtpg05fv5MHTpE/3jVCw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WWFJHBNUVS":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WWFJHBNUVS","keys":{"curve25519:WWFJHBNUVS":"3JT9TLumcM9JzQ3a84NscItkyyPWYzGc1fLqn1nq+DI","ed25519:WWFJHBNUVS":"xdLmqQbQ90Ikjwb7+T+nYqld/lINDtNcWfWVUKEwN0k"},"signatures":{"@example:localhost":{"ed25519:WWFJHBNUVS":"3QxVcsxl8/+CzUXUIRQ+4fEncf6Yg23z1iCeKffWd2LRLgm0qgKGzRwrxfuFAuas4/Pjvt6DAsvYWzevTIstAg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WYEWNGNQLY":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WYEWNGNQLY","keys":{"curve25519:WYEWNGNQLY":"EF+ijDJc8dM5Vp4HQxlXLJn9prjkvlZ2U6dFarc00AI","ed25519:WYEWNGNQLY":"WT5CyOVnW3XXo5p1wbthlD1dLP264nggApuDqUQd7Yw"},"signatures":{"@example:localhost":{"ed25519:WYEWNGNQLY":"Qa1/6J1bVslOmbx/wMVVceOsSQ37ibCvJVjXtpWmH3JUIcuCzc0VJBk1IBQbmp/3GNTJ/i9TMES/CwNKXSSBBQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"WZAEFAVVYB":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"WZAEFAVVYB","keys":{"curve25519:WZAEFAVVYB":"4mYQn8UAflKfeTc0D6ROR0J98yY8K0GRZ2Hp8MQ2+k4","ed25519:WZAEFAVVYB":"GyczYeikbZ9bV+7AR2nKtbVAIemH4/4fJR2WVX5pHS4"},"signatures":{"@example:localhost":{"ed25519:WZAEFAVVYB":"Ieh/pwn772dkmM4qx0gOv0R0CawssEs0cw2V/DVGuQjbrQgdl5o9sgZmF68xesQO8Tqj4weBFs+MBEfTj2ldBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"XDGOZRFUAX":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"XDGOZRFUAX","keys":{"curve25519:XDGOZRFUAX":"1X6A8XstX4OAGZm6EwbSZahqOc8k6Ab8lRWbTOmNJDc","ed25519:XDGOZRFUAX":"8C37J8VvD0LccBa0S5p5Bq8X7BCXf1V+J/Faim2gWis"},"signatures":{"@example:localhost":{"ed25519:XDGOZRFUAX":"weU0qJIzRjfAf0GG63kAHsBmNajgJXViOPrJsuWPPMEf1hseiruGafaMJkKkgljquE9yLItXUoptj2AClYmjDg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"XJNSUWGBNH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"XJNSUWGBNH","keys":{"curve25519:XJNSUWGBNH":"K6RzmNAyKPUS6A2gk9VaV3nCAQuwMYD1kzUsaC/VXww","ed25519:XJNSUWGBNH":"2nyeCOsjCKQn4oCN8fBr4sSiy9iHKivrKjE1YLTVnoU"},"signatures":{"@example:localhost":{"ed25519:XJNSUWGBNH":"yD6uYw6A6ZfctKJ0nG48CovexVRVuZbPTrjBLpnqE+E7/37t7kGosgthKMRySU5PCHKQuvCEfim2bMXtZ7FnCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"XOWLHHFSWM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"XOWLHHFSWM","keys":{"curve25519:XOWLHHFSWM":"1ZO5CwPAPufOCaWzNLno4MWATOWaXa3KeUKlOTrlbUs","ed25519:XOWLHHFSWM":"RzxaTfWdyqNvnRQu6eGSN14L2mecM34uvtdWw8frdQ8"},"signatures":{"@example:localhost":{"ed25519:XOWLHHFSWM":"vVQNEbV46OunL9j71PjoEA8PopOlgxQqQ2xT7h7s7E5JjG0RxKWnLHrEuuh+WRFnF9V5fc7sf9Ekdupt5YJXAg","ed25519:lahZAk83e58AYfGT2yiVlG4BoqU6Jj4+2dOlG+dqdKg":"UrG5LbpmZ22HyDRGRRAu1WWLSWFr8IONLMbB9ttQPJkg9sd+Qeg26Ps2nF5g2OntaHsUXy8Veo2QiulazF8aAA","ed25519:w04+aAcpPZ9P9JdpYo5bp8vf9nGOV3Oq8tX+zsPUGLU":"xx86Vvn8Tt0kWWav1IR79r3uUeH5CABUNBLbbd1NouoSzpV619A4OXHAYnbDjV0KL9e+2eiOuuUSapEwI8DFCg","ed25519:+gi6jOnIvETEJEFICULD2TldgT4FLzxF8ycdEDwqQZw":"6c5Jj6HL6ZV3vHKq0KqRrVVNzEaC3vnmMIYzRT2dDIi7cxlPJHk6pMenMNfGE/uDU8Zy58sul/d5Z8F5INjPBA","ed25519:W08y6PTFexQ2QK0C8PtZU/8asrphODzGXrZQYJ2DmpQ":"ujuIQ9xmFNub8JdEfZH3JORHg32lNtD9Aa4sFJ14jMfeFzywLG+qxMyyAduMlG23gUikT65dlGnGSMFgijf0AA","ed25519:mtkgwI48SsBXmfaKahqueMRZXwvGUfgha/1o0yf6AJA":"yj4CDrK1r1PExfBrZDpyzReQSuCCyfZ+FS6SHz66t0FlNw8jMa0t5GUZlSsX2/vEE+TzrHJFxQVT2VMV4hz4CA","ed25519:kQXOuy639Yt47mvNTdrIluoC6DMvfbZLYbxAmwiDyhI":"vptjdJ/Xyni8X7ujNyT+EhzhkBE7m5X2Badu7nin4kKLcmd/iSCzM9Gt6hRTe4z2uvXE17KKtAwVJzqTYigTCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"Element Desktop (Linux)"}},"XVGSJAYERR":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"XVGSJAYERR","keys":{"curve25519:XVGSJAYERR":"cC2T6s/FrpnlSJPoSxC38tF5F1zCUOXTENf1Jo/dYgo","ed25519:XVGSJAYERR":"3tCtRf62fIqqrYUDe8W5lQIoGcsLCjLwettmJQpNIPo"},"signatures":{"@example:localhost":{"ed25519:XVGSJAYERR":"6huQAMhl5KHzh99qARVfoSbV3MOeVcXjSp8gMOFCtUibfe2Sgcl2tvBSfg6pRUBg/BfTI2VDrB88wZlj++cpDQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"XYMAAFPCXM":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"XYMAAFPCXM","keys":{"curve25519:XYMAAFPCXM":"nNwMBECwUjon6dRP34UtGbG5FRQ1eI8yK9rUQvwjBzg","ed25519:XYMAAFPCXM":"GKAaCDoAwlg5HTeRWxzhqRekaSXnhphs+9n//GtHPc0"},"signatures":{"@example:localhost":{"ed25519:XYMAAFPCXM":"HMppM2jWNv6hXDRe1Jx3IE3bkMm7PX2EFv4Hx4VQZ2xmDwPdqJmJ4MLfPOICTyt8WVbzjvZs9GB4+ShAxX+sAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"YEETQDERLH":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"YEETQDERLH","keys":{"curve25519:YEETQDERLH":"gOuFowBp12/LzVo488lWpb+t3QJvQMWNmsX9RzZu/zQ","ed25519:YEETQDERLH":"IdVXEfV11ZDKpWbhIB4ghRfIKJwJBXacXqTP05OiNB8"},"signatures":{"@example:localhost":{"ed25519:YEETQDERLH":"caK3eFsa1w2KenVn+0Z3vKYnr0A3kS7Y30Ph6lrl3zVDxqwxDnBz5PJTloSngawm7nS+xCNCs84UbhValHdJAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"YGMINGOBMN":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"YGMINGOBMN","keys":{"curve25519:YGMINGOBMN":"sOWDPgsOxCUHZnDHKwHXLOmQj2SOyFG7z1KeEapMEHM","ed25519:YGMINGOBMN":"Pzv/+3VIBwY4sKMm8xyu7j5RXyiOu3ht/iD0n29UY2k"},"signatures":{"@example:localhost":{"ed25519:YGMINGOBMN":"MSv9M/OZTq/IcTNm/vFXYQcpI8otFcHqfGBn0ihmxBolWU7jaVW8A3W72j8FRhf+iaUyBehSQI4UT+zRAT1EBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"YLSFRBNBIQ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"YLSFRBNBIQ","keys":{"curve25519:YLSFRBNBIQ":"DvzcB+Trx+3+YjMoWmqxjNPCqPJUiksyjJ70epIQehg","ed25519:YLSFRBNBIQ":"Ryeoc/Ezo2Ezx7SFxLfPVInihF9JD4OOWCdHIPPM6iA"},"signatures":{"@example:localhost":{"ed25519:YLSFRBNBIQ":"CwezTZ+baEcIAzk8R50/EcyQmkPfonNfmcUwUZAyeEjoUu3Du7LnNXZBLo/8R/MiHJdkgzWPCH5JMJrk7HRSBg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"YMSRVAICJW":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"YMSRVAICJW","keys":{"curve25519:YMSRVAICJW":"lKLTp+UdBUCGFf0jXqBSgP37Gha5AAaeD8qFNWhqsG0","ed25519:YMSRVAICJW":"xpHICEPYA/PVxa8cS+oIBYh4t/qM9ku8Wkw0C82pC3k"},"signatures":{"@example:localhost":{"ed25519:YMSRVAICJW":"Gp3ZSAKwXzrh6PjMmCf0ybM9hDhz+x1362BmsFSf5lBYRH5bxtlMOI3gx/tLZf3CfvHIaJxisarqxJ8e37EMDA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"YPRSATMMOG":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"YPRSATMMOG","keys":{"curve25519:YPRSATMMOG":"OpKO0Xq3PxuY0Z3IW7J6KNC8I4rSGrVKevy0c+UA1lw","ed25519:YPRSATMMOG":"SygzI6aUOVk3Mlsv8AkXXuMBrSy8DGY3mE1h8EiJSS8"},"signatures":{"@example:localhost":{"ed25519:YPRSATMMOG":"wT/1ViM8nGLK5B1ZCwAcMJKxuz7IbzmiDFY1kEcM2tE3jWF6TeYHCK0DX7Q0m/A+CnG93hbMeM/hYwqdnunFBA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"YPSHAVNOAF":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"YPSHAVNOAF","keys":{"curve25519:YPSHAVNOAF":"+Qk4/VcW9+NeVdAbFbzve92qDjDVDFmvXS+IHquP7kw","ed25519:YPSHAVNOAF":"hFZdKDM5LxCobMyeYgpnr1zYMq/6dSFsj3ZKgqvqJDU"},"signatures":{"@example:localhost":{"ed25519:YPSHAVNOAF":"uVs8MXi/StKP3ph0MBdscC5m/KGzUga8hP1Fq5D/AjO2h0dYN7JkD3aMLW2BLY8oXYRwLqjFYskTuBy0E35nDw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ZCKUKLKSTF":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ZCKUKLKSTF","keys":{"curve25519:ZCKUKLKSTF":"V8iEgz8NLTnIldCc1Q8kpsFMjLb4m7MoejZPVImWtho","ed25519:ZCKUKLKSTF":"pHj6FKt6r4n4ZJMsg+U6BpwFrHC89exkqG9Hw1HY9zo"},"signatures":{"@example:localhost":{"ed25519:ZCKUKLKSTF":"Ybwd8NZKycejX1OGPwbfVlzwhk8NXHAQHqR7Kcv/VThA9qk+2u4DHT0JG2/w73n9aTKiF8aXERH30mc7RgIYCA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ZCOMPAXRXZ":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ZCOMPAXRXZ","keys":{"curve25519:ZCOMPAXRXZ":"jUCoJ8qJWDl5/epwrBA0kUVlYfjdLc884Ff3JVIfcD0","ed25519:ZCOMPAXRXZ":"671iVPUS8WdeO6axRxAkdAjOf17BVuweZSKsT2OZ0uM"},"signatures":{"@example:localhost":{"ed25519:ZCOMPAXRXZ":"SuIOcicRu8w9SSLG8jEEIE0iAEYB4xgdJuhWPyanX3dOnU7oROeMmo8BizVGfpOPlY0PVjzPJaGRUsWbbgM8Cw"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ZDHFMSACDV":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ZDHFMSACDV","keys":{"curve25519:ZDHFMSACDV":"ANF+BGAVDNG3rgcEjQ/T9Fkmh+AaLDMbaerjcE2XOBc","ed25519:ZDHFMSACDV":"MXJg3nvz6LOZIpCFXVa7FveKpzKOERN9FnOS0yUz8Qs"},"signatures":{"@example:localhost":{"ed25519:ZDHFMSACDV":"6fQPagLqT6f1A2OcmYDFfto/O0C0RoJ2B69Yu/8iy0ziTszGUn0tucEiLvuX1A44soudtP/vFiyu+cSfYhSRAA"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ZLSGHJACJW":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ZLSGHJACJW","keys":{"curve25519:ZLSGHJACJW":"5DaHF+/cIMjelFrC32JRrje6G6hXkQtKBCpDEKVhZko","ed25519:ZLSGHJACJW":"Hw0/tPeQ5Iw6JvYGcsODyf06t4m0tHu0tsFO/kehyJM"},"signatures":{"@example:localhost":{"ed25519:ZLSGHJACJW":"deBYjuNTAILYD+l7tIp8XcwHaTA2BwuOh9ITPsEtPTcgRlRc3XwLSiyOUSv1UlSu99WgpLvG1/kVezP/FLaPAQ"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}},"ZMKDSVIKPT":{"algorithms":["m.olm.v1.curve25519-aes-sha2","m.megolm.v1.aes-sha2"],"device_id":"ZMKDSVIKPT","keys":{"curve25519:ZMKDSVIKPT":"TXHMr/hwD2FyMUBVLRQ/nDYLSjvy2xCgtT3WrDcOfEs","ed25519:ZMKDSVIKPT":"+OzJMLGBkLsdgTzzJ/uBkQGBv+ZlDnLoKm0eLO6khA0"},"signatures":{"@example:localhost":{"ed25519:ZMKDSVIKPT":"4pHlr3/6daVdJuqJenoyH5sYo2ygT4V5JeEMEdonVwHuz0zDL1Vj0gTEO21gN9xmV2Wj3SRSTeoHfb+xZ8+HCg"}},"user_id":"@example:localhost","unsigned":{"device_display_name":"rust-sdk"}}}},"failures":{},"master_keys":{"@example:localhost":{"user_id":"@example:localhost","usage":["master"],"keys":{"ed25519:n2lpJGx0LiKnuNE1IucZP3QExrD4SeRP0veBHPe3XUU":"n2lpJGx0LiKnuNE1IucZP3QExrD4SeRP0veBHPe3XUU"},"signatures":{"@example:localhost":{"ed25519:TCSJXPWGVS":"+j9G3L41I1fe0++wwusTTQvbboYW0yDtRWUEujhwZz4MAltjLSfJvY0hxhnz+wHHmuEXvQDen39XOpr1p29sAg"}}}},"self_signing_keys":{"@example:localhost":{"user_id":"@example:localhost","usage":["self_signing"],"keys":{"ed25519:kQXOuy639Yt47mvNTdrIluoC6DMvfbZLYbxAmwiDyhI":"kQXOuy639Yt47mvNTdrIluoC6DMvfbZLYbxAmwiDyhI"},"signatures":{"@example:localhost":{"ed25519:n2lpJGx0LiKnuNE1IucZP3QExrD4SeRP0veBHPe3XUU":"q32ifix/qyRpvmegw2BEJklwoBCAJldDNkcX+fp+lBA4Rpyqtycxge6BA4hcJdxYsy3oV0IHRuugS8rJMMFyAA"}}}},"user_signing_keys":{"@example:localhost":{"user_id":"@example:localhost","usage":["user_signing"],"keys":{"ed25519:g4ED07Fnqf3GzVWNN1pZ0IFrPQVdqQf+PYoJNH4eE0s":"g4ED07Fnqf3GzVWNN1pZ0IFrPQVdqQf+PYoJNH4eE0s"},"signatures":{"@example:localhost":{"ed25519:n2lpJGx0LiKnuNE1IucZP3QExrD4SeRP0veBHPe3XUU":"nKQu8alQKDefNbZz9luYPcNj+Z+ouQSot4fU/A23ELl1xrI06QVBku/SmDx0sIW1ytso0Cqwy1a+3PzCa1XABg"}}}}}
Added file: benchmarks/benches/crypto_bench/keys_query_2000_members.json+40069 additions
@@ -0,0 +1,40069 @@
1+{
2+ "device_keys": {
3+ "@alice:hs1": {
4+ "ALDJLSKJD": {
5+ "algorithms": [
6+ "m.olm.v1.curve25519-aes-sha2",
7+ "m.megolm.v1.aes-sha2"
8+ ],
9+ "device_id": "ALDJLSKJD",
10+ "keys": {
11+ "curve25519:ALDJLSKJD": "Bvk2zCI2YihAiuiZBPoPYkS3+s8ZwqNVll4qKnI9TWw",
12+ "ed25519:ALDJLSKJD": "FrhkI5JUJmEWs6Io+U5S49SoSGw9nD47ubMD6VYEbYs"
13+ },
14+ "signatures": {
15+ "@alice:hs1": {
16+ "ed25519:ALDJLSKJD": "HFk9kfScxqUJaCQj39V38a491LCMPaVIyn/IKLKu8OWNWflzMqX70kOiN8VaYDhByv/Gbewnpw/RTm/RsB2SCg"
17+ }
18+ },
19+ "user_id": "@alice:hs1",
20+ "unsigned": {}
21+ },
22+ "UWWSVUZVWH": {
23+ "algorithms": [
24+ "m.olm.v1.curve25519-aes-sha2",
25+ "m.megolm.v1.aes-sha2"
26+ ],
27+ "device_id": "UWWSVUZVWH",
28+ "keys": {
29+ "curve25519:UWWSVUZVWH": "6osBROgsCSQxajzsqPA9ynYCVdAEaiOVB6wNgPl7RXE",
30+ "ed25519:UWWSVUZVWH": "cQ6bUAT64/5xi+Ux7ixKfDEBgtO0v/LnqjOqTuowsfA"
31+ },
32+ "signatures": {
33+ "@alice:hs1": {
34+ "ed25519:UWWSVUZVWH": "+snfEYv9xwFnL5iroIeLVgFhjafHiBgYwwQKGORFqJRqXLdqOiwJ/ckgVZjMD3ZAmUVpbUOHnvI0LCJk2HBBBA"
35+ }
36+ },
37+ "user_id": "@alice:hs1",
38+ "unsigned": {
39+ "device_display_name": "Weechat-Matrix-rs"
40+ }
41+ },
42+ "XQWLNMCYQZ": {
43+ "algorithms": [
44+ "m.olm.v1.curve25519-aes-sha2",
45+ "m.megolm.v1.aes-sha2"
46+ ],
47+ "device_id": "XQWLNMCYQZ",
48+ "keys": {
49+ "curve25519:XQWLNMCYQZ": "eIjT2EDiNARdfAh1/4/pRHhYioUvq+zmR5rVBWGk33E",
50+ "ed25519:XQWLNMCYQZ": "RHoVaLGhwPeda91cwyDmwcE9ezaqdX8CVDYaH+cnFoU"
51+ },
52+ "signatures": {
53+ "@alice:hs1": {
54+ "ed25519:XQWLNMCYQZ": "8EjiyhPHfzfRpX/yTUpc6YGfhIttjL5X/1qE2iduwnrkciLKMz17cSfb9WbgHdknQIDjj88XYYyfNaPxfjV1DA"
55+ }
56+ },
57+ "user_id": "@alice:hs1",
58+ "unsigned": {
59+ "device_display_name": "Weechat-Matrix-rs"
60+ }
61+ }
62+ },
63+ "@alice_1003:hs1": {
64+ "ALICEDEVICE1003": {
65+ "algorithms": [
66+ "m.olm.v1.curve25519-aes-sha2",
67+ "m.megolm.v1.aes-sha2"
68+ ],
69+ "device_id": "ALICEDEVICE1003",
70+ "keys": {
71+ "curve25519:ALICEDEVICE1003": "jmCyAwzZae3xip/iIOWtUwp73b8vQ3aXrAcAowcoPkY",
72+ "ed25519:ALICEDEVICE1003": "eLv6cTJMGVuZlRNnxMJft0KvSaL6nKJW4ETn6ZraL2I"
73+ },
74+ "signatures": {
75+ "@alice_1003:hs1": {
76+ "ed25519:ALICEDEVICE1003": "F+AULxqesJTkxcgdWnCKalIFKla2ohnufpSDVYYbjbCb0IoGKMUG/weRFQZxiMVI4G9a7EL2+uLTcpJd7rlBCg"
77+ }
78+ },
79+ "user_id": "@alice_1003:hs1",
80+ "unsigned": {}
81+ }
82+ },
83+ "@alice_1907:hs1": {
84+ "ALICEDEVICE1907": {
85+ "algorithms": [
86+ "m.olm.v1.curve25519-aes-sha2",
87+ "m.megolm.v1.aes-sha2"
88+ ],
89+ "device_id": "ALICEDEVICE1907",
90+ "keys": {
91+ "curve25519:ALICEDEVICE1907": "t/+KwdftUYRmeppPGj9gYizjVgcujGTqiBPD7rn5EHk",
92+ "ed25519:ALICEDEVICE1907": "487OSTxB7+h4xQPbhVsE/8RWvqznORcIX2Z44W0rSMY"
93+ },
94+ "signatures": {
95+ "@alice_1907:hs1": {
96+ "ed25519:ALICEDEVICE1907": "Efb8hwsiggUX5hcN8MRmPwx/p4uJAfGFsQGLs5DAPXm51uN/sYg3qjQNpDYrBik+akR6m2pAJzlrOuHIC0bOAw"
97+ }
98+ },
99+ "user_id": "@alice_1907:hs1",
100+ "unsigned": {}
101+ }
102+ },
103+ "@alice_1993:hs1": {
104+ "ALICEDEVICE1993": {
105+ "algorithms": [
106+ "m.olm.v1.curve25519-aes-sha2",
107+ "m.megolm.v1.aes-sha2"
108+ ],
109+ "device_id": "ALICEDEVICE1993",
110+ "keys": {
111+ "curve25519:ALICEDEVICE1993": "L38mXeoMt4cD1vmVpQTCuynd2ymcdMd0HsQ80DeGtxI",
112+ "ed25519:ALICEDEVICE1993": "wTiEjRWUfvdyoUAt0sH9q3FHY0mjfNdNeTu8Ft73+ko"
113+ },
114+ "signatures": {
115+ "@alice_1993:hs1": {
116+ "ed25519:ALICEDEVICE1993": "uIZx1u8lH3KHdrh9zS24VFlJOrgoNe8pvrWifq/0C0GAD337vOEmFiDpOnqiyEIrHKlFgDL/fvMt4OCSPMY/AQ"
117+ }
118+ },
119+ "user_id": "@alice_1993:hs1",
120+ "unsigned": {}
121+ }
122+ },
123+ "@alice_1994:hs1": {
124+ "ALICEDEVICE1994": {
125+ "algorithms": [
126+ "m.olm.v1.curve25519-aes-sha2",
127+ "m.megolm.v1.aes-sha2"
128+ ],
129+ "device_id": "ALICEDEVICE1994",
130+ "keys": {
131+ "curve25519:ALICEDEVICE1994": "l4HAN38VdY/2KJrm5Z4wHuoCaXm0oLq2HuZ1YZjtt3k",
132+ "ed25519:ALICEDEVICE1994": "LD3SwzaBmmoHt0myb9nwUAesorrL1MVWu8wEPL6uooE"
133+ },
134+ "signatures": {
135+ "@alice_1994:hs1": {
136+ "ed25519:ALICEDEVICE1994": "bY/C/J1q9EaW32u1xo6rGdvi63AjHLL22ZobO/wb8KhRALmg4LL1o0nX6QeJgY9k4rAEjjTF0qGwBwukZ7ITCw"
137+ }
138+ },
139+ "user_id": "@alice_1994:hs1",
140+ "unsigned": {}
141+ }
142+ },
143+ "@alice_1995:hs1": {
144+ "ALICEDEVICE1995": {
145+ "algorithms": [
146+ "m.olm.v1.curve25519-aes-sha2",
147+ "m.megolm.v1.aes-sha2"
148+ ],
149+ "device_id": "ALICEDEVICE1995",
150+ "keys": {
151+ "curve25519:ALICEDEVICE1995": "5OpKhFWuPPz/3YAF9Z7VDsCAN/tsWmWbEVsj/OaA30w",
152+ "ed25519:ALICEDEVICE1995": "97N4brNlusgbKHqEgNt0sn8GOmPymWt9n5X8Mi5UJ4A"
153+ },
154+ "signatures": {
155+ "@alice_1995:hs1": {
156+ "ed25519:ALICEDEVICE1995": "2hZnxH0eYTLvNfGCqcd5V4XJA+QdFKhIEDI+/zvcv4iptLUqlyfvC5pWElhkBh0miF/RfuyGtS7hjeSPDLiiCA"
157+ }
158+ },
159+ "user_id": "@alice_1995:hs1",
160+ "unsigned": {}
161+ }
162+ },
163+ "@alice_1996:hs1": {
164+ "ALICEDEVICE1996": {
165+ "algorithms": [
166+ "m.olm.v1.curve25519-aes-sha2",
167+ "m.megolm.v1.aes-sha2"
168+ ],
169+ "device_id": "ALICEDEVICE1996",
170+ "keys": {
171+ "curve25519:ALICEDEVICE1996": "nAIXPRfcs6UdnVkp8Svr3YSxE59G7fYlxT221GayiXI",
172+ "ed25519:ALICEDEVICE1996": "gXVKZJf5omUPep3LUljuSq9HJOtEjsqOOqUvDzgHzW8"
173+ },
174+ "signatures": {
175+ "@alice_1996:hs1": {
176+ "ed25519:ALICEDEVICE1996": "uJxPXZywJ+sB7zbH4QvS8QMxLsqpQLGjlxZFjLldXnE8R5sOQrX4wcp+1YBBgzz6ve2ZIObIKCYVyGLwH19TBw"
177+ }
178+ },
179+ "user_id": "@alice_1996:hs1",
180+ "unsigned": {}
181+ }
182+ },
183+ "@alice_1997:hs1": {
184+ "ALICEDEVICE1997": {
185+ "algorithms": [
186+ "m.olm.v1.curve25519-aes-sha2",
187+ "m.megolm.v1.aes-sha2"
188+ ],
189+ "device_id": "ALICEDEVICE1997",
190+ "keys": {
191+ "curve25519:ALICEDEVICE1997": "T2+2b/cjsSjsSDLfzAS9dLkzKTkxvSC5rMpIFOv0P3c",
192+ "ed25519:ALICEDEVICE1997": "Sm/NFId3no+9uWh5jIddYHGBnMQRgdKfkxVtxXBMbGk"
193+ },
194+ "signatures": {
195+ "@alice_1997:hs1": {
196+ "ed25519:ALICEDEVICE1997": "WjDNlTcCJGyNaCw+X690KIKyhLF4xGkJI0kTMhbjmfDqLFRcFruoac03I3BkQ2Bb57sX8SuXrnVytSjpAQYOBw"
197+ }
198+ },
199+ "user_id": "@alice_1997:hs1",
200+ "unsigned": {}
201+ }
202+ },
203+ "@alice_1998:hs1": {
204+ "ALICEDEVICE1998": {
205+ "algorithms": [
206+ "m.olm.v1.curve25519-aes-sha2",
207+ "m.megolm.v1.aes-sha2"
208+ ],
209+ "device_id": "ALICEDEVICE1998",
210+ "keys": {
211+ "curve25519:ALICEDEVICE1998": "qUBcL039rXtZhrejR3BjGMHxgM314HtZMKRKQseipUw",
212+ "ed25519:ALICEDEVICE1998": "4fZ6kuswUTWW3Lyu+LLEKBfHvD4g/vyZE/IJ6aAv2mc"
213+ },
214+ "signatures": {
215+ "@alice_1998:hs1": {
216+ "ed25519:ALICEDEVICE1998": "JDb5cp+Ms1B/oNoVjXfXk0F9WIgnhLLwX1YB8UdLTnAe7ufp49s+aIBY5ozFHk5mhhyNyIz13FLFELUvkaV0AA"
217+ }
218+ },
219+ "user_id": "@alice_1998:hs1",
220+ "unsigned": {}
221+ }
222+ },
223+ "@alice_1999:hs1": {
224+ "ALICEDEVICE1999": {
225+ "algorithms": [
226+ "m.olm.v1.curve25519-aes-sha2",
227+ "m.megolm.v1.aes-sha2"
228+ ],
229+ "device_id": "ALICEDEVICE1999",
230+ "keys": {
231+ "curve25519:ALICEDEVICE1999": "GQWm9Vc2F52V8jWIGPzaK7zuNmn0zFUt0CtXcA/hhSI",
232+ "ed25519:ALICEDEVICE1999": "kfp+7X8qjftcdX1RDXVefgxe4rlKlszgjrBpHZXXX9E"
233+ },
234+ "signatures": {
235+ "@alice_1999:hs1": {
236+ "ed25519:ALICEDEVICE1999": "EgrVPIF4H9yW0mJfjel73anAnTZXO+sFXnbmhE0N8qupPyi13O/hrACQrjlI5H36XMOEuylCkg70biPIaai4AA"
237+ }
238+ },
239+ "user_id": "@alice_1999:hs1",
240+ "unsigned": {}
241+ }
242+ },
243+ "@alice_382:hs1": {
244+ "ALICEDEVICE382": {
245+ "algorithms": [
246+ "m.olm.v1.curve25519-aes-sha2",
247+ "m.megolm.v1.aes-sha2"
248+ ],
249+ "device_id": "ALICEDEVICE382",
250+ "keys": {
251+ "curve25519:ALICEDEVICE382": "dQezXXFmJAi5khWAgCRITfgXOKAI5eruSRuzB2+LwBY",
252+ "ed25519:ALICEDEVICE382": "nuJIfUTdsRW/eNBtINVvCyJzns3LMehnPtCPpA0pBTw"
253+ },
254+ "signatures": {
255+ "@alice_382:hs1": {
256+ "ed25519:ALICEDEVICE382": "hmZ+uT0acfs0RLh6NXUm/q/W09oF1I2keAmJprtMKw2TS6LigXMYqzqBD0hhRKGfod9GAKeTxC1fucF/u/PICw"
257+ }
258+ },
259+ "user_id": "@alice_382:hs1",
260+ "unsigned": {}
261+ }
262+ },
263+ "@alice_401:hs1": {
264+ "ALICEDEVICE401": {
265+ "algorithms": [
266+ "m.olm.v1.curve25519-aes-sha2",
267+ "m.megolm.v1.aes-sha2"
268+ ],
269+ "device_id": "ALICEDEVICE401",
270+ "keys": {
271+ "curve25519:ALICEDEVICE401": "cwnvvGjjW4kq7ozfUL4cZutmUjy0gCMdJuX4UsRkfyA",
272+ "ed25519:ALICEDEVICE401": "p5c7iPklvR0QLevwDHdwJtl5pYRsGid/v0Qumer/uGI"
273+ },
274+ "signatures": {
275+ "@alice_401:hs1": {
276+ "ed25519:ALICEDEVICE401": "WSCn8IG0gTbaEADYxj6rTCO/SpZnjluPzyRuc5JM/MH1JnzJJmuaUSdONn0MQzuYdcA417l4yXMHGpFZfS1oDw"
277+ }
278+ },
279+ "user_id": "@alice_401:hs1",
280+ "unsigned": {}
281+ }
282+ },
283+ "@alice_53:hs1": {
284+ "ALICEDEVICE53": {
285+ "algorithms": [
286+ "m.olm.v1.curve25519-aes-sha2",
287+ "m.megolm.v1.aes-sha2"
288+ ],
289+ "device_id": "ALICEDEVICE53",
290+ "keys": {
291+ "curve25519:ALICEDEVICE53": "5JqB4M0aVJPeB8wAw4a5IK1QLhR9tSaquhgyQny4LFg",
292+ "ed25519:ALICEDEVICE53": "1MTqtrjiEhw83r7FO77g7eRKtHcnV7KaQhh7JqMUdHM"
293+ },
294+ "signatures": {
295+ "@alice_53:hs1": {
296+ "ed25519:ALICEDEVICE53": "0LIWO1qT+GjBcxEAimVbs3FgSkOd8ewfViue6th31Gum39D8ThiVYprgI1zKbkQPbvYIVsm79ZKPCv30erxUDg"
297+ }
298+ },
299+ "user_id": "@alice_53:hs1",
300+ "unsigned": {}
301+ }
302+ },
303+ "@alice_1000:hs1": {
304+ "ALICEDEVICE1000": {
305+ "algorithms": [
306+ "m.olm.v1.curve25519-aes-sha2",
307+ "m.megolm.v1.aes-sha2"
308+ ],
309+ "device_id": "ALICEDEVICE1000",
310+ "keys": {
311+ "curve25519:ALICEDEVICE1000": "Wnc3hFKK2HHviQD7ylyAiCzU1sgVftBcQEfPRvLsPzU",
312+ "ed25519:ALICEDEVICE1000": "Iz8ecmIVjDpyZyAfZyUrm7NTXFv7ZMB/9tDH39yFAqQ"
313+ },
314+ "signatures": {
315+ "@alice_1000:hs1": {
316+ "ed25519:ALICEDEVICE1000": "cLyv2ovqmYSns1soNAXw9d20w50avWejrg3AdkGMuDuWoH1lKZk5UpKa47yJAVgvjlqonmIgoKb0UavXnTWXCA"
317+ }
318+ },
319+ "user_id": "@alice_1000:hs1",
320+ "unsigned": {}
321+ }
322+ },
323+ "@alice_1014:hs1": {
324+ "ALICEDEVICE1014": {
325+ "algorithms": [
326+ "m.olm.v1.curve25519-aes-sha2",
327+ "m.megolm.v1.aes-sha2"
328+ ],
329+ "device_id": "ALICEDEVICE1014",
330+ "keys": {
331+ "curve25519:ALICEDEVICE1014": "tZgqLkmDd48ruyjsyHjlbfiPE1DAq1Etd2am4MQqvzk",
332+ "ed25519:ALICEDEVICE1014": "apJmccZk/luI2ONWSIDJhKwHjO0sfZrfhzJbhnnI8q8"
333+ },
334+ "signatures": {
335+ "@alice_1014:hs1": {
336+ "ed25519:ALICEDEVICE1014": "Kyn1mRRaVQESX+nyJfFKttthKhR1fUC6hd6/u8CtoLu5MVMdWTNolypqN8ruprBDLGvZABKwjIYQohmVZsB2Cg"
337+ }
338+ },
339+ "user_id": "@alice_1014:hs1",
340+ "unsigned": {}
341+ }
342+ },
343+ "@alice_1015:hs1": {
344+ "ALICEDEVICE1015": {
345+ "algorithms": [
346+ "m.olm.v1.curve25519-aes-sha2",
347+ "m.megolm.v1.aes-sha2"
348+ ],
349+ "device_id": "ALICEDEVICE1015",
350+ "keys": {
351+ "curve25519:ALICEDEVICE1015": "jmoNh4Og0vXnPc5T3ag3tpBiIEMEOTvJs1agebXW2xY",
352+ "ed25519:ALICEDEVICE1015": "8z6xmS3ryuLyWsN8dIvc4AgOINr/9fgknZcmglzr3ic"
353+ },
354+ "signatures": {
355+ "@alice_1015:hs1": {
356+ "ed25519:ALICEDEVICE1015": "uV+6NLhTv1FSw8e/YWNmgsSsvHyf2JUgI2ZuR8hkgXxfuydHLMDM/xxqLrD1fQAblcPq0RxnUAxrKL8MOxneCQ"
357+ }
358+ },
359+ "user_id": "@alice_1015:hs1",
360+ "unsigned": {}
361+ }
362+ },
363+ "@alice_1018:hs1": {
364+ "ALICEDEVICE1018": {
365+ "algorithms": [
366+ "m.olm.v1.curve25519-aes-sha2",
367+ "m.megolm.v1.aes-sha2"
368+ ],
369+ "device_id": "ALICEDEVICE1018",
370+ "keys": {
371+ "curve25519:ALICEDEVICE1018": "HJZoCGGADDuJemzu1tiYg1hMeYuCVgSMlkjLLP0wC3E",
372+ "ed25519:ALICEDEVICE1018": "MwwwUwT2ZXbnSrukk0C8GGCsFWFPj0P5OvGf6JlCBKc"
373+ },
374+ "signatures": {
375+ "@alice_1018:hs1": {
376+ "ed25519:ALICEDEVICE1018": "Fm95CC9mAK/VkOtpLp142nSKNb+DkhuGmKqot6Dqoel6YapFLTpHU7stShm3b0TduzPLcabvxVEJ2rjZf1hzBQ"
377+ }
378+ },
379+ "user_id": "@alice_1018:hs1",
380+ "unsigned": {}
381+ }
382+ },
383+ "@alice_1024:hs1": {
384+ "ALICEDEVICE1024": {
385+ "algorithms": [
386+ "m.olm.v1.curve25519-aes-sha2",
387+ "m.megolm.v1.aes-sha2"
388+ ],
389+ "device_id": "ALICEDEVICE1024",
390+ "keys": {
391+ "curve25519:ALICEDEVICE1024": "PrZ6DSyRI0LpQwsH4YanET1J8cQYcxjd/k8wcV/QEnk",
392+ "ed25519:ALICEDEVICE1024": "YeNWgrjzvUzBzCNGWS2zp4Xbn4QKxc4J9T1uGA5t9B8"
393+ },
394+ "signatures": {
395+ "@alice_1024:hs1": {
396+ "ed25519:ALICEDEVICE1024": "fIyjnqEaXZyCl2VFHuTn6xQ8VKRGjL1bp6LD0T6G4o1erOyj11qfnc1Ho7zaBRurAYVt+5QUE7Q6WOFipJhEDg"
397+ }
398+ },
399+ "user_id": "@alice_1024:hs1",
400+ "unsigned": {}
401+ }
402+ },
403+ "@alice_1029:hs1": {
404+ "ALICEDEVICE1029": {
405+ "algorithms": [
406+ "m.olm.v1.curve25519-aes-sha2",
407+ "m.megolm.v1.aes-sha2"
408+ ],
409+ "device_id": "ALICEDEVICE1029",
410+ "keys": {
411+ "curve25519:ALICEDEVICE1029": "hqyNdhjxWrpjWrb/mTLTugG4IcnTuloALt9udO+/RCo",
412+ "ed25519:ALICEDEVICE1029": "hfjNSuIIBaQrU30H8zQz+56J00Bq5v8YGhqtSHVzWQE"
413+ },
414+ "signatures": {
415+ "@alice_1029:hs1": {
416+ "ed25519:ALICEDEVICE1029": "xaaDiHh7zjUWxUfmC0DIqWWB3Nf66U7+8navWwwynmz2lh1gnzYstFkph435SZCUimpPq7Bmgishi9CM9dmqDw"
417+ }
418+ },
419+ "user_id": "@alice_1029:hs1",
420+ "unsigned": {}
421+ }
422+ },
423+ "@alice_1042:hs1": {
424+ "ALICEDEVICE1042": {
425+ "algorithms": [
426+ "m.olm.v1.curve25519-aes-sha2",
427+ "m.megolm.v1.aes-sha2"
428+ ],
429+ "device_id": "ALICEDEVICE1042",
430+ "keys": {
431+ "curve25519:ALICEDEVICE1042": "PPFci2ZOzuuDsO85g7mwGXiCbAW/yKXRa3JTKu6O5WU",
432+ "ed25519:ALICEDEVICE1042": "qzw80RKu9JxrdHz/X0bq4Q3hXMjKg5PBkmYH/IKJItg"
433+ },
434+ "signatures": {
435+ "@alice_1042:hs1": {
436+ "ed25519:ALICEDEVICE1042": "aLna3pPoFbguqe9wvvsq1DRzwgqW0PpBc3/r29DqqX3OyVavx9xhY4/DSrP/kxom2ubXImLcTh1GY66Z7M/IDw"
437+ }
438+ },
439+ "user_id": "@alice_1042:hs1",
440+ "unsigned": {}
441+ }
442+ },
443+ "@alice_1063:hs1": {
444+ "ALICEDEVICE1063": {
445+ "algorithms": [
446+ "m.olm.v1.curve25519-aes-sha2",
447+ "m.megolm.v1.aes-sha2"
448+ ],
449+ "device_id": "ALICEDEVICE1063",
450+ "keys": {
451+ "curve25519:ALICEDEVICE1063": "5T3cUIX9S97bAUi5jPuzHaK4+71Z51cYWdc7C8m4I0E",
452+ "ed25519:ALICEDEVICE1063": "G5OcoEPJf2XF9x/WIlv/Fsg/6qTCGvTHWLAFXST7A9M"
453+ },
454+ "signatures": {
455+ "@alice_1063:hs1": {
456+ "ed25519:ALICEDEVICE1063": "3KeASBrRKOOUm7Rp1frll0zftHWrgGOc4MHAxpBPaO4qvpgusu1NIy1gauygMcbVdGVddkyIIuh2jzjjVo1EAQ"
457+ }
458+ },
459+ "user_id": "@alice_1063:hs1",
460+ "unsigned": {}
461+ }
462+ },
463+ "@alice_1068:hs1": {
464+ "ALICEDEVICE1068": {
465+ "algorithms": [
466+ "m.olm.v1.curve25519-aes-sha2",
467+ "m.megolm.v1.aes-sha2"
468+ ],
469+ "device_id": "ALICEDEVICE1068",
470+ "keys": {
471+ "curve25519:ALICEDEVICE1068": "rmmybQ/hIkat71qY8Jy3tBmCUrMuuMBbITKF/WPvylk",
472+ "ed25519:ALICEDEVICE1068": "+Mqds6TDruZUzuM/m+EggZyI4NQwMuA+ZociTxUzngM"
473+ },
474+ "signatures": {
475+ "@alice_1068:hs1": {
476+ "ed25519:ALICEDEVICE1068": "CEu4692Vtk0ha1GlP8nh7zeGK8Etob8iqo+dgiX3NqyzcsuDFJiJ5pjAQka6hmEs6u2cN4+sxou+1y87IthLAA"
477+ }
478+ },
479+ "user_id": "@alice_1068:hs1",
480+ "unsigned": {}
481+ }
482+ },
483+ "@alice_1069:hs1": {
484+ "ALICEDEVICE1069": {
485+ "algorithms": [
486+ "m.olm.v1.curve25519-aes-sha2",
487+ "m.megolm.v1.aes-sha2"
488+ ],
489+ "device_id": "ALICEDEVICE1069",
490+ "keys": {
491+ "curve25519:ALICEDEVICE1069": "ga8HdIygAI3/bo8G/czjzAT9AFY8ytE+mTeMJeeURAw",
492+ "ed25519:ALICEDEVICE1069": "FhYiFiRstJd2pNLiWCG9Y1zaw5dUU5MzkO+qGBuuCGI"
493+ },
494+ "signatures": {
495+ "@alice_1069:hs1": {
496+ "ed25519:ALICEDEVICE1069": "fG3WuPukmaVakszbRBRLH5pCtElsNBNXKK8hUcmonyffMwzLp0imp0ILmoHsAexAf5cFvLRrnSFFTg8SXn3cCA"
497+ }
498+ },
499+ "user_id": "@alice_1069:hs1",
500+ "unsigned": {}
501+ }
502+ },
503+ "@alice_1070:hs1": {
504+ "ALICEDEVICE1070": {
505+ "algorithms": [
506+ "m.olm.v1.curve25519-aes-sha2",
507+ "m.megolm.v1.aes-sha2"
508+ ],
509+ "device_id": "ALICEDEVICE1070",
510+ "keys": {
511+ "curve25519:ALICEDEVICE1070": "9YCDjcN3Hisb7A8BDJ5/JQK7TLhwfP/yTSHSrXMKFF0",
512+ "ed25519:ALICEDEVICE1070": "Umb81ly1BAipnPll2zljMs16N0FSZVDMT714fw/O5VY"
513+ },
514+ "signatures": {
515+ "@alice_1070:hs1": {
516+ "ed25519:ALICEDEVICE1070": "N8AMJeBLLiDJ2niSONH3XZHZ+MuLclUngSSn8xxU6UdVqxpQXzqZpfp3qXz+zFiJl85KrYWCewRyEFz+BmF5Bg"
517+ }
518+ },
519+ "user_id": "@alice_1070:hs1",
520+ "unsigned": {}
521+ }
522+ },
523+ "@alice_1074:hs1": {
524+ "ALICEDEVICE1074": {
525+ "algorithms": [
526+ "m.olm.v1.curve25519-aes-sha2",
527+ "m.megolm.v1.aes-sha2"
528+ ],
529+ "device_id": "ALICEDEVICE1074",
530+ "keys": {
531+ "curve25519:ALICEDEVICE1074": "kkkcXLcYnPkPuCitO+020av77YIkAhun6mzx+gcUtU4",
532+ "ed25519:ALICEDEVICE1074": "tFA0EdQyLbfE4XPZiJkhzlRBS4MilOyKpix4qWjFqtA"
533+ },
534+ "signatures": {
535+ "@alice_1074:hs1": {
536+ "ed25519:ALICEDEVICE1074": "1n6wacUV60eRLjQeo/gjAi6LSg5PrcrOiF9ytwPh8hybHmxy+HqNkmqSMolovNN/jA7YZBjyujNd3yi4MsgrCA"
537+ }
538+ },
539+ "user_id": "@alice_1074:hs1",
540+ "unsigned": {}
541+ }
542+ },
543+ "@alice_1075:hs1": {
544+ "ALICEDEVICE1075": {
545+ "algorithms": [
546+ "m.olm.v1.curve25519-aes-sha2",
547+ "m.megolm.v1.aes-sha2"
548+ ],
549+ "device_id": "ALICEDEVICE1075",
550+ "keys": {
551+ "curve25519:ALICEDEVICE1075": "GzVun1UKV3SkxTGstQq7JeM8TfAWHR5AZ+cJTlry+Qc",
552+ "ed25519:ALICEDEVICE1075": "rZQ9+08rcdwcOTlZOvqsKexi/Yik0gsvkSG06+oqws8"
553+ },
554+ "signatures": {
555+ "@alice_1075:hs1": {
556+ "ed25519:ALICEDEVICE1075": "yzKhVWkBJ3mY8JQy8T8xzMl98e3bpINqnmCmxtdLJtuVNnvgFURcSR9AC+NZ8TwCS1YMYmC6nQbjhAkKtfifBA"
557+ }
558+ },
559+ "user_id": "@alice_1075:hs1",
560+ "unsigned": {}
561+ }
562+ },
563+ "@alice_1077:hs1": {
564+ "ALICEDEVICE1077": {
565+ "algorithms": [
566+ "m.olm.v1.curve25519-aes-sha2",
567+ "m.megolm.v1.aes-sha2"
568+ ],
569+ "device_id": "ALICEDEVICE1077",
570+ "keys": {
571+ "curve25519:ALICEDEVICE1077": "s0wbWTzgH7v4GUjkm7NpiU9bQziQMTMtQjRk8U4lFWo",
572+ "ed25519:ALICEDEVICE1077": "g8YJctaUz/OMgNBfqyHbVMqvaLDHFl6erpVPT8c5Zeo"
573+ },
574+ "signatures": {
575+ "@alice_1077:hs1": {
576+ "ed25519:ALICEDEVICE1077": "8aAsDf2hJKc17VsNVml+cEhSfVwWDeWYv6us1P6IuCQUljTpZCCUl3bMQC/TwFywOGIFgJJmimXkTRLh/uVeCA"
577+ }
578+ },
579+ "user_id": "@alice_1077:hs1",
580+ "unsigned": {}
581+ }
582+ },
583+ "@alice_1079:hs1": {
584+ "ALICEDEVICE1079": {
585+ "algorithms": [
586+ "m.olm.v1.curve25519-aes-sha2",
587+ "m.megolm.v1.aes-sha2"
588+ ],
589+ "device_id": "ALICEDEVICE1079",
590+ "keys": {
591+ "curve25519:ALICEDEVICE1079": "pNEkJsBl9YQSEJ2lKYtvdNvR5ejzYXjg8+/9HvdDnkE",
592+ "ed25519:ALICEDEVICE1079": "GWArQf2wJF0vPBuyJQvzAuQelVpzCbMHXvDVO5Cp6Zg"
593+ },
594+ "signatures": {
595+ "@alice_1079:hs1": {
596+ "ed25519:ALICEDEVICE1079": "Z9iUwD0RKNz1lnuXucKmXjIrHiZXcuYxG64s/aQpporvT/5NWsqwUeV2n0/hEwBHcWW1wyGtsEz2ipAWGYb6CA"
597+ }
598+ },
599+ "user_id": "@alice_1079:hs1",
600+ "unsigned": {}
601+ }
602+ },
603+ "@alice_1083:hs1": {
604+ "ALICEDEVICE1083": {
605+ "algorithms": [
606+ "m.olm.v1.curve25519-aes-sha2",
607+ "m.megolm.v1.aes-sha2"
608+ ],
609+ "device_id": "ALICEDEVICE1083",
610+ "keys": {
611+ "curve25519:ALICEDEVICE1083": "5vhhSfPdTf03SHszhEog4CdLbPI03V6/TI2G2p3FD1U",
612+ "ed25519:ALICEDEVICE1083": "FtF3rtvMEQMtoTt78TRJocPmwLcRaGc/ujjU3yHJbGo"
613+ },
614+ "signatures": {
615+ "@alice_1083:hs1": {
616+ "ed25519:ALICEDEVICE1083": "mF4DDlx1w9BEOghuKCALGgIj8oY9l2pLaDBNEnKHEEm33yC+/wfDWOKK1nBjPCzogZdNr1P/XAeiUaTrQHjxDQ"
617+ }
618+ },
619+ "user_id": "@alice_1083:hs1",
620+ "unsigned": {}
621+ }
622+ },
623+ "@alice_1092:hs1": {
624+ "ALICEDEVICE1092": {
625+ "algorithms": [
626+ "m.olm.v1.curve25519-aes-sha2",
627+ "m.megolm.v1.aes-sha2"
628+ ],
629+ "device_id": "ALICEDEVICE1092",
630+ "keys": {
631+ "curve25519:ALICEDEVICE1092": "YyrWGbHn5DJPfBmlEj94frmIklqc2gAmkBaxENX81hk",
632+ "ed25519:ALICEDEVICE1092": "vkP49lX1NP/zXunSqUyQyT+pOyxBOHRhsvrbd8DAVvM"
633+ },
634+ "signatures": {
635+ "@alice_1092:hs1": {
636+ "ed25519:ALICEDEVICE1092": "2x08Ty2/+5zeRrh1FEU6AN9sITtnE8c9B27CnM5gtmYn1cvL9pqOmB/c3ENhVJBMgxa230UN3OuKC39J5x5aBQ"
637+ }
638+ },
639+ "user_id": "@alice_1092:hs1",
640+ "unsigned": {}
641+ }
642+ },
643+ "@alice_1095:hs1": {
644+ "ALICEDEVICE1095": {
645+ "algorithms": [
646+ "m.olm.v1.curve25519-aes-sha2",
647+ "m.megolm.v1.aes-sha2"
648+ ],
649+ "device_id": "ALICEDEVICE1095",
650+ "keys": {
651+ "curve25519:ALICEDEVICE1095": "K6Vy4nbM0X/fLhPjAz1/1xzslc702S65IO/Si/bv/m8",
652+ "ed25519:ALICEDEVICE1095": "qq0tSPlDF4Wo7ByjJxXcQsQrtjiyn35lSkjD3UhAAY8"
653+ },
654+ "signatures": {
655+ "@alice_1095:hs1": {
656+ "ed25519:ALICEDEVICE1095": "8PRss+ySAzz+p+Aju25Bjnllp2isErFNJi3NQctT8CWpsIW7IhIrefhuRGX2XHAUpTw3tu9tFYX7H8zjeMVhAw"
657+ }
658+ },
659+ "user_id": "@alice_1095:hs1",
660+ "unsigned": {}
661+ }
662+ },
663+ "@alice_1097:hs1": {
664+ "ALICEDEVICE1097": {
665+ "algorithms": [
666+ "m.olm.v1.curve25519-aes-sha2",
667+ "m.megolm.v1.aes-sha2"
668+ ],
669+ "device_id": "ALICEDEVICE1097",
670+ "keys": {
671+ "curve25519:ALICEDEVICE1097": "3TiChwhaqdP76EDSLXnbBUkSIUyDvLkuWdl/sl97K2E",
672+ "ed25519:ALICEDEVICE1097": "TsvPLugtLMFRs6ewiPTUh5vbjO18f0qe/CW94jv2+0M"
673+ },
674+ "signatures": {
675+ "@alice_1097:hs1": {
676+ "ed25519:ALICEDEVICE1097": "SawPfMaFEWkKenRK5DSmUnqggaN8pg+CBqi4fQn2P0p8oV3aID0v7Aim5H3uDKFLNipuvj9l40le3nueKRthBA"
677+ }
678+ },
679+ "user_id": "@alice_1097:hs1",
680+ "unsigned": {}
681+ }
682+ },
683+ "@alice_1105:hs1": {
684+ "ALICEDEVICE1105": {
685+ "algorithms": [
686+ "m.olm.v1.curve25519-aes-sha2",
687+ "m.megolm.v1.aes-sha2"
688+ ],
689+ "device_id": "ALICEDEVICE1105",
690+ "keys": {
691+ "curve25519:ALICEDEVICE1105": "+zrberU3Ennb0PGDxfgX5R5GI+J0PpUfvEYow0t3KnQ",
692+ "ed25519:ALICEDEVICE1105": "y/t7G8pzlzBUHjhxoSVxdM5qPmjgwPLBib2hrC+6sho"
693+ },
694+ "signatures": {
695+ "@alice_1105:hs1": {
696+ "ed25519:ALICEDEVICE1105": "ANr4qi8YemWcsjhad0YKz21m4Ex9MtLJt6VgkBL7RK2XcXEnHttRnhm5n2X+mC6ltvo3lw5Cbbvtnhjlv3BLBg"
697+ }
698+ },
699+ "user_id": "@alice_1105:hs1",
700+ "unsigned": {}
701+ }
702+ },
703+ "@alice_1106:hs1": {
704+ "ALICEDEVICE1106": {
705+ "algorithms": [
706+ "m.olm.v1.curve25519-aes-sha2",
707+ "m.megolm.v1.aes-sha2"
708+ ],
709+ "device_id": "ALICEDEVICE1106",
710+ "keys": {
711+ "curve25519:ALICEDEVICE1106": "SL4HfvbTsDwNCiEyqbr48N3zbyAq0BpO2XINVWgL4RE",
712+ "ed25519:ALICEDEVICE1106": "QvLpwIod3L5fYiRZFEDorDr7+yAIQiLxz+PfMD1VCjE"
713+ },
714+ "signatures": {
715+ "@alice_1106:hs1": {
716+ "ed25519:ALICEDEVICE1106": "lmFYkPrZHUVHh+yeNxdjYpZXsj9mHO27+Kz3BwKMcjm+CzMw9XkEDE7UMLZnSql2VZcXTj1gaOlCFFH6TDI9CQ"
717+ }
718+ },
719+ "user_id": "@alice_1106:hs1",
720+ "unsigned": {}
721+ }
722+ },
723+ "@alice_1131:hs1": {
724+ "ALICEDEVICE1131": {
725+ "algorithms": [
726+ "m.olm.v1.curve25519-aes-sha2",
727+ "m.megolm.v1.aes-sha2"
728+ ],
729+ "device_id": "ALICEDEVICE1131",
730+ "keys": {
731+ "curve25519:ALICEDEVICE1131": "XPVB+zpeXL3eSWVlBVEdH9XJQFCmw+Bl5hLxMKmJLWc",
732+ "ed25519:ALICEDEVICE1131": "p/kjYwgPnv5u3qnTaEPCQooaUzdsgCVG92/3l+uNOTU"
733+ },
734+ "signatures": {
735+ "@alice_1131:hs1": {
736+ "ed25519:ALICEDEVICE1131": "ZWD7+6m95LhoNnA0wGeyYJSTZWiuMHqocL+xb2TmlhWGB2t8gC8nFnF1PXbBCOyDzsBePhRmVlvgVF87bvkABQ"
737+ }
738+ },
739+ "user_id": "@alice_1131:hs1",
740+ "unsigned": {}
741+ }
742+ },
743+ "@alice_1139:hs1": {
744+ "ALICEDEVICE1139": {
745+ "algorithms": [
746+ "m.olm.v1.curve25519-aes-sha2",
747+ "m.megolm.v1.aes-sha2"
748+ ],
749+ "device_id": "ALICEDEVICE1139",
750+ "keys": {
751+ "curve25519:ALICEDEVICE1139": "IKMYwy3oq5uD4MzSJFN1r8E5vhKxAEjbXn/OGeOaiyo",
752+ "ed25519:ALICEDEVICE1139": "qq5ljvmxn6agaUrRonGOZ67iqOy9lzDyW6UvfJTGCHM"
753+ },
754+ "signatures": {
755+ "@alice_1139:hs1": {
756+ "ed25519:ALICEDEVICE1139": "SfrkawHq4Pe5i+v5InYq0h9EQnZwPZ0GR73vElf4lkQZYGQRSpiTV3KM5fgtz+uH2o0OIdRLJ6KqwnANhO0hBA"
757+ }
758+ },
759+ "user_id": "@alice_1139:hs1",
760+ "unsigned": {}
761+ }
762+ },
763+ "@alice_1142:hs1": {
764+ "ALICEDEVICE1142": {
765+ "algorithms": [
766+ "m.olm.v1.curve25519-aes-sha2",
767+ "m.megolm.v1.aes-sha2"
768+ ],
769+ "device_id": "ALICEDEVICE1142",
770+ "keys": {
771+ "curve25519:ALICEDEVICE1142": "QIZ2nPfVMY1VLOjPvYgSBf5esHQjUtvLdPmX9YWcdTs",
772+ "ed25519:ALICEDEVICE1142": "EOf43/Ph2N6JCFPsaVATwBLWK1zrHPI+zg7r5tP9FhE"
773+ },
774+ "signatures": {
775+ "@alice_1142:hs1": {
776+ "ed25519:ALICEDEVICE1142": "zN7altc5DRvgE87eeFwosHIQmRdmSAAowFzpIZUeVAMERlNzX3ngx0+tQHFFSlnxwS0nFPXnb8iP65nYMmwcCg"
777+ }
778+ },
779+ "user_id": "@alice_1142:hs1",
780+ "unsigned": {}
781+ }
782+ },
783+ "@alice_114:hs1": {
784+ "ALICEDEVICE114": {
785+ "algorithms": [
786+ "m.olm.v1.curve25519-aes-sha2",
787+ "m.megolm.v1.aes-sha2"
788+ ],
789+ "device_id": "ALICEDEVICE114",
790+ "keys": {
791+ "curve25519:ALICEDEVICE114": "pqV6NGx3kJEoVj8Y8QVwkUvM4i9ldK7G91n9RUSph1o",
792+ "ed25519:ALICEDEVICE114": "79205ygfqbMgg/yg3D1OWEqQyTFEbYz6xS1L1J5PTO0"
793+ },
794+ "signatures": {
795+ "@alice_114:hs1": {
796+ "ed25519:ALICEDEVICE114": "YU0gkuKp4d73akxjfuIJ0jH6CCmB/vt/YTDoFDi7nLvKnQ71KHWUosH1qbI3VKCKoVKebLpC8qQG1Epm19MxCQ"
797+ }
798+ },
799+ "user_id": "@alice_114:hs1",
800+ "unsigned": {}
801+ }
802+ },
803+ "@alice_1150:hs1": {
804+ "ALICEDEVICE1150": {
805+ "algorithms": [
806+ "m.olm.v1.curve25519-aes-sha2",
807+ "m.megolm.v1.aes-sha2"
808+ ],
809+ "device_id": "ALICEDEVICE1150",
810+ "keys": {
811+ "curve25519:ALICEDEVICE1150": "31fn3MWF0SGMrhVBjsBW24hGd47dzoDohGqVJeBYLTQ",
812+ "ed25519:ALICEDEVICE1150": "f1km7a/zEUIDOUo1MULULo7uJzKSaT7SQs+TX0RcrOw"
813+ },
814+ "signatures": {
815+ "@alice_1150:hs1": {
816+ "ed25519:ALICEDEVICE1150": "3kEAZhGV4k6l46rP2Ps1sBSUlrRd0LKesoKjpMEb8ajYtEQHYqd3GpGFxRCCXg6Gq8ZDzvclAdxfyAajQImhAg"
817+ }
818+ },
819+ "user_id": "@alice_1150:hs1",
820+ "unsigned": {}
821+ }
822+ },
823+ "@alice_1162:hs1": {
824+ "ALICEDEVICE1162": {
825+ "algorithms": [
826+ "m.olm.v1.curve25519-aes-sha2",
827+ "m.megolm.v1.aes-sha2"
828+ ],
829+ "device_id": "ALICEDEVICE1162",
830+ "keys": {
831+ "curve25519:ALICEDEVICE1162": "9KpsK4S+c7X1806Eyo/J4Oc0lNY0bqv8mwCkTaEIGWQ",
832+ "ed25519:ALICEDEVICE1162": "JmeDoofpfDc/h8Jfs/x1/hT3UynnZXsh2xKOQCyuIoA"
833+ },
834+ "signatures": {
835+ "@alice_1162:hs1": {
836+ "ed25519:ALICEDEVICE1162": "T0GK4FD4RiSNJqKdMbBTNwaFXZuQQDKsys4QwWoHer4Ogt21oIDTbRYYwmR4IIZly5TzahssN0BS2bnreZpTBQ"
837+ }
838+ },
839+ "user_id": "@alice_1162:hs1",
840+ "unsigned": {}
841+ }
842+ },
843+ "@alice_116:hs1": {
844+ "ALICEDEVICE116": {
845+ "algorithms": [
846+ "m.olm.v1.curve25519-aes-sha2",
847+ "m.megolm.v1.aes-sha2"
848+ ],
849+ "device_id": "ALICEDEVICE116",
850+ "keys": {
851+ "curve25519:ALICEDEVICE116": "9OaNj6Y793IxSM8QVx+wSM7rRxcSkCnE1F9vYC0vyDQ",
852+ "ed25519:ALICEDEVICE116": "+IhtwgosueMx7rKNLJpX+/esqZRHPXI73MarVgnqXDA"
853+ },
854+ "signatures": {
855+ "@alice_116:hs1": {
856+ "ed25519:ALICEDEVICE116": "QalQ+aZUugCLMsy4pchXKT5M3dG5ymQYUpySI9fUJ+atvgDIiAVAnmMI5FQxbQ6Jw99WOP6srrkbyPomjP33Dg"
857+ }
858+ },
859+ "user_id": "@alice_116:hs1",
860+ "unsigned": {}
861+ }
862+ },
863+ "@alice_1170:hs1": {
864+ "ALICEDEVICE1170": {
865+ "algorithms": [
866+ "m.olm.v1.curve25519-aes-sha2",
867+ "m.megolm.v1.aes-sha2"
868+ ],
869+ "device_id": "ALICEDEVICE1170",
870+ "keys": {
871+ "curve25519:ALICEDEVICE1170": "hnMltgB3h6jN1Ri/9rxyodLc+hGdjTH/0Endf3N+Cgw",
872+ "ed25519:ALICEDEVICE1170": "FZ9lRq0QCGWbRdkcF8pcIM26ak2AQX90hR3K+Y6mtmw"
873+ },
874+ "signatures": {
875+ "@alice_1170:hs1": {
876+ "ed25519:ALICEDEVICE1170": "OiWx8fChadiEneR3+8TnCXBAaQsLSOz4v4KKRU7uaq2paoOY1ZrbYeKOPK7enOG32yUwYu+edjdulRJU3IpWBw"
877+ }
878+ },
879+ "user_id": "@alice_1170:hs1",
880+ "unsigned": {}
881+ }
882+ },
883+ "@alice_1180:hs1": {
884+ "ALICEDEVICE1180": {
885+ "algorithms": [
886+ "m.olm.v1.curve25519-aes-sha2",
887+ "m.megolm.v1.aes-sha2"
888+ ],
889+ "device_id": "ALICEDEVICE1180",
890+ "keys": {
891+ "curve25519:ALICEDEVICE1180": "1dRczpVECVDuyKfcNgN6psjYEcP1jQDpCoGa0aFbJSk",
892+ "ed25519:ALICEDEVICE1180": "CnLvDWhy9/PkaLmvxp/phis72o+U/JWf9O51OmRM8TQ"
893+ },
894+ "signatures": {
895+ "@alice_1180:hs1": {
896+ "ed25519:ALICEDEVICE1180": "7McpDmcxfGyVRI3SxCx6S633Fkfg8x9OGH9bs6/ZGLEoSCRGrFiCiDflsCFSxgUOl0OvxLIwT1/rOWX4FYrGDQ"
897+ }
898+ },
899+ "user_id": "@alice_1180:hs1",
900+ "unsigned": {}
901+ }
902+ },
903+ "@alice_1183:hs1": {
904+ "ALICEDEVICE1183": {
905+ "algorithms": [
906+ "m.olm.v1.curve25519-aes-sha2",
907+ "m.megolm.v1.aes-sha2"
908+ ],
909+ "device_id": "ALICEDEVICE1183",
910+ "keys": {
911+ "curve25519:ALICEDEVICE1183": "e6QnOnd0ViH+mTChPiTVKgItoV5JwtjoPaCxc0Ys6wQ",
912+ "ed25519:ALICEDEVICE1183": "u6zywKwJU+gnPHQbAALDwsQQaUrY8dDf9MsksBiEjfM"
913+ },
914+ "signatures": {
915+ "@alice_1183:hs1": {
916+ "ed25519:ALICEDEVICE1183": "HOThBPs2QnqxGjq8dixi6y/wQFK5RviJPQzuOrvYV5tZ/hMY7NwSpzwN/R3XQODsjYu9eDm4HJ/CbYscd6IJCw"
917+ }
918+ },
919+ "user_id": "@alice_1183:hs1",
920+ "unsigned": {}
921+ }
922+ },
923+ "@alice_1189:hs1": {
924+ "ALICEDEVICE1189": {
925+ "algorithms": [
926+ "m.olm.v1.curve25519-aes-sha2",
927+ "m.megolm.v1.aes-sha2"
928+ ],
929+ "device_id": "ALICEDEVICE1189",
930+ "keys": {
931+ "curve25519:ALICEDEVICE1189": "Ux0iOIAT/1FLITKTjdb18g59+378emLvGxiG2k1hrBc",
932+ "ed25519:ALICEDEVICE1189": "oGBW8kAkrsLVOPaulCMzciffNlouuwD9CXkEUPc5wrE"
933+ },
934+ "signatures": {
935+ "@alice_1189:hs1": {
936+ "ed25519:ALICEDEVICE1189": "cm5MrWp+LLf6zOMsTTf0Qp27XzVFkGubNxzp6E5MrT9ly6w3Sb/x0YGO38YDpmdjj2aeN7P1PnlEr6+rHIpRCQ"
937+ }
938+ },
939+ "user_id": "@alice_1189:hs1",
940+ "unsigned": {}
941+ }
942+ },
943+ "@alice_118:hs1": {
944+ "ALICEDEVICE118": {
945+ "algorithms": [
946+ "m.olm.v1.curve25519-aes-sha2",
947+ "m.megolm.v1.aes-sha2"
948+ ],
949+ "device_id": "ALICEDEVICE118",
950+ "keys": {
951+ "curve25519:ALICEDEVICE118": "rhePUpGbdvGAnvtxQPIR3lUUMs84WeG+V+8xX7vwlUo",
952+ "ed25519:ALICEDEVICE118": "EXIMPDLcz69tAGWetyo45m59j/+EEdd3/8xa/g5Nd98"
953+ },
954+ "signatures": {
955+ "@alice_118:hs1": {
956+ "ed25519:ALICEDEVICE118": "H8jVGInVey+OO0UgFES+PZb3tk9y8Foql+rFH23XI+8nNrVeQQ2TAXG1lOujO/5hjM0VBtr8bKm/cKYP7A6ACA"
957+ }
958+ },
959+ "user_id": "@alice_118:hs1",
960+ "unsigned": {}
961+ }
962+ },
963+ "@alice_1194:hs1": {
964+ "ALICEDEVICE1194": {
965+ "algorithms": [
966+ "m.olm.v1.curve25519-aes-sha2",
967+ "m.megolm.v1.aes-sha2"
968+ ],
969+ "device_id": "ALICEDEVICE1194",
970+ "keys": {
971+ "curve25519:ALICEDEVICE1194": "xq9lQVR5BkaW5rPjdjcYnG3ONuCNA/OXLbHaVVzqEEI",
972+ "ed25519:ALICEDEVICE1194": "6xmsk2HQtUuJtpNnzGXw4/0ftLOyi9AXn4JgXBiwx1Q"
973+ },
974+ "signatures": {
975+ "@alice_1194:hs1": {
976+ "ed25519:ALICEDEVICE1194": "iPME0jByWhYMg8IzeL1scxXuPAaK16jSO5fQLDGyKYFF+mge2kfqaZrmb5RZ2xi3ZBs43CZ1FLZFgEX5lVrECQ"
977+ }
978+ },
979+ "user_id": "@alice_1194:hs1",
980+ "unsigned": {}
981+ }
982+ },
983+ "@alice_1215:hs1": {
984+ "ALICEDEVICE1215": {
985+ "algorithms": [
986+ "m.olm.v1.curve25519-aes-sha2",
987+ "m.megolm.v1.aes-sha2"
988+ ],
989+ "device_id": "ALICEDEVICE1215",
990+ "keys": {
991+ "curve25519:ALICEDEVICE1215": "G8fjC+K52bIrmx1zhBuWEVcXyLWrzl1ifRlnK7J4uR8",
992+ "ed25519:ALICEDEVICE1215": "RIGwkn7h8uhfFE/ChpCLh1LqvPTRQoSjU6VbenwnjCg"
993+ },
994+ "signatures": {
995+ "@alice_1215:hs1": {
996+ "ed25519:ALICEDEVICE1215": "JBIsnaKC9vu6E/JMSEoWRGUbkPpxHm2Wgg3HaLXzC+WyEEcCJR8ejGKEjRbfaEDZ2AxBD1bn9QzBNn4fjq3XAg"
997+ }
998+ },
999+ "user_id": "@alice_1215:hs1",
1000+ "unsigned": {}
1001+ }
1002+ },
1003+ "@alice_1230:hs1": {
1004+ "ALICEDEVICE1230": {
1005+ "algorithms": [
1006+ "m.olm.v1.curve25519-aes-sha2",
1007+ "m.megolm.v1.aes-sha2"
1008+ ],
1009+ "device_id": "ALICEDEVICE1230",
1010+ "keys": {
1011+ "curve25519:ALICEDEVICE1230": "qcR3tNnEejqI1nipT1cf1qBSWGbJGtBidhhB27g0gio",
1012+ "ed25519:ALICEDEVICE1230": "mm4ST1+et76b20t2pJcKmUA226hZr/RX4EAEKUldOGg"
1013+ },
1014+ "signatures": {
1015+ "@alice_1230:hs1": {
1016+ "ed25519:ALICEDEVICE1230": "M9JM3Wi8IojE5I+Um+CxPIajGVRAVjHEqN8GC+SjmCbTn8Qe2C2g9WutB2FLYFZ7pr3Hkr8jsdtqPqdxvoIPDQ"
1017+ }
1018+ },
1019+ "user_id": "@alice_1230:hs1",
1020+ "unsigned": {}
1021+ }
1022+ },
1023+ "@alice_1243:hs1": {
1024+ "ALICEDEVICE1243": {
1025+ "algorithms": [
1026+ "m.olm.v1.curve25519-aes-sha2",
1027+ "m.megolm.v1.aes-sha2"
1028+ ],
1029+ "device_id": "ALICEDEVICE1243",
1030+ "keys": {
1031+ "curve25519:ALICEDEVICE1243": "goZ1kfewJORAnn7QIc77NDDtPnQnv1oThHmojZxmMAA",
1032+ "ed25519:ALICEDEVICE1243": "nUj9pAL3zSGij1HeOvD1RVxLEYoDw80QPsB0BbFVgZ4"
1033+ },
1034+ "signatures": {
1035+ "@alice_1243:hs1": {
1036+ "ed25519:ALICEDEVICE1243": "0CFFaBBHRSr/4cCU5CVONM0zRvxAw3TzUd5BwHK13gfu4myeS1mlKjwdEPysCKZjzHlwiuBLKJQnIPD4aFifAQ"
1037+ }
1038+ },
1039+ "user_id": "@alice_1243:hs1",
1040+ "unsigned": {}
1041+ }
1042+ },
1043+ "@alice_1244:hs1": {
1044+ "ALICEDEVICE1244": {
1045+ "algorithms": [
1046+ "m.olm.v1.curve25519-aes-sha2",
1047+ "m.megolm.v1.aes-sha2"
1048+ ],
1049+ "device_id": "ALICEDEVICE1244",
1050+ "keys": {
1051+ "curve25519:ALICEDEVICE1244": "iE1FViEsN7mrPeOAakWfdikDk4bvt2fHMvufLnE3czg",
1052+ "ed25519:ALICEDEVICE1244": "TzvxA9vyBoRm9ApHTjuFS+YXmG/YupsMwjH5/WBlGcY"
1053+ },
1054+ "signatures": {
1055+ "@alice_1244:hs1": {
1056+ "ed25519:ALICEDEVICE1244": "aT/cGDXiGx/R3Armqm4myGzaxZaUeVg9poF/OVTp9oUB+8CLFcTXxCACUHpipeMRsFxDebLr6hEjyeJCiHZ9CQ"
1057+ }
1058+ },
1059+ "user_id": "@alice_1244:hs1",
1060+ "unsigned": {}
1061+ }
1062+ },
1063+ "@alice_1264:hs1": {
1064+ "ALICEDEVICE1264": {
1065+ "algorithms": [
1066+ "m.olm.v1.curve25519-aes-sha2",
1067+ "m.megolm.v1.aes-sha2"
1068+ ],
1069+ "device_id": "ALICEDEVICE1264",
1070+ "keys": {
1071+ "curve25519:ALICEDEVICE1264": "mz/TAojoo7V/sbikUZqRXj2wyaAWihnYf8CNRbU1en0",
1072+ "ed25519:ALICEDEVICE1264": "GJkBRHXLVNenPA6r167UQnV6SLWclBjAxoBHbuLPq7U"
1073+ },
1074+ "signatures": {
1075+ "@alice_1264:hs1": {
1076+ "ed25519:ALICEDEVICE1264": "zmSvFW2gnTmWMld/A4eJj5WUN3RnxjMtj3et68ih51xHINT+qZQxImUITwpt5jzWbR3cs8L/1my93I5j/29TAg"
1077+ }
1078+ },
1079+ "user_id": "@alice_1264:hs1",
1080+ "unsigned": {}
1081+ }
1082+ },
1083+ "@alice_1267:hs1": {
1084+ "ALICEDEVICE1267": {
1085+ "algorithms": [
1086+ "m.olm.v1.curve25519-aes-sha2",
1087+ "m.megolm.v1.aes-sha2"
1088+ ],
1089+ "device_id": "ALICEDEVICE1267",
1090+ "keys": {
1091+ "curve25519:ALICEDEVICE1267": "jY1OF8D0MrXKO00Rqb1WPh5jO/RDPWj6VjI8iHqpIyI",
1092+ "ed25519:ALICEDEVICE1267": "8O5xn0cBSSSLegxWNDl2ZkgDjaOjJ3iBb1eTElDupUg"
1093+ },
1094+ "signatures": {
1095+ "@alice_1267:hs1": {
1096+ "ed25519:ALICEDEVICE1267": "etWZskPMkRkNN/BnlpYgsFCiYznUhrI3hvHIWPVCpfV5aKWqks0NFCxHhK9q48y+9kDgIe5e8EmBQr6GRVx/Cg"
1097+ }
1098+ },
1099+ "user_id": "@alice_1267:hs1",
1100+ "unsigned": {}
1101+ }
1102+ },
1103+ "@alice_1273:hs1": {
1104+ "ALICEDEVICE1273": {
1105+ "algorithms": [
1106+ "m.olm.v1.curve25519-aes-sha2",
1107+ "m.megolm.v1.aes-sha2"
1108+ ],
1109+ "device_id": "ALICEDEVICE1273",
1110+ "keys": {
1111+ "curve25519:ALICEDEVICE1273": "zKTP4YgJHOvYhqcGteDARI5OqmXMd3LXGsRHMLduBik",
1112+ "ed25519:ALICEDEVICE1273": "yq104TxJoxUcGjD5LSw0K+GZzHMoJ2e9QvYp+zF9uiI"
1113+ },
1114+ "signatures": {
1115+ "@alice_1273:hs1": {
1116+ "ed25519:ALICEDEVICE1273": "RJydQKSHttMwhuI2U5zSTmvbObIik2N5lliMIEMh2IHbxYVu3hpvcGxSdUiqONSjVmQ7nZPrIvDGEzbWEzmrDg"
1117+ }
1118+ },
1119+ "user_id": "@alice_1273:hs1",
1120+ "unsigned": {}
1121+ }
1122+ },
1123+ "@alice_1282:hs1": {
1124+ "ALICEDEVICE1282": {
1125+ "algorithms": [
1126+ "m.olm.v1.curve25519-aes-sha2",
1127+ "m.megolm.v1.aes-sha2"
1128+ ],
1129+ "device_id": "ALICEDEVICE1282",
1130+ "keys": {
1131+ "curve25519:ALICEDEVICE1282": "bBWdBF6cO1dXoLblRUum/RJOiunKtmWEajfBcJibPT8",
1132+ "ed25519:ALICEDEVICE1282": "QNV6DnvsNQ0HmkSBoCq/DEPVboG8v7KSJIJWDLvr3aY"
1133+ },
1134+ "signatures": {
1135+ "@alice_1282:hs1": {
1136+ "ed25519:ALICEDEVICE1282": "SnOmTfjdjuCgToOju3rjylaOTY4qcQYwkmo0M3gO+jtRr+XIqob74CPQRjHIg8TCAY6bWOIuKBf/9NECs38FBA"
1137+ }
1138+ },
1139+ "user_id": "@alice_1282:hs1",
1140+ "unsigned": {}
1141+ }
1142+ },
1143+ "@alice_1290:hs1": {
1144+ "ALICEDEVICE1290": {
1145+ "algorithms": [
1146+ "m.olm.v1.curve25519-aes-sha2",
1147+ "m.megolm.v1.aes-sha2"
1148+ ],
1149+ "device_id": "ALICEDEVICE1290",
1150+ "keys": {
1151+ "curve25519:ALICEDEVICE1290": "JSPF4Ckyzm416ZzzEzIqxFRfvKURzrrg1aBpHkWxkmk",
1152+ "ed25519:ALICEDEVICE1290": "QZDcHjZZGRUuvJ5edQyA7fu+cT8V2SDuAKPhBYEj9So"
1153+ },
1154+ "signatures": {
1155+ "@alice_1290:hs1": {
1156+ "ed25519:ALICEDEVICE1290": "JCHH8gTAciPYMr1YHKahIcZhsLqQGMCMbuuzzqSgj9X+z9ZAwkXJTTI39ybeDOi+BVgxid1oB2giEZgrS5v0Bg"
1157+ }
1158+ },
1159+ "user_id": "@alice_1290:hs1",
1160+ "unsigned": {}
1161+ }
1162+ },
1163+ "@alice_1294:hs1": {
1164+ "ALICEDEVICE1294": {
1165+ "algorithms": [
1166+ "m.olm.v1.curve25519-aes-sha2",
1167+ "m.megolm.v1.aes-sha2"
1168+ ],
1169+ "device_id": "ALICEDEVICE1294",
1170+ "keys": {
1171+ "curve25519:ALICEDEVICE1294": "d39Dr7Z7MEwtkuTuHIEWvQLVJCFcRz6+o8hXHK2RmSo",
1172+ "ed25519:ALICEDEVICE1294": "Z9q3LWsazCaSTWBM/seUu1yvkJ/PitOrPPYNTK+/dHQ"
1173+ },
1174+ "signatures": {
1175+ "@alice_1294:hs1": {
1176+ "ed25519:ALICEDEVICE1294": "x2PIe2fnOYktASp94gqW9+v+S9XagPBbGJKm85X2OffFpupzcLaEbno7fomApBZ11Atp07yub/2aZidlsd1sAA"
1177+ }
1178+ },
1179+ "user_id": "@alice_1294:hs1",
1180+ "unsigned": {}
1181+ }
1182+ },
1183+ "@alice_1296:hs1": {
1184+ "ALICEDEVICE1296": {
1185+ "algorithms": [
1186+ "m.olm.v1.curve25519-aes-sha2",
1187+ "m.megolm.v1.aes-sha2"
1188+ ],
1189+ "device_id": "ALICEDEVICE1296",
1190+ "keys": {
1191+ "curve25519:ALICEDEVICE1296": "y2YsnK0oZqLVfn1yYNvs991IlYkV9VWXTtOe5ZacjAg",
1192+ "ed25519:ALICEDEVICE1296": "kFz26bDNkt+xsSqdGMBkExYv7cxDYVmPaTQUEiikCc0"
1193+ },
1194+ "signatures": {
1195+ "@alice_1296:hs1": {
1196+ "ed25519:ALICEDEVICE1296": "e1/bSn79+C1oJnOpQ3jcnJO/yediXV4UA2L7+aYvA1D8AAoVGxsk4TaRGvI8HoalWQhOL4mjsfW2mAU85MSzBg"
1197+ }
1198+ },
1199+ "user_id": "@alice_1296:hs1",
1200+ "unsigned": {}
1201+ }
1202+ },
1203+ "@alice_1306:hs1": {
1204+ "ALICEDEVICE1306": {
1205+ "algorithms": [
1206+ "m.olm.v1.curve25519-aes-sha2",
1207+ "m.megolm.v1.aes-sha2"
1208+ ],
1209+ "device_id": "ALICEDEVICE1306",
1210+ "keys": {
1211+ "curve25519:ALICEDEVICE1306": "t9Djga1FYDALomon+CNbZcH1slkoOdgWdlTz7BZVUU8",
1212+ "ed25519:ALICEDEVICE1306": "rc8EIA5d/1opd/Ssgv0BlqRmRdHVSP0bBhpFVGhccx8"
1213+ },
1214+ "signatures": {
1215+ "@alice_1306:hs1": {
1216+ "ed25519:ALICEDEVICE1306": "AtmqToDKRWZ1PN3uNrq4nkuSmyKOpfjZnBh7K160bkFfVyp6WMmwl/8olBfuM45AJXCSlBSguyDC7Q5efjGOBQ"
1217+ }
1218+ },
1219+ "user_id": "@alice_1306:hs1",
1220+ "unsigned": {}
1221+ }
1222+ },
1223+ "@alice_130:hs1": {
1224+ "ALICEDEVICE130": {
1225+ "algorithms": [
1226+ "m.olm.v1.curve25519-aes-sha2",
1227+ "m.megolm.v1.aes-sha2"
1228+ ],
1229+ "device_id": "ALICEDEVICE130",
1230+ "keys": {
1231+ "curve25519:ALICEDEVICE130": "GZtrvz/ackM8PYGWZ7Yma43ZnDrHAS4HUlBai0FNvCo",
1232+ "ed25519:ALICEDEVICE130": "C1E91vDMqgPW6N3eGA+WFT0UKOfoR9oEZWZlD9Y5+T4"
1233+ },
1234+ "signatures": {
1235+ "@alice_130:hs1": {
1236+ "ed25519:ALICEDEVICE130": "f7TQPZC+ZDLTdWV8jRB+Li2r8GhEiyLNOUDdtCL3G+T9tKYugvZ7x845NIawNUk7lOIWdBfoAVE1h4nnb+TkAw"
1237+ }
1238+ },
1239+ "user_id": "@alice_130:hs1",
1240+ "unsigned": {}
1241+ }
1242+ },
1243+ "@alice_1318:hs1": {
1244+ "ALICEDEVICE1318": {
1245+ "algorithms": [
1246+ "m.olm.v1.curve25519-aes-sha2",
1247+ "m.megolm.v1.aes-sha2"
1248+ ],
1249+ "device_id": "ALICEDEVICE1318",
1250+ "keys": {
1251+ "curve25519:ALICEDEVICE1318": "m68pYakhYHF7nWcQFHkey4SqGiipgdK3S0T26Md1r0M",
1252+ "ed25519:ALICEDEVICE1318": "PiOBt0K257xgjZMX8Z6DNq3hFBA2nQh0G4na1QwBkL0"
1253+ },
1254+ "signatures": {
1255+ "@alice_1318:hs1": {
1256+ "ed25519:ALICEDEVICE1318": "7zm66zZlL4Ji2lruWnQfQW1zXECdh0In+IBTCEfXdpNlFdD8anTsS/vLQYcSkXIZYiex4KHr4CKPJ/SW7oCkCw"
1257+ }
1258+ },
1259+ "user_id": "@alice_1318:hs1",
1260+ "unsigned": {}
1261+ }
1262+ },
1263+ "@alice_1322:hs1": {
1264+ "ALICEDEVICE1322": {
1265+ "algorithms": [
1266+ "m.olm.v1.curve25519-aes-sha2",
1267+ "m.megolm.v1.aes-sha2"
1268+ ],
1269+ "device_id": "ALICEDEVICE1322",
1270+ "keys": {
1271+ "curve25519:ALICEDEVICE1322": "5x6fYa0E0wTcCnOwUdjumwGyObOO+JqS88JhOLpkm0o",
1272+ "ed25519:ALICEDEVICE1322": "iL7TOr0mLSTPC12Y+p3j2LDGOtCNlgt7Y8JtboNSYl0"
1273+ },
1274+ "signatures": {
1275+ "@alice_1322:hs1": {
1276+ "ed25519:ALICEDEVICE1322": "ysFfwVJd2sqAK4BYSxSl6mWIVqJkE7qz464tB2Iz/7x/kE/NHKxDDnoen/CYBKurjT/aZM3t5LGEFDwxAklIBA"
1277+ }
1278+ },
1279+ "user_id": "@alice_1322:hs1",
1280+ "unsigned": {}
1281+ }
1282+ },
1283+ "@alice_1332:hs1": {
1284+ "ALICEDEVICE1332": {
1285+ "algorithms": [
1286+ "m.olm.v1.curve25519-aes-sha2",
1287+ "m.megolm.v1.aes-sha2"
1288+ ],
1289+ "device_id": "ALICEDEVICE1332",
1290+ "keys": {
1291+ "curve25519:ALICEDEVICE1332": "2+SQ/UjWB5mZzCA0mbnc8X6eB0isEUz7SdYd3tBDXA4",
1292+ "ed25519:ALICEDEVICE1332": "jI6AaMsJXEB+P2gU9gAVXAIP9lMLi1cQWOhZs88XgiE"
1293+ },
1294+ "signatures": {
1295+ "@alice_1332:hs1": {
1296+ "ed25519:ALICEDEVICE1332": "f9vPu8wfj+s6y/2WzV9ghE5ZZvji27hbv53DLom9avgXOggmmgRsFcu73RPXtwTRtnKR2tk8EGP0acvZ4wWvDQ"
1297+ }
1298+ },
1299+ "user_id": "@alice_1332:hs1",
1300+ "unsigned": {}
1301+ }
1302+ },
1303+ "@alice_1333:hs1": {
1304+ "ALICEDEVICE1333": {
1305+ "algorithms": [
1306+ "m.olm.v1.curve25519-aes-sha2",
1307+ "m.megolm.v1.aes-sha2"
1308+ ],
1309+ "device_id": "ALICEDEVICE1333",
1310+ "keys": {
1311+ "curve25519:ALICEDEVICE1333": "xbctaM02r6lGvrFBJeZFTav0yltDegPuNrjRlDAe0ic",
1312+ "ed25519:ALICEDEVICE1333": "1UGr9lfCJz8smMRAtnN8fDnZu/8BzaDTFQfsG+ayAJQ"
1313+ },
1314+ "signatures": {
1315+ "@alice_1333:hs1": {
1316+ "ed25519:ALICEDEVICE1333": "gU5eNtA71kN2vmZ3pLETscKeoEC/NMxBUFLGm+DzGBZFq2RSnXmYWKkngM3s2WDVq2drkbH6uLi2SXd4BFnXDw"
1317+ }
1318+ },
1319+ "user_id": "@alice_1333:hs1",
1320+ "unsigned": {}
1321+ }
1322+ },
1323+ "@alice_1353:hs1": {
1324+ "ALICEDEVICE1353": {
1325+ "algorithms": [
1326+ "m.olm.v1.curve25519-aes-sha2",
1327+ "m.megolm.v1.aes-sha2"
1328+ ],
1329+ "device_id": "ALICEDEVICE1353",
1330+ "keys": {
1331+ "curve25519:ALICEDEVICE1353": "eef/4eEoMYWiBC+oSZz1SoEvXmM/hZDmU6YKlBw1SFE",
1332+ "ed25519:ALICEDEVICE1353": "tD0CZmRZZMEdQMUEmRMPEO8AW+kWuOHoVQtEgsn2r3k"
1333+ },
1334+ "signatures": {
1335+ "@alice_1353:hs1": {
1336+ "ed25519:ALICEDEVICE1353": "qP78mPlbFJeQHkBeNt4sycOuISuAV6THJv8BxK+cCsKj9GAU7YM+Od1SKvkvj/CVtGAUvYWqvHN7IxUaseJhDA"
1337+ }
1338+ },
1339+ "user_id": "@alice_1353:hs1",
1340+ "unsigned": {}
1341+ }
1342+ },
1343+ "@alice_1354:hs1": {
1344+ "ALICEDEVICE1354": {
1345+ "algorithms": [
1346+ "m.olm.v1.curve25519-aes-sha2",
1347+ "m.megolm.v1.aes-sha2"
1348+ ],
1349+ "device_id": "ALICEDEVICE1354",
1350+ "keys": {
1351+ "curve25519:ALICEDEVICE1354": "TSnM9SpaQIWRoIQExjgdzbk4vSrCr/gbBTS6xi0miFg",
1352+ "ed25519:ALICEDEVICE1354": "7yfmSnTC+uFh44YbrWB99zpXpakYHqIQRxNP+W8P/VE"
1353+ },
1354+ "signatures": {
1355+ "@alice_1354:hs1": {
1356+ "ed25519:ALICEDEVICE1354": "WB5fyd4ebaD59RvWenyeG+LiPZRCz901W6ITlF3MAKoHiYeBOCxN9850/G/TOTLvnQ0p0Wh7ybIN3DOVgbtLAQ"
1357+ }
1358+ },
1359+ "user_id": "@alice_1354:hs1",
1360+ "unsigned": {}
1361+ }
1362+ },
1363+ "@alice_1357:hs1": {
1364+ "ALICEDEVICE1357": {
1365+ "algorithms": [
1366+ "m.olm.v1.curve25519-aes-sha2",
1367+ "m.megolm.v1.aes-sha2"
1368+ ],
1369+ "device_id": "ALICEDEVICE1357",
1370+ "keys": {
1371+ "curve25519:ALICEDEVICE1357": "kuCPM7QXPi1SB46O6ehqBisUDCh01nwNHgKZM2XnLDc",
1372+ "ed25519:ALICEDEVICE1357": "PYxz8eTzwV97+U5jyh2DGesQnT1MIHw65eyzpfDe2fw"
1373+ },
1374+ "signatures": {
1375+ "@alice_1357:hs1": {
1376+ "ed25519:ALICEDEVICE1357": "hPvE1ibZsvjlGYq/U1MSs3TCC4Y6h9t/+ymjmHNA+MZXisnNqQsgrWL4NscssvasnSVU0GXCDspgPe2uJeieAA"
1377+ }
1378+ },
1379+ "user_id": "@alice_1357:hs1",
1380+ "unsigned": {}
1381+ }
1382+ },
1383+ "@alice_1368:hs1": {
1384+ "ALICEDEVICE1368": {
1385+ "algorithms": [
1386+ "m.olm.v1.curve25519-aes-sha2",
1387+ "m.megolm.v1.aes-sha2"
1388+ ],
1389+ "device_id": "ALICEDEVICE1368",
1390+ "keys": {
1391+ "curve25519:ALICEDEVICE1368": "3zKC/X7Ge7cwHH9LqbayqexvaYT9dvWX3AzfyVG4rR8",
1392+ "ed25519:ALICEDEVICE1368": "llgVNqhf0DpfVGQ1YgDGQxdxJTM+OsjqvVGDWQXvsUs"
1393+ },
1394+ "signatures": {
1395+ "@alice_1368:hs1": {
1396+ "ed25519:ALICEDEVICE1368": "pd/ov23uWspM3LQckdXDS3aXWUMPCFptgP+qEJeajuEdTwBEdpb8n7kfbdpVC7rfXyPMWPxQ5xB+Bh1vTmhTAA"
1397+ }
1398+ },
1399+ "user_id": "@alice_1368:hs1",
1400+ "unsigned": {}
1401+ }
1402+ },
1403+ "@alice_1369:hs1": {
1404+ "ALICEDEVICE1369": {
1405+ "algorithms": [
1406+ "m.olm.v1.curve25519-aes-sha2",
1407+ "m.megolm.v1.aes-sha2"
1408+ ],
1409+ "device_id": "ALICEDEVICE1369",
1410+ "keys": {
1411+ "curve25519:ALICEDEVICE1369": "ClSYIgW11NS1DdR1mtq7E2Te3LTilFCuupDSvDF6bCo",
1412+ "ed25519:ALICEDEVICE1369": "vvFLndm+ozX/4v86JrtUx++HXRA8HlOk+F5kSm2s3b4"
1413+ },
1414+ "signatures": {
1415+ "@alice_1369:hs1": {
1416+ "ed25519:ALICEDEVICE1369": "+rW4UGMrmrMVobcRTIKHKGTf3dDrLUBcY6ns+IgmHhywh01QQCz3nJmcR0SY2lCWjkcUa8KvFymQFZhg9FWvAQ"
1417+ }
1418+ },
1419+ "user_id": "@alice_1369:hs1",
1420+ "unsigned": {}
1421+ }
1422+ },
1423+ "@alice_1376:hs1": {
1424+ "ALICEDEVICE1376": {
1425+ "algorithms": [
1426+ "m.olm.v1.curve25519-aes-sha2",
1427+ "m.megolm.v1.aes-sha2"
1428+ ],
1429+ "device_id": "ALICEDEVICE1376",
1430+ "keys": {
1431+ "curve25519:ALICEDEVICE1376": "p/nhejj8yRNVsSIy5wJ0npYBJXJTuRsdbo21XznT5B8",
1432+ "ed25519:ALICEDEVICE1376": "/GNR689wPiM1EMDvmMZVgHcHErAQeIxo9dzZVCKlh6g"
1433+ },
1434+ "signatures": {
1435+ "@alice_1376:hs1": {
1436+ "ed25519:ALICEDEVICE1376": "EYWEkgIO2WZCaYBBxSzc4fCu+k3BPLYIbzUI4nRvCqJFaA2ymo9zMJoXGt/VsB6h+VLG4iD6wbTN/rDINAD9Bg"
1437+ }
1438+ },
1439+ "user_id": "@alice_1376:hs1",
1440+ "unsigned": {}
1441+ }
1442+ },
1443+ "@alice_137:hs1": {
1444+ "ALICEDEVICE137": {
1445+ "algorithms": [
1446+ "m.olm.v1.curve25519-aes-sha2",
1447+ "m.megolm.v1.aes-sha2"
1448+ ],
1449+ "device_id": "ALICEDEVICE137",
1450+ "keys": {
1451+ "curve25519:ALICEDEVICE137": "Ju6DLbA1NLx58QIR7cuIoiWcI+2u4jpeIsyBwyCODBo",
1452+ "ed25519:ALICEDEVICE137": "hYRAlO33gFby0D/tc0OzzKwfz3+gvWMbJuizIwLWzPc"
1453+ },
1454+ "signatures": {
1455+ "@alice_137:hs1": {
1456+ "ed25519:ALICEDEVICE137": "wg0TeyLksJoXaFfBq3Lal8HIP4jnQ8F3jw1R71kZ6CHqbrAbaGCSkqDBRJJAe0xDUgvRJ4wqkRLcIO0MUz23Dg"
1457+ }
1458+ },
1459+ "user_id": "@alice_137:hs1",
1460+ "unsigned": {}
1461+ }
1462+ },
1463+ "@alice_1392:hs1": {
1464+ "ALICEDEVICE1392": {
1465+ "algorithms": [
1466+ "m.olm.v1.curve25519-aes-sha2",
1467+ "m.megolm.v1.aes-sha2"
1468+ ],
1469+ "device_id": "ALICEDEVICE1392",
1470+ "keys": {
1471+ "curve25519:ALICEDEVICE1392": "pY41pK5PwGnS3zQ4u8ExLslJkyXAOcW02QIpQywLkgM",
1472+ "ed25519:ALICEDEVICE1392": "2KU371vbUm501/Ilio5rQdIT1us6cfWElkvr5Bbbw1Y"
1473+ },
1474+ "signatures": {
1475+ "@alice_1392:hs1": {
1476+ "ed25519:ALICEDEVICE1392": "d1NhsyNpUX8nmvp5QYoOsrboYxAPr7JIPr5O5wFA6UpKf3qIhAzt7LHpeBZaDQLQnieof7QDFNX92ScrqxPsCg"
1477+ }
1478+ },
1479+ "user_id": "@alice_1392:hs1",
1480+ "unsigned": {}
1481+ }
1482+ },
1483+ "@alice_1397:hs1": {
1484+ "ALICEDEVICE1397": {
1485+ "algorithms": [
1486+ "m.olm.v1.curve25519-aes-sha2",
1487+ "m.megolm.v1.aes-sha2"
1488+ ],
1489+ "device_id": "ALICEDEVICE1397",
1490+ "keys": {
1491+ "curve25519:ALICEDEVICE1397": "lkFAjik27pbQ+38cgxMxntNDF/26YzfJSP0h11ijwUw",
1492+ "ed25519:ALICEDEVICE1397": "2pHNQqcB/dMIFVnpYKHyScx8602vx4AfyVQayDpW7QQ"
1493+ },
1494+ "signatures": {
1495+ "@alice_1397:hs1": {
1496+ "ed25519:ALICEDEVICE1397": "+AWf+oWMNt20AmYRipLTCaF8UvMWjAdGHXF+hvnXMVNt2lClu1TbqbO+aCNjRBjZkyCfbWiqU+WVPiR7sR3iCA"
1497+ }
1498+ },
1499+ "user_id": "@alice_1397:hs1",
1500+ "unsigned": {}
1501+ }
1502+ },
1503+ "@alice_1398:hs1": {
1504+ "ALICEDEVICE1398": {
1505+ "algorithms": [
1506+ "m.olm.v1.curve25519-aes-sha2",
1507+ "m.megolm.v1.aes-sha2"
1508+ ],
1509+ "device_id": "ALICEDEVICE1398",
1510+ "keys": {
1511+ "curve25519:ALICEDEVICE1398": "oBMVOUm0IWPweXFhIStfMaEgFQjwRViYuSXxZyYPp24",
1512+ "ed25519:ALICEDEVICE1398": "eftT48/DANZn12l6EtLU1OtCW3V8WsTHEGrtV9cUdkE"
1513+ },
1514+ "signatures": {
1515+ "@alice_1398:hs1": {
1516+ "ed25519:ALICEDEVICE1398": "FKAT3Z5WUSKgyhrpN57YJpoeqe7eDSA+rlH4VsbREAWVSKg3KuIDq4Vs45GeTcW2ND5QDrcd6b5iMf1FuUjmCg"
1517+ }
1518+ },
1519+ "user_id": "@alice_1398:hs1",
1520+ "unsigned": {}
1521+ }
1522+ },
1523+ "@alice_1399:hs1": {
1524+ "ALICEDEVICE1399": {
1525+ "algorithms": [
1526+ "m.olm.v1.curve25519-aes-sha2",
1527+ "m.megolm.v1.aes-sha2"
1528+ ],
1529+ "device_id": "ALICEDEVICE1399",
1530+ "keys": {
1531+ "curve25519:ALICEDEVICE1399": "cFtEfw5NaRxojqhfZKdmiTZtcZ5IVLbdoqtp/3H5kyY",
1532+ "ed25519:ALICEDEVICE1399": "XWxlgUi4/xVYXW/n0jGKaqLyssJRhGTlPeUiLSRWRG0"
1533+ },
1534+ "signatures": {
1535+ "@alice_1399:hs1": {
1536+ "ed25519:ALICEDEVICE1399": "xFkEcFJ9/UyYC1syZff3HkTSCc7/JVWBQy+9NF+WzZjYVSfW4TrfaSYIRnlZu+uTtquSbaRZIjLkQay3g90+AA"
1537+ }
1538+ },
1539+ "user_id": "@alice_1399:hs1",
1540+ "unsigned": {}
1541+ }
1542+ },
1543+ "@alice_13:hs1": {
1544+ "ALICEDEVICE13": {
1545+ "algorithms": [
1546+ "m.olm.v1.curve25519-aes-sha2",
1547+ "m.megolm.v1.aes-sha2"
1548+ ],
1549+ "device_id": "ALICEDEVICE13",
1550+ "keys": {
1551+ "curve25519:ALICEDEVICE13": "ir7Xs1Y1AZZRdkCzFOwapglMuKWKOQtdanwVGNHUihQ",
1552+ "ed25519:ALICEDEVICE13": "vEUz6+Gyrn8nFY1uD7FZefc5Hhpph27p0UYYWC+GcWc"
1553+ },
1554+ "signatures": {
1555+ "@alice_13:hs1": {
1556+ "ed25519:ALICEDEVICE13": "QdSC4Pl6S5L2Cw7ahodKzamo1mPPa73n/x5X5To2YFazxSw8LG83rXs+QVXeCgb8IqLgP3Hke9qtSc04+1qfAw"
1557+ }
1558+ },
1559+ "user_id": "@alice_13:hs1",
1560+ "unsigned": {}
1561+ }
1562+ },
1563+ "@alice_1400:hs1": {
1564+ "ALICEDEVICE1400": {
1565+ "algorithms": [
1566+ "m.olm.v1.curve25519-aes-sha2",
1567+ "m.megolm.v1.aes-sha2"
1568+ ],
1569+ "device_id": "ALICEDEVICE1400",
1570+ "keys": {
1571+ "curve25519:ALICEDEVICE1400": "PEiXnDfWc5pco5i34LpiTYtQsAzN3csUTj9I8AjmMyY",
1572+ "ed25519:ALICEDEVICE1400": "loy3tmN7OseMUEEPlq5cq07FBhO3zN069OdzNVuVymg"
1573+ },
1574+ "signatures": {
1575+ "@alice_1400:hs1": {
1576+ "ed25519:ALICEDEVICE1400": "d9WR42iWlipdctbxV/TQdxNTP0vlkRKhbgdbqIxzj9vp5mqk4w37JQUUrlivu2P90S+y+usJ5zPQlUAQo+DyCQ"
1577+ }
1578+ },
1579+ "user_id": "@alice_1400:hs1",
1580+ "unsigned": {}
1581+ }
1582+ },
1583+ "@alice_1405:hs1": {
1584+ "ALICEDEVICE1405": {
1585+ "algorithms": [
1586+ "m.olm.v1.curve25519-aes-sha2",
1587+ "m.megolm.v1.aes-sha2"
1588+ ],
1589+ "device_id": "ALICEDEVICE1405",
1590+ "keys": {
1591+ "curve25519:ALICEDEVICE1405": "7ycekIOzZcx/2U21840j1HUyURkgXavP55jRNLy8UTk",
1592+ "ed25519:ALICEDEVICE1405": "L3uCuYqFSC+xfngscmkyXj9F1mfb+XdOKvPOxDKLc+E"
1593+ },
1594+ "signatures": {
1595+ "@alice_1405:hs1": {
1596+ "ed25519:ALICEDEVICE1405": "6vD4UVbQFLFIY6jnkqdJaxJn/2GqjrbEX7/2YMSRpO4mwVw4IdYVMrSIv12fGV2Jf4+iHJLfDCjGbhL4Aua7AQ"
1597+ }
1598+ },
1599+ "user_id": "@alice_1405:hs1",
1600+ "unsigned": {}
1601+ }
1602+ },
1603+ "@alice_1410:hs1": {
1604+ "ALICEDEVICE1410": {
1605+ "algorithms": [
1606+ "m.olm.v1.curve25519-aes-sha2",
1607+ "m.megolm.v1.aes-sha2"
1608+ ],
1609+ "device_id": "ALICEDEVICE1410",
1610+ "keys": {
1611+ "curve25519:ALICEDEVICE1410": "b6t7relZMiBSjBi0BXFal2e5kcv09E1BcHfv+ewruFk",
1612+ "ed25519:ALICEDEVICE1410": "Lzwnme0e0MFmsQynGL8SR/6NUVTmfOfXy34DoIaMze4"
1613+ },
1614+ "signatures": {
1615+ "@alice_1410:hs1": {
1616+ "ed25519:ALICEDEVICE1410": "ZNdSaCpf0viE03hPja6Td7rMXDA+Y+cwsOT54LL9wVBBE2tZCF4OcVrSZ3t6OF87jYksflMV11AA+r+EQlbzBg"
1617+ }
1618+ },
1619+ "user_id": "@alice_1410:hs1",
1620+ "unsigned": {}
1621+ }
1622+ },
1623+ "@alice_1413:hs1": {
1624+ "ALICEDEVICE1413": {
1625+ "algorithms": [
1626+ "m.olm.v1.curve25519-aes-sha2",
1627+ "m.megolm.v1.aes-sha2"
1628+ ],
1629+ "device_id": "ALICEDEVICE1413",
1630+ "keys": {
1631+ "curve25519:ALICEDEVICE1413": "J4XhC3EKz1pWPk4GUJA1SFmai6yvZ3KZ48GR+0tKblE",
1632+ "ed25519:ALICEDEVICE1413": "SCsF/QO2WnpadX/OIRzfrzeBAqCm1QOCM5z5/ie7ing"
1633+ },
1634+ "signatures": {
1635+ "@alice_1413:hs1": {
1636+ "ed25519:ALICEDEVICE1413": "6qcr2383lihJFImAJBFD6PiqAI8KF2k8mqHcs36XhHxpCequ/xJ7dSjUCOj6B6H/ToRGW/aWWFXsQ1J+FNwYBg"
1637+ }
1638+ },
1639+ "user_id": "@alice_1413:hs1",
1640+ "unsigned": {}
1641+ }
1642+ },
1643+ "@alice_1420:hs1": {
1644+ "ALICEDEVICE1420": {
1645+ "algorithms": [
1646+ "m.olm.v1.curve25519-aes-sha2",
1647+ "m.megolm.v1.aes-sha2"
1648+ ],
1649+ "device_id": "ALICEDEVICE1420",
1650+ "keys": {
1651+ "curve25519:ALICEDEVICE1420": "sK3pAGuJp6u27WBXSCRbNS4pgsa1qWM8a1SCt0iAfFk",
1652+ "ed25519:ALICEDEVICE1420": "0kCrfE5tQTUdtdOlkownx+D/wpL8ZNAMQGl/MmIg3p4"
1653+ },
1654+ "signatures": {
1655+ "@alice_1420:hs1": {
1656+ "ed25519:ALICEDEVICE1420": "ARt75WEb6KQDLJX2wmDLbZPHh754UhS4L9rRQosDLwSoT9qu7QE1Eou8cIPRE+RGFqFFEpDWM1rhasfP4CN1DA"
1657+ }
1658+ },
1659+ "user_id": "@alice_1420:hs1",
1660+ "unsigned": {}
1661+ }
1662+ },
1663+ "@alice_1422:hs1": {
1664+ "ALICEDEVICE1422": {
1665+ "algorithms": [
1666+ "m.olm.v1.curve25519-aes-sha2",
1667+ "m.megolm.v1.aes-sha2"
1668+ ],
1669+ "device_id": "ALICEDEVICE1422",
1670+ "keys": {
1671+ "curve25519:ALICEDEVICE1422": "xTNqqF5jV1VXh/Ndr/mamsCJiVxD+M0UANjnKWpKSGQ",
1672+ "ed25519:ALICEDEVICE1422": "zyIi2uj1XDuIou0RYKHTavIbsMt4eExemtolRUTzeLY"
1673+ },
1674+ "signatures": {
1675+ "@alice_1422:hs1": {
1676+ "ed25519:ALICEDEVICE1422": "TcnuDD2sBE4unzEOWxq82X6ntyayfF0KUcfkXjSh0VVGCc9xduqpZe0v5ncf+Ufnrip76/3k0hedVehKp+cWAg"
1677+ }
1678+ },
1679+ "user_id": "@alice_1422:hs1",
1680+ "unsigned": {}
1681+ }
1682+ },
1683+ "@alice_1426:hs1": {
1684+ "ALICEDEVICE1426": {
1685+ "algorithms": [
1686+ "m.olm.v1.curve25519-aes-sha2",
1687+ "m.megolm.v1.aes-sha2"
1688+ ],
1689+ "device_id": "ALICEDEVICE1426",
1690+ "keys": {
1691+ "curve25519:ALICEDEVICE1426": "KjL4H9YhMbxsDqx9xU3kDaZ86hbh5+8mJseJbrAiNgk",
1692+ "ed25519:ALICEDEVICE1426": "hTkG4Y/KreyDaQbhYRzDA5ub9IENat4tvJ7bnwkXnRg"
1693+ },
1694+ "signatures": {
1695+ "@alice_1426:hs1": {
1696+ "ed25519:ALICEDEVICE1426": "hgsB//4l3Qztp6w3ixFUIRiyeE+XD53yBKs4FmH+aI3iGUafjjkEfJgxF7UPhS9xTqdyf6Aywh15eNTKTrUaDA"
1697+ }
1698+ },
1699+ "user_id": "@alice_1426:hs1",
1700+ "unsigned": {}
1701+ }
1702+ },
1703+ "@alice_1434:hs1": {
1704+ "ALICEDEVICE1434": {
1705+ "algorithms": [
1706+ "m.olm.v1.curve25519-aes-sha2",
1707+ "m.megolm.v1.aes-sha2"
1708+ ],
1709+ "device_id": "ALICEDEVICE1434",
1710+ "keys": {
1711+ "curve25519:ALICEDEVICE1434": "Febt2mfNAtRTw4DV7V0zDlbtcLcE/jlhAgZVwSEReQ0",
1712+ "ed25519:ALICEDEVICE1434": "TNaKPWbemTXfmfmKTw7hQ9j1ynP5R3jOdEl2YaG7Ubg"
1713+ },
1714+ "signatures": {
1715+ "@alice_1434:hs1": {
1716+ "ed25519:ALICEDEVICE1434": "YF3lz6Rm3cfdhU4HtntSgsPJL/DDDeEtma63EgWO5vmeQUDUf0F9IsLpxaxdcCLty8r/dDc/f8YjSeSAgbtQDA"
1717+ }
1718+ },
1719+ "user_id": "@alice_1434:hs1",
1720+ "unsigned": {}
1721+ }
1722+ },
1723+ "@alice_1438:hs1": {
1724+ "ALICEDEVICE1438": {
1725+ "algorithms": [
1726+ "m.olm.v1.curve25519-aes-sha2",
1727+ "m.megolm.v1.aes-sha2"
1728+ ],
1729+ "device_id": "ALICEDEVICE1438",
1730+ "keys": {
1731+ "curve25519:ALICEDEVICE1438": "e8hFQLOjFHbYa/aRgm/k9QmiU6om9KoqIW+3wB/YyXs",
1732+ "ed25519:ALICEDEVICE1438": "qRDSpPMjE94ZOExrtg8KFk5mVhyLovhXgKm+DjN6SBc"
1733+ },
1734+ "signatures": {
1735+ "@alice_1438:hs1": {
1736+ "ed25519:ALICEDEVICE1438": "auYrFIUmorjtW4Z+S23Y1fxY9R8tkgtBNpxSXIXBzJ5pjD5AlXiBls795fHqUsrzo6f1d6NfGh3S3TTVIf7pAA"
1737+ }
1738+ },
1739+ "user_id": "@alice_1438:hs1",
1740+ "unsigned": {}
1741+ }
1742+ },
1743+ "@alice_1452:hs1": {
1744+ "ALICEDEVICE1452": {
1745+ "algorithms": [
1746+ "m.olm.v1.curve25519-aes-sha2",
1747+ "m.megolm.v1.aes-sha2"
1748+ ],
1749+ "device_id": "ALICEDEVICE1452",
1750+ "keys": {
1751+ "curve25519:ALICEDEVICE1452": "ufOI8l9rfL0nxZ6V5SQebbr3LXdWA4XBSCn8VPfD5Sc",
1752+ "ed25519:ALICEDEVICE1452": "zoP2+nGgx6ZTMi3jWXLCr1inddfIPqYcRBLEmllx+4o"
1753+ },
1754+ "signatures": {
1755+ "@alice_1452:hs1": {
1756+ "ed25519:ALICEDEVICE1452": "3lAk4qqsB/BcArkc2leRYnXWDlMXwM7m5R7DPKqlsPvSpCQPNeONKKDDtTlZ7il+TUlQIgbgwd3UpxkqLtsvAg"
1757+ }
1758+ },
1759+ "user_id": "@alice_1452:hs1",
1760+ "unsigned": {}
1761+ }
1762+ },
1763+ "@alice_1459:hs1": {
1764+ "ALICEDEVICE1459": {
1765+ "algorithms": [
1766+ "m.olm.v1.curve25519-aes-sha2",
1767+ "m.megolm.v1.aes-sha2"
1768+ ],
1769+ "device_id": "ALICEDEVICE1459",
1770+ "keys": {
1771+ "curve25519:ALICEDEVICE1459": "V5IsYSl8cmD9Nxqfz4OU9PDErqkc1zWoJzH0bv1glzg",
1772+ "ed25519:ALICEDEVICE1459": "ng7RTuGut9pv6jbBTpQgONb7H0w4cUXemrgG0e4hzVc"
1773+ },
1774+ "signatures": {
1775+ "@alice_1459:hs1": {
1776+ "ed25519:ALICEDEVICE1459": "Vi/omcByu5+DAGmfPH8JD7pPWkglEDLL5gPo3B0/yNS1rMhPlUX7BmZW6fCHqtruyx5uBIawgCxym+MsHaTaAg"
1777+ }
1778+ },
1779+ "user_id": "@alice_1459:hs1",
1780+ "unsigned": {}
1781+ }
1782+ },
1783+ "@alice_145:hs1": {
1784+ "ALICEDEVICE145": {
1785+ "algorithms": [
1786+ "m.olm.v1.curve25519-aes-sha2",
1787+ "m.megolm.v1.aes-sha2"
1788+ ],
1789+ "device_id": "ALICEDEVICE145",
1790+ "keys": {
1791+ "curve25519:ALICEDEVICE145": "25JTz0MSyb5VSO+llFewFr5RazrGcwnIBgwSUgb8jl4",
1792+ "ed25519:ALICEDEVICE145": "bfw75oOOsKcwPj5P/zotnF1EkJJKK/S5W4g7kRTXw0U"
1793+ },
1794+ "signatures": {
1795+ "@alice_145:hs1": {
1796+ "ed25519:ALICEDEVICE145": "ofH4NdFRhD32aH4LlckDJVM9ZXA3TUGngMvmIUE2x916fInQG02kEtJGvnnI0gv+ls/PWYe9bcqDP94e3yrLDw"
1797+ }
1798+ },
1799+ "user_id": "@alice_145:hs1",
1800+ "unsigned": {}
1801+ }
1802+ },
1803+ "@alice_1462:hs1": {
1804+ "ALICEDEVICE1462": {
1805+ "algorithms": [
1806+ "m.olm.v1.curve25519-aes-sha2",
1807+ "m.megolm.v1.aes-sha2"
1808+ ],
1809+ "device_id": "ALICEDEVICE1462",
1810+ "keys": {
1811+ "curve25519:ALICEDEVICE1462": "8/cUN0cQIJwP9bX45jV8s7Hq8BTx11KCE9rB01puTys",
1812+ "ed25519:ALICEDEVICE1462": "LoHdaXrIDru373MNTXwXTPPYwuwFZHJ4ikwfd3+pFPA"
1813+ },
1814+ "signatures": {
1815+ "@alice_1462:hs1": {
1816+ "ed25519:ALICEDEVICE1462": "Q+/hkB4K/WOnIZkY+slXUSi5ElKm/MtLsPyEXbEwjztacY8dkTSdhL30WSAc6DQeHjanE0vplhxbrZ4Rs0xIDQ"
1817+ }
1818+ },
1819+ "user_id": "@alice_1462:hs1",
1820+ "unsigned": {}
1821+ }
1822+ },
1823+ "@alice_1475:hs1": {
1824+ "ALICEDEVICE1475": {
1825+ "algorithms": [
1826+ "m.olm.v1.curve25519-aes-sha2",
1827+ "m.megolm.v1.aes-sha2"
1828+ ],
1829+ "device_id": "ALICEDEVICE1475",
1830+ "keys": {
1831+ "curve25519:ALICEDEVICE1475": "VeMmf3xToidAqIBgjQgV29XNjeL9Fnk3JD/0qGSNpjI",
1832+ "ed25519:ALICEDEVICE1475": "gR34ATByZnH3OBP8+mY9Yc0glWRofLw1sdTTvxQ+qwU"
1833+ },
1834+ "signatures": {
1835+ "@alice_1475:hs1": {
1836+ "ed25519:ALICEDEVICE1475": "sV+vSo27CldvtJtEs4HqhU95Cfk//5gCrtnq7OKSjxdTQlhyevZQ1cW+WFrJglGAQ5mevlmAkmHwHF/8QiRiBg"
1837+ }
1838+ },
1839+ "user_id": "@alice_1475:hs1",
1840+ "unsigned": {}
1841+ }
1842+ },
1843+ "@alice_1484:hs1": {
1844+ "ALICEDEVICE1484": {
1845+ "algorithms": [
1846+ "m.olm.v1.curve25519-aes-sha2",
1847+ "m.megolm.v1.aes-sha2"
1848+ ],
1849+ "device_id": "ALICEDEVICE1484",
1850+ "keys": {
1851+ "curve25519:ALICEDEVICE1484": "YzEFBOBfteV2reZRB6MDS3FoS4u2czfdeWVQNituimE",
1852+ "ed25519:ALICEDEVICE1484": "kMNABPFzDb1hTOBFaY/34EjeIeaQnFl4R0BLKFQk2qw"
1853+ },
1854+ "signatures": {
1855+ "@alice_1484:hs1": {
1856+ "ed25519:ALICEDEVICE1484": "dGC9f8T8VaJAUIOphG7dwWkMsNJ/t7tsWUdFEBWMX4PBzsrhMZF6W3MNh5NfS89+XTAOWrTQ+bdHOEj0eKozBw"
1857+ }
1858+ },
1859+ "user_id": "@alice_1484:hs1",
1860+ "unsigned": {}
1861+ }
1862+ },
1863+ "@alice_1492:hs1": {
1864+ "ALICEDEVICE1492": {
1865+ "algorithms": [
1866+ "m.olm.v1.curve25519-aes-sha2",
1867+ "m.megolm.v1.aes-sha2"
1868+ ],
1869+ "device_id": "ALICEDEVICE1492",
1870+ "keys": {
1871+ "curve25519:ALICEDEVICE1492": "SkBKTxT3F/IzYLmaEYuHq9v+0bwuaJ7LWTlGbCWlYw8",
1872+ "ed25519:ALICEDEVICE1492": "N6OC6SOMr0fvHxFX8zoUE400CCsSxajHTwO3L1YEx38"
1873+ },
1874+ "signatures": {
1875+ "@alice_1492:hs1": {
1876+ "ed25519:ALICEDEVICE1492": "hD8dlnj4oVAyy9I3PTYEgK62/HhlEo32Uf0tE0hUNp6uJz84vGuTZPb7u/n9gQAw70aFgLRcKuiEk32vNLmDCw"
1877+ }
1878+ },
1879+ "user_id": "@alice_1492:hs1",
1880+ "unsigned": {}
1881+ }
1882+ },
1883+ "@alice_1503:hs1": {
1884+ "ALICEDEVICE1503": {
1885+ "algorithms": [
1886+ "m.olm.v1.curve25519-aes-sha2",
1887+ "m.megolm.v1.aes-sha2"
1888+ ],
1889+ "device_id": "ALICEDEVICE1503",
1890+ "keys": {
1891+ "curve25519:ALICEDEVICE1503": "nQ9Kzd6XAJ5tBStSjuO3uHjn2Cj+7Fyk4wP4IbicelU",
1892+ "ed25519:ALICEDEVICE1503": "6Gg6uFI9d3iH6e06gWCDFXMqaD+ujO4Y2ef7y4iWHQA"
1893+ },
1894+ "signatures": {
1895+ "@alice_1503:hs1": {
1896+ "ed25519:ALICEDEVICE1503": "jZt8FUY7v2VvSxHFh/Bmi1BmsmeZyAHfREjzrOh3zfI0uO/NE3AymhuWIvQFOVZtoPIDSJbiOAUs/V/ExdQAAw"
1897+ }
1898+ },
1899+ "user_id": "@alice_1503:hs1",
1900+ "unsigned": {}
1901+ }
1902+ },
1903+ "@alice_1504:hs1": {
1904+ "ALICEDEVICE1504": {
1905+ "algorithms": [
1906+ "m.olm.v1.curve25519-aes-sha2",
1907+ "m.megolm.v1.aes-sha2"
1908+ ],
1909+ "device_id": "ALICEDEVICE1504",
1910+ "keys": {
1911+ "curve25519:ALICEDEVICE1504": "3WwgcIfFNBFOWitJAEn4oK7FSF6NgRuW0xc9M5Tzo2E",
1912+ "ed25519:ALICEDEVICE1504": "N4aE3OyCCblBGk0P63rARuJ9P/jAm9iGsvb3wMCPOaQ"
1913+ },
1914+ "signatures": {
1915+ "@alice_1504:hs1": {
1916+ "ed25519:ALICEDEVICE1504": "evBdW5V0QXcOZek+oKRnTD8TKEl/u4ACsCjfg+uOo7x2LohvVhB89ti/UHgP92NQ92bCSJF6Osoql4iwOIBTBg"
1917+ }
1918+ },
1919+ "user_id": "@alice_1504:hs1",
1920+ "unsigned": {}
1921+ }
1922+ },
1923+ "@alice_1507:hs1": {
1924+ "ALICEDEVICE1507": {
1925+ "algorithms": [
1926+ "m.olm.v1.curve25519-aes-sha2",
1927+ "m.megolm.v1.aes-sha2"
1928+ ],
1929+ "device_id": "ALICEDEVICE1507",
1930+ "keys": {
1931+ "curve25519:ALICEDEVICE1507": "JSArJDUbVVZgDvyl1cqhzFXJIg13CeJWW7jaNKlUsmE",
1932+ "ed25519:ALICEDEVICE1507": "8BXrjlCq7OvTvP3Td4DA/oi1QRgejGZgDTJklNU7b64"
1933+ },
1934+ "signatures": {
1935+ "@alice_1507:hs1": {
1936+ "ed25519:ALICEDEVICE1507": "8j3jU1pv0t5Ggys6rY76Bx7+N4qA2cuehhLJx0JXfAkyhx6MC0v7CeniVNs/OB9gACIN1KQY2/OPlcJRccqPDg"
1937+ }
1938+ },
1939+ "user_id": "@alice_1507:hs1",
1940+ "unsigned": {}
1941+ }
1942+ },
1943+ "@alice_1510:hs1": {
1944+ "ALICEDEVICE1510": {
1945+ "algorithms": [
1946+ "m.olm.v1.curve25519-aes-sha2",
1947+ "m.megolm.v1.aes-sha2"
1948+ ],
1949+ "device_id": "ALICEDEVICE1510",
1950+ "keys": {
1951+ "curve25519:ALICEDEVICE1510": "ldYo7zeIvCDVjsub4Edl/MtiCw0mWjGGYZtOX0/iH3E",
1952+ "ed25519:ALICEDEVICE1510": "NZUZOnQ5Sj0UHbnqML0yK8hiD96ikpm/l79RJxwzIH8"
1953+ },
1954+ "signatures": {
1955+ "@alice_1510:hs1": {
1956+ "ed25519:ALICEDEVICE1510": "JGASyipNV7dYFU5/q2H/XBvS2QzIyMu/hpZgKKHVe4asmj5bEj4PKeyS/KV0LMwQNEdO1quqidfN1Zp0chiSAw"
1957+ }
1958+ },
1959+ "user_id": "@alice_1510:hs1",
1960+ "unsigned": {}
1961+ }
1962+ },
1963+ "@alice_1540:hs1": {
1964+ "ALICEDEVICE1540": {
1965+ "algorithms": [
1966+ "m.olm.v1.curve25519-aes-sha2",
1967+ "m.megolm.v1.aes-sha2"
1968+ ],
1969+ "device_id": "ALICEDEVICE1540",
1970+ "keys": {
1971+ "curve25519:ALICEDEVICE1540": "S4t0eJ1/HsiR50uvmsU24udX6WsX5kGPvmxLMUDwzTA",
1972+ "ed25519:ALICEDEVICE1540": "rhMUZOA4yH8SXUH91hnwm9Bubyv/GXpSLB4xNc/9SXs"
1973+ },
1974+ "signatures": {
1975+ "@alice_1540:hs1": {
1976+ "ed25519:ALICEDEVICE1540": "ILjeViEkEIMCi0ooHsnAHBV6s9dAlJTQnawrgTXkrkRR27bCV2pqTUQv2bMNZtyMY8KImDhNYCjsBRF+gIqbBQ"
1977+ }
1978+ },
1979+ "user_id": "@alice_1540:hs1",
1980+ "unsigned": {}
1981+ }
1982+ },
1983+ "@alice_1564:hs1": {
1984+ "ALICEDEVICE1564": {
1985+ "algorithms": [
1986+ "m.olm.v1.curve25519-aes-sha2",
1987+ "m.megolm.v1.aes-sha2"
1988+ ],
1989+ "device_id": "ALICEDEVICE1564",
1990+ "keys": {
1991+ "curve25519:ALICEDEVICE1564": "CIfKnQSbtfy00QbnqofyU+yRPgRm2BZdxniqjsfHWiM",
1992+ "ed25519:ALICEDEVICE1564": "Jy34O7PcXgsTKFeeZcWGEN9HzOWPY8z1rfgRExQMecU"
1993+ },
1994+ "signatures": {
1995+ "@alice_1564:hs1": {
1996+ "ed25519:ALICEDEVICE1564": "3kWEe9XX+xKPQ4otMf06XNucByNrIEBjQ4oXIeyq5PLI9O1Lcux5ITm1y2dfapiI6v3nRFY+0Ft54HOSGGlLCw"
1997+ }
1998+ },
1999+ "user_id": "@alice_1564:hs1",
2000+ "unsigned": {}
2001+ }
2002+ },
2003+ "@alice_1577:hs1": {
2004+ "ALICEDEVICE1577": {
2005+ "algorithms": [
2006+ "m.olm.v1.curve25519-aes-sha2",
2007+ "m.megolm.v1.aes-sha2"
2008+ ],
2009+ "device_id": "ALICEDEVICE1577",
2010+ "keys": {
2011+ "curve25519:ALICEDEVICE1577": "bPlMIYVBd0Ihpf+kt+dckJkssCb71WY/y49h6BxJgwc",
2012+ "ed25519:ALICEDEVICE1577": "DQr0UiUvX2Cnx5oBMYRhEMyndjNvYr9XEVIDwfqclo4"
2013+ },
2014+ "signatures": {
2015+ "@alice_1577:hs1": {
2016+ "ed25519:ALICEDEVICE1577": "xvZs3+ct3QD3rE0y/VJSrYV0R6+uAXhPHh0Q+5dpxwmmzQytHgrxVnoIMyhf4fkDvZNm372LhPBZAj91qoGACg"
2017+ }
2018+ },
2019+ "user_id": "@alice_1577:hs1",
2020+ "unsigned": {}
2021+ }
2022+ },
2023+ "@alice_1580:hs1": {
2024+ "ALICEDEVICE1580": {
2025+ "algorithms": [
2026+ "m.olm.v1.curve25519-aes-sha2",
2027+ "m.megolm.v1.aes-sha2"
2028+ ],
2029+ "device_id": "ALICEDEVICE1580",
2030+ "keys": {
2031+ "curve25519:ALICEDEVICE1580": "j4K1gFuTVoAAyAE95tGK8eVbyfy6/Hz7PixgWQHzhAE",
2032+ "ed25519:ALICEDEVICE1580": "IzpYQsjKwmIxASJm1Y44CDYQZvCiSW19okjBSPE7Nio"
2033+ },
2034+ "signatures": {
2035+ "@alice_1580:hs1": {
2036+ "ed25519:ALICEDEVICE1580": "mY0ba0lKMwubl7PlobfmojtZ049cEc9iH7BG4nOwNL0+YXnA41kIdp4ug3XGIp/5sEcTl6B58McnzDEGVEJJAA"
2037+ }
2038+ },
2039+ "user_id": "@alice_1580:hs1",
2040+ "unsigned": {}
2041+ }
2042+ },
2043+ "@alice_1582:hs1": {
2044+ "ALICEDEVICE1582": {
2045+ "algorithms": [
2046+ "m.olm.v1.curve25519-aes-sha2",
2047+ "m.megolm.v1.aes-sha2"
2048+ ],
2049+ "device_id": "ALICEDEVICE1582",
2050+ "keys": {
2051+ "curve25519:ALICEDEVICE1582": "wNlqBEvmYyM6NN78n8JZrd+m6bJjdCJM29dWlJ/Fvz0",
2052+ "ed25519:ALICEDEVICE1582": "p6oO+HWzu+GIIo+lg5RqNvcwZsFS7kJbONgWn+0dh18"
2053+ },
2054+ "signatures": {
2055+ "@alice_1582:hs1": {
2056+ "ed25519:ALICEDEVICE1582": "w44pdNiBs83KIH57OFGgNY403UHaefWIj6RycynmkKgfyTI+QaQ8eLoU+BeVRrC8u8gKAO1A8FUqXF3tChLqBQ"
2057+ }
2058+ },
2059+ "user_id": "@alice_1582:hs1",
2060+ "unsigned": {}
2061+ }
2062+ },
2063+ "@alice_1596:hs1": {
2064+ "ALICEDEVICE1596": {
2065+ "algorithms": [
2066+ "m.olm.v1.curve25519-aes-sha2",
2067+ "m.megolm.v1.aes-sha2"
2068+ ],
2069+ "device_id": "ALICEDEVICE1596",
2070+ "keys": {
2071+ "curve25519:ALICEDEVICE1596": "xRusV44xnaBSKUYyyBZKXfBw5PhcnpVggLovOK9NUDU",
2072+ "ed25519:ALICEDEVICE1596": "Cz+7Y2CM049O+m2uNBSnsgDg102gZynA4ZZ21bqwrn8"
2073+ },
2074+ "signatures": {
2075+ "@alice_1596:hs1": {
2076+ "ed25519:ALICEDEVICE1596": "eF27kWT1KOz2wlwLlKDuPo676qwrFR9Wh+ve0jCwInF7pcp76TYOYmk4TPmF1/ndves9tL8SL2cPhoFit8AaCw"
2077+ }
2078+ },
2079+ "user_id": "@alice_1596:hs1",
2080+ "unsigned": {}
2081+ }
2082+ },
2083+ "@alice_1597:hs1": {
2084+ "ALICEDEVICE1597": {
2085+ "algorithms": [
2086+ "m.olm.v1.curve25519-aes-sha2",
2087+ "m.megolm.v1.aes-sha2"
2088+ ],
2089+ "device_id": "ALICEDEVICE1597",
2090+ "keys": {
2091+ "curve25519:ALICEDEVICE1597": "sDcHZzwkic/kDSNX71M48xny9GZ684BH63PMzgrEPDk",
2092+ "ed25519:ALICEDEVICE1597": "EwUdkLZAnhjK13nV1+RYzE0EFkfnoiO3maBNJH039pk"
2093+ },
2094+ "signatures": {
2095+ "@alice_1597:hs1": {
2096+ "ed25519:ALICEDEVICE1597": "8HRRAq1Ia7Y6UUjeX68gLPDyJhomv99GgniIbcvNtI6G8Ll+kSQYfuNus+9ZJwbaq5SCyeC0Gdi1BiyZ1UamDw"
2097+ }
2098+ },
2099+ "user_id": "@alice_1597:hs1",
2100+ "unsigned": {}
2101+ }
2102+ },
2103+ "@alice_1601:hs1": {
2104+ "ALICEDEVICE1601": {
2105+ "algorithms": [
2106+ "m.olm.v1.curve25519-aes-sha2",
2107+ "m.megolm.v1.aes-sha2"
2108+ ],
2109+ "device_id": "ALICEDEVICE1601",
2110+ "keys": {
2111+ "curve25519:ALICEDEVICE1601": "HNbvuKpXdDLnL7HtpDRT6zZPq4jv6D58gXz9nxjfUhY",
2112+ "ed25519:ALICEDEVICE1601": "frDsUAlTVX2q9dKHsVoipJAn4ZIYEmKYoxXCRlg/tnw"
2113+ },
2114+ "signatures": {
2115+ "@alice_1601:hs1": {
2116+ "ed25519:ALICEDEVICE1601": "P9GbomsyMJTNavM+vLrlGXn6FQep+79f8Lg7aBy93FFgwqzt3EHOTxDh0MgdN2OJOHRz8AEKZmJdhqjpWmI1AQ"
2117+ }
2118+ },
2119+ "user_id": "@alice_1601:hs1",
2120+ "unsigned": {}
2121+ }
2122+ },
2123+ "@alice_1602:hs1": {
2124+ "ALICEDEVICE1602": {
2125+ "algorithms": [
2126+ "m.olm.v1.curve25519-aes-sha2",
2127+ "m.megolm.v1.aes-sha2"
2128+ ],
2129+ "device_id": "ALICEDEVICE1602",
2130+ "keys": {
2131+ "curve25519:ALICEDEVICE1602": "oUQuxA1vodPLr/EjD2a26qmpC6TWbWZamoDuBJWhPjY",
2132+ "ed25519:ALICEDEVICE1602": "Ed00aOz+gg3Ck5gDtIwnixnIC3Bk4MnjDravqLp/viU"
2133+ },
2134+ "signatures": {
2135+ "@alice_1602:hs1": {
2136+ "ed25519:ALICEDEVICE1602": "WvXyq0L99jtENxDGZ7QV5MGpgbXb70hOw70OHk9xmStNBMaIbFz4JTySVRy7zxXEOlvstCPctxAGvN96QGW5BA"
2137+ }
2138+ },
2139+ "user_id": "@alice_1602:hs1",
2140+ "unsigned": {}
2141+ }
2142+ },
2143+ "@alice_1609:hs1": {
2144+ "ALICEDEVICE1609": {
2145+ "algorithms": [
2146+ "m.olm.v1.curve25519-aes-sha2",
2147+ "m.megolm.v1.aes-sha2"
2148+ ],
2149+ "device_id": "ALICEDEVICE1609",
2150+ "keys": {
2151+ "curve25519:ALICEDEVICE1609": "rZM1P9NZpxC7TopafFnRcixjUwM7MWdeBIY1sRJetH0",
2152+ "ed25519:ALICEDEVICE1609": "yx9WRE9EImDBE4Hu/qjK4jOhjqu9LeTsM3sdIVyb4ZI"
2153+ },
2154+ "signatures": {
2155+ "@alice_1609:hs1": {
2156+ "ed25519:ALICEDEVICE1609": "ldNE1uXzHhTX2FlrIbf3/LGsX5vhnIts2sAa8cZrfWbKNRe6lFiuVDHDMPlT84/U3Pq8JYrBpBzlYdngqhJcDQ"
2157+ }
2158+ },
2159+ "user_id": "@alice_1609:hs1",
2160+ "unsigned": {}
2161+ }
2162+ },
2163+ "@alice_160:hs1": {
2164+ "ALICEDEVICE160": {
2165+ "algorithms": [
2166+ "m.olm.v1.curve25519-aes-sha2",
2167+ "m.megolm.v1.aes-sha2"
2168+ ],
2169+ "device_id": "ALICEDEVICE160",
2170+ "keys": {
2171+ "curve25519:ALICEDEVICE160": "UGQGAW6dTLKYz39WsgvUhB5VeML19Jq+/q1YT/DixSo",
2172+ "ed25519:ALICEDEVICE160": "tj2rSB9+6vgVNhALjqqYL/xUrJf9ivNaz3i5RF0aUUQ"
2173+ },
2174+ "signatures": {
2175+ "@alice_160:hs1": {
2176+ "ed25519:ALICEDEVICE160": "bcOSXag5SL2qKNYDo4HapG/19zjiGo249IsIf5uOlPxQRKSLh5UD/39EkLamgYZSatDVIAW4LFdZRdej2y38CQ"
2177+ }
2178+ },
2179+ "user_id": "@alice_160:hs1",
2180+ "unsigned": {}
2181+ }
2182+ },
2183+ "@alice_1610:hs1": {
2184+ "ALICEDEVICE1610": {
2185+ "algorithms": [
2186+ "m.olm.v1.curve25519-aes-sha2",
2187+ "m.megolm.v1.aes-sha2"
2188+ ],
2189+ "device_id": "ALICEDEVICE1610",
2190+ "keys": {
2191+ "curve25519:ALICEDEVICE1610": "SgWOKpFZpz86+vJUW5CYWM7VToYCUxiiLVbLjk4AgCk",
2192+ "ed25519:ALICEDEVICE1610": "BAA7ulxMOx2pFkdNcl5jp4f4gumlYIylJtN2q0rmJ7c"
2193+ },
2194+ "signatures": {
2195+ "@alice_1610:hs1": {
2196+ "ed25519:ALICEDEVICE1610": "JwjI1NCXuRBB7m1ccmyb6hMCCEtH2CZTWynfCwoj6R0HeDtom23kl2rQTZSmCthex/UhgDxuvCvvSnH8hFfhBg"
2197+ }
2198+ },
2199+ "user_id": "@alice_1610:hs1",
2200+ "unsigned": {}
2201+ }
2202+ },
2203+ "@alice_1624:hs1": {
2204+ "ALICEDEVICE1624": {
2205+ "algorithms": [
2206+ "m.olm.v1.curve25519-aes-sha2",
2207+ "m.megolm.v1.aes-sha2"
2208+ ],
2209+ "device_id": "ALICEDEVICE1624",
2210+ "keys": {
2211+ "curve25519:ALICEDEVICE1624": "J8yAgS/172AVYgeYORkgi5b8ePkhG1GTGOgyRXDX61U",
2212+ "ed25519:ALICEDEVICE1624": "kjV7k5T8MG9oTQFdtJd5ALUc79D3Iy3/HmipNzMbN+Q"
2213+ },
2214+ "signatures": {
2215+ "@alice_1624:hs1": {
2216+ "ed25519:ALICEDEVICE1624": "EMij5wyYNz/e8XO+3APLlf2CIahpufzHodd7p38qUYHabKL8sn/zi02oJHzrnql/AsCaCW/YD346A+d2sc7pCg"
2217+ }
2218+ },
2219+ "user_id": "@alice_1624:hs1",
2220+ "unsigned": {}
2221+ }
2222+ },
2223+ "@alice_1636:hs1": {
2224+ "ALICEDEVICE1636": {
2225+ "algorithms": [
2226+ "m.olm.v1.curve25519-aes-sha2",
2227+ "m.megolm.v1.aes-sha2"
2228+ ],
2229+ "device_id": "ALICEDEVICE1636",
2230+ "keys": {
2231+ "curve25519:ALICEDEVICE1636": "Ce8fp2k0Y7HemCV7/sP8gimB16NkorSOlIJ3mx67O38",
2232+ "ed25519:ALICEDEVICE1636": "hLLMNfCxRQ642DJX3aobpZ/wipRj/egdYw8LIt8z/CI"
2233+ },
2234+ "signatures": {
2235+ "@alice_1636:hs1": {
2236+ "ed25519:ALICEDEVICE1636": "QUv21qB1CO1AaCcl+Zarr8bbJN+Xk6nmg211th0KEu1f1B2x8w5DQ33GKnwWuDUmG4/DFHoxPYZca/Vdv2W5CA"
2237+ }
2238+ },
2239+ "user_id": "@alice_1636:hs1",
2240+ "unsigned": {}
2241+ }
2242+ },
2243+ "@alice_163:hs1": {
2244+ "ALICEDEVICE163": {
2245+ "algorithms": [
2246+ "m.olm.v1.curve25519-aes-sha2",
2247+ "m.megolm.v1.aes-sha2"
2248+ ],
2249+ "device_id": "ALICEDEVICE163",
2250+ "keys": {
2251+ "curve25519:ALICEDEVICE163": "JOUxOhgPoyWs93RFeRgrGppQvLk+qu+5xM0MhWCPxWo",
2252+ "ed25519:ALICEDEVICE163": "hbZWJqs7ScEL31Dg07MBZ81aiiRMdP0keQUI7H7UZeE"
2253+ },
2254+ "signatures": {
2255+ "@alice_163:hs1": {
2256+ "ed25519:ALICEDEVICE163": "CbINJ8Vggo/wtWW9JYMj2F6QXp1hM7pVjeXttrTU12JSSzyLteqwragaiCpt8phsAB26Rfv7UUVr29/+s89dAg"
2257+ }
2258+ },
2259+ "user_id": "@alice_163:hs1",
2260+ "unsigned": {}
2261+ }
2262+ },
2263+ "@alice_1664:hs1": {
2264+ "ALICEDEVICE1664": {
2265+ "algorithms": [
2266+ "m.olm.v1.curve25519-aes-sha2",
2267+ "m.megolm.v1.aes-sha2"
2268+ ],
2269+ "device_id": "ALICEDEVICE1664",
2270+ "keys": {
2271+ "curve25519:ALICEDEVICE1664": "3KEdNZpaGc3aYrbrKhMRhxHtpS5jz9XW9qJEMz8YZ3E",
2272+ "ed25519:ALICEDEVICE1664": "FwN5hqX9JqigqfXBu49NHqh8UqMJ6miM3uveTL1lm1A"
2273+ },
2274+ "signatures": {
2275+ "@alice_1664:hs1": {
2276+ "ed25519:ALICEDEVICE1664": "qwSBB/aHULSU5QGD5JwycWBmfdn9ZFk+/UQ4rMY8EbIYFycQCMBr0Jv5F2pd5KNTo2LmaN06uvsL+bDkhZsoAA"
2277+ }
2278+ },
2279+ "user_id": "@alice_1664:hs1",
2280+ "unsigned": {}
2281+ }
2282+ },
2283+ "@alice_1672:hs1": {
2284+ "ALICEDEVICE1672": {
2285+ "algorithms": [
2286+ "m.olm.v1.curve25519-aes-sha2",
2287+ "m.megolm.v1.aes-sha2"
2288+ ],
2289+ "device_id": "ALICEDEVICE1672",
2290+ "keys": {
2291+ "curve25519:ALICEDEVICE1672": "NohKSRzWweVZftDu4btwB3sHD3UK/DjNbcNRuQwQGDw",
2292+ "ed25519:ALICEDEVICE1672": "jf/Ev0KGVXs+/9D2kSPkcm3aVgP65RNC1sczSqWhLC4"
2293+ },
2294+ "signatures": {
2295+ "@alice_1672:hs1": {
2296+ "ed25519:ALICEDEVICE1672": "LtMYi0s0WBYJ61wU+cNGKBS0nuL1ZhRSL3v5ApeA7C+9PXBT1eSGBJdIWlp4lQha7oA+c5M0rNjmOEwpXeI5BQ"
2297+ }
2298+ },
2299+ "user_id": "@alice_1672:hs1",
2300+ "unsigned": {}
2301+ }
2302+ },
2303+ "@alice_1699:hs1": {
2304+ "ALICEDEVICE1699": {
2305+ "algorithms": [
2306+ "m.olm.v1.curve25519-aes-sha2",
2307+ "m.megolm.v1.aes-sha2"
2308+ ],
2309+ "device_id": "ALICEDEVICE1699",
2310+ "keys": {
2311+ "curve25519:ALICEDEVICE1699": "ItIcImEebIGjqNXAbBJpsOr529OijaOW4M1o0ABkfyQ",
2312+ "ed25519:ALICEDEVICE1699": "YqIM1PWgKIvLPh2/Qp/u3qiQEkQwaHdA3/ptTmNQ26E"
2313+ },
2314+ "signatures": {
2315+ "@alice_1699:hs1": {
2316+ "ed25519:ALICEDEVICE1699": "upDwEJHs5OsuntWonRcjM8G0YhC2ZNEpaC98iVv4wtZYz6Sr+qg5tGoA8o0Ym4s1zgs+kCD9Z9/UaLyDDRqkDA"
2317+ }
2318+ },
2319+ "user_id": "@alice_1699:hs1",
2320+ "unsigned": {}
2321+ }
2322+ },
2323+ "@alice_1702:hs1": {
2324+ "ALICEDEVICE1702": {
2325+ "algorithms": [
2326+ "m.olm.v1.curve25519-aes-sha2",
2327+ "m.megolm.v1.aes-sha2"
2328+ ],
2329+ "device_id": "ALICEDEVICE1702",
2330+ "keys": {
2331+ "curve25519:ALICEDEVICE1702": "ZLROZXxtOmXIm1B9VKrWfAszDdfnYSxZ4CqVjvlRjBo",
2332+ "ed25519:ALICEDEVICE1702": "PjnSCLiMhv/7sFPFFPt3uc+d5lYnEyqQ1xDADMlQzZo"
2333+ },
2334+ "signatures": {
2335+ "@alice_1702:hs1": {
2336+ "ed25519:ALICEDEVICE1702": "/GSehr0790X2eKaVfRq7m+H5GXFJiVoF1GGBayx7kdperG38BQEI3fgdE0jJCxcV/qw8v9JDHX4Ojdft3NaSBg"
2337+ }
2338+ },
2339+ "user_id": "@alice_1702:hs1",
2340+ "unsigned": {}
2341+ }
2342+ },
2343+ "@alice_1703:hs1": {
2344+ "ALICEDEVICE1703": {
2345+ "algorithms": [
2346+ "m.olm.v1.curve25519-aes-sha2",
2347+ "m.megolm.v1.aes-sha2"
2348+ ],
2349+ "device_id": "ALICEDEVICE1703",
2350+ "keys": {
2351+ "curve25519:ALICEDEVICE1703": "+kbRG9B0CbxlVb9HTKVgIo19/pKUG8tPz5qZ4cGBbRU",
2352+ "ed25519:ALICEDEVICE1703": "CEFGUNbxY3wTCx/azSxrnyO5HKFKfHcRwvbN0oyjCl4"
2353+ },
2354+ "signatures": {
2355+ "@alice_1703:hs1": {
2356+ "ed25519:ALICEDEVICE1703": "9tcIQcrwD7DDZnpeSawxj65EJoOsF1K7IBUQyWQAo8XtD1JSQ95glWZCEzx6C8Msck/iQ6GWFjQacDGsxh+sCw"
2357+ }
2358+ },
2359+ "user_id": "@alice_1703:hs1",
2360+ "unsigned": {}
2361+ }
2362+ },
2363+ "@alice_1708:hs1": {
2364+ "ALICEDEVICE1708": {
2365+ "algorithms": [
2366+ "m.olm.v1.curve25519-aes-sha2",
2367+ "m.megolm.v1.aes-sha2"
2368+ ],
2369+ "device_id": "ALICEDEVICE1708",
2370+ "keys": {
2371+ "curve25519:ALICEDEVICE1708": "fi5MU2h8iCjTjkgGuVOy8PdEfOP9+K9emKo5fVmLpUA",
2372+ "ed25519:ALICEDEVICE1708": "B6IzQYL2/eocai6PtYwo2yibo5cXw8R+yD1dovTUEGQ"
2373+ },
2374+ "signatures": {
2375+ "@alice_1708:hs1": {
2376+ "ed25519:ALICEDEVICE1708": "eHmsWBpaCU42SZ0eirZQCbcgSXQiYtTjzmE1ziyVBbC75wY/DGk4Yt5f7tarxCpVtvwQ/cOm+JsMQ1LMeQKxAg"
2377+ }
2378+ },
2379+ "user_id": "@alice_1708:hs1",
2380+ "unsigned": {}
2381+ }
2382+ },
2383+ "@alice_170:hs1": {
2384+ "ALICEDEVICE170": {
2385+ "algorithms": [
2386+ "m.olm.v1.curve25519-aes-sha2",
2387+ "m.megolm.v1.aes-sha2"
2388+ ],
2389+ "device_id": "ALICEDEVICE170",
2390+ "keys": {
2391+ "curve25519:ALICEDEVICE170": "BAf5MQoBvJ2Vcy+oZh6iHFAwOWU7DeiWm/rAPquPVWQ",
2392+ "ed25519:ALICEDEVICE170": "9iJlp3uRzON6yXXrGfySs3tkuKMef+uogab1FufZN/Y"
2393+ },
2394+ "signatures": {
2395+ "@alice_170:hs1": {
2396+ "ed25519:ALICEDEVICE170": "mzm/Ofj6raMmiQOvMdO/wOppGSQgT/RkhcrAKhykhf3fyNmjfSuba5T4RgHARlZGM2KPR+0/HTzi7azg+Wr5Dg"
2397+ }
2398+ },
2399+ "user_id": "@alice_170:hs1",
2400+ "unsigned": {}
2401+ }
2402+ },
2403+ "@alice_1712:hs1": {
2404+ "ALICEDEVICE1712": {
2405+ "algorithms": [
2406+ "m.olm.v1.curve25519-aes-sha2",
2407+ "m.megolm.v1.aes-sha2"
2408+ ],
2409+ "device_id": "ALICEDEVICE1712",
2410+ "keys": {
2411+ "curve25519:ALICEDEVICE1712": "iet2hSBV8i8D1PBWwJVWnhcMy1i65F0rGqHy7DGt7TA",
2412+ "ed25519:ALICEDEVICE1712": "/I8pzRSDsCOQNun3AX0pBSd8c2lpJzFnp7zMUomU6ts"
2413+ },
2414+ "signatures": {
2415+ "@alice_1712:hs1": {
2416+ "ed25519:ALICEDEVICE1712": "400skLO1NEnoD3j3xehgGFXaxSgQUnVh+EowqjwrJVPUPwGZbHI6jwCJD787a71sXMNMLwtAraNd7GafnYhMBQ"
2417+ }
2418+ },
2419+ "user_id": "@alice_1712:hs1",
2420+ "unsigned": {}
2421+ }
2422+ },
2423+ "@alice_1740:hs1": {
2424+ "ALICEDEVICE1740": {
2425+ "algorithms": [
2426+ "m.olm.v1.curve25519-aes-sha2",
2427+ "m.megolm.v1.aes-sha2"
2428+ ],
2429+ "device_id": "ALICEDEVICE1740",
2430+ "keys": {
2431+ "curve25519:ALICEDEVICE1740": "X9vrX44gutVmZWKGR79VZ/p+VdC+uIVs+AdNafFIPCg",
2432+ "ed25519:ALICEDEVICE1740": "RRCqd4VvzRVgsHprBRaeXtOGNdKmXABTX2RPUjeucp8"
2433+ },
2434+ "signatures": {
2435+ "@alice_1740:hs1": {
2436+ "ed25519:ALICEDEVICE1740": "o48goWJyAvCT1beg2PisfOBvnQD4lEFRKv8i2GF8DMx7gAcIKUAdQgJePhp1GFQ2AY03DWfXU4deuFmbfbOgAg"
2437+ }
2438+ },
2439+ "user_id": "@alice_1740:hs1",
2440+ "unsigned": {}
2441+ }
2442+ },
2443+ "@alice_1741:hs1": {
2444+ "ALICEDEVICE1741": {
2445+ "algorithms": [
2446+ "m.olm.v1.curve25519-aes-sha2",
2447+ "m.megolm.v1.aes-sha2"
2448+ ],
2449+ "device_id": "ALICEDEVICE1741",
2450+ "keys": {
2451+ "curve25519:ALICEDEVICE1741": "QvVYcFZ6M5rsMSzlQl1XJzZUWoB1RaCUFoX7ZzGZpTI",
2452+ "ed25519:ALICEDEVICE1741": "AaDUzW4i5NkUIJm3OQ71W85K5gbVd7HYFpept6vxiC4"
2453+ },
2454+ "signatures": {
2455+ "@alice_1741:hs1": {
2456+ "ed25519:ALICEDEVICE1741": "9LEs68e0iOfilB2BFtF+fjyLqu8GUBEhAm7uuK8+3esP1Fu/d/OscuCfBFWcGbpPPAq9X7VdR8fr5i+8vvV3Bg"
2457+ }
2458+ },
2459+ "user_id": "@alice_1741:hs1",
2460+ "unsigned": {}
2461+ }
2462+ },
2463+ "@alice_1746:hs1": {
2464+ "ALICEDEVICE1746": {
2465+ "algorithms": [
2466+ "m.olm.v1.curve25519-aes-sha2",
2467+ "m.megolm.v1.aes-sha2"
2468+ ],
2469+ "device_id": "ALICEDEVICE1746",
2470+ "keys": {
2471+ "curve25519:ALICEDEVICE1746": "JU6K2Dy1Y3tEVsPgXexAbZUKtj/FT9LFRUKQsCPCOH4",
2472+ "ed25519:ALICEDEVICE1746": "V6xtiBsqQgSttmN+JAqYFbtkX01VWpMfvZ5OEvdYwjs"
2473+ },
2474+ "signatures": {
2475+ "@alice_1746:hs1": {
2476+ "ed25519:ALICEDEVICE1746": "gm1/cc9pAFk7Tltrd50AsIFMh5AxorJu08vddQmIfRP85j6hUwq02XQtuY6rGzxHe2zbOujO4VaYZM9BR2B8BA"
2477+ }
2478+ },
2479+ "user_id": "@alice_1746:hs1",
2480+ "unsigned": {}
2481+ }
2482+ },
2483+ "@alice_1751:hs1": {
2484+ "ALICEDEVICE1751": {
2485+ "algorithms": [
2486+ "m.olm.v1.curve25519-aes-sha2",
2487+ "m.megolm.v1.aes-sha2"
2488+ ],
2489+ "device_id": "ALICEDEVICE1751",
2490+ "keys": {
2491+ "curve25519:ALICEDEVICE1751": "9I0apO7R9ADa2CTk3iOEjKfoDy4bc8sjjZV7/jlYCA0",
2492+ "ed25519:ALICEDEVICE1751": "PEushL7ijzi4hkfL0MN0TnloOfcd93VKMp4X+LU+frw"
2493+ },
2494+ "signatures": {
2495+ "@alice_1751:hs1": {
2496+ "ed25519:ALICEDEVICE1751": "ifrno0+HkcPKbacyZuPB9wSHOXh+oiQUpie9CpnP3EwbxxA+TMfgHgfcb1EgE+TlmFjRMrYNqEgg/zCC+6DIBQ"
2497+ }
2498+ },
2499+ "user_id": "@alice_1751:hs1",
2500+ "unsigned": {}
2501+ }
2502+ },
2503+ "@alice_1755:hs1": {
2504+ "ALICEDEVICE1755": {
2505+ "algorithms": [
2506+ "m.olm.v1.curve25519-aes-sha2",
2507+ "m.megolm.v1.aes-sha2"
2508+ ],
2509+ "device_id": "ALICEDEVICE1755",
2510+ "keys": {
2511+ "curve25519:ALICEDEVICE1755": "VIF5NjXxCBAWLU7E96aKg8G9BmlNOVydv/6nUqDQ6yA",
2512+ "ed25519:ALICEDEVICE1755": "K/ilTCqbh64VHH+/9sQ1BvT3G6beqB9uExrdxLoWc9g"
2513+ },
2514+ "signatures": {
2515+ "@alice_1755:hs1": {
2516+ "ed25519:ALICEDEVICE1755": "jhXLkdV7PAVHcbz0rKqUBLfxJR2RmUwHk56N7L+gJIwxwawT6xXrf663a2npgCZtmh1TxpW2Z6n8fXggPPdKCw"
2517+ }
2518+ },
2519+ "user_id": "@alice_1755:hs1",
2520+ "unsigned": {}
2521+ }
2522+ },
2523+ "@alice_1758:hs1": {
2524+ "ALICEDEVICE1758": {
2525+ "algorithms": [
2526+ "m.olm.v1.curve25519-aes-sha2",
2527+ "m.megolm.v1.aes-sha2"
2528+ ],
2529+ "device_id": "ALICEDEVICE1758",
2530+ "keys": {
2531+ "curve25519:ALICEDEVICE1758": "c1VRZQSKrRj9j7J7o/fY0f1XfSaIiLSvSK/KYo26PwM",
2532+ "ed25519:ALICEDEVICE1758": "I3lOkUB8VeCUMfu0i4fci9xaCCIXd2wi1nIdGTMA40E"
2533+ },
2534+ "signatures": {
2535+ "@alice_1758:hs1": {
2536+ "ed25519:ALICEDEVICE1758": "SrTmnUUcYyOvbPVT7k77Ypnn166/aqtvGt4RMsTrbvlQOhqAeFaiVSKJJAhKFs+b6ptedBkC6pF+eIJj64AaDw"
2537+ }
2538+ },
2539+ "user_id": "@alice_1758:hs1",
2540+ "unsigned": {}
2541+ }
2542+ },
2543+ "@alice_1761:hs1": {
2544+ "ALICEDEVICE1761": {
2545+ "algorithms": [
2546+ "m.olm.v1.curve25519-aes-sha2",
2547+ "m.megolm.v1.aes-sha2"
2548+ ],
2549+ "device_id": "ALICEDEVICE1761",
2550+ "keys": {
2551+ "curve25519:ALICEDEVICE1761": "AJJTU2d0c011FGQ76Eiz3WRtBmx6gSt++3T70WZmtAc",
2552+ "ed25519:ALICEDEVICE1761": "kfJzC9OyQCfNfQ6XUqth8s8QsHsR1kRffb7XFwoekDo"
2553+ },
2554+ "signatures": {
2555+ "@alice_1761:hs1": {
2556+ "ed25519:ALICEDEVICE1761": "xC8qT5TS3q4HxECEohwDcC+34mxXIETRi8iAkeuVlEtOMjfxVubEl73SAjvz0tw7t8ESMyZ2l8CGsQKof90QDQ"
2557+ }
2558+ },
2559+ "user_id": "@alice_1761:hs1",
2560+ "unsigned": {}
2561+ }
2562+ },
2563+ "@alice_1777:hs1": {
2564+ "ALICEDEVICE1777": {
2565+ "algorithms": [
2566+ "m.olm.v1.curve25519-aes-sha2",
2567+ "m.megolm.v1.aes-sha2"
2568+ ],
2569+ "device_id": "ALICEDEVICE1777",
2570+ "keys": {
2571+ "curve25519:ALICEDEVICE1777": "GkYo+NNawCossp25+CJ+Zh6Ejmu/+D5ixqTpyIPbwQM",
2572+ "ed25519:ALICEDEVICE1777": "ihC/x13bNXXjajfxRDb63NnShim6vQN45zHx7UzEWdY"
2573+ },
2574+ "signatures": {
2575+ "@alice_1777:hs1": {
2576+ "ed25519:ALICEDEVICE1777": "nFsisIpt392qGfdPe7xjsHpJSLbFohFZnEvaY4gKH2eOS+osAXmIrYEC73u3yzsQRTU5cXV3YQ0/dNF8McPBBA"
2577+ }
2578+ },
2579+ "user_id": "@alice_1777:hs1",
2580+ "unsigned": {}
2581+ }
2582+ },
2583+ "@alice_1784:hs1": {
2584+ "ALICEDEVICE1784": {
2585+ "algorithms": [
2586+ "m.olm.v1.curve25519-aes-sha2",
2587+ "m.megolm.v1.aes-sha2"
2588+ ],
2589+ "device_id": "ALICEDEVICE1784",
2590+ "keys": {
2591+ "curve25519:ALICEDEVICE1784": "byBX+pKCkuGIysHEmQVFkj9O8lOdgjzfLFzM9mGZX0M",
2592+ "ed25519:ALICEDEVICE1784": "hE8vGQJXYZcZ9wHCqEextTMsrONcSoU0L1XJE6Nr2Ec"
2593+ },
2594+ "signatures": {
2595+ "@alice_1784:hs1": {
2596+ "ed25519:ALICEDEVICE1784": "ZqqQgBgBkQiUwOgcwYS5Ryy7LmZ/YsvNl4RXcTMHvdV9mj01tgCi8S1uKS5VzsHq4PgIUEWF93aSe9DD+PkRCQ"
2597+ }
2598+ },
2599+ "user_id": "@alice_1784:hs1",
2600+ "unsigned": {}
2601+ }
2602+ },
2603+ "@alice_1791:hs1": {
2604+ "ALICEDEVICE1791": {
2605+ "algorithms": [
2606+ "m.olm.v1.curve25519-aes-sha2",
2607+ "m.megolm.v1.aes-sha2"
2608+ ],
2609+ "device_id": "ALICEDEVICE1791",
2610+ "keys": {
2611+ "curve25519:ALICEDEVICE1791": "3XzD5Njk+19R/+L0rd59VB+NZALrDiVf0v9U54VN1Cw",
2612+ "ed25519:ALICEDEVICE1791": "FtbgnhlV7obM9QgPY8472sFjsccENiQ8FH92a1QH0Zg"
2613+ },
2614+ "signatures": {
2615+ "@alice_1791:hs1": {
2616+ "ed25519:ALICEDEVICE1791": "JPQxx63yxP1z5DbgZi4+ZyvO7ccepXt41PQxGFZ1UFdqz3q7YOHZiKUAl1AtM42qDUFsRBahUgK04s26XZdSAA"
2617+ }
2618+ },
2619+ "user_id": "@alice_1791:hs1",
2620+ "unsigned": {}
2621+ }
2622+ },
2623+ "@alice_1793:hs1": {
2624+ "ALICEDEVICE1793": {
2625+ "algorithms": [
2626+ "m.olm.v1.curve25519-aes-sha2",
2627+ "m.megolm.v1.aes-sha2"
2628+ ],
2629+ "device_id": "ALICEDEVICE1793",
2630+ "keys": {
2631+ "curve25519:ALICEDEVICE1793": "ROkuzyKUO4htuba5I27BtJGOLvhc8KdbSqxM1JVfvAk",
2632+ "ed25519:ALICEDEVICE1793": "irgNjQzYcu5IQFsfvsGFOesmw5lm/FDUjWJhxIkD51k"
2633+ },
2634+ "signatures": {
2635+ "@alice_1793:hs1": {
2636+ "ed25519:ALICEDEVICE1793": "u0Rn9s2uDpNM+jb5QSw1pN2UNFsdTHPyi1EVFkIeZE5xV0KJVd2AwiDbXjdoM5fgyodd2WZqDZPOKeg3iSpLCg"
2637+ }
2638+ },
2639+ "user_id": "@alice_1793:hs1",
2640+ "unsigned": {}
2641+ }
2642+ },
2643+ "@alice_1800:hs1": {
2644+ "ALICEDEVICE1800": {
2645+ "algorithms": [
2646+ "m.olm.v1.curve25519-aes-sha2",
2647+ "m.megolm.v1.aes-sha2"
2648+ ],
2649+ "device_id": "ALICEDEVICE1800",
2650+ "keys": {
2651+ "curve25519:ALICEDEVICE1800": "WXOA582n+enRTtS+Zm6KaKB42CL/ssP7y9ECVHgk+UI",
2652+ "ed25519:ALICEDEVICE1800": "hGBwyfvYdwk7PBlC6lBTevOs7gc0tdnq1Rep+qOuqgA"
2653+ },
2654+ "signatures": {
2655+ "@alice_1800:hs1": {
2656+ "ed25519:ALICEDEVICE1800": "qPiS04Wzv8J0twSXQp442GI0nkI+Cd+7f9d835WRJQ1A4G3Bzh7/HfjMU9ShI3c1P554PJVE5V8rzTl0S9D5BQ"
2657+ }
2658+ },
2659+ "user_id": "@alice_1800:hs1",
2660+ "unsigned": {}
2661+ }
2662+ },
2663+ "@alice_1810:hs1": {
2664+ "ALICEDEVICE1810": {
2665+ "algorithms": [
2666+ "m.olm.v1.curve25519-aes-sha2",
2667+ "m.megolm.v1.aes-sha2"
2668+ ],
2669+ "device_id": "ALICEDEVICE1810",
2670+ "keys": {
2671+ "curve25519:ALICEDEVICE1810": "iGj7C+AZwo9Knx8ggvwX+cgAn28efCWYMRR/5ht55DE",
2672+ "ed25519:ALICEDEVICE1810": "aWjQILCyHG6WqyPuZJThq7X+w3YgKmQ7Tiz3HQ/Bw4U"
2673+ },
2674+ "signatures": {
2675+ "@alice_1810:hs1": {
2676+ "ed25519:ALICEDEVICE1810": "Sv0yGgj6r9ZZsH3MoYRDQDZbUra6ybKLfHPcie74Opl3Os6WeCFWzYIJs4+QgfUWg+aig1Y55BvlVEcuJhbhAA"
2677+ }
2678+ },
2679+ "user_id": "@alice_1810:hs1",
2680+ "unsigned": {}
2681+ }
2682+ },
2683+ "@alice_1816:hs1": {
2684+ "ALICEDEVICE1816": {
2685+ "algorithms": [
2686+ "m.olm.v1.curve25519-aes-sha2",
2687+ "m.megolm.v1.aes-sha2"
2688+ ],
2689+ "device_id": "ALICEDEVICE1816",
2690+ "keys": {
2691+ "curve25519:ALICEDEVICE1816": "8NeGD1DGs2q5v2pss16Gyvf3vsRIaVUbEUH43VEW0iY",
2692+ "ed25519:ALICEDEVICE1816": "myfAjrVFx2m0owML0L/VLDL28qp3nOr7vyxvxi5OnAg"
2693+ },
2694+ "signatures": {
2695+ "@alice_1816:hs1": {
2696+ "ed25519:ALICEDEVICE1816": "HRchtuUI52aGU5x98rcUMzfa/+mMmgTjFKGeWgI9x8jlPt52HHhtI8rwxZzyqL1u6MKEUQGP3tiZiZuAFqIzDA"
2697+ }
2698+ },
2699+ "user_id": "@alice_1816:hs1",
2700+ "unsigned": {}
2701+ }
2702+ },
2703+ "@alice_1823:hs1": {
2704+ "ALICEDEVICE1823": {
2705+ "algorithms": [
2706+ "m.olm.v1.curve25519-aes-sha2",
2707+ "m.megolm.v1.aes-sha2"
2708+ ],
2709+ "device_id": "ALICEDEVICE1823",
2710+ "keys": {
2711+ "curve25519:ALICEDEVICE1823": "uVkOVTQwgXuHbMi9XVQQ+nJyuCJzvJ4igNIBeZNyTnE",
2712+ "ed25519:ALICEDEVICE1823": "EpnAY9syxGhlJldhsqqaEtNGRjvqSV12L9KtZwhq/ks"
2713+ },
2714+ "signatures": {
2715+ "@alice_1823:hs1": {
2716+ "ed25519:ALICEDEVICE1823": "wKHJhhz/3CCqsBTGpj+WL3jaeHi8U0/Pfs37w6P+5HP0CBFi/JOmBsKl1m8qUMx/dAUvaELdHCkVp9paAmJSBQ"
2717+ }
2718+ },
2719+ "user_id": "@alice_1823:hs1",
2720+ "unsigned": {}
2721+ }
2722+ },
2723+ "@alice_1825:hs1": {
2724+ "ALICEDEVICE1825": {
2725+ "algorithms": [
2726+ "m.olm.v1.curve25519-aes-sha2",
2727+ "m.megolm.v1.aes-sha2"
2728+ ],
2729+ "device_id": "ALICEDEVICE1825",
2730+ "keys": {
2731+ "curve25519:ALICEDEVICE1825": "1NQQilRlk+2NZRPuz6EimRpt7EQ+Q2N3Tn68d3YBqnE",
2732+ "ed25519:ALICEDEVICE1825": "kB3mzI3dnhP9ERXWKPfu1aMCwrtnHX5h3PTqfd9rSBM"
2733+ },
2734+ "signatures": {
2735+ "@alice_1825:hs1": {
2736+ "ed25519:ALICEDEVICE1825": "zHJJD16QkwXtPCjFjv+CD+Ae/Lvf+Kq3bbRnmwIhM0j0yUFrDIR/Y+rJjDF2REB0U7t00YM+L7guqyzacSI+CQ"
2737+ }
2738+ },
2739+ "user_id": "@alice_1825:hs1",
2740+ "unsigned": {}
2741+ }
2742+ },
2743+ "@alice_1829:hs1": {
2744+ "ALICEDEVICE1829": {
2745+ "algorithms": [
2746+ "m.olm.v1.curve25519-aes-sha2",
2747+ "m.megolm.v1.aes-sha2"
2748+ ],
2749+ "device_id": "ALICEDEVICE1829",
2750+ "keys": {
2751+ "curve25519:ALICEDEVICE1829": "tvOLISoY85vos3ureHi2DzzB8ISQBDwvUF6Q1l9e9kA",
2752+ "ed25519:ALICEDEVICE1829": "h9SQdoDblBLHEXp95IWYWr3xfK4Fd2DLuhylnLEcXmA"
2753+ },
2754+ "signatures": {
2755+ "@alice_1829:hs1": {
2756+ "ed25519:ALICEDEVICE1829": "6URENAJfQCW60XT7KtubarP110W2yrPfW8MeX/wYtd04gmAOgCkndZNnRg2QYZ2+w3h4fvJDVDDkv7UQsNwgCw"
2757+ }
2758+ },
2759+ "user_id": "@alice_1829:hs1",
2760+ "unsigned": {}
2761+ }
2762+ },
2763+ "@alice_1832:hs1": {
2764+ "ALICEDEVICE1832": {
2765+ "algorithms": [
2766+ "m.olm.v1.curve25519-aes-sha2",
2767+ "m.megolm.v1.aes-sha2"
2768+ ],
2769+ "device_id": "ALICEDEVICE1832",
2770+ "keys": {
2771+ "curve25519:ALICEDEVICE1832": "ibmdaK/Bu1+8qjK4F6XtBmX9Myq8MTp4O69HfhgXfmI",
2772+ "ed25519:ALICEDEVICE1832": "oQ5at0FeS+Vvs3sVqM3iCD9HMcoWPqN8pnh/oqon0LY"
2773+ },
2774+ "signatures": {
2775+ "@alice_1832:hs1": {
2776+ "ed25519:ALICEDEVICE1832": "1Pspim77fFlGgFQGXuXfT4WyaiZpWABfpIWxec4E1H4/NvfDV3iG7+ymxqls0HwpgWz1vVb54e2zY15ldpEaAA"
2777+ }
2778+ },
2779+ "user_id": "@alice_1832:hs1",
2780+ "unsigned": {}
2781+ }
2782+ },
2783+ "@alice_1843:hs1": {
2784+ "ALICEDEVICE1843": {
2785+ "algorithms": [
2786+ "m.olm.v1.curve25519-aes-sha2",
2787+ "m.megolm.v1.aes-sha2"
2788+ ],
2789+ "device_id": "ALICEDEVICE1843",
2790+ "keys": {
2791+ "curve25519:ALICEDEVICE1843": "qqR1kvHnnS6TplyGFqYkWTGj6zxacMufhE3tcu+CLiQ",
2792+ "ed25519:ALICEDEVICE1843": "ROs+m50ZyrBdd0evf0xG8AeM9wrWZA5/prgQMg2uKWo"
2793+ },
2794+ "signatures": {
2795+ "@alice_1843:hs1": {
2796+ "ed25519:ALICEDEVICE1843": "8Ij1xFLDOCThGcPqlt1vYFv/XIRajUUCq+P7z5hux5FRsZgPLWP2Huv8U5I5R5VFSMSm2oNwABIGCOfbVsItBg"
2797+ }
2798+ },
2799+ "user_id": "@alice_1843:hs1",
2800+ "unsigned": {}
2801+ }
2802+ },
2803+ "@alice_1851:hs1": {
2804+ "ALICEDEVICE1851": {
2805+ "algorithms": [
2806+ "m.olm.v1.curve25519-aes-sha2",
2807+ "m.megolm.v1.aes-sha2"
2808+ ],
2809+ "device_id": "ALICEDEVICE1851",
2810+ "keys": {
2811+ "curve25519:ALICEDEVICE1851": "VoxogjH4GBL2qKpDKtge43kqAnRZxXnqiiGeJjYQMwY",
2812+ "ed25519:ALICEDEVICE1851": "9UYmIz7PSo7V3heeKzMNTkLybjFVoZLZOBWd97oPJCs"
2813+ },
2814+ "signatures": {
2815+ "@alice_1851:hs1": {
2816+ "ed25519:ALICEDEVICE1851": "BS2wyadBOp19ma/q4YrozZVJmQNua9xrPCchra5mHiG2m7uhTPE1SkCTL4CBsF/B1Xp0I6bEsQHpXN44zs8fCA"
2817+ }
2818+ },
2819+ "user_id": "@alice_1851:hs1",
2820+ "unsigned": {}
2821+ }
2822+ },
2823+ "@alice_1852:hs1": {
2824+ "ALICEDEVICE1852": {
2825+ "algorithms": [
2826+ "m.olm.v1.curve25519-aes-sha2",
2827+ "m.megolm.v1.aes-sha2"
2828+ ],
2829+ "device_id": "ALICEDEVICE1852",
2830+ "keys": {
2831+ "curve25519:ALICEDEVICE1852": "BRam+irtiNhCpR8vWubTKTYSd8dx4GURHtkmhUYrWSk",
2832+ "ed25519:ALICEDEVICE1852": "piTSMHaIQRaBVx+AurnjFGsfIK5H91L9usjwInBbYPE"
2833+ },
2834+ "signatures": {
2835+ "@alice_1852:hs1": {
2836+ "ed25519:ALICEDEVICE1852": "J9yLKJLiUTuDjvcts/dOYdux4rOVStJ+VqYsN/RZlMR7OgaQOjsyAmfnIJOvEmjiw5uPSHlhzFje7KBxlHtTBg"
2837+ }
2838+ },
2839+ "user_id": "@alice_1852:hs1",
2840+ "unsigned": {}
2841+ }
2842+ },
2843+ "@alice_1859:hs1": {
2844+ "ALICEDEVICE1859": {
2845+ "algorithms": [
2846+ "m.olm.v1.curve25519-aes-sha2",
2847+ "m.megolm.v1.aes-sha2"
2848+ ],
2849+ "device_id": "ALICEDEVICE1859",
2850+ "keys": {
2851+ "curve25519:ALICEDEVICE1859": "55PBGai6tIl3QQD50UIGvURkmeLMHfYc6+l64a3NgVk",
2852+ "ed25519:ALICEDEVICE1859": "DX62pgIdbAzvOxxn51/X9ZU+TvG09PgqF/RyVR/gZd0"
2853+ },
2854+ "signatures": {
2855+ "@alice_1859:hs1": {
2856+ "ed25519:ALICEDEVICE1859": "UfZl5yAokTdwhAQRl/mMEmvFmErUDcwkpVevY1yooq8eUrHo7XXuJbe4d1HZ9QAPG31+YQU51w5fvfc04TUKBA"
2857+ }
2858+ },
2859+ "user_id": "@alice_1859:hs1",
2860+ "unsigned": {}
2861+ }
2862+ },
2863+ "@alice_1867:hs1": {
2864+ "ALICEDEVICE1867": {
2865+ "algorithms": [
2866+ "m.olm.v1.curve25519-aes-sha2",
2867+ "m.megolm.v1.aes-sha2"
2868+ ],
2869+ "device_id": "ALICEDEVICE1867",
2870+ "keys": {
2871+ "curve25519:ALICEDEVICE1867": "jsveAtyOyNWSjqjHawp5QXO05L5ihJ+MuidgPtjUoi0",
2872+ "ed25519:ALICEDEVICE1867": "UM7QapiiqWYQWStfiP0DY3EaWX0TuDqIrIDlY2aDutc"
2873+ },
2874+ "signatures": {
2875+ "@alice_1867:hs1": {
2876+ "ed25519:ALICEDEVICE1867": "KcdKvzK6uhpFvuwbxE33vVGWqCrn+zH9VpQOJgj5HO4qcsgP/Ookm0PnjpQaZDcUIa32BwMmFyHW7IfJJL68AQ"
2877+ }
2878+ },
2879+ "user_id": "@alice_1867:hs1",
2880+ "unsigned": {}
2881+ }
2882+ },
2883+ "@alice_186:hs1": {
2884+ "ALICEDEVICE186": {
2885+ "algorithms": [
2886+ "m.olm.v1.curve25519-aes-sha2",
2887+ "m.megolm.v1.aes-sha2"
2888+ ],
2889+ "device_id": "ALICEDEVICE186",
2890+ "keys": {
2891+ "curve25519:ALICEDEVICE186": "+Q7wFUyp22QDXmIZZovCnFcU9vz9vapW8AeJDykcbRY",
2892+ "ed25519:ALICEDEVICE186": "U4McC0auIwb/LvmPi7MdrKagJdbLQbGovHWGWa45Bz8"
2893+ },
2894+ "signatures": {
2895+ "@alice_186:hs1": {
2896+ "ed25519:ALICEDEVICE186": "wAcNWX0yQkk/V5z3LHpBzFwjQvKJdBCTjhFXzCKAWgPRtMuJj+Y4373DkVS7Egyh38PeFrGv6G8IdRkXl6K7Aw"
2897+ }
2898+ },
2899+ "user_id": "@alice_186:hs1",
2900+ "unsigned": {}
2901+ }
2902+ },
2903+ "@alice_1885:hs1": {
2904+ "ALICEDEVICE1885": {
2905+ "algorithms": [
2906+ "m.olm.v1.curve25519-aes-sha2",
2907+ "m.megolm.v1.aes-sha2"
2908+ ],
2909+ "device_id": "ALICEDEVICE1885",
2910+ "keys": {
2911+ "curve25519:ALICEDEVICE1885": "uEwn8ARbXjzkQPl4eLgyExRvBtC2dCu87cTBxobuZCw",
2912+ "ed25519:ALICEDEVICE1885": "4k/HzDHE9UHY4QqQP1PiN3fLSuktkNiReusYICLiS+A"
2913+ },
2914+ "signatures": {
2915+ "@alice_1885:hs1": {
2916+ "ed25519:ALICEDEVICE1885": "IW8jd61P4LfFvK1bUMp2rbel+pWXWn6dsMfDawDv16yxL0Zm1LcstapYn5udApYUYmC5qWOGsJRwFx9JJvidAA"
2917+ }
2918+ },
2919+ "user_id": "@alice_1885:hs1",
2920+ "unsigned": {}
2921+ }
2922+ },
2923+ "@alice_1896:hs1": {
2924+ "ALICEDEVICE1896": {
2925+ "algorithms": [
2926+ "m.olm.v1.curve25519-aes-sha2",
2927+ "m.megolm.v1.aes-sha2"
2928+ ],
2929+ "device_id": "ALICEDEVICE1896",
2930+ "keys": {
2931+ "curve25519:ALICEDEVICE1896": "wk/LukbNVDqNP3acwb+OFcFmQ6bGRx8CKABGPAiyWk4",
2932+ "ed25519:ALICEDEVICE1896": "1+iyz6Z8qKLxZPZyN5E/uzpftios02wurtGDkMMOW3c"
2933+ },
2934+ "signatures": {
2935+ "@alice_1896:hs1": {
2936+ "ed25519:ALICEDEVICE1896": "Et5uCLH87Yk0R1UVngiF9ELIJyIWeWpY74GJYlpD9FWi9QWlYDhmMt9bdo2Q2khf9DFOUVq/CyfNUcCVcOkxAA"
2937+ }
2938+ },
2939+ "user_id": "@alice_1896:hs1",
2940+ "unsigned": {}
2941+ }
2942+ },
2943+ "@alice_1901:hs1": {
2944+ "ALICEDEVICE1901": {
2945+ "algorithms": [
2946+ "m.olm.v1.curve25519-aes-sha2",
2947+ "m.megolm.v1.aes-sha2"
2948+ ],
2949+ "device_id": "ALICEDEVICE1901",
2950+ "keys": {
2951+ "curve25519:ALICEDEVICE1901": "V8JV7MBu2Ioe/PNUtjaNdQ3nUUh0RB8DV3dXuFanLkI",
2952+ "ed25519:ALICEDEVICE1901": "fEGF8fx52odArDIg7rPhj5fmplCzaI/ILJUHjEkaUlU"
2953+ },
2954+ "signatures": {
2955+ "@alice_1901:hs1": {
2956+ "ed25519:ALICEDEVICE1901": "69Tb7kk6LdDuDvHQAmErFaH3bZzH59B54NpDj6ch7kdyEl+8aMT7Bhh++wgp0/65LtFYwIaUuNgtJt5U+I+VDw"
2957+ }
2958+ },
2959+ "user_id": "@alice_1901:hs1",
2960+ "unsigned": {}
2961+ }
2962+ },
2963+ "@alice_1915:hs1": {
2964+ "ALICEDEVICE1915": {
2965+ "algorithms": [
2966+ "m.olm.v1.curve25519-aes-sha2",
2967+ "m.megolm.v1.aes-sha2"
2968+ ],
2969+ "device_id": "ALICEDEVICE1915",
2970+ "keys": {
2971+ "curve25519:ALICEDEVICE1915": "1T+duNTAEae0hjK2IUochozTRrbvyRXEsubmUTITKgM",
2972+ "ed25519:ALICEDEVICE1915": "5LZTtH6NvlOG1iqFL0esbbOHpRofjJOdqIQRanm/+kc"
2973+ },
2974+ "signatures": {
2975+ "@alice_1915:hs1": {
2976+ "ed25519:ALICEDEVICE1915": "T8TcC8UwjRc0F1CXzMJXsVmCYlPP8LZs/FTYNnVkpIzRerfmOOMCW/id/XcZU4ygWeywl16FiKdURaa8EIwuBQ"
2977+ }
2978+ },
2979+ "user_id": "@alice_1915:hs1",
2980+ "unsigned": {}
2981+ }
2982+ },
2983+ "@alice_1922:hs1": {
2984+ "ALICEDEVICE1922": {
2985+ "algorithms": [
2986+ "m.olm.v1.curve25519-aes-sha2",
2987+ "m.megolm.v1.aes-sha2"
2988+ ],
2989+ "device_id": "ALICEDEVICE1922",
2990+ "keys": {
2991+ "curve25519:ALICEDEVICE1922": "kAMuu1PcsjxYIzgFnyAo/5DffpwbaafR9gV9zUeIbhY",
2992+ "ed25519:ALICEDEVICE1922": "nnqxP9ZAD04ZdhMuWqz/3gGzCUA3XEkoelur6u1Ounc"
2993+ },
2994+ "signatures": {
2995+ "@alice_1922:hs1": {
2996+ "ed25519:ALICEDEVICE1922": "jBsdx4CZZDSmnBwpu3dx0iA2i46yjxVXxoSsPkeN8UfSyE7xo6twIfgte+MN3t2blYgK+hvVWSf+n1zaKNqlBQ"
2997+ }
2998+ },
2999+ "user_id": "@alice_1922:hs1",
3000+ "unsigned": {}
3001+ }
3002+ },
3003+ "@alice_1933:hs1": {
3004+ "ALICEDEVICE1933": {
3005+ "algorithms": [
3006+ "m.olm.v1.curve25519-aes-sha2",
3007+ "m.megolm.v1.aes-sha2"
3008+ ],
3009+ "device_id": "ALICEDEVICE1933",
3010+ "keys": {
3011+ "curve25519:ALICEDEVICE1933": "l5LbH/dY9adgkqPbfR/tuvx3+7DDLB83IM/luxkOBTU",
3012+ "ed25519:ALICEDEVICE1933": "e0aPp9j0qRtFzAqp1GG9U5f+/D34u+RnEYY8SotazjU"
3013+ },
3014+ "signatures": {
3015+ "@alice_1933:hs1": {
3016+ "ed25519:ALICEDEVICE1933": "hlDksgzN7Nm600Gm86Y9ucUu0XizBaHbN9f/eJ9+FrJFAfCWJKyf5ASgwsQ5/OUjpqC/kpIqXBS0c2rc/sNTCg"
3017+ }
3018+ },
3019+ "user_id": "@alice_1933:hs1",
3020+ "unsigned": {}
3021+ }
3022+ },
3023+ "@alice_193:hs1": {
3024+ "ALICEDEVICE193": {
3025+ "algorithms": [
3026+ "m.olm.v1.curve25519-aes-sha2",
3027+ "m.megolm.v1.aes-sha2"
3028+ ],
3029+ "device_id": "ALICEDEVICE193",
3030+ "keys": {
3031+ "curve25519:ALICEDEVICE193": "EhGfWdOW4LtF+cmMgGBQl9vxx/Ir3mvy4Pv2MBj4Xjo",
3032+ "ed25519:ALICEDEVICE193": "SSr7m2my2lmYNSfPnB67NSEN5af9y1rHdfJAIto6Qs8"
3033+ },
3034+ "signatures": {
3035+ "@alice_193:hs1": {
3036+ "ed25519:ALICEDEVICE193": "X2xKAaJFqkhGln63DzObmh5PzNc0rnOh5DjiUvLvur7a3Tecsd0/eTIr/NKZMU9EKxO5vRjQDrMyvgG4tFy8Cw"
3037+ }
3038+ },
3039+ "user_id": "@alice_193:hs1",
3040+ "unsigned": {}
3041+ }
3042+ },
3043+ "@alice_1941:hs1": {
3044+ "ALICEDEVICE1941": {
3045+ "algorithms": [
3046+ "m.olm.v1.curve25519-aes-sha2",
3047+ "m.megolm.v1.aes-sha2"
3048+ ],
3049+ "device_id": "ALICEDEVICE1941",
3050+ "keys": {
3051+ "curve25519:ALICEDEVICE1941": "Wj85yrA7uxLWQ838u/eOHjtVGOcm478O2d4mKgprRh8",
3052+ "ed25519:ALICEDEVICE1941": "SBQiAF5fQaUf/CMOZnEX34hKg5wMOGYaI6xDr5dt2FE"
3053+ },
3054+ "signatures": {
3055+ "@alice_1941:hs1": {
3056+ "ed25519:ALICEDEVICE1941": "pKGonzdcxe6Fi660w84IIxUs4uGTyTY4C42t7MbILuXjuOipQueIdIR4xS2sKnRL7FlXYg6ok/K7Lvznv33TDQ"
3057+ }
3058+ },
3059+ "user_id": "@alice_1941:hs1",
3060+ "unsigned": {}
3061+ }
3062+ },
3063+ "@alice_1950:hs1": {
3064+ "ALICEDEVICE1950": {
3065+ "algorithms": [
3066+ "m.olm.v1.curve25519-aes-sha2",
3067+ "m.megolm.v1.aes-sha2"
3068+ ],
3069+ "device_id": "ALICEDEVICE1950",
3070+ "keys": {
3071+ "curve25519:ALICEDEVICE1950": "pHvTrV4gp5bP2YsgD+KJkbPseXHmdpOKfaHuneWmLzg",
3072+ "ed25519:ALICEDEVICE1950": "MF4hGcvQKZSHljHEEd85Qvdagni6GIAnXNzEtFLWSNM"
3073+ },
3074+ "signatures": {
3075+ "@alice_1950:hs1": {
3076+ "ed25519:ALICEDEVICE1950": "1eLkj60h40YY8shVhxgCHq1wO5GhFRxu6zl0g5af+FT+YzwnfDkg/3pq4GScKhdEiY+Yu1ec9rpHtBGQxQfHDw"
3077+ }
3078+ },
3079+ "user_id": "@alice_1950:hs1",
3080+ "unsigned": {}
3081+ }
3082+ },
3083+ "@alice_1962:hs1": {
3084+ "ALICEDEVICE1962": {
3085+ "algorithms": [
3086+ "m.olm.v1.curve25519-aes-sha2",
3087+ "m.megolm.v1.aes-sha2"
3088+ ],
3089+ "device_id": "ALICEDEVICE1962",
3090+ "keys": {
3091+ "curve25519:ALICEDEVICE1962": "CJzG5MCFLHO4DWLi/I7vgXJpWy5mQNhB4FXukk1kwT0",
3092+ "ed25519:ALICEDEVICE1962": "EvmHYlzMkIavAE3zswgPM2bGvY+rfopCnG1vfsKH3R0"
3093+ },
3094+ "signatures": {
3095+ "@alice_1962:hs1": {
3096+ "ed25519:ALICEDEVICE1962": "ZXkwr9lYhTjCxnxgIxvBz8FpBUFL+QV46LWntVlQxoRl/JePOpQALRI0Ul4KLXv2ApgjymosYh2IrHA8438yCA"
3097+ }
3098+ },
3099+ "user_id": "@alice_1962:hs1",
3100+ "unsigned": {}
3101+ }
3102+ },
3103+ "@alice_1963:hs1": {
3104+ "ALICEDEVICE1963": {
3105+ "algorithms": [
3106+ "m.olm.v1.curve25519-aes-sha2",
3107+ "m.megolm.v1.aes-sha2"
3108+ ],
3109+ "device_id": "ALICEDEVICE1963",
3110+ "keys": {
3111+ "curve25519:ALICEDEVICE1963": "ipeYj2iBidsa2RpI6qZiVN+xB/J3ZGMY1elq1WWg0mE",
3112+ "ed25519:ALICEDEVICE1963": "8WCs2mCwGomzIaPmJ+MbFeTYpffsq7nnoym8qQHv1vM"
3113+ },
3114+ "signatures": {
3115+ "@alice_1963:hs1": {
3116+ "ed25519:ALICEDEVICE1963": "2ADv5SUlpqm1SN63pHnXjw3EKL3ZF0FbrGBvSXoY59rE83T/If3AigfWhl3TJBCjyGv274Ko1z8Pkf1CEolLBA"
3117+ }
3118+ },
3119+ "user_id": "@alice_1963:hs1",
3120+ "unsigned": {}
3121+ }
3122+ },
3123+ "@alice_1964:hs1": {
3124+ "ALICEDEVICE1964": {
3125+ "algorithms": [
3126+ "m.olm.v1.curve25519-aes-sha2",
3127+ "m.megolm.v1.aes-sha2"
3128+ ],
3129+ "device_id": "ALICEDEVICE1964",
3130+ "keys": {
3131+ "curve25519:ALICEDEVICE1964": "cZT7TKlEG2ib9wV1zhsWXVGKOeTtRs1b2k9g1RLNLAk",
3132+ "ed25519:ALICEDEVICE1964": "majpRucwc2ZPXj4p96wGLV6a/EP6mf8EBHJIKca0JSk"
3133+ },
3134+ "signatures": {
3135+ "@alice_1964:hs1": {
3136+ "ed25519:ALICEDEVICE1964": "IdetM2yPxb54DZ+RRR5t9+Hz4/jWAxSt/zMn+LQJ+awGW9hKVExjqTVexfMU0nlLBLgduph0O/MeqwrHDpDiDw"
3137+ }
3138+ },
3139+ "user_id": "@alice_1964:hs1",
3140+ "unsigned": {}
3141+ }
3142+ },
3143+ "@alice_200:hs1": {
3144+ "ALICEDEVICE200": {
3145+ "algorithms": [
3146+ "m.olm.v1.curve25519-aes-sha2",
3147+ "m.megolm.v1.aes-sha2"
3148+ ],
3149+ "device_id": "ALICEDEVICE200",
3150+ "keys": {
3151+ "curve25519:ALICEDEVICE200": "swnob5HVrj1JEB4xKdp8oWqsGRRZQ0zN3Ws29BJ7yns",
3152+ "ed25519:ALICEDEVICE200": "kbYTRgbzN7qDcD85nyDkoNDbCs3pcOnEhv6s9Tc3v5Q"
3153+ },
3154+ "signatures": {
3155+ "@alice_200:hs1": {
3156+ "ed25519:ALICEDEVICE200": "WTk7Z/gcWjCQJApAjRkE5MciWpVxT2E6aMndy7xF0MqXzX0IpW7/VWfWoU0/IFpGbVWyz3dMZA7cNgjHqJKWBA"
3157+ }
3158+ },
3159+ "user_id": "@alice_200:hs1",
3160+ "unsigned": {}
3161+ }
3162+ },
3163+ "@alice_211:hs1": {
3164+ "ALICEDEVICE211": {
3165+ "algorithms": [
3166+ "m.olm.v1.curve25519-aes-sha2",
3167+ "m.megolm.v1.aes-sha2"
3168+ ],
3169+ "device_id": "ALICEDEVICE211",
3170+ "keys": {
3171+ "curve25519:ALICEDEVICE211": "NvkEU9YZFw9x+sICUgJ16UOw8TvQ4xj5hWYZxNF1G0Y",
3172+ "ed25519:ALICEDEVICE211": "A/qMeOW0kpwa547O66GuQ0yda3v+tpk7sD9C7fhQAHs"
3173+ },
3174+ "signatures": {
3175+ "@alice_211:hs1": {
3176+ "ed25519:ALICEDEVICE211": "zyFxjL53UdXA9cbxYqCLY4+zEIr1SxiWxU5pFZTh+ryWCWFp+Hx8Y7X5v45DpOU/zsaOyCxpdI2bLyGWRWptBQ"
3177+ }
3178+ },
3179+ "user_id": "@alice_211:hs1",
3180+ "unsigned": {}
3181+ }
3182+ },
3183+ "@alice_220:hs1": {
3184+ "ALICEDEVICE220": {
3185+ "algorithms": [
3186+ "m.olm.v1.curve25519-aes-sha2",
3187+ "m.megolm.v1.aes-sha2"
3188+ ],
3189+ "device_id": "ALICEDEVICE220",
3190+ "keys": {
3191+ "curve25519:ALICEDEVICE220": "k4Glyr/2fADMcjFhtxxM3oyRfkZ6L2M1vpBiV4O5kgw",
3192+ "ed25519:ALICEDEVICE220": "bMT+uylvJ8ezS6BAEANsbwWD/ruWiPa9xRVT7SKI0/Q"
3193+ },
3194+ "signatures": {
3195+ "@alice_220:hs1": {
3196+ "ed25519:ALICEDEVICE220": "Ixd3DOCoS4dK6d1ki/jxoNWwBL52R5v2ujgjbS0049U4YExcSI5aLaEUO4X9+b6azM6xdLCFxfFQnhDcvLAqDA"
3197+ }
3198+ },
3199+ "user_id": "@alice_220:hs1",
3200+ "unsigned": {}
3201+ }
3202+ },
3203+ "@alice_222:hs1": {
3204+ "ALICEDEVICE222": {
3205+ "algorithms": [
3206+ "m.olm.v1.curve25519-aes-sha2",
3207+ "m.megolm.v1.aes-sha2"
3208+ ],
3209+ "device_id": "ALICEDEVICE222",
3210+ "keys": {
3211+ "curve25519:ALICEDEVICE222": "Pah0TwBCfy9JKsKlqYbFHfZfSibHoP9EF237i6YbsX8",
3212+ "ed25519:ALICEDEVICE222": "SSxFWGr7kbJh+Uu/6GJjxjKmdptwDkg5RiYH4An8k14"
3213+ },
3214+ "signatures": {
3215+ "@alice_222:hs1": {
3216+ "ed25519:ALICEDEVICE222": "Cy74KhMNtEd8SbtbLQNkEeGRIIj8ORsFPZcWz2mHYHf0dh1crF3iILkeVU6XiGHQ7yjGt/HTcXsOo08oZ94ZBQ"
3217+ }
3218+ },
3219+ "user_id": "@alice_222:hs1",
3220+ "unsigned": {}
3221+ }
3222+ },
3223+ "@alice_226:hs1": {
3224+ "ALICEDEVICE226": {
3225+ "algorithms": [
3226+ "m.olm.v1.curve25519-aes-sha2",
3227+ "m.megolm.v1.aes-sha2"
3228+ ],
3229+ "device_id": "ALICEDEVICE226",
3230+ "keys": {
3231+ "curve25519:ALICEDEVICE226": "28op6dlZz0OzV5Otbct91oJ1ymIvY0OxRVz5V59YXiM",
3232+ "ed25519:ALICEDEVICE226": "BGV9Obf420tzYjjWYUx2qPyXi2+dqe5+I27R6zd6Rec"
3233+ },
3234+ "signatures": {
3235+ "@alice_226:hs1": {
3236+ "ed25519:ALICEDEVICE226": "GdhlKL8KpS0qT/blsj8iY3cjZhQeKsYkjjsA0gkLfy77fePU5tC+r4XxIPQZTaueaBu2Hzhnk5LHgDEzzwFFAQ"
3237+ }
3238+ },
3239+ "user_id": "@alice_226:hs1",
3240+ "unsigned": {}
3241+ }
3242+ },
3243+ "@alice_243:hs1": {
3244+ "ALICEDEVICE243": {
3245+ "algorithms": [
3246+ "m.olm.v1.curve25519-aes-sha2",
3247+ "m.megolm.v1.aes-sha2"
3248+ ],
3249+ "device_id": "ALICEDEVICE243",
3250+ "keys": {
3251+ "curve25519:ALICEDEVICE243": "I6fZbanxchOvEc5UTaGgwD9+nVp1wntO3I5MgqaZFgc",
3252+ "ed25519:ALICEDEVICE243": "5yWFl+YjaIHgG9Ezt0j3SuemjpFWic1nz2c3ImNJPDs"
3253+ },
3254+ "signatures": {
3255+ "@alice_243:hs1": {
3256+ "ed25519:ALICEDEVICE243": "PIkCGFMzlexgupDw2BWqovOodnzpvwX3ymbqR220Z0st3GF3A+OlqiwSrMdLZfAhTYK+BkNqTfaMPKH1JgWwCA"
3257+ }
3258+ },
3259+ "user_id": "@alice_243:hs1",
3260+ "unsigned": {}
3261+ }
3262+ },
3263+ "@alice_245:hs1": {
3264+ "ALICEDEVICE245": {
3265+ "algorithms": [
3266+ "m.olm.v1.curve25519-aes-sha2",
3267+ "m.megolm.v1.aes-sha2"
3268+ ],
3269+ "device_id": "ALICEDEVICE245",
3270+ "keys": {
3271+ "curve25519:ALICEDEVICE245": "kyMTS5d8ovFFlp2AX3d3sOCH95BggiuuGwH+SopH5jw",
3272+ "ed25519:ALICEDEVICE245": "XILZiG9+UBX/gfmJGZ48nOCRdV7GeRwwBbGye+W/iqw"
3273+ },
3274+ "signatures": {
3275+ "@alice_245:hs1": {
3276+ "ed25519:ALICEDEVICE245": "36GLh1FzrfsvG93zlMFeqmCRuEsyeUWiXK6wUnlMJd9t7VcKiShzkC8fZD28471COEcxedhC7/86BGA2GexOBw"
3277+ }
3278+ },
3279+ "user_id": "@alice_245:hs1",
3280+ "unsigned": {}
3281+ }
3282+ },
3283+ "@alice_251:hs1": {
3284+ "ALICEDEVICE251": {
3285+ "algorithms": [
3286+ "m.olm.v1.curve25519-aes-sha2",
3287+ "m.megolm.v1.aes-sha2"
3288+ ],
3289+ "device_id": "ALICEDEVICE251",
3290+ "keys": {
3291+ "curve25519:ALICEDEVICE251": "1daCKHYL+HbDGCinkrVPumHHrtFvadQb3391p7yZaA0",
3292+ "ed25519:ALICEDEVICE251": "wSWqsRnrnTIiQH4Ht8cn3lEfravJ3V9bAiS6hYPgfwI"
3293+ },
3294+ "signatures": {
3295+ "@alice_251:hs1": {
3296+ "ed25519:ALICEDEVICE251": "mhbj/RL8AqF+y6741VWdQs/J4jNJjG8nIguBIVa3rY0ItyhC/jcl7zxi3x/uE/gjWCupg0fXuX6gnnzfmxTLDw"
3297+ }
3298+ },
3299+ "user_id": "@alice_251:hs1",
3300+ "unsigned": {}
3301+ }
3302+ },
3303+ "@alice_257:hs1": {
3304+ "ALICEDEVICE257": {
3305+ "algorithms": [
3306+ "m.olm.v1.curve25519-aes-sha2",
3307+ "m.megolm.v1.aes-sha2"
3308+ ],
3309+ "device_id": "ALICEDEVICE257",
3310+ "keys": {
3311+ "curve25519:ALICEDEVICE257": "JuFoCRBIz9BAusFT1SPauZ07OitUX+HvSmEBe3JpuVk",
3312+ "ed25519:ALICEDEVICE257": "GtqwpXJjZyZ5wLGVBquWm91lLAHomhEJ5xqtzY2DSIs"
3313+ },
3314+ "signatures": {
3315+ "@alice_257:hs1": {
3316+ "ed25519:ALICEDEVICE257": "cAHH4sM80XxaPC3sATvG2gQtfOZoYbAHmkwwrykQyzz710JC9t4OEGiVmCscBYme8EdEUzEmtPW6WVyfMJHIAw"
3317+ }
3318+ },
3319+ "user_id": "@alice_257:hs1",
3320+ "unsigned": {}
3321+ }
3322+ },
3323+ "@alice_261:hs1": {
3324+ "ALICEDEVICE261": {
3325+ "algorithms": [
3326+ "m.olm.v1.curve25519-aes-sha2",
3327+ "m.megolm.v1.aes-sha2"
3328+ ],
3329+ "device_id": "ALICEDEVICE261",
3330+ "keys": {
3331+ "curve25519:ALICEDEVICE261": "kV6XpQm2GBSHj/UjBB2oS2aheRB5SoIG3+ULTy0S0XM",
3332+ "ed25519:ALICEDEVICE261": "Fech2GI6dtrgjJCcRlatD8BDNn+feESdftfDpA2BXg0"
3333+ },
3334+ "signatures": {
3335+ "@alice_261:hs1": {
3336+ "ed25519:ALICEDEVICE261": "dNRPuydvl9PMZF57jlny4x2IeMXK4V86THkRo8MwezYy2uCtf1GBW1gF6YnfAAVwJIOs9jpB+Fb1bNhD838iCg"
3337+ }
3338+ },
3339+ "user_id": "@alice_261:hs1",
3340+ "unsigned": {}
3341+ }
3342+ },
3343+ "@alice_262:hs1": {
3344+ "ALICEDEVICE262": {
3345+ "algorithms": [
3346+ "m.olm.v1.curve25519-aes-sha2",
3347+ "m.megolm.v1.aes-sha2"
3348+ ],
3349+ "device_id": "ALICEDEVICE262",
3350+ "keys": {
3351+ "curve25519:ALICEDEVICE262": "K+DBCpe8qoNKn0abQI0b36t8eEjJXvIoJ6XWz6AuY1A",
3352+ "ed25519:ALICEDEVICE262": "XiSTJluV3l6E3fZVaaJ/D/YmP+VvlW9PVo9T/e7Nsws"
3353+ },
3354+ "signatures": {
3355+ "@alice_262:hs1": {
3356+ "ed25519:ALICEDEVICE262": "Fm87Jb+Ug6CNKdJOXM29DiwQJ7yiaDpiLAIOBf8q5sxoUNjtEbOi/6PqWI0egRhLjkMjQsoFq6xfHX/+HKrDDg"
3357+ }
3358+ },
3359+ "user_id": "@alice_262:hs1",
3360+ "unsigned": {}
3361+ }
3362+ },
3363+ "@alice_273:hs1": {
3364+ "ALICEDEVICE273": {
3365+ "algorithms": [
3366+ "m.olm.v1.curve25519-aes-sha2",
3367+ "m.megolm.v1.aes-sha2"
3368+ ],
3369+ "device_id": "ALICEDEVICE273",
3370+ "keys": {
3371+ "curve25519:ALICEDEVICE273": "H/CsEKySoEYQVMq/Bgm1ncMDnxhelP2X784c9sJO+wc",
3372+ "ed25519:ALICEDEVICE273": "Fnr9cPrVNOs3QEpRwQyZXTXs2HxPuMMD/XLgJ0SdE38"
3373+ },
3374+ "signatures": {
3375+ "@alice_273:hs1": {
3376+ "ed25519:ALICEDEVICE273": "kk9PZpsBd9RlNfdSCRMMKoaWiCKqRSrkhaSKN2zMWylYgitCYKmdPU8GA9mzPxKy1DyqhJ7SwP/A7FenV7V6Aw"
3377+ }
3378+ },
3379+ "user_id": "@alice_273:hs1",
3380+ "unsigned": {}
3381+ }
3382+ },
3383+ "@alice_277:hs1": {
3384+ "ALICEDEVICE277": {
3385+ "algorithms": [
3386+ "m.olm.v1.curve25519-aes-sha2",
3387+ "m.megolm.v1.aes-sha2"
3388+ ],
3389+ "device_id": "ALICEDEVICE277",
3390+ "keys": {
3391+ "curve25519:ALICEDEVICE277": "EAL1uHwnblY1YTQmT5jzXWrgfo77+8Ju3tRrw58M7SI",
3392+ "ed25519:ALICEDEVICE277": "zvImWz/sEOvsA5cb8jo6vWxwoC2vLdUhoP2DDlSCTbE"
3393+ },
3394+ "signatures": {
3395+ "@alice_277:hs1": {
3396+ "ed25519:ALICEDEVICE277": "lwuNYq81+JjhjM1rk2XRtYBeLuaAt1p7ac5F/KpfVYxEAYvBTfSrxsPHnxOc9UB/AbV1GDDA9SJa6QS4AsqlAQ"
3397+ }
3398+ },
3399+ "user_id": "@alice_277:hs1",
3400+ "unsigned": {}
3401+ }
3402+ },
3403+ "@alice_27:hs1": {
3404+ "ALICEDEVICE27": {
3405+ "algorithms": [
3406+ "m.olm.v1.curve25519-aes-sha2",
3407+ "m.megolm.v1.aes-sha2"
3408+ ],
3409+ "device_id": "ALICEDEVICE27",
3410+ "keys": {
3411+ "curve25519:ALICEDEVICE27": "5VcrdkQouYNhezo+nrNNMQ+n83+PQKdCA8z7DO76DFE",
3412+ "ed25519:ALICEDEVICE27": "oY0c5y5pALtwVXSxuA+n/M4O9YE6QXwdlYCFfNTan8M"
3413+ },
3414+ "signatures": {
3415+ "@alice_27:hs1": {
3416+ "ed25519:ALICEDEVICE27": "TBMNFQL95XXGfewM3vJH3QGgY6W474BA2PHw088aHvJx4S+AwwsHFXQ+WTw2OZXWQPW3GSn9QA0jXZabkgbzDA"
3417+ }
3418+ },
3419+ "user_id": "@alice_27:hs1",
3420+ "unsigned": {}
3421+ }
3422+ },
3423+ "@alice_282:hs1": {
3424+ "ALICEDEVICE282": {
3425+ "algorithms": [
3426+ "m.olm.v1.curve25519-aes-sha2",
3427+ "m.megolm.v1.aes-sha2"
3428+ ],
3429+ "device_id": "ALICEDEVICE282",
3430+ "keys": {
3431+ "curve25519:ALICEDEVICE282": "RNNFl7v7WxjMkUxPpVVQpeFA/7dK6BjfON6Di7ZGURE",
3432+ "ed25519:ALICEDEVICE282": "HE/XdfoMum9quz8eqAE2MCRNhVGPMCubW2K4y39bl2M"
3433+ },
3434+ "signatures": {
3435+ "@alice_282:hs1": {
3436+ "ed25519:ALICEDEVICE282": "5oqY3sraWLAgUu0YLuV2YLtNEbaFApueb+y1BQQ50lOFhmJmciKAlSjzKzYLzjQYqJijXxkf+MDEmt8VRciTCg"
3437+ }
3438+ },
3439+ "user_id": "@alice_282:hs1",
3440+ "unsigned": {}
3441+ }
3442+ },
3443+ "@alice_286:hs1": {
3444+ "ALICEDEVICE286": {
3445+ "algorithms": [
3446+ "m.olm.v1.curve25519-aes-sha2",
3447+ "m.megolm.v1.aes-sha2"
3448+ ],
3449+ "device_id": "ALICEDEVICE286",
3450+ "keys": {
3451+ "curve25519:ALICEDEVICE286": "m1hL04BVrQu09D3EXMDMabco6l0Icyq3g4QHWf+KOh8",
3452+ "ed25519:ALICEDEVICE286": "XerpiZdSuPcboyoytUaWn9kmv6URN/PIUEbljAi2XqE"
3453+ },
3454+ "signatures": {
3455+ "@alice_286:hs1": {
3456+ "ed25519:ALICEDEVICE286": "bWej8JNlx95mGMMAypeEwWBAKoGAuQVKo8vLJQBuQO4BZX5ohuXcIm0KxBO6T98/MaScr06u1/zD906yUWH7BQ"
3457+ }
3458+ },
3459+ "user_id": "@alice_286:hs1",
3460+ "unsigned": {}
3461+ }
3462+ },
3463+ "@alice_292:hs1": {
3464+ "ALICEDEVICE292": {
3465+ "algorithms": [
3466+ "m.olm.v1.curve25519-aes-sha2",
3467+ "m.megolm.v1.aes-sha2"
3468+ ],
3469+ "device_id": "ALICEDEVICE292",
3470+ "keys": {
3471+ "curve25519:ALICEDEVICE292": "8KxHYSH1aC0n6QVOiDDvWKrPYeI6XkohzlYDVunMwAE",
3472+ "ed25519:ALICEDEVICE292": "dMk4zHuKfBFUF/RK3+EsvfnyKHBOJEFvsMy45puOiKo"
3473+ },
3474+ "signatures": {
3475+ "@alice_292:hs1": {
3476+ "ed25519:ALICEDEVICE292": "r4DHUyzRfz3DidtsYj2r2f8EhWkRq8Mn/BVlxLI09TmLRuJgLv4EFcaUzZl7EinXuxWSalynn5MhGmw5JPeaBw"
3477+ }
3478+ },
3479+ "user_id": "@alice_292:hs1",
3480+ "unsigned": {}
3481+ }
3482+ },
3483+ "@alice_300:hs1": {
3484+ "ALICEDEVICE300": {
3485+ "algorithms": [
3486+ "m.olm.v1.curve25519-aes-sha2",
3487+ "m.megolm.v1.aes-sha2"
3488+ ],
3489+ "device_id": "ALICEDEVICE300",
3490+ "keys": {
3491+ "curve25519:ALICEDEVICE300": "Eset7Lh0MSuLa5MiTbxXzYE5GMBPeUF9xSENFIDOD0M",
3492+ "ed25519:ALICEDEVICE300": "kSQvKlkZmM0dEvia1x+t8FPzZp5uT0yFL6PGAkE49d8"
3493+ },
3494+ "signatures": {
3495+ "@alice_300:hs1": {
3496+ "ed25519:ALICEDEVICE300": "SxwClQGzTuUunTeiy70tMJTJoNi0va/371whjnmeAiEFRbw2nf9PLaWOSlADa5W9bKMf9w+MARcsZX2HXLaLAQ"
3497+ }
3498+ },
3499+ "user_id": "@alice_300:hs1",
3500+ "unsigned": {}
3501+ }
3502+ },
3503+ "@alice_308:hs1": {
3504+ "ALICEDEVICE308": {
3505+ "algorithms": [
3506+ "m.olm.v1.curve25519-aes-sha2",
3507+ "m.megolm.v1.aes-sha2"
3508+ ],
3509+ "device_id": "ALICEDEVICE308",
3510+ "keys": {
3511+ "curve25519:ALICEDEVICE308": "6CiKySYRMeLjHrl7L32EOdHFyhhBPXf4wORuGTsBSiE",
3512+ "ed25519:ALICEDEVICE308": "bPbJGEo2fa6XlIWPoA0dDStC5RBwsqVURtibxEXXcFg"
3513+ },
3514+ "signatures": {
3515+ "@alice_308:hs1": {
3516+ "ed25519:ALICEDEVICE308": "keEnuafeFi4/Mtb8ctH1YDJJP4E3S5VEkUnM/aOEEaoXvQUDg59sY1jzrC+MLIxWQTQQn1c2EGR0JduLa9yDCQ"
3517+ }
3518+ },
3519+ "user_id": "@alice_308:hs1",
3520+ "unsigned": {}
3521+ }
3522+ },
3523+ "@alice_31:hs1": {
3524+ "ALICEDEVICE31": {
3525+ "algorithms": [
3526+ "m.olm.v1.curve25519-aes-sha2",
3527+ "m.megolm.v1.aes-sha2"
3528+ ],
3529+ "device_id": "ALICEDEVICE31",
3530+ "keys": {
3531+ "curve25519:ALICEDEVICE31": "YLTo12IEartkpn4fqtsGwGtENRCxj8R3meHSXuxS+VE",
3532+ "ed25519:ALICEDEVICE31": "y2vhGJyD7rhNGkkyQwZqv1aAMMVfXFkPH3UiaP/jA1g"
3533+ },
3534+ "signatures": {
3535+ "@alice_31:hs1": {
3536+ "ed25519:ALICEDEVICE31": "zOvy/QKc2Wxb2poktE+i18iIDrFlb3AiDJmab+ucBSeOsqtYB9usVRyTbgdhtRiMKXlvAMTIv6rW8nkFEOaQAw"
3537+ }
3538+ },
3539+ "user_id": "@alice_31:hs1",
3540+ "unsigned": {}
3541+ }
3542+ },
3543+ "@alice_321:hs1": {
3544+ "ALICEDEVICE321": {
3545+ "algorithms": [
3546+ "m.olm.v1.curve25519-aes-sha2",
3547+ "m.megolm.v1.aes-sha2"
3548+ ],
3549+ "device_id": "ALICEDEVICE321",
3550+ "keys": {
3551+ "curve25519:ALICEDEVICE321": "oRqubCiS6wPYZnDiVnu74ofvOa7dLIEGScAgjVT4dww",
3552+ "ed25519:ALICEDEVICE321": "ifBvN6zVd5egj0Cgw4b8r5Zofp7Kv97AmnGPdRgIrvQ"
3553+ },
3554+ "signatures": {
3555+ "@alice_321:hs1": {
3556+ "ed25519:ALICEDEVICE321": "JtBZ9ZbK6F8aIzJAseQuHN7PffS0CrMYst7WXom74TaibQdiVRcuVBXslCsUiI+RBGXqG+4I5mWcIDdF3EZcAA"
3557+ }
3558+ },
3559+ "user_id": "@alice_321:hs1",
3560+ "unsigned": {}
3561+ }
3562+ },
3563+ "@alice_322:hs1": {
3564+ "ALICEDEVICE322": {
3565+ "algorithms": [
3566+ "m.olm.v1.curve25519-aes-sha2",
3567+ "m.megolm.v1.aes-sha2"
3568+ ],
3569+ "device_id": "ALICEDEVICE322",
3570+ "keys": {
3571+ "curve25519:ALICEDEVICE322": "iO/qYt5hpS5KpxuDebjEf/Fz6EM4Dsv2DSOxxaBM9nc",
3572+ "ed25519:ALICEDEVICE322": "zSUSysAD7HR0v+tcr4l28z7KoFtXIO4s5SZWNZp8RNk"
3573+ },
3574+ "signatures": {
3575+ "@alice_322:hs1": {
3576+ "ed25519:ALICEDEVICE322": "Td6gTrysJuuhUO+hR3YY7iBZdyDsF1OQ2xtAUwZaeQIHgAXArc9pqS85R8irLgvD/mU7sbl9ckfcsz1BwzLPDw"
3577+ }
3578+ },
3579+ "user_id": "@alice_322:hs1",
3580+ "unsigned": {}
3581+ }
3582+ },
3583+ "@alice_327:hs1": {
3584+ "ALICEDEVICE327": {
3585+ "algorithms": [
3586+ "m.olm.v1.curve25519-aes-sha2",
3587+ "m.megolm.v1.aes-sha2"
3588+ ],
3589+ "device_id": "ALICEDEVICE327",
3590+ "keys": {
3591+ "curve25519:ALICEDEVICE327": "ooWjCnEHH9CQAl2LAZ5T8xFrxHbdEr45rnrUIdftuCI",
3592+ "ed25519:ALICEDEVICE327": "VlEA8iMnawxTyOl+qMjGxSmhLd353/m9etnEJFRryyg"
3593+ },
3594+ "signatures": {
3595+ "@alice_327:hs1": {
3596+ "ed25519:ALICEDEVICE327": "UcypyK+2QmzYT6oLFmmnnAWxvsiabQ0Hg3U1o/zY/N7nMXB2AzUauRw+HQ29ldf997DlcdchnA54x/Uq4Q4uAg"
3597+ }
3598+ },
3599+ "user_id": "@alice_327:hs1",
3600+ "unsigned": {}
3601+ }
3602+ },
3603+ "@alice_331:hs1": {
3604+ "ALICEDEVICE331": {
3605+ "algorithms": [
3606+ "m.olm.v1.curve25519-aes-sha2",
3607+ "m.megolm.v1.aes-sha2"
3608+ ],
3609+ "device_id": "ALICEDEVICE331",
3610+ "keys": {
3611+ "curve25519:ALICEDEVICE331": "WeU2lk8QJvkC/C18getqZFAi6Ktm4vkOAR5eWG5inE0",
3612+ "ed25519:ALICEDEVICE331": "CMc01eTo00R3RpMzggkzceu+0gNleOL8Tt4v8nzjIZM"
3613+ },
3614+ "signatures": {
3615+ "@alice_331:hs1": {
3616+ "ed25519:ALICEDEVICE331": "QZQCVMnxg9hwFcnUhBjinvmeMhbtzA+t2YyEJi/Roqz2N3c6EYRIWC7Hx+CN6F2UnMdl4OBbOJf7++OZmHHNDg"
3617+ }
3618+ },
3619+ "user_id": "@alice_331:hs1",
3620+ "unsigned": {}
3621+ }
3622+ },
3623+ "@alice_339:hs1": {
3624+ "ALICEDEVICE339": {
3625+ "algorithms": [
3626+ "m.olm.v1.curve25519-aes-sha2",
3627+ "m.megolm.v1.aes-sha2"
3628+ ],
3629+ "device_id": "ALICEDEVICE339",
3630+ "keys": {
3631+ "curve25519:ALICEDEVICE339": "IgWlZ1LV/Vlc8wgyUkNrgDAQVBF0p2dHKZ9vqd4ta3E",
3632+ "ed25519:ALICEDEVICE339": "XlH6TO/8V6JZ4EL6Ymgwyy6ySMnghCFO9G4eNXu7ZFY"
3633+ },
3634+ "signatures": {
3635+ "@alice_339:hs1": {
3636+ "ed25519:ALICEDEVICE339": "9/SqLAvOWj1QJWXP/FMU8wPJs+zndjPZEmBJk6zqu+/yFsspSI22gwRfkI73j+VePziyOeYdVSfSsF6WoM0/Cg"
3637+ }
3638+ },
3639+ "user_id": "@alice_339:hs1",
3640+ "unsigned": {}
3641+ }
3642+ },
3643+ "@alice_349:hs1": {
3644+ "ALICEDEVICE349": {
3645+ "algorithms": [
3646+ "m.olm.v1.curve25519-aes-sha2",
3647+ "m.megolm.v1.aes-sha2"
3648+ ],
3649+ "device_id": "ALICEDEVICE349",
3650+ "keys": {
3651+ "curve25519:ALICEDEVICE349": "oJFyVS7f35j+J2ExdaxAcBeH9Y5USyJdJUn0e+PEUWs",
3652+ "ed25519:ALICEDEVICE349": "X8GivrU5vIbb0aAa5weSgMoR4PygPCZX/zWMEdqPF2E"
3653+ },
3654+ "signatures": {
3655+ "@alice_349:hs1": {
3656+ "ed25519:ALICEDEVICE349": "zI5vDMVJO9/Z3JpWvPPTbNK2ZBHofs7yNk4lnnTROcrItaahaAuA7N1TN6g+ct3LHuJS2xXlyJOw7c2i6BE0Aw"
3657+ }
3658+ },
3659+ "user_id": "@alice_349:hs1",
3660+ "unsigned": {}
3661+ }
3662+ },
3663+ "@alice_354:hs1": {
3664+ "ALICEDEVICE354": {
3665+ "algorithms": [
3666+ "m.olm.v1.curve25519-aes-sha2",
3667+ "m.megolm.v1.aes-sha2"
3668+ ],
3669+ "device_id": "ALICEDEVICE354",
3670+ "keys": {
3671+ "curve25519:ALICEDEVICE354": "rE196KkDQmxaAz/s2e9U5p+etEf523kaLzKdrXyk7EI",
3672+ "ed25519:ALICEDEVICE354": "NRCQt+8cbrX8RLhuUdok5nsjZBV2vTw+joZqAn1bnOs"
3673+ },
3674+ "signatures": {
3675+ "@alice_354:hs1": {
3676+ "ed25519:ALICEDEVICE354": "GM3b8JZ2XZegvjDnyJdqX58lK4xB15TxWm1TZwvw5a3/ZZbor6TgFbu81BndDwxg2ZWDob1Bkwj8hpV7xXKqBg"
3677+ }
3678+ },
3679+ "user_id": "@alice_354:hs1",
3680+ "unsigned": {}
3681+ }
3682+ },
3683+ "@alice_372:hs1": {
3684+ "ALICEDEVICE372": {
3685+ "algorithms": [
3686+ "m.olm.v1.curve25519-aes-sha2",
3687+ "m.megolm.v1.aes-sha2"
3688+ ],
3689+ "device_id": "ALICEDEVICE372",
3690+ "keys": {
3691+ "curve25519:ALICEDEVICE372": "MQHM4p4WwoDozgdCfE1Zo7ZK6TDmssjwBXMZ/PmRIi4",
3692+ "ed25519:ALICEDEVICE372": "NvHIsp2z9II20eWGLPO7Hv8vhFwbIeJF1FFw0T932tI"
3693+ },
3694+ "signatures": {
3695+ "@alice_372:hs1": {
3696+ "ed25519:ALICEDEVICE372": "fM7z0kSgGiJZEHjocHcUBiTSjDgybIx9pk+HuIhQQxaO1Y+eUP7qYoK0LodsvZp3jr83rSmtz3SyfQGqgupADQ"
3697+ }
3698+ },
3699+ "user_id": "@alice_372:hs1",
3700+ "unsigned": {}
3701+ }
3702+ },
3703+ "@alice_374:hs1": {
3704+ "ALICEDEVICE374": {
3705+ "algorithms": [
3706+ "m.olm.v1.curve25519-aes-sha2",
3707+ "m.megolm.v1.aes-sha2"
3708+ ],
3709+ "device_id": "ALICEDEVICE374",
3710+ "keys": {
3711+ "curve25519:ALICEDEVICE374": "Xd81lbEQ56qhPGcQyTI8i8YrMSOVuATyro9epUf4aUk",
3712+ "ed25519:ALICEDEVICE374": "RcgH4bq3GRV7Eh7+lXeTSVz+Yiz10klbd5a1Ymbp6jo"
3713+ },
3714+ "signatures": {
3715+ "@alice_374:hs1": {
3716+ "ed25519:ALICEDEVICE374": "0Ce0BBPd+jJhgHk1hn6GfneYJwmZ1UJHcJpQmOfDFrpJjiY/lk9Pq1qMZVehkmC9q6Tm+Q7qXEz1dgkOSCT4Bw"
3717+ }
3718+ },
3719+ "user_id": "@alice_374:hs1",
3720+ "unsigned": {}
3721+ }
3722+ },
3723+ "@alice_378:hs1": {
3724+ "ALICEDEVICE378": {
3725+ "algorithms": [
3726+ "m.olm.v1.curve25519-aes-sha2",
3727+ "m.megolm.v1.aes-sha2"
3728+ ],
3729+ "device_id": "ALICEDEVICE378",
3730+ "keys": {
3731+ "curve25519:ALICEDEVICE378": "Fvegw2EXb1cIcoTIBkBkSMX73GsUilxS506HOwBffls",
3732+ "ed25519:ALICEDEVICE378": "tBZp0+lhr1KUCguG0yhWcplBygnV/w/7/DY06OWrftk"
3733+ },
3734+ "signatures": {
3735+ "@alice_378:hs1": {
3736+ "ed25519:ALICEDEVICE378": "cBnijX3H3/JOiJcNwkIsEmWd3OhSKgt0NsQLpY1eiEOUuzEblswGQvkQ/FncykwP5o+9VOeA6ydi5LXlHOo7CQ"
3737+ }
3738+ },
3739+ "user_id": "@alice_378:hs1",
3740+ "unsigned": {}
3741+ }
3742+ },
3743+ "@alice_37:hs1": {
3744+ "ALICEDEVICE37": {
3745+ "algorithms": [
3746+ "m.olm.v1.curve25519-aes-sha2",
3747+ "m.megolm.v1.aes-sha2"
3748+ ],
3749+ "device_id": "ALICEDEVICE37",
3750+ "keys": {
3751+ "curve25519:ALICEDEVICE37": "MadGg/g3w2siX0Y1Z/KmzzIfGR5rsxV30SAmUQB4i1c",
3752+ "ed25519:ALICEDEVICE37": "eW4TGVONxz6TXn/hvNik/N+kuxTYCbH/pX4LQpOzXJ8"
3753+ },
3754+ "signatures": {
3755+ "@alice_37:hs1": {
3756+ "ed25519:ALICEDEVICE37": "WcTipX3P1jKe828gxSzEjQVXO1dVnO+v5oLWGK3nmXT3Ef0P4cCRFrYkdgNYGKPsuRGQs6IktUIKKcLpXrtcAw"
3757+ }
3758+ },
3759+ "user_id": "@alice_37:hs1",
3760+ "unsigned": {}
3761+ }
3762+ },
3763+ "@alice_398:hs1": {
3764+ "ALICEDEVICE398": {
3765+ "algorithms": [
3766+ "m.olm.v1.curve25519-aes-sha2",
3767+ "m.megolm.v1.aes-sha2"
3768+ ],
3769+ "device_id": "ALICEDEVICE398",
3770+ "keys": {
3771+ "curve25519:ALICEDEVICE398": "fVUibLLcU/eRg0IilmGh1jQrJ/43FuCZd0IQMPp2Ekc",
3772+ "ed25519:ALICEDEVICE398": "0+51tt/i8EjJl2itE26clQ8s36qOP1UtWHvp7UflTCY"
3773+ },
3774+ "signatures": {
3775+ "@alice_398:hs1": {
3776+ "ed25519:ALICEDEVICE398": "ehsn5FVw8Ehl6NZrJfRmS4KFGcJ7gEpo19ZJ9Jr7mhF7C8pSolzuB6WrtYe+fxpXBedreaBPEjLbeZCq/IbqBg"
3777+ }
3778+ },
3779+ "user_id": "@alice_398:hs1",
3780+ "unsigned": {}
3781+ }
3782+ },
3783+ "@alice_404:hs1": {
3784+ "ALICEDEVICE404": {
3785+ "algorithms": [
3786+ "m.olm.v1.curve25519-aes-sha2",
3787+ "m.megolm.v1.aes-sha2"
3788+ ],
3789+ "device_id": "ALICEDEVICE404",
3790+ "keys": {
3791+ "curve25519:ALICEDEVICE404": "tEbVSrCjd7SEPHgzyX1kKcT+rgANX1acGNWK1X1HsTQ",
3792+ "ed25519:ALICEDEVICE404": "rpfbBGTNTjv0s+p8S1iB1zs9s9RwoyxWAmuki8MnQU0"
3793+ },
3794+ "signatures": {
3795+ "@alice_404:hs1": {
3796+ "ed25519:ALICEDEVICE404": "Ryp3NS/evVheqpwu581YR0S7XDIEQwyB6CP3Fc0HxmSncQTsv/PeXiNydPNIMIgs+d59GJ/qujPLh5m8yipxBg"
3797+ }
3798+ },
3799+ "user_id": "@alice_404:hs1",
3800+ "unsigned": {}
3801+ }
3802+ },
3803+ "@alice_412:hs1": {
3804+ "ALICEDEVICE412": {
3805+ "algorithms": [
3806+ "m.olm.v1.curve25519-aes-sha2",
3807+ "m.megolm.v1.aes-sha2"
3808+ ],
3809+ "device_id": "ALICEDEVICE412",
3810+ "keys": {
3811+ "curve25519:ALICEDEVICE412": "sUKh6kb1Uekgflz4QfbNIsmBe17ytnezhZysexxGYHs",
3812+ "ed25519:ALICEDEVICE412": "nWZc32vRW7jLHnB+btEEqk/POb5NjfAGEbIUrz/iWe0"
3813+ },
3814+ "signatures": {
3815+ "@alice_412:hs1": {
3816+ "ed25519:ALICEDEVICE412": "8IkHWvErjbCthVR/3IhUQ1+sq7JQBC1pXerpUQfhcMBHo502kYwKdF3ERYfZBqS/2C68BzH/rYJKCovcjCYqCQ"
3817+ }
3818+ },
3819+ "user_id": "@alice_412:hs1",
3820+ "unsigned": {}
3821+ }
3822+ },
3823+ "@alice_427:hs1": {
3824+ "ALICEDEVICE427": {
3825+ "algorithms": [
3826+ "m.olm.v1.curve25519-aes-sha2",
3827+ "m.megolm.v1.aes-sha2"
3828+ ],
3829+ "device_id": "ALICEDEVICE427",
3830+ "keys": {
3831+ "curve25519:ALICEDEVICE427": "6NQ9fvVucmgve3T935Xj3/VMserurkSlAck4v/6PdUw",
3832+ "ed25519:ALICEDEVICE427": "3G3zUQVX/GX9cFQ8lFUeHzsY9AaEeWpl2bLqwyBlvy0"
3833+ },
3834+ "signatures": {
3835+ "@alice_427:hs1": {
3836+ "ed25519:ALICEDEVICE427": "W5Ib/cqd1z9/AYLJpKymbd3hwGAjl9EP1FAKbPedKHec4Av3gWvtVQMmW63SYbzZpgDb0MZ9uhiTKsB46u4CAQ"
3837+ }
3838+ },
3839+ "user_id": "@alice_427:hs1",
3840+ "unsigned": {}
3841+ }
3842+ },
3843+ "@alice_436:hs1": {
3844+ "ALICEDEVICE436": {
3845+ "algorithms": [
3846+ "m.olm.v1.curve25519-aes-sha2",
3847+ "m.megolm.v1.aes-sha2"
3848+ ],
3849+ "device_id": "ALICEDEVICE436",
3850+ "keys": {
3851+ "curve25519:ALICEDEVICE436": "Q2RsAjT357YBa60OWARjRAO9YZuLvXVW5rhDLzK7MAo",
3852+ "ed25519:ALICEDEVICE436": "P2FSNkdP32AbR4HiwPvJ66ZBG+sytPQbyNoFCOavAgo"
3853+ },
3854+ "signatures": {
3855+ "@alice_436:hs1": {
3856+ "ed25519:ALICEDEVICE436": "vCPP2/Wr3IVCA/M1wrGi9WzzVOwEO6EuLlv0E5y9ii/qx2GQDJyCN9XLZ78rAI2QJiEEMGWy2wPDxmFr7ubNDQ"
3857+ }
3858+ },
3859+ "user_id": "@alice_436:hs1",
3860+ "unsigned": {}
3861+ }
3862+ },
3863+ "@alice_444:hs1": {
3864+ "ALICEDEVICE444": {
3865+ "algorithms": [
3866+ "m.olm.v1.curve25519-aes-sha2",
3867+ "m.megolm.v1.aes-sha2"
3868+ ],
3869+ "device_id": "ALICEDEVICE444",
3870+ "keys": {
3871+ "curve25519:ALICEDEVICE444": "m5Vxs5yiAOSQuRMM9D08KjxuUrffiHXS5MCLvET/TGk",
3872+ "ed25519:ALICEDEVICE444": "LjQ8JVoe/jKRPh2MVUKzkJw0OnZ46RJ00bNajPubaOg"
3873+ },
3874+ "signatures": {
3875+ "@alice_444:hs1": {
3876+ "ed25519:ALICEDEVICE444": "cX5dUOxd9kzUIk74zlzll57Rxp7O76hOKdlatGnn5hJ1c5OxlKgmY8OPIjEIOUvfugtoa30xlFUlM5ApOVLIAA"
3877+ }
3878+ },
3879+ "user_id": "@alice_444:hs1",
3880+ "unsigned": {}
3881+ }
3882+ },
3883+ "@alice_445:hs1": {
3884+ "ALICEDEVICE445": {
3885+ "algorithms": [
3886+ "m.olm.v1.curve25519-aes-sha2",
3887+ "m.megolm.v1.aes-sha2"
3888+ ],
3889+ "device_id": "ALICEDEVICE445",
3890+ "keys": {
3891+ "curve25519:ALICEDEVICE445": "ZQXjLBGI6ZUhyivYO1YoHu80x59aXCm9WJiv2ig2aA0",
3892+ "ed25519:ALICEDEVICE445": "1yjzoH75yUK63HKgaDT7N3uXGI2mXTMJV/eHMnIwXBM"
3893+ },
3894+ "signatures": {
3895+ "@alice_445:hs1": {
3896+ "ed25519:ALICEDEVICE445": "D20kAkPxb94e62qVSxJWu/w4ntaTGkDjTN6vvBDj9VbcMX7JghiVxJSiP0EHRBcJcyLCcmiPI0Gt02caU+UiAg"
3897+ }
3898+ },
3899+ "user_id": "@alice_445:hs1",
3900+ "unsigned": {}
3901+ }
3902+ },
3903+ "@alice_451:hs1": {
3904+ "ALICEDEVICE451": {
3905+ "algorithms": [
3906+ "m.olm.v1.curve25519-aes-sha2",
3907+ "m.megolm.v1.aes-sha2"
3908+ ],
3909+ "device_id": "ALICEDEVICE451",
3910+ "keys": {
3911+ "curve25519:ALICEDEVICE451": "O4+vjjW/1nD0PjeXQifl/ipjnhgzJM2fvFIO7NF0akU",
3912+ "ed25519:ALICEDEVICE451": "gBtMC1Y+eJSJhRdNk1wUh/2+zVCK1KeI82QR5nwEaHQ"
3913+ },
3914+ "signatures": {
3915+ "@alice_451:hs1": {
3916+ "ed25519:ALICEDEVICE451": "SJ7J+Tonm7lculQl26R4am5Hxr30phHAKfiiErduw5NcYb2fIpWnlO6wL75wW4rukMb28ePC+A18G2vdIMjlCg"
3917+ }
3918+ },
3919+ "user_id": "@alice_451:hs1",
3920+ "unsigned": {}
3921+ }
3922+ },
3923+ "@alice_452:hs1": {
3924+ "ALICEDEVICE452": {
3925+ "algorithms": [
3926+ "m.olm.v1.curve25519-aes-sha2",
3927+ "m.megolm.v1.aes-sha2"
3928+ ],
3929+ "device_id": "ALICEDEVICE452",
3930+ "keys": {
3931+ "curve25519:ALICEDEVICE452": "OWH1rznTwjeUzTc4tGj/8TJmLK8psRmUKE1IeD9r0HY",
3932+ "ed25519:ALICEDEVICE452": "sfy+RwzPAJ+UIDnRz49tyS7vg0zldJ91OO1bPSJo6yc"
3933+ },
3934+ "signatures": {
3935+ "@alice_452:hs1": {
3936+ "ed25519:ALICEDEVICE452": "i7B4CQGRV46qAKQ0UdINlCL7LuQ8r1VDV4az9ulMXe/aZirNAR9xXDixV6TuAGRkRM3ERyBtSYkaq3gxp+9UAw"
3937+ }
3938+ },
3939+ "user_id": "@alice_452:hs1",
3940+ "unsigned": {}
3941+ }
3942+ },
3943+ "@alice_461:hs1": {
3944+ "ALICEDEVICE461": {
3945+ "algorithms": [
3946+ "m.olm.v1.curve25519-aes-sha2",
3947+ "m.megolm.v1.aes-sha2"
3948+ ],
3949+ "device_id": "ALICEDEVICE461",
3950+ "keys": {
3951+ "curve25519:ALICEDEVICE461": "YhoqaTMsnxCfuXF9Nrl53/BnZyPKcoPOJe4KgxFmp0E",
3952+ "ed25519:ALICEDEVICE461": "N0NdCY89gDI5v6blFSLC8vtDRPBazaMciIHWjP/X5LA"
3953+ },
3954+ "signatures": {
3955+ "@alice_461:hs1": {
3956+ "ed25519:ALICEDEVICE461": "isJ9jMs7WYxu3aqNkxtJVVBvakNZ/vOFFvlgu1zIa6mkO1xawESEikhc9KnhmfR4G+2gtQf5I0hhDLxj63+xAw"
3957+ }
3958+ },
3959+ "user_id": "@alice_461:hs1",
3960+ "unsigned": {}
3961+ }
3962+ },
3963+ "@alice_46:hs1": {
3964+ "ALICEDEVICE46": {
3965+ "algorithms": [
3966+ "m.olm.v1.curve25519-aes-sha2",
3967+ "m.megolm.v1.aes-sha2"
3968+ ],
3969+ "device_id": "ALICEDEVICE46",
3970+ "keys": {
3971+ "curve25519:ALICEDEVICE46": "wfgTOrwf8Ri+OS+5GWCXD0MS3uqHhP1AxuGjto1StzU",
3972+ "ed25519:ALICEDEVICE46": "MfH+lQ0uZA+hd7ubXjEvqrmhnpQhDFX6NlBnREccz88"
3973+ },
3974+ "signatures": {
3975+ "@alice_46:hs1": {
3976+ "ed25519:ALICEDEVICE46": "FqIk2//Gzwk51sHPEe4VYYNiQ5hpHeS1qNldXHzK1Nvyz5W1g7NL2AiJljfNCZ8wfjN1xVTV4wixRqDrzVXSAA"
3977+ }
3978+ },
3979+ "user_id": "@alice_46:hs1",
3980+ "unsigned": {}
3981+ }
3982+ },
3983+ "@alice_472:hs1": {
3984+ "ALICEDEVICE472": {
3985+ "algorithms": [
3986+ "m.olm.v1.curve25519-aes-sha2",
3987+ "m.megolm.v1.aes-sha2"
3988+ ],
3989+ "device_id": "ALICEDEVICE472",
3990+ "keys": {
3991+ "curve25519:ALICEDEVICE472": "AzREzavP9UB2WeoX23h1okRCeHJ9OZPe7eOg+lDN+2w",
3992+ "ed25519:ALICEDEVICE472": "TsSX4tlkQlzcjitHft5zZBv7Y6OQ2mfmhe2rP2eDOnQ"
3993+ },
3994+ "signatures": {
3995+ "@alice_472:hs1": {
3996+ "ed25519:ALICEDEVICE472": "ASvjSsAi6QCscUukkYjB42FzkUaCFOxGQ74BoKaLslBFzI/Ff4cXTn8J48M7wElG/xVrtvMP49dpNG1ZinAXCQ"
3997+ }
3998+ },
3999+ "user_id": "@alice_472:hs1",
4000+ "unsigned": {}
4001+ }
4002+ },
4003+ "@alice_484:hs1": {
4004+ "ALICEDEVICE484": {
4005+ "algorithms": [
4006+ "m.olm.v1.curve25519-aes-sha2",
4007+ "m.megolm.v1.aes-sha2"
4008+ ],
4009+ "device_id": "ALICEDEVICE484",
4010+ "keys": {
4011+ "curve25519:ALICEDEVICE484": "SqCHnV8a3j62Vgpg9dD4xJ8Y8OHdljggX+pPcSjwkB8",
4012+ "ed25519:ALICEDEVICE484": "CmkQg3QaW/G4RyHFU4KIUdIQncOTB69RJLTuJOZKLzA"
4013+ },
4014+ "signatures": {
4015+ "@alice_484:hs1": {
4016+ "ed25519:ALICEDEVICE484": "B3XPgYGMMg05ZK8ZdLdGFI5DJrguz6c4JIjijdczp0i28kRUk9HgV6Fh3Tgp7WWp5uhES0wQPF03NuSoSg4ZAQ"
4017+ }
4018+ },
4019+ "user_id": "@alice_484:hs1",
4020+ "unsigned": {}
4021+ }
4022+ },
4023+ "@alice_493:hs1": {
4024+ "ALICEDEVICE493": {
4025+ "algorithms": [
4026+ "m.olm.v1.curve25519-aes-sha2",
4027+ "m.megolm.v1.aes-sha2"
4028+ ],
4029+ "device_id": "ALICEDEVICE493",
4030+ "keys": {
4031+ "curve25519:ALICEDEVICE493": "SnrFVW8BfoqrMfYDTbaoRIpTmgEZ+lEGveeM9j5coSw",
4032+ "ed25519:ALICEDEVICE493": "erSodxQcmHbjU/H3WF1sYPa4tWKgF+ORH8+QIy6rIqw"
4033+ },
4034+ "signatures": {
4035+ "@alice_493:hs1": {
4036+ "ed25519:ALICEDEVICE493": "UVn860eRPt2cBN9guF7XN+iUDcrEjzI3AsMHjuzJTtZVIOJ+5+l7oHaoNWWiwiWUFVq7GhosRmyGy0lqTyjtAg"
4037+ }
4038+ },
4039+ "user_id": "@alice_493:hs1",
4040+ "unsigned": {}
4041+ }
4042+ },
4043+ "@alice_495:hs1": {
4044+ "ALICEDEVICE495": {
4045+ "algorithms": [
4046+ "m.olm.v1.curve25519-aes-sha2",
4047+ "m.megolm.v1.aes-sha2"
4048+ ],
4049+ "device_id": "ALICEDEVICE495",
4050+ "keys": {
4051+ "curve25519:ALICEDEVICE495": "r+UwrU30Jggyfp4tkyKhXuPzw+QtGJutKcdPdjdLFCU",
4052+ "ed25519:ALICEDEVICE495": "dAsEZC/vVWAFjQtYHHdf17GUhDo9gNnpfPwsNp+LqS4"
4053+ },
4054+ "signatures": {
4055+ "@alice_495:hs1": {
4056+ "ed25519:ALICEDEVICE495": "tQsQ0Q4gMeLX9PKprTsad2hz65tY/FeYei4s98OSib7ARRYL+o4lsktZxggIyTGWAAPoznUp1h8e/xMZmEkuCg"
4057+ }
4058+ },
4059+ "user_id": "@alice_495:hs1",
4060+ "unsigned": {}
4061+ }
4062+ },
4063+ "@alice_496:hs1": {
4064+ "ALICEDEVICE496": {
4065+ "algorithms": [
4066+ "m.olm.v1.curve25519-aes-sha2",
4067+ "m.megolm.v1.aes-sha2"
4068+ ],
4069+ "device_id": "ALICEDEVICE496",
4070+ "keys": {
4071+ "curve25519:ALICEDEVICE496": "ycQ/Zun+jzmT05/yhAziNcaGZWV0ah38H/PAhWy/fnc",
4072+ "ed25519:ALICEDEVICE496": "3Ke7sTpWUnqWI7AcRyu/Q8ZVUKeiIwhdRUL0PDXZcrE"
4073+ },
4074+ "signatures": {
4075+ "@alice_496:hs1": {
4076+ "ed25519:ALICEDEVICE496": "+qdlS1bFxn9ap5EG6/t4/USBEG4WKUKoPJB9l+6IRAa0L/ow3Cw5seCLi4rsxbGKk3ubQ8jvSxMH6KRPD/iqAw"
4077+ }
4078+ },
4079+ "user_id": "@alice_496:hs1",
4080+ "unsigned": {}
4081+ }
4082+ },
4083+ "@alice_509:hs1": {
4084+ "ALICEDEVICE509": {
4085+ "algorithms": [
4086+ "m.olm.v1.curve25519-aes-sha2",
4087+ "m.megolm.v1.aes-sha2"
4088+ ],
4089+ "device_id": "ALICEDEVICE509",
4090+ "keys": {
4091+ "curve25519:ALICEDEVICE509": "NbYdv3BEjjWvTRP3WysE+7Rn2MhDZputZN365+vifH0",
4092+ "ed25519:ALICEDEVICE509": "x/pFbPzSgeRTEgfe6dMVQX5SaOf5xqwJGDU3lHkILFc"
4093+ },
4094+ "signatures": {
4095+ "@alice_509:hs1": {
4096+ "ed25519:ALICEDEVICE509": "lTj7M4MCkDF/ASkTQUGSCi8738m4s4twU1v/iwTjoeInwsnW3FjGADMqpAfHMchQ+Ee0Mi6DkDRjzLUQhI67AA"
4097+ }
4098+ },
4099+ "user_id": "@alice_509:hs1",
4100+ "unsigned": {}
4101+ }
4102+ },
4103+ "@alice_515:hs1": {
4104+ "ALICEDEVICE515": {
4105+ "algorithms": [
4106+ "m.olm.v1.curve25519-aes-sha2",
4107+ "m.megolm.v1.aes-sha2"
4108+ ],
4109+ "device_id": "ALICEDEVICE515",
4110+ "keys": {
4111+ "curve25519:ALICEDEVICE515": "+LPNw1ePrAPQ10zPv+flR32wUfmRAzDkyGoj/ZqNfj0",
4112+ "ed25519:ALICEDEVICE515": "SeCrEf8v4F8Q6QAETepPLmZYtm/EC4Mxg3zFrwaEO3s"
4113+ },
4114+ "signatures": {
4115+ "@alice_515:hs1": {
4116+ "ed25519:ALICEDEVICE515": "e9RsuyNky/hdIHWVE86By9BOUfUESNdk0vYOtlVBcfCvBknsK1dTzruh3RYyoFpXLn2XVBMLZ4mYBNQGIyb9DQ"
4117+ }
4118+ },
4119+ "user_id": "@alice_515:hs1",
4120+ "unsigned": {}
4121+ }
4122+ },
4123+ "@alice_518:hs1": {
4124+ "ALICEDEVICE518": {
4125+ "algorithms": [
4126+ "m.olm.v1.curve25519-aes-sha2",
4127+ "m.megolm.v1.aes-sha2"
4128+ ],
4129+ "device_id": "ALICEDEVICE518",
4130+ "keys": {
4131+ "curve25519:ALICEDEVICE518": "HjVMGIW7ZJq3kZPeKLErgcVeoNexuaGIGketZt8tAHc",
4132+ "ed25519:ALICEDEVICE518": "cW43Bdz5JOSiL32vR1LXXEcM/a369py+KQPHxN+4wBM"
4133+ },
4134+ "signatures": {
4135+ "@alice_518:hs1": {
4136+ "ed25519:ALICEDEVICE518": "SPFqh++BYYO5Vx/Dn5hIPEz3bND2eQcp7H8nZbWV3vAeUJOuErDZPamAL4HCE3lLRpdO9TW2TjIX3egDhZ29BA"
4137+ }
4138+ },
4139+ "user_id": "@alice_518:hs1",
4140+ "unsigned": {}
4141+ }
4142+ },
4143+ "@alice_532:hs1": {
4144+ "ALICEDEVICE532": {
4145+ "algorithms": [
4146+ "m.olm.v1.curve25519-aes-sha2",
4147+ "m.megolm.v1.aes-sha2"
4148+ ],
4149+ "device_id": "ALICEDEVICE532",
4150+ "keys": {
4151+ "curve25519:ALICEDEVICE532": "mCUobwaGEzmoHHu5aoCW8E06t3w/wwT6qGkEPIWENi4",
4152+ "ed25519:ALICEDEVICE532": "SYsUDdS/hy92QvWaF6Io89dw6Fy7shNourxTFPv61sc"
4153+ },
4154+ "signatures": {
4155+ "@alice_532:hs1": {
4156+ "ed25519:ALICEDEVICE532": "c3FKcu4AWLPvQprmJ7/otRHQ6bjAfU8whMnRqTWU6LCANK1QvfhPVKgtup5MA6VxdliTjkbHp9fPxWiMEiJcBQ"
4157+ }
4158+ },
4159+ "user_id": "@alice_532:hs1",
4160+ "unsigned": {}
4161+ }
4162+ },
4163+ "@alice_533:hs1": {
4164+ "ALICEDEVICE533": {
4165+ "algorithms": [
4166+ "m.olm.v1.curve25519-aes-sha2",
4167+ "m.megolm.v1.aes-sha2"
4168+ ],
4169+ "device_id": "ALICEDEVICE533",
4170+ "keys": {
4171+ "curve25519:ALICEDEVICE533": "ztLFzEFwtX2LZwjDF4z2ZfQ/DM7PJEwTrNZodb/WUFY",
4172+ "ed25519:ALICEDEVICE533": "rSosLL8vZE0F+RfaN2OtCqOsf4o5UgNWLYC8J1RaM1Q"
4173+ },
4174+ "signatures": {
4175+ "@alice_533:hs1": {
4176+ "ed25519:ALICEDEVICE533": "S7b1NWk1QPW8l6uObIBkdUOUGS1Pn8cng6UmZ1ogdP5DUmqdOsR/wn/b8OZDemXa/ke+f5SuFznfCnUPNO7WDw"
4177+ }
4178+ },
4179+ "user_id": "@alice_533:hs1",
4180+ "unsigned": {}
4181+ }
4182+ },
4183+ "@alice_54:hs1": {
4184+ "ALICEDEVICE54": {
4185+ "algorithms": [
4186+ "m.olm.v1.curve25519-aes-sha2",
4187+ "m.megolm.v1.aes-sha2"
4188+ ],
4189+ "device_id": "ALICEDEVICE54",
4190+ "keys": {
4191+ "curve25519:ALICEDEVICE54": "wJobexXcb1DESzuwyMnazGQz3iFUpFCio0E/L1YlLw8",
4192+ "ed25519:ALICEDEVICE54": "se2XiXeRHoxBuHa8niXOO9xNDA2IDJzSiGSK5paVhnE"
4193+ },
4194+ "signatures": {
4195+ "@alice_54:hs1": {
4196+ "ed25519:ALICEDEVICE54": "J84TsPlp7yhLHLN0jARuFq1qNfvkloJsihI+eu2ADztd+szY1uiIchFtN4hUzuHTLjlilXyFIIt1nshMu88fBA"
4197+ }
4198+ },
4199+ "user_id": "@alice_54:hs1",
4200+ "unsigned": {}
4201+ }
4202+ },
4203+ "@alice_567:hs1": {
4204+ "ALICEDEVICE567": {
4205+ "algorithms": [
4206+ "m.olm.v1.curve25519-aes-sha2",
4207+ "m.megolm.v1.aes-sha2"
4208+ ],
4209+ "device_id": "ALICEDEVICE567",
4210+ "keys": {
4211+ "curve25519:ALICEDEVICE567": "8crvH2QnlUyWACC7mBd3DET0ttNtgvJa9Qn5r3S3BSA",
4212+ "ed25519:ALICEDEVICE567": "3UPeEYzDACxhDO9WwxRGe8WHu2t0hxr5E0lkhvhCWiA"
4213+ },
4214+ "signatures": {
4215+ "@alice_567:hs1": {
4216+ "ed25519:ALICEDEVICE567": "1z0RlxEvxQn5w5Z5ypDydp3CbKxNA2ye+OiyEkaAzBWZE4F3R6S3SB6w9MGmuHM7dqk6P/1uJ3no8l+nDVojAg"
4217+ }
4218+ },
4219+ "user_id": "@alice_567:hs1",
4220+ "unsigned": {}
4221+ }
4222+ },
4223+ "@alice_56:hs1": {
4224+ "ALICEDEVICE56": {
4225+ "algorithms": [
4226+ "m.olm.v1.curve25519-aes-sha2",
4227+ "m.megolm.v1.aes-sha2"
4228+ ],
4229+ "device_id": "ALICEDEVICE56",
4230+ "keys": {
4231+ "curve25519:ALICEDEVICE56": "jOatW/G+3PKirPr5wDePGtbV5DBqyUXQgyxoZMNJrjo",
4232+ "ed25519:ALICEDEVICE56": "TCd/X2QxW4hJUME77SkDH/ir1m0V/NGMapbSY8uDONM"
4233+ },
4234+ "signatures": {
4235+ "@alice_56:hs1": {
4236+ "ed25519:ALICEDEVICE56": "w1suB8jT5dDjaNKIaj2gFF82X6/zbc3j35tngXkaN5bGvpUEc0XwnbUcdALtz2epwzvUFhdqJm/IauY4SP4oAA"
4237+ }
4238+ },
4239+ "user_id": "@alice_56:hs1",
4240+ "unsigned": {}
4241+ }
4242+ },
4243+ "@alice_576:hs1": {
4244+ "ALICEDEVICE576": {
4245+ "algorithms": [
4246+ "m.olm.v1.curve25519-aes-sha2",
4247+ "m.megolm.v1.aes-sha2"
4248+ ],
4249+ "device_id": "ALICEDEVICE576",
4250+ "keys": {
4251+ "curve25519:ALICEDEVICE576": "uqMYOAYUVNGoDa0th2WPduVim7eR6ML6gNXfU1KAngg",
4252+ "ed25519:ALICEDEVICE576": "pMx1BBKBAoD6jlA8X3N7+b+4tpuYH9e4jO0rtQvOWII"
4253+ },
4254+ "signatures": {
4255+ "@alice_576:hs1": {
4256+ "ed25519:ALICEDEVICE576": "o4y0p5nBjAKzFxqCyWLsVaAl/IDxm/nWPcIPyKB8qovpDaqtUCDfUEM7NTXlCoXUrZrPx2xiSYFeApig+g+2CQ"
4257+ }
4258+ },
4259+ "user_id": "@alice_576:hs1",
4260+ "unsigned": {}
4261+ }
4262+ },
4263+ "@alice_584:hs1": {
4264+ "ALICEDEVICE584": {
4265+ "algorithms": [
4266+ "m.olm.v1.curve25519-aes-sha2",
4267+ "m.megolm.v1.aes-sha2"
4268+ ],
4269+ "device_id": "ALICEDEVICE584",
4270+ "keys": {
4271+ "curve25519:ALICEDEVICE584": "hli6Pla620toHDtmZKKXsA8e4eU2eJYXekWm3AeL0AU",
4272+ "ed25519:ALICEDEVICE584": "nm9KL0hT1YbY5SSfxTjryHBkBd+agHit6rfMBMuTe7k"
4273+ },
4274+ "signatures": {
4275+ "@alice_584:hs1": {
4276+ "ed25519:ALICEDEVICE584": "IOCVUKEu4HYJDSEdRWs3gaLsZuZ59W1IKo5czD4pQkxTQeqwjYlqaRNDuQLbXA3j1n+Y9j0UNsGF3UZN1dvHCg"
4277+ }
4278+ },
4279+ "user_id": "@alice_584:hs1",
4280+ "unsigned": {}
4281+ }
4282+ },
4283+ "@alice_585:hs1": {
4284+ "ALICEDEVICE585": {
4285+ "algorithms": [
4286+ "m.olm.v1.curve25519-aes-sha2",
4287+ "m.megolm.v1.aes-sha2"
4288+ ],
4289+ "device_id": "ALICEDEVICE585",
4290+ "keys": {
4291+ "curve25519:ALICEDEVICE585": "X55aTuD8yDRJi3+SnXrma4M+GUzbzscef6K+OkUsCWY",
4292+ "ed25519:ALICEDEVICE585": "N0nn63AgueFslzD3nlsJK9o/ioiQvEteh1JittglNXM"
4293+ },
4294+ "signatures": {
4295+ "@alice_585:hs1": {
4296+ "ed25519:ALICEDEVICE585": "/rFrF7TvZXBGio4zzI/G4pow0Dl4BpnLYV4l2YNnsqQ/B9m4kusjS2cRNYh6qagmX2UVLTuys1vlMW45L72eBQ"
4297+ }
4298+ },
4299+ "user_id": "@alice_585:hs1",
4300+ "unsigned": {}
4301+ }
4302+ },
4303+ "@alice_591:hs1": {
4304+ "ALICEDEVICE591": {
4305+ "algorithms": [
4306+ "m.olm.v1.curve25519-aes-sha2",
4307+ "m.megolm.v1.aes-sha2"
4308+ ],
4309+ "device_id": "ALICEDEVICE591",
4310+ "keys": {
4311+ "curve25519:ALICEDEVICE591": "wfFl5sm6i/15guAuYpPQBUVVnLb6TH0FzKVjLJt2gyc",
4312+ "ed25519:ALICEDEVICE591": "tpDJoxad144VNGCUphayhKuS90iFP3fGymxBwiJFdp8"
4313+ },
4314+ "signatures": {
4315+ "@alice_591:hs1": {
4316+ "ed25519:ALICEDEVICE591": "Cg6odZlXQr6xVrWIVmJnZGIJpxO8NlVsfaoV5UBUozFRPuB4G9kckp9pu5/TLkeVhBKMPGSG/CL3yZtExgNJDQ"
4317+ }
4318+ },
4319+ "user_id": "@alice_591:hs1",
4320+ "unsigned": {}
4321+ }
4322+ },
4323+ "@alice_597:hs1": {
4324+ "ALICEDEVICE597": {
4325+ "algorithms": [
4326+ "m.olm.v1.curve25519-aes-sha2",
4327+ "m.megolm.v1.aes-sha2"
4328+ ],
4329+ "device_id": "ALICEDEVICE597",
4330+ "keys": {
4331+ "curve25519:ALICEDEVICE597": "YiUYuNuBHp4cDiu0uBhK3h7pEaDLSsxqJyUUH7rMrTc",
4332+ "ed25519:ALICEDEVICE597": "ABfbQ9qT0OGVI5YD52krrwkKtMEjkWVC+Ig/WmEiEqM"
4333+ },
4334+ "signatures": {
4335+ "@alice_597:hs1": {
4336+ "ed25519:ALICEDEVICE597": "k42MVUF/QdB20hIM6KeyQGj4YyCrBUmX5X7GfGj7U23TkzTsJplAtg411r+Td03884GKtlJkffELPxpSC1QZDw"
4337+ }
4338+ },
4339+ "user_id": "@alice_597:hs1",
4340+ "unsigned": {}
4341+ }
4342+ },
4343+ "@alice_607:hs1": {
4344+ "ALICEDEVICE607": {
4345+ "algorithms": [
4346+ "m.olm.v1.curve25519-aes-sha2",
4347+ "m.megolm.v1.aes-sha2"
4348+ ],
4349+ "device_id": "ALICEDEVICE607",
4350+ "keys": {
4351+ "curve25519:ALICEDEVICE607": "pgizDISLGn6Mdwc/oYBFuXKZYfWkT4P9SIe5jv7uDAQ",
4352+ "ed25519:ALICEDEVICE607": "cKhZtJHWnFzC+HsdkYkfxXKENYLJGRStfi+mFuDOiUA"
4353+ },
4354+ "signatures": {
4355+ "@alice_607:hs1": {
4356+ "ed25519:ALICEDEVICE607": "I7D8iue0AFiRyk/EBz/VwEjKa7YgpCqSMSyyw9rpAQIqdeiiDAjhILYTD1VquIJ4Nsaw/zFPOT3NN8LzVAmZBQ"
4357+ }
4358+ },
4359+ "user_id": "@alice_607:hs1",
4360+ "unsigned": {}
4361+ }
4362+ },
4363+ "@alice_615:hs1": {
4364+ "ALICEDEVICE615": {
4365+ "algorithms": [
4366+ "m.olm.v1.curve25519-aes-sha2",
4367+ "m.megolm.v1.aes-sha2"
4368+ ],
4369+ "device_id": "ALICEDEVICE615",
4370+ "keys": {
4371+ "curve25519:ALICEDEVICE615": "rAskgy77fb8tnW4cWyv0P66YitdXrTnQ30iT3hXLWX4",
4372+ "ed25519:ALICEDEVICE615": "DkT6Mr6++It/kfUj05dbSQJNja2CHkUKwNgYB4DY9Gs"
4373+ },
4374+ "signatures": {
4375+ "@alice_615:hs1": {
4376+ "ed25519:ALICEDEVICE615": "B0BOmoU1vDTjQBmQiQsN1eJrI9Oz40T48Ir4l6lLa9OhXuvjYowxqj0QaObN80tEZ2QOeYoHpcmxdPT/B0rsAQ"
4377+ }
4378+ },
4379+ "user_id": "@alice_615:hs1",
4380+ "unsigned": {}
4381+ }
4382+ },
4383+ "@alice_618:hs1": {
4384+ "ALICEDEVICE618": {
4385+ "algorithms": [
4386+ "m.olm.v1.curve25519-aes-sha2",
4387+ "m.megolm.v1.aes-sha2"
4388+ ],
4389+ "device_id": "ALICEDEVICE618",
4390+ "keys": {
4391+ "curve25519:ALICEDEVICE618": "oge2ytnBSTDPX4I+x5mIjgVSEp/oYieFovGncnpVV1I",
4392+ "ed25519:ALICEDEVICE618": "Q1K/Lr3uxmLedlg8nSusaR5g2cLYiZL9LZxFkp4J6hs"
4393+ },
4394+ "signatures": {
4395+ "@alice_618:hs1": {
4396+ "ed25519:ALICEDEVICE618": "3p6sLm+hGjWeEzf9XfaUxMKoqZZibk6ldW8uG67id+x4hjceM4430jgvbyUl2WLWOV8JCPwUzFfJYiZmtm0DDQ"
4397+ }
4398+ },
4399+ "user_id": "@alice_618:hs1",
4400+ "unsigned": {}
4401+ }
4402+ },
4403+ "@alice_622:hs1": {
4404+ "ALICEDEVICE622": {
4405+ "algorithms": [
4406+ "m.olm.v1.curve25519-aes-sha2",
4407+ "m.megolm.v1.aes-sha2"
4408+ ],
4409+ "device_id": "ALICEDEVICE622",
4410+ "keys": {
4411+ "curve25519:ALICEDEVICE622": "4Hx1Oxp6XwDAl8O4zSF1J4/oZX+8AphXki2gWBeadTc",
4412+ "ed25519:ALICEDEVICE622": "anLcxYZzWfj3+Y+iBkOOff9j8B901aUd4A8WC51X/3s"
4413+ },
4414+ "signatures": {
4415+ "@alice_622:hs1": {
4416+ "ed25519:ALICEDEVICE622": "TGGsU0Wf1jU2Hk/BT8x7XXwejaUKuJL6MEt3CrrCfevgEqmQcP7ZpDN+IXhYZMpD6sAHnF6tV7H3n7tPSYclBQ"
4417+ }
4418+ },
4419+ "user_id": "@alice_622:hs1",
4420+ "unsigned": {}
4421+ }
4422+ },
4423+ "@alice_625:hs1": {
4424+ "ALICEDEVICE625": {
4425+ "algorithms": [
4426+ "m.olm.v1.curve25519-aes-sha2",
4427+ "m.megolm.v1.aes-sha2"
4428+ ],
4429+ "device_id": "ALICEDEVICE625",
4430+ "keys": {
4431+ "curve25519:ALICEDEVICE625": "UVF1k8pnAyhEt/iCz0CN6DMeztWAzpnJR1em/v5+6Xg",
4432+ "ed25519:ALICEDEVICE625": "fSrYdZeECCwDQKBK3nrq97S6hXRQYCqQlfzZ48AvCZg"
4433+ },
4434+ "signatures": {
4435+ "@alice_625:hs1": {
4436+ "ed25519:ALICEDEVICE625": "F5fdh3UySPXB2PRMg1LE0iYEI2wwuO0n4yLH0OH/o5Vbgr5blsiyKfCW8e3X3Q9v4I05sKMQnrjO7j3cbsLFBA"
4437+ }
4438+ },
4439+ "user_id": "@alice_625:hs1",
4440+ "unsigned": {}
4441+ }
4442+ },
4443+ "@alice_634:hs1": {
4444+ "ALICEDEVICE634": {
4445+ "algorithms": [
4446+ "m.olm.v1.curve25519-aes-sha2",
4447+ "m.megolm.v1.aes-sha2"
4448+ ],
4449+ "device_id": "ALICEDEVICE634",
4450+ "keys": {
4451+ "curve25519:ALICEDEVICE634": "6eKvSdt1ZZE7JiP7QLzHQ+qbhEx+X6o44mB5su2/M1U",
4452+ "ed25519:ALICEDEVICE634": "Xq1jD2sNoBKWfRLcx/8PyNpD/4k6iHYjqB7r6rMDu5A"
4453+ },
4454+ "signatures": {
4455+ "@alice_634:hs1": {
4456+ "ed25519:ALICEDEVICE634": "edLqwQ8mCzRwJllq9caw5Ortl5gNdzGylsQHODvwQ+P8iIYOpxOwk7Q6ihYfBxs+bVOx5aLZjvrU5HIOAgQBCw"
4457+ }
4458+ },
4459+ "user_id": "@alice_634:hs1",
4460+ "unsigned": {}
4461+ }
4462+ },
4463+ "@alice_636:hs1": {
4464+ "ALICEDEVICE636": {
4465+ "algorithms": [
4466+ "m.olm.v1.curve25519-aes-sha2",
4467+ "m.megolm.v1.aes-sha2"
4468+ ],
4469+ "device_id": "ALICEDEVICE636",
4470+ "keys": {
4471+ "curve25519:ALICEDEVICE636": "WRVbx6QHeKHrASbQ1aSQqJoKAhaA8oT+GiXqaMi8khw",
4472+ "ed25519:ALICEDEVICE636": "tXYeuW2nDto+4M1ROyh3mM+kPMMK54L9DZD2wCcA6m4"
4473+ },
4474+ "signatures": {
4475+ "@alice_636:hs1": {
4476+ "ed25519:ALICEDEVICE636": "oidxsVI6rklm91FzwHaoRWL1nCc3xKUvPe7WL+hLP8FTP5qr9N6SFMpfu1Fv6OwA/cd3LdRLWk5XFj2PU+xvAw"
4477+ }
4478+ },
4479+ "user_id": "@alice_636:hs1",
4480+ "unsigned": {}
4481+ }
4482+ },
4483+ "@alice_646:hs1": {
4484+ "ALICEDEVICE646": {
4485+ "algorithms": [
4486+ "m.olm.v1.curve25519-aes-sha2",
4487+ "m.megolm.v1.aes-sha2"
4488+ ],
4489+ "device_id": "ALICEDEVICE646",
4490+ "keys": {
4491+ "curve25519:ALICEDEVICE646": "cyPft/qLu3RTpRHBW3A5KG/9wgbM/T2L6flNrR99kAI",
4492+ "ed25519:ALICEDEVICE646": "rN1FiUnoUet9Wttj1YwHDLCRNgfxAIcSqZVAigy5v/c"
4493+ },
4494+ "signatures": {
4495+ "@alice_646:hs1": {
4496+ "ed25519:ALICEDEVICE646": "o1ywtLlGGipY3sNQ6JMiW7yDVTMWea8DyXdE+ovSA0uW4QPSytgKiq22XjeSJnTSVxjmTsJ/jRit2TQRB1fcCQ"
4497+ }
4498+ },
4499+ "user_id": "@alice_646:hs1",
4500+ "unsigned": {}
4501+ }
4502+ },
4503+ "@alice_663:hs1": {
4504+ "ALICEDEVICE663": {
4505+ "algorithms": [
4506+ "m.olm.v1.curve25519-aes-sha2",
4507+ "m.megolm.v1.aes-sha2"
4508+ ],
4509+ "device_id": "ALICEDEVICE663",
4510+ "keys": {
4511+ "curve25519:ALICEDEVICE663": "vreJCQaEmh9H6YibffiUAmrrBJcLKbHP6/kLuhMVFyQ",
4512+ "ed25519:ALICEDEVICE663": "lg1SXhI2BX2sOoVscx5jtPHt1C6lH4R6EDl5gd5L774"
4513+ },
4514+ "signatures": {
4515+ "@alice_663:hs1": {
4516+ "ed25519:ALICEDEVICE663": "UKr4aUAasuOHOuAmnPMbAju6lHnBi3qzQIYw6VXJv3q5k5K1clBjFaIESL8cy65BAPihHPiVZqsMXk+MwobnBA"
4517+ }
4518+ },
4519+ "user_id": "@alice_663:hs1",
4520+ "unsigned": {}
4521+ }
4522+ },
4523+ "@alice_679:hs1": {
4524+ "ALICEDEVICE679": {
4525+ "algorithms": [
4526+ "m.olm.v1.curve25519-aes-sha2",
4527+ "m.megolm.v1.aes-sha2"
4528+ ],
4529+ "device_id": "ALICEDEVICE679",
4530+ "keys": {
4531+ "curve25519:ALICEDEVICE679": "mB4wcwzcGLnf8Dr1TJHNftVTJ7G73XGEfHxLrtg0qVg",
4532+ "ed25519:ALICEDEVICE679": "Oy8uqihCu83Kjef319ymPEZKs73pH0TmB4LTuc7EvQ8"
4533+ },
4534+ "signatures": {
4535+ "@alice_679:hs1": {
4536+ "ed25519:ALICEDEVICE679": "5K8fbmmrfgVAyLl0DDQV25p/XLWyLUB7ZcggJyelEB/teJOzoPk6SCIFqVJg1BRS3BGQRi94OvoVV2Jp0cpoAw"
4537+ }
4538+ },
4539+ "user_id": "@alice_679:hs1",
4540+ "unsigned": {}
4541+ }
4542+ },
4543+ "@alice_688:hs1": {
4544+ "ALICEDEVICE688": {
4545+ "algorithms": [
4546+ "m.olm.v1.curve25519-aes-sha2",
4547+ "m.megolm.v1.aes-sha2"
4548+ ],
4549+ "device_id": "ALICEDEVICE688",
4550+ "keys": {
4551+ "curve25519:ALICEDEVICE688": "sIzAHuboXgppwXLU819u9FHcQztE3skTjARjCz3PMAo",
4552+ "ed25519:ALICEDEVICE688": "Hst2qUcV+t1orOhBWUGgB+zX+9PBTYMDt0Cpg0eQ3tk"
4553+ },
4554+ "signatures": {
4555+ "@alice_688:hs1": {
4556+ "ed25519:ALICEDEVICE688": "7k/Ir66r9qL6k3CXcGxFdCebB8b+MD1HyyELKmxUzlJvrVBbVXAlp0e33HmBeTl2tqXDMXEX860HCvHAMd0iCA"
4557+ }
4558+ },
4559+ "user_id": "@alice_688:hs1",
4560+ "unsigned": {}
4561+ }
4562+ },
4563+ "@alice_697:hs1": {
4564+ "ALICEDEVICE697": {
4565+ "algorithms": [
4566+ "m.olm.v1.curve25519-aes-sha2",
4567+ "m.megolm.v1.aes-sha2"
4568+ ],
4569+ "device_id": "ALICEDEVICE697",
4570+ "keys": {
4571+ "curve25519:ALICEDEVICE697": "wcApHs8gsTVVIyzc1QeXPBfS5//IDu4Ofz9MSdj1qwk",
4572+ "ed25519:ALICEDEVICE697": "Vw0m/WFVPlM1SwrVzQ3a1dTENAtMbpZvYLhwIGfuRB8"
4573+ },
4574+ "signatures": {
4575+ "@alice_697:hs1": {
4576+ "ed25519:ALICEDEVICE697": "HPTJhNGg4A1wfJkkv6Y/PBTojWgzXiE1D28flRE3/FccH655DcYTJbxOEoVATHzpNkIdsvhgD7+fcRFljTBSDQ"
4577+ }
4578+ },
4579+ "user_id": "@alice_697:hs1",
4580+ "unsigned": {}
4581+ }
4582+ },
4583+ "@alice_698:hs1": {
4584+ "ALICEDEVICE698": {
4585+ "algorithms": [
4586+ "m.olm.v1.curve25519-aes-sha2",
4587+ "m.megolm.v1.aes-sha2"
4588+ ],
4589+ "device_id": "ALICEDEVICE698",
4590+ "keys": {
4591+ "curve25519:ALICEDEVICE698": "rI1kqG4LUfIxk7jFi6JBdcjTUTgUYrIiMDeX22uU9gw",
4592+ "ed25519:ALICEDEVICE698": "skNX2eD+HKSt2j6UdjdHvm3bLJ95esTCLeXlfng5IOw"
4593+ },
4594+ "signatures": {
4595+ "@alice_698:hs1": {
4596+ "ed25519:ALICEDEVICE698": "KZgQqRDg+ATK7IiTpYollEbnZaZXdNg1kbg2aaUw/9LG7qrsccu/b0TEdwHPISrV6RU+O7iJY6A6Tqer7kQGBg"
4597+ }
4598+ },
4599+ "user_id": "@alice_698:hs1",
4600+ "unsigned": {}
4601+ }
4602+ },
4603+ "@alice_6:hs1": {
4604+ "ALICEDEVICE6": {
4605+ "algorithms": [
4606+ "m.olm.v1.curve25519-aes-sha2",
4607+ "m.megolm.v1.aes-sha2"
4608+ ],
4609+ "device_id": "ALICEDEVICE6",
4610+ "keys": {
4611+ "curve25519:ALICEDEVICE6": "1L4RoePM3BZjyrLsjlIVP0zY+ljd67HcCqyW5J+wciE",
4612+ "ed25519:ALICEDEVICE6": "2aK689O/vAHI2P4ggnSqt6ozzG85ugDXynsdwukAUFc"
4613+ },
4614+ "signatures": {
4615+ "@alice_6:hs1": {
4616+ "ed25519:ALICEDEVICE6": "uAKrTTJOxMfrK2dYIwLvQXXVgDGrQ6Wk6LpTh/nqC8oMFUqTrf4P1Ljpcf5hIOrq0gkoTpEebRO5SxGFX+qzBg"
4617+ }
4618+ },
4619+ "user_id": "@alice_6:hs1",
4620+ "unsigned": {}
4621+ }
4622+ },
4623+ "@alice_711:hs1": {
4624+ "ALICEDEVICE711": {
4625+ "algorithms": [
4626+ "m.olm.v1.curve25519-aes-sha2",
4627+ "m.megolm.v1.aes-sha2"
4628+ ],
4629+ "device_id": "ALICEDEVICE711",
4630+ "keys": {
4631+ "curve25519:ALICEDEVICE711": "KNAyn0IxqIi8A9wdhjpZ8/tia/1TOIqZvzOefRnuLgs",
4632+ "ed25519:ALICEDEVICE711": "LLEpCjiztOUBUO0/NNhB+nF2EekOshGmYQOXj39sRMk"
4633+ },
4634+ "signatures": {
4635+ "@alice_711:hs1": {
4636+ "ed25519:ALICEDEVICE711": "KnJaBDUyVubof/NU1jjLYs4GK1XnVRiLvVsDwhHn9umdWmdbF0JB4mbngj0kBsUJbbCmQVIaIAH7vWCay344BA"
4637+ }
4638+ },
4639+ "user_id": "@alice_711:hs1",
4640+ "unsigned": {}
4641+ }
4642+ },
4643+ "@alice_717:hs1": {
4644+ "ALICEDEVICE717": {
4645+ "algorithms": [
4646+ "m.olm.v1.curve25519-aes-sha2",
4647+ "m.megolm.v1.aes-sha2"
4648+ ],
4649+ "device_id": "ALICEDEVICE717",
4650+ "keys": {
4651+ "curve25519:ALICEDEVICE717": "9K1BF04ymlkzmwou5WMN3dGR/iLyew7E8Uw+oNNncyc",
4652+ "ed25519:ALICEDEVICE717": "aTJwMWPoELIg7xOvRZLbB0sfMLUJLHR3zCJg6pqYTrw"
4653+ },
4654+ "signatures": {
4655+ "@alice_717:hs1": {
4656+ "ed25519:ALICEDEVICE717": "P/ZNtVKvclEJWZjKh7xDGXCsdH2Z7/Cn8EeWX3En592urjatWf+lqJ5h27FXzyJ7lLXMp5s7HcowNuRxMu6CAg"
4657+ }
4658+ },
4659+ "user_id": "@alice_717:hs1",
4660+ "unsigned": {}
4661+ }
4662+ },
4663+ "@alice_720:hs1": {
4664+ "ALICEDEVICE720": {
4665+ "algorithms": [
4666+ "m.olm.v1.curve25519-aes-sha2",
4667+ "m.megolm.v1.aes-sha2"
4668+ ],
4669+ "device_id": "ALICEDEVICE720",
4670+ "keys": {
4671+ "curve25519:ALICEDEVICE720": "cJrxFKNCb3G/YMJnKOONLcrSL8T3InBTvY3RqTCDhlA",
4672+ "ed25519:ALICEDEVICE720": "DOrAH4OPYkKobz44e1YaNlcmUASpAqK9oSlOOyFXKvc"
4673+ },
4674+ "signatures": {
4675+ "@alice_720:hs1": {
4676+ "ed25519:ALICEDEVICE720": "m1Eld0yvU7zpWHsB7G2JB3WkLxwxpdxTAr2lysMRZQu9TyiEmYv9u/ewFlbdEgcPV6qSwVpros0Nz4B03SdQDQ"
4677+ }
4678+ },
4679+ "user_id": "@alice_720:hs1",
4680+ "unsigned": {}
4681+ }
4682+ },
4683+ "@alice_724:hs1": {
4684+ "ALICEDEVICE724": {
4685+ "algorithms": [
4686+ "m.olm.v1.curve25519-aes-sha2",
4687+ "m.megolm.v1.aes-sha2"
4688+ ],
4689+ "device_id": "ALICEDEVICE724",
4690+ "keys": {
4691+ "curve25519:ALICEDEVICE724": "LnU759E6uw1fKso3bIjqzfU0OzZHP35wTjqx8oZXcmY",
4692+ "ed25519:ALICEDEVICE724": "+/e9fhR+ar5Cb7HXrasHAoTKmlchAF1YCyQHRmWOfy8"
4693+ },
4694+ "signatures": {
4695+ "@alice_724:hs1": {
4696+ "ed25519:ALICEDEVICE724": "KLHwBN952yIHHmlS8MchHUWZIRDqJIIbhUzLOxk/fbsACYXciLAutWeqm+znHCyv4noJhW6fxxZ51z0qO3msCA"
4697+ }
4698+ },
4699+ "user_id": "@alice_724:hs1",
4700+ "unsigned": {}
4701+ }
4702+ },
4703+ "@alice_748:hs1": {
4704+ "ALICEDEVICE748": {
4705+ "algorithms": [
4706+ "m.olm.v1.curve25519-aes-sha2",
4707+ "m.megolm.v1.aes-sha2"
4708+ ],
4709+ "device_id": "ALICEDEVICE748",
4710+ "keys": {
4711+ "curve25519:ALICEDEVICE748": "pUOf0UFRfWfOwjmleFyzVs+IZX6SXEzkV0PC4xiVzxs",
4712+ "ed25519:ALICEDEVICE748": "w72hDGTAfWgVZ89y/QtTg8ZFwCNQKF8MfwaBjR3bPkY"
4713+ },
4714+ "signatures": {
4715+ "@alice_748:hs1": {
4716+ "ed25519:ALICEDEVICE748": "+ClSTMBdD1mjjkfcaIuSaXD7wCopcak5o9S5AGoHwNYIJk7jfRCDfZnCq6QSPe1CL4IE7cJ0MK2Av84+vmCiBQ"
4717+ }
4718+ },
4719+ "user_id": "@alice_748:hs1",
4720+ "unsigned": {}
4721+ }
4722+ },
4723+ "@alice_755:hs1": {
4724+ "ALICEDEVICE755": {
4725+ "algorithms": [
4726+ "m.olm.v1.curve25519-aes-sha2",
4727+ "m.megolm.v1.aes-sha2"
4728+ ],
4729+ "device_id": "ALICEDEVICE755",
4730+ "keys": {
4731+ "curve25519:ALICEDEVICE755": "gkwr8ebYlhP6gYGqZaOotIceo1qdIqbZtEQQBthRVks",
4732+ "ed25519:ALICEDEVICE755": "qXeQ3aFVnBf89hLSJQFSXiRLeAmrE5hbenFV7XcoyUg"
4733+ },
4734+ "signatures": {
4735+ "@alice_755:hs1": {
4736+ "ed25519:ALICEDEVICE755": "dOYt/s82oV4sK0+qmJ+qustURAW1D3Gye2hHfroyAMdRNmkiisvixhRoF8ZhQ2Aw3WWdl9a8xJjJcV4S1a7ICA"
4737+ }
4738+ },
4739+ "user_id": "@alice_755:hs1",
4740+ "unsigned": {}
4741+ }
4742+ },
4743+ "@alice_763:hs1": {
4744+ "ALICEDEVICE763": {
4745+ "algorithms": [
4746+ "m.olm.v1.curve25519-aes-sha2",
4747+ "m.megolm.v1.aes-sha2"
4748+ ],
4749+ "device_id": "ALICEDEVICE763",
4750+ "keys": {
4751+ "curve25519:ALICEDEVICE763": "QmE2UmGpveBDcOMW4Ne1ZqDAINIkjuqak+psAHUcr0Q",
4752+ "ed25519:ALICEDEVICE763": "k+M6/Quz6x/XxRIGzFgApapykstfCoyKETsJDvPSFtQ"
4753+ },
4754+ "signatures": {
4755+ "@alice_763:hs1": {
4756+ "ed25519:ALICEDEVICE763": "W1f/93s+UAwGglkuBjaCqI8cEP1SIa67axF2d1IE54tu6f3ccQPRbFrErduQO7QwcJF0OPYhmEteUB/ZqbLTDg"
4757+ }
4758+ },
4759+ "user_id": "@alice_763:hs1",
4760+ "unsigned": {}
4761+ }
4762+ },
4763+ "@alice_764:hs1": {
4764+ "ALICEDEVICE764": {
4765+ "algorithms": [
4766+ "m.olm.v1.curve25519-aes-sha2",
4767+ "m.megolm.v1.aes-sha2"
4768+ ],
4769+ "device_id": "ALICEDEVICE764",
4770+ "keys": {
4771+ "curve25519:ALICEDEVICE764": "wG76WhNgutdly4H5JjCRbCHBKp+W2qN8wmJOmdgkLWA",
4772+ "ed25519:ALICEDEVICE764": "NlL9OU36jOtOxz09yAHxTryu0Wapr3hVLhamuq9DKpY"
4773+ },
4774+ "signatures": {
4775+ "@alice_764:hs1": {
4776+ "ed25519:ALICEDEVICE764": "Su/y237zlx1zcfUGrMjaFtHZH48rr7M/AV3lEB2BpBc9Unhn5GxOaq2KnNT3KIx8kaYQ+7Hh726ofaXXb0OqBA"
4777+ }
4778+ },
4779+ "user_id": "@alice_764:hs1",
4780+ "unsigned": {}
4781+ }
4782+ },
4783+ "@alice_77:hs1": {
4784+ "ALICEDEVICE77": {
4785+ "algorithms": [
4786+ "m.olm.v1.curve25519-aes-sha2",
4787+ "m.megolm.v1.aes-sha2"
4788+ ],
4789+ "device_id": "ALICEDEVICE77",
4790+ "keys": {
4791+ "curve25519:ALICEDEVICE77": "eVnpxF1EgaVZgQLIJJMFbjsXTpcPNJPW8Z2XIqgL+0M",
4792+ "ed25519:ALICEDEVICE77": "VkHr4T/w72C20cvTzvvaWzSPZegLT+8wR1B+G4RH534"
4793+ },
4794+ "signatures": {
4795+ "@alice_77:hs1": {
4796+ "ed25519:ALICEDEVICE77": "tKrTAZpBxdSUOpbY2b5PH56mVoBvY57P0uAZxLze+zfK63h6OH80iA2+j3metVNVsfKPwWwLOh4mm3MQQccECQ"
4797+ }
4798+ },
4799+ "user_id": "@alice_77:hs1",
4800+ "unsigned": {}
4801+ }
4802+ },
4803+ "@alice_792:hs1": {
4804+ "ALICEDEVICE792": {
4805+ "algorithms": [
4806+ "m.olm.v1.curve25519-aes-sha2",
4807+ "m.megolm.v1.aes-sha2"
4808+ ],
4809+ "device_id": "ALICEDEVICE792",
4810+ "keys": {
4811+ "curve25519:ALICEDEVICE792": "2isPoWeog+3QdeWHxZMTpzCwrVA13kQjYwE5ADRsH2U",
4812+ "ed25519:ALICEDEVICE792": "eLKiTEGYuwNfuoDie4871aKMm4oCgkKqkQgQDdByO5M"
4813+ },
4814+ "signatures": {
4815+ "@alice_792:hs1": {
4816+ "ed25519:ALICEDEVICE792": "6XwViye2SEH9wIW1v4QnokCrZJIZd9sFg3J2D80bIUk/+/Et6yUxPO/yMcZSL/eA5PAfyKSeuktiSZnTMO7kBQ"
4817+ }
4818+ },
4819+ "user_id": "@alice_792:hs1",
4820+ "unsigned": {}
4821+ }
4822+ },
4823+ "@alice_7:hs1": {
4824+ "ALICEDEVICE7": {
4825+ "algorithms": [
4826+ "m.olm.v1.curve25519-aes-sha2",
4827+ "m.megolm.v1.aes-sha2"
4828+ ],
4829+ "device_id": "ALICEDEVICE7",
4830+ "keys": {
4831+ "curve25519:ALICEDEVICE7": "cn1DDhjfsXm96uUW1kKMrMTF05jUnCbfnPcwjGHvqUQ",
4832+ "ed25519:ALICEDEVICE7": "M983QwStJZtgT+NeE1+yM010zxMISBYeqRS4J0jv6Qo"
4833+ },
4834+ "signatures": {
4835+ "@alice_7:hs1": {
4836+ "ed25519:ALICEDEVICE7": "KrrMVi1WVQ8Q7kcU4bD92KIENPUI6k0COmGHBnLPYlC7C8siCkiKdGX9NBLe7pjNd04YXlJW24IN9HS04cHgDA"
4837+ }
4838+ },
4839+ "user_id": "@alice_7:hs1",
4840+ "unsigned": {}
4841+ }
4842+ },
4843+ "@alice_805:hs1": {
4844+ "ALICEDEVICE805": {
4845+ "algorithms": [
4846+ "m.olm.v1.curve25519-aes-sha2",
4847+ "m.megolm.v1.aes-sha2"
4848+ ],
4849+ "device_id": "ALICEDEVICE805",
4850+ "keys": {
4851+ "curve25519:ALICEDEVICE805": "mCTalF+uc3Ea4lip2BCbfyGBhlASnLBIOVNedDQsnxA",
4852+ "ed25519:ALICEDEVICE805": "9UZ1dpWBb5lFWYDZj1X0MbFEzLts2jlBrNSjkv7CZIs"
4853+ },
4854+ "signatures": {
4855+ "@alice_805:hs1": {
4856+ "ed25519:ALICEDEVICE805": "1FFxXrGI+8bj98dqAH5nLuH0LtcFSZoDn7lOOSJMdZ+2djYoKZuuEU9DXGMZ4uAcOkd5nJbsgt4F6cegNtaqAw"
4857+ }
4858+ },
4859+ "user_id": "@alice_805:hs1",
4860+ "unsigned": {}
4861+ }
4862+ },
4863+ "@alice_815:hs1": {
4864+ "ALICEDEVICE815": {
4865+ "algorithms": [
4866+ "m.olm.v1.curve25519-aes-sha2",
4867+ "m.megolm.v1.aes-sha2"
4868+ ],
4869+ "device_id": "ALICEDEVICE815",
4870+ "keys": {
4871+ "curve25519:ALICEDEVICE815": "Xtge11F+NFb6Ryz0fDXkXizdsVD+vjAXOoCmZEJeYQs",
4872+ "ed25519:ALICEDEVICE815": "nRAzqTREGIROptvXAnt+NNWRE2jkSwAGKJzq2WY5rLo"
4873+ },
4874+ "signatures": {
4875+ "@alice_815:hs1": {
4876+ "ed25519:ALICEDEVICE815": "yRV2mKU+dPn1VtDsjHGMqLpJewC4CavzNZ2YrUxl4KTVPzRsr7ie7ttNqKBlY9KTATO8nj82JfBEqRMy/H4HDg"
4877+ }
4878+ },
4879+ "user_id": "@alice_815:hs1",
4880+ "unsigned": {}
4881+ }
4882+ },
4883+ "@alice_817:hs1": {
4884+ "ALICEDEVICE817": {
4885+ "algorithms": [
4886+ "m.olm.v1.curve25519-aes-sha2",
4887+ "m.megolm.v1.aes-sha2"
4888+ ],
4889+ "device_id": "ALICEDEVICE817",
4890+ "keys": {
4891+ "curve25519:ALICEDEVICE817": "UOn1aIFoFR6RUOPeBFu4oxnDIyp8CgM8kqvsLxBx+D8",
4892+ "ed25519:ALICEDEVICE817": "nOGYNYTCSXqrlxI7J82ueHveIDqUBHPYc/GSTwAlrek"
4893+ },
4894+ "signatures": {
4895+ "@alice_817:hs1": {
4896+ "ed25519:ALICEDEVICE817": "LfAOnln1badP31i46m7foOOmRhVO6p93xygIWFA4EHiHWwtN6qyDRj0TGdSo3xUSdFE3W5/2lshOu/dfrTJ3Cg"
4897+ }
4898+ },
4899+ "user_id": "@alice_817:hs1",
4900+ "unsigned": {}
4901+ }
4902+ },
4903+ "@alice_834:hs1": {
4904+ "ALICEDEVICE834": {
4905+ "algorithms": [
4906+ "m.olm.v1.curve25519-aes-sha2",
4907+ "m.megolm.v1.aes-sha2"
4908+ ],
4909+ "device_id": "ALICEDEVICE834",
4910+ "keys": {
4911+ "curve25519:ALICEDEVICE834": "K6wBVQEzlDuAoWvnS4b2N14wA8cY1QgbdM0e0OwGthI",
4912+ "ed25519:ALICEDEVICE834": "slG/zyGSAIYVHnyclNi3XIFWeOQOenbhuZpa1maj2kI"
4913+ },
4914+ "signatures": {
4915+ "@alice_834:hs1": {
4916+ "ed25519:ALICEDEVICE834": "8wvvkBuyBAJVogA9H8UH/89wmV6AAW/dPGeRAZ5tCNsFZd9rAU4km4rspCfFfvZdfC60qne7TuJO22y8I/A5Dg"
4917+ }
4918+ },
4919+ "user_id": "@alice_834:hs1",
4920+ "unsigned": {}
4921+ }
4922+ },
4923+ "@alice_836:hs1": {
4924+ "ALICEDEVICE836": {
4925+ "algorithms": [
4926+ "m.olm.v1.curve25519-aes-sha2",
4927+ "m.megolm.v1.aes-sha2"
4928+ ],
4929+ "device_id": "ALICEDEVICE836",
4930+ "keys": {
4931+ "curve25519:ALICEDEVICE836": "0zQvw4h0z/tijXYJJmDFpNNUoKq6Vzan5FepX4BE4Sg",
4932+ "ed25519:ALICEDEVICE836": "Aaf0R2TwOWAdpKtO3Q4Ky8SX8ZbEWVuVAfCq8ZLBM2Q"
4933+ },
4934+ "signatures": {
4935+ "@alice_836:hs1": {
4936+ "ed25519:ALICEDEVICE836": "r9Xo5eS9IfVRQ75buJyvtd7lqWPbL0LL61OOnvyZBflrSRveL0plKanF3+nB23GYUg2NIGKNVgMel8eoNFa2Aw"
4937+ }
4938+ },
4939+ "user_id": "@alice_836:hs1",
4940+ "unsigned": {}
4941+ }
4942+ },
4943+ "@alice_861:hs1": {
4944+ "ALICEDEVICE861": {
4945+ "algorithms": [
4946+ "m.olm.v1.curve25519-aes-sha2",
4947+ "m.megolm.v1.aes-sha2"
4948+ ],
4949+ "device_id": "ALICEDEVICE861",
4950+ "keys": {
4951+ "curve25519:ALICEDEVICE861": "FruRHbl5EYxmP0ktO8p/utBS/94dpFa1LS6YbfZAwXU",
4952+ "ed25519:ALICEDEVICE861": "g+4TWi0sm51bCKcQlPha7vQW1vUJinDqa80PpMjuiic"
4953+ },
4954+ "signatures": {
4955+ "@alice_861:hs1": {
4956+ "ed25519:ALICEDEVICE861": "5IKN15Xk6pmSLzf4kYkk1Wyy/GeHy0PEa2tGLaVVSYfvPb5/IVLmL5ZsgtNEjhZj+myO4lz8RxFa5i+GKNl5Dw"
4957+ }
4958+ },
4959+ "user_id": "@alice_861:hs1",
4960+ "unsigned": {}
4961+ }
4962+ },
4963+ "@alice_872:hs1": {
4964+ "ALICEDEVICE872": {
4965+ "algorithms": [
4966+ "m.olm.v1.curve25519-aes-sha2",
4967+ "m.megolm.v1.aes-sha2"
4968+ ],
4969+ "device_id": "ALICEDEVICE872",
4970+ "keys": {
4971+ "curve25519:ALICEDEVICE872": "4e3MlYKVs1wHjkFvhAIWQlb0Kg6QFQ3eAojep59g5U4",
4972+ "ed25519:ALICEDEVICE872": "glowm2tG6uiL6Wm4ZD3qaoZrXDCQRdkH8GHY0Cxj8zk"
4973+ },
4974+ "signatures": {
4975+ "@alice_872:hs1": {
4976+ "ed25519:ALICEDEVICE872": "p7MKv/C4JZFgEdMJnFkkGZq4Pieo80V/4ep2uCXFkZMHAViEWfgZsBbzpvfvtATEdj3PxagFjuPIrgdZl7d9Bg"
4977+ }
4978+ },
4979+ "user_id": "@alice_872:hs1",
4980+ "unsigned": {}
4981+ }
4982+ },
4983+ "@alice_873:hs1": {
4984+ "ALICEDEVICE873": {
4985+ "algorithms": [
4986+ "m.olm.v1.curve25519-aes-sha2",
4987+ "m.megolm.v1.aes-sha2"
4988+ ],
4989+ "device_id": "ALICEDEVICE873",
4990+ "keys": {
4991+ "curve25519:ALICEDEVICE873": "IaGrzEZ9pqHgEpvMd64M+wa+29tZ7nYfygAo7/auK2s",
4992+ "ed25519:ALICEDEVICE873": "kv9RG/MnVY2i956vPKYcW4739tEWK1sBC6L20S3wkFI"
4993+ },
4994+ "signatures": {
4995+ "@alice_873:hs1": {
4996+ "ed25519:ALICEDEVICE873": "tpzS+bgI4rD9B0yiMZoxnYb/HvXn3TWSZliuXH5AVr80UmDocZa+a7agEmv5QvGFdETmw+h4wPh4ss6YxM1dBQ"
4997+ }
4998+ },
4999+ "user_id": "@alice_873:hs1",
5000+ "unsigned": {}
5001+ }
5002+ },
5003+ "@alice_883:hs1": {
5004+ "ALICEDEVICE883": {
5005+ "algorithms": [
5006+ "m.olm.v1.curve25519-aes-sha2",
5007+ "m.megolm.v1.aes-sha2"
5008+ ],
5009+ "device_id": "ALICEDEVICE883",
5010+ "keys": {
5011+ "curve25519:ALICEDEVICE883": "JEvnHLE+Z4FANe/gWF6PGSeV4pwCuDzbiNnobk6g50Q",
5012+ "ed25519:ALICEDEVICE883": "9IxoPuVE4osJb5s1yn7ec3ej4Xe+AoLQWH2zNAiSaLY"
5013+ },
5014+ "signatures": {
5015+ "@alice_883:hs1": {
5016+ "ed25519:ALICEDEVICE883": "jNx3Aa/nNGKbYJnsn7+zGAH/8hu0Tn/ytQ3FtX47/vWfUWJ6kHLL3qCl6vy4g+S+PMbb8ndO67JiUFtEofAlBA"
5017+ }
5018+ },
5019+ "user_id": "@alice_883:hs1",
5020+ "unsigned": {}
5021+ }
5022+ },
5023+ "@alice_891:hs1": {
5024+ "ALICEDEVICE891": {
5025+ "algorithms": [
5026+ "m.olm.v1.curve25519-aes-sha2",
5027+ "m.megolm.v1.aes-sha2"
5028+ ],
5029+ "device_id": "ALICEDEVICE891",
5030+ "keys": {
5031+ "curve25519:ALICEDEVICE891": "XFasHeHng7wWF61gfGqEdyzNHRBzOcAEGL2gt6C8sAA",
5032+ "ed25519:ALICEDEVICE891": "ZBjvRys+OW8n9XhjEn2sjGXUM7HxmMmEveynK5r5WwM"
5033+ },
5034+ "signatures": {
5035+ "@alice_891:hs1": {
5036+ "ed25519:ALICEDEVICE891": "04Gk1/ypYrT0dUMKUxnVPBdrvZqPft1+FZNmzvf50Tx6BMWxHlmI00gqI2sbL0MhH8xCOL5QER5UWuoAzJNfDg"
5037+ }
5038+ },
5039+ "user_id": "@alice_891:hs1",
5040+ "unsigned": {}
5041+ }
5042+ },
5043+ "@alice_894:hs1": {
5044+ "ALICEDEVICE894": {
5045+ "algorithms": [
5046+ "m.olm.v1.curve25519-aes-sha2",
5047+ "m.megolm.v1.aes-sha2"
5048+ ],
5049+ "device_id": "ALICEDEVICE894",
5050+ "keys": {
5051+ "curve25519:ALICEDEVICE894": "q+fp4z0gyH0UsUfmAVlaqjLjORfYoWdsLG7+whr/+l4",
5052+ "ed25519:ALICEDEVICE894": "QAQop7gjW9GkB4z3FAR5PuuK6KmMLIZOjTJlc7Qhp3M"
5053+ },
5054+ "signatures": {
5055+ "@alice_894:hs1": {
5056+ "ed25519:ALICEDEVICE894": "ybvPWRxHJqm5V7zSE3L1n+Xf9q07+FTQnhc50H29PqhxwrYXQOp5AdmC0Or4JnIhpYVOsVNv9/WSXp++yp2aBg"
5057+ }
5058+ },
5059+ "user_id": "@alice_894:hs1",
5060+ "unsigned": {}
5061+ }
5062+ },
5063+ "@alice_895:hs1": {
5064+ "ALICEDEVICE895": {
5065+ "algorithms": [
5066+ "m.olm.v1.curve25519-aes-sha2",
5067+ "m.megolm.v1.aes-sha2"
5068+ ],
5069+ "device_id": "ALICEDEVICE895",
5070+ "keys": {
5071+ "curve25519:ALICEDEVICE895": "ndqfeyuBVFgxJnDnGQY4m9uNbNJAs2iizzgVBz+mgTM",
5072+ "ed25519:ALICEDEVICE895": "z4vfwDZhzQ/Gw5HQnENkgr0cadRNM7CP6yHx4olVFd4"
5073+ },
5074+ "signatures": {
5075+ "@alice_895:hs1": {
5076+ "ed25519:ALICEDEVICE895": "zGxpF/oVs6pD39JHdop5OQTXZxpXTdspnO5wJEdRcTN/UCs3WlCp8ed8uEvGtipNhN4WZxA0sHIlTUqr6uc3CQ"
5077+ }
5078+ },
5079+ "user_id": "@alice_895:hs1",
5080+ "unsigned": {}
5081+ }
5082+ },
5083+ "@alice_89:hs1": {
5084+ "ALICEDEVICE89": {
5085+ "algorithms": [
5086+ "m.olm.v1.curve25519-aes-sha2",
5087+ "m.megolm.v1.aes-sha2"
5088+ ],
5089+ "device_id": "ALICEDEVICE89",
5090+ "keys": {
5091+ "curve25519:ALICEDEVICE89": "1cuqwzwF510QSGtA8cVxhiV1E0XlY6+yZDYYqGBFvD8",
5092+ "ed25519:ALICEDEVICE89": "1WspQTZa9el4hr+20NOFDU1VBnFkP6fPcMnsnr1ojxU"
5093+ },
5094+ "signatures": {
5095+ "@alice_89:hs1": {
5096+ "ed25519:ALICEDEVICE89": "oowKCRSnDO/kpTDMJqEMe+XyDhdEPCI9Pmgjhi+30cZtDutlzgzKB9ugMOnPl4iks8tGQUdo0uGC62V3bM94BQ"
5097+ }
5098+ },
5099+ "user_id": "@alice_89:hs1",
5100+ "unsigned": {}
5101+ }
5102+ },
5103+ "@alice_902:hs1": {
5104+ "ALICEDEVICE902": {
5105+ "algorithms": [
5106+ "m.olm.v1.curve25519-aes-sha2",
5107+ "m.megolm.v1.aes-sha2"
5108+ ],
5109+ "device_id": "ALICEDEVICE902",
5110+ "keys": {
5111+ "curve25519:ALICEDEVICE902": "PCGHXvP9xBjyaetsU+yUosh0q/OxmYT1s0xBspfB8CM",
5112+ "ed25519:ALICEDEVICE902": "cqU3vjDqXppf7slO3JvbyZqkt31T/2zU3X20xrlk+Co"
5113+ },
5114+ "signatures": {
5115+ "@alice_902:hs1": {
5116+ "ed25519:ALICEDEVICE902": "MVdfwFjhTN0aOG+MVjHDKi1GoaTfuc2O8whqXqtXEDXxH9ttUpcw4/ZTf6+1Se3CCYPJNHLSsBDZGLGXOYOnDw"
5117+ }
5118+ },
5119+ "user_id": "@alice_902:hs1",
5120+ "unsigned": {}
5121+ }
5122+ },
5123+ "@alice_911:hs1": {
5124+ "ALICEDEVICE911": {
5125+ "algorithms": [
5126+ "m.olm.v1.curve25519-aes-sha2",
5127+ "m.megolm.v1.aes-sha2"
5128+ ],
5129+ "device_id": "ALICEDEVICE911",
5130+ "keys": {
5131+ "curve25519:ALICEDEVICE911": "VC2AMBA5KBmcEZStepohYRGMPugi0RBQrk9jt/fRbCE",
5132+ "ed25519:ALICEDEVICE911": "nagVMIlDN2wLIV0173fupDJgwBurBfE8mpRvEebeprE"
5133+ },
5134+ "signatures": {
5135+ "@alice_911:hs1": {
5136+ "ed25519:ALICEDEVICE911": "4mL++5Y8/Hr8DMnAStGL7pRZxYx9vJAOWFQk09VkekUotIVcV0y7p3WXZ4S4VVdUpiZdRZsVratsqjIPLptuAA"
5137+ }
5138+ },
5139+ "user_id": "@alice_911:hs1",
5140+ "unsigned": {}
5141+ }
5142+ },
5143+ "@alice_935:hs1": {
5144+ "ALICEDEVICE935": {
5145+ "algorithms": [
5146+ "m.olm.v1.curve25519-aes-sha2",
5147+ "m.megolm.v1.aes-sha2"
5148+ ],
5149+ "device_id": "ALICEDEVICE935",
5150+ "keys": {
5151+ "curve25519:ALICEDEVICE935": "GxSEgHsdkbZZ564YS0I2nsKbO/NizBI+69jgh5VS0TA",
5152+ "ed25519:ALICEDEVICE935": "zMBkeWbunUaxN2uYeJD82QHWSR+EY4foWl17N1D7444"
5153+ },
5154+ "signatures": {
5155+ "@alice_935:hs1": {
5156+ "ed25519:ALICEDEVICE935": "Ov1OpOu2YCaPqxrNEgl2i5ARNfJJNRlQF+fw8QPzwth53DTJgBoX8eRLflN1zDJQQRw1rHI41fxUKZO6t37nAg"
5157+ }
5158+ },
5159+ "user_id": "@alice_935:hs1",
5160+ "unsigned": {}
5161+ }
5162+ },
5163+ "@alice_95:hs1": {
5164+ "ALICEDEVICE95": {
5165+ "algorithms": [
5166+ "m.olm.v1.curve25519-aes-sha2",
5167+ "m.megolm.v1.aes-sha2"
5168+ ],
5169+ "device_id": "ALICEDEVICE95",
5170+ "keys": {
5171+ "curve25519:ALICEDEVICE95": "OzSG0SW13F8G/MHL7DV7Kgpeb7tI1hPB407htSlMTmE",
5172+ "ed25519:ALICEDEVICE95": "RogcNaRlE4XMmqpJYgHbBLUIUdQalXTNry3YObcTbJk"
5173+ },
5174+ "signatures": {
5175+ "@alice_95:hs1": {
5176+ "ed25519:ALICEDEVICE95": "60tetnSaWll21lJxe3Xvbr330Edufg6mYj99byMVrNadh8wYJLxzuIpZpbTd2NUX8nKiAFLO+y5pTzRUULZ+Aw"
5177+ }
5178+ },
5179+ "user_id": "@alice_95:hs1",
5180+ "unsigned": {}
5181+ }
5182+ },
5183+ "@alice_971:hs1": {
5184+ "ALICEDEVICE971": {
5185+ "algorithms": [
5186+ "m.olm.v1.curve25519-aes-sha2",
5187+ "m.megolm.v1.aes-sha2"
5188+ ],
5189+ "device_id": "ALICEDEVICE971",
5190+ "keys": {
5191+ "curve25519:ALICEDEVICE971": "8C2Dz6E9WE+qKJTGe9JRjev37RJ+/q9sBK0bMruUWkY",
5192+ "ed25519:ALICEDEVICE971": "oyiNSyyryuIYZ/T5SkwWNE9SJdsy/LtnDpHqHuz3iqU"
5193+ },
5194+ "signatures": {
5195+ "@alice_971:hs1": {
5196+ "ed25519:ALICEDEVICE971": "wpP8MUz8N0751/1B7wYq9gqfantLpks+kBBefpb/ZGd3Hgb/PkqqYqRkIRY3jLHQcRRqn1IGAZA/gpOZbxEZDA"
5197+ }
5198+ },
5199+ "user_id": "@alice_971:hs1",
5200+ "unsigned": {}
5201+ }
5202+ },
5203+ "@alice_973:hs1": {
5204+ "ALICEDEVICE973": {
5205+ "algorithms": [
5206+ "m.olm.v1.curve25519-aes-sha2",
5207+ "m.megolm.v1.aes-sha2"
5208+ ],
5209+ "device_id": "ALICEDEVICE973",
5210+ "keys": {
5211+ "curve25519:ALICEDEVICE973": "0NZ74sfz0fhreUr7pCBplFqbh4XBGPXPXtLD09ST4HM",
5212+ "ed25519:ALICEDEVICE973": "y8A89mBNg9Bnj6V6mwbcw5KMlVcLERkQVPvEnt+IS/Y"
5213+ },
5214+ "signatures": {
5215+ "@alice_973:hs1": {
5216+ "ed25519:ALICEDEVICE973": "EstrD5b77nYZk1YA51UZDFEteHYO9AXJyGT/XjMp0x2JYXnr+9X5/O1y8TmZd/cuwGd7+zxxBgLDVurz8JpFCg"
5217+ }
5218+ },
5219+ "user_id": "@alice_973:hs1",
5220+ "unsigned": {}
5221+ }
5222+ },
5223+ "@alice_978:hs1": {
5224+ "ALICEDEVICE978": {
5225+ "algorithms": [
5226+ "m.olm.v1.curve25519-aes-sha2",
5227+ "m.megolm.v1.aes-sha2"
5228+ ],
5229+ "device_id": "ALICEDEVICE978",
5230+ "keys": {
5231+ "curve25519:ALICEDEVICE978": "9p5GX2XbVw7aSLAgRLXVUVT608mmHOP+72JH32qmnlc",
5232+ "ed25519:ALICEDEVICE978": "kLUP6jEjHk18ohyjTah3nQkrwGSCwvXtrMz6MiLiqX4"
5233+ },
5234+ "signatures": {
5235+ "@alice_978:hs1": {
5236+ "ed25519:ALICEDEVICE978": "L1ufDKESBh/5t03OE5DFeW6RwRC6PU1CeCm/anTdxV4sqNoHa5GCmLdMJePQ6xoHJEN1ihZBDOsQfSnlOrGTAQ"
5237+ }
5238+ },
5239+ "user_id": "@alice_978:hs1",
5240+ "unsigned": {}
5241+ }
5242+ },
5243+ "@alice_981:hs1": {
5244+ "ALICEDEVICE981": {
5245+ "algorithms": [
5246+ "m.olm.v1.curve25519-aes-sha2",
5247+ "m.megolm.v1.aes-sha2"
5248+ ],
5249+ "device_id": "ALICEDEVICE981",
5250+ "keys": {
5251+ "curve25519:ALICEDEVICE981": "HAJVGQOUuua/7kQN16PZHux5ld+VuDYEXBiD+3edwF8",
5252+ "ed25519:ALICEDEVICE981": "8d/2DypveYkKDUE58uUM0SYG6mxoPM1mX3OuAJKX9KI"
5253+ },
5254+ "signatures": {
5255+ "@alice_981:hs1": {
5256+ "ed25519:ALICEDEVICE981": "gXhI3BK7acwKKKcwpgRKW314fJlKgoyC7vkwr1iyTX3arVnfdKWm+/4EQhBm/lL1zYPyJXdxT7ykhIYaDKJKCw"
5257+ }
5258+ },
5259+ "user_id": "@alice_981:hs1",
5260+ "unsigned": {}
5261+ }
5262+ },
5263+ "@alice_997:hs1": {
5264+ "ALICEDEVICE997": {
5265+ "algorithms": [
5266+ "m.olm.v1.curve25519-aes-sha2",
5267+ "m.megolm.v1.aes-sha2"
5268+ ],
5269+ "device_id": "ALICEDEVICE997",
5270+ "keys": {
5271+ "curve25519:ALICEDEVICE997": "X14MecNOw27cSu4HHlXP22+tp2z5sakR+n0K/RI5OSw",
5272+ "ed25519:ALICEDEVICE997": "4JrgyHMVR3OY27Ljam36jbeKTKDe46CNKOFao4nCTkI"
5273+ },
5274+ "signatures": {
5275+ "@alice_997:hs1": {
5276+ "ed25519:ALICEDEVICE997": "Amfp8GvEKORWhv6anHst8J/h2BuZWvwz+qXnArItJodN7vEPo7U7ziEvTnKKLd0g5puJ72v5QronFliIfS4GBw"
5277+ }
5278+ },
5279+ "user_id": "@alice_997:hs1",
5280+ "unsigned": {}
5281+ }
5282+ },
5283+ "@alice_99:hs1": {
5284+ "ALICEDEVICE99": {
5285+ "algorithms": [
5286+ "m.olm.v1.curve25519-aes-sha2",
5287+ "m.megolm.v1.aes-sha2"
5288+ ],
5289+ "device_id": "ALICEDEVICE99",
5290+ "keys": {
5291+ "curve25519:ALICEDEVICE99": "Ii2pM15YTvc1YadWspFopC4VmW+/4lYqHThKIP/esy8",
5292+ "ed25519:ALICEDEVICE99": "yXF1TPDkBnmj/GNfBFDs7rW3gk4uvuXMzsZuIBwyyUc"
5293+ },
5294+ "signatures": {
5295+ "@alice_99:hs1": {
5296+ "ed25519:ALICEDEVICE99": "PhxLwBmF67H4EtfzcdyQRE0AmSnaGsT/o8mgD+9NM62VZxA03hAfE40MWYW2J4BbHWAwOetCIGZnqIMxDt4nAQ"
5297+ }
5298+ },
5299+ "user_id": "@alice_99:hs1",
5300+ "unsigned": {}
5301+ }
5302+ },
5303+ "@alice_102:hs1": {
5304+ "ALICEDEVICE102": {
5305+ "algorithms": [
5306+ "m.olm.v1.curve25519-aes-sha2",
5307+ "m.megolm.v1.aes-sha2"
5308+ ],
5309+ "device_id": "ALICEDEVICE102",
5310+ "keys": {
5311+ "curve25519:ALICEDEVICE102": "YJ/4kA84G0aO/o2T7IdAYD3KOOT1irflBP+pHIEvw3s",
5312+ "ed25519:ALICEDEVICE102": "2WSu2iCWMvJHPxkxYGbbr7w6DZZFIszYJ/nCjJCVWjA"
5313+ },
5314+ "signatures": {
5315+ "@alice_102:hs1": {
5316+ "ed25519:ALICEDEVICE102": "5BXLNgBHz2yCVEu6DB931Rr8m0BDiS7Ga0J1tEMZrGhAlyCsSQXmhFtOW+axzx7Qhukz5BVOXNzYGNp6TmI/Bg"
5317+ }
5318+ },
5319+ "user_id": "@alice_102:hs1",
5320+ "unsigned": {}
5321+ }
5322+ },
5323+ "@alice_1038:hs1": {
5324+ "ALICEDEVICE1038": {
5325+ "algorithms": [
5326+ "m.olm.v1.curve25519-aes-sha2",
5327+ "m.megolm.v1.aes-sha2"
5328+ ],
5329+ "device_id": "ALICEDEVICE1038",
5330+ "keys": {
5331+ "curve25519:ALICEDEVICE1038": "fTvK13W/rPekYUfd/WQ3HntfVuEZXQOcmp7FnL05wFk",
5332+ "ed25519:ALICEDEVICE1038": "Y+QMEJZ58As/TU/hXOPrAbNWuXKnwVQvxhUhfbKmQHU"
5333+ },
5334+ "signatures": {
5335+ "@alice_1038:hs1": {
5336+ "ed25519:ALICEDEVICE1038": "/34Fo0ElJdDKWxb3LKZJM5jsK4LXF64oWhYM/iA1XkXLhc1PM6roJoMx87hsPtqjreJI979rk5n/j34IK38RDA"
5337+ }
5338+ },
5339+ "user_id": "@alice_1038:hs1",
5340+ "unsigned": {}
5341+ }
5342+ },
5343+ "@alice_1049:hs1": {
5344+ "ALICEDEVICE1049": {
5345+ "algorithms": [
5346+ "m.olm.v1.curve25519-aes-sha2",
5347+ "m.megolm.v1.aes-sha2"
5348+ ],
5349+ "device_id": "ALICEDEVICE1049",
5350+ "keys": {
5351+ "curve25519:ALICEDEVICE1049": "bXwhTRH7z6DpAkmGYkSCUi3TMHggDPXX2vhmJYZxXHs",
5352+ "ed25519:ALICEDEVICE1049": "EQkEg50izxJ/r/cWnQGJuDY21Ni0agpp6OgjCweQ9Co"
5353+ },
5354+ "signatures": {
5355+ "@alice_1049:hs1": {
5356+ "ed25519:ALICEDEVICE1049": "C0QrEbiak+H01BEyKK0QGlfmJNKqy/Bbsex2ACIU1APvFaU+tpF0+RjLWOQe5CXu5eraUr91WaCzEIn9hJeyCw"
5357+ }
5358+ },
5359+ "user_id": "@alice_1049:hs1",
5360+ "unsigned": {}
5361+ }
5362+ },
5363+ "@alice_1055:hs1": {
5364+ "ALICEDEVICE1055": {
5365+ "algorithms": [
5366+ "m.olm.v1.curve25519-aes-sha2",
5367+ "m.megolm.v1.aes-sha2"
5368+ ],
5369+ "device_id": "ALICEDEVICE1055",
5370+ "keys": {
5371+ "curve25519:ALICEDEVICE1055": "eN1v+GqNrSfARNpj48PXwjJ/BcdsopTv/cY0CXiLYVg",
5372+ "ed25519:ALICEDEVICE1055": "sKsPTmcAmE49z0m71ozliDpU7o9XZ2/h1PQTOPoaSoI"
5373+ },
5374+ "signatures": {
5375+ "@alice_1055:hs1": {
5376+ "ed25519:ALICEDEVICE1055": "AK5JSb0ru653SJHT0bSPSQh9P+mu3e4f5btCSBdegRq2fQTSjISAvObc31Mp326e9qtCW+79X+09tqmKbFF+BA"
5377+ }
5378+ },
5379+ "user_id": "@alice_1055:hs1",
5380+ "unsigned": {}
5381+ }
5382+ },
5383+ "@alice_1060:hs1": {
5384+ "ALICEDEVICE1060": {
5385+ "algorithms": [
5386+ "m.olm.v1.curve25519-aes-sha2",
5387+ "m.megolm.v1.aes-sha2"
5388+ ],
5389+ "device_id": "ALICEDEVICE1060",
5390+ "keys": {
5391+ "curve25519:ALICEDEVICE1060": "+5Ctk8E0FElWQMq0/O9s/cOreEpOG9cMFYYlJauTZnw",
5392+ "ed25519:ALICEDEVICE1060": "07NpOzQFiiGrub1LM2iSBRs9PtQ/bwoIPBxXJV4DPfQ"
5393+ },
5394+ "signatures": {
5395+ "@alice_1060:hs1": {
5396+ "ed25519:ALICEDEVICE1060": "+39ON16cBs2gSVzwu0QfgfAwrX73FYtcC+jBN5RIb+4s/1BAZfH1xSdd+Efff+9FOdEcp3wr4S/0P2rKWktxCw"
5397+ }
5398+ },
5399+ "user_id": "@alice_1060:hs1",
5400+ "unsigned": {}
5401+ }
5402+ },
5403+ "@alice_1078:hs1": {
5404+ "ALICEDEVICE1078": {
5405+ "algorithms": [
5406+ "m.olm.v1.curve25519-aes-sha2",
5407+ "m.megolm.v1.aes-sha2"
5408+ ],
5409+ "device_id": "ALICEDEVICE1078",
5410+ "keys": {
5411+ "curve25519:ALICEDEVICE1078": "hfPumISPPz3Yq5O7gfXt4adPlcRFeT/pU68bb584diM",
5412+ "ed25519:ALICEDEVICE1078": "nlhA8GfqNTSsa8LN74WGOOTMOTOcZTHsVs01t8mUdPQ"
5413+ },
5414+ "signatures": {
5415+ "@alice_1078:hs1": {
5416+ "ed25519:ALICEDEVICE1078": "VS4u7RFfYUqsxwKLXV1jU101pDnv4NcTitgy0SXvetJEaJ4tpF5CJbjMORqk63JR0uBWzNOerlUrfE2BrxqxAA"
5417+ }
5418+ },
5419+ "user_id": "@alice_1078:hs1",
5420+ "unsigned": {}
5421+ }
5422+ },
5423+ "@alice_1082:hs1": {
5424+ "ALICEDEVICE1082": {
5425+ "algorithms": [
5426+ "m.olm.v1.curve25519-aes-sha2",
5427+ "m.megolm.v1.aes-sha2"
5428+ ],
5429+ "device_id": "ALICEDEVICE1082",
5430+ "keys": {
5431+ "curve25519:ALICEDEVICE1082": "GUTHOehQckHmWwUTmRUoCQmLeYUScxtTg4VOJGkgL1Q",
5432+ "ed25519:ALICEDEVICE1082": "SJRw1xMysFeJ3j3C1l6Ae17JgZlldxKxccJlhMjg9Wk"
5433+ },
5434+ "signatures": {
5435+ "@alice_1082:hs1": {
5436+ "ed25519:ALICEDEVICE1082": "wc/bPgp5Q0gVG95XPUmjr9dHK4wsbwzDGb2KywAQvKKPCpkiTpDmfJfgqsu/2ezxexhEemXC3Z4l325RSHTnDg"
5437+ }
5438+ },
5439+ "user_id": "@alice_1082:hs1",
5440+ "unsigned": {}
5441+ }
5442+ },
5443+ "@alice_1094:hs1": {
5444+ "ALICEDEVICE1094": {
5445+ "algorithms": [
5446+ "m.olm.v1.curve25519-aes-sha2",
5447+ "m.megolm.v1.aes-sha2"
5448+ ],
5449+ "device_id": "ALICEDEVICE1094",
5450+ "keys": {
5451+ "curve25519:ALICEDEVICE1094": "GtpBe3hz4I/nZIH4KA03XQIqg7A9/qqO5BfKEZgIxC4",
5452+ "ed25519:ALICEDEVICE1094": "/pAodhxYyZluIeWkyJjexiM2KG5HogMpg4+ni6ASrRs"
5453+ },
5454+ "signatures": {
5455+ "@alice_1094:hs1": {
5456+ "ed25519:ALICEDEVICE1094": "m9p0NRpPA+N8L+pI1OLOKAhDjd5YWAcg406LwfhGBWQMhBy9wN7Vp/277byJvtHF5pSv5plI1nuFicEv5AGDAA"
5457+ }
5458+ },
5459+ "user_id": "@alice_1094:hs1",
5460+ "unsigned": {}
5461+ }
5462+ },
5463+ "@alice_1111:hs1": {
5464+ "ALICEDEVICE1111": {
5465+ "algorithms": [
5466+ "m.olm.v1.curve25519-aes-sha2",
5467+ "m.megolm.v1.aes-sha2"
5468+ ],
5469+ "device_id": "ALICEDEVICE1111",
5470+ "keys": {
5471+ "curve25519:ALICEDEVICE1111": "mQnfa/FhUi9kvKI5nOKejj/QuPoP9U29zTJZDiihbGU",
5472+ "ed25519:ALICEDEVICE1111": "qrcNGGGB/NhPQQfyE6+dq5pSbjMEImkuYi1IyGaylK0"
5473+ },
5474+ "signatures": {
5475+ "@alice_1111:hs1": {
5476+ "ed25519:ALICEDEVICE1111": "ynOhTpWUMGNL74iqezcgdkV4dDdY6z0zkrL1yR7RkGRCUd8Q4LplxC+QtO70kvWLCw7rROW79w3NSUMhbarWBA"
5477+ }
5478+ },
5479+ "user_id": "@alice_1111:hs1",
5480+ "unsigned": {}
5481+ }
5482+ },
5483+ "@alice_1115:hs1": {
5484+ "ALICEDEVICE1115": {
5485+ "algorithms": [
5486+ "m.olm.v1.curve25519-aes-sha2",
5487+ "m.megolm.v1.aes-sha2"
5488+ ],
5489+ "device_id": "ALICEDEVICE1115",
5490+ "keys": {
5491+ "curve25519:ALICEDEVICE1115": "uqFY30Q2xIgBX3zXhdpT8mDA668sleTGNr03mhEky1M",
5492+ "ed25519:ALICEDEVICE1115": "Li3/ipSMeWDQligjasZs4G14XWo8vXRAromv3puHH8c"
5493+ },
5494+ "signatures": {
5495+ "@alice_1115:hs1": {
5496+ "ed25519:ALICEDEVICE1115": "DAHG1iLPGWJSJF/C5L868FO88iGXKnuZ0oTInlziT/xD1abUiKcNqYA7zdNkkxcVQO0B8Oza1g7po0r8cyoGAg"
5497+ }
5498+ },
5499+ "user_id": "@alice_1115:hs1",
5500+ "unsigned": {}
5501+ }
5502+ },
5503+ "@alice_1128:hs1": {
5504+ "ALICEDEVICE1128": {
5505+ "algorithms": [
5506+ "m.olm.v1.curve25519-aes-sha2",
5507+ "m.megolm.v1.aes-sha2"
5508+ ],
5509+ "device_id": "ALICEDEVICE1128",
5510+ "keys": {
5511+ "curve25519:ALICEDEVICE1128": "LyOWJnfrJldRm5LiRFhwadSfglqduazArHGFHgIoqAc",
5512+ "ed25519:ALICEDEVICE1128": "rJ1CahSU8+SRa5nkXqSk1FvMbwRGiKl2d3JTCS28zFw"
5513+ },
5514+ "signatures": {
5515+ "@alice_1128:hs1": {
5516+ "ed25519:ALICEDEVICE1128": "BuX8TgAu7aU28j4nObqu2OQWnLWmcySRA8OHRH09d35Z15Bx6gd7gH8jhyfSr2fvIrdGODKBvMSc3aZU1x8sDA"
5517+ }
5518+ },
5519+ "user_id": "@alice_1128:hs1",
5520+ "unsigned": {}
5521+ }
5522+ },
5523+ "@alice_112:hs1": {
5524+ "ALICEDEVICE112": {
5525+ "algorithms": [
5526+ "m.olm.v1.curve25519-aes-sha2",
5527+ "m.megolm.v1.aes-sha2"
5528+ ],
5529+ "device_id": "ALICEDEVICE112",
5530+ "keys": {
5531+ "curve25519:ALICEDEVICE112": "rkWPutYaY9gFmSF4MkPq22Ksb+FXxXYM4mKw25W5dEg",
5532+ "ed25519:ALICEDEVICE112": "3fzluRQgnUDdULxeJpeU3tYgjZHqY+R36kImAj7acqw"
5533+ },
5534+ "signatures": {
5535+ "@alice_112:hs1": {
5536+ "ed25519:ALICEDEVICE112": "YgTE4r6h230/yexTkFwTMbiV5eURZXa2DLvGR2EdBURvjGfP4DqDzlnZzSb/vv3LsuRcwYMDg20UmvoiiGxwCA"
5537+ }
5538+ },
5539+ "user_id": "@alice_112:hs1",
5540+ "unsigned": {}
5541+ }
5542+ },
5543+ "@alice_113:hs1": {
5544+ "ALICEDEVICE113": {
5545+ "algorithms": [
5546+ "m.olm.v1.curve25519-aes-sha2",
5547+ "m.megolm.v1.aes-sha2"
5548+ ],
5549+ "device_id": "ALICEDEVICE113",
5550+ "keys": {
5551+ "curve25519:ALICEDEVICE113": "U3FCr558s6Do+yDFWcLeESj8zXxT5pcjbh+nyh0HxVE",
5552+ "ed25519:ALICEDEVICE113": "Y56EjXNFx6da6MDXVVZsj1CAJJnQJdU8SYoP8l+YxxU"
5553+ },
5554+ "signatures": {
5555+ "@alice_113:hs1": {
5556+ "ed25519:ALICEDEVICE113": "3U/9Dd6RSP9eQfz7t+1AAeRwYRlizR0kUWorGOX+sCpMeqtzVHPXh0RKg7YBGhZKFRzvJsM3MXb9Cu26tVyrDg"
5557+ }
5558+ },
5559+ "user_id": "@alice_113:hs1",
5560+ "unsigned": {}
5561+ }
5562+ },
5563+ "@alice_1143:hs1": {
5564+ "ALICEDEVICE1143": {
5565+ "algorithms": [
5566+ "m.olm.v1.curve25519-aes-sha2",
5567+ "m.megolm.v1.aes-sha2"
5568+ ],
5569+ "device_id": "ALICEDEVICE1143",
5570+ "keys": {
5571+ "curve25519:ALICEDEVICE1143": "DQWx9Uvqq1i9bhEAFr/ji6CZ0NAo8YK87VMUSCdXzzg",
5572+ "ed25519:ALICEDEVICE1143": "4Q18naqoOneu8G4XB+dwWHWSl5WdONl9335dFpZO0vU"
5573+ },
5574+ "signatures": {
5575+ "@alice_1143:hs1": {
5576+ "ed25519:ALICEDEVICE1143": "1sCJf4HJWjsYdUhGWKihP2GDH28uTdTLuEHDSy0e/2ubsPyq+81SvOTx+KVPA55PbJ5PEKbnycNBUB4zMI1FAw"
5577+ }
5578+ },
5579+ "user_id": "@alice_1143:hs1",
5580+ "unsigned": {}
5581+ }
5582+ },
5583+ "@alice_1144:hs1": {
5584+ "ALICEDEVICE1144": {
5585+ "algorithms": [
5586+ "m.olm.v1.curve25519-aes-sha2",
5587+ "m.megolm.v1.aes-sha2"
5588+ ],
5589+ "device_id": "ALICEDEVICE1144",
5590+ "keys": {
5591+ "curve25519:ALICEDEVICE1144": "zjtyU4x7r/qMtX/OjlM6T8Zvr1ZhJfA6N43KCfZ+CiE",
5592+ "ed25519:ALICEDEVICE1144": "T2d6/pTB8B1I0oXRs2uGr0ufWebVRcy08Ntnl+rsGeo"
5593+ },
5594+ "signatures": {
5595+ "@alice_1144:hs1": {
5596+ "ed25519:ALICEDEVICE1144": "Nwjps1EjfZ8Qk/Mra3VOQgIoC/pf0a/wxMdQm70WJ9uytxUg0T4XRhREExG89YGYHF0vHuxNOdv7BitsBcLkBw"
5597+ }
5598+ },
5599+ "user_id": "@alice_1144:hs1",
5600+ "unsigned": {}
5601+ }
5602+ },
5603+ "@alice_1156:hs1": {
5604+ "ALICEDEVICE1156": {
5605+ "algorithms": [
5606+ "m.olm.v1.curve25519-aes-sha2",
5607+ "m.megolm.v1.aes-sha2"
5608+ ],
5609+ "device_id": "ALICEDEVICE1156",
5610+ "keys": {
5611+ "curve25519:ALICEDEVICE1156": "DQ+FzDojrM2UzdXgLVC4tQYk7GE+FLw5pgLF/tZ38Vg",
5612+ "ed25519:ALICEDEVICE1156": "NEdjKlU55821+TA+kqlIzf/3qD+i5JthmsDzsNO+K3Y"
5613+ },
5614+ "signatures": {
5615+ "@alice_1156:hs1": {
5616+ "ed25519:ALICEDEVICE1156": "AfyK7njRtSYFQsBfSdNRAdaqy9Xkfon6XczIfTKWZoV0RbYSj/+IU9hyGSd3+2wc5O5hyl4B0zDd0O88jrLICQ"
5617+ }
5618+ },
5619+ "user_id": "@alice_1156:hs1",
5620+ "unsigned": {}
5621+ }
5622+ },
5623+ "@alice_1178:hs1": {
5624+ "ALICEDEVICE1178": {
5625+ "algorithms": [
5626+ "m.olm.v1.curve25519-aes-sha2",
5627+ "m.megolm.v1.aes-sha2"
5628+ ],
5629+ "device_id": "ALICEDEVICE1178",
5630+ "keys": {
5631+ "curve25519:ALICEDEVICE1178": "/tiUL+QbG1N5nETD19GYggKhUTYcg7Kk8HVUqeV1fzY",
5632+ "ed25519:ALICEDEVICE1178": "Zyn5dA9/AXp0J8Qn+rRJEWDZhBXFqkUu2D5uP+EcRvY"
5633+ },
5634+ "signatures": {
5635+ "@alice_1178:hs1": {
5636+ "ed25519:ALICEDEVICE1178": "t41dT8sXSjxIZeM+lGKTgizCyYvOg9eseYTVSP6FXZcZqtlOWFFm/hgXO07yrhWGEVC4e0LLZ/5ZTg+R3950AQ"
5637+ }
5638+ },
5639+ "user_id": "@alice_1178:hs1",
5640+ "unsigned": {}
5641+ }
5642+ },
5643+ "@alice_1181:hs1": {
5644+ "ALICEDEVICE1181": {
5645+ "algorithms": [
5646+ "m.olm.v1.curve25519-aes-sha2",
5647+ "m.megolm.v1.aes-sha2"
5648+ ],
5649+ "device_id": "ALICEDEVICE1181",
5650+ "keys": {
5651+ "curve25519:ALICEDEVICE1181": "D1rWD1tjSDB4OXmo5MhZg0fF1qNJG+hRmGBsbUMcuBk",
5652+ "ed25519:ALICEDEVICE1181": "xsDBwOgLYpPThc15wICpokxqobPsjvZlBxS/a1TpcSE"
5653+ },
5654+ "signatures": {
5655+ "@alice_1181:hs1": {
5656+ "ed25519:ALICEDEVICE1181": "Ezr63o0XyANwAUtw1j3//xlEYbbwmsTTNjIASmel36bMeczOj0tl2qJCeFlNaUP8ysLmSUM9wCSCZBKW7egHBw"
5657+ }
5658+ },
5659+ "user_id": "@alice_1181:hs1",
5660+ "unsigned": {}
5661+ }
5662+ },
5663+ "@alice_1182:hs1": {
5664+ "ALICEDEVICE1182": {
5665+ "algorithms": [
5666+ "m.olm.v1.curve25519-aes-sha2",
5667+ "m.megolm.v1.aes-sha2"
5668+ ],
5669+ "device_id": "ALICEDEVICE1182",
5670+ "keys": {
5671+ "curve25519:ALICEDEVICE1182": "KKJamkgC6bui6vcarj6T1fVzgXj3LMxtM5tstKf0GEY",
5672+ "ed25519:ALICEDEVICE1182": "1/jg8WONRoNHsjRMVA5LzjNHdYeYLnMtSBXND31TPys"
5673+ },
5674+ "signatures": {
5675+ "@alice_1182:hs1": {
5676+ "ed25519:ALICEDEVICE1182": "h/VXxJKwXWiFA+XdfvM9QMiVTUZSQY31liOf1nCybS/A6Vu6zhIP3xYPpM5QPtTFzbGlZDGiP9olfDtzmQkHCQ"
5677+ }
5678+ },
5679+ "user_id": "@alice_1182:hs1",
5680+ "unsigned": {}
5681+ }
5682+ },
5683+ "@alice_1184:hs1": {
5684+ "ALICEDEVICE1184": {
5685+ "algorithms": [
5686+ "m.olm.v1.curve25519-aes-sha2",
5687+ "m.megolm.v1.aes-sha2"
5688+ ],
5689+ "device_id": "ALICEDEVICE1184",
5690+ "keys": {
5691+ "curve25519:ALICEDEVICE1184": "pqmbUTwPua8aslZbuG07ag6jMvNWLzk7FtupwK8guw4",
5692+ "ed25519:ALICEDEVICE1184": "bwWdOc/L1Ntj+H6KObRx7R54EFV8Hwnf49DhrmVahUE"
5693+ },
5694+ "signatures": {
5695+ "@alice_1184:hs1": {
5696+ "ed25519:ALICEDEVICE1184": "afQ1csH5g2QPAZGKm69hb5JS33tCaiLOyHaxdI3d4aervvisKI+hUcThckj0S/2b3i/w3HBr0XEchuA1kbkbCA"
5697+ }
5698+ },
5699+ "user_id": "@alice_1184:hs1",
5700+ "unsigned": {}
5701+ }
5702+ },
5703+ "@alice_1187:hs1": {
5704+ "ALICEDEVICE1187": {
5705+ "algorithms": [
5706+ "m.olm.v1.curve25519-aes-sha2",
5707+ "m.megolm.v1.aes-sha2"
5708+ ],
5709+ "device_id": "ALICEDEVICE1187",
5710+ "keys": {
5711+ "curve25519:ALICEDEVICE1187": "J3OVs6SlBx048ANQApHUotbBrN1W1CujAtEE8TEMXGU",
5712+ "ed25519:ALICEDEVICE1187": "TfMXkppqjgukz6/CnoUB6cspIorVG74iGfp9zLZJmkE"
5713+ },
5714+ "signatures": {
5715+ "@alice_1187:hs1": {
5716+ "ed25519:ALICEDEVICE1187": "j8epCL/uyl0nFy57CGKT5os3pF2A1fuXnqPGrtWJhsU53PYF2H/65aCm3IeFuTV+2obLIwNlquDr1UMYYSGFBQ"
5717+ }
5718+ },
5719+ "user_id": "@alice_1187:hs1",
5720+ "unsigned": {}
5721+ }
5722+ },
5723+ "@alice_1192:hs1": {
5724+ "ALICEDEVICE1192": {
5725+ "algorithms": [
5726+ "m.olm.v1.curve25519-aes-sha2",
5727+ "m.megolm.v1.aes-sha2"
5728+ ],
5729+ "device_id": "ALICEDEVICE1192",
5730+ "keys": {
5731+ "curve25519:ALICEDEVICE1192": "3J8nqUTs6Ho9H6o4Lm7oFQaYC2BH+XKqr0pQsuPRaCU",
5732+ "ed25519:ALICEDEVICE1192": "ajYDKyzHeNua5R3t05eREg4WCNndCIMPNTckakm7tHQ"
5733+ },
5734+ "signatures": {
5735+ "@alice_1192:hs1": {
5736+ "ed25519:ALICEDEVICE1192": "38tpzv+rGk9D4jhF10O7qC/flIDxF3Q0EjOsgUKNvzaIiBr02odICdzS64T3fWWKo2/Ct+fqNikPGWZTa8rJAA"
5737+ }
5738+ },
5739+ "user_id": "@alice_1192:hs1",
5740+ "unsigned": {}
5741+ }
5742+ },
5743+ "@alice_119:hs1": {
5744+ "ALICEDEVICE119": {
5745+ "algorithms": [
5746+ "m.olm.v1.curve25519-aes-sha2",
5747+ "m.megolm.v1.aes-sha2"
5748+ ],
5749+ "device_id": "ALICEDEVICE119",
5750+ "keys": {
5751+ "curve25519:ALICEDEVICE119": "O6nG1HN4LKQmkITI/vcoUfn7i30zXxpZBXdnWkA4oWc",
5752+ "ed25519:ALICEDEVICE119": "jCCKS1DirAM3ktZutcJK75dk51IJ7bugPnN/BRFCVL8"
5753+ },
5754+ "signatures": {
5755+ "@alice_119:hs1": {
5756+ "ed25519:ALICEDEVICE119": "xE9AftJfJlvv2obNB2hGNDeOnkDi22qE3wDtAZUMnaRvpunyt8jigaGvfpDDscty2guSBIDMoKXt6A2lkW7dBA"
5757+ }
5758+ },
5759+ "user_id": "@alice_119:hs1",
5760+ "unsigned": {}
5761+ }
5762+ },
5763+ "@alice_1205:hs1": {
5764+ "ALICEDEVICE1205": {
5765+ "algorithms": [
5766+ "m.olm.v1.curve25519-aes-sha2",
5767+ "m.megolm.v1.aes-sha2"
5768+ ],
5769+ "device_id": "ALICEDEVICE1205",
5770+ "keys": {
5771+ "curve25519:ALICEDEVICE1205": "M4VWm/irhHl+SPYRfzO/6rFHnKjOZ2gZjNs3cjvdPFM",
5772+ "ed25519:ALICEDEVICE1205": "AA4kiiUlaIX9UGsCmIBb0VpPngdL+rji+fIno40A9qM"
5773+ },
5774+ "signatures": {
5775+ "@alice_1205:hs1": {
5776+ "ed25519:ALICEDEVICE1205": "7oJkV+74GC+OKwDbIVbythpMbjUsz8qfbiwIIX5ujlCA13zYZzILri5gE4oPbFlXZPNSLxQy4IV+f372EYDKCw"
5777+ }
5778+ },
5779+ "user_id": "@alice_1205:hs1",
5780+ "unsigned": {}
5781+ }
5782+ },
5783+ "@alice_1209:hs1": {
5784+ "ALICEDEVICE1209": {
5785+ "algorithms": [
5786+ "m.olm.v1.curve25519-aes-sha2",
5787+ "m.megolm.v1.aes-sha2"
5788+ ],
5789+ "device_id": "ALICEDEVICE1209",
5790+ "keys": {
5791+ "curve25519:ALICEDEVICE1209": "7+7XpchnMIbeFwlCRR06XAAirUQAZYdIHrbQhmyXWg4",
5792+ "ed25519:ALICEDEVICE1209": "C4lRrAUj2q/rnhB1bDiP5gx00GeqCB48xgae8XEb20Y"
5793+ },
5794+ "signatures": {
5795+ "@alice_1209:hs1": {
5796+ "ed25519:ALICEDEVICE1209": "e6BF7MAdr0ZklxFe6jEXJwKDEPdqZp9vkOWNX5JItZvOYroeKq+RzFie+s/DMf6ml1jeVwx9f2bhe9R15GcCBw"
5797+ }
5798+ },
5799+ "user_id": "@alice_1209:hs1",
5800+ "unsigned": {}
5801+ }
5802+ },
5803+ "@alice_1211:hs1": {
5804+ "ALICEDEVICE1211": {
5805+ "algorithms": [
5806+ "m.olm.v1.curve25519-aes-sha2",
5807+ "m.megolm.v1.aes-sha2"
5808+ ],
5809+ "device_id": "ALICEDEVICE1211",
5810+ "keys": {
5811+ "curve25519:ALICEDEVICE1211": "Y3dLyhmu5Mqh7WbOySr+Z6RQFt9cpWtSBZ8vO5uRM2E",
5812+ "ed25519:ALICEDEVICE1211": "+ja10oxuXX481WA/uwwFSTd28lGj2L0wLCPZrarydLo"
5813+ },
5814+ "signatures": {
5815+ "@alice_1211:hs1": {
5816+ "ed25519:ALICEDEVICE1211": "7pSp9rBVpTvKmo/0SlviJmUDKmADf/wCRCU/A36ya/ABqz5bok64JWcyfSbinTB1G4nc6g5z3csNK2UaITDBBw"
5817+ }
5818+ },
5819+ "user_id": "@alice_1211:hs1",
5820+ "unsigned": {}
5821+ }
5822+ },
5823+ "@alice_1214:hs1": {
5824+ "ALICEDEVICE1214": {
5825+ "algorithms": [
5826+ "m.olm.v1.curve25519-aes-sha2",
5827+ "m.megolm.v1.aes-sha2"
5828+ ],
5829+ "device_id": "ALICEDEVICE1214",
5830+ "keys": {
5831+ "curve25519:ALICEDEVICE1214": "ipUc6rj+zxgaU9e2ZOmvGMPuSQo1nWowoZ5456X8s2o",
5832+ "ed25519:ALICEDEVICE1214": "YDGfstN/8+eXXnv+KwH+5NC1NLgNLxhVgZcBpwuw+Ds"
5833+ },
5834+ "signatures": {
5835+ "@alice_1214:hs1": {
5836+ "ed25519:ALICEDEVICE1214": "u0ma6U4feTfDa6AzDCZRT+8ELoa2l9JhuvI9MupzURupIRWwZRb1Weff6iX6UHpd9H4vh5/9V8i3LSYwSXbuDA"
5837+ }
5838+ },
5839+ "user_id": "@alice_1214:hs1",
5840+ "unsigned": {}
5841+ }
5842+ },
5843+ "@alice_1217:hs1": {
5844+ "ALICEDEVICE1217": {
5845+ "algorithms": [
5846+ "m.olm.v1.curve25519-aes-sha2",
5847+ "m.megolm.v1.aes-sha2"
5848+ ],
5849+ "device_id": "ALICEDEVICE1217",
5850+ "keys": {
5851+ "curve25519:ALICEDEVICE1217": "tzsqCgl905BpYkpuW4YyEaCtwCGjC3SXHS3k0PzmLWo",
5852+ "ed25519:ALICEDEVICE1217": "PfMBrQIWRUjtkdSaRBxgxTG7zLIgD+NTZav3ePrPCR4"
5853+ },
5854+ "signatures": {
5855+ "@alice_1217:hs1": {
5856+ "ed25519:ALICEDEVICE1217": "vapRGHB/YSn6O2Qn7nW59LDl4fpghd+0O0OXpKQZw7WLeRnUF2+ivjgbyXbYCOZ2HtiU0ibSYj0hUifaEFYHDg"
5857+ }
5858+ },
5859+ "user_id": "@alice_1217:hs1",
5860+ "unsigned": {}
5861+ }
5862+ },
5863+ "@alice_1231:hs1": {
5864+ "ALICEDEVICE1231": {
5865+ "algorithms": [
5866+ "m.olm.v1.curve25519-aes-sha2",
5867+ "m.megolm.v1.aes-sha2"
5868+ ],
5869+ "device_id": "ALICEDEVICE1231",
5870+ "keys": {
5871+ "curve25519:ALICEDEVICE1231": "BXcuvLHJrgQXMFDgiSk47Oq4a3+N3wvgtB1IetPqjQk",
5872+ "ed25519:ALICEDEVICE1231": "4FzkrwKjVaSHqcv7eFJPj0DO3bg4Zqy1xpgf/OcZmq4"
5873+ },
5874+ "signatures": {
5875+ "@alice_1231:hs1": {
5876+ "ed25519:ALICEDEVICE1231": "f7EpmYgIehkGbi870u68xz9mHcPR7tuNkDaUb/nUyrCw6WDOxLU5VstNxD5y2yMVcHNg+JKvxkOSj3PmqJFgAQ"
5877+ }
5878+ },
5879+ "user_id": "@alice_1231:hs1",
5880+ "unsigned": {}
5881+ }
5882+ },
5883+ "@alice_1235:hs1": {
5884+ "ALICEDEVICE1235": {
5885+ "algorithms": [
5886+ "m.olm.v1.curve25519-aes-sha2",
5887+ "m.megolm.v1.aes-sha2"
5888+ ],
5889+ "device_id": "ALICEDEVICE1235",
5890+ "keys": {
5891+ "curve25519:ALICEDEVICE1235": "EBBSexZjEVCFECUYZ6zw0OOOgmUofocCDUG5yb09KzA",
5892+ "ed25519:ALICEDEVICE1235": "XX/5/VaGPKBW8CrgLnjBZTOI69naCAN45XoEf+fNIkA"
5893+ },
5894+ "signatures": {
5895+ "@alice_1235:hs1": {
5896+ "ed25519:ALICEDEVICE1235": "p7C3O9aTyqaJrkEVby4O6xeTVGLcwtnNJM9qZnQraH23Uv4hiDR/49hgk7RF3AEjU67I+ESQiZuGyXDrxmyfAA"
5897+ }
5898+ },
5899+ "user_id": "@alice_1235:hs1",
5900+ "unsigned": {}
5901+ }
5902+ },
5903+ "@alice_1248:hs1": {
5904+ "ALICEDEVICE1248": {
5905+ "algorithms": [
5906+ "m.olm.v1.curve25519-aes-sha2",
5907+ "m.megolm.v1.aes-sha2"
5908+ ],
5909+ "device_id": "ALICEDEVICE1248",
5910+ "keys": {
5911+ "curve25519:ALICEDEVICE1248": "/GIVSp4x64Oxx6HWGyGTfmL+jn4AcOSMqIlGEL3rtQY",
5912+ "ed25519:ALICEDEVICE1248": "pwaOOh1myIgLfBb8ZfQaQaEUhG/IIm30fIsTWD4zyjw"
5913+ },
5914+ "signatures": {
5915+ "@alice_1248:hs1": {
5916+ "ed25519:ALICEDEVICE1248": "srmMWxMCbTILHBDtA9NqqclqHquoS4xkM2Qbdt7LSxvB2rX5p0UXAGHrfliFSn6Uen7GAk6rcpV70q3plvOLDg"
5917+ }
5918+ },
5919+ "user_id": "@alice_1248:hs1",
5920+ "unsigned": {}
5921+ }
5922+ },
5923+ "@alice_1249:hs1": {
5924+ "ALICEDEVICE1249": {
5925+ "algorithms": [
5926+ "m.olm.v1.curve25519-aes-sha2",
5927+ "m.megolm.v1.aes-sha2"
5928+ ],
5929+ "device_id": "ALICEDEVICE1249",
5930+ "keys": {
5931+ "curve25519:ALICEDEVICE1249": "lGNAXxFFDsZTlbpFA9VaAxuAzH6l1GO67i6HubX70Ro",
5932+ "ed25519:ALICEDEVICE1249": "LGyYx+oIZz4lTpUIfKnyTAokQT0m6oYARzaDBXLoCo0"
5933+ },
5934+ "signatures": {
5935+ "@alice_1249:hs1": {
5936+ "ed25519:ALICEDEVICE1249": "YyMAyoVkiyb0GmXjdWIFc7QzYKPZG5KV0bh0CyDqKGlay586j4Uotf/poGsZ2/Ogzm3i33ARSo8BQl32ufl0Cw"
5937+ }
5938+ },
5939+ "user_id": "@alice_1249:hs1",
5940+ "unsigned": {}
5941+ }
5942+ },
5943+ "@alice_1250:hs1": {
5944+ "ALICEDEVICE1250": {
5945+ "algorithms": [
5946+ "m.olm.v1.curve25519-aes-sha2",
5947+ "m.megolm.v1.aes-sha2"
5948+ ],
5949+ "device_id": "ALICEDEVICE1250",
5950+ "keys": {
5951+ "curve25519:ALICEDEVICE1250": "EMhYmfAfQMUyhyIOsKDYplrLeuJlPJNmJa+ml5JWIyc",
5952+ "ed25519:ALICEDEVICE1250": "Eginy7ShGopfDTUpc+Fgmveq/W1YwvXwBFp8FJXqycc"
5953+ },
5954+ "signatures": {
5955+ "@alice_1250:hs1": {
5956+ "ed25519:ALICEDEVICE1250": "dZY5jF6E64MljxHZxhXzKwHxX912ZRA3hAAmvUfOTGpXi/xp++Q2WZGDSl/2cyfBlTqtPMvs1odO173au74+Cw"
5957+ }
5958+ },
5959+ "user_id": "@alice_1250:hs1",
5960+ "unsigned": {}
5961+ }
5962+ },
5963+ "@alice_1257:hs1": {
5964+ "ALICEDEVICE1257": {
5965+ "algorithms": [
5966+ "m.olm.v1.curve25519-aes-sha2",
5967+ "m.megolm.v1.aes-sha2"
5968+ ],
5969+ "device_id": "ALICEDEVICE1257",
5970+ "keys": {
5971+ "curve25519:ALICEDEVICE1257": "hrpj4GCBjw60RKWMgn5yP4nFwnyi/eW13BcVSD8BpmM",
5972+ "ed25519:ALICEDEVICE1257": "Xt4rLzEWhiGpaPKK8peuzoSHAHzZ2xdUCeUuPZ4fbjg"
5973+ },
5974+ "signatures": {
5975+ "@alice_1257:hs1": {
5976+ "ed25519:ALICEDEVICE1257": "x81szkKu/9rxefhYmiT7+ApChMyE4pOsNIWtunrjPwwZ/8/ApmiXWSXImuDNKck8hC1CGIJkGrfzSNLyMiaiAg"
5977+ }
5978+ },
5979+ "user_id": "@alice_1257:hs1",
5980+ "unsigned": {}
5981+ }
5982+ },
5983+ "@alice_1261:hs1": {
5984+ "ALICEDEVICE1261": {
5985+ "algorithms": [
5986+ "m.olm.v1.curve25519-aes-sha2",
5987+ "m.megolm.v1.aes-sha2"
5988+ ],
5989+ "device_id": "ALICEDEVICE1261",
5990+ "keys": {
5991+ "curve25519:ALICEDEVICE1261": "jYcME7geCxe4yL1Z+G4XpCHQDZognZ4kSKLdbo3kDQc",
5992+ "ed25519:ALICEDEVICE1261": "ZsQedmqXx+mZrA0rONU32ZVVd1iDEHQfh2nFz4XAdeg"
5993+ },
5994+ "signatures": {
5995+ "@alice_1261:hs1": {
5996+ "ed25519:ALICEDEVICE1261": "Fx8WvsrKvKuDviuDLKecddNICF4qmIinpiz+3jKaeTbCxypmOkTJt0w1/3bxrGjeedZdXmQW/n1E83mS2WaMAw"
5997+ }
5998+ },
5999+ "user_id": "@alice_1261:hs1",
6000+ "unsigned": {}
6001+ }
6002+ },
6003+ "@alice_126:hs1": {
6004+ "ALICEDEVICE126": {
6005+ "algorithms": [
6006+ "m.olm.v1.curve25519-aes-sha2",
6007+ "m.megolm.v1.aes-sha2"
6008+ ],
6009+ "device_id": "ALICEDEVICE126",
6010+ "keys": {
6011+ "curve25519:ALICEDEVICE126": "ju40rFiYA2YLj2CKSsoIjiuMOTlz6agXenXjKcAXIiA",
6012+ "ed25519:ALICEDEVICE126": "nXywmk+xM7Hq7pD41B11cjokeCOweapRCHgTS5EHKI0"
6013+ },
6014+ "signatures": {
6015+ "@alice_126:hs1": {
6016+ "ed25519:ALICEDEVICE126": "vtwoJ8/gCGc+z7KVEw4CE/5ySvonbTWgBW85pJx9XUEABIunpCxfG/b870wo/eux55tZy+HRwvFF3FuA/JbqDg"
6017+ }
6018+ },
6019+ "user_id": "@alice_126:hs1",
6020+ "unsigned": {}
6021+ }
6022+ },
6023+ "@alice_1284:hs1": {
6024+ "ALICEDEVICE1284": {
6025+ "algorithms": [
6026+ "m.olm.v1.curve25519-aes-sha2",
6027+ "m.megolm.v1.aes-sha2"
6028+ ],
6029+ "device_id": "ALICEDEVICE1284",
6030+ "keys": {
6031+ "curve25519:ALICEDEVICE1284": "pJCkOnw1eCMaxfhPw5SzmVj//qAJH+gxgBphRjK8Lzc",
6032+ "ed25519:ALICEDEVICE1284": "Df8IXhWpWraD6gx0K4EzIKTytqCxaG7PuewZp2gU7Fw"
6033+ },
6034+ "signatures": {
6035+ "@alice_1284:hs1": {
6036+ "ed25519:ALICEDEVICE1284": "LFRqj9/pLOuWFHBetZDVYy5ifYT6AAOH/z+Io7xDZU8ClUSls1FOxHME+xq1CGA42mRiVUHN73VGlvyiT0glAQ"
6037+ }
6038+ },
6039+ "user_id": "@alice_1284:hs1",
6040+ "unsigned": {}
6041+ }
6042+ },
6043+ "@alice_1287:hs1": {
6044+ "ALICEDEVICE1287": {
6045+ "algorithms": [
6046+ "m.olm.v1.curve25519-aes-sha2",
6047+ "m.megolm.v1.aes-sha2"
6048+ ],
6049+ "device_id": "ALICEDEVICE1287",
6050+ "keys": {
6051+ "curve25519:ALICEDEVICE1287": "r4KDuJSDSeIikPWsMyz/C4QbHKLQAjCXcOEP6HqYngs",
6052+ "ed25519:ALICEDEVICE1287": "lMx1jUNotxU/18SkCYG2NV/znEDzWYBzNj7abehBLfs"
6053+ },
6054+ "signatures": {
6055+ "@alice_1287:hs1": {
6056+ "ed25519:ALICEDEVICE1287": "/jjpO+UAs5TvsG7B8+jeRT/DNPA5pqqg6Aqz5JCg+mIR1NqxrV0MNSybvLq5Zxm1j+K96jkD/+8wAqgT50GeBQ"
6057+ }
6058+ },
6059+ "user_id": "@alice_1287:hs1",
6060+ "unsigned": {}
6061+ }
6062+ },
6063+ "@alice_1288:hs1": {
6064+ "ALICEDEVICE1288": {
6065+ "algorithms": [
6066+ "m.olm.v1.curve25519-aes-sha2",
6067+ "m.megolm.v1.aes-sha2"
6068+ ],
6069+ "device_id": "ALICEDEVICE1288",
6070+ "keys": {
6071+ "curve25519:ALICEDEVICE1288": "JgO7A91Zvm+ia8tWkxiOKHr8wZUB/zXN96aawoi5ax4",
6072+ "ed25519:ALICEDEVICE1288": "xO4Ve1BVLv2oGOK3VBoGKSfNBtxFGbgEConTrp0k8Zo"
6073+ },
6074+ "signatures": {
6075+ "@alice_1288:hs1": {
6076+ "ed25519:ALICEDEVICE1288": "oQqYf5Z9RIHMkRxvO0ngcSTNhRGW7uTLElyLDrFiv/2hvNkrbHX1Ri+Ek+df9xcvlYhpiQg/OYawNSO/txQ2Aw"
6077+ }
6078+ },
6079+ "user_id": "@alice_1288:hs1",
6080+ "unsigned": {}
6081+ }
6082+ },
6083+ "@alice_1289:hs1": {
6084+ "ALICEDEVICE1289": {
6085+ "algorithms": [
6086+ "m.olm.v1.curve25519-aes-sha2",
6087+ "m.megolm.v1.aes-sha2"
6088+ ],
6089+ "device_id": "ALICEDEVICE1289",
6090+ "keys": {
6091+ "curve25519:ALICEDEVICE1289": "S2Es71LtCF2mOWEKUuUaiSyyg8l2dnXwn0IL73YZGwU",
6092+ "ed25519:ALICEDEVICE1289": "fqVxlD7/by/XPuvLwPvvwmxyMsWrM0JEmPl33eXSXNw"
6093+ },
6094+ "signatures": {
6095+ "@alice_1289:hs1": {
6096+ "ed25519:ALICEDEVICE1289": "iVIUaZcD0WO5C8zc0DO00XwLBV94Hx85NxQOHm/X9UgeR7NMHPsH9eMSONcECKfmr6iMv7VqNdNdeTXrVm3eCA"
6097+ }
6098+ },
6099+ "user_id": "@alice_1289:hs1",
6100+ "unsigned": {}
6101+ }
6102+ },
6103+ "@alice_1291:hs1": {
6104+ "ALICEDEVICE1291": {
6105+ "algorithms": [
6106+ "m.olm.v1.curve25519-aes-sha2",
6107+ "m.megolm.v1.aes-sha2"
6108+ ],
6109+ "device_id": "ALICEDEVICE1291",
6110+ "keys": {
6111+ "curve25519:ALICEDEVICE1291": "E/ac3GCiOC8nHvwHAiXJN3CrYOsI1ntBbgDLImFtKVs",
6112+ "ed25519:ALICEDEVICE1291": "9JaQo8it8JjStM5i9auWPHYv3op2SFTEC+LB4HNkgeU"
6113+ },
6114+ "signatures": {
6115+ "@alice_1291:hs1": {
6116+ "ed25519:ALICEDEVICE1291": "ZRsjHgoG5PuxE2Lfk59X2qQdCoGFtsHt2ymNDucMIgdCezG7eeBu97dDs5PjlHxqS+EGGDa8/r6X9RMSpf9vDw"
6117+ }
6118+ },
6119+ "user_id": "@alice_1291:hs1",
6120+ "unsigned": {}
6121+ }
6122+ },
6123+ "@alice_1292:hs1": {
6124+ "ALICEDEVICE1292": {
6125+ "algorithms": [
6126+ "m.olm.v1.curve25519-aes-sha2",
6127+ "m.megolm.v1.aes-sha2"
6128+ ],
6129+ "device_id": "ALICEDEVICE1292",
6130+ "keys": {
6131+ "curve25519:ALICEDEVICE1292": "HE5hyRJdRB0Baw57IuUkVihm3OMuWEbVAsDsj5C16U8",
6132+ "ed25519:ALICEDEVICE1292": "J3maWOSQu8rrso9rOJiNxcecciIm8srzucw5+l3pcp8"
6133+ },
6134+ "signatures": {
6135+ "@alice_1292:hs1": {
6136+ "ed25519:ALICEDEVICE1292": "FYN1DnfsSLTFd4fAR5pwsNhWuMTTKLeZCvoMJzfiW14Rwv6mV3LHSC5JoZdTMwvxS1W4pw09O/oY6XlKHJ7rDA"
6137+ }
6138+ },
6139+ "user_id": "@alice_1292:hs1",
6140+ "unsigned": {}
6141+ }
6142+ },
6143+ "@alice_1297:hs1": {
6144+ "ALICEDEVICE1297": {
6145+ "algorithms": [
6146+ "m.olm.v1.curve25519-aes-sha2",
6147+ "m.megolm.v1.aes-sha2"
6148+ ],
6149+ "device_id": "ALICEDEVICE1297",
6150+ "keys": {
6151+ "curve25519:ALICEDEVICE1297": "Uw10CJe1IRiqlWqiPrvky5e7+nuU+fDBHSVrIUhrOA8",
6152+ "ed25519:ALICEDEVICE1297": "g2qbseDDEncqM+YQO9HVZsFgQc5PeZ+xt74LWBAJwv8"
6153+ },
6154+ "signatures": {
6155+ "@alice_1297:hs1": {
6156+ "ed25519:ALICEDEVICE1297": "v9WL8eMkSX8EF6JHYs3nx/KT05SmsgOO1Putf0vc45Lvg43ttVAW/o81V+ZDHXci5QXeFEtrGf5OE4jDZFjiBQ"
6157+ }
6158+ },
6159+ "user_id": "@alice_1297:hs1",
6160+ "unsigned": {}
6161+ }
6162+ },
6163+ "@alice_129:hs1": {
6164+ "ALICEDEVICE129": {
6165+ "algorithms": [
6166+ "m.olm.v1.curve25519-aes-sha2",
6167+ "m.megolm.v1.aes-sha2"
6168+ ],
6169+ "device_id": "ALICEDEVICE129",
6170+ "keys": {
6171+ "curve25519:ALICEDEVICE129": "Kt9uIoDSoxvvMAfNVMqdVIOOaWLfnzEcO0i7am+i42Q",
6172+ "ed25519:ALICEDEVICE129": "u8x/1Eny3Aod7n7hiU7mmdk0TXFVonFzeWX6rMxuMog"
6173+ },
6174+ "signatures": {
6175+ "@alice_129:hs1": {
6176+ "ed25519:ALICEDEVICE129": "lKTggH6aIP35sqgp6t/MPBjYGY/BEkVYWZmRE4GH0/xx5ilnCAsIffTDQpNtXGB0m5IIA5kNROZMfUiQxE2JDA"
6177+ }
6178+ },
6179+ "user_id": "@alice_129:hs1",
6180+ "unsigned": {}
6181+ }
6182+ },
6183+ "@alice_12:hs1": {
6184+ "ALICEDEVICE12": {
6185+ "algorithms": [
6186+ "m.olm.v1.curve25519-aes-sha2",
6187+ "m.megolm.v1.aes-sha2"
6188+ ],
6189+ "device_id": "ALICEDEVICE12",
6190+ "keys": {
6191+ "curve25519:ALICEDEVICE12": "conlXFKqiMeYrqH0ZSYBqNYsTyBLPwWc35F2VgFTt3w",
6192+ "ed25519:ALICEDEVICE12": "tBJzKBPnLNy8M0KS5hyNkTPPfMQcr2qTnAzsCRDIVQA"
6193+ },
6194+ "signatures": {
6195+ "@alice_12:hs1": {
6196+ "ed25519:ALICEDEVICE12": "P6Vu1pZXQvL1FMs7Ib8qelOU3XWHhXI6MasGSV3MVDjCptBvwtSQC4uiPwsmWN664MStlq0HCsk0WpIhpeKfDA"
6197+ }
6198+ },
6199+ "user_id": "@alice_12:hs1",
6200+ "unsigned": {}
6201+ }
6202+ },
6203+ "@alice_1312:hs1": {
6204+ "ALICEDEVICE1312": {
6205+ "algorithms": [
6206+ "m.olm.v1.curve25519-aes-sha2",
6207+ "m.megolm.v1.aes-sha2"
6208+ ],
6209+ "device_id": "ALICEDEVICE1312",
6210+ "keys": {
6211+ "curve25519:ALICEDEVICE1312": "Wcb9lOzexCrUW4N++vczq+YGWHalGNEwcxmAt3riWRE",
6212+ "ed25519:ALICEDEVICE1312": "Ecz4Yp9eHkIPSc1fP/UKbnaewo8a5q6iEFEA1PuXHqc"
6213+ },
6214+ "signatures": {
6215+ "@alice_1312:hs1": {
6216+ "ed25519:ALICEDEVICE1312": "yuuCksxvQjt/wctmMnnefhh6Sq906rbJNqlGW72k/Gy4ONOw8QcDgzupFifVdOZNavKja3DH/FgUcIio0196BQ"
6217+ }
6218+ },
6219+ "user_id": "@alice_1312:hs1",
6220+ "unsigned": {}
6221+ }
6222+ },
6223+ "@alice_1327:hs1": {
6224+ "ALICEDEVICE1327": {
6225+ "algorithms": [
6226+ "m.olm.v1.curve25519-aes-sha2",
6227+ "m.megolm.v1.aes-sha2"
6228+ ],
6229+ "device_id": "ALICEDEVICE1327",
6230+ "keys": {
6231+ "curve25519:ALICEDEVICE1327": "VhcFrQfO6pFGvOPqdQVGQcljvI96InhZwly34RLxqUQ",
6232+ "ed25519:ALICEDEVICE1327": "xqBYl5QDzXY7unApzVPmhK9sIXpxn+q6VMcs1LwF7p4"
6233+ },
6234+ "signatures": {
6235+ "@alice_1327:hs1": {
6236+ "ed25519:ALICEDEVICE1327": "+ftL3WRzSJS/BqkBGsxaCHgGxVVlzf1/63xF3xJXzVlAPvxz6SwkweVUo35XPBkAoZsdyNW/swAKv+y4PswpDg"
6237+ }
6238+ },
6239+ "user_id": "@alice_1327:hs1",
6240+ "unsigned": {}
6241+ }
6242+ },
6243+ "@alice_1335:hs1": {
6244+ "ALICEDEVICE1335": {
6245+ "algorithms": [
6246+ "m.olm.v1.curve25519-aes-sha2",
6247+ "m.megolm.v1.aes-sha2"
6248+ ],
6249+ "device_id": "ALICEDEVICE1335",
6250+ "keys": {
6251+ "curve25519:ALICEDEVICE1335": "MlAfxQ/FQ/NhefFuGRjCFQ3rWNnWjn4oWzaEsLAWl08",
6252+ "ed25519:ALICEDEVICE1335": "VQP8BeTRjz/8xrb/J0TDVQtdZnI9fhYt6goTEsNiAik"
6253+ },
6254+ "signatures": {
6255+ "@alice_1335:hs1": {
6256+ "ed25519:ALICEDEVICE1335": "dflKHPt1hg2KNE66T4579k/tNb6EyGsMLOIWVsuJm+vOOexdtN1Ey9ybpekVUKay+Uv3jBWmGEyr7g8KlSSPAA"
6257+ }
6258+ },
6259+ "user_id": "@alice_1335:hs1",
6260+ "unsigned": {}
6261+ }
6262+ },
6263+ "@alice_1340:hs1": {
6264+ "ALICEDEVICE1340": {
6265+ "algorithms": [
6266+ "m.olm.v1.curve25519-aes-sha2",
6267+ "m.megolm.v1.aes-sha2"
6268+ ],
6269+ "device_id": "ALICEDEVICE1340",
6270+ "keys": {
6271+ "curve25519:ALICEDEVICE1340": "ZwwfhltVM1IMawCoHgd6rv/Gw6y/js/4IfjJEl8LZQU",
6272+ "ed25519:ALICEDEVICE1340": "iNQR6T6g8iTxK3KUJIp2dAwH+u5do0nIdsjl63U/THc"
6273+ },
6274+ "signatures": {
6275+ "@alice_1340:hs1": {
6276+ "ed25519:ALICEDEVICE1340": "KzTgOYHUtcwe2SuQNcJTf76VS9YeFg/b6Y5S1P+4RB6igrsMGNcyAUK9RgaGi97sOjqvhklL1zwM/2ONguM0BA"
6277+ }
6278+ },
6279+ "user_id": "@alice_1340:hs1",
6280+ "unsigned": {}
6281+ }
6282+ },
6283+ "@alice_1341:hs1": {
6284+ "ALICEDEVICE1341": {
6285+ "algorithms": [
6286+ "m.olm.v1.curve25519-aes-sha2",
6287+ "m.megolm.v1.aes-sha2"
6288+ ],
6289+ "device_id": "ALICEDEVICE1341",
6290+ "keys": {
6291+ "curve25519:ALICEDEVICE1341": "l8+Pmxz/HOGr2fpJbvgzHQGDSUaw8Qs+ewQihyeWNVU",
6292+ "ed25519:ALICEDEVICE1341": "xxjll0baoMQK/ZPEtys5tSxYrbq8Lr/5yBNNXI1Yq5k"
6293+ },
6294+ "signatures": {
6295+ "@alice_1341:hs1": {
6296+ "ed25519:ALICEDEVICE1341": "JGcrVtmYXHiEs3+b3a0H+hpqbZilOEWyS+oeFtApob2j6wlejxfoOtzMzquMe4oVw47tLuvy5aJc4CVT4oG7Dw"
6297+ }
6298+ },
6299+ "user_id": "@alice_1341:hs1",
6300+ "unsigned": {}
6301+ }
6302+ },
6303+ "@alice_1345:hs1": {
6304+ "ALICEDEVICE1345": {
6305+ "algorithms": [
6306+ "m.olm.v1.curve25519-aes-sha2",
6307+ "m.megolm.v1.aes-sha2"
6308+ ],
6309+ "device_id": "ALICEDEVICE1345",
6310+ "keys": {
6311+ "curve25519:ALICEDEVICE1345": "jIEc0+/xKIJ6TSwKr95+o54PPuyxrUJ9o71m9F0etgg",
6312+ "ed25519:ALICEDEVICE1345": "r1hf71VYTAlK9vmLI7jLdWwDOnScULokggVx+gwKlYo"
6313+ },
6314+ "signatures": {
6315+ "@alice_1345:hs1": {
6316+ "ed25519:ALICEDEVICE1345": "CVqkSUEY3VrpCCWQmWc94cI7LqEa8uWKKftAmtPEHqt1zv8iHR+2sdkiVySwGr+dCauPf60WFeyLyvRTrcZ1Dw"
6317+ }
6318+ },
6319+ "user_id": "@alice_1345:hs1",
6320+ "unsigned": {}
6321+ }
6322+ },
6323+ "@alice_1360:hs1": {
6324+ "ALICEDEVICE1360": {
6325+ "algorithms": [
6326+ "m.olm.v1.curve25519-aes-sha2",
6327+ "m.megolm.v1.aes-sha2"
6328+ ],
6329+ "device_id": "ALICEDEVICE1360",
6330+ "keys": {
6331+ "curve25519:ALICEDEVICE1360": "19S2Le7ROEVFSfQVBd15p+B/IRRyZBq6WxScr+DTV1g",
6332+ "ed25519:ALICEDEVICE1360": "hA9qbwtN6VxZq7pfuFri9VjLSNoVvCCn42zQ2S4pouI"
6333+ },
6334+ "signatures": {
6335+ "@alice_1360:hs1": {
6336+ "ed25519:ALICEDEVICE1360": "ROjYVkyLuNnr7c5jf0gP3ocGT4CJ2XMITg97fk17ntwGXDHcslRicRKI9jYEzWYCbognZjywnCTTk7XvpLu5Bg"
6337+ }
6338+ },
6339+ "user_id": "@alice_1360:hs1",
6340+ "unsigned": {}
6341+ }
6342+ },
6343+ "@alice_1361:hs1": {
6344+ "ALICEDEVICE1361": {
6345+ "algorithms": [
6346+ "m.olm.v1.curve25519-aes-sha2",
6347+ "m.megolm.v1.aes-sha2"
6348+ ],
6349+ "device_id": "ALICEDEVICE1361",
6350+ "keys": {
6351+ "curve25519:ALICEDEVICE1361": "sq/JHzw4n93y8M/ZKqxCdaaGHyNCpxarpXdY+dMuAEw",
6352+ "ed25519:ALICEDEVICE1361": "Y92YZSsX56ATieEN4Bwb73gVe4aS0ag+vvIgcaj94Go"
6353+ },
6354+ "signatures": {
6355+ "@alice_1361:hs1": {
6356+ "ed25519:ALICEDEVICE1361": "1hzVbzNxRffz+8hpxj3EKDK8a9dwYEP+NaMY8bWMBVjAgU/e4cGyYC6mmtqI5bLFCrZL1Xt6HJrSN0mBOJ4KBQ"
6357+ }
6358+ },
6359+ "user_id": "@alice_1361:hs1",
6360+ "unsigned": {}
6361+ }
6362+ },
6363+ "@alice_1378:hs1": {
6364+ "ALICEDEVICE1378": {
6365+ "algorithms": [
6366+ "m.olm.v1.curve25519-aes-sha2",
6367+ "m.megolm.v1.aes-sha2"
6368+ ],
6369+ "device_id": "ALICEDEVICE1378",
6370+ "keys": {
6371+ "curve25519:ALICEDEVICE1378": "I3T5zqAoRrCyOvfSrj55Sd93vsmtamDhisv3d4vUugI",
6372+ "ed25519:ALICEDEVICE1378": "JGCCW8Rmfd4J9g4EGHxrpzSBlh+8bAybNmxCHgmPfXg"
6373+ },
6374+ "signatures": {
6375+ "@alice_1378:hs1": {
6376+ "ed25519:ALICEDEVICE1378": "lnXdOKd7Y6f9gBWwwp98+v2iVt6RQJPnCmROoXLGMsa32wDEg9ai9tZd3JXt0/ZSuo+q0MQZzm3voN+4ECNUBg"
6377+ }
6378+ },
6379+ "user_id": "@alice_1378:hs1",
6380+ "unsigned": {}
6381+ }
6382+ },
6383+ "@alice_1403:hs1": {
6384+ "ALICEDEVICE1403": {
6385+ "algorithms": [
6386+ "m.olm.v1.curve25519-aes-sha2",
6387+ "m.megolm.v1.aes-sha2"
6388+ ],
6389+ "device_id": "ALICEDEVICE1403",
6390+ "keys": {
6391+ "curve25519:ALICEDEVICE1403": "WZP9B4yqp9vqa7C8JVic2QFGvABNY0w/TkdC0d45e0A",
6392+ "ed25519:ALICEDEVICE1403": "Y+LpZLvYFieb7w7fHcofOsJ7xqP+58bOYaaKU0SMTuE"
6393+ },
6394+ "signatures": {
6395+ "@alice_1403:hs1": {
6396+ "ed25519:ALICEDEVICE1403": "I5SaqR/Q7DxpsKEngtDCi11UFsKyDkvWw5Inda4QSV1cN5BHCmmfiqLG9LAjmIO+sLbX8DJ81TW5gKmRRqeLCQ"
6397+ }
6398+ },
6399+ "user_id": "@alice_1403:hs1",
6400+ "unsigned": {}
6401+ }
6402+ },
6403+ "@alice_1424:hs1": {
6404+ "ALICEDEVICE1424": {
6405+ "algorithms": [
6406+ "m.olm.v1.curve25519-aes-sha2",
6407+ "m.megolm.v1.aes-sha2"
6408+ ],
6409+ "device_id": "ALICEDEVICE1424",
6410+ "keys": {
6411+ "curve25519:ALICEDEVICE1424": "1xuLZCSX3lN1BOJbQ5zl5G79Uk2XP1UG56FBZSliIVg",
6412+ "ed25519:ALICEDEVICE1424": "3063vz+fexB65XCEUGR7XaMVS/fHxgGKYoampzXilSo"
6413+ },
6414+ "signatures": {
6415+ "@alice_1424:hs1": {
6416+ "ed25519:ALICEDEVICE1424": "nTJxWl/Q8Bzit5GqhaR1u4ERqmyX5bZPUbMMjG+fBcZdsxeQwemDZPEQkvAUa4OOl/R4wyD3t3ouK16C4/n4BQ"
6417+ }
6418+ },
6419+ "user_id": "@alice_1424:hs1",
6420+ "unsigned": {}
6421+ }
6422+ },
6423+ "@alice_1433:hs1": {
6424+ "ALICEDEVICE1433": {
6425+ "algorithms": [
6426+ "m.olm.v1.curve25519-aes-sha2",
6427+ "m.megolm.v1.aes-sha2"
6428+ ],
6429+ "device_id": "ALICEDEVICE1433",
6430+ "keys": {
6431+ "curve25519:ALICEDEVICE1433": "1PBNz19MfWynfU/35yznUPDH2cLExyzVPQgPz5dCKAg",
6432+ "ed25519:ALICEDEVICE1433": "Ry7nyIXbq25jMyDiiAGlmLfquIyIwSe0T2WqYD0bDdE"
6433+ },
6434+ "signatures": {
6435+ "@alice_1433:hs1": {
6436+ "ed25519:ALICEDEVICE1433": "dooVGAvP5nINxfSZmlogOAWGNFAFYcbKWm8H9Ucx0Iz4lzHEWPiXCqXW/1Zv23oGD4xR1VmyutuBS/aU2Vx+Ag"
6437+ }
6438+ },
6439+ "user_id": "@alice_1433:hs1",
6440+ "unsigned": {}
6441+ }
6442+ },
6443+ "@alice_1440:hs1": {
6444+ "ALICEDEVICE1440": {
6445+ "algorithms": [
6446+ "m.olm.v1.curve25519-aes-sha2",
6447+ "m.megolm.v1.aes-sha2"
6448+ ],
6449+ "device_id": "ALICEDEVICE1440",
6450+ "keys": {
6451+ "curve25519:ALICEDEVICE1440": "JFjqyLlLYdQ6dsOfauPlwty1aTn4wE7NPNdYKyRgKhQ",
6452+ "ed25519:ALICEDEVICE1440": "jMWawwpZhSlj7Mw5V/7pT8RTutLxEnlXOs2SJoq6KcY"
6453+ },
6454+ "signatures": {
6455+ "@alice_1440:hs1": {
6456+ "ed25519:ALICEDEVICE1440": "0AiKr6OCtcR5mJ/t9h/9sGoBGlDd2rYt2iCMcvPGH6mXjGuaIGE1h4MB+GeNfntnyvJSiHL29BqOEg+/6IXFCA"
6457+ }
6458+ },
6459+ "user_id": "@alice_1440:hs1",
6460+ "unsigned": {}
6461+ }
6462+ },
6463+ "@alice_1446:hs1": {
6464+ "ALICEDEVICE1446": {
6465+ "algorithms": [
6466+ "m.olm.v1.curve25519-aes-sha2",
6467+ "m.megolm.v1.aes-sha2"
6468+ ],
6469+ "device_id": "ALICEDEVICE1446",
6470+ "keys": {
6471+ "curve25519:ALICEDEVICE1446": "ARYnQ/yii5rxg2YyBFo9fQJ2G9Ns7usKcNZQ+JnjoBE",
6472+ "ed25519:ALICEDEVICE1446": "VNN+yrxE5fXYyvqxGpoSzIKjNuqBIe918AqohIciemE"
6473+ },
6474+ "signatures": {
6475+ "@alice_1446:hs1": {
6476+ "ed25519:ALICEDEVICE1446": "KUqbM1h39tvh7oi2RhoC1+aFOXha9CloH/A1vVFy1FO9My0icJATJDaEHU8iNwNV2R1XzITUMMTnt81sSZANDQ"
6477+ }
6478+ },
6479+ "user_id": "@alice_1446:hs1",
6480+ "unsigned": {}
6481+ }
6482+ },
6483+ "@alice_1454:hs1": {
6484+ "ALICEDEVICE1454": {
6485+ "algorithms": [
6486+ "m.olm.v1.curve25519-aes-sha2",
6487+ "m.megolm.v1.aes-sha2"
6488+ ],
6489+ "device_id": "ALICEDEVICE1454",
6490+ "keys": {
6491+ "curve25519:ALICEDEVICE1454": "oIwU3ydCjrzLcu8tZbF9cy9LhzuCR40fT9d9CTaLtSE",
6492+ "ed25519:ALICEDEVICE1454": "Ena+no5ziqKyTu7XAwyee/AqXe6yO0RmfO2T52gUQ1g"
6493+ },
6494+ "signatures": {
6495+ "@alice_1454:hs1": {
6496+ "ed25519:ALICEDEVICE1454": "c8L4+hP1Cv9jJ3W4qsP54vV/KW8glujASeRFwEom5V/sEzZykPE5Qm7uPPQPy+MZIRyDKw7eJbr+RGY3sXmsBw"
6497+ }
6498+ },
6499+ "user_id": "@alice_1454:hs1",
6500+ "unsigned": {}
6501+ }
6502+ },
6503+ "@alice_1464:hs1": {
6504+ "ALICEDEVICE1464": {
6505+ "algorithms": [
6506+ "m.olm.v1.curve25519-aes-sha2",
6507+ "m.megolm.v1.aes-sha2"
6508+ ],
6509+ "device_id": "ALICEDEVICE1464",
6510+ "keys": {
6511+ "curve25519:ALICEDEVICE1464": "+q+38kGDPbBUkCM2GJzGw7usBKpk02ADCvQnRsBuImI",
6512+ "ed25519:ALICEDEVICE1464": "oWR2TV1USZd6P0qVm/svxguwfH2dOP+t3EZqcCAHt0c"
6513+ },
6514+ "signatures": {
6515+ "@alice_1464:hs1": {
6516+ "ed25519:ALICEDEVICE1464": "bJTpCDrPtLfEO3Wu1HYShVTyP+aX8W4tGaNQjKQYygIPIR63P7GosoVk0HDgNXivcUdxY4dVRbVw8LOd1dGwDg"
6517+ }
6518+ },
6519+ "user_id": "@alice_1464:hs1",
6520+ "unsigned": {}
6521+ }
6522+ },
6523+ "@alice_1466:hs1": {
6524+ "ALICEDEVICE1466": {
6525+ "algorithms": [
6526+ "m.olm.v1.curve25519-aes-sha2",
6527+ "m.megolm.v1.aes-sha2"
6528+ ],
6529+ "device_id": "ALICEDEVICE1466",
6530+ "keys": {
6531+ "curve25519:ALICEDEVICE1466": "QuoGhW2u0NOc9Xh5Pnw2Fs2pXpqI7BB1L9+J7IbTuG4",
6532+ "ed25519:ALICEDEVICE1466": "u3iVa8JNvJS0tYM87/x2mKzECumw6Ai3aQdESUDeVgM"
6533+ },
6534+ "signatures": {
6535+ "@alice_1466:hs1": {
6536+ "ed25519:ALICEDEVICE1466": "H1COVo/m5vchqwP81YDAQE12MEdF+muk8RBYUVZvgHdWhO6RYMmiE3aKR+kpP0mpX56FWLR9Qo8ObA0ekrs4Bg"
6537+ }
6538+ },
6539+ "user_id": "@alice_1466:hs1",
6540+ "unsigned": {}
6541+ }
6542+ },
6543+ "@alice_14:hs1": {
6544+ "ALICEDEVICE14": {
6545+ "algorithms": [
6546+ "m.olm.v1.curve25519-aes-sha2",
6547+ "m.megolm.v1.aes-sha2"
6548+ ],
6549+ "device_id": "ALICEDEVICE14",
6550+ "keys": {
6551+ "curve25519:ALICEDEVICE14": "ZG834n9CBdTPkKQjKy7Bs43Dn1++KTSVd4XpX8dFWyo",
6552+ "ed25519:ALICEDEVICE14": "KEkoJ4UOCxJvEb1GPP0KgFBb/oUOAJqMlHKE1kZvbog"
6553+ },
6554+ "signatures": {
6555+ "@alice_14:hs1": {
6556+ "ed25519:ALICEDEVICE14": "F4hbILWTsW/ig6wmz0JCRQl2LafvQDSgfhkg8X+oGJUiC1febzRsqnKFLEMqom7Hvwv+c+qghCTnyb7SeoXwDQ"
6557+ }
6558+ },
6559+ "user_id": "@alice_14:hs1",
6560+ "unsigned": {}
6561+ }
6562+ },
6563+ "@alice_1506:hs1": {
6564+ "ALICEDEVICE1506": {
6565+ "algorithms": [
6566+ "m.olm.v1.curve25519-aes-sha2",
6567+ "m.megolm.v1.aes-sha2"
6568+ ],
6569+ "device_id": "ALICEDEVICE1506",
6570+ "keys": {
6571+ "curve25519:ALICEDEVICE1506": "vGp6n+H874RVxFfz1m8qFmGficuwTOKpjsottJIFzCs",
6572+ "ed25519:ALICEDEVICE1506": "VyhqyY4DsKdb+pnYYgRP0/uLdgwFIy7ZYGwZ2ICDTlY"
6573+ },
6574+ "signatures": {
6575+ "@alice_1506:hs1": {
6576+ "ed25519:ALICEDEVICE1506": "TxJ/Er+bNqxofUKtDdxj6QYS93pXuT6mEcURtQG0hWT77OBDX4beqs33SbCRPIrQ5TOMr9CWNRiKHweTbrpeDg"
6577+ }
6578+ },
6579+ "user_id": "@alice_1506:hs1",
6580+ "unsigned": {}
6581+ }
6582+ },
6583+ "@alice_1526:hs1": {
6584+ "ALICEDEVICE1526": {
6585+ "algorithms": [
6586+ "m.olm.v1.curve25519-aes-sha2",
6587+ "m.megolm.v1.aes-sha2"
6588+ ],
6589+ "device_id": "ALICEDEVICE1526",
6590+ "keys": {
6591+ "curve25519:ALICEDEVICE1526": "X7ijRfneImfARTjQkEFYpjmVvqgfmSRK89vK3XX6jWQ",
6592+ "ed25519:ALICEDEVICE1526": "gnSMbZ1M5I/SJ5wuGFi/NPmkogs8g/3y1xaTWFpA91o"
6593+ },
6594+ "signatures": {
6595+ "@alice_1526:hs1": {
6596+ "ed25519:ALICEDEVICE1526": "bBlTNDOnZE147sql8XahwJ46wt2UkQpWxIkJSN/pJSQEQAD1i6ToGxggmV/N2Tk2KnHaut6VxX9cIw+mSQlzDg"
6597+ }
6598+ },
6599+ "user_id": "@alice_1526:hs1",
6600+ "unsigned": {}
6601+ }
6602+ },
6603+ "@alice_152:hs1": {
6604+ "ALICEDEVICE152": {
6605+ "algorithms": [
6606+ "m.olm.v1.curve25519-aes-sha2",
6607+ "m.megolm.v1.aes-sha2"
6608+ ],
6609+ "device_id": "ALICEDEVICE152",
6610+ "keys": {
6611+ "curve25519:ALICEDEVICE152": "yTKUAg2ty94TTpocWw99oNHfW1eFIKngR2D/xB8FJSw",
6612+ "ed25519:ALICEDEVICE152": "fzvHZROLvIekirRU6nPHnds3zh4Xy0KJTL+ICnPiuAk"
6613+ },
6614+ "signatures": {
6615+ "@alice_152:hs1": {
6616+ "ed25519:ALICEDEVICE152": "/VAutFhjV+boe3wZ5J4FFXZ3NULwSgyUXyYaQxx8zVyK4U0+jBUAOy13E/uFnM5NoOB6pErE3SRHeQrFHrgDDg"
6617+ }
6618+ },
6619+ "user_id": "@alice_152:hs1",
6620+ "unsigned": {}
6621+ }
6622+ },
6623+ "@alice_1532:hs1": {
6624+ "ALICEDEVICE1532": {
6625+ "algorithms": [
6626+ "m.olm.v1.curve25519-aes-sha2",
6627+ "m.megolm.v1.aes-sha2"
6628+ ],
6629+ "device_id": "ALICEDEVICE1532",
6630+ "keys": {
6631+ "curve25519:ALICEDEVICE1532": "AG03xCzDULx5+qgY8HiG20/rOSQEOzOLPNyJ9IRccTw",
6632+ "ed25519:ALICEDEVICE1532": "oNNgcmmy9eys1YU29hqpQM0NYHnGkQ1ESqLfGsnIPoQ"
6633+ },
6634+ "signatures": {
6635+ "@alice_1532:hs1": {
6636+ "ed25519:ALICEDEVICE1532": "QElUexMAifj1kljNBABTTgSd11g/4YfRvCnWPuPszk2VBCg+PVamyp23xi/liwRNeTsCrSG2CS68ggr8z4DyBw"
6637+ }
6638+ },
6639+ "user_id": "@alice_1532:hs1",
6640+ "unsigned": {}
6641+ }
6642+ },
6643+ "@alice_1533:hs1": {
6644+ "ALICEDEVICE1533": {
6645+ "algorithms": [
6646+ "m.olm.v1.curve25519-aes-sha2",
6647+ "m.megolm.v1.aes-sha2"
6648+ ],
6649+ "device_id": "ALICEDEVICE1533",
6650+ "keys": {
6651+ "curve25519:ALICEDEVICE1533": "ICG42Ud9tIy+mQLSY+hHUJrSIhbag6aiquY2CloqHFs",
6652+ "ed25519:ALICEDEVICE1533": "XdKhsDdRaa+oK+z1+0gEK9VJsMjZJRyRVyT0NkESJGs"
6653+ },
6654+ "signatures": {
6655+ "@alice_1533:hs1": {
6656+ "ed25519:ALICEDEVICE1533": "hHliX9iBmYzV3IEjs0bv7W+Mqb6D7kqD24iNwBIATGqH004lwg/HBJgOAXPlNM1tnbj7szRksf5wbQSffdF6Cw"
6657+ }
6658+ },
6659+ "user_id": "@alice_1533:hs1",
6660+ "unsigned": {}
6661+ }
6662+ },
6663+ "@alice_1534:hs1": {
6664+ "ALICEDEVICE1534": {
6665+ "algorithms": [
6666+ "m.olm.v1.curve25519-aes-sha2",
6667+ "m.megolm.v1.aes-sha2"
6668+ ],
6669+ "device_id": "ALICEDEVICE1534",
6670+ "keys": {
6671+ "curve25519:ALICEDEVICE1534": "aYTVUF0KBB1EUGBpxYMpVG9JrhG0Oq5JJWGhTiaas1Y",
6672+ "ed25519:ALICEDEVICE1534": "YjZaxZ5FQ+95pBOQSmVUUj6sUHa4xAmT6ldHMJOiNU0"
6673+ },
6674+ "signatures": {
6675+ "@alice_1534:hs1": {
6676+ "ed25519:ALICEDEVICE1534": "SvN2aip12e/DZQyNatQeqNKyuhqFG1ULZ6mVIXZVndI9Pzi3qe+b7JS81qv/D/wyWhQ6sHYMxnURv20Kwf8qAQ"
6677+ }
6678+ },
6679+ "user_id": "@alice_1534:hs1",
6680+ "unsigned": {}
6681+ }
6682+ },
6683+ "@alice_1535:hs1": {
6684+ "ALICEDEVICE1535": {
6685+ "algorithms": [
6686+ "m.olm.v1.curve25519-aes-sha2",
6687+ "m.megolm.v1.aes-sha2"
6688+ ],
6689+ "device_id": "ALICEDEVICE1535",
6690+ "keys": {
6691+ "curve25519:ALICEDEVICE1535": "ik0yjvGq4Book0LdDfPZM/o9voMcQlp3zDyQfdylois",
6692+ "ed25519:ALICEDEVICE1535": "rwIVYP4ZbjryOBBGP6IVUj+3CCW9sdUUisEB0ktA27c"
6693+ },
6694+ "signatures": {
6695+ "@alice_1535:hs1": {
6696+ "ed25519:ALICEDEVICE1535": "7GC59N7vXhe9TEhG8G6ZocCmnr8RxFrn+LGe2tyqkapvSB/y4j2VZozr7dQkhIdZXOUq/oCcy7OtYzG8YpV4Bg"
6697+ }
6698+ },
6699+ "user_id": "@alice_1535:hs1",
6700+ "unsigned": {}
6701+ }
6702+ },
6703+ "@alice_1546:hs1": {
6704+ "ALICEDEVICE1546": {
6705+ "algorithms": [
6706+ "m.olm.v1.curve25519-aes-sha2",
6707+ "m.megolm.v1.aes-sha2"
6708+ ],
6709+ "device_id": "ALICEDEVICE1546",
6710+ "keys": {
6711+ "curve25519:ALICEDEVICE1546": "26e2+klBdXcJzZEe0p+DpPbKAVq4PisP6m/j0YW60z4",
6712+ "ed25519:ALICEDEVICE1546": "lBOTrOj1Di2FPy/tVBvWt15zqqdqWqNcn1ynmZmbHDk"
6713+ },
6714+ "signatures": {
6715+ "@alice_1546:hs1": {
6716+ "ed25519:ALICEDEVICE1546": "D2dYoLbzKAA7AfNev4ktJYlBj+xD78xzQwtw/LlqhA96o2TjnmcaCI3SakQDZYbR5UVniVMlLLQDgoj8C67NAQ"
6717+ }
6718+ },
6719+ "user_id": "@alice_1546:hs1",
6720+ "unsigned": {}
6721+ }
6722+ },
6723+ "@alice_1548:hs1": {
6724+ "ALICEDEVICE1548": {
6725+ "algorithms": [
6726+ "m.olm.v1.curve25519-aes-sha2",
6727+ "m.megolm.v1.aes-sha2"
6728+ ],
6729+ "device_id": "ALICEDEVICE1548",
6730+ "keys": {
6731+ "curve25519:ALICEDEVICE1548": "Y04/XsKatMk5JPI7YcqW4SBBVGQL1lG04cYy9O0yIjc",
6732+ "ed25519:ALICEDEVICE1548": "ItCGg1KnMH4Q3jvLoF9H295txMyMdyKPqMhiwY38dQU"
6733+ },
6734+ "signatures": {
6735+ "@alice_1548:hs1": {
6736+ "ed25519:ALICEDEVICE1548": "0JVBt3OBASYXNkZSVtsk/ha1LYUz+CHiUo5yVB0Tl3qePfja8s8MPIByLpMMq79EPfLOFCgfSf3WAWnJwNv/Aw"
6737+ }
6738+ },
6739+ "user_id": "@alice_1548:hs1",
6740+ "unsigned": {}
6741+ }
6742+ },
6743+ "@alice_1551:hs1": {
6744+ "ALICEDEVICE1551": {
6745+ "algorithms": [
6746+ "m.olm.v1.curve25519-aes-sha2",
6747+ "m.megolm.v1.aes-sha2"
6748+ ],
6749+ "device_id": "ALICEDEVICE1551",
6750+ "keys": {
6751+ "curve25519:ALICEDEVICE1551": "pTWhfcPguy4jtr84HhjSWcoOelKaiXw1STcH01xrhWg",
6752+ "ed25519:ALICEDEVICE1551": "KqS0TMkfJvjpO/mCz+DoQmaX/oJztQt4DFTwUb5c3r8"
6753+ },
6754+ "signatures": {
6755+ "@alice_1551:hs1": {
6756+ "ed25519:ALICEDEVICE1551": "q/MbEyMvYWFsxEXXipnMLcRimPPKoib3hH5Y+4v0/RchSyX6CdFPBoyVoNZD6guMqaV2SfYc+vFQu8o0dhE2Bg"
6757+ }
6758+ },
6759+ "user_id": "@alice_1551:hs1",
6760+ "unsigned": {}
6761+ }
6762+ },
6763+ "@alice_1555:hs1": {
6764+ "ALICEDEVICE1555": {
6765+ "algorithms": [
6766+ "m.olm.v1.curve25519-aes-sha2",
6767+ "m.megolm.v1.aes-sha2"
6768+ ],
6769+ "device_id": "ALICEDEVICE1555",
6770+ "keys": {
6771+ "curve25519:ALICEDEVICE1555": "v2niosa88aGTymfXWH7rfan6S898gB9FsmhVksU6Amg",
6772+ "ed25519:ALICEDEVICE1555": "D0GwYFcOBmTdmvUymSCxvhaEnQZrqxhAlHLojJ7UhjU"
6773+ },
6774+ "signatures": {
6775+ "@alice_1555:hs1": {
6776+ "ed25519:ALICEDEVICE1555": "VefL6fibeX9YI/PyW1N4IVMzzlvGTyjzj6QjNp+k+aBZ90fMSzZ7WDtVecZhS5mVBa0X9md6YhyLNHRmI688Aw"
6777+ }
6778+ },
6779+ "user_id": "@alice_1555:hs1",
6780+ "unsigned": {}
6781+ }
6782+ },
6783+ "@alice_1559:hs1": {
6784+ "ALICEDEVICE1559": {
6785+ "algorithms": [
6786+ "m.olm.v1.curve25519-aes-sha2",
6787+ "m.megolm.v1.aes-sha2"
6788+ ],
6789+ "device_id": "ALICEDEVICE1559",
6790+ "keys": {
6791+ "curve25519:ALICEDEVICE1559": "5NWzHz1IrWg9GpHsqCGkpwJ4+SGo2j4WRluhuN1G7gA",
6792+ "ed25519:ALICEDEVICE1559": "q5lTrSzlQ3TW+/7Xg2rDEHkHW7aP7M+drmv4iCGLdpo"
6793+ },
6794+ "signatures": {
6795+ "@alice_1559:hs1": {
6796+ "ed25519:ALICEDEVICE1559": "gb6aJR1ywHBj+a4KBuE1ukRBwXvDQjj1uEmAT2FTON/kSeCEW4Egc9cv0fV6XBFs+EyQpQd1lBSjB1t7c0xrAw"
6797+ }
6798+ },
6799+ "user_id": "@alice_1559:hs1",
6800+ "unsigned": {}
6801+ }
6802+ },
6803+ "@alice_1571:hs1": {
6804+ "ALICEDEVICE1571": {
6805+ "algorithms": [
6806+ "m.olm.v1.curve25519-aes-sha2",
6807+ "m.megolm.v1.aes-sha2"
6808+ ],
6809+ "device_id": "ALICEDEVICE1571",
6810+ "keys": {
6811+ "curve25519:ALICEDEVICE1571": "bmb+zTm47k2LWtavuv9nFscPFIxHjdNh7iVE3BWwZTY",
6812+ "ed25519:ALICEDEVICE1571": "p+B5Yru9xm1XPrpkbw4zGfT96oxpjBTHM6Wb4tS4tdg"
6813+ },
6814+ "signatures": {
6815+ "@alice_1571:hs1": {
6816+ "ed25519:ALICEDEVICE1571": "p2FwcydxwLQFh3fiVtGy2Wz2VCO0yKgdpOHuvElBYmpan+WBLsm0XaNndMCbgp3GLPkRUTrNYkyGs4RYIS/hBQ"
6817+ }
6818+ },
6819+ "user_id": "@alice_1571:hs1",
6820+ "unsigned": {}
6821+ }
6822+ },
6823+ "@alice_1585:hs1": {
6824+ "ALICEDEVICE1585": {
6825+ "algorithms": [
6826+ "m.olm.v1.curve25519-aes-sha2",
6827+ "m.megolm.v1.aes-sha2"
6828+ ],
6829+ "device_id": "ALICEDEVICE1585",
6830+ "keys": {
6831+ "curve25519:ALICEDEVICE1585": "JoWpfGtW83+PT5uiiRE56rYid/NDXRWxfapVvoryigA",
6832+ "ed25519:ALICEDEVICE1585": "ybf7snSZrBVQav+Yx0qVcJ6WMOwOFBfVRs8UxsWWqmQ"
6833+ },
6834+ "signatures": {
6835+ "@alice_1585:hs1": {
6836+ "ed25519:ALICEDEVICE1585": "0R7j2cEWgYKuRUB6uTORL/NbOTNZQFhAMO2EToh+taPmmT9P0YPSTomtnLvnXqDLoQoj7b3mJG+e+dcU0VIWDA"
6837+ }
6838+ },
6839+ "user_id": "@alice_1585:hs1",
6840+ "unsigned": {}
6841+ }
6842+ },
6843+ "@alice_1586:hs1": {
6844+ "ALICEDEVICE1586": {
6845+ "algorithms": [
6846+ "m.olm.v1.curve25519-aes-sha2",
6847+ "m.megolm.v1.aes-sha2"
6848+ ],
6849+ "device_id": "ALICEDEVICE1586",
6850+ "keys": {
6851+ "curve25519:ALICEDEVICE1586": "bIT9IQMWiUwWvrjltQNMxeglK+enUiqN49Q1QUGiM34",
6852+ "ed25519:ALICEDEVICE1586": "i0mQmk6twCHZMnGh22eAxETVv9BZlZFwMOrm5Ketm6E"
6853+ },
6854+ "signatures": {
6855+ "@alice_1586:hs1": {
6856+ "ed25519:ALICEDEVICE1586": "/bTrbyPG8kLHEEyWyKA/QJi19rA2tPknxg8iI6DRNkfIPF2NwQV2jCW1SV8mLzOXLqhKVWQBwC7kvTyVUFFUBA"
6857+ }
6858+ },
6859+ "user_id": "@alice_1586:hs1",
6860+ "unsigned": {}
6861+ }
6862+ },
6863+ "@alice_159:hs1": {
6864+ "ALICEDEVICE159": {
6865+ "algorithms": [
6866+ "m.olm.v1.curve25519-aes-sha2",
6867+ "m.megolm.v1.aes-sha2"
6868+ ],
6869+ "device_id": "ALICEDEVICE159",
6870+ "keys": {
6871+ "curve25519:ALICEDEVICE159": "FvW4/8ScIqWiS7oFZUcGAYEsBXUvP17jFEfyPeqvCVk",
6872+ "ed25519:ALICEDEVICE159": "Wzb6W4IGgigeIaAfX5j89xYtey/m9nSF7YqFxtDH8AQ"
6873+ },
6874+ "signatures": {
6875+ "@alice_159:hs1": {
6876+ "ed25519:ALICEDEVICE159": "IZ/3cI8+muXgJnwmiVeFu3s8TU7BuSXboyc7/QdRiZ6K7maeme6cKGM+HG0F2nlx9tEqzE/Pe8yj3Nv9dA9+Dw"
6877+ }
6878+ },
6879+ "user_id": "@alice_159:hs1",
6880+ "unsigned": {}
6881+ }
6882+ },
6883+ "@alice_15:hs1": {
6884+ "ALICEDEVICE15": {
6885+ "algorithms": [
6886+ "m.olm.v1.curve25519-aes-sha2",
6887+ "m.megolm.v1.aes-sha2"
6888+ ],
6889+ "device_id": "ALICEDEVICE15",
6890+ "keys": {
6891+ "curve25519:ALICEDEVICE15": "gtg4tgRJtzY9n3ifxOgc4krEpgoZc4QNj8lJLGe3+lc",
6892+ "ed25519:ALICEDEVICE15": "k6riL+S821WuiMHKltsuQoQ2q8gzG0JZ2VN7PI7zPb4"
6893+ },
6894+ "signatures": {
6895+ "@alice_15:hs1": {
6896+ "ed25519:ALICEDEVICE15": "9Egq7JVEw9PcDzwAAaNuZFEhcZj/OBWC0vp1QO5mESMRJBNvxCRcTYqdOEmZ3hI4JgYnSekcKeBvPMCN9FZQDA"
6897+ }
6898+ },
6899+ "user_id": "@alice_15:hs1",
6900+ "unsigned": {}
6901+ }
6902+ },
6903+ "@alice_1603:hs1": {
6904+ "ALICEDEVICE1603": {
6905+ "algorithms": [
6906+ "m.olm.v1.curve25519-aes-sha2",
6907+ "m.megolm.v1.aes-sha2"
6908+ ],
6909+ "device_id": "ALICEDEVICE1603",
6910+ "keys": {
6911+ "curve25519:ALICEDEVICE1603": "G5VU+QveZ/QwGSGK0KLIII3RaqSLNpFgXtK3MeGvYn8",
6912+ "ed25519:ALICEDEVICE1603": "ZFeAoGJeK8khF0rh7zuFIliqh9ZUQA4xVzoiGFtC8ZU"
6913+ },
6914+ "signatures": {
6915+ "@alice_1603:hs1": {
6916+ "ed25519:ALICEDEVICE1603": "ezhdcJZHHITRTrUjLOJHJ81ILzW8PxWmv05nOTM5KKjjC4GdEldxUfEFRBLlD43kyxIc5LacNN7oHKl8b2mcCA"
6917+ }
6918+ },
6919+ "user_id": "@alice_1603:hs1",
6920+ "unsigned": {}
6921+ }
6922+ },
6923+ "@alice_1621:hs1": {
6924+ "ALICEDEVICE1621": {
6925+ "algorithms": [
6926+ "m.olm.v1.curve25519-aes-sha2",
6927+ "m.megolm.v1.aes-sha2"
6928+ ],
6929+ "device_id": "ALICEDEVICE1621",
6930+ "keys": {
6931+ "curve25519:ALICEDEVICE1621": "K1WO/9zLAETt67f5syYg2LkwJTgCCcJjx93+msFTFzw",
6932+ "ed25519:ALICEDEVICE1621": "PDazTaupv2ovNAK1nHU+jp33NT8GT0smLfNKZVZqUAs"
6933+ },
6934+ "signatures": {
6935+ "@alice_1621:hs1": {
6936+ "ed25519:ALICEDEVICE1621": "j1C8KWVKlQkZZ8xwd1hOkUpUSjQ1sT5r8GjfUT0WvZt+FQW9pAhbCI2G+5Rpdc4nsDY20uDt3wbP9dyFOoGtDA"
6937+ }
6938+ },
6939+ "user_id": "@alice_1621:hs1",
6940+ "unsigned": {}
6941+ }
6942+ },
6943+ "@alice_1627:hs1": {
6944+ "ALICEDEVICE1627": {
6945+ "algorithms": [
6946+ "m.olm.v1.curve25519-aes-sha2",
6947+ "m.megolm.v1.aes-sha2"
6948+ ],
6949+ "device_id": "ALICEDEVICE1627",
6950+ "keys": {
6951+ "curve25519:ALICEDEVICE1627": "WK4zSz0d4a2FrQk3GXUWi2F4nRJyJ/7f8XeqzjaZJRc",
6952+ "ed25519:ALICEDEVICE1627": "qVZpUr5BhcyDiZ0mzSbRkGDFrJkbmh+1ovMB/nInI+o"
6953+ },
6954+ "signatures": {
6955+ "@alice_1627:hs1": {
6956+ "ed25519:ALICEDEVICE1627": "JyoTvMuRLKsu0A8RCVMiSCZoQFyqf7yVrrrpz03CO7Rsv1Cjeu4ZVDbLDiN0BIsyazjvpaQCrwwRVy+QeubMAA"
6957+ }
6958+ },
6959+ "user_id": "@alice_1627:hs1",
6960+ "unsigned": {}
6961+ }
6962+ },
6963+ "@alice_1642:hs1": {
6964+ "ALICEDEVICE1642": {
6965+ "algorithms": [
6966+ "m.olm.v1.curve25519-aes-sha2",
6967+ "m.megolm.v1.aes-sha2"
6968+ ],
6969+ "device_id": "ALICEDEVICE1642",
6970+ "keys": {
6971+ "curve25519:ALICEDEVICE1642": "ooCgF2UrKEvIbZowDpIWVgfqyaiP/8u32xsXa9ce+1Y",
6972+ "ed25519:ALICEDEVICE1642": "lAoAPKatrYT3MUBJejRMtQhGv/Pat4SMCw6t1sqMKp0"
6973+ },
6974+ "signatures": {
6975+ "@alice_1642:hs1": {
6976+ "ed25519:ALICEDEVICE1642": "UYTEtJkQnjEooPyz0R2lbswkQuPXyK3DNsT+pNKhDTg1l6JAjYpAgXtc7eOoAylgzPrMvTALr7goAIbSxg1cAQ"
6977+ }
6978+ },
6979+ "user_id": "@alice_1642:hs1",
6980+ "unsigned": {}
6981+ }
6982+ },
6983+ "@alice_1643:hs1": {
6984+ "ALICEDEVICE1643": {
6985+ "algorithms": [
6986+ "m.olm.v1.curve25519-aes-sha2",
6987+ "m.megolm.v1.aes-sha2"
6988+ ],
6989+ "device_id": "ALICEDEVICE1643",
6990+ "keys": {
6991+ "curve25519:ALICEDEVICE1643": "Mr7y9hQLRgtHBnVgejlfeh0lPcWeTa27kgTu+hBbRFQ",
6992+ "ed25519:ALICEDEVICE1643": "XxlTr4QVKMWMATbSzqZq8LHyxoyEwyx6kPKmtkfnJUE"
6993+ },
6994+ "signatures": {
6995+ "@alice_1643:hs1": {
6996+ "ed25519:ALICEDEVICE1643": "XydMZm+JQDBJbrde2WVZnPk6pnB41EjtFE4P3Uqea1KaTljKt1fhsfHMXNxFj+XAirot8cZLMS9RP5JK27WGCA"
6997+ }
6998+ },
6999+ "user_id": "@alice_1643:hs1",
7000+ "unsigned": {}
7001+ }
7002+ },
7003+ "@alice_164:hs1": {
7004+ "ALICEDEVICE164": {
7005+ "algorithms": [
7006+ "m.olm.v1.curve25519-aes-sha2",
7007+ "m.megolm.v1.aes-sha2"
7008+ ],
7009+ "device_id": "ALICEDEVICE164",
7010+ "keys": {
7011+ "curve25519:ALICEDEVICE164": "CiyCLLRWKFCZXXXQjMVOhF7idmaK7NbOmAOBYK7FwS0",
7012+ "ed25519:ALICEDEVICE164": "AOZ8tnycdxDAUeJFwj2CIGaibMmrjUpVS3jM/Usui7o"
7013+ },
7014+ "signatures": {
7015+ "@alice_164:hs1": {
7016+ "ed25519:ALICEDEVICE164": "xPA021/51awg2hhSFIxyw27isaZRfTb0QYsXg6rSrPF8N81zo7VqtcHHK/2A+Vqr79peqrrNIfcaZ/WRhO8WDA"
7017+ }
7018+ },
7019+ "user_id": "@alice_164:hs1",
7020+ "unsigned": {}
7021+ }
7022+ },
7023+ "@alice_1652:hs1": {
7024+ "ALICEDEVICE1652": {
7025+ "algorithms": [
7026+ "m.olm.v1.curve25519-aes-sha2",
7027+ "m.megolm.v1.aes-sha2"
7028+ ],
7029+ "device_id": "ALICEDEVICE1652",
7030+ "keys": {
7031+ "curve25519:ALICEDEVICE1652": "nXUhNDGtj+rjbl1C8izX90F/PnYPZh47bcjN4DZZhhs",
7032+ "ed25519:ALICEDEVICE1652": "hqyBGu3wmrzWzJY+HPRQgVkhUOPpXUP+R+QcptWrGEc"
7033+ },
7034+ "signatures": {
7035+ "@alice_1652:hs1": {
7036+ "ed25519:ALICEDEVICE1652": "oG/JtRwkPqMgftsrbJSY5QYt+ogreKtAXkfyF0969It0E97t11t8oO/wKZzpYDX2kKcIJNusE+S3Oyt5EsVIDw"
7037+ }
7038+ },
7039+ "user_id": "@alice_1652:hs1",
7040+ "unsigned": {}
7041+ }
7042+ },
7043+ "@alice_1658:hs1": {
7044+ "ALICEDEVICE1658": {
7045+ "algorithms": [
7046+ "m.olm.v1.curve25519-aes-sha2",
7047+ "m.megolm.v1.aes-sha2"
7048+ ],
7049+ "device_id": "ALICEDEVICE1658",
7050+ "keys": {
7051+ "curve25519:ALICEDEVICE1658": "1gRuaS0MQO01JyWV9ipgdqiNbdZK15w5g5vYXCbbTl4",
7052+ "ed25519:ALICEDEVICE1658": "i8/ITb1nZgMtUBK2i2tYPk/AA0XZoAP4jb6ZTHsrC1w"
7053+ },
7054+ "signatures": {
7055+ "@alice_1658:hs1": {
7056+ "ed25519:ALICEDEVICE1658": "KNlT/JOCka/zx5hYC5HHJcS3IEz1Ikg4+4FiYOu16K2KUHtx8GfZJywUccxQbwfD2WC1EDK+tnbwroZpjKf+AQ"
7057+ }
7058+ },
7059+ "user_id": "@alice_1658:hs1",
7060+ "unsigned": {}
7061+ }
7062+ },
7063+ "@alice_1660:hs1": {
7064+ "ALICEDEVICE1660": {
7065+ "algorithms": [
7066+ "m.olm.v1.curve25519-aes-sha2",
7067+ "m.megolm.v1.aes-sha2"
7068+ ],
7069+ "device_id": "ALICEDEVICE1660",
7070+ "keys": {
7071+ "curve25519:ALICEDEVICE1660": "y8pUCtxsTJBZLZU/ARKd6at40EOC+uLZd6cBnAJF8SI",
7072+ "ed25519:ALICEDEVICE1660": "TEnnZM3IGSK+QziziMKTYRqwg2da1UXLF+LUlWrila4"
7073+ },
7074+ "signatures": {
7075+ "@alice_1660:hs1": {
7076+ "ed25519:ALICEDEVICE1660": "egVWMzzFE7ZTXNA6zLQ3M3pZCzTf6mgwrXwjUTOyF+RpVNEHUP6Onh410Im3mUU8mGSwxHydZib9OQAzHXCPBw"
7077+ }
7078+ },
7079+ "user_id": "@alice_1660:hs1",
7080+ "unsigned": {}
7081+ }
7082+ },
7083+ "@alice_1667:hs1": {
7084+ "ALICEDEVICE1667": {
7085+ "algorithms": [
7086+ "m.olm.v1.curve25519-aes-sha2",
7087+ "m.megolm.v1.aes-sha2"
7088+ ],
7089+ "device_id": "ALICEDEVICE1667",
7090+ "keys": {
7091+ "curve25519:ALICEDEVICE1667": "J/c1Z7wiVHB/BD1I5Jyr+/TcbMI6HGqb86cPULOOWxw",
7092+ "ed25519:ALICEDEVICE1667": "ctO8sX7CJdfyYoDF9SEfqMwTlg8GbZ2qGNhJ/WS/o3M"
7093+ },
7094+ "signatures": {
7095+ "@alice_1667:hs1": {
7096+ "ed25519:ALICEDEVICE1667": "KndqPMgkliUTYf8J1514aiPrjcWPwPUCf+VvnqjHSdKS698Qe4USMoplAWFq/aIVR53XK+8Zw3G9mNTXF77qCA"
7097+ }
7098+ },
7099+ "user_id": "@alice_1667:hs1",
7100+ "unsigned": {}
7101+ }
7102+ },
7103+ "@alice_1677:hs1": {
7104+ "ALICEDEVICE1677": {
7105+ "algorithms": [
7106+ "m.olm.v1.curve25519-aes-sha2",
7107+ "m.megolm.v1.aes-sha2"
7108+ ],
7109+ "device_id": "ALICEDEVICE1677",
7110+ "keys": {
7111+ "curve25519:ALICEDEVICE1677": "NCo9OP6NjDRuUQAZ3hjWUvaBUu2+VOWRdWlMEYG6vRM",
7112+ "ed25519:ALICEDEVICE1677": "OQUs9sOplQVaVtrsfXD3CAzSlpvIJCNoLFdQXhkNfZI"
7113+ },
7114+ "signatures": {
7115+ "@alice_1677:hs1": {
7116+ "ed25519:ALICEDEVICE1677": "Af5O+Zv0IpjWk0iqUTgYTeSiJFzmaAlVEsy5WMXX9Eg5Xb8EtCem7bcNpI8r8J25STMIm8PeTFmQm96S+ds5BA"
7117+ }
7118+ },
7119+ "user_id": "@alice_1677:hs1",
7120+ "unsigned": {}
7121+ }
7122+ },
7123+ "@alice_1686:hs1": {
7124+ "ALICEDEVICE1686": {
7125+ "algorithms": [
7126+ "m.olm.v1.curve25519-aes-sha2",
7127+ "m.megolm.v1.aes-sha2"
7128+ ],
7129+ "device_id": "ALICEDEVICE1686",
7130+ "keys": {
7131+ "curve25519:ALICEDEVICE1686": "uhVbcZpfyDFrEXgvC64qtbfWHz+Ujq9kw3zvtvM66mc",
7132+ "ed25519:ALICEDEVICE1686": "kVjsGwH1bit2ffRoFHUi0F0xIUWpAc2g/NYkeoU6YVQ"
7133+ },
7134+ "signatures": {
7135+ "@alice_1686:hs1": {
7136+ "ed25519:ALICEDEVICE1686": "StNpEJ4Un7dg/mmff6Z9Etc9AJQ8nJlykXy65p/iPxLnn5mIp9I2IhA4dO0ePwhWee+hLaZb7ZbnKfU0GA1sBA"
7137+ }
7138+ },
7139+ "user_id": "@alice_1686:hs1",
7140+ "unsigned": {}
7141+ }
7142+ },
7143+ "@alice_1688:hs1": {
7144+ "ALICEDEVICE1688": {
7145+ "algorithms": [
7146+ "m.olm.v1.curve25519-aes-sha2",
7147+ "m.megolm.v1.aes-sha2"
7148+ ],
7149+ "device_id": "ALICEDEVICE1688",
7150+ "keys": {
7151+ "curve25519:ALICEDEVICE1688": "BgfalxguiirDWgDfv17L8o7owLyLshv8ML8XkXHpcFc",
7152+ "ed25519:ALICEDEVICE1688": "b7a0sqxZo5sPh+e3yDo7mPeZkGsSKuc/UfLNzzxvNPw"
7153+ },
7154+ "signatures": {
7155+ "@alice_1688:hs1": {
7156+ "ed25519:ALICEDEVICE1688": "DQRQH7hHBrWuirXNsqEJRxbsnkMqZMRqAErQdrSmMJoRKAPsCMThWk58ikf+BEwZz3MsnZiFssb0emK8ZPuNCA"
7157+ }
7158+ },
7159+ "user_id": "@alice_1688:hs1",
7160+ "unsigned": {}
7161+ }
7162+ },
7163+ "@alice_1697:hs1": {
7164+ "ALICEDEVICE1697": {
7165+ "algorithms": [
7166+ "m.olm.v1.curve25519-aes-sha2",
7167+ "m.megolm.v1.aes-sha2"
7168+ ],
7169+ "device_id": "ALICEDEVICE1697",
7170+ "keys": {
7171+ "curve25519:ALICEDEVICE1697": "nWR1fN87z9ht76PmNsYexj6eK7YhVR3k4nDdsPJqshc",
7172+ "ed25519:ALICEDEVICE1697": "s5lzLpbTmRCgCEOa9sm95jV63WchXjhtXu3SRgK79RE"
7173+ },
7174+ "signatures": {
7175+ "@alice_1697:hs1": {
7176+ "ed25519:ALICEDEVICE1697": "mHY1waGvk/xWGe47/8Zo1sqFy5YGMmioLLPQR8ktmQSD3oTPDUSM7yCNJrHDhHDR4bTwAUQuKpnUPrPrEVOECA"
7177+ }
7178+ },
7179+ "user_id": "@alice_1697:hs1",
7180+ "unsigned": {}
7181+ }
7182+ },
7183+ "@alice_1710:hs1": {
7184+ "ALICEDEVICE1710": {
7185+ "algorithms": [
7186+ "m.olm.v1.curve25519-aes-sha2",
7187+ "m.megolm.v1.aes-sha2"
7188+ ],
7189+ "device_id": "ALICEDEVICE1710",
7190+ "keys": {
7191+ "curve25519:ALICEDEVICE1710": "r/CKod68YACXYSafmS1dBKkYVKaT5VNpLqzLkiBlKQE",
7192+ "ed25519:ALICEDEVICE1710": "YLqvAENRYFSWOmri0efoj2Uf9aUCf8ku4kcdI3Ztqxk"
7193+ },
7194+ "signatures": {
7195+ "@alice_1710:hs1": {
7196+ "ed25519:ALICEDEVICE1710": "PlR8RIQTcFob7E3O7JmVgyd4sA+Em01s8CbyoMyDvgDEE/r0iQWTpMnr9fohJ/r7fvuX3m4q7hpNmYAHl8IEAw"
7197+ }
7198+ },
7199+ "user_id": "@alice_1710:hs1",
7200+ "unsigned": {}
7201+ }
7202+ },
7203+ "@alice_1719:hs1": {
7204+ "ALICEDEVICE1719": {
7205+ "algorithms": [
7206+ "m.olm.v1.curve25519-aes-sha2",
7207+ "m.megolm.v1.aes-sha2"
7208+ ],
7209+ "device_id": "ALICEDEVICE1719",
7210+ "keys": {
7211+ "curve25519:ALICEDEVICE1719": "7S8VAl35uyTv9rXG3z03jqONHuK6CDmi9wYAWk/1m3A",
7212+ "ed25519:ALICEDEVICE1719": "7HjoxQA2gPCKO5jBPZapPgD2/oxTx0VVOpSsfRDJYPc"
7213+ },
7214+ "signatures": {
7215+ "@alice_1719:hs1": {
7216+ "ed25519:ALICEDEVICE1719": "YnDBoZGsYG8X9zVd4C9aua23bIdyp3JbOCWdlxqlEo09/nuoPoy42e7yf9A9pbqmpeFX7pfJAxPYHryM2cPRCA"
7217+ }
7218+ },
7219+ "user_id": "@alice_1719:hs1",
7220+ "unsigned": {}
7221+ }
7222+ },
7223+ "@alice_1720:hs1": {
7224+ "ALICEDEVICE1720": {
7225+ "algorithms": [
7226+ "m.olm.v1.curve25519-aes-sha2",
7227+ "m.megolm.v1.aes-sha2"
7228+ ],
7229+ "device_id": "ALICEDEVICE1720",
7230+ "keys": {
7231+ "curve25519:ALICEDEVICE1720": "mhU3/MbiNHAPXIgWDrYrJ8vSA5ou03RGnexFpBqKLng",
7232+ "ed25519:ALICEDEVICE1720": "2COFkcdCoP/F/3Lb7w6JsZ+WMgru0hM5EHevNSeYITc"
7233+ },
7234+ "signatures": {
7235+ "@alice_1720:hs1": {
7236+ "ed25519:ALICEDEVICE1720": "jMy53cmIimwv14O38CNZR67LO3LnZFdg78lqHFQspsgWNrMX/T+4pzlXfD1RoCakDNNQkL0W14r4/7h59vykAg"
7237+ }
7238+ },
7239+ "user_id": "@alice_1720:hs1",
7240+ "unsigned": {}
7241+ }
7242+ },
7243+ "@alice_1729:hs1": {
7244+ "ALICEDEVICE1729": {
7245+ "algorithms": [
7246+ "m.olm.v1.curve25519-aes-sha2",
7247+ "m.megolm.v1.aes-sha2"
7248+ ],
7249+ "device_id": "ALICEDEVICE1729",
7250+ "keys": {
7251+ "curve25519:ALICEDEVICE1729": "RRGfnFniMFdZe3C5mR52OTX+vTP+WxMM4wcSe3nCbk8",
7252+ "ed25519:ALICEDEVICE1729": "Tt9lwIU3rJx7z3+G2ahhDQkJ8qseEpJQAKhtVlVh0s8"
7253+ },
7254+ "signatures": {
7255+ "@alice_1729:hs1": {
7256+ "ed25519:ALICEDEVICE1729": "hlFgJmMzM4cgPhmUKlyxxp+NtGpeak6i0cbxbnqrQFdK7n6blfICKAJbo+fbWA00miSF6nIbSjQxCUNakroLAg"
7257+ }
7258+ },
7259+ "user_id": "@alice_1729:hs1",
7260+ "unsigned": {}
7261+ }
7262+ },
7263+ "@alice_1737:hs1": {
7264+ "ALICEDEVICE1737": {
7265+ "algorithms": [
7266+ "m.olm.v1.curve25519-aes-sha2",
7267+ "m.megolm.v1.aes-sha2"
7268+ ],
7269+ "device_id": "ALICEDEVICE1737",
7270+ "keys": {
7271+ "curve25519:ALICEDEVICE1737": "vCamEGeigxWk9PxDaZYfjmrrzQ9PK+CzuXPt+d1Q9xI",
7272+ "ed25519:ALICEDEVICE1737": "x6355ppm7qr1KM7JPcPpyDMKcWJwKgMIO+e5Y38XUFk"
7273+ },
7274+ "signatures": {
7275+ "@alice_1737:hs1": {
7276+ "ed25519:ALICEDEVICE1737": "QkHbhwNVorsz1/zP5gKtab8/sTeb/rO5pnwJqyc+IRjKYJH+ZTk8SHlApU0cwvGsKPqRwwcDKm2Bj388OaEqAw"
7277+ }
7278+ },
7279+ "user_id": "@alice_1737:hs1",
7280+ "unsigned": {}
7281+ }
7282+ },
7283+ "@alice_1752:hs1": {
7284+ "ALICEDEVICE1752": {
7285+ "algorithms": [
7286+ "m.olm.v1.curve25519-aes-sha2",
7287+ "m.megolm.v1.aes-sha2"
7288+ ],
7289+ "device_id": "ALICEDEVICE1752",
7290+ "keys": {
7291+ "curve25519:ALICEDEVICE1752": "I7YyF66F79GLk1lh8RkZzJetehoV0uEM2DyoLWNas3w",
7292+ "ed25519:ALICEDEVICE1752": "jR3+ZmKoembvLmMfAUJloUS8m/RYIYFcmCqb/9mNwnQ"
7293+ },
7294+ "signatures": {
7295+ "@alice_1752:hs1": {
7296+ "ed25519:ALICEDEVICE1752": "5KSs/YGYgUJDeuyKzJUorYgg3axjl8NBgCjrFIEX4n+kLY7DPHjHLa4nHYUILSu77e0inRa1nVx3Jt3B0FTJDg"
7297+ }
7298+ },
7299+ "user_id": "@alice_1752:hs1",
7300+ "unsigned": {}
7301+ }
7302+ },
7303+ "@alice_1770:hs1": {
7304+ "ALICEDEVICE1770": {
7305+ "algorithms": [
7306+ "m.olm.v1.curve25519-aes-sha2",
7307+ "m.megolm.v1.aes-sha2"
7308+ ],
7309+ "device_id": "ALICEDEVICE1770",
7310+ "keys": {
7311+ "curve25519:ALICEDEVICE1770": "/E3yZnTzsvjMSeWfpCtBP74H1M2gEQlf7X+dMlB+wDI",
7312+ "ed25519:ALICEDEVICE1770": "+242sWkMgoU/P5UFxfq2dmqILgZJfEYPDrpydNl+R0o"
7313+ },
7314+ "signatures": {
7315+ "@alice_1770:hs1": {
7316+ "ed25519:ALICEDEVICE1770": "/cOw2U+lP41esRUTcC/RvZekVps14RL9a1mpILY+tGhG/mxH+WlnefjTfsLVH7bDzK7rhbbMe4blb9LkwJ4WBA"
7317+ }
7318+ },
7319+ "user_id": "@alice_1770:hs1",
7320+ "unsigned": {}
7321+ }
7322+ },
7323+ "@alice_1774:hs1": {
7324+ "ALICEDEVICE1774": {
7325+ "algorithms": [
7326+ "m.olm.v1.curve25519-aes-sha2",
7327+ "m.megolm.v1.aes-sha2"
7328+ ],
7329+ "device_id": "ALICEDEVICE1774",
7330+ "keys": {
7331+ "curve25519:ALICEDEVICE1774": "K11tLwuV6UtkFqexYoknBRYJRT4odWoU4DRUMly4cEI",
7332+ "ed25519:ALICEDEVICE1774": "Gk48oIWQ1TBJP8YbmVb7c8NiQqpmNNYBdN342l3d4G0"
7333+ },
7334+ "signatures": {
7335+ "@alice_1774:hs1": {
7336+ "ed25519:ALICEDEVICE1774": "+M5hBZuNROtqmu0Oajn+sMgPxam3/5dasl8XAhxcDeKmBks5q0GEmPvZCRJJxeD/fMHFvWJWT9kS2mCbne8bBg"
7337+ }
7338+ },
7339+ "user_id": "@alice_1774:hs1",
7340+ "unsigned": {}
7341+ }
7342+ },
7343+ "@alice_1776:hs1": {
7344+ "ALICEDEVICE1776": {
7345+ "algorithms": [
7346+ "m.olm.v1.curve25519-aes-sha2",
7347+ "m.megolm.v1.aes-sha2"
7348+ ],
7349+ "device_id": "ALICEDEVICE1776",
7350+ "keys": {
7351+ "curve25519:ALICEDEVICE1776": "kA1dJro1TcMsxvCHluLw6rXCJmErwt93zjqKw0TF8B8",
7352+ "ed25519:ALICEDEVICE1776": "Ach04mKuaayLBzoOTb1ABsN0w38e27di7Ft0SupzFBE"
7353+ },
7354+ "signatures": {
7355+ "@alice_1776:hs1": {
7356+ "ed25519:ALICEDEVICE1776": "3rS6MbVw0sc3cx0u11MwjFA9V0BS2K1OxNXOR/35kdBYWtOSJYprkHCRL9z/lWxhe7VmaPzMNcDN2ZDZiuj1Dg"
7357+ }
7358+ },
7359+ "user_id": "@alice_1776:hs1",
7360+ "unsigned": {}
7361+ }
7362+ },
7363+ "@alice_1779:hs1": {
7364+ "ALICEDEVICE1779": {
7365+ "algorithms": [
7366+ "m.olm.v1.curve25519-aes-sha2",
7367+ "m.megolm.v1.aes-sha2"
7368+ ],
7369+ "device_id": "ALICEDEVICE1779",
7370+ "keys": {
7371+ "curve25519:ALICEDEVICE1779": "kgZwVbQts0VUPo8F+jFL5rPchPVDcKs6GbhKGY8Arns",
7372+ "ed25519:ALICEDEVICE1779": "HE5S3GivmJj+HuPudw0iT26hrIDtjND1P/dpJ4VSFoA"
7373+ },
7374+ "signatures": {
7375+ "@alice_1779:hs1": {
7376+ "ed25519:ALICEDEVICE1779": "mGA1ZBpEUFJej8g1M4QyY9LjACtYEcNDkthj5P/XkooIkdtr5o4B9YGnoi80n/Hmr4F7pbYQqRIkdzSK63e+DA"
7377+ }
7378+ },
7379+ "user_id": "@alice_1779:hs1",
7380+ "unsigned": {}
7381+ }
7382+ },
7383+ "@alice_1807:hs1": {
7384+ "ALICEDEVICE1807": {
7385+ "algorithms": [
7386+ "m.olm.v1.curve25519-aes-sha2",
7387+ "m.megolm.v1.aes-sha2"
7388+ ],
7389+ "device_id": "ALICEDEVICE1807",
7390+ "keys": {
7391+ "curve25519:ALICEDEVICE1807": "q6IYD5cUlf2LahcqRqqgAaXlwGF9WW6CrZpr/OlHSXE",
7392+ "ed25519:ALICEDEVICE1807": "8caJv7xJcjqPhoMprs5xhMZIRnfxMNpCkKOdcDY243s"
7393+ },
7394+ "signatures": {
7395+ "@alice_1807:hs1": {
7396+ "ed25519:ALICEDEVICE1807": "KIgVisahpo75X0clFG1mbUAJWz722HGjONDdgceLVHNyoJWdJgMjZMB9Fx+OiBxSFzEtkg1vGoM+wqUeBuZpBQ"
7397+ }
7398+ },
7399+ "user_id": "@alice_1807:hs1",
7400+ "unsigned": {}
7401+ }
7402+ },
7403+ "@alice_1814:hs1": {
7404+ "ALICEDEVICE1814": {
7405+ "algorithms": [
7406+ "m.olm.v1.curve25519-aes-sha2",
7407+ "m.megolm.v1.aes-sha2"
7408+ ],
7409+ "device_id": "ALICEDEVICE1814",
7410+ "keys": {
7411+ "curve25519:ALICEDEVICE1814": "iG6liAQHyKPpzCwrA4A9oZw8xRKL2mQkswD+IF0ozTc",
7412+ "ed25519:ALICEDEVICE1814": "02kFl9P02NYEalKWtm4zg/3amepOWlm90gM09Wq7gCE"
7413+ },
7414+ "signatures": {
7415+ "@alice_1814:hs1": {
7416+ "ed25519:ALICEDEVICE1814": "SK+S6S4ZqMgNjXjVJcY90lm00k8sEDogRwAPLMPlcAvlsua8S66Lm97dQYRxcdq3QaFkTzX8r4oKOO8KnpbpBw"
7417+ }
7418+ },
7419+ "user_id": "@alice_1814:hs1",
7420+ "unsigned": {}
7421+ }
7422+ },
7423+ "@alice_181:hs1": {
7424+ "ALICEDEVICE181": {
7425+ "algorithms": [
7426+ "m.olm.v1.curve25519-aes-sha2",
7427+ "m.megolm.v1.aes-sha2"
7428+ ],
7429+ "device_id": "ALICEDEVICE181",
7430+ "keys": {
7431+ "curve25519:ALICEDEVICE181": "Nvhg/gZCBjJXn0PGOTsGo7ZGfiFhybKv0NkS1BcIHyk",
7432+ "ed25519:ALICEDEVICE181": "jLRo3h7CEewBLuV81v4xdoxR4lZmm0bEqBdTUSNZThA"
7433+ },
7434+ "signatures": {
7435+ "@alice_181:hs1": {
7436+ "ed25519:ALICEDEVICE181": "LMmuGylAqmR2Ax0y/NXklSZub01b0UfFugDnqZqNVB7PkBf0l1c9Qiu9Dk0FYaW0b7oLP5YqTKNjEj8A+NcKBw"
7437+ }
7438+ },
7439+ "user_id": "@alice_181:hs1",
7440+ "unsigned": {}
7441+ }
7442+ },
7443+ "@alice_1826:hs1": {
7444+ "ALICEDEVICE1826": {
7445+ "algorithms": [
7446+ "m.olm.v1.curve25519-aes-sha2",
7447+ "m.megolm.v1.aes-sha2"
7448+ ],
7449+ "device_id": "ALICEDEVICE1826",
7450+ "keys": {
7451+ "curve25519:ALICEDEVICE1826": "/0R29QLOI2pZPzyyMq+R3bAbe86rUwhMdszaPYJr2Dk",
7452+ "ed25519:ALICEDEVICE1826": "uPvGQrcILY8+vFYtclKwz/LE5JDYnZHfSZ9z1GjBqpo"
7453+ },
7454+ "signatures": {
7455+ "@alice_1826:hs1": {
7456+ "ed25519:ALICEDEVICE1826": "/H5ny8d43GCPBPrs9SVhrZmbxiBuehPyt2V0VfVYptQrNY/wUYS17rsDodRM2f2hTxQ6DVqsX9iLyz9FW1VxDw"
7457+ }
7458+ },
7459+ "user_id": "@alice_1826:hs1",
7460+ "unsigned": {}
7461+ }
7462+ },
7463+ "@alice_1827:hs1": {
7464+ "ALICEDEVICE1827": {
7465+ "algorithms": [
7466+ "m.olm.v1.curve25519-aes-sha2",
7467+ "m.megolm.v1.aes-sha2"
7468+ ],
7469+ "device_id": "ALICEDEVICE1827",
7470+ "keys": {
7471+ "curve25519:ALICEDEVICE1827": "wblTWD2lCVD/18rx02sfg0txb0J3I0Jyob8HnkAZvGQ",
7472+ "ed25519:ALICEDEVICE1827": "eUGqThBY7OFMl6ViXKK8kHTQH0K1w/Pqh4sP/UoIURg"
7473+ },
7474+ "signatures": {
7475+ "@alice_1827:hs1": {
7476+ "ed25519:ALICEDEVICE1827": "AR6O8kbWbTK9JAiDQlrkQcin6LjkBOK6tFfZrlhlvM8QBhc82IIRU0y7SQfDnmEjsvSwJny0vSjcmnPFMMyHAQ"
7477+ }
7478+ },
7479+ "user_id": "@alice_1827:hs1",
7480+ "unsigned": {}
7481+ }
7482+ },
7483+ "@alice_1838:hs1": {
7484+ "ALICEDEVICE1838": {
7485+ "algorithms": [
7486+ "m.olm.v1.curve25519-aes-sha2",
7487+ "m.megolm.v1.aes-sha2"
7488+ ],
7489+ "device_id": "ALICEDEVICE1838",
7490+ "keys": {
7491+ "curve25519:ALICEDEVICE1838": "L2IqP2/KrVpyclypw/F3XjFeDk/hP0IBMQCqtzNjKCs",
7492+ "ed25519:ALICEDEVICE1838": "O/4R8ltK4ek1QjDka8HaGXTUA6A45NlSc8DoUPhRKzY"
7493+ },
7494+ "signatures": {
7495+ "@alice_1838:hs1": {
7496+ "ed25519:ALICEDEVICE1838": "NAKBw2FdDoBjnX+EBppF8brr6drq2RFtYgLid+pum1qyiKl+mEpSCrKE6eG0s8VuKuNIfQ7FIFhpEpoWtaQZCg"
7497+ }
7498+ },
7499+ "user_id": "@alice_1838:hs1",
7500+ "unsigned": {}
7501+ }
7502+ },
7503+ "@alice_1840:hs1": {
7504+ "ALICEDEVICE1840": {
7505+ "algorithms": [
7506+ "m.olm.v1.curve25519-aes-sha2",
7507+ "m.megolm.v1.aes-sha2"
7508+ ],
7509+ "device_id": "ALICEDEVICE1840",
7510+ "keys": {
7511+ "curve25519:ALICEDEVICE1840": "eiAI41HBt9ldIq1bkrEnPIn+c8z4Vb0XxvEDbdH4sz4",
7512+ "ed25519:ALICEDEVICE1840": "VLV7CidlDFeVdpjRNsanCFowmMEnVd32hLaWXzFyIlE"
7513+ },
7514+ "signatures": {
7515+ "@alice_1840:hs1": {
7516+ "ed25519:ALICEDEVICE1840": "j8ddvZ5h0oNB6qarROJPfYz2XkOKUdPB3UkyQFbXxEokqC1ErpiJfhqGytM11uKRCHyXCCvdSk4DjycDbAVSAA"
7517+ }
7518+ },
7519+ "user_id": "@alice_1840:hs1",
7520+ "unsigned": {}
7521+ }
7522+ },
7523+ "@alice_1848:hs1": {
7524+ "ALICEDEVICE1848": {
7525+ "algorithms": [
7526+ "m.olm.v1.curve25519-aes-sha2",
7527+ "m.megolm.v1.aes-sha2"
7528+ ],
7529+ "device_id": "ALICEDEVICE1848",
7530+ "keys": {
7531+ "curve25519:ALICEDEVICE1848": "Jy/556AfosOnDaFxWq1YhFxXwbbc4ZFx4vjK7ABTgVo",
7532+ "ed25519:ALICEDEVICE1848": "od0sBcRnLKdRxzBeBmlTbvjJVkOqsiatNewOEtcnmqc"
7533+ },
7534+ "signatures": {
7535+ "@alice_1848:hs1": {
7536+ "ed25519:ALICEDEVICE1848": "WMWqq1O7brMuWg6/ED1nkEf9ncF+vsmz7CHyn+OyOuvCzDy2zfrmtIxuFVfR+OoycZzRgqcURTzHNkiH+fKdBQ"
7537+ }
7538+ },
7539+ "user_id": "@alice_1848:hs1",
7540+ "unsigned": {}
7541+ }
7542+ },
7543+ "@alice_184:hs1": {
7544+ "ALICEDEVICE184": {
7545+ "algorithms": [
7546+ "m.olm.v1.curve25519-aes-sha2",
7547+ "m.megolm.v1.aes-sha2"
7548+ ],
7549+ "device_id": "ALICEDEVICE184",
7550+ "keys": {
7551+ "curve25519:ALICEDEVICE184": "JVrNZ8wGn2zsev/Qsy+04UjDBVMycGqTQIwZ9uOgGGI",
7552+ "ed25519:ALICEDEVICE184": "LfjEsW3aqX9Tejzobt2FCFGi6SrMswdIPO62eQ7/+FU"
7553+ },
7554+ "signatures": {
7555+ "@alice_184:hs1": {
7556+ "ed25519:ALICEDEVICE184": "FCNBTRbI51OTe+vGrlANmxTApCsU4qCWW8gaxDGBUP57NJh7nUUHvh1M9iSnUfIRaRv6gWpNQ2vTMHYYSFV3Cg"
7557+ }
7558+ },
7559+ "user_id": "@alice_184:hs1",
7560+ "unsigned": {}
7561+ }
7562+ },
7563+ "@alice_1855:hs1": {
7564+ "ALICEDEVICE1855": {
7565+ "algorithms": [
7566+ "m.olm.v1.curve25519-aes-sha2",
7567+ "m.megolm.v1.aes-sha2"
7568+ ],
7569+ "device_id": "ALICEDEVICE1855",
7570+ "keys": {
7571+ "curve25519:ALICEDEVICE1855": "obHjvYpPY9AKl0HcZQxQchis7Jy/NKmZhq3LkQHDLXU",
7572+ "ed25519:ALICEDEVICE1855": "otpUi/QMVgCfJ5YjdAgVr9x6p993N5uK4cnreptjMZE"
7573+ },
7574+ "signatures": {
7575+ "@alice_1855:hs1": {
7576+ "ed25519:ALICEDEVICE1855": "CM2b8qdTLfB3x85985cNofy6jTlQPuaNqDh3yKY4/T7f9Qhc3NCJKEvZkQfOjwTmwXf4+JrgnWSZUnOAZgZ1Bg"
7577+ }
7578+ },
7579+ "user_id": "@alice_1855:hs1",
7580+ "unsigned": {}
7581+ }
7582+ },
7583+ "@alice_1857:hs1": {
7584+ "ALICEDEVICE1857": {
7585+ "algorithms": [
7586+ "m.olm.v1.curve25519-aes-sha2",
7587+ "m.megolm.v1.aes-sha2"
7588+ ],
7589+ "device_id": "ALICEDEVICE1857",
7590+ "keys": {
7591+ "curve25519:ALICEDEVICE1857": "YmC8tmkTRHrBgWGKtHUxgnI1aO1FhQzLh9RBKU7SJXU",
7592+ "ed25519:ALICEDEVICE1857": "2/rd4IkiLBx6Cq6ANKkrQvmFhpuxcdA7xbecxiv7B4M"
7593+ },
7594+ "signatures": {
7595+ "@alice_1857:hs1": {
7596+ "ed25519:ALICEDEVICE1857": "p9C2096gzHM8w42fy4V4FCxDfJS5tL/ugRM0ysg4D2ffVXx3H5PJkNqo41JvWS+RK2GzyEN8vBfN/ZpGAO1cBg"
7597+ }
7598+ },
7599+ "user_id": "@alice_1857:hs1",
7600+ "unsigned": {}
7601+ }
7602+ },
7603+ "@alice_1865:hs1": {
7604+ "ALICEDEVICE1865": {
7605+ "algorithms": [
7606+ "m.olm.v1.curve25519-aes-sha2",
7607+ "m.megolm.v1.aes-sha2"
7608+ ],
7609+ "device_id": "ALICEDEVICE1865",
7610+ "keys": {
7611+ "curve25519:ALICEDEVICE1865": "4i0sQ9K3BRkdC+vxdplHsM4vFsiFjOlTM8zSSs6LbTM",
7612+ "ed25519:ALICEDEVICE1865": "AeZhHpAM2mXR3bRbPoUk0Ho0vPdemdUtW5HzlvCGRAk"
7613+ },
7614+ "signatures": {
7615+ "@alice_1865:hs1": {
7616+ "ed25519:ALICEDEVICE1865": "TFPrG9daAkxpr7tukLnDGJcWbUsoZtlpt39uT+srezKKNnpGqlp8Fk7aTiJbN6MWcOROQHxElAUqqis+t3uxAQ"
7617+ }
7618+ },
7619+ "user_id": "@alice_1865:hs1",
7620+ "unsigned": {}
7621+ }
7622+ },
7623+ "@alice_1869:hs1": {
7624+ "ALICEDEVICE1869": {
7625+ "algorithms": [
7626+ "m.olm.v1.curve25519-aes-sha2",
7627+ "m.megolm.v1.aes-sha2"
7628+ ],
7629+ "device_id": "ALICEDEVICE1869",
7630+ "keys": {
7631+ "curve25519:ALICEDEVICE1869": "trNJUUmKX02nVqOldWz1dgpVpq1c34S89thiodNiw18",
7632+ "ed25519:ALICEDEVICE1869": "7eNZiAIUkujf2ekPsxO3uj6JyLt5L7dOeQSmGkzWXF4"
7633+ },
7634+ "signatures": {
7635+ "@alice_1869:hs1": {
7636+ "ed25519:ALICEDEVICE1869": "rcHOo5lJ+atqosOv1X6quTseBkURl7UIva2KyPlPkAp0Y1t7REYEXeriOQk/6pMgis6F3yNELWpD9q5xwF7sBg"
7637+ }
7638+ },
7639+ "user_id": "@alice_1869:hs1",
7640+ "unsigned": {}
7641+ }
7642+ },
7643+ "@alice_1871:hs1": {
7644+ "ALICEDEVICE1871": {
7645+ "algorithms": [
7646+ "m.olm.v1.curve25519-aes-sha2",
7647+ "m.megolm.v1.aes-sha2"
7648+ ],
7649+ "device_id": "ALICEDEVICE1871",
7650+ "keys": {
7651+ "curve25519:ALICEDEVICE1871": "qd69yA8sh/puQDJjcwH7wPNA0CQI0Pw7D82jgKsrams",
7652+ "ed25519:ALICEDEVICE1871": "nXwwmFR4Yf4n8xdjBnNJO2Uqi6Sptrz6moQooRDb7F0"
7653+ },
7654+ "signatures": {
7655+ "@alice_1871:hs1": {
7656+ "ed25519:ALICEDEVICE1871": "8Y5d6dJcW/SbHUnEfeqrmgmBm545KYitQuqh9dYrojX7ZqzkK++Lm3gU7M935nbmMJCJe4gyskntD4/UIFbcDw"
7657+ }
7658+ },
7659+ "user_id": "@alice_1871:hs1",
7660+ "unsigned": {}
7661+ }
7662+ },
7663+ "@alice_1875:hs1": {
7664+ "ALICEDEVICE1875": {
7665+ "algorithms": [
7666+ "m.olm.v1.curve25519-aes-sha2",
7667+ "m.megolm.v1.aes-sha2"
7668+ ],
7669+ "device_id": "ALICEDEVICE1875",
7670+ "keys": {
7671+ "curve25519:ALICEDEVICE1875": "EfCW856cD0UPwJYGEzX7kZHJJuimg1YfIEjYRBSPGGY",
7672+ "ed25519:ALICEDEVICE1875": "gNxDWvFLuR/4lfLgyWlKjssLASKfMWXaLtQqL8H/v+M"
7673+ },
7674+ "signatures": {
7675+ "@alice_1875:hs1": {
7676+ "ed25519:ALICEDEVICE1875": "1b9O3LSD2z5uhnFWHrJmQsurpl+ltbVuXCzV4fuT7b1e7akLTKmrPVo9dTwBG67xyTMzFEjnyBEd1AoJe+KECg"
7677+ }
7678+ },
7679+ "user_id": "@alice_1875:hs1",
7680+ "unsigned": {}
7681+ }
7682+ },
7683+ "@alice_1877:hs1": {
7684+ "ALICEDEVICE1877": {
7685+ "algorithms": [
7686+ "m.olm.v1.curve25519-aes-sha2",
7687+ "m.megolm.v1.aes-sha2"
7688+ ],
7689+ "device_id": "ALICEDEVICE1877",
7690+ "keys": {
7691+ "curve25519:ALICEDEVICE1877": "PPMtc9pQqNCSd8lzdBKISyCNgjLlrQz6Y4CXeqNL9go",
7692+ "ed25519:ALICEDEVICE1877": "ZghH3HS8hwoyipkMihVuAqlXzrsfQWLQzk35xDeLemI"
7693+ },
7694+ "signatures": {
7695+ "@alice_1877:hs1": {
7696+ "ed25519:ALICEDEVICE1877": "/u1fbPeNgWoLKxgSQZhBNSkLMZyHt5bMycZne8S4eolHwlDZRCIBfQ1PaBtRvO2kCujtYtVqc03pcnfwxhBNDA"
7697+ }
7698+ },
7699+ "user_id": "@alice_1877:hs1",
7700+ "unsigned": {}
7701+ }
7702+ },
7703+ "@alice_1880:hs1": {
7704+ "ALICEDEVICE1880": {
7705+ "algorithms": [
7706+ "m.olm.v1.curve25519-aes-sha2",
7707+ "m.megolm.v1.aes-sha2"
7708+ ],
7709+ "device_id": "ALICEDEVICE1880",
7710+ "keys": {
7711+ "curve25519:ALICEDEVICE1880": "NEcqGSw+/AcSyZXtXLmHVjuT9aXy+zVEVNOEibtR7mg",
7712+ "ed25519:ALICEDEVICE1880": "2vKfPW0P78e0G2PvX+L7sCO16YqHlIpWwQDTdwUWUQY"
7713+ },
7714+ "signatures": {
7715+ "@alice_1880:hs1": {
7716+ "ed25519:ALICEDEVICE1880": "2+ujY6AI9snyNRr/v6hYxkzDtQhi/X+8KiGxLUOWBwbnAxhT402BF8vgqcjGT3dfRsgzME3EZrBC+B9TijZKCg"
7717+ }
7718+ },
7719+ "user_id": "@alice_1880:hs1",
7720+ "unsigned": {}
7721+ }
7722+ },
7723+ "@alice_1884:hs1": {
7724+ "ALICEDEVICE1884": {
7725+ "algorithms": [
7726+ "m.olm.v1.curve25519-aes-sha2",
7727+ "m.megolm.v1.aes-sha2"
7728+ ],
7729+ "device_id": "ALICEDEVICE1884",
7730+ "keys": {
7731+ "curve25519:ALICEDEVICE1884": "t0d3CZHEzebIG1bE7QhSC2ZhOTxQOQ/HQ7KgWpWTskQ",
7732+ "ed25519:ALICEDEVICE1884": "rS8qJTUkLDYj7sbxSMh77/3sQSVBuZdi5vqna1RkLw8"
7733+ },
7734+ "signatures": {
7735+ "@alice_1884:hs1": {
7736+ "ed25519:ALICEDEVICE1884": "xrx4YuLRAHHevLp0yWnPVO2oKnK7MkBGZdV2on7/WrIStF+FbGF25j/oUOfbHetR/k8xwzEALRkDAHw4eDasBQ"
7737+ }
7738+ },
7739+ "user_id": "@alice_1884:hs1",
7740+ "unsigned": {}
7741+ }
7742+ },
7743+ "@alice_1886:hs1": {
7744+ "ALICEDEVICE1886": {
7745+ "algorithms": [
7746+ "m.olm.v1.curve25519-aes-sha2",
7747+ "m.megolm.v1.aes-sha2"
7748+ ],
7749+ "device_id": "ALICEDEVICE1886",
7750+ "keys": {
7751+ "curve25519:ALICEDEVICE1886": "Jgy4TNv1QIoZJBa+S+xd8MJJ5fIqo5sp//4keirC8wE",
7752+ "ed25519:ALICEDEVICE1886": "jLg1lhIaxDxIC2yfVyj+1HyM5m3p0sLh3Hp4qBAeUfk"
7753+ },
7754+ "signatures": {
7755+ "@alice_1886:hs1": {
7756+ "ed25519:ALICEDEVICE1886": "0gUpnxWcyFK+2d7CXjSq6RZ/C5fP3Z6l5BZYcf4MRIiu2D3JW9c+RMP5knG+1YVak2fWQP3aqtcrIfujQXeGBg"
7757+ }
7758+ },
7759+ "user_id": "@alice_1886:hs1",
7760+ "unsigned": {}
7761+ }
7762+ },
7763+ "@alice_1889:hs1": {
7764+ "ALICEDEVICE1889": {
7765+ "algorithms": [
7766+ "m.olm.v1.curve25519-aes-sha2",
7767+ "m.megolm.v1.aes-sha2"
7768+ ],
7769+ "device_id": "ALICEDEVICE1889",
7770+ "keys": {
7771+ "curve25519:ALICEDEVICE1889": "gj1P3Ox2ap8c6QnIys/LgbDOB++3gAwYyr7xpCT8Vw0",
7772+ "ed25519:ALICEDEVICE1889": "71BqJYif4G8q3qPsDFAOWhgSPqfWogWUSuRJStniNQg"
7773+ },
7774+ "signatures": {
7775+ "@alice_1889:hs1": {
7776+ "ed25519:ALICEDEVICE1889": "H98eTTE9SC2BLUNG3R6Wz5Gm7kyk1xF4a0V9yUFHFBy958JaHZ6H7yj71h2yVoK694kQEMcEsfi3lkthybxpDQ"
7777+ }
7778+ },
7779+ "user_id": "@alice_1889:hs1",
7780+ "unsigned": {}
7781+ }
7782+ },
7783+ "@alice_1891:hs1": {
7784+ "ALICEDEVICE1891": {
7785+ "algorithms": [
7786+ "m.olm.v1.curve25519-aes-sha2",
7787+ "m.megolm.v1.aes-sha2"
7788+ ],
7789+ "device_id": "ALICEDEVICE1891",
7790+ "keys": {
7791+ "curve25519:ALICEDEVICE1891": "52DQvssiRUimEE13c3xtfBkrLkOp7CqlnHBQSth5E2c",
7792+ "ed25519:ALICEDEVICE1891": "K+V5qNmW0htxGpMpdOnGXDuFL87oSZEsHbeIc0yHts8"
7793+ },
7794+ "signatures": {
7795+ "@alice_1891:hs1": {
7796+ "ed25519:ALICEDEVICE1891": "1KJiPhxPFA2O5RnpuofKY3iRWrjSkFdkymGfCHJlPnlwNPJ2ygeJB8ubVyCFZUDGsXYt/hcKzJmxHu6i+KSOAA"
7797+ }
7798+ },
7799+ "user_id": "@alice_1891:hs1",
7800+ "unsigned": {}
7801+ }
7802+ },
7803+ "@alice_1892:hs1": {
7804+ "ALICEDEVICE1892": {
7805+ "algorithms": [
7806+ "m.olm.v1.curve25519-aes-sha2",
7807+ "m.megolm.v1.aes-sha2"
7808+ ],
7809+ "device_id": "ALICEDEVICE1892",
7810+ "keys": {
7811+ "curve25519:ALICEDEVICE1892": "xi1Gp5q4ghi+Hd6vHJWkIg91xCKAYHrxoHS+nx0BR24",
7812+ "ed25519:ALICEDEVICE1892": "xtpeep3+pEjEUcevJEYhNonw/2JQ1VopnfjEZSmWmFE"
7813+ },
7814+ "signatures": {
7815+ "@alice_1892:hs1": {
7816+ "ed25519:ALICEDEVICE1892": "EDV2C3NVBC2awrcSczWZxy7BB3PRWzT3+fS/7K+9J5X8iLn3hrFAiJbFWY//SnxzPPpcu/j0jF2YOIFt0marAQ"
7817+ }
7818+ },
7819+ "user_id": "@alice_1892:hs1",
7820+ "unsigned": {}
7821+ }
7822+ },
7823+ "@alice_1905:hs1": {
7824+ "ALICEDEVICE1905": {
7825+ "algorithms": [
7826+ "m.olm.v1.curve25519-aes-sha2",
7827+ "m.megolm.v1.aes-sha2"
7828+ ],
7829+ "device_id": "ALICEDEVICE1905",
7830+ "keys": {
7831+ "curve25519:ALICEDEVICE1905": "F0Box06jKoqDk0vf1zXHWiLuoHoYy6E27am2Mu29HUY",
7832+ "ed25519:ALICEDEVICE1905": "z+jgbvwrbjNbBwYnj/YeE3dnoCZJ9eKgKlhU6AwPN6w"
7833+ },
7834+ "signatures": {
7835+ "@alice_1905:hs1": {
7836+ "ed25519:ALICEDEVICE1905": "8YGHJeOl1zS9PmI8q5nXpVow0mrRyXDPOJM7XOou6q4Q41JxQoGZCg+aPUst4VtzOgrpBK3vTGg/aa3E1LvKAQ"
7837+ }
7838+ },
7839+ "user_id": "@alice_1905:hs1",
7840+ "unsigned": {}
7841+ }
7842+ },
7843+ "@alice_1910:hs1": {
7844+ "ALICEDEVICE1910": {
7845+ "algorithms": [
7846+ "m.olm.v1.curve25519-aes-sha2",
7847+ "m.megolm.v1.aes-sha2"
7848+ ],
7849+ "device_id": "ALICEDEVICE1910",
7850+ "keys": {
7851+ "curve25519:ALICEDEVICE1910": "jXHiZpXxaJzqfPixPjZ2mlqT+aB3ttA2k2o2ud7kKAU",
7852+ "ed25519:ALICEDEVICE1910": "eT4uGdkVnT5xtRcpotI3gi3QcUtzGdjkKvO1itgBE9o"
7853+ },
7854+ "signatures": {
7855+ "@alice_1910:hs1": {
7856+ "ed25519:ALICEDEVICE1910": "+dviQDvLan9IHf0vMXW+PjgOVOyhVRPhhnx+MOg53G6menDyL5q3v3/2VcEshJ0yZDQvJbT1//EGkzvTR7CyBw"
7857+ }
7858+ },
7859+ "user_id": "@alice_1910:hs1",
7860+ "unsigned": {}
7861+ }
7862+ },
7863+ "@alice_1925:hs1": {
7864+ "ALICEDEVICE1925": {
7865+ "algorithms": [
7866+ "m.olm.v1.curve25519-aes-sha2",
7867+ "m.megolm.v1.aes-sha2"
7868+ ],
7869+ "device_id": "ALICEDEVICE1925",
7870+ "keys": {
7871+ "curve25519:ALICEDEVICE1925": "6aJ6AnGhikv6vbM781NeuRRf4r4MFKq8tdreUybEG3Q",
7872+ "ed25519:ALICEDEVICE1925": "DOsZ771FhICfuOkubHj2X27HoqGy8Q3gntQbQ1WtzHk"
7873+ },
7874+ "signatures": {
7875+ "@alice_1925:hs1": {
7876+ "ed25519:ALICEDEVICE1925": "bYsRP/GfEWROmUAPBrBclxkmKAzGlUgEVKfhz5rRleNPHRdKjS/wFYBCKBTEjU9eUQtcQ69i7QjjcRwszdbiAQ"
7877+ }
7878+ },
7879+ "user_id": "@alice_1925:hs1",
7880+ "unsigned": {}
7881+ }
7882+ },
7883+ "@alice_1927:hs1": {
7884+ "ALICEDEVICE1927": {
7885+ "algorithms": [
7886+ "m.olm.v1.curve25519-aes-sha2",
7887+ "m.megolm.v1.aes-sha2"
7888+ ],
7889+ "device_id": "ALICEDEVICE1927",
7890+ "keys": {
7891+ "curve25519:ALICEDEVICE1927": "vQOTgZB2BSrJvV7TMxCBPeisb41rxCGJtAmE/1rlF3U",
7892+ "ed25519:ALICEDEVICE1927": "/ng3Xoq4oSTPvy87kerVzSyAeWqk/eUwAH08n+7VacM"
7893+ },
7894+ "signatures": {
7895+ "@alice_1927:hs1": {
7896+ "ed25519:ALICEDEVICE1927": "OGICXjRFeMW7bLfDQdUezCRUXDNf8kFrIYT/sLz0Z96m8h6Vpwg2du11S7PRUXw+XXI4+WQvp8SUr6shCLOhDQ"
7897+ }
7898+ },
7899+ "user_id": "@alice_1927:hs1",
7900+ "unsigned": {}
7901+ }
7902+ },
7903+ "@alice_1938:hs1": {
7904+ "ALICEDEVICE1938": {
7905+ "algorithms": [
7906+ "m.olm.v1.curve25519-aes-sha2",
7907+ "m.megolm.v1.aes-sha2"
7908+ ],
7909+ "device_id": "ALICEDEVICE1938",
7910+ "keys": {
7911+ "curve25519:ALICEDEVICE1938": "EFvGlfx7u9+X7qgXBMTVxTmtEtzus99uJ7Y4QxrhcDA",
7912+ "ed25519:ALICEDEVICE1938": "yZTQlhEzY3whNFmEnSXdzzO1IeZicp8TKyHF39sBeY4"
7913+ },
7914+ "signatures": {
7915+ "@alice_1938:hs1": {
7916+ "ed25519:ALICEDEVICE1938": "PPlG98JBkBdSrxexFHf0zO59O4Tjd5EIvAxDVpIwSiO/R9YZ15GHJ+hi9lOi2ZVoAX2t1OIO5WjT+IjuLVdNDw"
7917+ }
7918+ },
7919+ "user_id": "@alice_1938:hs1",
7920+ "unsigned": {}
7921+ }
7922+ },
7923+ "@alice_1942:hs1": {
7924+ "ALICEDEVICE1942": {
7925+ "algorithms": [
7926+ "m.olm.v1.curve25519-aes-sha2",
7927+ "m.megolm.v1.aes-sha2"
7928+ ],
7929+ "device_id": "ALICEDEVICE1942",
7930+ "keys": {
7931+ "curve25519:ALICEDEVICE1942": "+KKtBc+ZROFfj1t6JLqFaJ6ZczZpKymv8V3oUr27310",
7932+ "ed25519:ALICEDEVICE1942": "2AQep/XzwqFnCNq6bO6c+N9r4KytwZUi03/qsflvNbY"
7933+ },
7934+ "signatures": {
7935+ "@alice_1942:hs1": {
7936+ "ed25519:ALICEDEVICE1942": "joppidL9hJOyT8IPmgPEwR5PG1s4K8FrVvrRDp8YJeUKVYJLBi8S4T7Me14V2hSETJkzxNxvGFo7/L+pS8V/Bw"
7937+ }
7938+ },
7939+ "user_id": "@alice_1942:hs1",
7940+ "unsigned": {}
7941+ }
7942+ },
7943+ "@alice_1945:hs1": {
7944+ "ALICEDEVICE1945": {
7945+ "algorithms": [
7946+ "m.olm.v1.curve25519-aes-sha2",
7947+ "m.megolm.v1.aes-sha2"
7948+ ],
7949+ "device_id": "ALICEDEVICE1945",
7950+ "keys": {
7951+ "curve25519:ALICEDEVICE1945": "rxYg1GlEBf8R0hMH+oXmXSryC50pMIdWdBxzf+pL4BQ",
7952+ "ed25519:ALICEDEVICE1945": "iLiccpiRJrFrZu8qW7AvwCRO2Kn0tLzqH4UZ4o1KPRI"
7953+ },
7954+ "signatures": {
7955+ "@alice_1945:hs1": {
7956+ "ed25519:ALICEDEVICE1945": "3DN+8f3A5Qnr1o2qT5ijtkRAa37bZuyIoJxssfM77qY19UaNGZiYCMaNIFMjrfRJE7vbiROJJ8Eco8sCCtL2CA"
7957+ }
7958+ },
7959+ "user_id": "@alice_1945:hs1",
7960+ "unsigned": {}
7961+ }
7962+ },
7963+ "@alice_1948:hs1": {
7964+ "ALICEDEVICE1948": {
7965+ "algorithms": [
7966+ "m.olm.v1.curve25519-aes-sha2",
7967+ "m.megolm.v1.aes-sha2"
7968+ ],
7969+ "device_id": "ALICEDEVICE1948",
7970+ "keys": {
7971+ "curve25519:ALICEDEVICE1948": "2MJSYmkhKeWEg78LH2g+NqB+4H5Vc+3ktp1aOmtyRVY",
7972+ "ed25519:ALICEDEVICE1948": "3Bcfp3D9SG0Oy7qpErfY1lcmvjqqgTZuAJgba/R1zJ8"
7973+ },
7974+ "signatures": {
7975+ "@alice_1948:hs1": {
7976+ "ed25519:ALICEDEVICE1948": "T0thPVBR760b383jPDrZbIUpo4jtPjt2R0gWbfY19lz/jpjmfhozvI57DglZ1qdzEj11frkUEaqSNI5wI0NdDg"
7977+ }
7978+ },
7979+ "user_id": "@alice_1948:hs1",
7980+ "unsigned": {}
7981+ }
7982+ },
7983+ "@alice_1953:hs1": {
7984+ "ALICEDEVICE1953": {
7985+ "algorithms": [
7986+ "m.olm.v1.curve25519-aes-sha2",
7987+ "m.megolm.v1.aes-sha2"
7988+ ],
7989+ "device_id": "ALICEDEVICE1953",
7990+ "keys": {
7991+ "curve25519:ALICEDEVICE1953": "kDRDCVZUXooqvRaq9ESvirzfxdxDLp3sx41kFYFko2U",
7992+ "ed25519:ALICEDEVICE1953": "VrcUM1anVg+izUB4VNOh1HddDVVu5PpuTVPenV6Kd8U"
7993+ },
7994+ "signatures": {
7995+ "@alice_1953:hs1": {
7996+ "ed25519:ALICEDEVICE1953": "4v/redvo9EkoUOpdbHVzHq1sNAnOoKNa2tVdLPrMJLFqrM5f2J2MLRGgkYhCsrczT+lJltg7T7EcXN8pOMJBBw"
7997+ }
7998+ },
7999+ "user_id": "@alice_1953:hs1",
8000+ "unsigned": {}
8001+ }
8002+ },
8003+ "@alice_1972:hs1": {
8004+ "ALICEDEVICE1972": {
8005+ "algorithms": [
8006+ "m.olm.v1.curve25519-aes-sha2",
8007+ "m.megolm.v1.aes-sha2"
8008+ ],
8009+ "device_id": "ALICEDEVICE1972",
8010+ "keys": {
8011+ "curve25519:ALICEDEVICE1972": "jBPoYwXxWRENsCcpV+6jR/jhUWQaHqk4HRIG7YW/4Go",
8012+ "ed25519:ALICEDEVICE1972": "NVY9GkiU4E1xWbnbBWDmEFNh5cD2QJ/X0HkS7skfy8I"
8013+ },
8014+ "signatures": {
8015+ "@alice_1972:hs1": {
8016+ "ed25519:ALICEDEVICE1972": "QLeKzewmb5ASenpV/XHA3bGrCuUbYHFO+lFXuN0riQrZCUHcz+14wERvXmZTb9Cqcw8UtJeMmR0mpeHh0sKvAA"
8017+ }
8018+ },
8019+ "user_id": "@alice_1972:hs1",
8020+ "unsigned": {}
8021+ }
8022+ },
8023+ "@alice_1974:hs1": {
8024+ "ALICEDEVICE1974": {
8025+ "algorithms": [
8026+ "m.olm.v1.curve25519-aes-sha2",
8027+ "m.megolm.v1.aes-sha2"
8028+ ],
8029+ "device_id": "ALICEDEVICE1974",
8030+ "keys": {
8031+ "curve25519:ALICEDEVICE1974": "m6yyQCVvOhg84gih6JIORW0sHuVcbi+Py7k/rNPvAyw",
8032+ "ed25519:ALICEDEVICE1974": "cc0Iy2HvJuWHmnRSsInE/+GQdQYtfEsMpU+B7m03Ako"
8033+ },
8034+ "signatures": {
8035+ "@alice_1974:hs1": {
8036+ "ed25519:ALICEDEVICE1974": "fzWA2yOyScmnTrCoEfnmOJPRlsUMRDm0FAPbX5Jkh4nhPV3pqno7yGmvaF7FKESp2TigXwtTnZ9EJ7rBkoYfDQ"
8037+ }
8038+ },
8039+ "user_id": "@alice_1974:hs1",
8040+ "unsigned": {}
8041+ }
8042+ },
8043+ "@alice_1982:hs1": {
8044+ "ALICEDEVICE1982": {
8045+ "algorithms": [
8046+ "m.olm.v1.curve25519-aes-sha2",
8047+ "m.megolm.v1.aes-sha2"
8048+ ],
8049+ "device_id": "ALICEDEVICE1982",
8050+ "keys": {
8051+ "curve25519:ALICEDEVICE1982": "QcmkfXEyweg7FYOSe0AdlLm/hgRFpKeFETMcOf0r7m4",
8052+ "ed25519:ALICEDEVICE1982": "GXpWwwTPbvbh0e88xqNvDQ20gL6nV+BddlLDkP9Yrso"
8053+ },
8054+ "signatures": {
8055+ "@alice_1982:hs1": {
8056+ "ed25519:ALICEDEVICE1982": "35y1pafyUn8ATTIbruAmRGU6aqcrdFpgyTB3tPvdXLovKgdo4rZgwn1FyFeSWbVGjfXa0rNf1vTS5CRs5hYXAQ"
8057+ }
8058+ },
8059+ "user_id": "@alice_1982:hs1",
8060+ "unsigned": {}
8061+ }
8062+ },
8063+ "@alice_1985:hs1": {
8064+ "ALICEDEVICE1985": {
8065+ "algorithms": [
8066+ "m.olm.v1.curve25519-aes-sha2",
8067+ "m.megolm.v1.aes-sha2"
8068+ ],
8069+ "device_id": "ALICEDEVICE1985",
8070+ "keys": {
8071+ "curve25519:ALICEDEVICE1985": "lTjhZdD4MdpkVawpVth3gOwZ89f6ml3rhBCsVbosxQI",
8072+ "ed25519:ALICEDEVICE1985": "duSs6NUvXpg1L3qFoRSuGt22RUwS05Ve2SPEs/QCBeQ"
8073+ },
8074+ "signatures": {
8075+ "@alice_1985:hs1": {
8076+ "ed25519:ALICEDEVICE1985": "rCNtgo0XYt/G/Do5+4it23T36WQ9w1LupJRSzitUnCxhkDUqrJqyYg00T29vpX8ZqCN/21yLqUP3+DzXFHgKBA"
8077+ }
8078+ },
8079+ "user_id": "@alice_1985:hs1",
8080+ "unsigned": {}
8081+ }
8082+ },
8083+ "@alice_201:hs1": {
8084+ "ALICEDEVICE201": {
8085+ "algorithms": [
8086+ "m.olm.v1.curve25519-aes-sha2",
8087+ "m.megolm.v1.aes-sha2"
8088+ ],
8089+ "device_id": "ALICEDEVICE201",
8090+ "keys": {
8091+ "curve25519:ALICEDEVICE201": "vl8+lHaJqWnp/Fkl0wv9toTq0bldBlF5UK+7FjMYJWQ",
8092+ "ed25519:ALICEDEVICE201": "+KU/aafoAbWN5rOQ7XmkxwXbApvBwQEnShe/pqux8nU"
8093+ },
8094+ "signatures": {
8095+ "@alice_201:hs1": {
8096+ "ed25519:ALICEDEVICE201": "BQpnTuB4VvlF75QYkS+dlJXG8VUhFEwdkAjJKmSV9ga5LjR+5TDHOs4302UjI4M8pOPmApVS8o0a63Qf9KNgAw"
8097+ }
8098+ },
8099+ "user_id": "@alice_201:hs1",
8100+ "unsigned": {}
8101+ }
8102+ },
8103+ "@alice_204:hs1": {
8104+ "ALICEDEVICE204": {
8105+ "algorithms": [
8106+ "m.olm.v1.curve25519-aes-sha2",
8107+ "m.megolm.v1.aes-sha2"
8108+ ],
8109+ "device_id": "ALICEDEVICE204",
8110+ "keys": {
8111+ "curve25519:ALICEDEVICE204": "bR6mITER4axh3jf7bbpB3NajobVeLSkNpBpJQ75IOjk",
8112+ "ed25519:ALICEDEVICE204": "a1e7xV0LHI/yddJ+aJQEUUes0KhzPv+swT93DKXYHWU"
8113+ },
8114+ "signatures": {
8115+ "@alice_204:hs1": {
8116+ "ed25519:ALICEDEVICE204": "sJdOwG1QjjGDm1PMED6D3np0DABcnKxvVcW9XoWLr3rT3fclF/sW01uLm/gfQiQMU0cbWRU9TXnzwsRZC29WBw"
8117+ }
8118+ },
8119+ "user_id": "@alice_204:hs1",
8120+ "unsigned": {}
8121+ }
8122+ },
8123+ "@alice_207:hs1": {
8124+ "ALICEDEVICE207": {
8125+ "algorithms": [
8126+ "m.olm.v1.curve25519-aes-sha2",
8127+ "m.megolm.v1.aes-sha2"
8128+ ],
8129+ "device_id": "ALICEDEVICE207",
8130+ "keys": {
8131+ "curve25519:ALICEDEVICE207": "Qot5/TJizwZDz9QKSrLnzLE22VyQnPm0yqk3o/c/f0o",
8132+ "ed25519:ALICEDEVICE207": "TCWXW1vHby/63h+wPKSrmcUfaQVt8JLu0nawUxwjy+8"
8133+ },
8134+ "signatures": {
8135+ "@alice_207:hs1": {
8136+ "ed25519:ALICEDEVICE207": "lF/oOz6A4rh25XKlV+k755qJ4b71r0zfCQoq65qzsN5KNTNy0hhpplFdRBTY6A+G+mAux1MBK1biK/ElqXygDw"
8137+ }
8138+ },
8139+ "user_id": "@alice_207:hs1",
8140+ "unsigned": {}
8141+ }
8142+ },
8143+ "@alice_214:hs1": {
8144+ "ALICEDEVICE214": {
8145+ "algorithms": [
8146+ "m.olm.v1.curve25519-aes-sha2",
8147+ "m.megolm.v1.aes-sha2"
8148+ ],
8149+ "device_id": "ALICEDEVICE214",
8150+ "keys": {
8151+ "curve25519:ALICEDEVICE214": "sn1U+4qHxWbVjOJl3pNXwY6W7eHcdThiHi4WkQ+bXSg",
8152+ "ed25519:ALICEDEVICE214": "I20VDtplT1b6NgG7xhSrmN3MOBEz7bOcYnpItU07JmA"
8153+ },
8154+ "signatures": {
8155+ "@alice_214:hs1": {
8156+ "ed25519:ALICEDEVICE214": "bIwRL6eTlkA7YDcSvU905JfQxsuapRoZEbg7om/s/8EjzOOaPcGq/1d2wbV0MkREOOcBf8AwgIK2mv0nFVqABg"
8157+ }
8158+ },
8159+ "user_id": "@alice_214:hs1",
8160+ "unsigned": {}
8161+ }
8162+ },
8163+ "@alice_215:hs1": {
8164+ "ALICEDEVICE215": {
8165+ "algorithms": [
8166+ "m.olm.v1.curve25519-aes-sha2",
8167+ "m.megolm.v1.aes-sha2"
8168+ ],
8169+ "device_id": "ALICEDEVICE215",
8170+ "keys": {
8171+ "curve25519:ALICEDEVICE215": "72bExrHtwTINYmkqyduXsL1Tl8jAdMkSLbjxJE2zg1o",
8172+ "ed25519:ALICEDEVICE215": "v4luZ044ZHzLzutusxVssJXlh1CjoGcDq31okFb5D3w"
8173+ },
8174+ "signatures": {
8175+ "@alice_215:hs1": {
8176+ "ed25519:ALICEDEVICE215": "s6cqUmUHoTIN9evcZYYl8XO8XgwCmNvnqo+GivO0TdutW/QG96FqA2gtDiIBTGdLphgwKDbwvHtv1957i8w8Dw"
8177+ }
8178+ },
8179+ "user_id": "@alice_215:hs1",
8180+ "unsigned": {}
8181+ }
8182+ },
8183+ "@alice_238:hs1": {
8184+ "ALICEDEVICE238": {
8185+ "algorithms": [
8186+ "m.olm.v1.curve25519-aes-sha2",
8187+ "m.megolm.v1.aes-sha2"
8188+ ],
8189+ "device_id": "ALICEDEVICE238",
8190+ "keys": {
8191+ "curve25519:ALICEDEVICE238": "1a5AG27z+lXnJUQq/N62orbCMbH5aEZkcM43dsADVEM",
8192+ "ed25519:ALICEDEVICE238": "IVYCoLr3OzGhgjnM7ozv0+f1cfEuJofJ0rWnjXeCGpc"
8193+ },
8194+ "signatures": {
8195+ "@alice_238:hs1": {
8196+ "ed25519:ALICEDEVICE238": "i0BDTlmz0DxGS69FbpASI9LO67dz1Q9YQzve37Tc6BT/mTqTDRrApEf/C34lOc7XQ01lmfbc2O55OEpp+hHNBg"
8197+ }
8198+ },
8199+ "user_id": "@alice_238:hs1",
8200+ "unsigned": {}
8201+ }
8202+ },
8203+ "@alice_239:hs1": {
8204+ "ALICEDEVICE239": {
8205+ "algorithms": [
8206+ "m.olm.v1.curve25519-aes-sha2",
8207+ "m.megolm.v1.aes-sha2"
8208+ ],
8209+ "device_id": "ALICEDEVICE239",
8210+ "keys": {
8211+ "curve25519:ALICEDEVICE239": "HbyMHB3iOWjFDMb0ju0OIYGKXz2jIu+PwxacH1UWviw",
8212+ "ed25519:ALICEDEVICE239": "8qkp+ogCOsnUQdLQv0VUx2nrCvQbuNfIdNT5HtEX3+Y"
8213+ },
8214+ "signatures": {
8215+ "@alice_239:hs1": {
8216+ "ed25519:ALICEDEVICE239": "Ye+62MWkdMt8iM8Cgd0QIZewz7HKXa9q2xgZDxDFAtkf7QX54rqH4mAeFlbe0nd5SatNej1/GcsCrM52XtTjCg"
8217+ }
8218+ },
8219+ "user_id": "@alice_239:hs1",
8220+ "unsigned": {}
8221+ }
8222+ },
8223+ "@alice_248:hs1": {
8224+ "ALICEDEVICE248": {
8225+ "algorithms": [
8226+ "m.olm.v1.curve25519-aes-sha2",
8227+ "m.megolm.v1.aes-sha2"
8228+ ],
8229+ "device_id": "ALICEDEVICE248",
8230+ "keys": {
8231+ "curve25519:ALICEDEVICE248": "g7U54/aCtxmTjZ94VQkH7SQ9jso7oxAeE4h1jhvU4iI",
8232+ "ed25519:ALICEDEVICE248": "Cow8gAYtKFn1/fSZv1FtVMCQtThMo4T6QqvLUE/m2IM"
8233+ },
8234+ "signatures": {
8235+ "@alice_248:hs1": {
8236+ "ed25519:ALICEDEVICE248": "TQgprR3JKNu4bVt67/zz3074KG5+hjEQNhq31SdHP1bPpAmxz9XUykVOnJsDKgShK2NYFb8mzcJd+HWbfsALCw"
8237+ }
8238+ },
8239+ "user_id": "@alice_248:hs1",
8240+ "unsigned": {}
8241+ }
8242+ },
8243+ "@alice_250:hs1": {
8244+ "ALICEDEVICE250": {
8245+ "algorithms": [
8246+ "m.olm.v1.curve25519-aes-sha2",
8247+ "m.megolm.v1.aes-sha2"
8248+ ],
8249+ "device_id": "ALICEDEVICE250",
8250+ "keys": {
8251+ "curve25519:ALICEDEVICE250": "PBES4gn1xbEY7/0NFLUDWkcj8XzjX3Nuy5J7qoXIAho",
8252+ "ed25519:ALICEDEVICE250": "/7+E5QQSzAz/C5rI9MTugpcoltGLTVnvpYjzyX69IOI"
8253+ },
8254+ "signatures": {
8255+ "@alice_250:hs1": {
8256+ "ed25519:ALICEDEVICE250": "J+73Y0+tdtYJzDwgnN9dS2SUm+GTaKr30T7exFGyiV0Ogp4gzusbUmNFFZxcZVUmWTsxA2QvYGsJfz06+o06Ag"
8257+ }
8258+ },
8259+ "user_id": "@alice_250:hs1",
8260+ "unsigned": {}
8261+ }
8262+ },
8263+ "@alice_254:hs1": {
8264+ "ALICEDEVICE254": {
8265+ "algorithms": [
8266+ "m.olm.v1.curve25519-aes-sha2",
8267+ "m.megolm.v1.aes-sha2"
8268+ ],
8269+ "device_id": "ALICEDEVICE254",
8270+ "keys": {
8271+ "curve25519:ALICEDEVICE254": "r/RWPtOw8FmuyKMKiIy52WsxEhcmbGB9uRYa1cWfB24",
8272+ "ed25519:ALICEDEVICE254": "Iu68N5orPfMJHZgkcC4KoF2e2qw4ZXVHJrvytwssuLU"
8273+ },
8274+ "signatures": {
8275+ "@alice_254:hs1": {
8276+ "ed25519:ALICEDEVICE254": "AGiayugDHsLYiOVlif0pWIE5riD46OSzabBPXeEzGtbxNFBTMvRFZ2C/kNbBrn0B3RSYQ++yBfhsNYCPRxz6AA"
8277+ }
8278+ },
8279+ "user_id": "@alice_254:hs1",
8280+ "unsigned": {}
8281+ }
8282+ },
8283+ "@alice_258:hs1": {
8284+ "ALICEDEVICE258": {
8285+ "algorithms": [
8286+ "m.olm.v1.curve25519-aes-sha2",
8287+ "m.megolm.v1.aes-sha2"
8288+ ],
8289+ "device_id": "ALICEDEVICE258",
8290+ "keys": {
8291+ "curve25519:ALICEDEVICE258": "bONq5yEpAaFfkqLrVc3EdQDQc55W0GJUKTdVfNkvSH4",
8292+ "ed25519:ALICEDEVICE258": "YEqhr8t7R61wR9Djg9ujL7MCq2yrUtpoHAPDAtsY5h8"
8293+ },
8294+ "signatures": {
8295+ "@alice_258:hs1": {
8296+ "ed25519:ALICEDEVICE258": "HNCzSZNNqzcbF9LoLG7AkBQycPLtd+cz1jQ2uGyrC862Jw/4Gb/TDtn5zoHMFUYDsvwfNmBT/kwKjorE+3ZKCQ"
8297+ }
8298+ },
8299+ "user_id": "@alice_258:hs1",
8300+ "unsigned": {}
8301+ }
8302+ },
8303+ "@alice_266:hs1": {
8304+ "ALICEDEVICE266": {
8305+ "algorithms": [
8306+ "m.olm.v1.curve25519-aes-sha2",
8307+ "m.megolm.v1.aes-sha2"
8308+ ],
8309+ "device_id": "ALICEDEVICE266",
8310+ "keys": {
8311+ "curve25519:ALICEDEVICE266": "Xk5ICLEl56q3jgyIhRShlX7R3re9rPr0EiJB0pDMi3o",
8312+ "ed25519:ALICEDEVICE266": "Lt1BRCgGGkNcnXtkZGqbwV0RZ2I1BYXQp0wa/FAD9LM"
8313+ },
8314+ "signatures": {
8315+ "@alice_266:hs1": {
8316+ "ed25519:ALICEDEVICE266": "ajo0RWoiHnFOZWFNPfouzyLjt7EgZDFZ5VT4MRJYYIqUY/Y84LQN74Z+4k2HYQ+Kcgf0GV0oqkCOEuy3iYMDCw"
8317+ }
8318+ },
8319+ "user_id": "@alice_266:hs1",
8320+ "unsigned": {}
8321+ }
8322+ },
8323+ "@alice_267:hs1": {
8324+ "ALICEDEVICE267": {
8325+ "algorithms": [
8326+ "m.olm.v1.curve25519-aes-sha2",
8327+ "m.megolm.v1.aes-sha2"
8328+ ],
8329+ "device_id": "ALICEDEVICE267",
8330+ "keys": {
8331+ "curve25519:ALICEDEVICE267": "yupbIex7ea40XFWHncXNtrfzO5SpusMhP9SuNye+9gk",
8332+ "ed25519:ALICEDEVICE267": "oLTO2SDVKV2Ev81pVd5MopoXQeSBuf3o1TONCOBVV5E"
8333+ },
8334+ "signatures": {
8335+ "@alice_267:hs1": {
8336+ "ed25519:ALICEDEVICE267": "+CCYW+JDnXSrXS400/kR+WZGqXJnRsImKPd0csuqtv7lqZ7ehuZZaj0O/rc656OftZ9omvpCyvjHZFBRKmHgAw"
8337+ }
8338+ },
8339+ "user_id": "@alice_267:hs1",
8340+ "unsigned": {}
8341+ }
8342+ },
8343+ "@alice_274:hs1": {
8344+ "ALICEDEVICE274": {
8345+ "algorithms": [
8346+ "m.olm.v1.curve25519-aes-sha2",
8347+ "m.megolm.v1.aes-sha2"
8348+ ],
8349+ "device_id": "ALICEDEVICE274",
8350+ "keys": {
8351+ "curve25519:ALICEDEVICE274": "nOOc/9VmIae9kJhK7oH6E4FrFHtF8qOIhNki9KqBkE0",
8352+ "ed25519:ALICEDEVICE274": "Lt60LDYKAht4AbjTj+RZTjPaJJSovM8b8SYlTgSc61s"
8353+ },
8354+ "signatures": {
8355+ "@alice_274:hs1": {
8356+ "ed25519:ALICEDEVICE274": "M/CDnu4eWVGWNmYst4fcEOboYXJKVA/9bNleGdbeeJ4UtCz6rk6uuhYW2UYqpVdQi55jk/vEihPdlfM2pFMvBg"
8357+ }
8358+ },
8359+ "user_id": "@alice_274:hs1",
8360+ "unsigned": {}
8361+ }
8362+ },
8363+ "@alice_275:hs1": {
8364+ "ALICEDEVICE275": {
8365+ "algorithms": [
8366+ "m.olm.v1.curve25519-aes-sha2",
8367+ "m.megolm.v1.aes-sha2"
8368+ ],
8369+ "device_id": "ALICEDEVICE275",
8370+ "keys": {
8371+ "curve25519:ALICEDEVICE275": "9bRR3tSil/wR0bJKKbhg5NY5CbVJ1jYw8W7op3PcIVo",
8372+ "ed25519:ALICEDEVICE275": "t9/FwKLDSS9vWKDUlN8RgVlJk6x6sOys2jZbnGsA2DY"
8373+ },
8374+ "signatures": {
8375+ "@alice_275:hs1": {
8376+ "ed25519:ALICEDEVICE275": "x4Y4Gu02knmzeTfXUOumhs7FhFhRneOrWdOZnHGjoRzFWCaz6D8+Oo1Qo0AZhiBFSc8qByhJJ6x3XTWytMyiBA"
8377+ }
8378+ },
8379+ "user_id": "@alice_275:hs1",
8380+ "unsigned": {}
8381+ }
8382+ },
8383+ "@alice_288:hs1": {
8384+ "ALICEDEVICE288": {
8385+ "algorithms": [
8386+ "m.olm.v1.curve25519-aes-sha2",
8387+ "m.megolm.v1.aes-sha2"
8388+ ],
8389+ "device_id": "ALICEDEVICE288",
8390+ "keys": {
8391+ "curve25519:ALICEDEVICE288": "GcgXwwPHxzQfyI6m7AGJSoojfPqDkmMBjqSXwr5k6hw",
8392+ "ed25519:ALICEDEVICE288": "AMa/FhZhLqSk2HHYuOn+wJaNn2oH3xzFLAOYPA9Uv/4"
8393+ },
8394+ "signatures": {
8395+ "@alice_288:hs1": {
8396+ "ed25519:ALICEDEVICE288": "O/tGu3PLkBeb5/AdgEQD5zKipUzJ5L0pkabjTvr+rXBsQsz7XozJRS7p98Q2S3RIJ7IVlZR600I3SUG3+A+DDA"
8397+ }
8398+ },
8399+ "user_id": "@alice_288:hs1",
8400+ "unsigned": {}
8401+ }
8402+ },
8403+ "@alice_298:hs1": {
8404+ "ALICEDEVICE298": {
8405+ "algorithms": [
8406+ "m.olm.v1.curve25519-aes-sha2",
8407+ "m.megolm.v1.aes-sha2"
8408+ ],
8409+ "device_id": "ALICEDEVICE298",
8410+ "keys": {
8411+ "curve25519:ALICEDEVICE298": "Pl8fMbIF5IO3NG9PSK2LOftfKFWVoSCD5PCjHDLePSY",
8412+ "ed25519:ALICEDEVICE298": "4mW36P09DpbES+03EwzgFUoLzWPc3f9Bwbz5xShFgIA"
8413+ },
8414+ "signatures": {
8415+ "@alice_298:hs1": {
8416+ "ed25519:ALICEDEVICE298": "AhtnHNWo/R6yvUPW/31rui6nrsHQnzPfk/iTqJHfo0I/h32tIxGS0ySWPiG8Ufat6kjA0JpL9UhG+jM4JljfAg"
8417+ }
8418+ },
8419+ "user_id": "@alice_298:hs1",
8420+ "unsigned": {}
8421+ }
8422+ },
8423+ "@alice_307:hs1": {
8424+ "ALICEDEVICE307": {
8425+ "algorithms": [
8426+ "m.olm.v1.curve25519-aes-sha2",
8427+ "m.megolm.v1.aes-sha2"
8428+ ],
8429+ "device_id": "ALICEDEVICE307",
8430+ "keys": {
8431+ "curve25519:ALICEDEVICE307": "/VwCmyFv8m6BYHkZQwbaLgybXBPoab+fnnH39NY6ECY",
8432+ "ed25519:ALICEDEVICE307": "8mzhRcBpATYQi538ZNHhiluh98/6vH+oN5bZqSWWIhY"
8433+ },
8434+ "signatures": {
8435+ "@alice_307:hs1": {
8436+ "ed25519:ALICEDEVICE307": "XO+8t6gjqpDM71d8JKsnO1bKv4F0Rj+V1uJF0CoDeVobmudMXE+Qvx7OWrup7zYEXhO52tvKGZ2/BrrsaCU/Ag"
8437+ }
8438+ },
8439+ "user_id": "@alice_307:hs1",
8440+ "unsigned": {}
8441+ }
8442+ },
8443+ "@alice_325:hs1": {
8444+ "ALICEDEVICE325": {
8445+ "algorithms": [
8446+ "m.olm.v1.curve25519-aes-sha2",
8447+ "m.megolm.v1.aes-sha2"
8448+ ],
8449+ "device_id": "ALICEDEVICE325",
8450+ "keys": {
8451+ "curve25519:ALICEDEVICE325": "XwsZDSH51LhUP4rxqeOxC+GQCgQxA/IcWLMs54j1yFk",
8452+ "ed25519:ALICEDEVICE325": "yWQ3foZRqSax9IvZPE1hOV8YluCo6EZYRSBFyuJeylA"
8453+ },
8454+ "signatures": {
8455+ "@alice_325:hs1": {
8456+ "ed25519:ALICEDEVICE325": "YT1tWlDue0L8CQeThNa3Sh/usBDjMovwU115GC/OBagYe6AMx75pKVu9eF2oQIkLgvSUJWAN8qPnkH61ilqMAQ"
8457+ }
8458+ },
8459+ "user_id": "@alice_325:hs1",
8460+ "unsigned": {}
8461+ }
8462+ },
8463+ "@alice_332:hs1": {
8464+ "ALICEDEVICE332": {
8465+ "algorithms": [
8466+ "m.olm.v1.curve25519-aes-sha2",
8467+ "m.megolm.v1.aes-sha2"
8468+ ],
8469+ "device_id": "ALICEDEVICE332",
8470+ "keys": {
8471+ "curve25519:ALICEDEVICE332": "ZE/DcCLKGvvBgs1GQYvhsl49Rb3PxMktcG+zog1XL18",
8472+ "ed25519:ALICEDEVICE332": "MyCavp40s3jm69qbG6O6/lC4E0T3O1ekHzVAMbuZfMU"
8473+ },
8474+ "signatures": {
8475+ "@alice_332:hs1": {
8476+ "ed25519:ALICEDEVICE332": "4qWJK1y6iNT65dbC5753/6EjknMNEFzILg2LZVqpU2QQuHYWWLPWC8PjJq5cKyLUBnhPC7CUniulmkvYgeKLDw"
8477+ }
8478+ },
8479+ "user_id": "@alice_332:hs1",
8480+ "unsigned": {}
8481+ }
8482+ },
8483+ "@alice_33:hs1": {
8484+ "ALICEDEVICE33": {
8485+ "algorithms": [
8486+ "m.olm.v1.curve25519-aes-sha2",
8487+ "m.megolm.v1.aes-sha2"
8488+ ],
8489+ "device_id": "ALICEDEVICE33",
8490+ "keys": {
8491+ "curve25519:ALICEDEVICE33": "6XVpPaXaLlqWaCM0yfFIn0iiefQSZqi6rmR1CKd1BUQ",
8492+ "ed25519:ALICEDEVICE33": "QWBw40vR5P4/q5AoLrQqSpJZg4aAdG4Lw+uq8fNDmKs"
8493+ },
8494+ "signatures": {
8495+ "@alice_33:hs1": {
8496+ "ed25519:ALICEDEVICE33": "vDVEx23+YXEd80mj0ebJOXXMCw3BMhW6CbvBWyi4XJzGR9F5A++OTJlYBHW8fXi4oWMWdEGvA0yTZY8/X+DIDw"
8497+ }
8498+ },
8499+ "user_id": "@alice_33:hs1",
8500+ "unsigned": {}
8501+ }
8502+ },
8503+ "@alice_347:hs1": {
8504+ "ALICEDEVICE347": {
8505+ "algorithms": [
8506+ "m.olm.v1.curve25519-aes-sha2",
8507+ "m.megolm.v1.aes-sha2"
8508+ ],
8509+ "device_id": "ALICEDEVICE347",
8510+ "keys": {
8511+ "curve25519:ALICEDEVICE347": "9x2yTP/sHyM4UC01SSuPIwyS8GKg2b6eDUXakg3N01Y",
8512+ "ed25519:ALICEDEVICE347": "SKBhjirpsghNXPFCGKnr/u7oIhIa+RUThKDNe3OcliE"
8513+ },
8514+ "signatures": {
8515+ "@alice_347:hs1": {
8516+ "ed25519:ALICEDEVICE347": "lBxXtswFZScMBqQWAhm82WpcrZMsG51EmMmRjswt16icCCC7sBZSP9HfnlOC/nLWIVyU7MkD/hllb3/DUnAwCw"
8517+ }
8518+ },
8519+ "user_id": "@alice_347:hs1",
8520+ "unsigned": {}
8521+ }
8522+ },
8523+ "@alice_351:hs1": {
8524+ "ALICEDEVICE351": {
8525+ "algorithms": [
8526+ "m.olm.v1.curve25519-aes-sha2",
8527+ "m.megolm.v1.aes-sha2"
8528+ ],
8529+ "device_id": "ALICEDEVICE351",
8530+ "keys": {
8531+ "curve25519:ALICEDEVICE351": "dsQsfSqSK3DCu2j2tQJNRzYoYyzOyuab5omItx53MFQ",
8532+ "ed25519:ALICEDEVICE351": "BKzb7qvOP5T1cH3eRQVs7+V7XIeibV/ACaUsgUEFSTM"
8533+ },
8534+ "signatures": {
8535+ "@alice_351:hs1": {
8536+ "ed25519:ALICEDEVICE351": "/mAD1hUCfa3NNdQ91VwmSzX5ZlcKVMBm+Aag2U5Twu6HQetqPgQoU13LHc1lcp1gLzr9Ci3QJZaO05oTmFy5Ag"
8537+ }
8538+ },
8539+ "user_id": "@alice_351:hs1",
8540+ "unsigned": {}
8541+ }
8542+ },
8543+ "@alice_359:hs1": {
8544+ "ALICEDEVICE359": {
8545+ "algorithms": [
8546+ "m.olm.v1.curve25519-aes-sha2",
8547+ "m.megolm.v1.aes-sha2"
8548+ ],
8549+ "device_id": "ALICEDEVICE359",
8550+ "keys": {
8551+ "curve25519:ALICEDEVICE359": "PX8n/Uzd3lFXeoNzQ10XGf2aZjGVINgmv15q93O/un0",
8552+ "ed25519:ALICEDEVICE359": "0WYwnMLJszuKka9STKVUOMr/yParbqFIYkO8A/RCNfw"
8553+ },
8554+ "signatures": {
8555+ "@alice_359:hs1": {
8556+ "ed25519:ALICEDEVICE359": "p1bvEsQXRrqpnvxVmQ5MZhcrN8y2Whp3TZ4HIGoyrrtD3FB0TYTCsdkgTA+862ZmkneFV+a+TmTmuc0LSFVICw"
8557+ }
8558+ },
8559+ "user_id": "@alice_359:hs1",
8560+ "unsigned": {}
8561+ }
8562+ },
8563+ "@alice_383:hs1": {
8564+ "ALICEDEVICE383": {
8565+ "algorithms": [
8566+ "m.olm.v1.curve25519-aes-sha2",
8567+ "m.megolm.v1.aes-sha2"
8568+ ],
8569+ "device_id": "ALICEDEVICE383",
8570+ "keys": {
8571+ "curve25519:ALICEDEVICE383": "nQdHrDQFzYlMvfyzBv0UJaFEqc0ZNPuAfpqde/pUCF0",
8572+ "ed25519:ALICEDEVICE383": "vbnvrm1qHDQ+1kw3Ep7SqyVy1+YVuh0voH/kU64w4mM"
8573+ },
8574+ "signatures": {
8575+ "@alice_383:hs1": {
8576+ "ed25519:ALICEDEVICE383": "mmKyEEkm8sORYofpejUYmrVLWxyBKD3l+wufMx7TOIOFBc/GSxfFJJ1igukipyfBAZ9hkZgikDBjeCF0VipLBw"
8577+ }
8578+ },
8579+ "user_id": "@alice_383:hs1",
8580+ "unsigned": {}
8581+ }
8582+ },
8583+ "@alice_387:hs1": {
8584+ "ALICEDEVICE387": {
8585+ "algorithms": [
8586+ "m.olm.v1.curve25519-aes-sha2",
8587+ "m.megolm.v1.aes-sha2"
8588+ ],
8589+ "device_id": "ALICEDEVICE387",
8590+ "keys": {
8591+ "curve25519:ALICEDEVICE387": "Zbf0l1YN0E9Sv5sQosTm/ec5jFqVW/asbaYR7QEQYBs",
8592+ "ed25519:ALICEDEVICE387": "ANFlEup+REtW4H+CSDsFLpSoOAGTS+mkcHqHb8bjmX0"
8593+ },
8594+ "signatures": {
8595+ "@alice_387:hs1": {
8596+ "ed25519:ALICEDEVICE387": "3JZulhNlbFDPL4szyrMQh9/1spN6MZHHiHZJ3JAVAUo6j6Tf5DABm/M5QeHcB8oLuQyPwzloO4U64Uo7vf+bAA"
8597+ }
8598+ },
8599+ "user_id": "@alice_387:hs1",
8600+ "unsigned": {}
8601+ }
8602+ },
8603+ "@alice_388:hs1": {
8604+ "ALICEDEVICE388": {
8605+ "algorithms": [
8606+ "m.olm.v1.curve25519-aes-sha2",
8607+ "m.megolm.v1.aes-sha2"
8608+ ],
8609+ "device_id": "ALICEDEVICE388",
8610+ "keys": {
8611+ "curve25519:ALICEDEVICE388": "UpfRD26IwVqKyfvhZBpxyd/YEMAwOOzaJKyvZ4zRy2M",
8612+ "ed25519:ALICEDEVICE388": "pg8vARRH5Gy77GvAzL61GtfhKTpx+5lq5f0PWfrtQd8"
8613+ },
8614+ "signatures": {
8615+ "@alice_388:hs1": {
8616+ "ed25519:ALICEDEVICE388": "Onsh/yjxYJnsK3aI2E1hfvb9hZCL60Ak6tIV6Xe9MPXzmoUZDguW/rpl408QhREyn4NmAfIMXYMjxBLS+Fp7DA"
8617+ }
8618+ },
8619+ "user_id": "@alice_388:hs1",
8620+ "unsigned": {}
8621+ }
8622+ },
8623+ "@alice_390:hs1": {
8624+ "ALICEDEVICE390": {
8625+ "algorithms": [
8626+ "m.olm.v1.curve25519-aes-sha2",
8627+ "m.megolm.v1.aes-sha2"
8628+ ],
8629+ "device_id": "ALICEDEVICE390",
8630+ "keys": {
8631+ "curve25519:ALICEDEVICE390": "UvBCwNSsAvL7oJFv9d8npJ6yhZTVgIMm38dT8XUzqWo",
8632+ "ed25519:ALICEDEVICE390": "JjrE+t1nhf0DbjS27xGvvxAp/RJReFCYZjgTwga9io8"
8633+ },
8634+ "signatures": {
8635+ "@alice_390:hs1": {
8636+ "ed25519:ALICEDEVICE390": "o4qorYmQND8lwzJ1wetMveh5oVOJQFQBsJiJSVXk9RjvQ+kPtm/Aqz2tGepK5M2cLoe8FDJLhNBFI5aqcBvcDg"
8637+ }
8638+ },
8639+ "user_id": "@alice_390:hs1",
8640+ "unsigned": {}
8641+ }
8642+ },
8643+ "@alice_3:hs1": {
8644+ "ALICEDEVICE3": {
8645+ "algorithms": [
8646+ "m.olm.v1.curve25519-aes-sha2",
8647+ "m.megolm.v1.aes-sha2"
8648+ ],
8649+ "device_id": "ALICEDEVICE3",
8650+ "keys": {
8651+ "curve25519:ALICEDEVICE3": "vQ6E9RiYfYJHx9LB9n9lCXJSgZzbsLKcaXyZo72gix4",
8652+ "ed25519:ALICEDEVICE3": "n+OZVQ1DaWbRTdGi9mjBPBW49oUWFyLtHlTMlDe8Ht8"
8653+ },
8654+ "signatures": {
8655+ "@alice_3:hs1": {
8656+ "ed25519:ALICEDEVICE3": "IIsURQcAXbXxaMulLaPJml6KuBCl7TGhafh/NW6KxLk7979qisSo+ukguwunMnA/EC33S7MzxEK2HM6oyz2tCA"
8657+ }
8658+ },
8659+ "user_id": "@alice_3:hs1",
8660+ "unsigned": {}
8661+ }
8662+ },
8663+ "@alice_403:hs1": {
8664+ "ALICEDEVICE403": {
8665+ "algorithms": [
8666+ "m.olm.v1.curve25519-aes-sha2",
8667+ "m.megolm.v1.aes-sha2"
8668+ ],
8669+ "device_id": "ALICEDEVICE403",
8670+ "keys": {
8671+ "curve25519:ALICEDEVICE403": "ldA0J2UvIIUFHOjyPX35HAsG1qVdsshFqMz7/s7U7DE",
8672+ "ed25519:ALICEDEVICE403": "D5HC+e4woLDyVOh5TAXAzN8/rafvmxZciFE9GYv+jXI"
8673+ },
8674+ "signatures": {
8675+ "@alice_403:hs1": {
8676+ "ed25519:ALICEDEVICE403": "Ss1HATpyvuiMNDFfW+e2qlwHTdxfqIx/9vtc0/RJUzzII/tF2AOPGzKK5sEhxKlOt6mLTAP9zUao++Od1gM9Ag"
8677+ }
8678+ },
8679+ "user_id": "@alice_403:hs1",
8680+ "unsigned": {}
8681+ }
8682+ },
8683+ "@alice_406:hs1": {
8684+ "ALICEDEVICE406": {
8685+ "algorithms": [
8686+ "m.olm.v1.curve25519-aes-sha2",
8687+ "m.megolm.v1.aes-sha2"
8688+ ],
8689+ "device_id": "ALICEDEVICE406",
8690+ "keys": {
8691+ "curve25519:ALICEDEVICE406": "u01EE7PA8Dz6vy0pYgRUz7wN8CM6r4q+qdiknEa4u2c",
8692+ "ed25519:ALICEDEVICE406": "/SjipSHWf3mJwQ2MUBYDaEC5OQ8H9O0itDPm2YdTvQA"
8693+ },
8694+ "signatures": {
8695+ "@alice_406:hs1": {
8696+ "ed25519:ALICEDEVICE406": "jmzW7BXZxXw7Ti7mxmcfjY8UTITx+7QcYiOJwO8l7O7puR+EjcfPogb4TA+wyU0GU0BVshheo5tsu4nJEirFCg"
8697+ }
8698+ },
8699+ "user_id": "@alice_406:hs1",
8700+ "unsigned": {}
8701+ }
8702+ },
8703+ "@alice_408:hs1": {
8704+ "ALICEDEVICE408": {
8705+ "algorithms": [
8706+ "m.olm.v1.curve25519-aes-sha2",
8707+ "m.megolm.v1.aes-sha2"
8708+ ],
8709+ "device_id": "ALICEDEVICE408",
8710+ "keys": {
8711+ "curve25519:ALICEDEVICE408": "cQrwDMkzp/ASsI9Xm1IwBS4RjLkeFgOXHKIIg7JZbGU",
8712+ "ed25519:ALICEDEVICE408": "ALQbIw9Z4PjaP0H35/+NTlQqRfsRPkIAHbHd1LIFFjE"
8713+ },
8714+ "signatures": {
8715+ "@alice_408:hs1": {
8716+ "ed25519:ALICEDEVICE408": "QYxSyy6BC0y64Z1EnX3MbYqsaHNK51RRNHF5y/yM1ibgJGPHuA+yN4lI1zR+EDxfnLk+3uDcykItiGCtmHFxBg"
8717+ }
8718+ },
8719+ "user_id": "@alice_408:hs1",
8720+ "unsigned": {}
8721+ }
8722+ },
8723+ "@alice_418:hs1": {
8724+ "ALICEDEVICE418": {
8725+ "algorithms": [
8726+ "m.olm.v1.curve25519-aes-sha2",
8727+ "m.megolm.v1.aes-sha2"
8728+ ],
8729+ "device_id": "ALICEDEVICE418",
8730+ "keys": {
8731+ "curve25519:ALICEDEVICE418": "zYsZdWwtoYCf7rKCxlK72gkMoOc/QnHrQZi+y9v57wQ",
8732+ "ed25519:ALICEDEVICE418": "TYJxKLfWZW7ZRD8xpxdhF5f1nqi7IBARIqm1cqvUWbQ"
8733+ },
8734+ "signatures": {
8735+ "@alice_418:hs1": {
8736+ "ed25519:ALICEDEVICE418": "Dp0C640nyENq8aFKNDvvP3bmiOXnllKxRjlwh9Mq4OC0Je8NSK6NTZB5+K5YPkeagdj01BH1LyquYiZZl91pCQ"
8737+ }
8738+ },
8739+ "user_id": "@alice_418:hs1",
8740+ "unsigned": {}
8741+ }
8742+ },
8743+ "@alice_42:hs1": {
8744+ "ALICEDEVICE42": {
8745+ "algorithms": [
8746+ "m.olm.v1.curve25519-aes-sha2",
8747+ "m.megolm.v1.aes-sha2"
8748+ ],
8749+ "device_id": "ALICEDEVICE42",
8750+ "keys": {
8751+ "curve25519:ALICEDEVICE42": "2tGdRFHHKIMxg4zYQO07vnOLwW0lRCR1SmtdjD8IhRo",
8752+ "ed25519:ALICEDEVICE42": "9e2kxpCczpjDKC5laS82EY2a5doqmte5oEnhBFs9cmc"
8753+ },
8754+ "signatures": {
8755+ "@alice_42:hs1": {
8756+ "ed25519:ALICEDEVICE42": "OCI0EF3IyvxHaE+7oQT+f9rzVQj/Nbw2YkXuzQk/GEJV3e99euAymJSu528kNFkBaqDkkWaDH8/qsAXHmLdECw"
8757+ }
8758+ },
8759+ "user_id": "@alice_42:hs1",
8760+ "unsigned": {}
8761+ }
8762+ },
8763+ "@alice_430:hs1": {
8764+ "ALICEDEVICE430": {
8765+ "algorithms": [
8766+ "m.olm.v1.curve25519-aes-sha2",
8767+ "m.megolm.v1.aes-sha2"
8768+ ],
8769+ "device_id": "ALICEDEVICE430",
8770+ "keys": {
8771+ "curve25519:ALICEDEVICE430": "+y3wJpJtAqamRKyvWA9Ba43+WO3VJNH/+bDkazm1wSI",
8772+ "ed25519:ALICEDEVICE430": "GDOMz3cT5ZuYPIFIbxGC+qYJKD/fQIGldlbw4byc6oI"
8773+ },
8774+ "signatures": {
8775+ "@alice_430:hs1": {
8776+ "ed25519:ALICEDEVICE430": "zZRqKfyU12i1oYQdhzqnF23ciB5NExqSHW6m0/JKsUk1pt0BC1QkX9u/fmSEE5ew6/7YmwFdSmO+c8V1qHrUAw"
8777+ }
8778+ },
8779+ "user_id": "@alice_430:hs1",
8780+ "unsigned": {}
8781+ }
8782+ },
8783+ "@alice_441:hs1": {
8784+ "ALICEDEVICE441": {
8785+ "algorithms": [
8786+ "m.olm.v1.curve25519-aes-sha2",
8787+ "m.megolm.v1.aes-sha2"
8788+ ],
8789+ "device_id": "ALICEDEVICE441",
8790+ "keys": {
8791+ "curve25519:ALICEDEVICE441": "+V6/JckGqBBYx1nQ4zYqMQzkdXg1OGT0zVHk4iJ/imQ",
8792+ "ed25519:ALICEDEVICE441": "QXnJbh7eZxbtsGR3s9JR5ePTF76+DA2Jh+N7Reb+utk"
8793+ },
8794+ "signatures": {
8795+ "@alice_441:hs1": {
8796+ "ed25519:ALICEDEVICE441": "w7TA+pqzc8J80azTf0FuIaQ8VojQccXS0ckn8WNI5MwhMsBwhcuV6BBilgI7Dyuqvmx2Q6BAplQHG/vd40jnAA"
8797+ }
8798+ },
8799+ "user_id": "@alice_441:hs1",
8800+ "unsigned": {}
8801+ }
8802+ },
8803+ "@alice_462:hs1": {
8804+ "ALICEDEVICE462": {
8805+ "algorithms": [
8806+ "m.olm.v1.curve25519-aes-sha2",
8807+ "m.megolm.v1.aes-sha2"
8808+ ],
8809+ "device_id": "ALICEDEVICE462",
8810+ "keys": {
8811+ "curve25519:ALICEDEVICE462": "ADTq6Byg1b5jKgy6tX0XbyUN5LqDo+PxKXq0gXvcAio",
8812+ "ed25519:ALICEDEVICE462": "n2wQENFizJAg7qTxoLKz6kmqbYbT7+h8U/4+A/M+xoU"
8813+ },
8814+ "signatures": {
8815+ "@alice_462:hs1": {
8816+ "ed25519:ALICEDEVICE462": "LuXbnmTDhZmzxNYlFJTSUwcEsAFSskK6K1oROFLALSERf8MEk21Gu1Nc9CdvwYfdynWMK2YS11YYhvNx0viUAg"
8817+ }
8818+ },
8819+ "user_id": "@alice_462:hs1",
8820+ "unsigned": {}
8821+ }
8822+ },
8823+ "@alice_465:hs1": {
8824+ "ALICEDEVICE465": {
8825+ "algorithms": [
8826+ "m.olm.v1.curve25519-aes-sha2",
8827+ "m.megolm.v1.aes-sha2"
8828+ ],
8829+ "device_id": "ALICEDEVICE465",
8830+ "keys": {
8831+ "curve25519:ALICEDEVICE465": "zFl54biyq8+y1DgVFgV0BCyk0iSqblycUeQOuSfa138",
8832+ "ed25519:ALICEDEVICE465": "PT+oGGsAqlMQSNtUaOK3PlEKNa/KqfbILDDHwi7vd/U"
8833+ },
8834+ "signatures": {
8835+ "@alice_465:hs1": {
8836+ "ed25519:ALICEDEVICE465": "3dREMr8Dem0DIQ9GU4XOQDkWeAOcH7Q3LC8WxzI4y/DzRJFlU1ArkWGlSqjCf58yj2dOE0WxQx/nZrqxmABkCw"
8837+ }
8838+ },
8839+ "user_id": "@alice_465:hs1",
8840+ "unsigned": {}
8841+ }
8842+ },
8843+ "@alice_467:hs1": {
8844+ "ALICEDEVICE467": {
8845+ "algorithms": [
8846+ "m.olm.v1.curve25519-aes-sha2",
8847+ "m.megolm.v1.aes-sha2"
8848+ ],
8849+ "device_id": "ALICEDEVICE467",
8850+ "keys": {
8851+ "curve25519:ALICEDEVICE467": "8HxzYytGlDcxN9ImAFkKOj/xRzPtouNGNDzc8figODI",
8852+ "ed25519:ALICEDEVICE467": "/7IN44XsEFjJsUslod3x7va9xE+jnD9P8cvshOjpx4Y"
8853+ },
8854+ "signatures": {
8855+ "@alice_467:hs1": {
8856+ "ed25519:ALICEDEVICE467": "cihJ77x5eF4nrTHh02lKs+8acQSYsaJQiXn1TjmL11Za579jF6PKwIs3SIZm/knjYAqM8fQbs6mpHIKXIF0vBQ"
8857+ }
8858+ },
8859+ "user_id": "@alice_467:hs1",
8860+ "unsigned": {}
8861+ }
8862+ },
8863+ "@alice_468:hs1": {
8864+ "ALICEDEVICE468": {
8865+ "algorithms": [
8866+ "m.olm.v1.curve25519-aes-sha2",
8867+ "m.megolm.v1.aes-sha2"
8868+ ],
8869+ "device_id": "ALICEDEVICE468",
8870+ "keys": {
8871+ "curve25519:ALICEDEVICE468": "LDs9UpG2Six83VG8bF1L7d7OeeT96S+hC7EkzqefDGk",
8872+ "ed25519:ALICEDEVICE468": "OfeNqDWHjkDHX6AEGizJRmjl/6nW+uIVlJdO+sQjiX4"
8873+ },
8874+ "signatures": {
8875+ "@alice_468:hs1": {
8876+ "ed25519:ALICEDEVICE468": "9HmIHZomQ/5G8mfy8jubAe8LsUurpB4Djt72cnZ0MVVMk+gBGDUtlF1BwgX3GYabb/te37KRhXhnlIvOjpmDCQ"
8877+ }
8878+ },
8879+ "user_id": "@alice_468:hs1",
8880+ "unsigned": {}
8881+ }
8882+ },
8883+ "@alice_471:hs1": {
8884+ "ALICEDEVICE471": {
8885+ "algorithms": [
8886+ "m.olm.v1.curve25519-aes-sha2",
8887+ "m.megolm.v1.aes-sha2"
8888+ ],
8889+ "device_id": "ALICEDEVICE471",
8890+ "keys": {
8891+ "curve25519:ALICEDEVICE471": "DT5h2UsqMKGvWGCIk5wuycK92XGGzQ/qkq3fUDMk/VI",
8892+ "ed25519:ALICEDEVICE471": "Ylup4/+BLec19kkCFB0s1zUs6CrnPOZIjSa0WRZbFYQ"
8893+ },
8894+ "signatures": {
8895+ "@alice_471:hs1": {
8896+ "ed25519:ALICEDEVICE471": "RQBYa2WEJgfTFcTV+YdGY4KM7g6Ss4TS3ejKVwNhUpf7dolj32VCPTiyBTI4wgnjwO7H8O5GrVyddzkml6uMDQ"
8897+ }
8898+ },
8899+ "user_id": "@alice_471:hs1",
8900+ "unsigned": {}
8901+ }
8902+ },
8903+ "@alice_486:hs1": {
8904+ "ALICEDEVICE486": {
8905+ "algorithms": [
8906+ "m.olm.v1.curve25519-aes-sha2",
8907+ "m.megolm.v1.aes-sha2"
8908+ ],
8909+ "device_id": "ALICEDEVICE486",
8910+ "keys": {
8911+ "curve25519:ALICEDEVICE486": "uspPhNid+UkOBO/kvPHpwflON+tYgdAcxXC92vvPCH0",
8912+ "ed25519:ALICEDEVICE486": "WzedXdLqFputxWtWxeGQi+qeCPzWGouUmNJa0AadFkc"
8913+ },
8914+ "signatures": {
8915+ "@alice_486:hs1": {
8916+ "ed25519:ALICEDEVICE486": "GyV4x3BptVPtj3fkAtPgEtX+wakQ5WktyOda2+QCyvX7JpQ/FvMv+ymTjCY1xC4cTYDi48Lu+jNoTDkpjh02CQ"
8917+ }
8918+ },
8919+ "user_id": "@alice_486:hs1",
8920+ "unsigned": {}
8921+ }
8922+ },
8923+ "@alice_487:hs1": {
8924+ "ALICEDEVICE487": {
8925+ "algorithms": [
8926+ "m.olm.v1.curve25519-aes-sha2",
8927+ "m.megolm.v1.aes-sha2"
8928+ ],
8929+ "device_id": "ALICEDEVICE487",
8930+ "keys": {
8931+ "curve25519:ALICEDEVICE487": "y+SobRwDE3PRicuGtbkEpPIBUxpHNMuMbNjTmy8GMmE",
8932+ "ed25519:ALICEDEVICE487": "4aOESDDT9MEeqf0lsEegQZ3bi3emvVHGx52CkV11PpM"
8933+ },
8934+ "signatures": {
8935+ "@alice_487:hs1": {
8936+ "ed25519:ALICEDEVICE487": "bQfeufDcwBWhI7+99PnYCNfOz1NV8u1zDtuinC7Rcg207gHY9GVa+NezNLBvtL0c84vyekXWT8o4/MlPehcpCA"
8937+ }
8938+ },
8939+ "user_id": "@alice_487:hs1",
8940+ "unsigned": {}
8941+ }
8942+ },
8943+ "@alice_488:hs1": {
8944+ "ALICEDEVICE488": {
8945+ "algorithms": [
8946+ "m.olm.v1.curve25519-aes-sha2",
8947+ "m.megolm.v1.aes-sha2"
8948+ ],
8949+ "device_id": "ALICEDEVICE488",
8950+ "keys": {
8951+ "curve25519:ALICEDEVICE488": "V7y5G7A/WlwCsB7ZM9HL7hjGlNTvedfEl0yj18oXmH0",
8952+ "ed25519:ALICEDEVICE488": "6Njrhydr9LfbtGZJ4gEt+0hPR+qiUz7dyM4pdYy9Hp8"
8953+ },
8954+ "signatures": {
8955+ "@alice_488:hs1": {
8956+ "ed25519:ALICEDEVICE488": "vIONt37MUMAZ7QeBFxilUfBk9lGXl++95R5iRoahj2hDoygljfC36yspi9BGmnY2NFTdo92lAI5ZB8yXFAskDQ"
8957+ }
8958+ },
8959+ "user_id": "@alice_488:hs1",
8960+ "unsigned": {}
8961+ }
8962+ },
8963+ "@alice_494:hs1": {
8964+ "ALICEDEVICE494": {
8965+ "algorithms": [
8966+ "m.olm.v1.curve25519-aes-sha2",
8967+ "m.megolm.v1.aes-sha2"
8968+ ],
8969+ "device_id": "ALICEDEVICE494",
8970+ "keys": {
8971+ "curve25519:ALICEDEVICE494": "xo2XcU9H/35JOm4D8aIJl+y+SqamLDqNFp/bRv34KCY",
8972+ "ed25519:ALICEDEVICE494": "6FrgDM9jwyWe7eneZqTtTWFfENFnzIx5g1aW46a9Em4"
8973+ },
8974+ "signatures": {
8975+ "@alice_494:hs1": {
8976+ "ed25519:ALICEDEVICE494": "IwnjMe/AwvDSlOX489FK/ZCD4QqKH3VpOCMBFiKAWzZvP8K/NY9l8ZsJveXXgVwju1lFWDRDx8Q+6F8YUqqlCg"
8977+ }
8978+ },
8979+ "user_id": "@alice_494:hs1",
8980+ "unsigned": {}
8981+ }
8982+ },
8983+ "@alice_501:hs1": {
8984+ "ALICEDEVICE501": {
8985+ "algorithms": [
8986+ "m.olm.v1.curve25519-aes-sha2",
8987+ "m.megolm.v1.aes-sha2"
8988+ ],
8989+ "device_id": "ALICEDEVICE501",
8990+ "keys": {
8991+ "curve25519:ALICEDEVICE501": "Xh+bzBaHCKvYEl0SK43mMmBdXY5voTS0LP/Ji6X1ZxU",
8992+ "ed25519:ALICEDEVICE501": "boLNZPIZgEHbtrWZSsqkMeEUtQvo6cnFRF7msrV2KeI"
8993+ },
8994+ "signatures": {
8995+ "@alice_501:hs1": {
8996+ "ed25519:ALICEDEVICE501": "LnJLwvbdETxVnwvTEcIrrHFMJN6tJjKmTW2bzX1NZ8NSmvC9diuFW2SP4GIZflYKkgoUilXyJSYisThMeZkIAg"
8997+ }
8998+ },
8999+ "user_id": "@alice_501:hs1",
9000+ "unsigned": {}
9001+ }
9002+ },
9003+ "@alice_507:hs1": {
9004+ "ALICEDEVICE507": {
9005+ "algorithms": [
9006+ "m.olm.v1.curve25519-aes-sha2",
9007+ "m.megolm.v1.aes-sha2"
9008+ ],
9009+ "device_id": "ALICEDEVICE507",
9010+ "keys": {
9011+ "curve25519:ALICEDEVICE507": "x+m0AD0FddWhacp62CyshtbvMms2/OD5LEPo7C70eFc",
9012+ "ed25519:ALICEDEVICE507": "Fa0K7qUATf8ffDZjrKSC4EF0Apcze4k9U1wz7evi8H4"
9013+ },
9014+ "signatures": {
9015+ "@alice_507:hs1": {
9016+ "ed25519:ALICEDEVICE507": "whNCz3IR8Wn/Og9VtWpv9NzWtEuhkBis5htqRW2TRYX2rNi9/rfCgziudhYwOwrM3trzaZc4kUNqO5dH7zq4Dg"
9017+ }
9018+ },
9019+ "user_id": "@alice_507:hs1",
9020+ "unsigned": {}
9021+ }
9022+ },
9023+ "@alice_510:hs1": {
9024+ "ALICEDEVICE510": {
9025+ "algorithms": [
9026+ "m.olm.v1.curve25519-aes-sha2",
9027+ "m.megolm.v1.aes-sha2"
9028+ ],
9029+ "device_id": "ALICEDEVICE510",
9030+ "keys": {
9031+ "curve25519:ALICEDEVICE510": "zGhAzmtOxXFlNnlR/Y6rtN7GWximTt2qDn9E4/aGbHE",
9032+ "ed25519:ALICEDEVICE510": "w9ETv9GfSrLf3W0gf+0N1yC45JRBV1oXEpWe0KFusf8"
9033+ },
9034+ "signatures": {
9035+ "@alice_510:hs1": {
9036+ "ed25519:ALICEDEVICE510": "gPSMEiyVWCTAYR6aleGyS7sC8JcgFmidTz/cetZEcE/uazpRmitU9QvbKGvUKOF+5KpjsPQgrVfosnEp6yQxAQ"
9037+ }
9038+ },
9039+ "user_id": "@alice_510:hs1",
9040+ "unsigned": {}
9041+ }
9042+ },
9043+ "@alice_511:hs1": {
9044+ "ALICEDEVICE511": {
9045+ "algorithms": [
9046+ "m.olm.v1.curve25519-aes-sha2",
9047+ "m.megolm.v1.aes-sha2"
9048+ ],
9049+ "device_id": "ALICEDEVICE511",
9050+ "keys": {
9051+ "curve25519:ALICEDEVICE511": "IAu8G+TDgoKWYwdmGmmENX481OeF/BpkWXwzLh0RyDc",
9052+ "ed25519:ALICEDEVICE511": "HWcAzd2qMJn/xl8nkmFj5YCn4MMEDMWgaeVMOjfbS8k"
9053+ },
9054+ "signatures": {
9055+ "@alice_511:hs1": {
9056+ "ed25519:ALICEDEVICE511": "I22cH4QZgWI9LfII7qHO5POE5pDy0tSTB4DR1uzcTvDFwLJyZYqwkpOHLAZA4sISRMFXhDhjb3GnvqXy+/orDw"
9057+ }
9058+ },
9059+ "user_id": "@alice_511:hs1",
9060+ "unsigned": {}
9061+ }
9062+ },
9063+ "@alice_522:hs1": {
9064+ "ALICEDEVICE522": {
9065+ "algorithms": [
9066+ "m.olm.v1.curve25519-aes-sha2",
9067+ "m.megolm.v1.aes-sha2"
9068+ ],
9069+ "device_id": "ALICEDEVICE522",
9070+ "keys": {
9071+ "curve25519:ALICEDEVICE522": "p39MofbXaHGIhZhr5bnhBDjgG3t4PSRyQojlzPyZCXQ",
9072+ "ed25519:ALICEDEVICE522": "rJlzcPLb0v/FCoLzQ4tS/wE1ejvhg2w/aDCs2unkI/w"
9073+ },
9074+ "signatures": {
9075+ "@alice_522:hs1": {
9076+ "ed25519:ALICEDEVICE522": "6IZV0OmcTxztr0WjS19FwoDCBsXw6HiBwsgNMTtEZn8hZLRSc7yS3TqGXhvsvlahFTCXlsGZjRYmbJ3jCn+YCA"
9077+ }
9078+ },
9079+ "user_id": "@alice_522:hs1",
9080+ "unsigned": {}
9081+ }
9082+ },
9083+ "@alice_530:hs1": {
9084+ "ALICEDEVICE530": {
9085+ "algorithms": [
9086+ "m.olm.v1.curve25519-aes-sha2",
9087+ "m.megolm.v1.aes-sha2"
9088+ ],
9089+ "device_id": "ALICEDEVICE530",
9090+ "keys": {
9091+ "curve25519:ALICEDEVICE530": "wPvumDqybTUW16Qlc/6RnHRvl3Kd0b/46RWeljxQ/2w",
9092+ "ed25519:ALICEDEVICE530": "Bjm8HqStvx4mrmqMY8JGr9WRcspg7XHwpw/PBWvX7mw"
9093+ },
9094+ "signatures": {
9095+ "@alice_530:hs1": {
9096+ "ed25519:ALICEDEVICE530": "tMDD1EysK6lKF6ak+JPN+TDj7n5DRF0rgcL6uBF1QYl8Nkckb9Rtrpf1G9AlWABNeyRlUwSBzkBUlNDDKQo0DQ"
9097+ }
9098+ },
9099+ "user_id": "@alice_530:hs1",
9100+ "unsigned": {}
9101+ }
9102+ },
9103+ "@alice_537:hs1": {
9104+ "ALICEDEVICE537": {
9105+ "algorithms": [
9106+ "m.olm.v1.curve25519-aes-sha2",
9107+ "m.megolm.v1.aes-sha2"
9108+ ],
9109+ "device_id": "ALICEDEVICE537",
9110+ "keys": {
9111+ "curve25519:ALICEDEVICE537": "awGpee1ie0DxSV0iBjBh3H1GiW9rXiYQIO519OBc8gE",
9112+ "ed25519:ALICEDEVICE537": "65nicuSNpAdZ/edN3SrxyDOGZefiNYe83/Wtxdw+1Pw"
9113+ },
9114+ "signatures": {
9115+ "@alice_537:hs1": {
9116+ "ed25519:ALICEDEVICE537": "HKMqfwZy5+90lnJOuxaYK+EY4ZC5kAZHQ+XKqiSZdURWMH7DJNj5mectpiAopPsoXD5bm6ryCG1YsVMT9KvcCg"
9117+ }
9118+ },
9119+ "user_id": "@alice_537:hs1",
9120+ "unsigned": {}
9121+ }
9122+ },
9123+ "@alice_538:hs1": {
9124+ "ALICEDEVICE538": {
9125+ "algorithms": [
9126+ "m.olm.v1.curve25519-aes-sha2",
9127+ "m.megolm.v1.aes-sha2"
9128+ ],
9129+ "device_id": "ALICEDEVICE538",
9130+ "keys": {
9131+ "curve25519:ALICEDEVICE538": "7TGsvZfDw37HYIzKU5oIcbPOeLHTz76Rp+HdROcgpxA",
9132+ "ed25519:ALICEDEVICE538": "0Dm/CBMK8IBC667L3mjXqDnZu0bTCRT0JSmhvnmWnoU"
9133+ },
9134+ "signatures": {
9135+ "@alice_538:hs1": {
9136+ "ed25519:ALICEDEVICE538": "mlvDBdc5wyoL+Xp59aDORlO3oxQ8G/LbhDaQeJSgMOSyRQMoSVFHJkDbperktIDs1ykZCkuFI2uIJAlGC11LAw"
9137+ }
9138+ },
9139+ "user_id": "@alice_538:hs1",
9140+ "unsigned": {}
9141+ }
9142+ },
9143+ "@alice_544:hs1": {
9144+ "ALICEDEVICE544": {
9145+ "algorithms": [
9146+ "m.olm.v1.curve25519-aes-sha2",
9147+ "m.megolm.v1.aes-sha2"
9148+ ],
9149+ "device_id": "ALICEDEVICE544",
9150+ "keys": {
9151+ "curve25519:ALICEDEVICE544": "wIWU/A/FjiiW3eher8bt7CpPoJekE11BHLkleBZ0HUg",
9152+ "ed25519:ALICEDEVICE544": "yxpwoxQ0C0QkVMPJfT44G9N+XEXw0SRjjcdTzoRfkNo"
9153+ },
9154+ "signatures": {
9155+ "@alice_544:hs1": {
9156+ "ed25519:ALICEDEVICE544": "s25F5Vi7iDfuSCLb4mx/H7rLw8VUQ7sxuX5sec/3yAqiIBdEZhCDcJfYaxTp5Ilfl0ftGGfxhLx4RD71vTPzBw"
9157+ }
9158+ },
9159+ "user_id": "@alice_544:hs1",
9160+ "unsigned": {}
9161+ }
9162+ },
9163+ "@alice_547:hs1": {
9164+ "ALICEDEVICE547": {
9165+ "algorithms": [
9166+ "m.olm.v1.curve25519-aes-sha2",
9167+ "m.megolm.v1.aes-sha2"
9168+ ],
9169+ "device_id": "ALICEDEVICE547",
9170+ "keys": {
9171+ "curve25519:ALICEDEVICE547": "EqGPYszEcX0W7ZQCwYINzED4qFBDInp06C1e7+NqHEw",
9172+ "ed25519:ALICEDEVICE547": "Qp6Ju7ovcti6DfBUg1rQm0SunDXjtXCAiM1okO3JYm4"
9173+ },
9174+ "signatures": {
9175+ "@alice_547:hs1": {
9176+ "ed25519:ALICEDEVICE547": "I9fn1eHgENgQo4FB5+Iy+H1R80bZcSfp6r3fEgjfl/+x3abgCSM7AhJDdMiHfQA24bTQ/NQHfantiATWnHW6Cw"
9177+ }
9178+ },
9179+ "user_id": "@alice_547:hs1",
9180+ "unsigned": {}
9181+ }
9182+ },
9183+ "@alice_551:hs1": {
9184+ "ALICEDEVICE551": {
9185+ "algorithms": [
9186+ "m.olm.v1.curve25519-aes-sha2",
9187+ "m.megolm.v1.aes-sha2"
9188+ ],
9189+ "device_id": "ALICEDEVICE551",
9190+ "keys": {
9191+ "curve25519:ALICEDEVICE551": "qVcQcOgVNwN2edWFkY5Tk0T8ZT3lnviv5CcGvnL3nhw",
9192+ "ed25519:ALICEDEVICE551": "eo/UM9H+A+DH+hJir5lcZblzS31xQ0d8QIGzH3u+6Cw"
9193+ },
9194+ "signatures": {
9195+ "@alice_551:hs1": {
9196+ "ed25519:ALICEDEVICE551": "qyWA41l+BgpzyKc6plHHTN24KUWXkqbR9KdRPUcl3UIS5qkPYOeHGTW3V+T6j80kE/7WhmqDnd62FvamP1xnAw"
9197+ }
9198+ },
9199+ "user_id": "@alice_551:hs1",
9200+ "unsigned": {}
9201+ }
9202+ },
9203+ "@alice_554:hs1": {
9204+ "ALICEDEVICE554": {
9205+ "algorithms": [
9206+ "m.olm.v1.curve25519-aes-sha2",
9207+ "m.megolm.v1.aes-sha2"
9208+ ],
9209+ "device_id": "ALICEDEVICE554",
9210+ "keys": {
9211+ "curve25519:ALICEDEVICE554": "QqIv4grRMAUk7/nvJ0qSTE20EGAo2sKg4Hj78pbCfWI",
9212+ "ed25519:ALICEDEVICE554": "cA0DanfLw4ldurkdd/t48SmcrA0Id3taqbX8V4nLT3c"
9213+ },
9214+ "signatures": {
9215+ "@alice_554:hs1": {
9216+ "ed25519:ALICEDEVICE554": "vU2R4Mtb/siEDxeUekQ3mOeCusTCTfZN7yCL7agahmaB39Uh2b0xevtWFJQyer8ZKhUbvspwoGQGWYvjig+SCw"
9217+ }
9218+ },
9219+ "user_id": "@alice_554:hs1",
9220+ "unsigned": {}
9221+ }
9222+ },
9223+ "@alice_562:hs1": {
9224+ "ALICEDEVICE562": {
9225+ "algorithms": [
9226+ "m.olm.v1.curve25519-aes-sha2",
9227+ "m.megolm.v1.aes-sha2"
9228+ ],
9229+ "device_id": "ALICEDEVICE562",
9230+ "keys": {
9231+ "curve25519:ALICEDEVICE562": "Iz6q5aWzmA4brq9J6LgmDYBKFqRlVB8nBkLID49tCyQ",
9232+ "ed25519:ALICEDEVICE562": "GE0uEX7qoE6Ht6Ab5AmpX/NVOaHPgICfxVZK9koFmeM"
9233+ },
9234+ "signatures": {
9235+ "@alice_562:hs1": {
9236+ "ed25519:ALICEDEVICE562": "o/2l8akgj8id/hoH0SM4ZMhTUsKTcfLGLThn8Htc9XbTRoMJaTwGlK0G0VvxHkorcc2xwatvCMUZBzxTKVfIDQ"
9237+ }
9238+ },
9239+ "user_id": "@alice_562:hs1",
9240+ "unsigned": {}
9241+ }
9242+ },
9243+ "@alice_569:hs1": {
9244+ "ALICEDEVICE569": {
9245+ "algorithms": [
9246+ "m.olm.v1.curve25519-aes-sha2",
9247+ "m.megolm.v1.aes-sha2"
9248+ ],
9249+ "device_id": "ALICEDEVICE569",
9250+ "keys": {
9251+ "curve25519:ALICEDEVICE569": "RM4EXtAbDJv9y2Q93nY5e/CA7ffwlp+M1rgQKsj2xlM",
9252+ "ed25519:ALICEDEVICE569": "//XIeeKwoEDSIQqccb+9KCJfREasUjDhJr7/JCXPXaY"
9253+ },
9254+ "signatures": {
9255+ "@alice_569:hs1": {
9256+ "ed25519:ALICEDEVICE569": "sPisNZ3IB9hWSpD9ZWQOosgrLalL312QDRKfhj1vToluNsVwYeB7bPlG6Tp8JrpLGbmew+d9lheffLAVKzIUDg"
9257+ }
9258+ },
9259+ "user_id": "@alice_569:hs1",
9260+ "unsigned": {}
9261+ }
9262+ },
9263+ "@alice_571:hs1": {
9264+ "ALICEDEVICE571": {
9265+ "algorithms": [
9266+ "m.olm.v1.curve25519-aes-sha2",
9267+ "m.megolm.v1.aes-sha2"
9268+ ],
9269+ "device_id": "ALICEDEVICE571",
9270+ "keys": {
9271+ "curve25519:ALICEDEVICE571": "BKhreNUbHLQ1vUQbzGzJ22zs/fQyBbrxk5ewSfgThzc",
9272+ "ed25519:ALICEDEVICE571": "5zbQwnOF6pxlWJpQQipn1RxrTW2pHgOleKmUx18I4kQ"
9273+ },
9274+ "signatures": {
9275+ "@alice_571:hs1": {
9276+ "ed25519:ALICEDEVICE571": "ZTJDKzq6e0AsJtMq3DGc6zm5pTDNlMxgdVD+o0raUteMW3CtKC4/0TJRv8ZkfCFUn7JS5O4+tL0J8ZZ0Vz/9Dg"
9277+ }
9278+ },
9279+ "user_id": "@alice_571:hs1",
9280+ "unsigned": {}
9281+ }
9282+ },
9283+ "@alice_579:hs1": {
9284+ "ALICEDEVICE579": {
9285+ "algorithms": [
9286+ "m.olm.v1.curve25519-aes-sha2",
9287+ "m.megolm.v1.aes-sha2"
9288+ ],
9289+ "device_id": "ALICEDEVICE579",
9290+ "keys": {
9291+ "curve25519:ALICEDEVICE579": "vpplOsK6wa3VajaytEAQw2QY7hX/ymgQnVfLJBlgsiA",
9292+ "ed25519:ALICEDEVICE579": "p/qbHGNBjGKEa08QsjFisbksJ0DeDgl5Qje6bmh1jio"
9293+ },
9294+ "signatures": {
9295+ "@alice_579:hs1": {
9296+ "ed25519:ALICEDEVICE579": "q/e+6Nt821gfjenaqVPJGcgxJmbZgMJgX9Gm31J6BXCHo5uqCbGPS/ErcIJTQBJ+Gnrd8fJXGs2SPjynHdNeCQ"
9297+ }
9298+ },
9299+ "user_id": "@alice_579:hs1",
9300+ "unsigned": {}
9301+ }
9302+ },
9303+ "@alice_583:hs1": {
9304+ "ALICEDEVICE583": {
9305+ "algorithms": [
9306+ "m.olm.v1.curve25519-aes-sha2",
9307+ "m.megolm.v1.aes-sha2"
9308+ ],
9309+ "device_id": "ALICEDEVICE583",
9310+ "keys": {
9311+ "curve25519:ALICEDEVICE583": "RYsJb4QhiuSNG1sVn+BDeSCAZvD6MHCZi9olze+1oyw",
9312+ "ed25519:ALICEDEVICE583": "pY1LO4h8zOZCVUiuBs26dLDk7SlmsJFutzP01+VzWyU"
9313+ },
9314+ "signatures": {
9315+ "@alice_583:hs1": {
9316+ "ed25519:ALICEDEVICE583": "zloZ1GyOVxwtcn5LEdyYtx7qxEP1urIC+kQaSd0TH8Ylqv/uzXqOkIf2/6xvnz4f71UtXlPrvV+ZAPu6/GzDAA"
9317+ }
9318+ },
9319+ "user_id": "@alice_583:hs1",
9320+ "unsigned": {}
9321+ }
9322+ },
9323+ "@alice_5:hs1": {
9324+ "ALICEDEVICE5": {
9325+ "algorithms": [
9326+ "m.olm.v1.curve25519-aes-sha2",
9327+ "m.megolm.v1.aes-sha2"
9328+ ],
9329+ "device_id": "ALICEDEVICE5",
9330+ "keys": {
9331+ "curve25519:ALICEDEVICE5": "iMULVydaOExxRlFtoFzpgjaPLK/xW/N4Iclf98Xvzmo",
9332+ "ed25519:ALICEDEVICE5": "557zIpPPU9UBhSiiYgGamo7JPvfOkWqzJtH1LUfY08A"
9333+ },
9334+ "signatures": {
9335+ "@alice_5:hs1": {
9336+ "ed25519:ALICEDEVICE5": "V3BMiNY6shDDwrqJnU4mwsHmCQaQqQTCZUztr1gxJN4NH7Yg8tdGcmznOYCsNEmd72SeV8DunHD2bVEsZYENBg"
9337+ }
9338+ },
9339+ "user_id": "@alice_5:hs1",
9340+ "unsigned": {}
9341+ }
9342+ },
9343+ "@alice_601:hs1": {
9344+ "ALICEDEVICE601": {
9345+ "algorithms": [
9346+ "m.olm.v1.curve25519-aes-sha2",
9347+ "m.megolm.v1.aes-sha2"
9348+ ],
9349+ "device_id": "ALICEDEVICE601",
9350+ "keys": {
9351+ "curve25519:ALICEDEVICE601": "7eBrDPZvlQUlU3PLPjZfdwUWRfzJnd9efYoQBTOdlyU",
9352+ "ed25519:ALICEDEVICE601": "8qS11f9ZSdxFRT336JH+SdIiOZGDbkEK0sD/5ll6Xec"
9353+ },
9354+ "signatures": {
9355+ "@alice_601:hs1": {
9356+ "ed25519:ALICEDEVICE601": "Q5Zm7YuI6vHGCj1d0zEDXL4/ub235+jlmD3bF1I/Kg40McCfyrCImk+vuOfcotFHV3OGsYzNJ/epHdHwTA0yAg"
9357+ }
9358+ },
9359+ "user_id": "@alice_601:hs1",
9360+ "unsigned": {}
9361+ }
9362+ },
9363+ "@alice_609:hs1": {
9364+ "ALICEDEVICE609": {
9365+ "algorithms": [
9366+ "m.olm.v1.curve25519-aes-sha2",
9367+ "m.megolm.v1.aes-sha2"
9368+ ],
9369+ "device_id": "ALICEDEVICE609",
9370+ "keys": {
9371+ "curve25519:ALICEDEVICE609": "4cqWp0fFWFKgmHWp+BIPX7sXgbG+M1DWOrAJfjWgRH8",
9372+ "ed25519:ALICEDEVICE609": "rgVrr+KIM5/So4WP0BiO0R0bK5x/G+U7/ZNhkpOuZFg"
9373+ },
9374+ "signatures": {
9375+ "@alice_609:hs1": {
9376+ "ed25519:ALICEDEVICE609": "9miq4H7GNJcGs0EFkG1+i1l35nNEEll51uiBOAoPWVxRRUnUZvZZyyPLC4tnQWJdBVbCjPViCdZWxePgaQc0BA"
9377+ }
9378+ },
9379+ "user_id": "@alice_609:hs1",
9380+ "unsigned": {}
9381+ }
9382+ },
9383+ "@alice_611:hs1": {
9384+ "ALICEDEVICE611": {
9385+ "algorithms": [
9386+ "m.olm.v1.curve25519-aes-sha2",
9387+ "m.megolm.v1.aes-sha2"
9388+ ],
9389+ "device_id": "ALICEDEVICE611",
9390+ "keys": {
9391+ "curve25519:ALICEDEVICE611": "PpwcKjVUUblyFm9SriKitMvz27M6owhI5CKz8V5UDxI",
9392+ "ed25519:ALICEDEVICE611": "tJ0eN+gTW05z5+NT6mlP3mQSN+U0yVhEyjQ0kG8omWo"
9393+ },
9394+ "signatures": {
9395+ "@alice_611:hs1": {
9396+ "ed25519:ALICEDEVICE611": "waSTMKd1Ct/+WS+EnmozqFh4oEWSeyNVMcMaCOek7h3xRCbEhZrna9JkDRmf04d36RzreZWP+pafEJmqa09jBw"
9397+ }
9398+ },
9399+ "user_id": "@alice_611:hs1",
9400+ "unsigned": {}
9401+ }
9402+ },
9403+ "@alice_613:hs1": {
9404+ "ALICEDEVICE613": {
9405+ "algorithms": [
9406+ "m.olm.v1.curve25519-aes-sha2",
9407+ "m.megolm.v1.aes-sha2"
9408+ ],
9409+ "device_id": "ALICEDEVICE613",
9410+ "keys": {
9411+ "curve25519:ALICEDEVICE613": "8Ho1/7JpVy3ykHCqnnqTNYQyZCq/bjh3zbIAoFVd0kw",
9412+ "ed25519:ALICEDEVICE613": "oGWMTlgrmwpZp1DsdCmCmFPRz/B0n7vl1w2a7+bgKzY"
9413+ },
9414+ "signatures": {
9415+ "@alice_613:hs1": {
9416+ "ed25519:ALICEDEVICE613": "MXKs5KnXPepg2NnvX+XvimE3vd1n/+lb9vkR+LFjT+fwayvto+mWoKwwY2twyIoYJYSAIffWLluJEwBoMqhmDw"
9417+ }
9418+ },
9419+ "user_id": "@alice_613:hs1",
9420+ "unsigned": {}
9421+ }
9422+ },
9423+ "@alice_619:hs1": {
9424+ "ALICEDEVICE619": {
9425+ "algorithms": [
9426+ "m.olm.v1.curve25519-aes-sha2",
9427+ "m.megolm.v1.aes-sha2"
9428+ ],
9429+ "device_id": "ALICEDEVICE619",
9430+ "keys": {
9431+ "curve25519:ALICEDEVICE619": "5JQv00Y2Q2/bLRLw/1oZP9o/l1O/TNDgAP9MSSwcS2c",
9432+ "ed25519:ALICEDEVICE619": "lnr9LKs80JqRIldOlsjvQb6U69syjVvWjspdlNMLZY4"
9433+ },
9434+ "signatures": {
9435+ "@alice_619:hs1": {
9436+ "ed25519:ALICEDEVICE619": "SDSZOESigarAMJwq1wSAZSu0py5gnGJBsI0r3lL9QI4N36nlGMm0mKOOpFzSbgaQwW8VEegnRIFqoiXYHREEAw"
9437+ }
9438+ },
9439+ "user_id": "@alice_619:hs1",
9440+ "unsigned": {}
9441+ }
9442+ },
9443+ "@alice_620:hs1": {
9444+ "ALICEDEVICE620": {
9445+ "algorithms": [
9446+ "m.olm.v1.curve25519-aes-sha2",
9447+ "m.megolm.v1.aes-sha2"
9448+ ],
9449+ "device_id": "ALICEDEVICE620",
9450+ "keys": {
9451+ "curve25519:ALICEDEVICE620": "RhnjDaqo1nMi2fabopufGInvXW26U0hlxP5nl/ltclM",
9452+ "ed25519:ALICEDEVICE620": "2FRqxgm/9otLhiHaaUd/ZvcUT+atMzbLvy64+GUOUTU"
9453+ },
9454+ "signatures": {
9455+ "@alice_620:hs1": {
9456+ "ed25519:ALICEDEVICE620": "X89IYbaFxi+zw+gkuZCDqhdu54DKjkBsLpWxoJAPx/tn20vk7uxb43EeEP/cksxDcpEmLuTYc40iycw+WPrzBQ"
9457+ }
9458+ },
9459+ "user_id": "@alice_620:hs1",
9460+ "unsigned": {}
9461+ }
9462+ },
9463+ "@alice_623:hs1": {
9464+ "ALICEDEVICE623": {
9465+ "algorithms": [
9466+ "m.olm.v1.curve25519-aes-sha2",
9467+ "m.megolm.v1.aes-sha2"
9468+ ],
9469+ "device_id": "ALICEDEVICE623",
9470+ "keys": {
9471+ "curve25519:ALICEDEVICE623": "k1D4R7NUri5H7DauLURcwGCIziC00x51hWqCHcrzuRg",
9472+ "ed25519:ALICEDEVICE623": "dd4mQmCn5BZVFMtYFcm7/AvXvHm4NaF7IJKVqPp9ljI"
9473+ },
9474+ "signatures": {
9475+ "@alice_623:hs1": {
9476+ "ed25519:ALICEDEVICE623": "Ziw1T74BQOiv/vSxNAJak2Is/FXWkXWaal0H0iwaT0HI0wbS1o7vDIRChEm8v9fJOrqNcwN0VGsdJwuTBHhPAQ"
9477+ }
9478+ },
9479+ "user_id": "@alice_623:hs1",
9480+ "unsigned": {}
9481+ }
9482+ },
9483+ "@alice_626:hs1": {
9484+ "ALICEDEVICE626": {
9485+ "algorithms": [
9486+ "m.olm.v1.curve25519-aes-sha2",
9487+ "m.megolm.v1.aes-sha2"
9488+ ],
9489+ "device_id": "ALICEDEVICE626",
9490+ "keys": {
9491+ "curve25519:ALICEDEVICE626": "TauoF2hgMkrdhJYz2VcpahMGBwLJJGCDUCX5HyYx6FM",
9492+ "ed25519:ALICEDEVICE626": "dZuOykuFNNNgx9biKaSE6+MzxrcUMT3k1UKkvzb/MJ4"
9493+ },
9494+ "signatures": {
9495+ "@alice_626:hs1": {
9496+ "ed25519:ALICEDEVICE626": "fauecVWs0MjWhwMTD8c+DuDnTl6pxP/VcO5XKCnjCTi/fOGotmtuMjHbtI0AxehiVOINwNGGb6UdAbDfh06EAg"
9497+ }
9498+ },
9499+ "user_id": "@alice_626:hs1",
9500+ "unsigned": {}
9501+ }
9502+ },
9503+ "@alice_628:hs1": {
9504+ "ALICEDEVICE628": {
9505+ "algorithms": [
9506+ "m.olm.v1.curve25519-aes-sha2",
9507+ "m.megolm.v1.aes-sha2"
9508+ ],
9509+ "device_id": "ALICEDEVICE628",
9510+ "keys": {
9511+ "curve25519:ALICEDEVICE628": "A0Fh1X3jju+7z7GL892BzvMTiQlpoxQxlP5cmXCop1Y",
9512+ "ed25519:ALICEDEVICE628": "IFS58gVNVU0sMCa3vhv0d0AJX8svSgYt+sW/e2bvQ7o"
9513+ },
9514+ "signatures": {
9515+ "@alice_628:hs1": {
9516+ "ed25519:ALICEDEVICE628": "rL/NOgff7Qc+kbNHN28MbdhRjrB/eoGokdrjgbbv3RNzRhTPGTNh/qOnX7uBLG80LQHmScssWbTn2HHj1CdXDw"
9517+ }
9518+ },
9519+ "user_id": "@alice_628:hs1",
9520+ "unsigned": {}
9521+ }
9522+ },
9523+ "@alice_631:hs1": {
9524+ "ALICEDEVICE631": {
9525+ "algorithms": [
9526+ "m.olm.v1.curve25519-aes-sha2",
9527+ "m.megolm.v1.aes-sha2"
9528+ ],
9529+ "device_id": "ALICEDEVICE631",
9530+ "keys": {
9531+ "curve25519:ALICEDEVICE631": "0Pr9n4o65AhpzGpRDdSOqrG7xVBKmEP+zt9zpJJWQ2E",
9532+ "ed25519:ALICEDEVICE631": "vToN3ZOp//04YtoFfkvlWTZwP7zgL/eAerxgSajpDvw"
9533+ },
9534+ "signatures": {
9535+ "@alice_631:hs1": {
9536+ "ed25519:ALICEDEVICE631": "04naXRw8+PPKHi4bX63w3mKi96WL1J/NJ+rnGtcFIjmOhn6OP+wKtXAxN0l5Ldz7lKo+JdwK/f+yRLQE+ABeDA"
9537+ }
9538+ },
9539+ "user_id": "@alice_631:hs1",
9540+ "unsigned": {}
9541+ }
9542+ },
9543+ "@alice_658:hs1": {
9544+ "ALICEDEVICE658": {
9545+ "algorithms": [
9546+ "m.olm.v1.curve25519-aes-sha2",
9547+ "m.megolm.v1.aes-sha2"
9548+ ],
9549+ "device_id": "ALICEDEVICE658",
9550+ "keys": {
9551+ "curve25519:ALICEDEVICE658": "5I0Idje+V2YXzpVUImJrV31q5msoTRx3c8eiy+J4fw0",
9552+ "ed25519:ALICEDEVICE658": "xrwIWmlgGiFFfnILtEnabUvglETRWIyD+5RshTLCeVM"
9553+ },
9554+ "signatures": {
9555+ "@alice_658:hs1": {
9556+ "ed25519:ALICEDEVICE658": "xWJD86UjqAlL2PWOdMggNSVDmoIbHTZLkTOQFFDwoS+qebUYfhDJqwWF9YOLn6giihxfs74qq7xxqerNzzczAA"
9557+ }
9558+ },
9559+ "user_id": "@alice_658:hs1",
9560+ "unsigned": {}
9561+ }
9562+ },
9563+ "@alice_659:hs1": {
9564+ "ALICEDEVICE659": {
9565+ "algorithms": [
9566+ "m.olm.v1.curve25519-aes-sha2",
9567+ "m.megolm.v1.aes-sha2"
9568+ ],
9569+ "device_id": "ALICEDEVICE659",
9570+ "keys": {
9571+ "curve25519:ALICEDEVICE659": "/uy8h9zn02sesb7HUujl2zvoJqOydOIm4C1j4wtjxVM",
9572+ "ed25519:ALICEDEVICE659": "slG4u+pwVGQQGKys50XMdSvnf63b8w4JYGa/l3GfJWo"
9573+ },
9574+ "signatures": {
9575+ "@alice_659:hs1": {
9576+ "ed25519:ALICEDEVICE659": "6lfiNS+css11BUyKzEerUQaHKmEBqOQ3jMZPxR9jq/Cs3LPxadM3jFovu5Zoukl3MgbS8psnFchFPPDiEOl4Dw"
9577+ }
9578+ },
9579+ "user_id": "@alice_659:hs1",
9580+ "unsigned": {}
9581+ }
9582+ },
9583+ "@alice_662:hs1": {
9584+ "ALICEDEVICE662": {
9585+ "algorithms": [
9586+ "m.olm.v1.curve25519-aes-sha2",
9587+ "m.megolm.v1.aes-sha2"
9588+ ],
9589+ "device_id": "ALICEDEVICE662",
9590+ "keys": {
9591+ "curve25519:ALICEDEVICE662": "PU93n7f+JPpdrhUGhi6YZyF4EHpYi0b3cuWLG+ybx3g",
9592+ "ed25519:ALICEDEVICE662": "2zlXnTDpOJbO0hk8FIBHjXC8MRWqUNXynxU2p4g3DGM"
9593+ },
9594+ "signatures": {
9595+ "@alice_662:hs1": {
9596+ "ed25519:ALICEDEVICE662": "gCVyNVBrnvZ2qFLcw5uqB23W+UvYHnI9qh3HFdCPzFm8mnL0aKALCSxuurmgHWTkpxIY9jRfTQr86/Wz2LezBQ"
9597+ }
9598+ },
9599+ "user_id": "@alice_662:hs1",
9600+ "unsigned": {}
9601+ }
9602+ },
9603+ "@alice_67:hs1": {
9604+ "ALICEDEVICE67": {
9605+ "algorithms": [
9606+ "m.olm.v1.curve25519-aes-sha2",
9607+ "m.megolm.v1.aes-sha2"
9608+ ],
9609+ "device_id": "ALICEDEVICE67",
9610+ "keys": {
9611+ "curve25519:ALICEDEVICE67": "BgYhlZa5u+6dsBWe2nqSrncr5HvUAUgT9cYIQfE/nEY",
9612+ "ed25519:ALICEDEVICE67": "XUbnTaHnShFwPckK2ALyVTHpnZXHyWkcZw6x8HO5how"
9613+ },
9614+ "signatures": {
9615+ "@alice_67:hs1": {
9616+ "ed25519:ALICEDEVICE67": "MJX0D+n1aE5Mn9h2U+1nOe8AriZPEKHgm925PPRjEsF/13ZHxCYXZNb91eT7ftP35HojoVbY+3C6Zyyju3+tCw"
9617+ }
9618+ },
9619+ "user_id": "@alice_67:hs1",
9620+ "unsigned": {}
9621+ }
9622+ },
9623+ "@alice_71:hs1": {
9624+ "ALICEDEVICE71": {
9625+ "algorithms": [
9626+ "m.olm.v1.curve25519-aes-sha2",
9627+ "m.megolm.v1.aes-sha2"
9628+ ],
9629+ "device_id": "ALICEDEVICE71",
9630+ "keys": {
9631+ "curve25519:ALICEDEVICE71": "83cFmKjVbjefl72ulzsNQuW9f7K41NfsX+aJ/GporTo",
9632+ "ed25519:ALICEDEVICE71": "MRdp+wNjZn5XIw70iQf6k7XPTh7QUTe8S6J+1Ptp7cU"
9633+ },
9634+ "signatures": {
9635+ "@alice_71:hs1": {
9636+ "ed25519:ALICEDEVICE71": "HudGRS+6GwbwXDQdg+wBk1n2WPIvSqg2kshYl5zZzF+LUaTx6M7WAr5frsZp4aj3CPYNc+4JLJOfezIWpVVABg"
9637+ }
9638+ },
9639+ "user_id": "@alice_71:hs1",
9640+ "unsigned": {}
9641+ }
9642+ },
9643+ "@alice_735:hs1": {
9644+ "ALICEDEVICE735": {
9645+ "algorithms": [
9646+ "m.olm.v1.curve25519-aes-sha2",
9647+ "m.megolm.v1.aes-sha2"
9648+ ],
9649+ "device_id": "ALICEDEVICE735",
9650+ "keys": {
9651+ "curve25519:ALICEDEVICE735": "FUP/oeCrb4sHRT5RyJa3qUINrNwKeO0P4w8SKs7DT04",
9652+ "ed25519:ALICEDEVICE735": "ZkTZl9J7iK0SetULvwkrIqJs/sai0FcIyVGe5AIA8NU"
9653+ },
9654+ "signatures": {
9655+ "@alice_735:hs1": {
9656+ "ed25519:ALICEDEVICE735": "bADdJjk4rNLntVNRJJoEO8/kYxLD5/7YpIPxWYBfFrMsbMXe39GxD8AParg9k+BJfYS5YsSbEQQdr57kQDjHDg"
9657+ }
9658+ },
9659+ "user_id": "@alice_735:hs1",
9660+ "unsigned": {}
9661+ }
9662+ },
9663+ "@alice_739:hs1": {
9664+ "ALICEDEVICE739": {
9665+ "algorithms": [
9666+ "m.olm.v1.curve25519-aes-sha2",
9667+ "m.megolm.v1.aes-sha2"
9668+ ],
9669+ "device_id": "ALICEDEVICE739",
9670+ "keys": {
9671+ "curve25519:ALICEDEVICE739": "Nympn9su+R8b3Al5gzGPMhtpMjAo0o4W41KuyVgSMCA",
9672+ "ed25519:ALICEDEVICE739": "0BLcYZblh1ek9NUm9CZWFDkpPqtrAtiz6l2+lw2UFvE"
9673+ },
9674+ "signatures": {
9675+ "@alice_739:hs1": {
9676+ "ed25519:ALICEDEVICE739": "ZKVnOgABB+mFTwdJmkKpuhFLHBnR6v1Ww6/If0WF+M5GEILcQLQ6zWfsjihIkOc1JdGdGBFvcH0X84AhiOnMBg"
9677+ }
9678+ },
9679+ "user_id": "@alice_739:hs1",
9680+ "unsigned": {}
9681+ }
9682+ },
9683+ "@alice_743:hs1": {
9684+ "ALICEDEVICE743": {
9685+ "algorithms": [
9686+ "m.olm.v1.curve25519-aes-sha2",
9687+ "m.megolm.v1.aes-sha2"
9688+ ],
9689+ "device_id": "ALICEDEVICE743",
9690+ "keys": {
9691+ "curve25519:ALICEDEVICE743": "xBf/Y8p7VOP13WOQ8M3es06/7QCZYI31gq//DAF6hj4",
9692+ "ed25519:ALICEDEVICE743": "MmUHYL/NdnfFKXaAozA2Oghw7sTUw7OPq4pRZOaW98k"
9693+ },
9694+ "signatures": {
9695+ "@alice_743:hs1": {
9696+ "ed25519:ALICEDEVICE743": "L4EtvKowTzuSW0oIZ8v/JeHxJS0l7gqD4RCAr6QNqWVy2rcd23/iYUpeDwH31K3Hbkhw9JJeHcyiU1pFZ/NaCQ"
9697+ }
9698+ },
9699+ "user_id": "@alice_743:hs1",
9700+ "unsigned": {}
9701+ }
9702+ },
9703+ "@alice_74:hs1": {
9704+ "ALICEDEVICE74": {
9705+ "algorithms": [
9706+ "m.olm.v1.curve25519-aes-sha2",
9707+ "m.megolm.v1.aes-sha2"
9708+ ],
9709+ "device_id": "ALICEDEVICE74",
9710+ "keys": {
9711+ "curve25519:ALICEDEVICE74": "c5013/9crUginChX0A9qp1J4rBYZyXIlSclLGECPUHg",
9712+ "ed25519:ALICEDEVICE74": "Lf1U+2OWPuT31+PYRbGsKP0hVAV9VVjKg5v8l35DH+U"
9713+ },
9714+ "signatures": {
9715+ "@alice_74:hs1": {
9716+ "ed25519:ALICEDEVICE74": "+PRLDR+j/EgAKD/rrwaakdwFs8vhe1wo3w7nE5LoW4ehq1e5BsBrLb64O79lLQhRPmorVvPbk2AROXHU8ZckBA"
9717+ }
9718+ },
9719+ "user_id": "@alice_74:hs1",
9720+ "unsigned": {}
9721+ }
9722+ },
9723+ "@alice_779:hs1": {
9724+ "ALICEDEVICE779": {
9725+ "algorithms": [
9726+ "m.olm.v1.curve25519-aes-sha2",
9727+ "m.megolm.v1.aes-sha2"
9728+ ],
9729+ "device_id": "ALICEDEVICE779",
9730+ "keys": {
9731+ "curve25519:ALICEDEVICE779": "R8qCZzThTKbTR8efeN7m3Fcoz9/4g4+elrRHaRrg9Dc",
9732+ "ed25519:ALICEDEVICE779": "Ni3i0w+9CAEBQ4APgsTMCTC66OjWScy2THySqAyVzQs"
9733+ },
9734+ "signatures": {
9735+ "@alice_779:hs1": {
9736+ "ed25519:ALICEDEVICE779": "s+3H+Bh1j3GtKDNZasboj9VSVmihJSXLUtZrw69W+u3DStX9D5E6gopf6/0bE3B94xZRIJRAcsCq0r6DA2FcBw"
9737+ }
9738+ },
9739+ "user_id": "@alice_779:hs1",
9740+ "unsigned": {}
9741+ }
9742+ },
9743+ "@alice_788:hs1": {
9744+ "ALICEDEVICE788": {
9745+ "algorithms": [
9746+ "m.olm.v1.curve25519-aes-sha2",
9747+ "m.megolm.v1.aes-sha2"
9748+ ],
9749+ "device_id": "ALICEDEVICE788",
9750+ "keys": {
9751+ "curve25519:ALICEDEVICE788": "aiCn8sNsOb5BctVCleq2I54w/kbVDVMe+/tCTS6vqEQ",
9752+ "ed25519:ALICEDEVICE788": "kRJKDChIOpU474TEcKg7HztewhW0VehbFB/icQTrSsU"
9753+ },
9754+ "signatures": {
9755+ "@alice_788:hs1": {
9756+ "ed25519:ALICEDEVICE788": "K8/G/UGOwm+nKEve8pqhwBUEuh6XDRDgC42hqCGccV0nl4arVnnexaE63/rahQHjN5AYHrMu4gwvmZ2iG4YyDg"
9757+ }
9758+ },
9759+ "user_id": "@alice_788:hs1",
9760+ "unsigned": {}
9761+ }
9762+ },
9763+ "@alice_794:hs1": {
9764+ "ALICEDEVICE794": {
9765+ "algorithms": [
9766+ "m.olm.v1.curve25519-aes-sha2",
9767+ "m.megolm.v1.aes-sha2"
9768+ ],
9769+ "device_id": "ALICEDEVICE794",
9770+ "keys": {
9771+ "curve25519:ALICEDEVICE794": "uwCCiLsB3pHDPYnYs+5MoigqgPRnfkFfvEKWrg2+LiM",
9772+ "ed25519:ALICEDEVICE794": "G3U2LAo5JDZI8+84t0jyx6oXEEekZMcEqWftN0OBBik"
9773+ },
9774+ "signatures": {
9775+ "@alice_794:hs1": {
9776+ "ed25519:ALICEDEVICE794": "dclDYXvfwRHHDhdfPk85jg1hIauBJwOWJYSidHLCv6yu+dKkPEezgjIJm8YoligTxy5plrjww7+lrVxAB7V/Bg"
9777+ }
9778+ },
9779+ "user_id": "@alice_794:hs1",
9780+ "unsigned": {}
9781+ }
9782+ },
9783+ "@alice_797:hs1": {
9784+ "ALICEDEVICE797": {
9785+ "algorithms": [
9786+ "m.olm.v1.curve25519-aes-sha2",
9787+ "m.megolm.v1.aes-sha2"
9788+ ],
9789+ "device_id": "ALICEDEVICE797",
9790+ "keys": {
9791+ "curve25519:ALICEDEVICE797": "7GCjcssmPXCRHmBGbveaAvTpXIhqFniWEAomCp8s8no",
9792+ "ed25519:ALICEDEVICE797": "xzBaZb3QUVQKpjtetgAfALvM0hsuj2sHGObyIBg4Hkg"
9793+ },
9794+ "signatures": {
9795+ "@alice_797:hs1": {
9796+ "ed25519:ALICEDEVICE797": "XzVneAk8KPYd/iv69cTT/stJjbh695zEp4gg+XRl1dgWRdqsraP800NXhLkaCG4phAKQjiJ++Dx8sGIEEd4nCw"
9797+ }
9798+ },
9799+ "user_id": "@alice_797:hs1",
9800+ "unsigned": {}
9801+ }
9802+ },
9803+ "@alice_807:hs1": {
9804+ "ALICEDEVICE807": {
9805+ "algorithms": [
9806+ "m.olm.v1.curve25519-aes-sha2",
9807+ "m.megolm.v1.aes-sha2"
9808+ ],
9809+ "device_id": "ALICEDEVICE807",
9810+ "keys": {
9811+ "curve25519:ALICEDEVICE807": "CvMiFDWa6a6+c8Yehck3raUQplZpfN3FhyHgnz0m+Dk",
9812+ "ed25519:ALICEDEVICE807": "bAnaE3fJ2dDFTtYZMBehu1gdiD97SCoQ3l69OYWWIsw"
9813+ },
9814+ "signatures": {
9815+ "@alice_807:hs1": {
9816+ "ed25519:ALICEDEVICE807": "JPKj/qhm6YUGkIxwn/2m/bljC767wHfhMvVcZinz/nQGlnTmSVIbdT/eN3aaggqyMK1ZNbs23rLN6mxE8hfcDA"
9817+ }
9818+ },
9819+ "user_id": "@alice_807:hs1",
9820+ "unsigned": {}
9821+ }
9822+ },
9823+ "@alice_809:hs1": {
9824+ "ALICEDEVICE809": {
9825+ "algorithms": [
9826+ "m.olm.v1.curve25519-aes-sha2",
9827+ "m.megolm.v1.aes-sha2"
9828+ ],
9829+ "device_id": "ALICEDEVICE809",
9830+ "keys": {
9831+ "curve25519:ALICEDEVICE809": "Nt28DTCOOP+nym8sdNnJT51eoHVqUdEp68jXV/PSE3Q",
9832+ "ed25519:ALICEDEVICE809": "pPxhgqd/PChRr6k7jBVPt3bvdIJb5Em3gNAigv+geTA"
9833+ },
9834+ "signatures": {
9835+ "@alice_809:hs1": {
9836+ "ed25519:ALICEDEVICE809": "Ku7/WZQqNEl/6INQ/lRJ5omxwR9tYUMjVnvppgYqDChc8aQucknf+gfPw9r1ZLmS8KznrnAk39q+oI2ex+zOBA"
9837+ }
9838+ },
9839+ "user_id": "@alice_809:hs1",
9840+ "unsigned": {}
9841+ }
9842+ },
9843+ "@alice_826:hs1": {
9844+ "ALICEDEVICE826": {
9845+ "algorithms": [
9846+ "m.olm.v1.curve25519-aes-sha2",
9847+ "m.megolm.v1.aes-sha2"
9848+ ],
9849+ "device_id": "ALICEDEVICE826",
9850+ "keys": {
9851+ "curve25519:ALICEDEVICE826": "A0mbnvxq1AhMGFdzCi2vCpiQL7hi3O/npnt6pGfJS0M",
9852+ "ed25519:ALICEDEVICE826": "q4SWVPdP2M8QoWmGs///vMcDhL6hI4h9JoJ1QeU//qg"
9853+ },
9854+ "signatures": {
9855+ "@alice_826:hs1": {
9856+ "ed25519:ALICEDEVICE826": "jplmcscII+sYDxQBGgZdvSc1244lYVrJLMwdOtJsY8tCxhNWLGDBWdTfAarEIJpigUZ1hTPP7llg7I1jkIVaCw"
9857+ }
9858+ },
9859+ "user_id": "@alice_826:hs1",
9860+ "unsigned": {}
9861+ }
9862+ },
9863+ "@alice_842:hs1": {
9864+ "ALICEDEVICE842": {
9865+ "algorithms": [
9866+ "m.olm.v1.curve25519-aes-sha2",
9867+ "m.megolm.v1.aes-sha2"
9868+ ],
9869+ "device_id": "ALICEDEVICE842",
9870+ "keys": {
9871+ "curve25519:ALICEDEVICE842": "QEX2kCTUAF2EjPtQFpEnmirsusZCRGe/8HxQvTJr1mE",
9872+ "ed25519:ALICEDEVICE842": "zWcIEZ9YXzv2ETTFVN3BuD9ILHKPd6INswmALCKupiA"
9873+ },
9874+ "signatures": {
9875+ "@alice_842:hs1": {
9876+ "ed25519:ALICEDEVICE842": "PAmTI4LPQC293GvMFVnKX/66NRUF2ZFgYqXF29imzMBNcWdDEeYupcY7SRAiODntCdqOW/UElgAEyYDmjzX1BA"
9877+ }
9878+ },
9879+ "user_id": "@alice_842:hs1",
9880+ "unsigned": {}
9881+ }
9882+ },
9883+ "@alice_853:hs1": {
9884+ "ALICEDEVICE853": {
9885+ "algorithms": [
9886+ "m.olm.v1.curve25519-aes-sha2",
9887+ "m.megolm.v1.aes-sha2"
9888+ ],
9889+ "device_id": "ALICEDEVICE853",
9890+ "keys": {
9891+ "curve25519:ALICEDEVICE853": "t3bSAabJHQfIt1p5mL8x+U4Za25rdkQWdTupRtyORSg",
9892+ "ed25519:ALICEDEVICE853": "nQXnsZejevBdrhOjGt9boU2XJdC/UviVj5WpifEWlDc"
9893+ },
9894+ "signatures": {
9895+ "@alice_853:hs1": {
9896+ "ed25519:ALICEDEVICE853": "BSZUgNngdxGNV2XnmnVVelvlz3o4VS+8/KRGFYo0j7NzKkGrHY7LNii4t4oo4ApLaL6doKg+isJiqd63gxKwBw"
9897+ }
9898+ },
9899+ "user_id": "@alice_853:hs1",
9900+ "unsigned": {}
9901+ }
9902+ },
9903+ "@alice_857:hs1": {
9904+ "ALICEDEVICE857": {
9905+ "algorithms": [
9906+ "m.olm.v1.curve25519-aes-sha2",
9907+ "m.megolm.v1.aes-sha2"
9908+ ],
9909+ "device_id": "ALICEDEVICE857",
9910+ "keys": {
9911+ "curve25519:ALICEDEVICE857": "HfjvnY9sr2RVc1xE6hBFrjm+3GfNOnfVd0A25RllYl0",
9912+ "ed25519:ALICEDEVICE857": "VX4K1vGy7M5D8w1NlPfe7iWRT3zb5SDqBdu1ry0eJA8"
9913+ },
9914+ "signatures": {
9915+ "@alice_857:hs1": {
9916+ "ed25519:ALICEDEVICE857": "06vuc7Vabw2sR4LIGlqYDIdvTmMicFeXZ33zx+3fpQGGWM+uENkZfkQ487GDNTH2Gt+HvNwohxD0kO0BObM7Dw"
9917+ }
9918+ },
9919+ "user_id": "@alice_857:hs1",
9920+ "unsigned": {}
9921+ }
9922+ },
9923+ "@alice_858:hs1": {
9924+ "ALICEDEVICE858": {
9925+ "algorithms": [
9926+ "m.olm.v1.curve25519-aes-sha2",
9927+ "m.megolm.v1.aes-sha2"
9928+ ],
9929+ "device_id": "ALICEDEVICE858",
9930+ "keys": {
9931+ "curve25519:ALICEDEVICE858": "fRhxVFu5Oyn3FQF5tk0AMa5VXYTfw4fBt++m7XT8HxM",
9932+ "ed25519:ALICEDEVICE858": "kCVLnHANW9W0nlOUiWt5/I/SLMPAWA7oo1SphSiLBSc"
9933+ },
9934+ "signatures": {
9935+ "@alice_858:hs1": {
9936+ "ed25519:ALICEDEVICE858": "79pSpQ/kKyS5PB5WtFLomu9UQKjTRiQi30ec1uvRET95KqaQecJ79XYgGWRPHaIOi4v62AARy+79Y/yrGf24DQ"
9937+ }
9938+ },
9939+ "user_id": "@alice_858:hs1",
9940+ "unsigned": {}
9941+ }
9942+ },
9943+ "@alice_870:hs1": {
9944+ "ALICEDEVICE870": {
9945+ "algorithms": [
9946+ "m.olm.v1.curve25519-aes-sha2",
9947+ "m.megolm.v1.aes-sha2"
9948+ ],
9949+ "device_id": "ALICEDEVICE870",
9950+ "keys": {
9951+ "curve25519:ALICEDEVICE870": "yiMRtD73uvnuKUNoacRmDS+u45TqPL7t5qXcD6pkyBY",
9952+ "ed25519:ALICEDEVICE870": "+0biNn3a9b+/eN32nNXd9NyYC3B0MX81p6fpY9KAcaY"
9953+ },
9954+ "signatures": {
9955+ "@alice_870:hs1": {
9956+ "ed25519:ALICEDEVICE870": "yhO8A+8BbAegmB1MJ2Ll64GaekeNV+FrfB3FtJw1N3yxtD5JeHTEpOL7W5/xgnvW/NIWKVWsmTYkVJWTjKY0DA"
9957+ }
9958+ },
9959+ "user_id": "@alice_870:hs1",
9960+ "unsigned": {}
9961+ }
9962+ },
9963+ "@alice_871:hs1": {
9964+ "ALICEDEVICE871": {
9965+ "algorithms": [
9966+ "m.olm.v1.curve25519-aes-sha2",
9967+ "m.megolm.v1.aes-sha2"
9968+ ],
9969+ "device_id": "ALICEDEVICE871",
9970+ "keys": {
9971+ "curve25519:ALICEDEVICE871": "fgsuwVfPpcyg0Yj8cakMJttfisrTSWEZb+7Y25kFiR0",
9972+ "ed25519:ALICEDEVICE871": "w86V90g9vDPX7G3EOMzDWZSBJUHRlR6DFK5K5rgM6TU"
9973+ },
9974+ "signatures": {
9975+ "@alice_871:hs1": {
9976+ "ed25519:ALICEDEVICE871": "Z8ZAO6dRzBXoiWFesOvrHm7IUV66KyibSjiIrKCdZeu8sxMC8KVDStwhPuxiW8duq8puXQSZ0u8d5rY9YveTDw"
9977+ }
9978+ },
9979+ "user_id": "@alice_871:hs1",
9980+ "unsigned": {}
9981+ }
9982+ },
9983+ "@alice_875:hs1": {
9984+ "ALICEDEVICE875": {
9985+ "algorithms": [
9986+ "m.olm.v1.curve25519-aes-sha2",
9987+ "m.megolm.v1.aes-sha2"
9988+ ],
9989+ "device_id": "ALICEDEVICE875",
9990+ "keys": {
9991+ "curve25519:ALICEDEVICE875": "qHo++fCBtoelTf3b+gPNBU6C0+PfeAPcsWSRqEAghlY",
9992+ "ed25519:ALICEDEVICE875": "vox5K/t4sz0eUfISW+tcoXOUkon0kAtDhupikW6RJwA"
9993+ },
9994+ "signatures": {
9995+ "@alice_875:hs1": {
9996+ "ed25519:ALICEDEVICE875": "z+eRHFAUyUVrrazZLxVN4i3KWe27qxjgehaQPQVY+vML412T122S6qvREr6Mev6PTJfTL7+l9lMARYlGYhHJBw"
9997+ }
9998+ },
9999+ "user_id": "@alice_875:hs1",
10000+ "unsigned": {}
10001+ }
10002+ },
10003+ "@alice_914:hs1": {
10004+ "ALICEDEVICE914": {
10005+ "algorithms": [
10006+ "m.olm.v1.curve25519-aes-sha2",
10007+ "m.megolm.v1.aes-sha2"
10008+ ],
10009+ "device_id": "ALICEDEVICE914",
10010+ "keys": {
10011+ "curve25519:ALICEDEVICE914": "MdmmipV/Fvsa+KW0fMJwzIpFUNyRT57vyVoH3dnC8Fc",
10012+ "ed25519:ALICEDEVICE914": "x2n4Rs56SdCBoOtXjrb50aBs+jDm+SP3tQSbUf17hrk"
10013+ },
10014+ "signatures": {
10015+ "@alice_914:hs1": {
10016+ "ed25519:ALICEDEVICE914": "lZm5IqVyiXA+opPuup+LfgphBUMWFWZ6mT/qwRVpC8INdCkRmd/JfaRinLGMzYcBo+gW/eBzcZYifmmrBrRSAQ"
10017+ }
10018+ },
10019+ "user_id": "@alice_914:hs1",
10020+ "unsigned": {}
10021+ }
10022+ },
10023+ "@alice_925:hs1": {
10024+ "ALICEDEVICE925": {
10025+ "algorithms": [
10026+ "m.olm.v1.curve25519-aes-sha2",
10027+ "m.megolm.v1.aes-sha2"
10028+ ],
10029+ "device_id": "ALICEDEVICE925",
10030+ "keys": {
10031+ "curve25519:ALICEDEVICE925": "C0KUnxjo/AsVZi+owLegUfyrYP9LPIZDR1VqohrxN2I",
10032+ "ed25519:ALICEDEVICE925": "gMa6qJgomMafl0vCuvl26bsEvUKgA3wyDtlIkblCFGw"
10033+ },
10034+ "signatures": {
10035+ "@alice_925:hs1": {
10036+ "ed25519:ALICEDEVICE925": "/oV1CHFP8amsEzjoYS+oSLSAPVKwbvRtN4hPIO15tvNXkMroEEIuMAVuLvI48uiHTU1tGUuZjP+hcWSXm+OXCg"
10037+ }
10038+ },
10039+ "user_id": "@alice_925:hs1",
10040+ "unsigned": {}
10041+ }
10042+ },
10043+ "@alice_930:hs1": {
10044+ "ALICEDEVICE930": {
10045+ "algorithms": [
10046+ "m.olm.v1.curve25519-aes-sha2",
10047+ "m.megolm.v1.aes-sha2"
10048+ ],
10049+ "device_id": "ALICEDEVICE930",
10050+ "keys": {
10051+ "curve25519:ALICEDEVICE930": "Rle5UXXbH8GXZdTQNGLQT03gY7A/6eSFYXcN59IyL0w",
10052+ "ed25519:ALICEDEVICE930": "tnH+2a2B5XTQFDuvE2I0i0EcKjShr/Zn8J4obTH5YZ8"
10053+ },
10054+ "signatures": {
10055+ "@alice_930:hs1": {
10056+ "ed25519:ALICEDEVICE930": "T+czXrUWxUW6m+FPMEojildnXvYkljxyhKZVcsbU4ifmFFFb/clH9aCBWUCAdtUXclYD/DWzk5EBNVERkZLmAA"
10057+ }
10058+ },
10059+ "user_id": "@alice_930:hs1",
10060+ "unsigned": {}
10061+ }
10062+ },
10063+ "@alice_932:hs1": {
10064+ "ALICEDEVICE932": {
10065+ "algorithms": [
10066+ "m.olm.v1.curve25519-aes-sha2",
10067+ "m.megolm.v1.aes-sha2"
10068+ ],
10069+ "device_id": "ALICEDEVICE932",
10070+ "keys": {
10071+ "curve25519:ALICEDEVICE932": "SEIulJSpIquLYLYBL/D3iTFxWdNlvCM0nal5+eipgE8",
10072+ "ed25519:ALICEDEVICE932": "2vkVWdwBs+O3Fl53A1pnEE4Q4Hu9FHhckV74i55/X3Q"
10073+ },
10074+ "signatures": {
10075+ "@alice_932:hs1": {
10076+ "ed25519:ALICEDEVICE932": "+HZwb1jnu/8bC7dkQ/wELsSOtWAxP7oeG7nCMJcwDzAqZ1kE5Rdrh+8WlIXYW7Mcp8HSOSq0k9LvvrQ5M2fTCw"
10077+ }
10078+ },
10079+ "user_id": "@alice_932:hs1",
10080+ "unsigned": {}
10081+ }
10082+ },
10083+ "@alice_934:hs1": {
10084+ "ALICEDEVICE934": {
10085+ "algorithms": [
10086+ "m.olm.v1.curve25519-aes-sha2",
10087+ "m.megolm.v1.aes-sha2"
10088+ ],
10089+ "device_id": "ALICEDEVICE934",
10090+ "keys": {
10091+ "curve25519:ALICEDEVICE934": "w+SuaiMFMINKeYoAaRU/BgVdI4b49RG5haof/GhasjM",
10092+ "ed25519:ALICEDEVICE934": "A10niTuxv7jPhgBwCUOBHrjNHp301ZuJZi8G8oyKL78"
10093+ },
10094+ "signatures": {
10095+ "@alice_934:hs1": {
10096+ "ed25519:ALICEDEVICE934": "4ub3Px8gTTMRGowbhD46kG9SzLJegLQa+pafyoozecW4TDMAEr7SsCBNjherBrtXHzSleE48ZhYIYFJ2w4OiCw"
10097+ }
10098+ },
10099+ "user_id": "@alice_934:hs1",
10100+ "unsigned": {}
10101+ }
10102+ },
10103+ "@alice_949:hs1": {
10104+ "ALICEDEVICE949": {
10105+ "algorithms": [
10106+ "m.olm.v1.curve25519-aes-sha2",
10107+ "m.megolm.v1.aes-sha2"
10108+ ],
10109+ "device_id": "ALICEDEVICE949",
10110+ "keys": {
10111+ "curve25519:ALICEDEVICE949": "iorvD40C3Hi/chm+QSne4QGY/6jBg8vM5BsG6EBHFD0",
10112+ "ed25519:ALICEDEVICE949": "owuh+DXXEfMWAJ2YT6FP4+tcLJFQssOUIQPv4xOqLEw"
10113+ },
10114+ "signatures": {
10115+ "@alice_949:hs1": {
10116+ "ed25519:ALICEDEVICE949": "zZpls2gLiepEM0tyuZ3egf3dg51uv8S70TPEBbyHqyoyQq/JA2nEFX3637Rfn9aXr28y61QZQPo/KA8FCr/rAA"
10117+ }
10118+ },
10119+ "user_id": "@alice_949:hs1",
10120+ "unsigned": {}
10121+ }
10122+ },
10123+ "@alice_955:hs1": {
10124+ "ALICEDEVICE955": {
10125+ "algorithms": [
10126+ "m.olm.v1.curve25519-aes-sha2",
10127+ "m.megolm.v1.aes-sha2"
10128+ ],
10129+ "device_id": "ALICEDEVICE955",
10130+ "keys": {
10131+ "curve25519:ALICEDEVICE955": "5xEJBty7G/+Xz73/yG3XBnbYNhkcvlr6CUby71H8IBo",
10132+ "ed25519:ALICEDEVICE955": "h5o9Lu/PrmWPOjKWYYmnEyODq5xLLawmjrDjbPhPCro"
10133+ },
10134+ "signatures": {
10135+ "@alice_955:hs1": {
10136+ "ed25519:ALICEDEVICE955": "FtyISrVMOuWZE35WUocwcPSoMifXjq3Wa28xVLPl/x8AoNelJTkvD75skQxEOT/Eth2b/jWY9mu16+vfd+U3DA"
10137+ }
10138+ },
10139+ "user_id": "@alice_955:hs1",
10140+ "unsigned": {}
10141+ }
10142+ },
10143+ "@alice_959:hs1": {
10144+ "ALICEDEVICE959": {
10145+ "algorithms": [
10146+ "m.olm.v1.curve25519-aes-sha2",
10147+ "m.megolm.v1.aes-sha2"
10148+ ],
10149+ "device_id": "ALICEDEVICE959",
10150+ "keys": {
10151+ "curve25519:ALICEDEVICE959": "lfxcDBnetKOg+77M+KJXnSi9JySw+MLQLdqH6WV9ESo",
10152+ "ed25519:ALICEDEVICE959": "D/cCFE8jRwvtu54gpa2k14EOxw7i3jG6rAbqh/hJI4w"
10153+ },
10154+ "signatures": {
10155+ "@alice_959:hs1": {
10156+ "ed25519:ALICEDEVICE959": "sH+RSoXQd9AcVKCtRuWyHMGW5CrRQupZvFSVXYowryjEPbtd0Iuhh8KjDJDfVtTTlcXyW1uRaDtlEsFAU8MnBg"
10157+ }
10158+ },
10159+ "user_id": "@alice_959:hs1",
10160+ "unsigned": {}
10161+ }
10162+ },
10163+ "@alice_972:hs1": {
10164+ "ALICEDEVICE972": {
10165+ "algorithms": [
10166+ "m.olm.v1.curve25519-aes-sha2",
10167+ "m.megolm.v1.aes-sha2"
10168+ ],
10169+ "device_id": "ALICEDEVICE972",
10170+ "keys": {
10171+ "curve25519:ALICEDEVICE972": "SxJCwO36DwY9bjGPc9yx5PYCT0yIHjV+ntg58ktBgT0",
10172+ "ed25519:ALICEDEVICE972": "Z0t6Q7Xv5useYMy/jMmcMkLjCrj9X57QNevJZzQGEtQ"
10173+ },
10174+ "signatures": {
10175+ "@alice_972:hs1": {
10176+ "ed25519:ALICEDEVICE972": "e0lCYyFIPSjxsFhAxY420xtJGUjCpwCo+UYykSyfu23YWzjlzNxglrqmds0VLtEhZ54MohFnGhrYuM8AsxLmAw"
10177+ }
10178+ },
10179+ "user_id": "@alice_972:hs1",
10180+ "unsigned": {}
10181+ }
10182+ },
10183+ "@alice_976:hs1": {
10184+ "ALICEDEVICE976": {
10185+ "algorithms": [
10186+ "m.olm.v1.curve25519-aes-sha2",
10187+ "m.megolm.v1.aes-sha2"
10188+ ],
10189+ "device_id": "ALICEDEVICE976",
10190+ "keys": {
10191+ "curve25519:ALICEDEVICE976": "XreyihRUpo7Cjp5RE74goK8oZ0ecLSBXT6+YcsIdfj0",
10192+ "ed25519:ALICEDEVICE976": "Lt5MbaHL52r2QFtZT13xBQtYJB9zVDjBRdcZkuHIJ+g"
10193+ },
10194+ "signatures": {
10195+ "@alice_976:hs1": {
10196+ "ed25519:ALICEDEVICE976": "PZ9FVzC2RC2ft3Nd7/WlxU92izHvBWTm2RJX2BwaUolVQXcjrmPB0adJmqtdjp+QjkxijGD1WjQMpZdE3bNXDQ"
10197+ }
10198+ },
10199+ "user_id": "@alice_976:hs1",
10200+ "unsigned": {}
10201+ }
10202+ },
10203+ "@alice_977:hs1": {
10204+ "ALICEDEVICE977": {
10205+ "algorithms": [
10206+ "m.olm.v1.curve25519-aes-sha2",
10207+ "m.megolm.v1.aes-sha2"
10208+ ],
10209+ "device_id": "ALICEDEVICE977",
10210+ "keys": {
10211+ "curve25519:ALICEDEVICE977": "3MnqQoEM2s39lLSTWnR8NbGQUPUktmiiJm5BJDVvT1Q",
10212+ "ed25519:ALICEDEVICE977": "5BILv5cUM8lBFZxJPJjj4mhv6bPIAlhHerdoAIqX/7A"
10213+ },
10214+ "signatures": {
10215+ "@alice_977:hs1": {
10216+ "ed25519:ALICEDEVICE977": "VfZsneBoCY5PNjfU78JejyIuxVlZdU8kEfllZO28x8VyVd0NEekEKd5jr5HWLXEzGN8ty1EF2AncdW7+wxLMDA"
10217+ }
10218+ },
10219+ "user_id": "@alice_977:hs1",
10220+ "unsigned": {}
10221+ }
10222+ },
10223+ "@alice_984:hs1": {
10224+ "ALICEDEVICE984": {
10225+ "algorithms": [
10226+ "m.olm.v1.curve25519-aes-sha2",
10227+ "m.megolm.v1.aes-sha2"
10228+ ],
10229+ "device_id": "ALICEDEVICE984",
10230+ "keys": {
10231+ "curve25519:ALICEDEVICE984": "4ONq9s6hRh9Q4ZMow2nC2ZARzwIdU/ZRKxnAYP2Z1GA",
10232+ "ed25519:ALICEDEVICE984": "1wrv2ceMeumRqNDnYcvvVQf492VfUDMI6yo4VF9lz3k"
10233+ },
10234+ "signatures": {
10235+ "@alice_984:hs1": {
10236+ "ed25519:ALICEDEVICE984": "UMlXVye0amcJrFv9pMfR0MPluwdnqE4ssXpHLqw4f5L1aIx8xKFyI7dGJFEVG5QUMr9EC/49es0W/n2+hbktAw"
10237+ }
10238+ },
10239+ "user_id": "@alice_984:hs1",
10240+ "unsigned": {}
10241+ }
10242+ },
10243+ "@alice_988:hs1": {
10244+ "ALICEDEVICE988": {
10245+ "algorithms": [
10246+ "m.olm.v1.curve25519-aes-sha2",
10247+ "m.megolm.v1.aes-sha2"
10248+ ],
10249+ "device_id": "ALICEDEVICE988",
10250+ "keys": {
10251+ "curve25519:ALICEDEVICE988": "og2Meo9k4O2b5AH+whGrlnIt38vksMDX6dNkm/DQ3BA",
10252+ "ed25519:ALICEDEVICE988": "woJ8/ZajxDPRmBBnkT3T9CY78BbOpCdAxvfZx3GJT74"
10253+ },
10254+ "signatures": {
10255+ "@alice_988:hs1": {
10256+ "ed25519:ALICEDEVICE988": "zmcnI9k6rQbwM6ctODIy+0sFMaqNXvkRz0eWm4F2JFHWtlz1IBAkqMeWbH/4ipOj3ASNN2K0xAUrv4wDDikZBA"
10257+ }
10258+ },
10259+ "user_id": "@alice_988:hs1",
10260+ "unsigned": {}
10261+ }
10262+ },
10263+ "@alice_992:hs1": {
10264+ "ALICEDEVICE992": {
10265+ "algorithms": [
10266+ "m.olm.v1.curve25519-aes-sha2",
10267+ "m.megolm.v1.aes-sha2"
10268+ ],
10269+ "device_id": "ALICEDEVICE992",
10270+ "keys": {
10271+ "curve25519:ALICEDEVICE992": "eShO8XjCoXLnewx7XkLlQ8bDM76DRwUFlrmr3DzdqFQ",
10272+ "ed25519:ALICEDEVICE992": "HcF/TsOo0gX+1I1lud6LIHO1HYx3KwAK7lTew/Pxs4A"
10273+ },
10274+ "signatures": {
10275+ "@alice_992:hs1": {
10276+ "ed25519:ALICEDEVICE992": "2uDIguUyjdjn5bQrHRMWPx1J+nUmbMVk3SpghpzGJ10YbbQ2iLCRgT5fKZWPJDT/L86kfKDgHQdwvRme4+HUCg"
10277+ }
10278+ },
10279+ "user_id": "@alice_992:hs1",
10280+ "unsigned": {}
10281+ }
10282+ },
10283+ "@alice_994:hs1": {
10284+ "ALICEDEVICE994": {
10285+ "algorithms": [
10286+ "m.olm.v1.curve25519-aes-sha2",
10287+ "m.megolm.v1.aes-sha2"
10288+ ],
10289+ "device_id": "ALICEDEVICE994",
10290+ "keys": {
10291+ "curve25519:ALICEDEVICE994": "eJltp4Jhxwu8KJJ2BkN4nZkiVyTIbmkXrNc4j2B+NWM",
10292+ "ed25519:ALICEDEVICE994": "sPSumz6xgFSHEPGY5zreuJ+kZVnmaJ9zX4RFxBFv1M0"
10293+ },
10294+ "signatures": {
10295+ "@alice_994:hs1": {
10296+ "ed25519:ALICEDEVICE994": "CeX3os+AK00iRQGX/NZrqeerpOJym8997s6fWxTBiUZQYNlQywIVFnT1n1VVp1v9uI51t48Q/Ad8Hb4ESHs1Cw"
10297+ }
10298+ },
10299+ "user_id": "@alice_994:hs1",
10300+ "unsigned": {}
10301+ }
10302+ },
10303+ "@alice_1011:hs1": {
10304+ "ALICEDEVICE1011": {
10305+ "algorithms": [
10306+ "m.olm.v1.curve25519-aes-sha2",
10307+ "m.megolm.v1.aes-sha2"
10308+ ],
10309+ "device_id": "ALICEDEVICE1011",
10310+ "keys": {
10311+ "curve25519:ALICEDEVICE1011": "MqQNqlwge59Z2K411SR22+suHqhNDHG8NxLksqDKJlw",
10312+ "ed25519:ALICEDEVICE1011": "U6buTy9/7gdQV7ewLs1qZnqMyWE8Yt18W2gqscvHO7I"
10313+ },
10314+ "signatures": {
10315+ "@alice_1011:hs1": {
10316+ "ed25519:ALICEDEVICE1011": "y5Kzp70q6lPpKnaU2FwZ1QhktBmHTt8lxKbuu+1bBVSj0ZuM5TVu3hSqNMsK53RAKEoskYRaVs1HICvq7+iEAg"
10317+ }
10318+ },
10319+ "user_id": "@alice_1011:hs1",
10320+ "unsigned": {}
10321+ }
10322+ },
10323+ "@alice_1037:hs1": {
10324+ "ALICEDEVICE1037": {
10325+ "algorithms": [
10326+ "m.olm.v1.curve25519-aes-sha2",
10327+ "m.megolm.v1.aes-sha2"
10328+ ],
10329+ "device_id": "ALICEDEVICE1037",
10330+ "keys": {
10331+ "curve25519:ALICEDEVICE1037": "CSB0spyQJ9a+5Q5mn9zB/shzpk+R0nGlEPg7ptB5dTg",
10332+ "ed25519:ALICEDEVICE1037": "kaJhyONgh0X0BKjHDM3hV+Bk5KRsKx4JLZ1JueLUha0"
10333+ },
10334+ "signatures": {
10335+ "@alice_1037:hs1": {
10336+ "ed25519:ALICEDEVICE1037": "tHdL4ZpH4qh6ZiDA1LfRtbEGFbWESChUjqwYsleK8hPNDtBN95Wy+V24A/rJixtG4Yw2A0vzLusfAh5FDqhyCg"
10337+ }
10338+ },
10339+ "user_id": "@alice_1037:hs1",
10340+ "unsigned": {}
10341+ }
10342+ },
10343+ "@alice_103:hs1": {
10344+ "ALICEDEVICE103": {
10345+ "algorithms": [
10346+ "m.olm.v1.curve25519-aes-sha2",
10347+ "m.megolm.v1.aes-sha2"
10348+ ],
10349+ "device_id": "ALICEDEVICE103",
10350+ "keys": {
10351+ "curve25519:ALICEDEVICE103": "7OViwTbQUTfkGdqps8TMG311O/zf17c/lU/zQVCVVG8",
10352+ "ed25519:ALICEDEVICE103": "/WC/6vtj54unD5KHTMIy4LxTUDkrCa5cLGv2Xu+AmaY"
10353+ },
10354+ "signatures": {
10355+ "@alice_103:hs1": {
10356+ "ed25519:ALICEDEVICE103": "5otdeOe2WV/AHBOb81hlc6RJvRcna5bur6wGZrKo16OprJ40OUSZ7ck4N0JbrM/PkeixqHB67mPRFjtAHchCBg"
10357+ }
10358+ },
10359+ "user_id": "@alice_103:hs1",
10360+ "unsigned": {}
10361+ }
10362+ },
10363+ "@alice_1046:hs1": {
10364+ "ALICEDEVICE1046": {
10365+ "algorithms": [
10366+ "m.olm.v1.curve25519-aes-sha2",
10367+ "m.megolm.v1.aes-sha2"
10368+ ],
10369+ "device_id": "ALICEDEVICE1046",
10370+ "keys": {
10371+ "curve25519:ALICEDEVICE1046": "btzROACNO9a8V3ZIhLIyqbAqMEQLbcfp2Tolc7OYeTU",
10372+ "ed25519:ALICEDEVICE1046": "H+oPJmsfeFFkyz9or4HV5PdkvMBhQPIzwjhO8sDFBm0"
10373+ },
10374+ "signatures": {
10375+ "@alice_1046:hs1": {
10376+ "ed25519:ALICEDEVICE1046": "eaCPidfFkFbjNg/YpBbcKFMFiSWG9iXYEtfHbg+11XRgDTX7WeUsPxuzlOx0OZFdgvymPVo50kJNgULAiTKEDA"
10377+ }
10378+ },
10379+ "user_id": "@alice_1046:hs1",
10380+ "unsigned": {}
10381+ }
10382+ },
10383+ "@alice_1048:hs1": {
10384+ "ALICEDEVICE1048": {
10385+ "algorithms": [
10386+ "m.olm.v1.curve25519-aes-sha2",
10387+ "m.megolm.v1.aes-sha2"
10388+ ],
10389+ "device_id": "ALICEDEVICE1048",
10390+ "keys": {
10391+ "curve25519:ALICEDEVICE1048": "JVL3yPYCclSKcZtaKIPJbohhD9hkJYo26pRgyeOakD8",
10392+ "ed25519:ALICEDEVICE1048": "WQWJ8wp6+GV38D8hSxIfB/osrtjUdvvsd/ZkqFh00jw"
10393+ },
10394+ "signatures": {
10395+ "@alice_1048:hs1": {
10396+ "ed25519:ALICEDEVICE1048": "zOhhn7Lu0oSVmLK/Gq3/Kw2ZNg3JZ0+p6UIV7oM2BitPVRd6kN4xprM2ScN4oVAvZ3QMq6/Em6oRMEPFhOD4Aw"
10397+ }
10398+ },
10399+ "user_id": "@alice_1048:hs1",
10400+ "unsigned": {}
10401+ }
10402+ },
10403+ "@alice_1059:hs1": {
10404+ "ALICEDEVICE1059": {
10405+ "algorithms": [
10406+ "m.olm.v1.curve25519-aes-sha2",
10407+ "m.megolm.v1.aes-sha2"
10408+ ],
10409+ "device_id": "ALICEDEVICE1059",
10410+ "keys": {
10411+ "curve25519:ALICEDEVICE1059": "GiNpvdlCgv6uBK7v74mTNqCMpNiihs167oVlwsJoORM",
10412+ "ed25519:ALICEDEVICE1059": "5WPy1LJFnm3bxa6NZK7hwJYbr/2eeHZFqgGR0HYSgWw"
10413+ },
10414+ "signatures": {
10415+ "@alice_1059:hs1": {
10416+ "ed25519:ALICEDEVICE1059": "xy2gWZAGLIQs77VRwmFKjxFWIfKLu4gL7arUYUMRW2A1e7XZvOzNtBwGv/UHrV+vrUytZwXiVxc9c2v2E036Bg"
10417+ }
10418+ },
10419+ "user_id": "@alice_1059:hs1",
10420+ "unsigned": {}
10421+ }
10422+ },
10423+ "@alice_1065:hs1": {
10424+ "ALICEDEVICE1065": {
10425+ "algorithms": [
10426+ "m.olm.v1.curve25519-aes-sha2",
10427+ "m.megolm.v1.aes-sha2"
10428+ ],
10429+ "device_id": "ALICEDEVICE1065",
10430+ "keys": {
10431+ "curve25519:ALICEDEVICE1065": "CW9iNN53vP+dmqGmc3eYQk7ouBaEW7TrJFbMR4WxISs",
10432+ "ed25519:ALICEDEVICE1065": "LcjE1ibvPgtN3mPFl5ZRrpel+lIqpfQZhUm+bmE45CI"
10433+ },
10434+ "signatures": {
10435+ "@alice_1065:hs1": {
10436+ "ed25519:ALICEDEVICE1065": "61+pN4KZOwoebN2nU3HfiS5Z1pIu0Yp2g5/aUTMaGXWnRWCp7EAmaG9lpUCsevHfC3PRVeUaAai0d7xGd6LLDA"
10437+ }
10438+ },
10439+ "user_id": "@alice_1065:hs1",
10440+ "unsigned": {}
10441+ }
10442+ },
10443+ "@alice_106:hs1": {
10444+ "ALICEDEVICE106": {
10445+ "algorithms": [
10446+ "m.olm.v1.curve25519-aes-sha2",
10447+ "m.megolm.v1.aes-sha2"
10448+ ],
10449+ "device_id": "ALICEDEVICE106",
10450+ "keys": {
10451+ "curve25519:ALICEDEVICE106": "wDMTT7qPVHyH4Rm+nbTaWxQIIlRnBE53A9NlKk+2enc",
10452+ "ed25519:ALICEDEVICE106": "27HvPzkDxeDZUo49gnVCTrwvW7xv0PaPSL/XTU34/s0"
10453+ },
10454+ "signatures": {
10455+ "@alice_106:hs1": {
10456+ "ed25519:ALICEDEVICE106": "wMRs7xy4NqgwqWxQm1rowaFsK12DUybt46YxLuDAZ6Ov/+pjbby+YF163GsjFjCWSLAWTjsHKBoZw0bmOOxWDw"
10457+ }
10458+ },
10459+ "user_id": "@alice_106:hs1",
10460+ "unsigned": {}
10461+ }
10462+ },
10463+ "@alice_1073:hs1": {
10464+ "ALICEDEVICE1073": {
10465+ "algorithms": [
10466+ "m.olm.v1.curve25519-aes-sha2",
10467+ "m.megolm.v1.aes-sha2"
10468+ ],
10469+ "device_id": "ALICEDEVICE1073",
10470+ "keys": {
10471+ "curve25519:ALICEDEVICE1073": "ppazMvIwRFd5JmfNavootk2znuCJPs15SW/dYA44tg0",
10472+ "ed25519:ALICEDEVICE1073": "ABXDvumJTzvRnKjKnAn69bWZw2uBbVtc4M3/VeS4ADE"
10473+ },
10474+ "signatures": {
10475+ "@alice_1073:hs1": {
10476+ "ed25519:ALICEDEVICE1073": "ipvGhztBBkpw5LQyqJO4HLxIn9RI64LCgVYuFPUiPE0N7jtOKDZ+W7xtXAdbxWS31XQyyxaCpwI4ahHLxPtBAw"
10477+ }
10478+ },
10479+ "user_id": "@alice_1073:hs1",
10480+ "unsigned": {}
10481+ }
10482+ },
10483+ "@alice_1076:hs1": {
10484+ "ALICEDEVICE1076": {
10485+ "algorithms": [
10486+ "m.olm.v1.curve25519-aes-sha2",
10487+ "m.megolm.v1.aes-sha2"
10488+ ],
10489+ "device_id": "ALICEDEVICE1076",
10490+ "keys": {
10491+ "curve25519:ALICEDEVICE1076": "SWiCTCmGq+nNlTkhrHKmEG37MSQ9WjBfUSpvKxmJyjc",
10492+ "ed25519:ALICEDEVICE1076": "v6jxLtFGN962XUeCzfJHIETn6ZZ7K0603TR0YmK3f3E"
10493+ },
10494+ "signatures": {
10495+ "@alice_1076:hs1": {
10496+ "ed25519:ALICEDEVICE1076": "hmz3aBzlqHmexVCzMV3t3Bx3AMd1Nu8f1VQdCWFJCBFrPYuemV+RJuTvkfzcWoKCDyz/c6ZSJPyLkMMtoyPsAQ"
10497+ }
10498+ },
10499+ "user_id": "@alice_1076:hs1",
10500+ "unsigned": {}
10501+ }
10502+ },
10503+ "@alice_1081:hs1": {
10504+ "ALICEDEVICE1081": {
10505+ "algorithms": [
10506+ "m.olm.v1.curve25519-aes-sha2",
10507+ "m.megolm.v1.aes-sha2"
10508+ ],
10509+ "device_id": "ALICEDEVICE1081",
10510+ "keys": {
10511+ "curve25519:ALICEDEVICE1081": "ZEQRtkAtqh84J15xUpp54SHJNK50bhnQsebOal5f9S0",
10512+ "ed25519:ALICEDEVICE1081": "pZv8gXHJVecmBjgJ6wX1ZebBQRt63IrLBo9NM6vuevA"
10513+ },
10514+ "signatures": {
10515+ "@alice_1081:hs1": {
10516+ "ed25519:ALICEDEVICE1081": "fDhYdg/quTqFrSe3cNQzamoNo/ppRhKTBSOO6GtjeBIDxb2Uv0p6okyNriGjM5iIAh6OniO6W3y5t7YYVxeuAw"
10517+ }
10518+ },
10519+ "user_id": "@alice_1081:hs1",
10520+ "unsigned": {}
10521+ }
10522+ },
10523+ "@alice_1103:hs1": {
10524+ "ALICEDEVICE1103": {
10525+ "algorithms": [
10526+ "m.olm.v1.curve25519-aes-sha2",
10527+ "m.megolm.v1.aes-sha2"
10528+ ],
10529+ "device_id": "ALICEDEVICE1103",
10530+ "keys": {
10531+ "curve25519:ALICEDEVICE1103": "J/Biv48f+yZLgkX7gzhvvBJ02cWTVpP9Cu+Dlh0cMRI",
10532+ "ed25519:ALICEDEVICE1103": "nQzN/dwjtCvfUyJkagVTVg3EUA6+KCDeHNpFFik3NMk"
10533+ },
10534+ "signatures": {
10535+ "@alice_1103:hs1": {
10536+ "ed25519:ALICEDEVICE1103": "IvPxRGwKhVz6A8WozAKV6QowL5qP4LJY//Idyy805eK3o/5pomA9fXPrjmrdUdBNzTOUxmZCyjj72niKdJ9rAw"
10537+ }
10538+ },
10539+ "user_id": "@alice_1103:hs1",
10540+ "unsigned": {}
10541+ }
10542+ },
10543+ "@alice_110:hs1": {
10544+ "ALICEDEVICE110": {
10545+ "algorithms": [
10546+ "m.olm.v1.curve25519-aes-sha2",
10547+ "m.megolm.v1.aes-sha2"
10548+ ],
10549+ "device_id": "ALICEDEVICE110",
10550+ "keys": {
10551+ "curve25519:ALICEDEVICE110": "jg4tipqVKhNGK0OZpfyBb/P8sT4FbwgAvr0mSGMSsn8",
10552+ "ed25519:ALICEDEVICE110": "GVLsgjPLW1iZYWewV50XPRVUoH0jaegwQ7XNTcLsRf4"
10553+ },
10554+ "signatures": {
10555+ "@alice_110:hs1": {
10556+ "ed25519:ALICEDEVICE110": "Itp4DtbCWjVZbB2ZusbQhncgRvi28FfOgu848Yi1VlDETCgWTVFaQ0/4tdPEs2hQkrtMjHlZ74DSGdgI8rMvCg"
10557+ }
10558+ },
10559+ "user_id": "@alice_110:hs1",
10560+ "unsigned": {}
10561+ }
10562+ },
10563+ "@alice_1123:hs1": {
10564+ "ALICEDEVICE1123": {
10565+ "algorithms": [
10566+ "m.olm.v1.curve25519-aes-sha2",
10567+ "m.megolm.v1.aes-sha2"
10568+ ],
10569+ "device_id": "ALICEDEVICE1123",
10570+ "keys": {
10571+ "curve25519:ALICEDEVICE1123": "HgkNQtqjzU3dzStchmE11Ea0pTOUc2ZIaAMqD+zSdWE",
10572+ "ed25519:ALICEDEVICE1123": "NTtTboZ0j5O1lj/KGBlxF9Fl5kH+UYE8nNglVtGXJm0"
10573+ },
10574+ "signatures": {
10575+ "@alice_1123:hs1": {
10576+ "ed25519:ALICEDEVICE1123": "BKGwDyCMuhfZVfDwBiOu31VWJZdih0VfaL3C61bUoiSNe1GXVncbPKXmykjzHcWUPMco7FQr3lYYUEqkZ94DCw"
10577+ }
10578+ },
10579+ "user_id": "@alice_1123:hs1",
10580+ "unsigned": {}
10581+ }
10582+ },
10583+ "@alice_1127:hs1": {
10584+ "ALICEDEVICE1127": {
10585+ "algorithms": [
10586+ "m.olm.v1.curve25519-aes-sha2",
10587+ "m.megolm.v1.aes-sha2"
10588+ ],
10589+ "device_id": "ALICEDEVICE1127",
10590+ "keys": {
10591+ "curve25519:ALICEDEVICE1127": "h6RbwDzE/uo7NL/jphOMJZVA5KO/SeVDOJD8brMq0h4",
10592+ "ed25519:ALICEDEVICE1127": "IUTDJYdjeigHLs1a6JeNkid5DTM5t31l4JQ5uYSyMvg"
10593+ },
10594+ "signatures": {
10595+ "@alice_1127:hs1": {
10596+ "ed25519:ALICEDEVICE1127": "/xTijqYoVtr04Nm7+L4TCZYGDjszmYSnCF9h62ZGvEyxZtdm+fY6M0lP5HD1gbFrwCJwTA/glUGZgdDXsUqyBQ"
10597+ }
10598+ },
10599+ "user_id": "@alice_1127:hs1",
10600+ "unsigned": {}
10601+ }
10602+ },
10603+ "@alice_1136:hs1": {
10604+ "ALICEDEVICE1136": {
10605+ "algorithms": [
10606+ "m.olm.v1.curve25519-aes-sha2",
10607+ "m.megolm.v1.aes-sha2"
10608+ ],
10609+ "device_id": "ALICEDEVICE1136",
10610+ "keys": {
10611+ "curve25519:ALICEDEVICE1136": "WmSa6+eimLskNiUuXBoVeR8/iKif3As+eN47y7JqdTA",
10612+ "ed25519:ALICEDEVICE1136": "VuW06rFQJF3h3LusnGtAkH4kEBV6ivOJvIO9bIoP8wI"
10613+ },
10614+ "signatures": {
10615+ "@alice_1136:hs1": {
10616+ "ed25519:ALICEDEVICE1136": "ZTzFz2q+zo1x3UOB8O+s3vQXSs1h1bg8KC/8LsRa6L3cGqygENtA6jlUAmjsjwS7/LZJEqkOxm40IHwIrntSAw"
10617+ }
10618+ },
10619+ "user_id": "@alice_1136:hs1",
10620+ "unsigned": {}
10621+ }
10622+ },
10623+ "@alice_1138:hs1": {
10624+ "ALICEDEVICE1138": {
10625+ "algorithms": [
10626+ "m.olm.v1.curve25519-aes-sha2",
10627+ "m.megolm.v1.aes-sha2"
10628+ ],
10629+ "device_id": "ALICEDEVICE1138",
10630+ "keys": {
10631+ "curve25519:ALICEDEVICE1138": "JNiliAfT20KXiSuxEV8zZzW+LSRPRtoA+UoSzoBn6yg",
10632+ "ed25519:ALICEDEVICE1138": "Qsgw0ceAieudzMWjvbKSCKXQynsP16JXMJ1cCGFM0KY"
10633+ },
10634+ "signatures": {
10635+ "@alice_1138:hs1": {
10636+ "ed25519:ALICEDEVICE1138": "uTXlBDCmTsqbqOB8jXCG+qHLiSX0aWEDFZVHotJOU6cW4+PO3p0p2qdBWnIda0Ew58jDiKa22L3oBStIAzM0Cg"
10637+ }
10638+ },
10639+ "user_id": "@alice_1138:hs1",
10640+ "unsigned": {}
10641+ }
10642+ },
10643+ "@alice_1149:hs1": {
10644+ "ALICEDEVICE1149": {
10645+ "algorithms": [
10646+ "m.olm.v1.curve25519-aes-sha2",
10647+ "m.megolm.v1.aes-sha2"
10648+ ],
10649+ "device_id": "ALICEDEVICE1149",
10650+ "keys": {
10651+ "curve25519:ALICEDEVICE1149": "JprB+gkjh5qK6zUAEGN89GSHD/sLx8zJUCJwNmo6HRU",
10652+ "ed25519:ALICEDEVICE1149": "cUVoJ1J4AXA21c3c5SkT6olxAIG3P0apjnGOAlVoqio"
10653+ },
10654+ "signatures": {
10655+ "@alice_1149:hs1": {
10656+ "ed25519:ALICEDEVICE1149": "lWuuysweK//K3yc83TSfQAOK7r37Sh46/KZcH8XO6CzKJoE20+4nfAbo9hDq1yV6g4mmmaARY3AnCF2OTkY0AA"
10657+ }
10658+ },
10659+ "user_id": "@alice_1149:hs1",
10660+ "unsigned": {}
10661+ }
10662+ },
10663+ "@alice_1157:hs1": {
10664+ "ALICEDEVICE1157": {
10665+ "algorithms": [
10666+ "m.olm.v1.curve25519-aes-sha2",
10667+ "m.megolm.v1.aes-sha2"
10668+ ],
10669+ "device_id": "ALICEDEVICE1157",
10670+ "keys": {
10671+ "curve25519:ALICEDEVICE1157": "ZHLQ+Q/VT/JnoAggpz0LbUJm6UIqttMMsD4zUBW5QFI",
10672+ "ed25519:ALICEDEVICE1157": "FI+Unpyp8fa3PzwrKF6/Z5dcdF7F4pqf5/GeqxNlCU8"
10673+ },
10674+ "signatures": {
10675+ "@alice_1157:hs1": {
10676+ "ed25519:ALICEDEVICE1157": "SNTJ4toLHWsmC/OXB2p5HJ/A6/bXuW7CHYstSj5Iz+eFTE9xBHlpbk8Jt/Q6KsrRKeEF/EMxH8J+/L0jFy/JAw"
10677+ }
10678+ },
10679+ "user_id": "@alice_1157:hs1",
10680+ "unsigned": {}
10681+ }
10682+ },
10683+ "@alice_1158:hs1": {
10684+ "ALICEDEVICE1158": {
10685+ "algorithms": [
10686+ "m.olm.v1.curve25519-aes-sha2",
10687+ "m.megolm.v1.aes-sha2"
10688+ ],
10689+ "device_id": "ALICEDEVICE1158",
10690+ "keys": {
10691+ "curve25519:ALICEDEVICE1158": "PHRDvOHAtmpwmeryOUu1jBq8YnN4ePG6iibuepjeRmk",
10692+ "ed25519:ALICEDEVICE1158": "AENpEwtzNDdmCjHzV1c+cp6g3iVKBcS++x6Fn1JV8xs"
10693+ },
10694+ "signatures": {
10695+ "@alice_1158:hs1": {
10696+ "ed25519:ALICEDEVICE1158": "8qaFX7CRsjYOMtxReXzDaGksK8JcKsH2Pe0xwrXAHAAcgW2VIXP06FQPrfH8rEx4GF2PEHPzoYHEN773qGAtBA"
10697+ }
10698+ },
10699+ "user_id": "@alice_1158:hs1",
10700+ "unsigned": {}
10701+ }
10702+ },
10703+ "@alice_1161:hs1": {
10704+ "ALICEDEVICE1161": {
10705+ "algorithms": [
10706+ "m.olm.v1.curve25519-aes-sha2",
10707+ "m.megolm.v1.aes-sha2"
10708+ ],
10709+ "device_id": "ALICEDEVICE1161",
10710+ "keys": {
10711+ "curve25519:ALICEDEVICE1161": "OQ3vEcYL8qcJvruvM+CMO9z4PfiPBRARiNIA/3nA2ko",
10712+ "ed25519:ALICEDEVICE1161": "2Ow9PV72Jgzic/sJB43kyMwkXa/oHFOpu8fJJMVqvJY"
10713+ },
10714+ "signatures": {
10715+ "@alice_1161:hs1": {
10716+ "ed25519:ALICEDEVICE1161": "YV73/+6FJpMmTgANHyuNS1DE3Q64au9tqa1nPgq0RE6YcJklCZTdi6BOWFGd7tS3Niurw1CXLASOwelxS3P+Cg"
10717+ }
10718+ },
10719+ "user_id": "@alice_1161:hs1",
10720+ "unsigned": {}
10721+ }
10722+ },
10723+ "@alice_1168:hs1": {
10724+ "ALICEDEVICE1168": {
10725+ "algorithms": [
10726+ "m.olm.v1.curve25519-aes-sha2",
10727+ "m.megolm.v1.aes-sha2"
10728+ ],
10729+ "device_id": "ALICEDEVICE1168",
10730+ "keys": {
10731+ "curve25519:ALICEDEVICE1168": "SsDrJALUPkHH6906pqcrgealzTssYKH5F0ftBxYkjTc",
10732+ "ed25519:ALICEDEVICE1168": "Mi1Tp79hIWrgUjNlzCJrdIA4Gz5N/9+/B/NI1CF7mHI"
10733+ },
10734+ "signatures": {
10735+ "@alice_1168:hs1": {
10736+ "ed25519:ALICEDEVICE1168": "rXD0YgQp6VUycqD78DP/NZyFiyVp+AZSvqJtV7DZBiOgVAhIVjM9hQXb9Xy3HrAzQbm5CptztstU6al6q4uvBQ"
10737+ }
10738+ },
10739+ "user_id": "@alice_1168:hs1",
10740+ "unsigned": {}
10741+ }
10742+ },
10743+ "@alice_1186:hs1": {
10744+ "ALICEDEVICE1186": {
10745+ "algorithms": [
10746+ "m.olm.v1.curve25519-aes-sha2",
10747+ "m.megolm.v1.aes-sha2"
10748+ ],
10749+ "device_id": "ALICEDEVICE1186",
10750+ "keys": {
10751+ "curve25519:ALICEDEVICE1186": "Mmg2knIo3Sna+Z9suGzOeKHX3AvuR4bXsTwiQW4bEEk",
10752+ "ed25519:ALICEDEVICE1186": "v1OoZD+FLDDODUC1IxrOccf8ei4ki5Innm95mxUpAoY"
10753+ },
10754+ "signatures": {
10755+ "@alice_1186:hs1": {
10756+ "ed25519:ALICEDEVICE1186": "FGHdeJie70bYMIzlqakU7WgIVDuyaAXJwZWNBysL4EXyhpMXGrGPnKcViG14cL3WjCsp1DWY4IZJhERNwA09DA"
10757+ }
10758+ },
10759+ "user_id": "@alice_1186:hs1",
10760+ "unsigned": {}
10761+ }
10762+ },
10763+ "@alice_1188:hs1": {
10764+ "ALICEDEVICE1188": {
10765+ "algorithms": [
10766+ "m.olm.v1.curve25519-aes-sha2",
10767+ "m.megolm.v1.aes-sha2"
10768+ ],
10769+ "device_id": "ALICEDEVICE1188",
10770+ "keys": {
10771+ "curve25519:ALICEDEVICE1188": "2P3vKh7D4H3GzO35mlZun/CJykCWBIigs61ofG3FqRw",
10772+ "ed25519:ALICEDEVICE1188": "2wqBO7KSoyX1mlPHw6a9I5Vj6nyCkktV1msnhngLOdE"
10773+ },
10774+ "signatures": {
10775+ "@alice_1188:hs1": {
10776+ "ed25519:ALICEDEVICE1188": "1Dis1MRCSJCV0jq3/uhAmzygwYb3aMXZ4VNWJz3Ts+pSIkl8mab8TrMl+oqEUnFBmI6DpTX1Q9Dh6lEX0cHrBA"
10777+ }
10778+ },
10779+ "user_id": "@alice_1188:hs1",
10780+ "unsigned": {}
10781+ }
10782+ },
10783+ "@alice_1196:hs1": {
10784+ "ALICEDEVICE1196": {
10785+ "algorithms": [
10786+ "m.olm.v1.curve25519-aes-sha2",
10787+ "m.megolm.v1.aes-sha2"
10788+ ],
10789+ "device_id": "ALICEDEVICE1196",
10790+ "keys": {
10791+ "curve25519:ALICEDEVICE1196": "ewthoPoT9EFnnrRiWReJAdxYk2+J4NDv/oDecCU1xCA",
10792+ "ed25519:ALICEDEVICE1196": "P3RCVmHzmRJ9WuP3jEoSSs1lAcYWk7yLyD22aTKS1MQ"
10793+ },
10794+ "signatures": {
10795+ "@alice_1196:hs1": {
10796+ "ed25519:ALICEDEVICE1196": "kSpcDnzAWwKFTYvao/rhStuTp+RiXkct6oYqXsXBwZdvyTyKQwIRmM54U97xZDQPeTqmmd1j2/p/tVMhY1r7Cg"
10797+ }
10798+ },
10799+ "user_id": "@alice_1196:hs1",
10800+ "unsigned": {}
10801+ }
10802+ },
10803+ "@alice_1208:hs1": {
10804+ "ALICEDEVICE1208": {
10805+ "algorithms": [
10806+ "m.olm.v1.curve25519-aes-sha2",
10807+ "m.megolm.v1.aes-sha2"
10808+ ],
10809+ "device_id": "ALICEDEVICE1208",
10810+ "keys": {
10811+ "curve25519:ALICEDEVICE1208": "bBGLYT8C6nCeYQzj+zXeCZAgjXwe7xwfsqzjSVRxe2o",
10812+ "ed25519:ALICEDEVICE1208": "HIovvzgoS6JvXneNtshKh2A53rl6AzuhdzvCkjQK//0"
10813+ },
10814+ "signatures": {
10815+ "@alice_1208:hs1": {
10816+ "ed25519:ALICEDEVICE1208": "Byk0XgjgTzocO0XB8ejvqkO2ekiw6BK1QZdrlcd//Zcka/pedcZR8JmaHgdYsPy/O1I7ik8ssZuXyLA7PrCqAg"
10817+ }
10818+ },
10819+ "user_id": "@alice_1208:hs1",
10820+ "unsigned": {}
10821+ }
10822+ },
10823+ "@alice_1227:hs1": {
10824+ "ALICEDEVICE1227": {
10825+ "algorithms": [
10826+ "m.olm.v1.curve25519-aes-sha2",
10827+ "m.megolm.v1.aes-sha2"
10828+ ],
10829+ "device_id": "ALICEDEVICE1227",
10830+ "keys": {
10831+ "curve25519:ALICEDEVICE1227": "9McV713C64p0gO7KiBn94chT2ZPTYmTVtAInPVy0PCo",
10832+ "ed25519:ALICEDEVICE1227": "7E6bJFer6AJtk2WWw1SxfVNGNvoV7LEvYzKgLxLhbPY"
10833+ },
10834+ "signatures": {
10835+ "@alice_1227:hs1": {
10836+ "ed25519:ALICEDEVICE1227": "D2M0T1n9X9v2peKpx5flF1CMR6Uyt+2FH72V0cU20sKoj0Y/+2d8O+4mJzOzMByYGJ0XiZmlMCo669Y0maCsDw"
10837+ }
10838+ },
10839+ "user_id": "@alice_1227:hs1",
10840+ "unsigned": {}
10841+ }
10842+ },
10843+ "@alice_1232:hs1": {
10844+ "ALICEDEVICE1232": {
10845+ "algorithms": [
10846+ "m.olm.v1.curve25519-aes-sha2",
10847+ "m.megolm.v1.aes-sha2"
10848+ ],
10849+ "device_id": "ALICEDEVICE1232",
10850+ "keys": {
10851+ "curve25519:ALICEDEVICE1232": "8psrzlC9KDneQ9jVE/OfLI1GV01c9qCJTiL/W4nNNXs",
10852+ "ed25519:ALICEDEVICE1232": "e86jQOCiejj4FuaqPJMUivrKnjGGMJxLUcZ+rJoFleM"
10853+ },
10854+ "signatures": {
10855+ "@alice_1232:hs1": {
10856+ "ed25519:ALICEDEVICE1232": "Tp+0JVhQ7FHCxmOoZBoWKkNAb2GFJezoCoEAju680gpNfSQeH1b29mGPy/RdlNO4Q3hPUdXAGZOGy4s9Ztw1BA"
10857+ }
10858+ },
10859+ "user_id": "@alice_1232:hs1",
10860+ "unsigned": {}
10861+ }
10862+ },
10863+ "@alice_1234:hs1": {
10864+ "ALICEDEVICE1234": {
10865+ "algorithms": [
10866+ "m.olm.v1.curve25519-aes-sha2",
10867+ "m.megolm.v1.aes-sha2"
10868+ ],
10869+ "device_id": "ALICEDEVICE1234",
10870+ "keys": {
10871+ "curve25519:ALICEDEVICE1234": "3SdXpsfnToq5+vFP02AyFFBcrr7hIThXFXQ+4v58sk0",
10872+ "ed25519:ALICEDEVICE1234": "p5SLhrqns7yCq26aPJDW43MyXi+1F3xGVZ5ah6ClKDc"
10873+ },
10874+ "signatures": {
10875+ "@alice_1234:hs1": {
10876+ "ed25519:ALICEDEVICE1234": "fG/Zz8O1j3ilrYY4MmRoF+Ji+IIWecQWbxVlmKx3/DqIJMcTTxf113Efo40GO988imgtWgyT5VMBoSp9MP+DAg"
10877+ }
10878+ },
10879+ "user_id": "@alice_1234:hs1",
10880+ "unsigned": {}
10881+ }
10882+ },
10883+ "@alice_124:hs1": {
10884+ "ALICEDEVICE124": {
10885+ "algorithms": [
10886+ "m.olm.v1.curve25519-aes-sha2",
10887+ "m.megolm.v1.aes-sha2"
10888+ ],
10889+ "device_id": "ALICEDEVICE124",
10890+ "keys": {
10891+ "curve25519:ALICEDEVICE124": "pIx+WUaQwfqtROD+DLpWmc3Y46It1mEAICTYP6F9qVs",
10892+ "ed25519:ALICEDEVICE124": "+DP4bz0NjkoBKpg03cxqgYL+e8KAAZKYPX7ggbKcApM"
10893+ },
10894+ "signatures": {
10895+ "@alice_124:hs1": {
10896+ "ed25519:ALICEDEVICE124": "GutJRTU0gHcIjpPx4pTRfL+Xat7GqttG+phALI4O8RKZrLWTLA44wJTvhLQrjpDNv7qj4raHlPzTNO4p29LoDw"
10897+ }
10898+ },
10899+ "user_id": "@alice_124:hs1",
10900+ "unsigned": {}
10901+ }
10902+ },
10903+ "@alice_1253:hs1": {
10904+ "ALICEDEVICE1253": {
10905+ "algorithms": [
10906+ "m.olm.v1.curve25519-aes-sha2",
10907+ "m.megolm.v1.aes-sha2"
10908+ ],
10909+ "device_id": "ALICEDEVICE1253",
10910+ "keys": {
10911+ "curve25519:ALICEDEVICE1253": "ymV3CZz4WWW4Fn+2Nx5oE1m0hZ8sgGppoKjdE7oA7m8",
10912+ "ed25519:ALICEDEVICE1253": "FOJegXJkCGaqY9CU+khYwP9c4zIkrqloA/6eE9GMNd8"
10913+ },
10914+ "signatures": {
10915+ "@alice_1253:hs1": {
10916+ "ed25519:ALICEDEVICE1253": "tvw/JmJSo9MWoAzuRLQQy/S8c0TC3NUuEWs5K3jYdHE33E6mQHjpDp/dbK1UB+cqfwJs2/h2rqGhzGKrUI8BAA"
10917+ }
10918+ },
10919+ "user_id": "@alice_1253:hs1",
10920+ "unsigned": {}
10921+ }
10922+ },
10923+ "@alice_1263:hs1": {
10924+ "ALICEDEVICE1263": {
10925+ "algorithms": [
10926+ "m.olm.v1.curve25519-aes-sha2",
10927+ "m.megolm.v1.aes-sha2"
10928+ ],
10929+ "device_id": "ALICEDEVICE1263",
10930+ "keys": {
10931+ "curve25519:ALICEDEVICE1263": "fm4sjZtaShfBgAxlulLh/Hj86uMpSVFPUuxzrKpmiQI",
10932+ "ed25519:ALICEDEVICE1263": "dgJbbDJMk/2ebSJSTPHioL/35rY3X92KQ0EPhc3vngw"
10933+ },
10934+ "signatures": {
10935+ "@alice_1263:hs1": {
10936+ "ed25519:ALICEDEVICE1263": "WN2UXjvuJO8CmBsDy/KrkOUyMzwMDw7pwfBh+OmUYv0hA66n9XxlutA25lJ1xLb/rPh0aT6I1V2ksY60lcQCBw"
10937+ }
10938+ },
10939+ "user_id": "@alice_1263:hs1",
10940+ "unsigned": {}
10941+ }
10942+ },
10943+ "@alice_1266:hs1": {
10944+ "ALICEDEVICE1266": {
10945+ "algorithms": [
10946+ "m.olm.v1.curve25519-aes-sha2",
10947+ "m.megolm.v1.aes-sha2"
10948+ ],
10949+ "device_id": "ALICEDEVICE1266",
10950+ "keys": {
10951+ "curve25519:ALICEDEVICE1266": "LeNZzhJpuzBsyYCgrm8OPruOD83L7zWGVT31PUEenTk",
10952+ "ed25519:ALICEDEVICE1266": "QRYh2WEQiKezd61YCWdYZRn7GnbEBW+YVMA/Ei5aTKY"
10953+ },
10954+ "signatures": {
10955+ "@alice_1266:hs1": {
10956+ "ed25519:ALICEDEVICE1266": "srfZGz3NXaCpTqRvZtIbIJWVb+dhqdoa6ypECam6mBrwb0Lf2zRfHYnyev/yi0CAzfZ0LQ1MjgE5P17UpLNDDQ"
10957+ }
10958+ },
10959+ "user_id": "@alice_1266:hs1",
10960+ "unsigned": {}
10961+ }
10962+ },
10963+ "@alice_1268:hs1": {
10964+ "ALICEDEVICE1268": {
10965+ "algorithms": [
10966+ "m.olm.v1.curve25519-aes-sha2",
10967+ "m.megolm.v1.aes-sha2"
10968+ ],
10969+ "device_id": "ALICEDEVICE1268",
10970+ "keys": {
10971+ "curve25519:ALICEDEVICE1268": "NUhRaunonL3PCW51wGaHNlx6AAza9vTLaB3lA2LqOnA",
10972+ "ed25519:ALICEDEVICE1268": "h/TO9L8Hz8cYCjMccZztxkCzr+z+Uq1tasG0LeClCU8"
10973+ },
10974+ "signatures": {
10975+ "@alice_1268:hs1": {
10976+ "ed25519:ALICEDEVICE1268": "bGXsLmMO+jRHOWaTyTqrHB9XWvJZ4ZRMrtpelm4k3Xl8kSPxA0F0z5AZfvtBdJBW1Yq3K7fm0y/Iu/lheo7fAw"
10977+ }
10978+ },
10979+ "user_id": "@alice_1268:hs1",
10980+ "unsigned": {}
10981+ }
10982+ },
10983+ "@alice_127:hs1": {
10984+ "ALICEDEVICE127": {
10985+ "algorithms": [
10986+ "m.olm.v1.curve25519-aes-sha2",
10987+ "m.megolm.v1.aes-sha2"
10988+ ],
10989+ "device_id": "ALICEDEVICE127",
10990+ "keys": {
10991+ "curve25519:ALICEDEVICE127": "B/smScjhP1WdGzF/DWSYKQ1eZgJkrrG+PU25mILNrmA",
10992+ "ed25519:ALICEDEVICE127": "i38G+dzB/Na/DX7NWaeZLrZeqIsi6SQ5X10jyiJKj+4"
10993+ },
10994+ "signatures": {
10995+ "@alice_127:hs1": {
10996+ "ed25519:ALICEDEVICE127": "SLVj31U0MQGv06abOFKkLvVUl1jFotHZxZpd1ZO+dda46KrlhbTcWYws1NH+Y7eoLWwNZpkvbEODNUyd+6GxDQ"
10997+ }
10998+ },
10999+ "user_id": "@alice_127:hs1",
11000+ "unsigned": {}
11001+ }
11002+ },
11003+ "@alice_1298:hs1": {
11004+ "ALICEDEVICE1298": {
11005+ "algorithms": [
11006+ "m.olm.v1.curve25519-aes-sha2",
11007+ "m.megolm.v1.aes-sha2"
11008+ ],
11009+ "device_id": "ALICEDEVICE1298",
11010+ "keys": {
11011+ "curve25519:ALICEDEVICE1298": "YRNSfUVQidwZQ3w07J2JByX6lmiZp+EM2BvlBOZryR0",
11012+ "ed25519:ALICEDEVICE1298": "WmCIAWRGsmU2/8YP60ukYDsK2n1sEUTfIo7E//ZcJ1k"
11013+ },
11014+ "signatures": {
11015+ "@alice_1298:hs1": {
11016+ "ed25519:ALICEDEVICE1298": "Ejb4IiPHyyHfq0BVRTofzqXumXgn4apB1ts3LzxNqjeH4AUhGY/RATzq0+fZokkvTsZAKgvN+eY0v9YzmvcpCQ"
11017+ }
11018+ },
11019+ "user_id": "@alice_1298:hs1",
11020+ "unsigned": {}
11021+ }
11022+ },
11023+ "@alice_1299:hs1": {
11024+ "ALICEDEVICE1299": {
11025+ "algorithms": [
11026+ "m.olm.v1.curve25519-aes-sha2",
11027+ "m.megolm.v1.aes-sha2"
11028+ ],
11029+ "device_id": "ALICEDEVICE1299",
11030+ "keys": {
11031+ "curve25519:ALICEDEVICE1299": "v9DcSyCUFDXh7LvRDSgmGVuX3vdiF3vheYEUVXDWJCg",
11032+ "ed25519:ALICEDEVICE1299": "M8Z9i39uGom0EzFno/0IVKZt+p9E66qZniJ5fOshwgU"
11033+ },
11034+ "signatures": {
11035+ "@alice_1299:hs1": {
11036+ "ed25519:ALICEDEVICE1299": "hiAFDeG9BJgwR2guv392VEwvf+xAPMtCtCgOoRJ3Q1iGV57itW6Vwi6WqXkjrt6iCN4DVdu6QMwo7ltkI0l6AA"
11037+ }
11038+ },
11039+ "user_id": "@alice_1299:hs1",
11040+ "unsigned": {}
11041+ }
11042+ },
11043+ "@alice_1308:hs1": {
11044+ "ALICEDEVICE1308": {
11045+ "algorithms": [
11046+ "m.olm.v1.curve25519-aes-sha2",
11047+ "m.megolm.v1.aes-sha2"
11048+ ],
11049+ "device_id": "ALICEDEVICE1308",
11050+ "keys": {
11051+ "curve25519:ALICEDEVICE1308": "j4TaLXgJrud1nmit6eW5bZvpnfKlr59q/CaaQyHLCmo",
11052+ "ed25519:ALICEDEVICE1308": "aAAIoxNX5DR0Bsd5fvckI826hUZ6jzTl8QCbgFlta8w"
11053+ },
11054+ "signatures": {
11055+ "@alice_1308:hs1": {
11056+ "ed25519:ALICEDEVICE1308": "PP2sEco6sDNeejPExjyE6QN3YK+mNmOuq7+gOEaDnnPQugYAqksmOHJbc9OFhTordz+UlvEge+LYeaOWuBx1DQ"
11057+ }
11058+ },
11059+ "user_id": "@alice_1308:hs1",
11060+ "unsigned": {}
11061+ }
11062+ },
11063+ "@alice_1309:hs1": {
11064+ "ALICEDEVICE1309": {
11065+ "algorithms": [
11066+ "m.olm.v1.curve25519-aes-sha2",
11067+ "m.megolm.v1.aes-sha2"
11068+ ],
11069+ "device_id": "ALICEDEVICE1309",
11070+ "keys": {
11071+ "curve25519:ALICEDEVICE1309": "4oEA9h2WbiMUglzAtEMVgTWAWwD1m4y1BXV/hww6UyY",
11072+ "ed25519:ALICEDEVICE1309": "ZENMhQNosEIHSQ1FQiczGRnGPaExbJO9d9/rFOpA4bE"
11073+ },
11074+ "signatures": {
11075+ "@alice_1309:hs1": {
11076+ "ed25519:ALICEDEVICE1309": "TZZ8fzILxxOpDLNDiqo0fyMJfon45wSa65mFwAbHlGo6SoGsWFCwkj0S1jPxVC/3LdxZALltHFv1cHyzwi5MDA"
11077+ }
11078+ },
11079+ "user_id": "@alice_1309:hs1",
11080+ "unsigned": {}
11081+ }
11082+ },
11083+ "@alice_132:hs1": {
11084+ "ALICEDEVICE132": {
11085+ "algorithms": [
11086+ "m.olm.v1.curve25519-aes-sha2",
11087+ "m.megolm.v1.aes-sha2"
11088+ ],
11089+ "device_id": "ALICEDEVICE132",
11090+ "keys": {
11091+ "curve25519:ALICEDEVICE132": "EGxciUzvr1+1cyW+bMGf4Lc84HXE2gYoSpPz8OVhWAI",
11092+ "ed25519:ALICEDEVICE132": "JE/4zm7cCOEPVpb0kcLqLO3oGagAP0+wLIvCtOyX494"
11093+ },
11094+ "signatures": {
11095+ "@alice_132:hs1": {
11096+ "ed25519:ALICEDEVICE132": "eMOSzF/l9Fo3qmX1DYswwyLxkC5+Fknil1AzAR+LdfIvMGUr4RxOYdN2ZogEYYwnFa5XK0D8mpPucGC4De4KBg"
11097+ }
11098+ },
11099+ "user_id": "@alice_132:hs1",
11100+ "unsigned": {}
11101+ }
11102+ },
11103+ "@alice_1336:hs1": {
11104+ "ALICEDEVICE1336": {
11105+ "algorithms": [
11106+ "m.olm.v1.curve25519-aes-sha2",
11107+ "m.megolm.v1.aes-sha2"
11108+ ],
11109+ "device_id": "ALICEDEVICE1336",
11110+ "keys": {
11111+ "curve25519:ALICEDEVICE1336": "fDPbb9fGActu7gQG+Fk+vbON8MLEEVDz97b2H5VIyAo",
11112+ "ed25519:ALICEDEVICE1336": "V+CYnH70clOgsjLpHZUeI2nB8nee5ch0Bbs1njwlrI8"
11113+ },
11114+ "signatures": {
11115+ "@alice_1336:hs1": {
11116+ "ed25519:ALICEDEVICE1336": "A71UimJt6XJkkLZUcfVeKCl82W3yvQVJEmXVJgY8TbvVPJ3vq2YqBiwTL7OVOHwCHl9KlWPETXIDw9FapQroAA"
11117+ }
11118+ },
11119+ "user_id": "@alice_1336:hs1",
11120+ "unsigned": {}
11121+ }
11122+ },
11123+ "@alice_134:hs1": {
11124+ "ALICEDEVICE134": {
11125+ "algorithms": [
11126+ "m.olm.v1.curve25519-aes-sha2",
11127+ "m.megolm.v1.aes-sha2"
11128+ ],
11129+ "device_id": "ALICEDEVICE134",
11130+ "keys": {
11131+ "curve25519:ALICEDEVICE134": "jm/SIuUw0/F+KWpEa+cGYL9ZNDgdH+SfC6tpngMeSG8",
11132+ "ed25519:ALICEDEVICE134": "tgV3/+Iz28Fi+lEkZG80CIUhIj55G5y4t7geO2Iq5Dc"
11133+ },
11134+ "signatures": {
11135+ "@alice_134:hs1": {
11136+ "ed25519:ALICEDEVICE134": "MPmNhT40StQF5rFMwjxH60vRxZ2qESL1CsK4ttDjjHkfyD8UOo+yd5vZyThZpIiFrBhzMbcbOsBsaD0Cg2PIAg"
11137+ }
11138+ },
11139+ "user_id": "@alice_134:hs1",
11140+ "unsigned": {}
11141+ }
11142+ },
11143+ "@alice_1356:hs1": {
11144+ "ALICEDEVICE1356": {
11145+ "algorithms": [
11146+ "m.olm.v1.curve25519-aes-sha2",
11147+ "m.megolm.v1.aes-sha2"
11148+ ],
11149+ "device_id": "ALICEDEVICE1356",
11150+ "keys": {
11151+ "curve25519:ALICEDEVICE1356": "iohRcmGkoNXzzPHPBVbWbmRL45zM47u114wEmwsd1HE",
11152+ "ed25519:ALICEDEVICE1356": "C0O5qpUUp++Kht7HmbYEBQ2OVkc/LSSgrcjPOiFp3eg"
11153+ },
11154+ "signatures": {
11155+ "@alice_1356:hs1": {
11156+ "ed25519:ALICEDEVICE1356": "llkEhOLBWKJHDVCGH7E3e6dt3+BefOWRBnRquoc4EO/kmjU2j0wISCfiCDhOldsf9Xhwo07LrbOzvEEVXS9+Cw"
11157+ }
11158+ },
11159+ "user_id": "@alice_1356:hs1",
11160+ "unsigned": {}
11161+ }
11162+ },
11163+ "@alice_1364:hs1": {
11164+ "ALICEDEVICE1364": {
11165+ "algorithms": [
11166+ "m.olm.v1.curve25519-aes-sha2",
11167+ "m.megolm.v1.aes-sha2"
11168+ ],
11169+ "device_id": "ALICEDEVICE1364",
11170+ "keys": {
11171+ "curve25519:ALICEDEVICE1364": "r/vOtx0UxmAP/1rO40ecMAQGy2BX+B65ApMR/KKLEmk",
11172+ "ed25519:ALICEDEVICE1364": "kh7SSp1vznvo/KhvF/gaOqSynTsn1LqQtMoZL4JCBcY"
11173+ },
11174+ "signatures": {
11175+ "@alice_1364:hs1": {
11176+ "ed25519:ALICEDEVICE1364": "FaaKuRgkGMu2TWuIBEblDAwIHWG6h83UkZN9hVfJoSuj90nAfluDrv/bSE1N/a1NOwoHyA3RZCfZlWGPlEASAg"
11177+ }
11178+ },
11179+ "user_id": "@alice_1364:hs1",
11180+ "unsigned": {}
11181+ }
11182+ },
11183+ "@alice_1367:hs1": {
11184+ "ALICEDEVICE1367": {
11185+ "algorithms": [
11186+ "m.olm.v1.curve25519-aes-sha2",
11187+ "m.megolm.v1.aes-sha2"
11188+ ],
11189+ "device_id": "ALICEDEVICE1367",
11190+ "keys": {
11191+ "curve25519:ALICEDEVICE1367": "HraRxp/cueffuZqRyH4M85M4E8DWC/gQLoazWZLh4hc",
11192+ "ed25519:ALICEDEVICE1367": "TsWj0oXZN+r8/hJ+hyshu7zPgC8f6lMAWU+U0xy6/VU"
11193+ },
11194+ "signatures": {
11195+ "@alice_1367:hs1": {
11196+ "ed25519:ALICEDEVICE1367": "RVpgiWEfvJ7RhXmqvH/b2vs5PL9v/pFImUhtxAcTvfgPoecSK+icFoRjYzibWZvbxUTJ+cuvrq3vXe6wZzyMBg"
11197+ }
11198+ },
11199+ "user_id": "@alice_1367:hs1",
11200+ "unsigned": {}
11201+ }
11202+ },
11203+ "@alice_1371:hs1": {
11204+ "ALICEDEVICE1371": {
11205+ "algorithms": [
11206+ "m.olm.v1.curve25519-aes-sha2",
11207+ "m.megolm.v1.aes-sha2"
11208+ ],
11209+ "device_id": "ALICEDEVICE1371",
11210+ "keys": {
11211+ "curve25519:ALICEDEVICE1371": "SuiP0gVeUaxV/n6bZ//zCDgUJT5WbNUJ5nOtOHWMc1s",
11212+ "ed25519:ALICEDEVICE1371": "cp93Lm/40789E3ADwyWUkKi5nQFwxES8UWCizfjKDYQ"
11213+ },
11214+ "signatures": {
11215+ "@alice_1371:hs1": {
11216+ "ed25519:ALICEDEVICE1371": "J/Clzh07KgZxzc+sQEWbafdlsyToSGe2thmQfeeSJVpTLqQ2rUXNPz5tWvweUMugMZpqEw90O7zFJDcspc6lBw"
11217+ }
11218+ },
11219+ "user_id": "@alice_1371:hs1",
11220+ "unsigned": {}
11221+ }
11222+ },
11223+ "@alice_1374:hs1": {
11224+ "ALICEDEVICE1374": {
11225+ "algorithms": [
11226+ "m.olm.v1.curve25519-aes-sha2",
11227+ "m.megolm.v1.aes-sha2"
11228+ ],
11229+ "device_id": "ALICEDEVICE1374",
11230+ "keys": {
11231+ "curve25519:ALICEDEVICE1374": "OZRrB6N8IWkwsQFPxHWNd1PWMkSihDSU8P6qITunUks",
11232+ "ed25519:ALICEDEVICE1374": "hFf4IG1zAF3UQCWBoWsZNU0E6UN88HEloRYQ00iW1CI"
11233+ },
11234+ "signatures": {
11235+ "@alice_1374:hs1": {
11236+ "ed25519:ALICEDEVICE1374": "PECRPRovnNOnMp9L6NuaLowxP+zat+jxK4z7kxucG2ST0Hpx6t+wZcrxrx7oTD/R+xuEIOrREZvnl/STWSs1CA"
11237+ }
11238+ },
11239+ "user_id": "@alice_1374:hs1",
11240+ "unsigned": {}
11241+ }
11242+ },
11243+ "@alice_1377:hs1": {
11244+ "ALICEDEVICE1377": {
11245+ "algorithms": [
11246+ "m.olm.v1.curve25519-aes-sha2",
11247+ "m.megolm.v1.aes-sha2"
11248+ ],
11249+ "device_id": "ALICEDEVICE1377",
11250+ "keys": {
11251+ "curve25519:ALICEDEVICE1377": "rL8ka0VCogq0PUKoGoGWbK0gVzUVuawHto42nQjxsik",
11252+ "ed25519:ALICEDEVICE1377": "AMuFuD/JpqVhKRGp9oeTDWtfGRggobt+9oDHY0YtP9A"
11253+ },
11254+ "signatures": {
11255+ "@alice_1377:hs1": {
11256+ "ed25519:ALICEDEVICE1377": "fOP6fN2HjrygAroIlGb9pLH+fZIWQN9YEk+ditPF4Mf3TgFKzwcCNaNECvr+i7A9T4N4L100BeJHfhdDMGX9Ag"
11257+ }
11258+ },
11259+ "user_id": "@alice_1377:hs1",
11260+ "unsigned": {}
11261+ }
11262+ },
11263+ "@alice_1379:hs1": {
11264+ "ALICEDEVICE1379": {
11265+ "algorithms": [
11266+ "m.olm.v1.curve25519-aes-sha2",
11267+ "m.megolm.v1.aes-sha2"
11268+ ],
11269+ "device_id": "ALICEDEVICE1379",
11270+ "keys": {
11271+ "curve25519:ALICEDEVICE1379": "MwHjlzVreuOMnTGPIL3uTO9AvkBpl8ALv6YT9CnQ9CA",
11272+ "ed25519:ALICEDEVICE1379": "fmHvrI/v5trsYFVDlU6srXnqqtb2lAAUkfEJfrK6ApA"
11273+ },
11274+ "signatures": {
11275+ "@alice_1379:hs1": {
11276+ "ed25519:ALICEDEVICE1379": "tWHsySC/6cDCrvw7Q6GvpumRcLUoCM3Sh2bOwomvyGIObX5BQRxdqBZluxoqWtvC6cJGwMK4nhq1aYBUIAGUAw"
11277+ }
11278+ },
11279+ "user_id": "@alice_1379:hs1",
11280+ "unsigned": {}
11281+ }
11282+ },
11283+ "@alice_1380:hs1": {
11284+ "ALICEDEVICE1380": {
11285+ "algorithms": [
11286+ "m.olm.v1.curve25519-aes-sha2",
11287+ "m.megolm.v1.aes-sha2"
11288+ ],
11289+ "device_id": "ALICEDEVICE1380",
11290+ "keys": {
11291+ "curve25519:ALICEDEVICE1380": "z/F8aHKFSQG0k+kC8xto5Kf9WwzsQ0T31BcgFw5ueTs",
11292+ "ed25519:ALICEDEVICE1380": "8J/wHPaeWj/jouF+rlwfHqtuwKqL8p8k6TNKIC6YGx4"
11293+ },
11294+ "signatures": {
11295+ "@alice_1380:hs1": {
11296+ "ed25519:ALICEDEVICE1380": "MCj87UKZ/Bd0jRWX1Z4W4b5glo79hQFAuEDJwaTRiLyblJZ9nM8UV+LgxTo9sawnCXijmKQO8vjuY0H26JZLCg"
11297+ }
11298+ },
11299+ "user_id": "@alice_1380:hs1",
11300+ "unsigned": {}
11301+ }
11302+ },
11303+ "@alice_1384:hs1": {
11304+ "ALICEDEVICE1384": {
11305+ "algorithms": [
11306+ "m.olm.v1.curve25519-aes-sha2",
11307+ "m.megolm.v1.aes-sha2"
11308+ ],
11309+ "device_id": "ALICEDEVICE1384",
11310+ "keys": {
11311+ "curve25519:ALICEDEVICE1384": "TzZhos4n0f+PJBFtPM4IAW3ODVXUncihq6jfolOCyj8",
11312+ "ed25519:ALICEDEVICE1384": "DSrZ0mcrJULca+5CskogarNcumFrgbkxbToUFGd/ttE"
11313+ },
11314+ "signatures": {
11315+ "@alice_1384:hs1": {
11316+ "ed25519:ALICEDEVICE1384": "2vaLATyBX16GJqQGHc4eWKQjLJCmjyz3lryFMyh+Tn6+T1zf3Gcb5b/fZPq0zRRDIPQyQ8hxp7d/q9s5t8VhCA"
11317+ }
11318+ },
11319+ "user_id": "@alice_1384:hs1",
11320+ "unsigned": {}
11321+ }
11322+ },
11323+ "@alice_1388:hs1": {
11324+ "ALICEDEVICE1388": {
11325+ "algorithms": [
11326+ "m.olm.v1.curve25519-aes-sha2",
11327+ "m.megolm.v1.aes-sha2"
11328+ ],
11329+ "device_id": "ALICEDEVICE1388",
11330+ "keys": {
11331+ "curve25519:ALICEDEVICE1388": "qtII3ekhsSuxowHbqPo83CKMDfsg/RKEAfmYAXAgfgo",
11332+ "ed25519:ALICEDEVICE1388": "oF10ESCon34l0tBnQCofuk+vdRu2WsXZ5JXvi+q918g"
11333+ },
11334+ "signatures": {
11335+ "@alice_1388:hs1": {
11336+ "ed25519:ALICEDEVICE1388": "MaQLqab19sskdyrbI0GmEGVcAmP00BcHdaJJh1MGepCB1uL4dsgggMHBSPj6P1tJ7gEVtiHGc+COcF/B0s84Bw"
11337+ }
11338+ },
11339+ "user_id": "@alice_1388:hs1",
11340+ "unsigned": {}
11341+ }
11342+ },
11343+ "@alice_1419:hs1": {
11344+ "ALICEDEVICE1419": {
11345+ "algorithms": [
11346+ "m.olm.v1.curve25519-aes-sha2",
11347+ "m.megolm.v1.aes-sha2"
11348+ ],
11349+ "device_id": "ALICEDEVICE1419",
11350+ "keys": {
11351+ "curve25519:ALICEDEVICE1419": "b1cGk/9sS++Oz4w63IRBXAIoXtgAatTk11z5n7ntdGc",
11352+ "ed25519:ALICEDEVICE1419": "3G1Y5YE0cxAgatvHidmezxezpbtfgoE45aiZyoltNAg"
11353+ },
11354+ "signatures": {
11355+ "@alice_1419:hs1": {
11356+ "ed25519:ALICEDEVICE1419": "R2kGdueH/Df60OLc9e8BQS6/MgayrYWzwq4XNsVYYar1L4q9oVgqLU8Vq0n6+3A7irJVdlxsTEaOgapgwiAWBw"
11357+ }
11358+ },
11359+ "user_id": "@alice_1419:hs1",
11360+ "unsigned": {}
11361+ }
11362+ },
11363+ "@alice_1421:hs1": {
11364+ "ALICEDEVICE1421": {
11365+ "algorithms": [
11366+ "m.olm.v1.curve25519-aes-sha2",
11367+ "m.megolm.v1.aes-sha2"
11368+ ],
11369+ "device_id": "ALICEDEVICE1421",
11370+ "keys": {
11371+ "curve25519:ALICEDEVICE1421": "9X2vH9SITIlspaW4KKs6T9504AYiUCF0eW2wzyEy5Ro",
11372+ "ed25519:ALICEDEVICE1421": "8QksqWrMeeLe0Bd5EhB88vrKFXvalOxS2nKeihWQeB0"
11373+ },
11374+ "signatures": {
11375+ "@alice_1421:hs1": {
11376+ "ed25519:ALICEDEVICE1421": "nNbGt/lplS53M9N+esxgpTWVjMwiK5CbnOlXNpDOlUYMdvjVIMEjwd0z0Fr8wrID6RmD5Wp0gytTXXVqkc8WDA"
11377+ }
11378+ },
11379+ "user_id": "@alice_1421:hs1",
11380+ "unsigned": {}
11381+ }
11382+ },
11383+ "@alice_1431:hs1": {
11384+ "ALICEDEVICE1431": {
11385+ "algorithms": [
11386+ "m.olm.v1.curve25519-aes-sha2",
11387+ "m.megolm.v1.aes-sha2"
11388+ ],
11389+ "device_id": "ALICEDEVICE1431",
11390+ "keys": {
11391+ "curve25519:ALICEDEVICE1431": "xqlefqkFP0Hd5CaVpPqDKlAMn4pjc3QIBJ2iB5pyu00",
11392+ "ed25519:ALICEDEVICE1431": "IDySU5A9hoRMRoprZ3+C+F8HWfWi0oxNnsaqBM31y68"
11393+ },
11394+ "signatures": {
11395+ "@alice_1431:hs1": {
11396+ "ed25519:ALICEDEVICE1431": "DIAu0Hs4KGRz5fB5BJ1b4EYxnmXZpL0mFT8z3WpXwbbicz11L9KrMjWdFdPhmHv5yetsz1NHzYjWCYc9M8UtDA"
11397+ }
11398+ },
11399+ "user_id": "@alice_1431:hs1",
11400+ "unsigned": {}
11401+ }
11402+ },
11403+ "@alice_1432:hs1": {
11404+ "ALICEDEVICE1432": {
11405+ "algorithms": [
11406+ "m.olm.v1.curve25519-aes-sha2",
11407+ "m.megolm.v1.aes-sha2"
11408+ ],
11409+ "device_id": "ALICEDEVICE1432",
11410+ "keys": {
11411+ "curve25519:ALICEDEVICE1432": "k/LYfYHuzbse1UeS3QZWQOo+V4VtX1ftli1S1c5m4RY",
11412+ "ed25519:ALICEDEVICE1432": "RfPLPytlZT+CZ7AvD0PeAw5w1ryH61mx6QnHQfyDMg0"
11413+ },
11414+ "signatures": {
11415+ "@alice_1432:hs1": {
11416+ "ed25519:ALICEDEVICE1432": "APLm3wBqxCuoHhLp8ThGFZzsEwjvTM1jSp2i4/CkFiIRHMJlxPnfEBAvoFwleZgN/5bAwm3Zv+XTzosffZ0TBw"
11417+ }
11418+ },
11419+ "user_id": "@alice_1432:hs1",
11420+ "unsigned": {}
11421+ }
11422+ },
11423+ "@alice_1436:hs1": {
11424+ "ALICEDEVICE1436": {
11425+ "algorithms": [
11426+ "m.olm.v1.curve25519-aes-sha2",
11427+ "m.megolm.v1.aes-sha2"
11428+ ],
11429+ "device_id": "ALICEDEVICE1436",
11430+ "keys": {
11431+ "curve25519:ALICEDEVICE1436": "IPQHMhF1JsC4b87Rk7FKDiQsYIgnIKa64i/KBUOTiwI",
11432+ "ed25519:ALICEDEVICE1436": "v97OhDPxIOZ/OKNa2kz5o447iVEQui6pQk1BoD8GUVk"
11433+ },
11434+ "signatures": {
11435+ "@alice_1436:hs1": {
11436+ "ed25519:ALICEDEVICE1436": "jDmvWOryWu8JJhjlVQGkH77wm9/Ps0tNB9BWLgOK32j7KzItWAad/VEITnZTfGHucmJlSUM4XLaX+77iY4y2BA"
11437+ }
11438+ },
11439+ "user_id": "@alice_1436:hs1",
11440+ "unsigned": {}
11441+ }
11442+ },
11443+ "@alice_143:hs1": {
11444+ "ALICEDEVICE143": {
11445+ "algorithms": [
11446+ "m.olm.v1.curve25519-aes-sha2",
11447+ "m.megolm.v1.aes-sha2"
11448+ ],
11449+ "device_id": "ALICEDEVICE143",
11450+ "keys": {
11451+ "curve25519:ALICEDEVICE143": "/CdJfd9itVumnjI/Iinl2a2rbmG8wM+4n3hdT+ye0kU",
11452+ "ed25519:ALICEDEVICE143": "R3bRp/DEZaReocZCn8vOuRcbXjdUURQNbpSCl759Egc"
11453+ },
11454+ "signatures": {
11455+ "@alice_143:hs1": {
11456+ "ed25519:ALICEDEVICE143": "P8+X9ieuYx5n3Sx2Mt6az/fy7KzTaIwCSOD07i4Lrs3GfoNwAuffgW0FO6tv1OpYufsi1uKQtakvW1+IbpiZBg"
11457+ }
11458+ },
11459+ "user_id": "@alice_143:hs1",
11460+ "unsigned": {}
11461+ }
11462+ },
11463+ "@alice_1447:hs1": {
11464+ "ALICEDEVICE1447": {
11465+ "algorithms": [
11466+ "m.olm.v1.curve25519-aes-sha2",
11467+ "m.megolm.v1.aes-sha2"
11468+ ],
11469+ "device_id": "ALICEDEVICE1447",
11470+ "keys": {
11471+ "curve25519:ALICEDEVICE1447": "QSb5TFj/bieuo72jyXsik/27KfGOdn6FsUM2hiYmIQU",
11472+ "ed25519:ALICEDEVICE1447": "oHz0Z5eylGJIm4TyuignVhTp6YiAeSZUfJitxMqiaKQ"
11473+ },
11474+ "signatures": {
11475+ "@alice_1447:hs1": {
11476+ "ed25519:ALICEDEVICE1447": "rujBEcBpNOUh7cPXKB6dNtxxk/g/JXDTX7r9V2i33R2dHABBHvqvhBnC3BKkkuJfFGgIFdPlF9uzvdwmPsKgBQ"
11477+ }
11478+ },
11479+ "user_id": "@alice_1447:hs1",
11480+ "unsigned": {}
11481+ }
11482+ },
11483+ "@alice_1461:hs1": {
11484+ "ALICEDEVICE1461": {
11485+ "algorithms": [
11486+ "m.olm.v1.curve25519-aes-sha2",
11487+ "m.megolm.v1.aes-sha2"
11488+ ],
11489+ "device_id": "ALICEDEVICE1461",
11490+ "keys": {
11491+ "curve25519:ALICEDEVICE1461": "oX1NG6khC3o64V0BXTRSIpNJr4BYfytkCkxsR+Dyl3Q",
11492+ "ed25519:ALICEDEVICE1461": "C6Vnx3D0LUoEQVFPcczG9in3OZZSQHDK4x2gXgmJXX0"
11493+ },
11494+ "signatures": {
11495+ "@alice_1461:hs1": {
11496+ "ed25519:ALICEDEVICE1461": "ssYbyftXyjB5FMHHfOlzd7+IuX1lHrAkGgJBBzXgdIXwiIXySqmL3fJUca2PDDnWmns7UJJTG4kT0xcwV2KnCQ"
11497+ }
11498+ },
11499+ "user_id": "@alice_1461:hs1",
11500+ "unsigned": {}
11501+ }
11502+ },
11503+ "@alice_1472:hs1": {
11504+ "ALICEDEVICE1472": {
11505+ "algorithms": [
11506+ "m.olm.v1.curve25519-aes-sha2",
11507+ "m.megolm.v1.aes-sha2"
11508+ ],
11509+ "device_id": "ALICEDEVICE1472",
11510+ "keys": {
11511+ "curve25519:ALICEDEVICE1472": "3YEltzMehw/zdgDDjHR+KddO6Ywi+b5ekIXqoMXrd2I",
11512+ "ed25519:ALICEDEVICE1472": "aR4a9+VLSM3X8EXh7pX6M4M1M617yA45rP3lWUAYwgk"
11513+ },
11514+ "signatures": {
11515+ "@alice_1472:hs1": {
11516+ "ed25519:ALICEDEVICE1472": "9ORb5Qp4MqYWcRaT6IUMuXLC0SMceAw4z0aSPMBY0DHTbkNa0pW2Wu6XG+cti1ghL56X4as32WJ6lQYvfT8MBQ"
11517+ }
11518+ },
11519+ "user_id": "@alice_1472:hs1",
11520+ "unsigned": {}
11521+ }
11522+ },
11523+ "@alice_1479:hs1": {
11524+ "ALICEDEVICE1479": {
11525+ "algorithms": [
11526+ "m.olm.v1.curve25519-aes-sha2",
11527+ "m.megolm.v1.aes-sha2"
11528+ ],
11529+ "device_id": "ALICEDEVICE1479",
11530+ "keys": {
11531+ "curve25519:ALICEDEVICE1479": "ZYfQbYglCk8CLMpcDFTkAZycYGh3gjcIyNZCoV4SUVQ",
11532+ "ed25519:ALICEDEVICE1479": "8QZLc+kliDh6ps5+0Y8JTjL61Q9S0Rdaa2WkbFIacyk"
11533+ },
11534+ "signatures": {
11535+ "@alice_1479:hs1": {
11536+ "ed25519:ALICEDEVICE1479": "i1mOJd/XgrEpSv31GPO92gFVD5w190KsIc6Lb2UOsIkLiUFQqvErqfDqAy7fgn634pDechTZAFgnL0icOGEnAA"
11537+ }
11538+ },
11539+ "user_id": "@alice_1479:hs1",
11540+ "unsigned": {}
11541+ }
11542+ },
11543+ "@alice_147:hs1": {
11544+ "ALICEDEVICE147": {
11545+ "algorithms": [
11546+ "m.olm.v1.curve25519-aes-sha2",
11547+ "m.megolm.v1.aes-sha2"
11548+ ],
11549+ "device_id": "ALICEDEVICE147",
11550+ "keys": {
11551+ "curve25519:ALICEDEVICE147": "JUXWmT82ItW+BQfNXIV9oPtEn3KsxXKQ9g32i74jE1s",
11552+ "ed25519:ALICEDEVICE147": "E72G4hV/PUx34UqIe98o9gaBdzJzTodxC/PcsdgLd7o"
11553+ },
11554+ "signatures": {
11555+ "@alice_147:hs1": {
11556+ "ed25519:ALICEDEVICE147": "Z/yWtHtj/aowLAAcd/xdniCMmIrQ6ijIjDP/BdpTsdjiDUC5CzmSdTJy7Mz8W5amB8GZMHiR+OJeWoqKCTrfAw"
11557+ }
11558+ },
11559+ "user_id": "@alice_147:hs1",
11560+ "unsigned": {}
11561+ }
11562+ },
11563+ "@alice_1488:hs1": {
11564+ "ALICEDEVICE1488": {
11565+ "algorithms": [
11566+ "m.olm.v1.curve25519-aes-sha2",
11567+ "m.megolm.v1.aes-sha2"
11568+ ],
11569+ "device_id": "ALICEDEVICE1488",
11570+ "keys": {
11571+ "curve25519:ALICEDEVICE1488": "outSWEdNmzHPMPeGqb2y9vQ8W6nuGc1kB86qAXWeT3g",
11572+ "ed25519:ALICEDEVICE1488": "Zw4sMLh1vfk6VPwSgl5hDw1jf6rbOcgXrSAR9wwOSxI"
11573+ },
11574+ "signatures": {
11575+ "@alice_1488:hs1": {
11576+ "ed25519:ALICEDEVICE1488": "STzKdCWavmOXf87hp7FWdepdXjvvSKYyiG/ZGsCep8kf25EpLKkv0E6NktDP1YRZVkmfrz3e+D+zo35WWrP/Dw"
11577+ }
11578+ },
11579+ "user_id": "@alice_1488:hs1",
11580+ "unsigned": {}
11581+ }
11582+ },
11583+ "@alice_1491:hs1": {
11584+ "ALICEDEVICE1491": {
11585+ "algorithms": [
11586+ "m.olm.v1.curve25519-aes-sha2",
11587+ "m.megolm.v1.aes-sha2"
11588+ ],
11589+ "device_id": "ALICEDEVICE1491",
11590+ "keys": {
11591+ "curve25519:ALICEDEVICE1491": "7OClOO3JdTAtnG8w5ovhYUKSmCgCFTZilApVO2NlDWU",
11592+ "ed25519:ALICEDEVICE1491": "EhNKpEroE8G5RtJ4+9ukThS2vQ2JdGtQtCi+rJeqOqQ"
11593+ },
11594+ "signatures": {
11595+ "@alice_1491:hs1": {
11596+ "ed25519:ALICEDEVICE1491": "M/Ls/A19Sd23cJ3EWk+LmXsqUCs6dIdpIkk2H3Ghwmm+Z+BYh6O5MxBEg4fP4hJ49KMxq1A4IBlYWFNeGFT7BQ"
11597+ }
11598+ },
11599+ "user_id": "@alice_1491:hs1",
11600+ "unsigned": {}
11601+ }
11602+ },
11603+ "@alice_1493:hs1": {
11604+ "ALICEDEVICE1493": {
11605+ "algorithms": [
11606+ "m.olm.v1.curve25519-aes-sha2",
11607+ "m.megolm.v1.aes-sha2"
11608+ ],
11609+ "device_id": "ALICEDEVICE1493",
11610+ "keys": {
11611+ "curve25519:ALICEDEVICE1493": "g/m18GNXVx//IWH3olxZcJ2fikNZS7Rdf7tQ5ar65k0",
11612+ "ed25519:ALICEDEVICE1493": "nVXPTD9TjTE7WqAycVy6rY/qDJSn3IGdpDXbyKV6wOQ"
11613+ },
11614+ "signatures": {
11615+ "@alice_1493:hs1": {
11616+ "ed25519:ALICEDEVICE1493": "1tO1Co4B0Lki2H11MkjP5oO6dXv2wP2K93TGsAsZz6HKu0Ea9DmGpI+0k3H9TVYh5IBmN74d13RMA7iJlEPtDw"
11617+ }
11618+ },
11619+ "user_id": "@alice_1493:hs1",
11620+ "unsigned": {}
11621+ }
11622+ },
11623+ "@alice_1524:hs1": {
11624+ "ALICEDEVICE1524": {
11625+ "algorithms": [
11626+ "m.olm.v1.curve25519-aes-sha2",
11627+ "m.megolm.v1.aes-sha2"
11628+ ],
11629+ "device_id": "ALICEDEVICE1524",
11630+ "keys": {
11631+ "curve25519:ALICEDEVICE1524": "L4lmekGc7dT/2DFqhyRebwauyWvI3gs+QfL7wV64Eyk",
11632+ "ed25519:ALICEDEVICE1524": "AKdV4TKRSPQ8qVDYOtek/C12e1sXMRp/5R9NfYPO+IQ"
11633+ },
11634+ "signatures": {
11635+ "@alice_1524:hs1": {
11636+ "ed25519:ALICEDEVICE1524": "OXMstz1nFoKUv5BcjTBDEPJX19T8piY282x28Cmm/PXfgOb1PMoKD0PY75qrl/nquZXHarJX+7kOQFE0OuXEDw"
11637+ }
11638+ },
11639+ "user_id": "@alice_1524:hs1",
11640+ "unsigned": {}
11641+ }
11642+ },
11643+ "@alice_1538:hs1": {
11644+ "ALICEDEVICE1538": {
11645+ "algorithms": [
11646+ "m.olm.v1.curve25519-aes-sha2",
11647+ "m.megolm.v1.aes-sha2"
11648+ ],
11649+ "device_id": "ALICEDEVICE1538",
11650+ "keys": {
11651+ "curve25519:ALICEDEVICE1538": "hpmK8EHD8APjbCk1TkDNGXcUi04CSz+UlVs3fc4cInY",
11652+ "ed25519:ALICEDEVICE1538": "LW6+Q14kfFg5hnP4cud2xqnfHL9KobykVF56ngMxVVI"
11653+ },
11654+ "signatures": {
11655+ "@alice_1538:hs1": {
11656+ "ed25519:ALICEDEVICE1538": "lKJa3A+iscEn5d8vcv49gMXb3VnX9gusuV/0xFcTkKt3QxpObarRHx+iFxeGWGfqHwi4OnMJbo+vdY1laQbCDA"
11657+ }
11658+ },
11659+ "user_id": "@alice_1538:hs1",
11660+ "unsigned": {}
11661+ }
11662+ },
11663+ "@alice_1552:hs1": {
11664+ "ALICEDEVICE1552": {
11665+ "algorithms": [
11666+ "m.olm.v1.curve25519-aes-sha2",
11667+ "m.megolm.v1.aes-sha2"
11668+ ],
11669+ "device_id": "ALICEDEVICE1552",
11670+ "keys": {
11671+ "curve25519:ALICEDEVICE1552": "q69zNyz9BC95BlSr7Bt1Jo9irT184W1UGsYgtwopqxU",
11672+ "ed25519:ALICEDEVICE1552": "xK0er3mJ3YrSF6OELEQz2NyI2xQBoh0dY86tnWUX3Qs"
11673+ },
11674+ "signatures": {
11675+ "@alice_1552:hs1": {
11676+ "ed25519:ALICEDEVICE1552": "k0Ey3dkFoOkyw+NrzaxYCI7RNjE2PBZ8ypQXyuXXnBgwzv2XyIyI+OiuHZVVWrYDYkr2InNP8b4hxM+iPFjQBg"
11677+ }
11678+ },
11679+ "user_id": "@alice_1552:hs1",
11680+ "unsigned": {}
11681+ }
11682+ },
11683+ "@alice_1553:hs1": {
11684+ "ALICEDEVICE1553": {
11685+ "algorithms": [
11686+ "m.olm.v1.curve25519-aes-sha2",
11687+ "m.megolm.v1.aes-sha2"
11688+ ],
11689+ "device_id": "ALICEDEVICE1553",
11690+ "keys": {
11691+ "curve25519:ALICEDEVICE1553": "wlMwd+M5H9lVS6ogTUm0F/Az2EsIUWY+3W8QlmGmq1U",
11692+ "ed25519:ALICEDEVICE1553": "lwTO/J7bIElYuLDkcVk2c4Jm1T3x8Qb3tCsSleCiXGA"
11693+ },
11694+ "signatures": {
11695+ "@alice_1553:hs1": {
11696+ "ed25519:ALICEDEVICE1553": "rKYfLnySbxRajetYbK4fwVFNZ5gBd7kpvRZw5LCw+pTg/TWGyBmCVtpgQtVlNqSR/R/iy530syTHodUR8VZfBQ"
11697+ }
11698+ },
11699+ "user_id": "@alice_1553:hs1",
11700+ "unsigned": {}
11701+ }
11702+ },
11703+ "@alice_1556:hs1": {
11704+ "ALICEDEVICE1556": {
11705+ "algorithms": [
11706+ "m.olm.v1.curve25519-aes-sha2",
11707+ "m.megolm.v1.aes-sha2"
11708+ ],
11709+ "device_id": "ALICEDEVICE1556",
11710+ "keys": {
11711+ "curve25519:ALICEDEVICE1556": "3ITt5BqBhhsT3uPg0iJh8DcqTQMRWZg+spoZGNqpqQE",
11712+ "ed25519:ALICEDEVICE1556": "m+YaBW26EzFQKuJanoL+B1oDIZ6aVbsvxQssId/52Fo"
11713+ },
11714+ "signatures": {
11715+ "@alice_1556:hs1": {
11716+ "ed25519:ALICEDEVICE1556": "PcHC0U3bpzLC5EXcRHZQRTy+GAHN/JZtNRLZ/4VI8wleHjg7wgc1TKYII3gl+AfPWcXxU5eBz4HOd+VorpMUDg"
11717+ }
11718+ },
11719+ "user_id": "@alice_1556:hs1",
11720+ "unsigned": {}
11721+ }
11722+ },
11723+ "@alice_1557:hs1": {
11724+ "ALICEDEVICE1557": {
11725+ "algorithms": [
11726+ "m.olm.v1.curve25519-aes-sha2",
11727+ "m.megolm.v1.aes-sha2"
11728+ ],
11729+ "device_id": "ALICEDEVICE1557",
11730+ "keys": {
11731+ "curve25519:ALICEDEVICE1557": "zUPAh9n3C0Rez6SeggsWrv0WA4Tgi1detYMgS+WvVxk",
11732+ "ed25519:ALICEDEVICE1557": "VMiVLc8kJWJ5+Vm2iNcR6oULieC+zxO6WesRMd79imM"
11733+ },
11734+ "signatures": {
11735+ "@alice_1557:hs1": {
11736+ "ed25519:ALICEDEVICE1557": "sE7K24jko1NlUnfiX2AzUCHwfWKkQ3stVUI7aOPoHjNUgprwPjVwodRvFOXu+HLW8RhDRA80KzV9OesTmDNWCg"
11737+ }
11738+ },
11739+ "user_id": "@alice_1557:hs1",
11740+ "unsigned": {}
11741+ }
11742+ },
11743+ "@alice_155:hs1": {
11744+ "ALICEDEVICE155": {
11745+ "algorithms": [
11746+ "m.olm.v1.curve25519-aes-sha2",
11747+ "m.megolm.v1.aes-sha2"
11748+ ],
11749+ "device_id": "ALICEDEVICE155",
11750+ "keys": {
11751+ "curve25519:ALICEDEVICE155": "3k8ALwQ6A6jX8PEyKHgaFXOfBHgvuHUgl6q0+2Zv+2M",
11752+ "ed25519:ALICEDEVICE155": "lX5+HNDyfzKHSkhOQaPrxZys1T1E2DwzPwbhaXfjJkM"
11753+ },
11754+ "signatures": {
11755+ "@alice_155:hs1": {
11756+ "ed25519:ALICEDEVICE155": "UBLgkBZE5Hly0pjz6nq/rVg71l1PhbsCCKyLnJJjHKtpGx507YOAJRWPDGAeMAyM3Qn6uJBFA6+74DYiln4+Bg"
11757+ }
11758+ },
11759+ "user_id": "@alice_155:hs1",
11760+ "unsigned": {}
11761+ }
11762+ },
11763+ "@alice_1568:hs1": {
11764+ "ALICEDEVICE1568": {
11765+ "algorithms": [
11766+ "m.olm.v1.curve25519-aes-sha2",
11767+ "m.megolm.v1.aes-sha2"
11768+ ],
11769+ "device_id": "ALICEDEVICE1568",
11770+ "keys": {
11771+ "curve25519:ALICEDEVICE1568": "2FZp9ANI5xYZABcLIu83UWTugtFZLq0Ebr/zdPD8hAg",
11772+ "ed25519:ALICEDEVICE1568": "U4I1wf9QqOOLYHwzsRrZnS+L/6i2EwLi4uVF910ZXc8"
11773+ },
11774+ "signatures": {
11775+ "@alice_1568:hs1": {
11776+ "ed25519:ALICEDEVICE1568": "wdzq1jlU7qAZte7MyA6inIs66w1YnvLmqRkSzec7FZbzX9wIgbQzdVKuPfhAnBbhd/sY8o4w1cvbZ2g4560gAg"
11777+ }
11778+ },
11779+ "user_id": "@alice_1568:hs1",
11780+ "unsigned": {}
11781+ }
11782+ },
11783+ "@alice_1581:hs1": {
11784+ "ALICEDEVICE1581": {
11785+ "algorithms": [
11786+ "m.olm.v1.curve25519-aes-sha2",
11787+ "m.megolm.v1.aes-sha2"
11788+ ],
11789+ "device_id": "ALICEDEVICE1581",
11790+ "keys": {
11791+ "curve25519:ALICEDEVICE1581": "u0i7IoS1ODrT3+z0YVMsWwgyUWXksx0PKmDkpWF9Kms",
11792+ "ed25519:ALICEDEVICE1581": "Y5mbfawEI0XG3nfBFICFQ2+cvnLlKB6vxytTzDWx/vM"
11793+ },
11794+ "signatures": {
11795+ "@alice_1581:hs1": {
11796+ "ed25519:ALICEDEVICE1581": "+ArmIbe+iGTypqDDtnLxHpeQM5AC/MT5GRjlx9OR/coYE1e76SQftee8FPwf8QrsT2z9WUk1ZqoIaGD+WzKQCw"
11797+ }
11798+ },
11799+ "user_id": "@alice_1581:hs1",
11800+ "unsigned": {}
11801+ }
11802+ },
11803+ "@alice_1589:hs1": {
11804+ "ALICEDEVICE1589": {
11805+ "algorithms": [
11806+ "m.olm.v1.curve25519-aes-sha2",
11807+ "m.megolm.v1.aes-sha2"
11808+ ],
11809+ "device_id": "ALICEDEVICE1589",
11810+ "keys": {
11811+ "curve25519:ALICEDEVICE1589": "ALZ34FKatK79pjpXyFybU7Hf1P3r6Y0I3GXp5P33qx4",
11812+ "ed25519:ALICEDEVICE1589": "Ns8VBFgEdAlXKfCpigB2ywGspSs+3No283W6YkVoORI"
11813+ },
11814+ "signatures": {
11815+ "@alice_1589:hs1": {
11816+ "ed25519:ALICEDEVICE1589": "a/xU/ZS2nGBWsdRNZ8mi/dVlSamrJTRw590eiV4rjBX0HnYSuHocWVw4ur1djofMffxfOZ7TK8GsPN2KSDQyDQ"
11817+ }
11818+ },
11819+ "user_id": "@alice_1589:hs1",
11820+ "unsigned": {}
11821+ }
11822+ },
11823+ "@alice_1593:hs1": {
11824+ "ALICEDEVICE1593": {
11825+ "algorithms": [
11826+ "m.olm.v1.curve25519-aes-sha2",
11827+ "m.megolm.v1.aes-sha2"
11828+ ],
11829+ "device_id": "ALICEDEVICE1593",
11830+ "keys": {
11831+ "curve25519:ALICEDEVICE1593": "ABuSVMCWL8CMkFZ2yT7QZNGO9u1cjcv3gFHrluUI2yY",
11832+ "ed25519:ALICEDEVICE1593": "ftiIVkI60t2H7OxOuC7oLh7x/0ewOJTHVHQsnqV5+Cc"
11833+ },
11834+ "signatures": {
11835+ "@alice_1593:hs1": {
11836+ "ed25519:ALICEDEVICE1593": "V3+cFDyBw7QeZzVB+ZhWmPphvvWhJa5A/0tnE5aA31NbGGLiIWbrzBAKekRAbLsP6GqrGPl1+O3Ny2ukBxaKCw"
11837+ }
11838+ },
11839+ "user_id": "@alice_1593:hs1",
11840+ "unsigned": {}
11841+ }
11842+ },
11843+ "@alice_1600:hs1": {
11844+ "ALICEDEVICE1600": {
11845+ "algorithms": [
11846+ "m.olm.v1.curve25519-aes-sha2",
11847+ "m.megolm.v1.aes-sha2"
11848+ ],
11849+ "device_id": "ALICEDEVICE1600",
11850+ "keys": {
11851+ "curve25519:ALICEDEVICE1600": "LxK0iPVhZCaBbAfoIc15epdwmwdxGTFj7joMCAFxTUY",
11852+ "ed25519:ALICEDEVICE1600": "Dab7sfAiGYB+3uOpqHlDIbQIOJzt3kJOdWWUSIrDGRc"
11853+ },
11854+ "signatures": {
11855+ "@alice_1600:hs1": {
11856+ "ed25519:ALICEDEVICE1600": "AFHdBeJZ6+4H4bxDD9LsQPcIyho1WP1iFP7g2wWqs2OaQF/PB2fKrzKyzhNNkh+eQEPULMAsxDn+i4jzz5QOBw"
11857+ }
11858+ },
11859+ "user_id": "@alice_1600:hs1",
11860+ "unsigned": {}
11861+ }
11862+ },
11863+ "@alice_1613:hs1": {
11864+ "ALICEDEVICE1613": {
11865+ "algorithms": [
11866+ "m.olm.v1.curve25519-aes-sha2",
11867+ "m.megolm.v1.aes-sha2"
11868+ ],
11869+ "device_id": "ALICEDEVICE1613",
11870+ "keys": {
11871+ "curve25519:ALICEDEVICE1613": "XCR4pVjNm8ECS+rwbZXEcU7dOz+dsW7+l4WJtIvK/C0",
11872+ "ed25519:ALICEDEVICE1613": "oXPVei3bNZH70B+YdIY6r4bjjDywVSv/YG2P2vCURak"
11873+ },
11874+ "signatures": {
11875+ "@alice_1613:hs1": {
11876+ "ed25519:ALICEDEVICE1613": "5YFG921L1gLkmVtiVJU3DbVFOFyv2Bm8RtwteknHS67O1mBP2Re1M4GMScIqhRpzG4+Zb9umbNdGfwmUg4U8Aw"
11877+ }
11878+ },
11879+ "user_id": "@alice_1613:hs1",
11880+ "unsigned": {}
11881+ }
11882+ },
11883+ "@alice_1614:hs1": {
11884+ "ALICEDEVICE1614": {
11885+ "algorithms": [
11886+ "m.olm.v1.curve25519-aes-sha2",
11887+ "m.megolm.v1.aes-sha2"
11888+ ],
11889+ "device_id": "ALICEDEVICE1614",
11890+ "keys": {
11891+ "curve25519:ALICEDEVICE1614": "UCrMLoO3NdRCbSegtK0xDrHIeuUzIfkWNYmiuu0R+n8",
11892+ "ed25519:ALICEDEVICE1614": "CgUNrol1KBxlLfaqZF62gczkMycSdfvsKlpwAWBxtIs"
11893+ },
11894+ "signatures": {
11895+ "@alice_1614:hs1": {
11896+ "ed25519:ALICEDEVICE1614": "bzxlCoqhKVfCpb9Y7TDAhhfm15Sg6z1mscufqDEYGyeTL5K43EmOcnu4KWtDEf7EB3Jj1r3mEYDKYS6kekNICQ"
11897+ }
11898+ },
11899+ "user_id": "@alice_1614:hs1",
11900+ "unsigned": {}
11901+ }
11902+ },
11903+ "@alice_1615:hs1": {
11904+ "ALICEDEVICE1615": {
11905+ "algorithms": [
11906+ "m.olm.v1.curve25519-aes-sha2",
11907+ "m.megolm.v1.aes-sha2"
11908+ ],
11909+ "device_id": "ALICEDEVICE1615",
11910+ "keys": {
11911+ "curve25519:ALICEDEVICE1615": "di0ikcg5o5YG42HwPdtU/YrjwOqj5CXiJnDqZdsSgg0",
11912+ "ed25519:ALICEDEVICE1615": "bvxOOnG19guCNzJeAJOf5UHdMqIvjpIN1r+DZAkZXe8"
11913+ },
11914+ "signatures": {
11915+ "@alice_1615:hs1": {
11916+ "ed25519:ALICEDEVICE1615": "nYaCxZgO10rebavPHlm61BOaLK7ooApyiTnuDOVmSPkS9bEM7Eu3dv70PoZpnwDJ80e96AOpp1UsgD7NTNW4Cg"
11917+ }
11918+ },
11919+ "user_id": "@alice_1615:hs1",
11920+ "unsigned": {}
11921+ }
11922+ },
11923+ "@alice_1626:hs1": {
11924+ "ALICEDEVICE1626": {
11925+ "algorithms": [
11926+ "m.olm.v1.curve25519-aes-sha2",
11927+ "m.megolm.v1.aes-sha2"
11928+ ],
11929+ "device_id": "ALICEDEVICE1626",
11930+ "keys": {
11931+ "curve25519:ALICEDEVICE1626": "yfuK1ztJ+ODa5vJi1XQVxhbA7x0zKypsRgWnTmGtFwA",
11932+ "ed25519:ALICEDEVICE1626": "R7xVD+6OM6delZURiRze1qFMJJWvRt8tP6p4M8rkOW8"
11933+ },
11934+ "signatures": {
11935+ "@alice_1626:hs1": {
11936+ "ed25519:ALICEDEVICE1626": "OJE1F4v1jEhVS9uKAl3M3aaGcTfje7oLTSRARCE08+Xrz2cb+14eURUz+B29OBxrs4i/SIGij9CtCCsY4AYuDQ"
11937+ }
11938+ },
11939+ "user_id": "@alice_1626:hs1",
11940+ "unsigned": {}
11941+ }
11942+ },
11943+ "@alice_1628:hs1": {
11944+ "ALICEDEVICE1628": {
11945+ "algorithms": [
11946+ "m.olm.v1.curve25519-aes-sha2",
11947+ "m.megolm.v1.aes-sha2"
11948+ ],
11949+ "device_id": "ALICEDEVICE1628",
11950+ "keys": {
11951+ "curve25519:ALICEDEVICE1628": "JA5VAr2yJeC1wjibJCzckq6mydeK4iFd8O80ZFvgMAw",
11952+ "ed25519:ALICEDEVICE1628": "C/9oizZL4LMb7msgC4gJlP2uqQhM7NsZ4E9bOcv8hhU"
11953+ },
11954+ "signatures": {
11955+ "@alice_1628:hs1": {
11956+ "ed25519:ALICEDEVICE1628": "+KwLsmDRaL+5EUny+PssO/5vohJFGXqcNwtLlWbksbdNH1EyQ8Gil6nhpE2cXQyC0fWxAigVJGlF/Wssp7RXBQ"
11957+ }
11958+ },
11959+ "user_id": "@alice_1628:hs1",
11960+ "unsigned": {}
11961+ }
11962+ },
11963+ "@alice_1633:hs1": {
11964+ "ALICEDEVICE1633": {
11965+ "algorithms": [
11966+ "m.olm.v1.curve25519-aes-sha2",
11967+ "m.megolm.v1.aes-sha2"
11968+ ],
11969+ "device_id": "ALICEDEVICE1633",
11970+ "keys": {
11971+ "curve25519:ALICEDEVICE1633": "yTgiM1jlmzI5TO5d6VE5Y3W8nHIx2/nWpwBMTynxwV0",
11972+ "ed25519:ALICEDEVICE1633": "BqnyiPhp9wpgcGD/sf2tP0hQJBLCEae8QF+fKmyA980"
11973+ },
11974+ "signatures": {
11975+ "@alice_1633:hs1": {
11976+ "ed25519:ALICEDEVICE1633": "LVkbBFNDhQtKndS8fsV3Kpjw8y16xxlpFFlVj+0RHhZF6Ja8m6b2ReeBIR7eWMSBg376TI6xeVJRjs7DWP2cAQ"
11977+ }
11978+ },
11979+ "user_id": "@alice_1633:hs1",
11980+ "unsigned": {}
11981+ }
11982+ },
11983+ "@alice_1634:hs1": {
11984+ "ALICEDEVICE1634": {
11985+ "algorithms": [
11986+ "m.olm.v1.curve25519-aes-sha2",
11987+ "m.megolm.v1.aes-sha2"
11988+ ],
11989+ "device_id": "ALICEDEVICE1634",
11990+ "keys": {
11991+ "curve25519:ALICEDEVICE1634": "ogDckVVa61DarfrW9tmU/OvJ7XUCajIs33Pu5vhlbg4",
11992+ "ed25519:ALICEDEVICE1634": "Um+O2kULrUW9yXxej104kUGTKA2Wo/whCDCc80jKciU"
11993+ },
11994+ "signatures": {
11995+ "@alice_1634:hs1": {
11996+ "ed25519:ALICEDEVICE1634": "Y4iqBltk6OOXiS7B94AGBTJKWJVtaE1xt6n9V4aSxlNxZIg7tsMRT+XHgirZSHv3XR6uXsdvX0LbMO3Vp2EnAA"
11997+ }
11998+ },
11999+ "user_id": "@alice_1634:hs1",
12000+ "unsigned": {}
12001+ }
12002+ },
12003+ "@alice_1646:hs1": {
12004+ "ALICEDEVICE1646": {
12005+ "algorithms": [
12006+ "m.olm.v1.curve25519-aes-sha2",
12007+ "m.megolm.v1.aes-sha2"
12008+ ],
12009+ "device_id": "ALICEDEVICE1646",
12010+ "keys": {
12011+ "curve25519:ALICEDEVICE1646": "bz7WEZZdVGHLopeAyvku5ogyIgzrNYSq9p0tox5fghw",
12012+ "ed25519:ALICEDEVICE1646": "JabnnT9wE7Vn8eW/WJDAqKShMIzZR71S6agqpQRgRn4"
12013+ },
12014+ "signatures": {
12015+ "@alice_1646:hs1": {
12016+ "ed25519:ALICEDEVICE1646": "jwst2xFT6AzIf5Oza+oIeoQRAZrPI4Qcrgw6m582yz6y2gUKAhLtwgU58vlnKn+AWa6l7rhVgTmTgxWa1SvGAA"
12017+ }
12018+ },
12019+ "user_id": "@alice_1646:hs1",
12020+ "unsigned": {}
12021+ }
12022+ },
12023+ "@alice_1657:hs1": {
12024+ "ALICEDEVICE1657": {
12025+ "algorithms": [
12026+ "m.olm.v1.curve25519-aes-sha2",
12027+ "m.megolm.v1.aes-sha2"
12028+ ],
12029+ "device_id": "ALICEDEVICE1657",
12030+ "keys": {
12031+ "curve25519:ALICEDEVICE1657": "2di4zdpKATqhN2A5LWVUQtzCbXLVcl4UKbn1yeinyzE",
12032+ "ed25519:ALICEDEVICE1657": "cgieKsPn7djSqgjyu5OpFnMcWKRhn6ZWl2emJI+6fAw"
12033+ },
12034+ "signatures": {
12035+ "@alice_1657:hs1": {
12036+ "ed25519:ALICEDEVICE1657": "QYyPYvMtM1EZz5JZv/4fpj3rPQLxlh2OkuycjuauXqaWERMoWKtBlxTb+qLQxx2G/EJ4yJJdphWbS/dWOZ8wAg"
12037+ }
12038+ },
12039+ "user_id": "@alice_1657:hs1",
12040+ "unsigned": {}
12041+ }
12042+ },
12043+ "@alice_165:hs1": {
12044+ "ALICEDEVICE165": {
12045+ "algorithms": [
12046+ "m.olm.v1.curve25519-aes-sha2",
12047+ "m.megolm.v1.aes-sha2"
12048+ ],
12049+ "device_id": "ALICEDEVICE165",
12050+ "keys": {
12051+ "curve25519:ALICEDEVICE165": "gHrt8pH3gl64hsTUdkvGi3teyZ87sWbPNzjjMtRv3XU",
12052+ "ed25519:ALICEDEVICE165": "vCXzGu3Rzbwftapv+f2qwrpe5zVkJ7c6EZNrMj0/r4k"
12053+ },
12054+ "signatures": {
12055+ "@alice_165:hs1": {
12056+ "ed25519:ALICEDEVICE165": "W6at6/b29pOh2oIqZo/STiWmO/720ZpqF+hsVExj+n8EFfqazFOnHBQOU4L1k+sbSBki8IhgqLMqE0YLcap2DA"
12057+ }
12058+ },
12059+ "user_id": "@alice_165:hs1",
12060+ "unsigned": {}
12061+ }
12062+ },
12063+ "@alice_1662:hs1": {
12064+ "ALICEDEVICE1662": {
12065+ "algorithms": [
12066+ "m.olm.v1.curve25519-aes-sha2",
12067+ "m.megolm.v1.aes-sha2"
12068+ ],
12069+ "device_id": "ALICEDEVICE1662",
12070+ "keys": {
12071+ "curve25519:ALICEDEVICE1662": "3XfpUwO6WtJ25sKUSgvVlldvri6pnkoIDCCw6idlmEk",
12072+ "ed25519:ALICEDEVICE1662": "ccj14LVboEVKeoEVBQ48ASaVu81+J/5TeM7ugvQ08Q0"
12073+ },
12074+ "signatures": {
12075+ "@alice_1662:hs1": {
12076+ "ed25519:ALICEDEVICE1662": "UdaFgQ8qBi86h3bRjxYhLRSMPb4/p+hz6wDqMKWjK4D6bCO9KvgxjRqsoF+7MsJeRUFein/g5vmmF/qNqRkPCA"
12077+ }
12078+ },
12079+ "user_id": "@alice_1662:hs1",
12080+ "unsigned": {}
12081+ }
12082+ },
12083+ "@alice_1665:hs1": {
12084+ "ALICEDEVICE1665": {
12085+ "algorithms": [
12086+ "m.olm.v1.curve25519-aes-sha2",
12087+ "m.megolm.v1.aes-sha2"
12088+ ],
12089+ "device_id": "ALICEDEVICE1665",
12090+ "keys": {
12091+ "curve25519:ALICEDEVICE1665": "ulqdKbHwtYHhc6BCi4Wo6qiat2qbCZ9cB4nIwJcv3Ug",
12092+ "ed25519:ALICEDEVICE1665": "UfjWwcf6jKErxAa94F7uMQ1OZjYvrroko1lA0to318I"
12093+ },
12094+ "signatures": {
12095+ "@alice_1665:hs1": {
12096+ "ed25519:ALICEDEVICE1665": "YQeW6TyJgVQGsfNfbEpNELZszYSAOCrIPzokOA3rHxP0ucXHqJYPmVEsmMPHKX8WW/Ue4FzYxpzjSsSaS2YsBA"
12097+ }
12098+ },
12099+ "user_id": "@alice_1665:hs1",
12100+ "unsigned": {}
12101+ }
12102+ },
12103+ "@alice_1668:hs1": {
12104+ "ALICEDEVICE1668": {
12105+ "algorithms": [
12106+ "m.olm.v1.curve25519-aes-sha2",
12107+ "m.megolm.v1.aes-sha2"
12108+ ],
12109+ "device_id": "ALICEDEVICE1668",
12110+ "keys": {
12111+ "curve25519:ALICEDEVICE1668": "9duG8R6SOtDBZVAEktOZ8+MoRAlVWBRpZMtIC1T+nGg",
12112+ "ed25519:ALICEDEVICE1668": "bgJy9GvKtdP1nXSXsy0U7JGvuWp18HJlu/27PPSX1Vk"
12113+ },
12114+ "signatures": {
12115+ "@alice_1668:hs1": {
12116+ "ed25519:ALICEDEVICE1668": "z/9nVn1qxQ6nqL+pz79MSMU0OB83rpgv0VIv0lBZiKiAWYJWbCyWUcEEOw2YLSQBpqqPG0ZE9iUbTwSvN0k5Dg"
12117+ }
12118+ },
12119+ "user_id": "@alice_1668:hs1",
12120+ "unsigned": {}
12121+ }
12122+ },
12123+ "@alice_1676:hs1": {
12124+ "ALICEDEVICE1676": {
12125+ "algorithms": [
12126+ "m.olm.v1.curve25519-aes-sha2",
12127+ "m.megolm.v1.aes-sha2"
12128+ ],
12129+ "device_id": "ALICEDEVICE1676",
12130+ "keys": {
12131+ "curve25519:ALICEDEVICE1676": "U2hNF/y4BdWow6fyrdYb0uoRtzuxNoqNXqLCtrUvC10",
12132+ "ed25519:ALICEDEVICE1676": "WHZjyGgpHFsBuJWNlSF4Epkc88TfsPdHyMj3kYIoNgg"
12133+ },
12134+ "signatures": {
12135+ "@alice_1676:hs1": {
12136+ "ed25519:ALICEDEVICE1676": "Y4MQ2U1Bf7XKD/8S9ZobMf/g5Wh7IwjIfL7jjgBYGJt+T0yOdq3Qh6PC+PhQHuFBhEOS2vBnWjD48m6PAJeBBA"
12137+ }
12138+ },
12139+ "user_id": "@alice_1676:hs1",
12140+ "unsigned": {}
12141+ }
12142+ },
12143+ "@alice_167:hs1": {
12144+ "ALICEDEVICE167": {
12145+ "algorithms": [
12146+ "m.olm.v1.curve25519-aes-sha2",
12147+ "m.megolm.v1.aes-sha2"
12148+ ],
12149+ "device_id": "ALICEDEVICE167",
12150+ "keys": {
12151+ "curve25519:ALICEDEVICE167": "IKF4QhuLvtat37/iUrVM4TcVbaAL0IlIf9SM7Tcbgm0",
12152+ "ed25519:ALICEDEVICE167": "wOSHUd/DWMzStoFEUIyK84jgbVzjxV8zykRuWFqSGto"
12153+ },
12154+ "signatures": {
12155+ "@alice_167:hs1": {
12156+ "ed25519:ALICEDEVICE167": "i2kceUllaGzbDizQFMu9ukD3WyfPTLQvTifga5TrtQtydJwL8cC5U2Sbp9L7mKa7cK580XGpAbLi2MI5QzZFDg"
12157+ }
12158+ },
12159+ "user_id": "@alice_167:hs1",
12160+ "unsigned": {}
12161+ }
12162+ },
12163+ "@alice_1687:hs1": {
12164+ "ALICEDEVICE1687": {
12165+ "algorithms": [
12166+ "m.olm.v1.curve25519-aes-sha2",
12167+ "m.megolm.v1.aes-sha2"
12168+ ],
12169+ "device_id": "ALICEDEVICE1687",
12170+ "keys": {
12171+ "curve25519:ALICEDEVICE1687": "cBzxJCXRgpVZjxtS1J8DkNut+4AtYxmMdrNEorPEhBg",
12172+ "ed25519:ALICEDEVICE1687": "v3a2RCU5/qOd/PlLWju5zqjszblFsLNQ6rBvOB9T7fo"
12173+ },
12174+ "signatures": {
12175+ "@alice_1687:hs1": {
12176+ "ed25519:ALICEDEVICE1687": "eBSEdp/j3ViWrKZFUwkjMIuWznEi6m8w7CFfFyG93MXpHU7O8cYMUloR6tjmAGTu+gsAeNQK38Gsy+sDVJQ+DQ"
12177+ }
12178+ },
12179+ "user_id": "@alice_1687:hs1",
12180+ "unsigned": {}
12181+ }
12182+ },
12183+ "@alice_1694:hs1": {
12184+ "ALICEDEVICE1694": {
12185+ "algorithms": [
12186+ "m.olm.v1.curve25519-aes-sha2",
12187+ "m.megolm.v1.aes-sha2"
12188+ ],
12189+ "device_id": "ALICEDEVICE1694",
12190+ "keys": {
12191+ "curve25519:ALICEDEVICE1694": "FzK9Khf540LRFPOXiHzYTlpcB/Es/ZLov6SmkZ+N6go",
12192+ "ed25519:ALICEDEVICE1694": "NBF4nmSyZPaN4gc8qQk9648gMbE3CYqldpXUwG+EMnA"
12193+ },
12194+ "signatures": {
12195+ "@alice_1694:hs1": {
12196+ "ed25519:ALICEDEVICE1694": "QZaPnjFXKXsHyn4DSmWVUkdiUQsLA9+x/Ub7jWt3ZUpfI+uzgkuxBURBwkqWZ1JeANqAJDWuGQhgSyWRl4BGDQ"
12197+ }
12198+ },
12199+ "user_id": "@alice_1694:hs1",
12200+ "unsigned": {}
12201+ }
12202+ },
12203+ "@alice_1696:hs1": {
12204+ "ALICEDEVICE1696": {
12205+ "algorithms": [
12206+ "m.olm.v1.curve25519-aes-sha2",
12207+ "m.megolm.v1.aes-sha2"
12208+ ],
12209+ "device_id": "ALICEDEVICE1696",
12210+ "keys": {
12211+ "curve25519:ALICEDEVICE1696": "ild5O7XebRvrL0yD9FxUyAaxjnPhV96vFRzC0bTaOlo",
12212+ "ed25519:ALICEDEVICE1696": "6mNAg+1kYfJDd78kCxM7BtqSX40F7+eJ28z5ESGAXhQ"
12213+ },
12214+ "signatures": {
12215+ "@alice_1696:hs1": {
12216+ "ed25519:ALICEDEVICE1696": "N90wjiWZmt+pqEv49bpCDVTGDi5TTV8FQabD9gpjKZppN/lAmikBgbGaSkvbR1W1yYSse41c9YlPuCIYPJaGDg"
12217+ }
12218+ },
12219+ "user_id": "@alice_1696:hs1",
12220+ "unsigned": {}
12221+ }
12222+ },
12223+ "@alice_1715:hs1": {
12224+ "ALICEDEVICE1715": {
12225+ "algorithms": [
12226+ "m.olm.v1.curve25519-aes-sha2",
12227+ "m.megolm.v1.aes-sha2"
12228+ ],
12229+ "device_id": "ALICEDEVICE1715",
12230+ "keys": {
12231+ "curve25519:ALICEDEVICE1715": "onaydxKMs6LnzpnjdRz0dIJ602laFm4qrdNfB+EKZR8",
12232+ "ed25519:ALICEDEVICE1715": "JH/wI+FVgUd7qSBndWPRcCvSK+NPRrL2DayYDFhTMMA"
12233+ },
12234+ "signatures": {
12235+ "@alice_1715:hs1": {
12236+ "ed25519:ALICEDEVICE1715": "TggrA3dPXzKb2zvaunVBsZc2QSkbkIcT8m0hycyfQ5j2UBpPLR2y4tG8AD4OQMx6brnnT3/vhJ9fH01siBGNCg"
12237+ }
12238+ },
12239+ "user_id": "@alice_1715:hs1",
12240+ "unsigned": {}
12241+ }
12242+ },
12243+ "@alice_1726:hs1": {
12244+ "ALICEDEVICE1726": {
12245+ "algorithms": [
12246+ "m.olm.v1.curve25519-aes-sha2",
12247+ "m.megolm.v1.aes-sha2"
12248+ ],
12249+ "device_id": "ALICEDEVICE1726",
12250+ "keys": {
12251+ "curve25519:ALICEDEVICE1726": "ZPMWy2HCF5vK/EWfWiK/xSo4+GejZ3pJBGgJdpIvGmE",
12252+ "ed25519:ALICEDEVICE1726": "OMdkOYPcPBdI9+X2DbpwTFsTyG2zptxXbGD1gH+P4GY"
12253+ },
12254+ "signatures": {
12255+ "@alice_1726:hs1": {
12256+ "ed25519:ALICEDEVICE1726": "Ut0kEgHhFMhAN536iOCz/q+RNE94tDYcOkRvjQXdMUdsRtuk4UPyTJKivBXXlneGL9CAZcTKsVXAbAy5NQwYAg"
12257+ }
12258+ },
12259+ "user_id": "@alice_1726:hs1",
12260+ "unsigned": {}
12261+ }
12262+ },
12263+ "@alice_1742:hs1": {
12264+ "ALICEDEVICE1742": {
12265+ "algorithms": [
12266+ "m.olm.v1.curve25519-aes-sha2",
12267+ "m.megolm.v1.aes-sha2"
12268+ ],
12269+ "device_id": "ALICEDEVICE1742",
12270+ "keys": {
12271+ "curve25519:ALICEDEVICE1742": "ie+7krqA7MbCXIh9iQtQGSkQfhogHYf4IcH0v9AebDw",
12272+ "ed25519:ALICEDEVICE1742": "vI/fubXZHgvBCBePWJbNf1b5Oz4hPft+F9tgrvHOTCw"
12273+ },
12274+ "signatures": {
12275+ "@alice_1742:hs1": {
12276+ "ed25519:ALICEDEVICE1742": "wZxOjmME+Aokeo+4s22MyXM7Jl+tx7aiyLyfI516dw/o6SMTVyS2b2VIBrHaRXGIq9TwOgowSpVOg07U/B7RAA"
12277+ }
12278+ },
12279+ "user_id": "@alice_1742:hs1",
12280+ "unsigned": {}
12281+ }
12282+ },
12283+ "@alice_1744:hs1": {
12284+ "ALICEDEVICE1744": {
12285+ "algorithms": [
12286+ "m.olm.v1.curve25519-aes-sha2",
12287+ "m.megolm.v1.aes-sha2"
12288+ ],
12289+ "device_id": "ALICEDEVICE1744",
12290+ "keys": {
12291+ "curve25519:ALICEDEVICE1744": "kwHy4toULY4OrpQJYKVdjO/8NmHZQkyb45BcuPE8NWw",
12292+ "ed25519:ALICEDEVICE1744": "Ks1f0MGigBM7+Xpy6fWH8xI6gLs1SN0o/hluHz3ULKg"
12293+ },
12294+ "signatures": {
12295+ "@alice_1744:hs1": {
12296+ "ed25519:ALICEDEVICE1744": "ZQzQrVur0wUt7b97zWGDmToGWoRaRAtYEXpeuJ9vDKcd3jz7gIuKvFR40hNecLbgMAYJjuYrWKkNTUSPpPs/Cg"
12297+ }
12298+ },
12299+ "user_id": "@alice_1744:hs1",
12300+ "unsigned": {}
12301+ }
12302+ },
12303+ "@alice_1745:hs1": {
12304+ "ALICEDEVICE1745": {
12305+ "algorithms": [
12306+ "m.olm.v1.curve25519-aes-sha2",
12307+ "m.megolm.v1.aes-sha2"
12308+ ],
12309+ "device_id": "ALICEDEVICE1745",
12310+ "keys": {
12311+ "curve25519:ALICEDEVICE1745": "zXlFYjroSjRNgL8uPLsrDZSKnnJiG30bjNSo3aTF0Qc",
12312+ "ed25519:ALICEDEVICE1745": "vbACChYN7Y3Czt0zES8HbvD5V1+mcN+xfLcxumlszSU"
12313+ },
12314+ "signatures": {
12315+ "@alice_1745:hs1": {
12316+ "ed25519:ALICEDEVICE1745": "3YNPU911nbZMWFuV9LeDeiXQ32uvoDZ9N6g7vxTxRvhQ2VT6pitTNvxfJPzE/EiWsSVpC3Ucz2e2sMoHZL3JDQ"
12317+ }
12318+ },
12319+ "user_id": "@alice_1745:hs1",
12320+ "unsigned": {}
12321+ }
12322+ },
12323+ "@alice_1748:hs1": {
12324+ "ALICEDEVICE1748": {
12325+ "algorithms": [
12326+ "m.olm.v1.curve25519-aes-sha2",
12327+ "m.megolm.v1.aes-sha2"
12328+ ],
12329+ "device_id": "ALICEDEVICE1748",
12330+ "keys": {
12331+ "curve25519:ALICEDEVICE1748": "vSNBg9XNZhyr9/fOpVEA56v2QuUvx1RAk0YZeq+k7zA",
12332+ "ed25519:ALICEDEVICE1748": "mOo8Qva3DlaR+iLxx6Tv2h9eq/IIaSrt0koTezzkzNU"
12333+ },
12334+ "signatures": {
12335+ "@alice_1748:hs1": {
12336+ "ed25519:ALICEDEVICE1748": "j4Wmu6OFY6+scj5aiOZvOS/IV/VOAF4iRwDu1X0Sk3RzcfI9KOI9feZH5ihPuAzBHUHvpwosCrS75X7cpd5PDA"
12337+ }
12338+ },
12339+ "user_id": "@alice_1748:hs1",
12340+ "unsigned": {}
12341+ }
12342+ },
12343+ "@alice_1766:hs1": {
12344+ "ALICEDEVICE1766": {
12345+ "algorithms": [
12346+ "m.olm.v1.curve25519-aes-sha2",
12347+ "m.megolm.v1.aes-sha2"
12348+ ],
12349+ "device_id": "ALICEDEVICE1766",
12350+ "keys": {
12351+ "curve25519:ALICEDEVICE1766": "u2fkRlufvmwOSOsAkBUC3qaNeEe89WoCMHzMqIFxphg",
12352+ "ed25519:ALICEDEVICE1766": "voFaENANo+NdQ6lpChpG79lOmn++rG0Xpjx9EiEcXkA"
12353+ },
12354+ "signatures": {
12355+ "@alice_1766:hs1": {
12356+ "ed25519:ALICEDEVICE1766": "IsJcQm9xTRJpeZO3hN1dMTiVMdcHvXchFlRcFtMHJTTSt+V09dYVlTT9DKVLLUnWKa9peldUiQDsItYgFo5gAA"
12357+ }
12358+ },
12359+ "user_id": "@alice_1766:hs1",
12360+ "unsigned": {}
12361+ }
12362+ },
12363+ "@alice_1772:hs1": {
12364+ "ALICEDEVICE1772": {
12365+ "algorithms": [
12366+ "m.olm.v1.curve25519-aes-sha2",
12367+ "m.megolm.v1.aes-sha2"
12368+ ],
12369+ "device_id": "ALICEDEVICE1772",
12370+ "keys": {
12371+ "curve25519:ALICEDEVICE1772": "oJbLcC7k0WHR1gsZ7/Dw7uAmSc9wfIyZwQnFGjH6DQI",
12372+ "ed25519:ALICEDEVICE1772": "JYhId625EwqAMfCNPbkMGGywLPwo/3hwxiERzj3E73g"
12373+ },
12374+ "signatures": {
12375+ "@alice_1772:hs1": {
12376+ "ed25519:ALICEDEVICE1772": "1ZXJEJaKpXt5lyh5aP52zQNW7l8qQfiJGMkdNHmnUXeEHVrRDTSTb8K9Fu9C3HdzwnKE/lg4cyS6rUKFy9SLCA"
12377+ }
12378+ },
12379+ "user_id": "@alice_1772:hs1",
12380+ "unsigned": {}
12381+ }
12382+ },
12383+ "@alice_1795:hs1": {
12384+ "ALICEDEVICE1795": {
12385+ "algorithms": [
12386+ "m.olm.v1.curve25519-aes-sha2",
12387+ "m.megolm.v1.aes-sha2"
12388+ ],
12389+ "device_id": "ALICEDEVICE1795",
12390+ "keys": {
12391+ "curve25519:ALICEDEVICE1795": "AQvpARV8wUFku2z3oCi2AL9ukjLGAEGZYxaFCEFVEHA",
12392+ "ed25519:ALICEDEVICE1795": "SvkjyCvVbrWbtT3oKvQ1ycYK9Eig5zrtv9Z/SFVB//Q"
12393+ },
12394+ "signatures": {
12395+ "@alice_1795:hs1": {
12396+ "ed25519:ALICEDEVICE1795": "KFNvj2jM1kO7a0rRNq3TsPerxAvKmFMps5ibhCHc9WoLej0ogu4ws+REGFHRLFiQEDWr4kKTz22S3v3ITBRIDA"
12397+ }
12398+ },
12399+ "user_id": "@alice_1795:hs1",
12400+ "unsigned": {}
12401+ }
12402+ },
12403+ "@alice_1796:hs1": {
12404+ "ALICEDEVICE1796": {
12405+ "algorithms": [
12406+ "m.olm.v1.curve25519-aes-sha2",
12407+ "m.megolm.v1.aes-sha2"
12408+ ],
12409+ "device_id": "ALICEDEVICE1796",
12410+ "keys": {
12411+ "curve25519:ALICEDEVICE1796": "Ibui4wFhOC7YHhBxevi501iG/QKm/XJ7qgdSMuTj8lU",
12412+ "ed25519:ALICEDEVICE1796": "sx9k9I0TfUEctmvso5mqfil1qgsZBixe1usBiDyukio"
12413+ },
12414+ "signatures": {
12415+ "@alice_1796:hs1": {
12416+ "ed25519:ALICEDEVICE1796": "5p2fcPYhvxbkhz8cE99RJ15PVJ+OkZUJVUyOAQ8h+4sw6JsnAh3VK5lfb7FCajrXjoq/2+7lWHzIs8ofB2IzDg"
12417+ }
12418+ },
12419+ "user_id": "@alice_1796:hs1",
12420+ "unsigned": {}
12421+ }
12422+ },
12423+ "@alice_1797:hs1": {
12424+ "ALICEDEVICE1797": {
12425+ "algorithms": [
12426+ "m.olm.v1.curve25519-aes-sha2",
12427+ "m.megolm.v1.aes-sha2"
12428+ ],
12429+ "device_id": "ALICEDEVICE1797",
12430+ "keys": {
12431+ "curve25519:ALICEDEVICE1797": "YY51qwSdWHLGdNrHGuiYV3mTeyATOnemQBYoitLuIy0",
12432+ "ed25519:ALICEDEVICE1797": "sYegJJN3FWbg556D4wKxZfCWgd3y4WeZqNJBeIEUTpw"
12433+ },
12434+ "signatures": {
12435+ "@alice_1797:hs1": {
12436+ "ed25519:ALICEDEVICE1797": "tgXzMZOA3Ybw+hu3l11rhUHK8fawtXawQUwnFI7dxtNZKJRS2mrz1HRwg4gmikKToIp+jPyTtZhaVRHhsUTYAw"
12437+ }
12438+ },
12439+ "user_id": "@alice_1797:hs1",
12440+ "unsigned": {}
12441+ }
12442+ },
12443+ "@alice_1802:hs1": {
12444+ "ALICEDEVICE1802": {
12445+ "algorithms": [
12446+ "m.olm.v1.curve25519-aes-sha2",
12447+ "m.megolm.v1.aes-sha2"
12448+ ],
12449+ "device_id": "ALICEDEVICE1802",
12450+ "keys": {
12451+ "curve25519:ALICEDEVICE1802": "BQ5OaXr+YreadpQnSbWDlUZCe6wUXWX9A0jVSW87ywc",
12452+ "ed25519:ALICEDEVICE1802": "47Vf+P9Kip1xnzFrrVNMaKzZ1nZeCPYwA0P9PB4aW+w"
12453+ },
12454+ "signatures": {
12455+ "@alice_1802:hs1": {
12456+ "ed25519:ALICEDEVICE1802": "qv1tnL9VSnaFa4jjpSF8QgRKTmhpJFPFvKo6pZprYee/yk1+G46qHm8K3ngsd3Np2B6G+otSz9yJvvAQzss5Ag"
12457+ }
12458+ },
12459+ "user_id": "@alice_1802:hs1",
12460+ "unsigned": {}
12461+ }
12462+ },
12463+ "@alice_1803:hs1": {
12464+ "ALICEDEVICE1803": {
12465+ "algorithms": [
12466+ "m.olm.v1.curve25519-aes-sha2",
12467+ "m.megolm.v1.aes-sha2"
12468+ ],
12469+ "device_id": "ALICEDEVICE1803",
12470+ "keys": {
12471+ "curve25519:ALICEDEVICE1803": "xMjS8PQxDqk9Ev/CFx5wDY8/aWbqcMLgKGHk9yE17AE",
12472+ "ed25519:ALICEDEVICE1803": "PMTfVbIWNWlrGO41V4wOiYh7xTQEh19TDvVrfgyi9BM"
12473+ },
12474+ "signatures": {
12475+ "@alice_1803:hs1": {
12476+ "ed25519:ALICEDEVICE1803": "nqrbkpjKdZde82TAZfIUIC+FY5CvEjONC1uzVDo4DhauOcBh1jPMAFmu0QG+mev0O99c8Rce4dzxbJTKw1xADg"
12477+ }
12478+ },
12479+ "user_id": "@alice_1803:hs1",
12480+ "unsigned": {}
12481+ }
12482+ },
12483+ "@alice_1805:hs1": {
12484+ "ALICEDEVICE1805": {
12485+ "algorithms": [
12486+ "m.olm.v1.curve25519-aes-sha2",
12487+ "m.megolm.v1.aes-sha2"
12488+ ],
12489+ "device_id": "ALICEDEVICE1805",
12490+ "keys": {
12491+ "curve25519:ALICEDEVICE1805": "vpyPL2ZK/Muhil1KXsvQ+NNU45VtBujQfZKDYRp5Fzc",
12492+ "ed25519:ALICEDEVICE1805": "TBPuO752Q0BV1Qh+mHNan5LsvdzFwpdHxeyUXaNhN0c"
12493+ },
12494+ "signatures": {
12495+ "@alice_1805:hs1": {
12496+ "ed25519:ALICEDEVICE1805": "+6BwYuplWrAs4hpxhYXUaMWeG9cqfLtsECTQSH2S9Gfqbnlp8z+YSvFQaJb7LwHMGL2gXKr2OkHIKgee7DnBAA"
12497+ }
12498+ },
12499+ "user_id": "@alice_1805:hs1",
12500+ "unsigned": {}
12501+ }
12502+ },
12503+ "@alice_1806:hs1": {
12504+ "ALICEDEVICE1806": {
12505+ "algorithms": [
12506+ "m.olm.v1.curve25519-aes-sha2",
12507+ "m.megolm.v1.aes-sha2"
12508+ ],
12509+ "device_id": "ALICEDEVICE1806",
12510+ "keys": {
12511+ "curve25519:ALICEDEVICE1806": "bFJt4SL4DDZAmrSn+AiWdCw1GbLV9z4eis1R0TiJIko",
12512+ "ed25519:ALICEDEVICE1806": "0+o11fhBm/COP7EYz8sJTKcYipNeBZVT8RwhYxEWbvM"
12513+ },
12514+ "signatures": {
12515+ "@alice_1806:hs1": {
12516+ "ed25519:ALICEDEVICE1806": "Nw/CzNGlHysMWCu7PHncr76VM7mysLVadun8m4ra55JZioQZJdTQNaKoBiYJdCgu6hUy4nq/q38E3hanPmipBg"
12517+ }
12518+ },
12519+ "user_id": "@alice_1806:hs1",
12520+ "unsigned": {}
12521+ }
12522+ },
12523+ "@alice_1808:hs1": {
12524+ "ALICEDEVICE1808": {
12525+ "algorithms": [
12526+ "m.olm.v1.curve25519-aes-sha2",
12527+ "m.megolm.v1.aes-sha2"
12528+ ],
12529+ "device_id": "ALICEDEVICE1808",
12530+ "keys": {
12531+ "curve25519:ALICEDEVICE1808": "k72nKiJPJM8x4I3Fkwr03zGZA3MbCOTIcJ050DiIPXA",
12532+ "ed25519:ALICEDEVICE1808": "iaNee4ykeckp1esrsv4xiXeQxgrQbsHI8kIQy4/EASk"
12533+ },
12534+ "signatures": {
12535+ "@alice_1808:hs1": {
12536+ "ed25519:ALICEDEVICE1808": "I7EBASUsP/wPpfNfJW/ij8TZOI6/sdtcPVkLyq//L8rdjsdSDJRLKnYeM7wbs8zn6kkYemVJmDB4of6c9A+nBQ"
12537+ }
12538+ },
12539+ "user_id": "@alice_1808:hs1",
12540+ "unsigned": {}
12541+ }
12542+ },
12543+ "@alice_1812:hs1": {
12544+ "ALICEDEVICE1812": {
12545+ "algorithms": [
12546+ "m.olm.v1.curve25519-aes-sha2",
12547+ "m.megolm.v1.aes-sha2"
12548+ ],
12549+ "device_id": "ALICEDEVICE1812",
12550+ "keys": {
12551+ "curve25519:ALICEDEVICE1812": "wyCrthA/frk/OQCLIV/vfUFuuOmhby7s1/u5WOHGvRw",
12552+ "ed25519:ALICEDEVICE1812": "k7K3LznLpCt7a8NI2YcGbeIDx5M1v6QpEZkGxUJZ82Y"
12553+ },
12554+ "signatures": {
12555+ "@alice_1812:hs1": {
12556+ "ed25519:ALICEDEVICE1812": "IAQpYnFxnh6plauLDyZR0DlEWrKPKYXUHrLfWI92gb0xjRe2MG4gJ0GNqzUprfrVnWNC3HxITGLTWkkBLS07DA"
12557+ }
12558+ },
12559+ "user_id": "@alice_1812:hs1",
12560+ "unsigned": {}
12561+ }
12562+ },
12563+ "@alice_1819:hs1": {
12564+ "ALICEDEVICE1819": {
12565+ "algorithms": [
12566+ "m.olm.v1.curve25519-aes-sha2",
12567+ "m.megolm.v1.aes-sha2"
12568+ ],
12569+ "device_id": "ALICEDEVICE1819",
12570+ "keys": {
12571+ "curve25519:ALICEDEVICE1819": "Fg0X7RcZ3mQA/8d/47/g6P7YQmMDE4eTWAeSKB4V/g0",
12572+ "ed25519:ALICEDEVICE1819": "MqeX5HD2BgIZMdA+Shp9q7Lp5Dg8eie8acq2iec0avs"
12573+ },
12574+ "signatures": {
12575+ "@alice_1819:hs1": {
12576+ "ed25519:ALICEDEVICE1819": "Yc+Iu7u0ga3W6vb4VIWiP3mEADDT8NmP/Mk7mKqD+ry+4NpzCIpXOLdO8DgT4RKETXz2tdKp8g3LLs4EWBHyBQ"
12577+ }
12578+ },
12579+ "user_id": "@alice_1819:hs1",
12580+ "unsigned": {}
12581+ }
12582+ },
12583+ "@alice_1822:hs1": {
12584+ "ALICEDEVICE1822": {
12585+ "algorithms": [
12586+ "m.olm.v1.curve25519-aes-sha2",
12587+ "m.megolm.v1.aes-sha2"
12588+ ],
12589+ "device_id": "ALICEDEVICE1822",
12590+ "keys": {
12591+ "curve25519:ALICEDEVICE1822": "q2SHhHHARrPUhemmQz3PM11XdcNf7SER0HioWtBE12M",
12592+ "ed25519:ALICEDEVICE1822": "xJuXW4L8dOohcbBmzesnHhUCBZ0vhNF1EHc5YIgrpf0"
12593+ },
12594+ "signatures": {
12595+ "@alice_1822:hs1": {
12596+ "ed25519:ALICEDEVICE1822": "ziz2T7c0aaeF7eGHYEk4scljXVJGxbvBFoCSUxHiT+pUVVL2Xqfw6OzeCH0FlXJz2vayDoscf5CROOxYXc8FDw"
12597+ }
12598+ },
12599+ "user_id": "@alice_1822:hs1",
12600+ "unsigned": {}
12601+ }
12602+ },
12603+ "@alice_1828:hs1": {
12604+ "ALICEDEVICE1828": {
12605+ "algorithms": [
12606+ "m.olm.v1.curve25519-aes-sha2",
12607+ "m.megolm.v1.aes-sha2"
12608+ ],
12609+ "device_id": "ALICEDEVICE1828",
12610+ "keys": {
12611+ "curve25519:ALICEDEVICE1828": "vOuNgxAvoqrhfqivfOA89Oml4B4T/56rG1scACwbkVU",
12612+ "ed25519:ALICEDEVICE1828": "d27TV9BmaSOW1OagxnujTkOEYAZpBwIBGPQu30uBlPI"
12613+ },
12614+ "signatures": {
12615+ "@alice_1828:hs1": {
12616+ "ed25519:ALICEDEVICE1828": "BrB9hDOja7ORQdaE+nJvusZcevu8HUXPNHTzeVQqDozXzmM5q9oHNqhDidjqjfMGcwFQnGEUiwxCLG+Z6XtbAQ"
12617+ }
12618+ },
12619+ "user_id": "@alice_1828:hs1",
12620+ "unsigned": {}
12621+ }
12622+ },
12623+ "@alice_1830:hs1": {
12624+ "ALICEDEVICE1830": {
12625+ "algorithms": [
12626+ "m.olm.v1.curve25519-aes-sha2",
12627+ "m.megolm.v1.aes-sha2"
12628+ ],
12629+ "device_id": "ALICEDEVICE1830",
12630+ "keys": {
12631+ "curve25519:ALICEDEVICE1830": "GXEs83rUzYgtIpcrdggbhZdHG7god0SsEDGGYBAFMVQ",
12632+ "ed25519:ALICEDEVICE1830": "hcm04Tc0zGF6v0etWckexV0QbnxrTyF/7R1XmsTg1wU"
12633+ },
12634+ "signatures": {
12635+ "@alice_1830:hs1": {
12636+ "ed25519:ALICEDEVICE1830": "WnaDkWnzy6m6rFD7GnJM50p9neOiHgNwu94LOxx+PnpjHmU4pXAcoIE+9+WDth4ui9p1HT+7dYirHlMml2RdBw"
12637+ }
12638+ },
12639+ "user_id": "@alice_1830:hs1",
12640+ "unsigned": {}
12641+ }
12642+ },
12643+ "@alice_1835:hs1": {
12644+ "ALICEDEVICE1835": {
12645+ "algorithms": [
12646+ "m.olm.v1.curve25519-aes-sha2",
12647+ "m.megolm.v1.aes-sha2"
12648+ ],
12649+ "device_id": "ALICEDEVICE1835",
12650+ "keys": {
12651+ "curve25519:ALICEDEVICE1835": "dKLD1CCq324sVUv2DcErAooOhHporNN4FEy6kLG2Qno",
12652+ "ed25519:ALICEDEVICE1835": "Dqwi1fFsiTNcdkZv6URMmwbql5HMHVucvr71nWdpeZM"
12653+ },
12654+ "signatures": {
12655+ "@alice_1835:hs1": {
12656+ "ed25519:ALICEDEVICE1835": "NckX+9D9DbfXiR2Hq5Ex40tEOtozUKlqo1jX6RYBTwX5lvKCI0SmSSM+bQLr+rhBTZCJots0bptDfNyGr3NTAA"
12657+ }
12658+ },
12659+ "user_id": "@alice_1835:hs1",
12660+ "unsigned": {}
12661+ }
12662+ },
12663+ "@alice_1839:hs1": {
12664+ "ALICEDEVICE1839": {
12665+ "algorithms": [
12666+ "m.olm.v1.curve25519-aes-sha2",
12667+ "m.megolm.v1.aes-sha2"
12668+ ],
12669+ "device_id": "ALICEDEVICE1839",
12670+ "keys": {
12671+ "curve25519:ALICEDEVICE1839": "2zOxyMvbxLE7k1PyJNctX0Ys+UJ29AFKNTmbDQzoBCg",
12672+ "ed25519:ALICEDEVICE1839": "1q0EgXJViOa7fkAHfH3k2TSjXUA3hN5I4LuSQTlWp8g"
12673+ },
12674+ "signatures": {
12675+ "@alice_1839:hs1": {
12676+ "ed25519:ALICEDEVICE1839": "POYsIS9ciWl/R1Efky1eTmDeKvL47gko2QL2EETb2nkxyq5fhucZ41kdGClmZrQaETaMVxRN4bwzk0Xj5tcLBw"
12677+ }
12678+ },
12679+ "user_id": "@alice_1839:hs1",
12680+ "unsigned": {}
12681+ }
12682+ },
12683+ "@alice_1846:hs1": {
12684+ "ALICEDEVICE1846": {
12685+ "algorithms": [
12686+ "m.olm.v1.curve25519-aes-sha2",
12687+ "m.megolm.v1.aes-sha2"
12688+ ],
12689+ "device_id": "ALICEDEVICE1846",
12690+ "keys": {
12691+ "curve25519:ALICEDEVICE1846": "g6NckGDc6IXjDSV06B/EIi3veffLaO/XqT+SIulHFT4",
12692+ "ed25519:ALICEDEVICE1846": "hA5N2KjsGQKTXIlTFw7RKMpD9O+ERns4XvhZlG1c4nY"
12693+ },
12694+ "signatures": {
12695+ "@alice_1846:hs1": {
12696+ "ed25519:ALICEDEVICE1846": "vQuvLJyrDWChYsYo40YN0dKkfM2aIB9Vj4wO74p3+dABjBN1tsvlSi/Zve0Ho2qsMiRTV8UP1t/6eR/AK6iaCA"
12697+ }
12698+ },
12699+ "user_id": "@alice_1846:hs1",
12700+ "unsigned": {}
12701+ }
12702+ },
12703+ "@alice_1858:hs1": {
12704+ "ALICEDEVICE1858": {
12705+ "algorithms": [
12706+ "m.olm.v1.curve25519-aes-sha2",
12707+ "m.megolm.v1.aes-sha2"
12708+ ],
12709+ "device_id": "ALICEDEVICE1858",
12710+ "keys": {
12711+ "curve25519:ALICEDEVICE1858": "4G+EQv5X6BAZfJL5iaiOqVlCIma6xAJwk1PFZ7Q76X4",
12712+ "ed25519:ALICEDEVICE1858": "Iyc/897doIEyEdrg7qt+/tvrgvi6hOJQQnuBpE0cQE8"
12713+ },
12714+ "signatures": {
12715+ "@alice_1858:hs1": {
12716+ "ed25519:ALICEDEVICE1858": "7eNBVWIriskfwuNnAA6sFw36MSNGkzd7RenJFfPDFZ3DYWgTt4ylXM5byILv3OrRAnJHz/EH84yz2Z82P3AmBQ"
12717+ }
12718+ },
12719+ "user_id": "@alice_1858:hs1",
12720+ "unsigned": {}
12721+ }
12722+ },
12723+ "@alice_1862:hs1": {
12724+ "ALICEDEVICE1862": {
12725+ "algorithms": [
12726+ "m.olm.v1.curve25519-aes-sha2",
12727+ "m.megolm.v1.aes-sha2"
12728+ ],
12729+ "device_id": "ALICEDEVICE1862",
12730+ "keys": {
12731+ "curve25519:ALICEDEVICE1862": "B+2OtB0Yo9ggp48C9b7G6zMbc3xtgpfk4IJsUF4gvFQ",
12732+ "ed25519:ALICEDEVICE1862": "V29YJ0CL8tATTBoIlIk83yBf9oWTTPJhBqCzQXV3Xxo"
12733+ },
12734+ "signatures": {
12735+ "@alice_1862:hs1": {
12736+ "ed25519:ALICEDEVICE1862": "YzwTG2uv292AbYLciG3CQi0uRwyaKMbqRoZP0McOa9bUF/+QbSsjz5ZlQfSffkOuLEMlQyHPCc12/6L4NpjqDA"
12737+ }
12738+ },
12739+ "user_id": "@alice_1862:hs1",
12740+ "unsigned": {}
12741+ }
12742+ },
12743+ "@alice_1866:hs1": {
12744+ "ALICEDEVICE1866": {
12745+ "algorithms": [
12746+ "m.olm.v1.curve25519-aes-sha2",
12747+ "m.megolm.v1.aes-sha2"
12748+ ],
12749+ "device_id": "ALICEDEVICE1866",
12750+ "keys": {
12751+ "curve25519:ALICEDEVICE1866": "y02xDxWIqLnRbkPzsSdm3wrd3zHX2lVek9/dyju+rzI",
12752+ "ed25519:ALICEDEVICE1866": "5fwBsmIen+f0qdqkz/sR9pXucaEb3zNrPPQxU6Fi7/c"
12753+ },
12754+ "signatures": {
12755+ "@alice_1866:hs1": {
12756+ "ed25519:ALICEDEVICE1866": "b0m3MwPgF4QWzLlaYIinUMUqkRVdG4nsjUkgWzFKZ7+A3KDLxpWz/8bA4WqVGowRD5WpvwFPmsn7i9q5rhOoAg"
12757+ }
12758+ },
12759+ "user_id": "@alice_1866:hs1",
12760+ "unsigned": {}
12761+ }
12762+ },
12763+ "@alice_1868:hs1": {
12764+ "ALICEDEVICE1868": {
12765+ "algorithms": [
12766+ "m.olm.v1.curve25519-aes-sha2",
12767+ "m.megolm.v1.aes-sha2"
12768+ ],
12769+ "device_id": "ALICEDEVICE1868",
12770+ "keys": {
12771+ "curve25519:ALICEDEVICE1868": "YVKlU0lTbjmyS235sTHDys2CBcv5EXHfWspsry9PYjY",
12772+ "ed25519:ALICEDEVICE1868": "VoyZY3fLSlPnhtfaCEVbrnTOzj0nzcD+dZZX+d8Zp+8"
12773+ },
12774+ "signatures": {
12775+ "@alice_1868:hs1": {
12776+ "ed25519:ALICEDEVICE1868": "CgV5SZi0RH7gcs3f3HNYD74yDl/YpWCm6nEiLMNxOI7QJVUh8j6lps/oDEI/rxbO5lDqwOdFBDHaUPwNr1fgDA"
12777+ }
12778+ },
12779+ "user_id": "@alice_1868:hs1",
12780+ "unsigned": {}
12781+ }
12782+ },
12783+ "@alice_1883:hs1": {
12784+ "ALICEDEVICE1883": {
12785+ "algorithms": [
12786+ "m.olm.v1.curve25519-aes-sha2",
12787+ "m.megolm.v1.aes-sha2"
12788+ ],
12789+ "device_id": "ALICEDEVICE1883",
12790+ "keys": {
12791+ "curve25519:ALICEDEVICE1883": "nMKahqQ1Tm6Dnyr7Kl4F44FCReiYaL4om1UHrg/Udi0",
12792+ "ed25519:ALICEDEVICE1883": "UT/wPk7i04kCTYsJ7z6HzNyHHnRNCxDUp4ucxXGCRAY"
12793+ },
12794+ "signatures": {
12795+ "@alice_1883:hs1": {
12796+ "ed25519:ALICEDEVICE1883": "8cKNFEQkDvt/jpIIgLnNIZPoRgzY3Nh034lB0Wihn0K5i7/o8TKMpHklCpn4h7zN4rb5/luNckmvtaSYwaOABQ"
12797+ }
12798+ },
12799+ "user_id": "@alice_1883:hs1",
12800+ "unsigned": {}
12801+ }
12802+ },
12803+ "@alice_1895:hs1": {
12804+ "ALICEDEVICE1895": {
12805+ "algorithms": [
12806+ "m.olm.v1.curve25519-aes-sha2",
12807+ "m.megolm.v1.aes-sha2"
12808+ ],
12809+ "device_id": "ALICEDEVICE1895",
12810+ "keys": {
12811+ "curve25519:ALICEDEVICE1895": "bgn5sIVNoONtik6lBYK3fYvB9VJHDWfC/5hnc0GEpUI",
12812+ "ed25519:ALICEDEVICE1895": "tFA/4RMnnBKw3B6A59O9t3D/KKK9470K7APPmwovODg"
12813+ },
12814+ "signatures": {
12815+ "@alice_1895:hs1": {
12816+ "ed25519:ALICEDEVICE1895": "ZWkLvixN3p5AGRlMlOXfyZkJkR+XUIfs67U9ElLHoONpVxevZ349Yd3CCEqhIO71C2hgoHG0T0BpjapAj5uTBQ"
12817+ }
12818+ },
12819+ "user_id": "@alice_1895:hs1",
12820+ "unsigned": {}
12821+ }
12822+ },
12823+ "@alice_1906:hs1": {
12824+ "ALICEDEVICE1906": {
12825+ "algorithms": [
12826+ "m.olm.v1.curve25519-aes-sha2",
12827+ "m.megolm.v1.aes-sha2"
12828+ ],
12829+ "device_id": "ALICEDEVICE1906",
12830+ "keys": {
12831+ "curve25519:ALICEDEVICE1906": "3fsFdK5wb70Zj9BdBCrCAo/YMDV7qkTf7rk+kfVdUgI",
12832+ "ed25519:ALICEDEVICE1906": "chIzbZnQmS6t/pPMHzSvB639I91mChS7xQwtIf/nFIQ"
12833+ },
12834+ "signatures": {
12835+ "@alice_1906:hs1": {
12836+ "ed25519:ALICEDEVICE1906": "duywDhaptcn3DDAy0uVX2UouXrfHzfodwM7u6sgOn7zCjedCm8qs/WCK7ZOxdObooE8Htr2w2WNnqj2Aj4m6Bg"
12837+ }
12838+ },
12839+ "user_id": "@alice_1906:hs1",
12840+ "unsigned": {}
12841+ }
12842+ },
12843+ "@alice_1918:hs1": {
12844+ "ALICEDEVICE1918": {
12845+ "algorithms": [
12846+ "m.olm.v1.curve25519-aes-sha2",
12847+ "m.megolm.v1.aes-sha2"
12848+ ],
12849+ "device_id": "ALICEDEVICE1918",
12850+ "keys": {
12851+ "curve25519:ALICEDEVICE1918": "OFiFGfgszNpvLGLmjnv5IAghFXCNDn9Lsb/0g2IgWQk",
12852+ "ed25519:ALICEDEVICE1918": "UK/O92j/l0s8iZDiBh4uvqcVsQTOD6tDxLyKNOJiTrI"
12853+ },
12854+ "signatures": {
12855+ "@alice_1918:hs1": {
12856+ "ed25519:ALICEDEVICE1918": "IJz15XvBSy3lTaMdsRIpjstnrrUIkmTtv5y7e0/ZfKyTV2vbwc63dGpcW3SkNa/RJ0n7VrvO7wn67iLHQNtFBA"
12857+ }
12858+ },
12859+ "user_id": "@alice_1918:hs1",
12860+ "unsigned": {}
12861+ }
12862+ },
12863+ "@alice_1936:hs1": {
12864+ "ALICEDEVICE1936": {
12865+ "algorithms": [
12866+ "m.olm.v1.curve25519-aes-sha2",
12867+ "m.megolm.v1.aes-sha2"
12868+ ],
12869+ "device_id": "ALICEDEVICE1936",
12870+ "keys": {
12871+ "curve25519:ALICEDEVICE1936": "cajQ/heNR8DbKGE/Cuz0WmYLLDPsxG7chP+ozhCblHQ",
12872+ "ed25519:ALICEDEVICE1936": "8jXEx6uRWeNRzMbNgguvkMhdyzjcEZHAKX9bPwFCqng"
12873+ },
12874+ "signatures": {
12875+ "@alice_1936:hs1": {
12876+ "ed25519:ALICEDEVICE1936": "jOHNIelxBP8fDduSrmMKy8xvA7Vd1VbB5HMSFJQZa5asb1jrM3ZduknzimD9RQ919X2vjaVCSoD08M9sW27SAA"
12877+ }
12878+ },
12879+ "user_id": "@alice_1936:hs1",
12880+ "unsigned": {}
12881+ }
12882+ },
12883+ "@alice_1947:hs1": {
12884+ "ALICEDEVICE1947": {
12885+ "algorithms": [
12886+ "m.olm.v1.curve25519-aes-sha2",
12887+ "m.megolm.v1.aes-sha2"
12888+ ],
12889+ "device_id": "ALICEDEVICE1947",
12890+ "keys": {
12891+ "curve25519:ALICEDEVICE1947": "lrcZBK9h6RM7CYbhdx1A8O0ylEVERzZ2AW3yv0Zp8Cg",
12892+ "ed25519:ALICEDEVICE1947": "pxhg5jPXTcC2APKO2S+JSjkIHsqFF+niJ+WU57iBd9E"
12893+ },
12894+ "signatures": {
12895+ "@alice_1947:hs1": {
12896+ "ed25519:ALICEDEVICE1947": "hOegDwDDotyM0FQW+j0PNENMvo3N4hd68x/ogKLiNUOpwsGY/FBcgXT5yo6D6FBEPun4K31Qht/nmUupVl8MBg"
12897+ }
12898+ },
12899+ "user_id": "@alice_1947:hs1",
12900+ "unsigned": {}
12901+ }
12902+ },
12903+ "@alice_1970:hs1": {
12904+ "ALICEDEVICE1970": {
12905+ "algorithms": [
12906+ "m.olm.v1.curve25519-aes-sha2",
12907+ "m.megolm.v1.aes-sha2"
12908+ ],
12909+ "device_id": "ALICEDEVICE1970",
12910+ "keys": {
12911+ "curve25519:ALICEDEVICE1970": "TtR3h3Vch+RkiPjtTm3OesuebFpit7Xb1ZW9VpYNG1Y",
12912+ "ed25519:ALICEDEVICE1970": "auaMh1FgWM2Na27vzKo0SfeV3UfOSOg5795O0LXRhHY"
12913+ },
12914+ "signatures": {
12915+ "@alice_1970:hs1": {
12916+ "ed25519:ALICEDEVICE1970": "PfXwyvO55PZhPo0ihjI1kfyPefK2tfqbFbYw8+2eLTBIS5H82qwoW7xWlS61dbh58wGE2zILm67TqUXOp51ICg"
12917+ }
12918+ },
12919+ "user_id": "@alice_1970:hs1",
12920+ "unsigned": {}
12921+ }
12922+ },
12923+ "@alice_1975:hs1": {
12924+ "ALICEDEVICE1975": {
12925+ "algorithms": [
12926+ "m.olm.v1.curve25519-aes-sha2",
12927+ "m.megolm.v1.aes-sha2"
12928+ ],
12929+ "device_id": "ALICEDEVICE1975",
12930+ "keys": {
12931+ "curve25519:ALICEDEVICE1975": "KhL+CeHfA2Ikry4JavAeHDNI9WSjFISN5/21b4JnfEQ",
12932+ "ed25519:ALICEDEVICE1975": "C9Ib6/l81tCIs0CsOqgLr8/rPbuZCUXmbN+D8eBauSY"
12933+ },
12934+ "signatures": {
12935+ "@alice_1975:hs1": {
12936+ "ed25519:ALICEDEVICE1975": "gTVCabhLyAA1PH29syCEjxi02/GNyZK59wrrExWg/ZlHrZal0P7G0jKDvzurql380Vg3KIx/6SN9V1OSdNJSBg"
12937+ }
12938+ },
12939+ "user_id": "@alice_1975:hs1",
12940+ "unsigned": {}
12941+ }
12942+ },
12943+ "@alice_1978:hs1": {
12944+ "ALICEDEVICE1978": {
12945+ "algorithms": [
12946+ "m.olm.v1.curve25519-aes-sha2",
12947+ "m.megolm.v1.aes-sha2"
12948+ ],
12949+ "device_id": "ALICEDEVICE1978",
12950+ "keys": {
12951+ "curve25519:ALICEDEVICE1978": "epzjChQTzB/RdmmRe8mwj3peMvYk2Sn1mu5HBXPDhm8",
12952+ "ed25519:ALICEDEVICE1978": "Ody7Y1kbd47I/OurSO57teWJ9sE4YykFIUTIYCXebZ0"
12953+ },
12954+ "signatures": {
12955+ "@alice_1978:hs1": {
12956+ "ed25519:ALICEDEVICE1978": "pq4mPkZvMlKMfKXyoYt+AF0yxEA3UZgwNfuZiX9s1zbP5bkenVSK5REaapaXpdz07CXTKBAmuMk6dyrgcWptBg"
12957+ }
12958+ },
12959+ "user_id": "@alice_1978:hs1",
12960+ "unsigned": {}
12961+ }
12962+ },
12963+ "@alice_1984:hs1": {
12964+ "ALICEDEVICE1984": {
12965+ "algorithms": [
12966+ "m.olm.v1.curve25519-aes-sha2",
12967+ "m.megolm.v1.aes-sha2"
12968+ ],
12969+ "device_id": "ALICEDEVICE1984",
12970+ "keys": {
12971+ "curve25519:ALICEDEVICE1984": "RCNJ9VsDHaCr72SnUryzNtOY6tuvFtBYa3jcjbcvR00",
12972+ "ed25519:ALICEDEVICE1984": "c+s45drabmoC8I6LLcDtlmH/25nqxpW2GEnGrNSh8z0"
12973+ },
12974+ "signatures": {
12975+ "@alice_1984:hs1": {
12976+ "ed25519:ALICEDEVICE1984": "L4HXzPhd12w0EU4BmaryWOf+gIdS25gn95yi/TN2Fz0I2JGmN4pfX/xu1ES9RIHGjqMC2Jhrsww8v+FzOa4ZDQ"
12977+ }
12978+ },
12979+ "user_id": "@alice_1984:hs1",
12980+ "unsigned": {}
12981+ }
12982+ },
12983+ "@alice_1988:hs1": {
12984+ "ALICEDEVICE1988": {
12985+ "algorithms": [
12986+ "m.olm.v1.curve25519-aes-sha2",
12987+ "m.megolm.v1.aes-sha2"
12988+ ],
12989+ "device_id": "ALICEDEVICE1988",
12990+ "keys": {
12991+ "curve25519:ALICEDEVICE1988": "PZL7X74TTPAbcNm8X0EeS4vWG5VplUTTXzvFGHJN7yU",
12992+ "ed25519:ALICEDEVICE1988": "TSd06sBwRYeHC5uU1r/yMEYBvQ9cpW4gXlzdYUzM9Ug"
12993+ },
12994+ "signatures": {
12995+ "@alice_1988:hs1": {
12996+ "ed25519:ALICEDEVICE1988": "kXMjH0O3uSUUEutRJmqaJOx1MuUR2s63U+d0ZBZE1LlIr28xI122fHkl/MIH902940YjJ1Booc5DMYNCVkh4AQ"
12997+ }
12998+ },
12999+ "user_id": "@alice_1988:hs1",
13000+ "unsigned": {}
13001+ }
13002+ },
13003+ "@alice_199:hs1": {
13004+ "ALICEDEVICE199": {
13005+ "algorithms": [
13006+ "m.olm.v1.curve25519-aes-sha2",
13007+ "m.megolm.v1.aes-sha2"
13008+ ],
13009+ "device_id": "ALICEDEVICE199",
13010+ "keys": {
13011+ "curve25519:ALICEDEVICE199": "nR8K4Y7/5FC+uxIXpEwAF6lcGK/IsJYFXII4PH5K3lw",
13012+ "ed25519:ALICEDEVICE199": "YzXB+6ov7v6x53ihaTKq5PHVvyR0wnl+xcFoJn/5HcQ"
13013+ },
13014+ "signatures": {
13015+ "@alice_199:hs1": {
13016+ "ed25519:ALICEDEVICE199": "SNtNMYvP8tt6EoPndro9s2VdyVXC7efy8bS2/nXLH4iBJCAchgD5uDtbnPPhGhoT0id3/ellG/toStyhn1eaAA"
13017+ }
13018+ },
13019+ "user_id": "@alice_199:hs1",
13020+ "unsigned": {}
13021+ }
13022+ },
13023+ "@alice_217:hs1": {
13024+ "ALICEDEVICE217": {
13025+ "algorithms": [
13026+ "m.olm.v1.curve25519-aes-sha2",
13027+ "m.megolm.v1.aes-sha2"
13028+ ],
13029+ "device_id": "ALICEDEVICE217",
13030+ "keys": {
13031+ "curve25519:ALICEDEVICE217": "VnwlN52/eXW7A21I5QfMFRuxpuqc1/S/LeDB7wKH8iM",
13032+ "ed25519:ALICEDEVICE217": "kcDhqtNqVBLfSZjc6P9AaCJV55JT4sz/+cNg3iskihM"
13033+ },
13034+ "signatures": {
13035+ "@alice_217:hs1": {
13036+ "ed25519:ALICEDEVICE217": "a8CEq6sh+o6GFoQdSbXSsAHTZkRf5D+1hOUZiCl7zC3jgX64X2IgxxSNDxa+iM2Mm6upAt5qYvkalqYUaQHLDg"
13037+ }
13038+ },
13039+ "user_id": "@alice_217:hs1",
13040+ "unsigned": {}
13041+ }
13042+ },
13043+ "@alice_221:hs1": {
13044+ "ALICEDEVICE221": {
13045+ "algorithms": [
13046+ "m.olm.v1.curve25519-aes-sha2",
13047+ "m.megolm.v1.aes-sha2"
13048+ ],
13049+ "device_id": "ALICEDEVICE221",
13050+ "keys": {
13051+ "curve25519:ALICEDEVICE221": "P0ng137Tb4IZFTH7h4YIiEwWvRdYNSWhhESrczSt528",
13052+ "ed25519:ALICEDEVICE221": "qD7WiLVvrmb7nvOeM5RDmZzdphHdzizpaDglA+DXieU"
13053+ },
13054+ "signatures": {
13055+ "@alice_221:hs1": {
13056+ "ed25519:ALICEDEVICE221": "dEatML9lngWqoYCUzJJC+5gaUfSCXDxwdZmlzWZUf96VKzNPvL98mJdnnh6fgd8ei8pH1IcPwSsuH3HjQJaUDQ"
13057+ }
13058+ },
13059+ "user_id": "@alice_221:hs1",
13060+ "unsigned": {}
13061+ }
13062+ },
13063+ "@alice_234:hs1": {
13064+ "ALICEDEVICE234": {
13065+ "algorithms": [
13066+ "m.olm.v1.curve25519-aes-sha2",
13067+ "m.megolm.v1.aes-sha2"
13068+ ],
13069+ "device_id": "ALICEDEVICE234",
13070+ "keys": {
13071+ "curve25519:ALICEDEVICE234": "gvcugZukzHOYC+xkWxPfKpOO8DXbrznLpnUQsyCZ+1c",
13072+ "ed25519:ALICEDEVICE234": "GcWrPyqH2O6y96/3D/8NSwVXXHobjVQoiqOkN0GA6wA"
13073+ },
13074+ "signatures": {
13075+ "@alice_234:hs1": {
13076+ "ed25519:ALICEDEVICE234": "f28oMgNQz1lkFclvstowzF3Dpg6Zu08xfEQeyFJ3+GAsZ6JSN2XYykPUs9xal9Gs4mUkYciI1wncelotvzuaCw"
13077+ }
13078+ },
13079+ "user_id": "@alice_234:hs1",
13080+ "unsigned": {}
13081+ }
13082+ },
13083+ "@alice_235:hs1": {
13084+ "ALICEDEVICE235": {
13085+ "algorithms": [
13086+ "m.olm.v1.curve25519-aes-sha2",
13087+ "m.megolm.v1.aes-sha2"
13088+ ],
13089+ "device_id": "ALICEDEVICE235",
13090+ "keys": {
13091+ "curve25519:ALICEDEVICE235": "+3TcUfFfSFeI6tRfQqaOTz8bdlhzaMC9G032ldDUrUE",
13092+ "ed25519:ALICEDEVICE235": "+5N238K0qFYJKVESwDSVJ/0sezaIvim6STuH3G8VGiQ"
13093+ },
13094+ "signatures": {
13095+ "@alice_235:hs1": {
13096+ "ed25519:ALICEDEVICE235": "GKYzdHUUk3BW/lZMeqC9PLYtnkB9o2I80Q2UNzsg1aaePX/BoKh6/QpRaw6ltfiTzi3yqx9liSZg8CwHt9MHCw"
13097+ }
13098+ },
13099+ "user_id": "@alice_235:hs1",
13100+ "unsigned": {}
13101+ }
13102+ },
13103+ "@alice_25:hs1": {
13104+ "ALICEDEVICE25": {
13105+ "algorithms": [
13106+ "m.olm.v1.curve25519-aes-sha2",
13107+ "m.megolm.v1.aes-sha2"
13108+ ],
13109+ "device_id": "ALICEDEVICE25",
13110+ "keys": {
13111+ "curve25519:ALICEDEVICE25": "hTuX66hmAZVkBiONKiw1TBkhzDb51G4+7sqTwVc4wyI",
13112+ "ed25519:ALICEDEVICE25": "yvTFn8WyiLqcno39yvXOzVlLpaMk+Y71fsgOQcD/YUc"
13113+ },
13114+ "signatures": {
13115+ "@alice_25:hs1": {
13116+ "ed25519:ALICEDEVICE25": "FXWWuU3xC7cbXsDc8gGS+aQlg3/2GLY69Dq3Di7SpX92Ejn9Rkl0GZUpUHmY0SuKSno+ge6/jR7+e0xLo78gBw"
13117+ }
13118+ },
13119+ "user_id": "@alice_25:hs1",
13120+ "unsigned": {}
13121+ }
13122+ },
13123+ "@alice_270:hs1": {
13124+ "ALICEDEVICE270": {
13125+ "algorithms": [
13126+ "m.olm.v1.curve25519-aes-sha2",
13127+ "m.megolm.v1.aes-sha2"
13128+ ],
13129+ "device_id": "ALICEDEVICE270",
13130+ "keys": {
13131+ "curve25519:ALICEDEVICE270": "QSUCZaP7JU8M1HKH7713Gz6i7r/MqilK6kBpTWpmrmw",
13132+ "ed25519:ALICEDEVICE270": "7IO2xupfjAZ1B3g8lLgUHOZ7LdZvS8fo6qvr/r7Sgi4"
13133+ },
13134+ "signatures": {
13135+ "@alice_270:hs1": {
13136+ "ed25519:ALICEDEVICE270": "0qajPaS/SyzAKAOu6NCpFBFI3CQI0bFMou95HkbfMPXtaPUitMAsaSUv0gbOAkBbxWfNjuUlivG6OYQk7zgkDg"
13137+ }
13138+ },
13139+ "user_id": "@alice_270:hs1",
13140+ "unsigned": {}
13141+ }
13142+ },
13143+ "@alice_271:hs1": {
13144+ "ALICEDEVICE271": {
13145+ "algorithms": [
13146+ "m.olm.v1.curve25519-aes-sha2",
13147+ "m.megolm.v1.aes-sha2"
13148+ ],
13149+ "device_id": "ALICEDEVICE271",
13150+ "keys": {
13151+ "curve25519:ALICEDEVICE271": "FdLDPFQnSmLXGBCLzyllIHjXy2b5QLuionptP9lADXo",
13152+ "ed25519:ALICEDEVICE271": "Woc7i0Hn3xwbdzcmq8hSHl/hrY9/jkhoGwjEL9y3diE"
13153+ },
13154+ "signatures": {
13155+ "@alice_271:hs1": {
13156+ "ed25519:ALICEDEVICE271": "p1/cimK0foHLVZBOmoD0d7VyirgMdjSck5uh9cKTrzKk/cGPQIXdhFgIYnBVabq228O8/O/HULDd4nsMb5UJAA"
13157+ }
13158+ },
13159+ "user_id": "@alice_271:hs1",
13160+ "unsigned": {}
13161+ }
13162+ },
13163+ "@alice_284:hs1": {
13164+ "ALICEDEVICE284": {
13165+ "algorithms": [
13166+ "m.olm.v1.curve25519-aes-sha2",
13167+ "m.megolm.v1.aes-sha2"
13168+ ],
13169+ "device_id": "ALICEDEVICE284",
13170+ "keys": {
13171+ "curve25519:ALICEDEVICE284": "7zTqXGs0DW1W1VTVHEd/NgbDA9LcSkHV9fJDavfDA00",
13172+ "ed25519:ALICEDEVICE284": "WKJkGMpDbKv3Rm+GQvoZg94gAkgF0SEw8vrsMo0oMBI"
13173+ },
13174+ "signatures": {
13175+ "@alice_284:hs1": {
13176+ "ed25519:ALICEDEVICE284": "/ps2C+OtpKaJ0IdWppacVlP62zJ+OsH54HIWUYG0+fE8aMrYxFO18q/UE7psGfwugG2to07JqhRaApORF80LAQ"
13177+ }
13178+ },
13179+ "user_id": "@alice_284:hs1",
13180+ "unsigned": {}
13181+ }
13182+ },
13183+ "@alice_287:hs1": {
13184+ "ALICEDEVICE287": {
13185+ "algorithms": [
13186+ "m.olm.v1.curve25519-aes-sha2",
13187+ "m.megolm.v1.aes-sha2"
13188+ ],
13189+ "device_id": "ALICEDEVICE287",
13190+ "keys": {
13191+ "curve25519:ALICEDEVICE287": "N91oHSxpSbZ2k1L3UwfqPpi1jXhIoBZKJznnwUjIrW0",
13192+ "ed25519:ALICEDEVICE287": "tbvlRgooNHudlKfcezBgd4NvlzhbJsizVCTlU0UTVas"
13193+ },
13194+ "signatures": {
13195+ "@alice_287:hs1": {
13196+ "ed25519:ALICEDEVICE287": "34bmYr2vV6GkEtd4XF4/4FSx/aQhtyAOvtk0FRP7nbpDZNuEooQMQtH9+tq1+AXWVOpjrNeAy4JaDRrsyfaVBw"
13197+ }
13198+ },
13199+ "user_id": "@alice_287:hs1",
13200+ "unsigned": {}
13201+ }
13202+ },
13203+ "@alice_295:hs1": {
13204+ "ALICEDEVICE295": {
13205+ "algorithms": [
13206+ "m.olm.v1.curve25519-aes-sha2",
13207+ "m.megolm.v1.aes-sha2"
13208+ ],
13209+ "device_id": "ALICEDEVICE295",
13210+ "keys": {
13211+ "curve25519:ALICEDEVICE295": "88hJAjnObmg5to6A3jf1Ns4P/DLGVzrCoQc+Q7FHci8",
13212+ "ed25519:ALICEDEVICE295": "KuH/8wvOQWH45+hZHEMIcOU1fHiP3lhrI3//+TkVu/U"
13213+ },
13214+ "signatures": {
13215+ "@alice_295:hs1": {
13216+ "ed25519:ALICEDEVICE295": "LFbJHCshPKgsoqJ6lAXKWZ62zR0q5X+FuLxoh8E51BiqiRQV3qZNu+swMisX6zL+Pbp4UvO47Si35VG6H9KzBg"
13217+ }
13218+ },
13219+ "user_id": "@alice_295:hs1",
13220+ "unsigned": {}
13221+ }
13222+ },
13223+ "@alice_302:hs1": {
13224+ "ALICEDEVICE302": {
13225+ "algorithms": [
13226+ "m.olm.v1.curve25519-aes-sha2",
13227+ "m.megolm.v1.aes-sha2"
13228+ ],
13229+ "device_id": "ALICEDEVICE302",
13230+ "keys": {
13231+ "curve25519:ALICEDEVICE302": "TUhkhBm0YwW9F4fFMZcq8Onnyha7z1iMNdXycvF5P0Q",
13232+ "ed25519:ALICEDEVICE302": "AHhKStjt2l4cuteQg64B65BOVyTsV2PYIYtPx3u5WOQ"
13233+ },
13234+ "signatures": {
13235+ "@alice_302:hs1": {
13236+ "ed25519:ALICEDEVICE302": "WskuppBiYN9Ijjok3cUTaaslESX2j1PrMZM52S0ZnfUNJiYurfdOrFRba0FLxB1RhLiHaYi16xAHddzYlIq2Dg"
13237+ }
13238+ },
13239+ "user_id": "@alice_302:hs1",
13240+ "unsigned": {}
13241+ }
13242+ },
13243+ "@alice_304:hs1": {
13244+ "ALICEDEVICE304": {
13245+ "algorithms": [
13246+ "m.olm.v1.curve25519-aes-sha2",
13247+ "m.megolm.v1.aes-sha2"
13248+ ],
13249+ "device_id": "ALICEDEVICE304",
13250+ "keys": {
13251+ "curve25519:ALICEDEVICE304": "HrRin5zFstImzK2Dkh965Pb1FVM8Qa8gs8dpJqyuIHg",
13252+ "ed25519:ALICEDEVICE304": "89UGR8NiPazXJiumft8Ci8K40vOHhy/BZPTDWq4REIU"
13253+ },
13254+ "signatures": {
13255+ "@alice_304:hs1": {
13256+ "ed25519:ALICEDEVICE304": "TyloITbQ3AsUd/OcXS1LN3bsE/RM8zxjtPO0PRjLGwWFGZwkx0TX//97D1v9UNhKD48QIYRtfRRXVX5FQXNnCQ"
13257+ }
13258+ },
13259+ "user_id": "@alice_304:hs1",
13260+ "unsigned": {}
13261+ }
13262+ },
13263+ "@alice_326:hs1": {
13264+ "ALICEDEVICE326": {
13265+ "algorithms": [
13266+ "m.olm.v1.curve25519-aes-sha2",
13267+ "m.megolm.v1.aes-sha2"
13268+ ],
13269+ "device_id": "ALICEDEVICE326",
13270+ "keys": {
13271+ "curve25519:ALICEDEVICE326": "NcYttjlpI6fecXlycRJ9y7Vhu0UrMN0FGILGodQEF2Y",
13272+ "ed25519:ALICEDEVICE326": "6wrLKTwd/bLFDVzZTObg8lr9K1Trb0W9Dpv5pTFmAu8"
13273+ },
13274+ "signatures": {
13275+ "@alice_326:hs1": {
13276+ "ed25519:ALICEDEVICE326": "x1WaoBzDGREHt1puaqzksbsZiMSj4UJ6KeYwwQo0yUewE+1IgX+I8DPXcVE0mrH5lWEdr4akQ4ACx+jgGCfmBA"
13277+ }
13278+ },
13279+ "user_id": "@alice_326:hs1",
13280+ "unsigned": {}
13281+ }
13282+ },
13283+ "@alice_340:hs1": {
13284+ "ALICEDEVICE340": {
13285+ "algorithms": [
13286+ "m.olm.v1.curve25519-aes-sha2",
13287+ "m.megolm.v1.aes-sha2"
13288+ ],
13289+ "device_id": "ALICEDEVICE340",
13290+ "keys": {
13291+ "curve25519:ALICEDEVICE340": "mdiIrIOVKnGvT9VVItCE3kv0NdhHpORCtFHJaaiGXy0",
13292+ "ed25519:ALICEDEVICE340": "TmLuz4PmrqH6Ue2AKBk+sSfDX1JTsqvaYNjSt50pI6o"
13293+ },
13294+ "signatures": {
13295+ "@alice_340:hs1": {
13296+ "ed25519:ALICEDEVICE340": "/0SupT3EncvzJRffdY+6XHekR/fjM6bv5E44MwpNMQgM7f17NT+FH6xV+s+me3JOIHf+jLtwsGchQRLlDuReCA"
13297+ }
13298+ },
13299+ "user_id": "@alice_340:hs1",
13300+ "unsigned": {}
13301+ }
13302+ },
13303+ "@alice_343:hs1": {
13304+ "ALICEDEVICE343": {
13305+ "algorithms": [
13306+ "m.olm.v1.curve25519-aes-sha2",
13307+ "m.megolm.v1.aes-sha2"
13308+ ],
13309+ "device_id": "ALICEDEVICE343",
13310+ "keys": {
13311+ "curve25519:ALICEDEVICE343": "HAU744oXiuqUR45AriHuXWRWRByqVm/JEyUsHOk9Q1w",
13312+ "ed25519:ALICEDEVICE343": "tIs+sm5dj/v+GJKCkjMuuLEBATgwTn14qCD9poPbR4c"
13313+ },
13314+ "signatures": {
13315+ "@alice_343:hs1": {
13316+ "ed25519:ALICEDEVICE343": "82ze6ChHufe1NNxRHP7H2T6j5C1KC284BL+wUVWUsEdH0yzrimfMa3lM5IMSCEjVQZbBUlOcu0M20gikRRh4Cg"
13317+ }
13318+ },
13319+ "user_id": "@alice_343:hs1",
13320+ "unsigned": {}
13321+ }
13322+ },
13323+ "@alice_344:hs1": {
13324+ "ALICEDEVICE344": {
13325+ "algorithms": [
13326+ "m.olm.v1.curve25519-aes-sha2",
13327+ "m.megolm.v1.aes-sha2"
13328+ ],
13329+ "device_id": "ALICEDEVICE344",
13330+ "keys": {
13331+ "curve25519:ALICEDEVICE344": "IyWbLfgxWmR+ZGRxhPZ1TG17Sv4ORXkhI3onsbfY2kI",
13332+ "ed25519:ALICEDEVICE344": "haYOVAWk6yhhsXppYdzszWWDfZDoEKco09oDOc3H0uM"
13333+ },
13334+ "signatures": {
13335+ "@alice_344:hs1": {
13336+ "ed25519:ALICEDEVICE344": "XU4HhdmopTwhtsnTGGYzBrmbTIvNYpJMi4mTCD1NbOWqGTHzNUqMEarDCZUlIl/GFz01PVj3VUS16tMA0mndDQ"
13337+ }
13338+ },
13339+ "user_id": "@alice_344:hs1",
13340+ "unsigned": {}
13341+ }
13342+ },
13343+ "@alice_345:hs1": {
13344+ "ALICEDEVICE345": {
13345+ "algorithms": [
13346+ "m.olm.v1.curve25519-aes-sha2",
13347+ "m.megolm.v1.aes-sha2"
13348+ ],
13349+ "device_id": "ALICEDEVICE345",
13350+ "keys": {
13351+ "curve25519:ALICEDEVICE345": "zh7Bb6qhM2+KyODFvKFUR7e6dj9K1HLbZSNUNUCOaVM",
13352+ "ed25519:ALICEDEVICE345": "oiERQfPHhru8s5TROAs5Pbkycr6ADTqfp+F/xP/O3Sg"
13353+ },
13354+ "signatures": {
13355+ "@alice_345:hs1": {
13356+ "ed25519:ALICEDEVICE345": "50i2lGZSHeHdU471wPYW6pzffE9XWJlAq1VtfcFQNm0IFAfedE2Y9PhScJfLAYRkwSb+NGc4OD8OFCHQnhw3DQ"
13357+ }
13358+ },
13359+ "user_id": "@alice_345:hs1",
13360+ "unsigned": {}
13361+ }
13362+ },
13363+ "@alice_352:hs1": {
13364+ "ALICEDEVICE352": {
13365+ "algorithms": [
13366+ "m.olm.v1.curve25519-aes-sha2",
13367+ "m.megolm.v1.aes-sha2"
13368+ ],
13369+ "device_id": "ALICEDEVICE352",
13370+ "keys": {
13371+ "curve25519:ALICEDEVICE352": "4t8FpTnWvGETln5zpKSV92XhevUWKmPFl29rd5TFe3I",
13372+ "ed25519:ALICEDEVICE352": "AaHLcjDA6I0tAHb8Dc7HZRJ7HpLLQch+58ElO87WEUU"
13373+ },
13374+ "signatures": {
13375+ "@alice_352:hs1": {
13376+ "ed25519:ALICEDEVICE352": "cMx8lBSGPcUFIPmcYdEV84ea/nPokG/P94/br20lq2R57+QkLPlQjcPc/ZbKLGgtiXyNw7ugPvC2SMUhcx7HCw"
13377+ }
13378+ },
13379+ "user_id": "@alice_352:hs1",
13380+ "unsigned": {}
13381+ }
13382+ },
13383+ "@alice_356:hs1": {
13384+ "ALICEDEVICE356": {
13385+ "algorithms": [
13386+ "m.olm.v1.curve25519-aes-sha2",
13387+ "m.megolm.v1.aes-sha2"
13388+ ],
13389+ "device_id": "ALICEDEVICE356",
13390+ "keys": {
13391+ "curve25519:ALICEDEVICE356": "Svsuibq8L7s5SosEyVZZVBcjfRBYUqSxQvjAFs0F0n8",
13392+ "ed25519:ALICEDEVICE356": "xq+3cLooDMooLlQW69vV2EGyYO+MHAJte6NCPjm/yvk"
13393+ },
13394+ "signatures": {
13395+ "@alice_356:hs1": {
13396+ "ed25519:ALICEDEVICE356": "tXrL+n/YKJwWQbGaefDIYCjS3AE564TBDaucARySwruFQTPYoKOAK86sPzPREerZAb6uIUdYEKW8Jb6+qhZABg"
13397+ }
13398+ },
13399+ "user_id": "@alice_356:hs1",
13400+ "unsigned": {}
13401+ }
13402+ },
13403+ "@alice_358:hs1": {
13404+ "ALICEDEVICE358": {
13405+ "algorithms": [
13406+ "m.olm.v1.curve25519-aes-sha2",
13407+ "m.megolm.v1.aes-sha2"
13408+ ],
13409+ "device_id": "ALICEDEVICE358",
13410+ "keys": {
13411+ "curve25519:ALICEDEVICE358": "IpFkvw8sV0J0NHUnvRYjoiOndy4SoMgUwCcP34ZVeVE",
13412+ "ed25519:ALICEDEVICE358": "8xwDZl527TkXDisM6C6405XHwn1E9usI6f10DecGkx4"
13413+ },
13414+ "signatures": {
13415+ "@alice_358:hs1": {
13416+ "ed25519:ALICEDEVICE358": "NTm2npkDDkpwo4zpR7rUT5+y/iQ4cw55chWimFlFfwFS0pfi/k0kTMPwuxr575KgJF9nDuo4mS6iEUvP4RG8CA"
13417+ }
13418+ },
13419+ "user_id": "@alice_358:hs1",
13420+ "unsigned": {}
13421+ }
13422+ },
13423+ "@alice_361:hs1": {
13424+ "ALICEDEVICE361": {
13425+ "algorithms": [
13426+ "m.olm.v1.curve25519-aes-sha2",
13427+ "m.megolm.v1.aes-sha2"
13428+ ],
13429+ "device_id": "ALICEDEVICE361",
13430+ "keys": {
13431+ "curve25519:ALICEDEVICE361": "uoc6ESvOg2r1PVn2dhfWLkzHLcQrYVsY4JHRhphxX2M",
13432+ "ed25519:ALICEDEVICE361": "2TYNaHjnUqcPTBjIvLvKH02OQTlzT0Q1Mg705o59VVk"
13433+ },
13434+ "signatures": {
13435+ "@alice_361:hs1": {
13436+ "ed25519:ALICEDEVICE361": "YUyPBVBdrGJm9hZevT9gbu4TCUp7luIrpma632pWEt9F9JgBqLgbGjohmv/jdoNQTk+5gUXS1in8YRlOHQ3vCg"
13437+ }
13438+ },
13439+ "user_id": "@alice_361:hs1",
13440+ "unsigned": {}
13441+ }
13442+ },
13443+ "@alice_362:hs1": {
13444+ "ALICEDEVICE362": {
13445+ "algorithms": [
13446+ "m.olm.v1.curve25519-aes-sha2",
13447+ "m.megolm.v1.aes-sha2"
13448+ ],
13449+ "device_id": "ALICEDEVICE362",
13450+ "keys": {
13451+ "curve25519:ALICEDEVICE362": "tZHj2BkWDitt/8S6XJ3NkLECTToYL/OZ9ADtigI5uCY",
13452+ "ed25519:ALICEDEVICE362": "bdYAVjvbP+SGLhtT1ob57xmN+FiFpa0roalEwaXLJXM"
13453+ },
13454+ "signatures": {
13455+ "@alice_362:hs1": {
13456+ "ed25519:ALICEDEVICE362": "9pzflHDWvY64L/2yQHdPVxjksQri0v1pQTbCF+gByFMdAKuymy9QIOLh0tu8cu1Ny2eDVTpcrhilGViokQN0CA"
13457+ }
13458+ },
13459+ "user_id": "@alice_362:hs1",
13460+ "unsigned": {}
13461+ }
13462+ },
13463+ "@alice_368:hs1": {
13464+ "ALICEDEVICE368": {
13465+ "algorithms": [
13466+ "m.olm.v1.curve25519-aes-sha2",
13467+ "m.megolm.v1.aes-sha2"
13468+ ],
13469+ "device_id": "ALICEDEVICE368",
13470+ "keys": {
13471+ "curve25519:ALICEDEVICE368": "QIMm/QSjR4Ba9N5dK0DUGi/RmduZ3jCW2VRy87qmYww",
13472+ "ed25519:ALICEDEVICE368": "mw4ut1SP1R1bQnLghCRVcsK4oTY6yMrZ18z4q6NHQJ4"
13473+ },
13474+ "signatures": {
13475+ "@alice_368:hs1": {
13476+ "ed25519:ALICEDEVICE368": "uHEIvJse53kgdrW3XNcXM9Lg5lwHYoecBqlStsIMLKjN4xh7oH0KOYrsjAuo4hrUWLUkCBBUDMKFALICB961Bw"
13477+ }
13478+ },
13479+ "user_id": "@alice_368:hs1",
13480+ "unsigned": {}
13481+ }
13482+ },
13483+ "@alice_377:hs1": {
13484+ "ALICEDEVICE377": {
13485+ "algorithms": [
13486+ "m.olm.v1.curve25519-aes-sha2",
13487+ "m.megolm.v1.aes-sha2"
13488+ ],
13489+ "device_id": "ALICEDEVICE377",
13490+ "keys": {
13491+ "curve25519:ALICEDEVICE377": "JrEvqlEdDtICHsuNrhfFMC6xqEy6otkNuNv8z1UT5xs",
13492+ "ed25519:ALICEDEVICE377": "d6AECqyk02A5YqISasemdUPdooGAWCm/mfLKmZl6tSY"
13493+ },
13494+ "signatures": {
13495+ "@alice_377:hs1": {
13496+ "ed25519:ALICEDEVICE377": "gp7HZO6sf/wYgOYRcOE3VvjAtd9NWIqdhvSM4HDVvx0sHymLoWTCuI6KbxRQVlbv1I+3pQ2n4Pqb5ZrEEMFmBA"
13497+ }
13498+ },
13499+ "user_id": "@alice_377:hs1",
13500+ "unsigned": {}
13501+ }
13502+ },
13503+ "@alice_386:hs1": {
13504+ "ALICEDEVICE386": {
13505+ "algorithms": [
13506+ "m.olm.v1.curve25519-aes-sha2",
13507+ "m.megolm.v1.aes-sha2"
13508+ ],
13509+ "device_id": "ALICEDEVICE386",
13510+ "keys": {
13511+ "curve25519:ALICEDEVICE386": "Sx8wS37pl32iEmM6V2HHq4b7AcBaUw49noUXUDbLHE8",
13512+ "ed25519:ALICEDEVICE386": "fll1v3r2DZKSfyEPP0sCEI/vXHvUIkn2evJ9lbCFIsE"
13513+ },
13514+ "signatures": {
13515+ "@alice_386:hs1": {
13516+ "ed25519:ALICEDEVICE386": "255zfsoLiLHVJk103IK0i2Sv2u4qUwQPXSCdtJPyI4BOYZnlnlkIL3b2LGa128I6Et/9DHawfD2wUA0UlZWQAw"
13517+ }
13518+ },
13519+ "user_id": "@alice_386:hs1",
13520+ "unsigned": {}
13521+ }
13522+ },
13523+ "@alice_389:hs1": {
13524+ "ALICEDEVICE389": {
13525+ "algorithms": [
13526+ "m.olm.v1.curve25519-aes-sha2",
13527+ "m.megolm.v1.aes-sha2"
13528+ ],
13529+ "device_id": "ALICEDEVICE389",
13530+ "keys": {
13531+ "curve25519:ALICEDEVICE389": "WwcSmKBMyOVAzg3hfjVUrY8HtYLSzPC4Ug18NRdCMGg",
13532+ "ed25519:ALICEDEVICE389": "UoCrKRhr7YmbT2MQPdDhCFgkQV8hseS3zgMp+RTWQ4Q"
13533+ },
13534+ "signatures": {
13535+ "@alice_389:hs1": {
13536+ "ed25519:ALICEDEVICE389": "Ujs2qhuPGKpVt7YPePUDxnhGPT65rEbUFls+QUoxcKVHLbgtteMOJMbbfQxMuApZ9d5CLqbb1iFcU2xJZeOvAw"
13537+ }
13538+ },
13539+ "user_id": "@alice_389:hs1",
13540+ "unsigned": {}
13541+ }
13542+ },
13543+ "@alice_39:hs1": {
13544+ "ALICEDEVICE39": {
13545+ "algorithms": [
13546+ "m.olm.v1.curve25519-aes-sha2",
13547+ "m.megolm.v1.aes-sha2"
13548+ ],
13549+ "device_id": "ALICEDEVICE39",
13550+ "keys": {
13551+ "curve25519:ALICEDEVICE39": "KZe/1xsutj59jR3R0LpZAl+J24l3ha9Vz+ZtzwOgkG4",
13552+ "ed25519:ALICEDEVICE39": "ibYQGm5/sCdeAbgfzNlUF25eHHYltksKPNmjRiU2mvg"
13553+ },
13554+ "signatures": {
13555+ "@alice_39:hs1": {
13556+ "ed25519:ALICEDEVICE39": "0T0hh7H6cNSGQ05nQ1dEEk12a4wnP8D71X+ccpQUjcO+Az4VD4uyw6M3GGKGDNPocGHMLb+n3I0dqdBkZKXbBQ"
13557+ }
13558+ },
13559+ "user_id": "@alice_39:hs1",
13560+ "unsigned": {}
13561+ }
13562+ },
13563+ "@alice_405:hs1": {
13564+ "ALICEDEVICE405": {
13565+ "algorithms": [
13566+ "m.olm.v1.curve25519-aes-sha2",
13567+ "m.megolm.v1.aes-sha2"
13568+ ],
13569+ "device_id": "ALICEDEVICE405",
13570+ "keys": {
13571+ "curve25519:ALICEDEVICE405": "U1RyiVvuE7jAXUEvMPXVWd7OJbDqS4tODdkbCi2c4Do",
13572+ "ed25519:ALICEDEVICE405": "Csj60zRSs/J7s0mNJm9q7D1ZK6Q6V9+p7nlW3arG/sM"
13573+ },
13574+ "signatures": {
13575+ "@alice_405:hs1": {
13576+ "ed25519:ALICEDEVICE405": "ZBLPvHcmSYVfcaKTuuIoVkz8+fAXJ5s//zrgYu4ksqJlfNiUTP1RiWeWSXWgahq26mmUxwxOS61+GakG7sk/DA"
13577+ }
13578+ },
13579+ "user_id": "@alice_405:hs1",
13580+ "unsigned": {}
13581+ }
13582+ },
13583+ "@alice_422:hs1": {
13584+ "ALICEDEVICE422": {
13585+ "algorithms": [
13586+ "m.olm.v1.curve25519-aes-sha2",
13587+ "m.megolm.v1.aes-sha2"
13588+ ],
13589+ "device_id": "ALICEDEVICE422",
13590+ "keys": {
13591+ "curve25519:ALICEDEVICE422": "znhJIRuJaedlgwbkHwtMU/Y9Tyxkzj9bVIvsGKc4E0Q",
13592+ "ed25519:ALICEDEVICE422": "jhFhMFxQ3/BibF+zzlgB00Wsvlfj0QdK9/YIS/xGn2w"
13593+ },
13594+ "signatures": {
13595+ "@alice_422:hs1": {
13596+ "ed25519:ALICEDEVICE422": "DfY1mVYK+lXb9aUUAMx9D7NNEt9HHGOlWcxP7HP/FYZbyYw19O2cOf3z+4mUstPZmovGqlosOYoaSBSz2aZADA"
13597+ }
13598+ },
13599+ "user_id": "@alice_422:hs1",
13600+ "unsigned": {}
13601+ }
13602+ },
13603+ "@alice_438:hs1": {
13604+ "ALICEDEVICE438": {
13605+ "algorithms": [
13606+ "m.olm.v1.curve25519-aes-sha2",
13607+ "m.megolm.v1.aes-sha2"
13608+ ],
13609+ "device_id": "ALICEDEVICE438",
13610+ "keys": {
13611+ "curve25519:ALICEDEVICE438": "QzpceMaO9xFMfXvUQmENfCPz81rNAG/nqp87YBaBIhM",
13612+ "ed25519:ALICEDEVICE438": "kACh3RSKkwiOAqzk0L0eaiZK62MhOHJzrAyGWzQXuwA"
13613+ },
13614+ "signatures": {
13615+ "@alice_438:hs1": {
13616+ "ed25519:ALICEDEVICE438": "1nwGdif3uQb5PowlxMh7e6jTGBrbym0IcUVPy350YdZUWuCED8sa62PYF9Na6uSkfKoU5a4P0F4DasqHLj6TCw"
13617+ }
13618+ },
13619+ "user_id": "@alice_438:hs1",
13620+ "unsigned": {}
13621+ }
13622+ },
13623+ "@alice_43:hs1": {
13624+ "ALICEDEVICE43": {
13625+ "algorithms": [
13626+ "m.olm.v1.curve25519-aes-sha2",
13627+ "m.megolm.v1.aes-sha2"
13628+ ],
13629+ "device_id": "ALICEDEVICE43",
13630+ "keys": {
13631+ "curve25519:ALICEDEVICE43": "kXNY+V5BoBe0jSxCLbddxE0bSn2orxTNWhrn8Ace5yo",
13632+ "ed25519:ALICEDEVICE43": "2naTaUQqsgh/rjIhXxaK/fjakRfrTegNSWRdkuDCMQQ"
13633+ },
13634+ "signatures": {
13635+ "@alice_43:hs1": {
13636+ "ed25519:ALICEDEVICE43": "T5spUexNuyKi2YO5zDmDmhNcip2dbf2gs5gQQAdTeDLWuoSnUORlarIWDWB4cXpA/rKXrlOWY+9JOOe3KSv+DA"
13637+ }
13638+ },
13639+ "user_id": "@alice_43:hs1",
13640+ "unsigned": {}
13641+ }
13642+ },
13643+ "@alice_443:hs1": {
13644+ "ALICEDEVICE443": {
13645+ "algorithms": [
13646+ "m.olm.v1.curve25519-aes-sha2",
13647+ "m.megolm.v1.aes-sha2"
13648+ ],
13649+ "device_id": "ALICEDEVICE443",
13650+ "keys": {
13651+ "curve25519:ALICEDEVICE443": "Tqgp+SrLZ9hcqg2gT0E60DOhnmF7PQzMlozMIg8RNHE",
13652+ "ed25519:ALICEDEVICE443": "TwB5DKcDPJ4I+PbrNpd5IMJY3x3AAjp2GBqFb7FLiBo"
13653+ },
13654+ "signatures": {
13655+ "@alice_443:hs1": {
13656+ "ed25519:ALICEDEVICE443": "X1Ti0ym0/UTk1qnMAxoIlSTkQdWUKxsKlOKfHIqFZxKubwtwN1rWraG5rbWMEwgi5UyziHosjtcX+yKC7kMTAw"
13657+ }
13658+ },
13659+ "user_id": "@alice_443:hs1",
13660+ "unsigned": {}
13661+ }
13662+ },
13663+ "@alice_448:hs1": {
13664+ "ALICEDEVICE448": {
13665+ "algorithms": [
13666+ "m.olm.v1.curve25519-aes-sha2",
13667+ "m.megolm.v1.aes-sha2"
13668+ ],
13669+ "device_id": "ALICEDEVICE448",
13670+ "keys": {
13671+ "curve25519:ALICEDEVICE448": "D2y/gvrbltg2dQIZMWTVmE/kgK+9R7xsBHtD4Rj09iA",
13672+ "ed25519:ALICEDEVICE448": "De3NxCe68JpWYQQz4Q5xnUHJS+mSiOXfrmxeWu8Fm80"
13673+ },
13674+ "signatures": {
13675+ "@alice_448:hs1": {
13676+ "ed25519:ALICEDEVICE448": "LhvniDyBOsDPnQdyX7SblfK1up2q+xwaKBJpsOYm3nUcKJObMrjqgzwDt4K1q7/r5eX5FASrgVY0ZgUvhERNCg"
13677+ }
13678+ },
13679+ "user_id": "@alice_448:hs1",
13680+ "unsigned": {}
13681+ }
13682+ },
13683+ "@alice_450:hs1": {
13684+ "ALICEDEVICE450": {
13685+ "algorithms": [
13686+ "m.olm.v1.curve25519-aes-sha2",
13687+ "m.megolm.v1.aes-sha2"
13688+ ],
13689+ "device_id": "ALICEDEVICE450",
13690+ "keys": {
13691+ "curve25519:ALICEDEVICE450": "72Kd4+wSePmmUteFIidP0/1nb761QXf2ykUtw9XAVFQ",
13692+ "ed25519:ALICEDEVICE450": "DGNxTmgbA1mKylaQzisUTXuBXX6uNurujxYrs6ZINHk"
13693+ },
13694+ "signatures": {
13695+ "@alice_450:hs1": {
13696+ "ed25519:ALICEDEVICE450": "ElII48ioRtATkxtnIO/pmHKI5LJ+DiOazPOl9UhT5K9yqYma8LVdBGsfT0pJ1iy4OdNK0CRH7U7K5lbqUC77CQ"
13697+ }
13698+ },
13699+ "user_id": "@alice_450:hs1",
13700+ "unsigned": {}
13701+ }
13702+ },
13703+ "@alice_459:hs1": {
13704+ "ALICEDEVICE459": {
13705+ "algorithms": [
13706+ "m.olm.v1.curve25519-aes-sha2",
13707+ "m.megolm.v1.aes-sha2"
13708+ ],
13709+ "device_id": "ALICEDEVICE459",
13710+ "keys": {
13711+ "curve25519:ALICEDEVICE459": "06gLHX4XC8F40V3f9cYtDBytqmkDwLlQgTqhwBhRzCA",
13712+ "ed25519:ALICEDEVICE459": "VtFHvxF/tTRRFPAvrExMpgaibbC0BB3EnzqrAbhYvxU"
13713+ },
13714+ "signatures": {
13715+ "@alice_459:hs1": {
13716+ "ed25519:ALICEDEVICE459": "Z/suUs4T3EnKIjl0WDou++ruBE3DtagO8VLxgVGQQJ646BJVAHvXxK7NxQjyyEXWlUkky/3/33pYW5ITZQhpDA"
13717+ }
13718+ },
13719+ "user_id": "@alice_459:hs1",
13720+ "unsigned": {}
13721+ }
13722+ },
13723+ "@alice_45:hs1": {
13724+ "ALICEDEVICE45": {
13725+ "algorithms": [
13726+ "m.olm.v1.curve25519-aes-sha2",
13727+ "m.megolm.v1.aes-sha2"
13728+ ],
13729+ "device_id": "ALICEDEVICE45",
13730+ "keys": {
13731+ "curve25519:ALICEDEVICE45": "+7DmnxBeQp+vNyJncJ8IlgPjtm5vm4NQm/Xkc1b4SEs",
13732+ "ed25519:ALICEDEVICE45": "F8NURTKfHyaaPSM7rLOKF4Q9ZCcDHZSYNoCcouN9QpY"
13733+ },
13734+ "signatures": {
13735+ "@alice_45:hs1": {
13736+ "ed25519:ALICEDEVICE45": "OqE/q2VwI5NLsHhDYYSVXQ1OIrABV1i2i/BwINhvRxrMbRwJh8rpMf0KGU1wP368eiGtBfnk0ZOIcyPvWKTgBg"
13737+ }
13738+ },
13739+ "user_id": "@alice_45:hs1",
13740+ "unsigned": {}
13741+ }
13742+ },
13743+ "@alice_466:hs1": {
13744+ "ALICEDEVICE466": {
13745+ "algorithms": [
13746+ "m.olm.v1.curve25519-aes-sha2",
13747+ "m.megolm.v1.aes-sha2"
13748+ ],
13749+ "device_id": "ALICEDEVICE466",
13750+ "keys": {
13751+ "curve25519:ALICEDEVICE466": "pM3CtXGiwjYIZ1CV8j/CxIzbtcKQ004t/vpdwH6nEiA",
13752+ "ed25519:ALICEDEVICE466": "LqP6+0VNWNX14/gAO4SHb2vd7FzEQI8P6skz2ZtunKQ"
13753+ },
13754+ "signatures": {
13755+ "@alice_466:hs1": {
13756+ "ed25519:ALICEDEVICE466": "HjvubrnP9NQNo8h46UHTnvW/bB/0HjkrxJPriSYV5hZfNuMDm4V1ayX2IQoCZSf6Wy8j3sFRBQMOZdJ/Xj/CAA"
13757+ }
13758+ },
13759+ "user_id": "@alice_466:hs1",
13760+ "unsigned": {}
13761+ }
13762+ },
13763+ "@alice_473:hs1": {
13764+ "ALICEDEVICE473": {
13765+ "algorithms": [
13766+ "m.olm.v1.curve25519-aes-sha2",
13767+ "m.megolm.v1.aes-sha2"
13768+ ],
13769+ "device_id": "ALICEDEVICE473",
13770+ "keys": {
13771+ "curve25519:ALICEDEVICE473": "skRdwpuFTyzwz0ochFYmF6SlC1uic0u7vwbOp7LvU04",
13772+ "ed25519:ALICEDEVICE473": "RgbClgBgHfqwkDuFPDtCkNhgO5vqLH11WwvtkCfPhGE"
13773+ },
13774+ "signatures": {
13775+ "@alice_473:hs1": {
13776+ "ed25519:ALICEDEVICE473": "Z36E8ft+2jrWUdRiytrApEIEjCs5vn0ZeiP2nUmTwMGxGqrgrx7JG8eifEvElWH5CG24H5LV3H/Y19LgyWYSBg"
13777+ }
13778+ },
13779+ "user_id": "@alice_473:hs1",
13780+ "unsigned": {}
13781+ }
13782+ },
13783+ "@alice_485:hs1": {
13784+ "ALICEDEVICE485": {
13785+ "algorithms": [
13786+ "m.olm.v1.curve25519-aes-sha2",
13787+ "m.megolm.v1.aes-sha2"
13788+ ],
13789+ "device_id": "ALICEDEVICE485",
13790+ "keys": {
13791+ "curve25519:ALICEDEVICE485": "JDFu1PqhUNBn9cFQ2IhJX3Exhwb+XL9HEuQX5J5YsVM",
13792+ "ed25519:ALICEDEVICE485": "olEE7cr/TLiicvx3/Riweq0qMoORtUzHQYr6HBIGHl0"
13793+ },
13794+ "signatures": {
13795+ "@alice_485:hs1": {
13796+ "ed25519:ALICEDEVICE485": "ivQpag53PON2yhtCXddVPARG81qTu2BWJUsshUUESJYitULsg+fBoNtQ8/IjZFDEq2rhKauKTSF9WSr07cCCAQ"
13797+ }
13798+ },
13799+ "user_id": "@alice_485:hs1",
13800+ "unsigned": {}
13801+ }
13802+ },
13803+ "@alice_48:hs1": {
13804+ "ALICEDEVICE48": {
13805+ "algorithms": [
13806+ "m.olm.v1.curve25519-aes-sha2",
13807+ "m.megolm.v1.aes-sha2"
13808+ ],
13809+ "device_id": "ALICEDEVICE48",
13810+ "keys": {
13811+ "curve25519:ALICEDEVICE48": "62nQm+3mL0bAdR4yFvrULjpTx2VbC07DH5e3UpVvzA8",
13812+ "ed25519:ALICEDEVICE48": "ys9iFSMQUvnZkEVUCDrl6qcxnl7l6o/WGah/96nHJ+w"
13813+ },
13814+ "signatures": {
13815+ "@alice_48:hs1": {
13816+ "ed25519:ALICEDEVICE48": "yXIVNaGripPiVPB4lnAYdLFFJ2USR+Xg0ci5oGXXzSgvsOGPfM30eKsVYEVkUwfTGfiFYF/PnmsVUZhzp8S5BA"
13817+ }
13818+ },
13819+ "user_id": "@alice_48:hs1",
13820+ "unsigned": {}
13821+ }
13822+ },
13823+ "@alice_491:hs1": {
13824+ "ALICEDEVICE491": {
13825+ "algorithms": [
13826+ "m.olm.v1.curve25519-aes-sha2",
13827+ "m.megolm.v1.aes-sha2"
13828+ ],
13829+ "device_id": "ALICEDEVICE491",
13830+ "keys": {
13831+ "curve25519:ALICEDEVICE491": "LkUlT/SPDRs5zQGfAQIGGSzMbn8a7joAaB28FkY/7Uk",
13832+ "ed25519:ALICEDEVICE491": "B16AeGv0aAtz7TIGlLcO0WI9+XHb0+4yTYuI7Y6YSVA"
13833+ },
13834+ "signatures": {
13835+ "@alice_491:hs1": {
13836+ "ed25519:ALICEDEVICE491": "m+ywz76+P6Z5UofzBWYEgn+M3gggOhcxhgb04j6Jwei8MqH31ETuH8Eh7RLADn6byaZYxoC7YChxkbRf3k3EAQ"
13837+ }
13838+ },
13839+ "user_id": "@alice_491:hs1",
13840+ "unsigned": {}
13841+ }
13842+ },
13843+ "@alice_492:hs1": {
13844+ "ALICEDEVICE492": {
13845+ "algorithms": [
13846+ "m.olm.v1.curve25519-aes-sha2",
13847+ "m.megolm.v1.aes-sha2"
13848+ ],
13849+ "device_id": "ALICEDEVICE492",
13850+ "keys": {
13851+ "curve25519:ALICEDEVICE492": "b2+XSWNTt7erkoAwFOq1XAY/Tvhz5E/DE7fPN5EEI2k",
13852+ "ed25519:ALICEDEVICE492": "+DjjIDC6yZfaYRJZzp9LHWh2ViIFJTd+ojr3fcVpR2w"
13853+ },
13854+ "signatures": {
13855+ "@alice_492:hs1": {
13856+ "ed25519:ALICEDEVICE492": "fZsgIxhbkB9EuJqrl79riYhQz3hd5dwtmj0ybRy4c0YhiNgXscS/OOSHNV3mWhYV2jHnaNYewXWW0SwcHwcdBw"
13857+ }
13858+ },
13859+ "user_id": "@alice_492:hs1",
13860+ "unsigned": {}
13861+ }
13862+ },
13863+ "@alice_502:hs1": {
13864+ "ALICEDEVICE502": {
13865+ "algorithms": [
13866+ "m.olm.v1.curve25519-aes-sha2",
13867+ "m.megolm.v1.aes-sha2"
13868+ ],
13869+ "device_id": "ALICEDEVICE502",
13870+ "keys": {
13871+ "curve25519:ALICEDEVICE502": "YkQG97wxEU3jdpJOxh8il9TI7ST4OmyV2g+g7cOValI",
13872+ "ed25519:ALICEDEVICE502": "2gP9ayuJuPmX5lXOg9r/T9+sAenbmq9G4fBBoiceBRU"
13873+ },
13874+ "signatures": {
13875+ "@alice_502:hs1": {
13876+ "ed25519:ALICEDEVICE502": "Ss//Be7rWEgq+knHM0QDCKZnKgjpvziWzmp4Qtm2zfwlqMAGgRlMiT2wUzmllNPHXknjHkeieJxfsAtSlyo/BA"
13877+ }
13878+ },
13879+ "user_id": "@alice_502:hs1",
13880+ "unsigned": {}
13881+ }
13882+ },
13883+ "@alice_512:hs1": {
13884+ "ALICEDEVICE512": {
13885+ "algorithms": [
13886+ "m.olm.v1.curve25519-aes-sha2",
13887+ "m.megolm.v1.aes-sha2"
13888+ ],
13889+ "device_id": "ALICEDEVICE512",
13890+ "keys": {
13891+ "curve25519:ALICEDEVICE512": "v33UsVI8hxU+lTarZ7H0NoVA8otiYAzuA4BzdE3YgA4",
13892+ "ed25519:ALICEDEVICE512": "+NS0ACzY9+Mnxucg7IfreQQJ2XI9uknMWku6+jkSGyM"
13893+ },
13894+ "signatures": {
13895+ "@alice_512:hs1": {
13896+ "ed25519:ALICEDEVICE512": "vJohaVaIzTu7aUU7YF8J7OrpYomH6elBN+b4PKywsMDwEcYfybsjkoOsuysxEkUZNpdX3PLUFYi3HQ+jY9ZoBQ"
13897+ }
13898+ },
13899+ "user_id": "@alice_512:hs1",
13900+ "unsigned": {}
13901+ }
13902+ },
13903+ "@alice_514:hs1": {
13904+ "ALICEDEVICE514": {
13905+ "algorithms": [
13906+ "m.olm.v1.curve25519-aes-sha2",
13907+ "m.megolm.v1.aes-sha2"
13908+ ],
13909+ "device_id": "ALICEDEVICE514",
13910+ "keys": {
13911+ "curve25519:ALICEDEVICE514": "VqaPiqtrvSCnP9X7IMnVAUnFvDuNaIkU8Aa6RftIdWQ",
13912+ "ed25519:ALICEDEVICE514": "swj7O4RCDahA4ojS4tR1Mh26Bhx0FqxfrBNgzjbF5tk"
13913+ },
13914+ "signatures": {
13915+ "@alice_514:hs1": {
13916+ "ed25519:ALICEDEVICE514": "4uApHlTLLuUsKgnrW6udyZ2oJGbESGtF8aEDDmDNVn+oz1BBbhUlPDydkmzy5gisyWYzNOGTrFaUTn3qTgbICg"
13917+ }
13918+ },
13919+ "user_id": "@alice_514:hs1",
13920+ "unsigned": {}
13921+ }
13922+ },
13923+ "@alice_516:hs1": {
13924+ "ALICEDEVICE516": {
13925+ "algorithms": [
13926+ "m.olm.v1.curve25519-aes-sha2",
13927+ "m.megolm.v1.aes-sha2"
13928+ ],
13929+ "device_id": "ALICEDEVICE516",
13930+ "keys": {
13931+ "curve25519:ALICEDEVICE516": "JevbR8z/Z6Wmlvj7FIsuFqwC7q9/Vs3Sly2+u/s7KiI",
13932+ "ed25519:ALICEDEVICE516": "Qo7s8skK8Qe8ujfyHuC1baX5gcO6m5YcZcztHZa4AsM"
13933+ },
13934+ "signatures": {
13935+ "@alice_516:hs1": {
13936+ "ed25519:ALICEDEVICE516": "REMSLjFWzJDrHWNP78qJI4FWV9Nzal2G1nkkZpf9VEwjrn28N+XowK2Qu36Q+gnYch5vIHQwXiX4x4dJaNHhBQ"
13937+ }
13938+ },
13939+ "user_id": "@alice_516:hs1",
13940+ "unsigned": {}
13941+ }
13942+ },
13943+ "@alice_540:hs1": {
13944+ "ALICEDEVICE540": {
13945+ "algorithms": [
13946+ "m.olm.v1.curve25519-aes-sha2",
13947+ "m.megolm.v1.aes-sha2"
13948+ ],
13949+ "device_id": "ALICEDEVICE540",
13950+ "keys": {
13951+ "curve25519:ALICEDEVICE540": "cs+HI3vO87C4/pMnzudguB4gMZmMTJPLqPQ+BlYgPyQ",
13952+ "ed25519:ALICEDEVICE540": "T3zJL9cfzciqihbeHa2zinEu3c/RjfSuRIWAL73rdSE"
13953+ },
13954+ "signatures": {
13955+ "@alice_540:hs1": {
13956+ "ed25519:ALICEDEVICE540": "QhFu2UZg5nUI/P05jPqi3MvnWCplf2P0XFouywWSMmJDzUlW39l8jUs9KN01uRqE9wLhNa0OVsVrRRbEQRq9Bw"
13957+ }
13958+ },
13959+ "user_id": "@alice_540:hs1",
13960+ "unsigned": {}
13961+ }
13962+ },
13963+ "@alice_543:hs1": {
13964+ "ALICEDEVICE543": {
13965+ "algorithms": [
13966+ "m.olm.v1.curve25519-aes-sha2",
13967+ "m.megolm.v1.aes-sha2"
13968+ ],
13969+ "device_id": "ALICEDEVICE543",
13970+ "keys": {
13971+ "curve25519:ALICEDEVICE543": "Jm+FUXsCCEPWBKGxLN6kIO2Evl9hRnu1zlN6+ORt1Q0",
13972+ "ed25519:ALICEDEVICE543": "6QTt9Z0rJRyoueX9eNtiawHUGd0z4etcePFQARk8txk"
13973+ },
13974+ "signatures": {
13975+ "@alice_543:hs1": {
13976+ "ed25519:ALICEDEVICE543": "DLaTP5gshmGDz0ziNqjaQgS0i7h4mfRWcywUxtNTcdHb5LZFtbdMMnF+KL8qeq/Q0bbzOWD9ramycRYcm8BtBQ"
13977+ }
13978+ },
13979+ "user_id": "@alice_543:hs1",
13980+ "unsigned": {}
13981+ }
13982+ },
13983+ "@alice_555:hs1": {
13984+ "ALICEDEVICE555": {
13985+ "algorithms": [
13986+ "m.olm.v1.curve25519-aes-sha2",
13987+ "m.megolm.v1.aes-sha2"
13988+ ],
13989+ "device_id": "ALICEDEVICE555",
13990+ "keys": {
13991+ "curve25519:ALICEDEVICE555": "jR5JwtPGN5TTBl3L6KNkEIf6i5/U/CSZeWijIvHfSFQ",
13992+ "ed25519:ALICEDEVICE555": "1br1wNY6aoaMwFfqa6UpVAtIsjGw2wLVkkSfeG/GTDY"
13993+ },
13994+ "signatures": {
13995+ "@alice_555:hs1": {
13996+ "ed25519:ALICEDEVICE555": "ZeeUZ2BAXn9DHqZdG+KbOdqVmnnUDEpt2awMSfKGKoWGr2/CyLU0rMnT7ZE/1IlXFVCXMFtiaCschV8EpJwWBg"
13997+ }
13998+ },
13999+ "user_id": "@alice_555:hs1",
14000+ "unsigned": {}
14001+ }
14002+ },
14003+ "@alice_558:hs1": {
14004+ "ALICEDEVICE558": {
14005+ "algorithms": [
14006+ "m.olm.v1.curve25519-aes-sha2",
14007+ "m.megolm.v1.aes-sha2"
14008+ ],
14009+ "device_id": "ALICEDEVICE558",
14010+ "keys": {
14011+ "curve25519:ALICEDEVICE558": "PZYenV39fWTrkErNdH4VPY4kFg281TSjrcJ0aASVvFo",
14012+ "ed25519:ALICEDEVICE558": "GPATFIjKmOQhMOYmFoLbkJRJULXSxSQVfNtvlmzv4KQ"
14013+ },
14014+ "signatures": {
14015+ "@alice_558:hs1": {
14016+ "ed25519:ALICEDEVICE558": "Ivjg0HDlVK1h8/GIQAeXbn0OhUGbq8X6AczWf2p8MLUabHGU7PElQvb7QhNi/6aV5V4YaTcRa8Y+K+ZZajYLBQ"
14017+ }
14018+ },
14019+ "user_id": "@alice_558:hs1",
14020+ "unsigned": {}
14021+ }
14022+ },
14023+ "@alice_560:hs1": {
14024+ "ALICEDEVICE560": {
14025+ "algorithms": [
14026+ "m.olm.v1.curve25519-aes-sha2",
14027+ "m.megolm.v1.aes-sha2"
14028+ ],
14029+ "device_id": "ALICEDEVICE560",
14030+ "keys": {
14031+ "curve25519:ALICEDEVICE560": "b+XuDPXKg5Agk4juyXnQAy+R7Ie3+rxZzTrqaqUohhs",
14032+ "ed25519:ALICEDEVICE560": "ru3E0fcPHYP5QZF1+2OhUwaAlYRy48jS53i3R8CGL50"
14033+ },
14034+ "signatures": {
14035+ "@alice_560:hs1": {
14036+ "ed25519:ALICEDEVICE560": "luQeKYZtOnj4Kj/l1IdcMzjEI/BXtPh0DJDAmPW3kAG4gS6k4YdaNZbZTsMpfBz8iePjb+WT5pvZYGkda6YiAw"
14037+ }
14038+ },
14039+ "user_id": "@alice_560:hs1",
14040+ "unsigned": {}
14041+ }
14042+ },
14043+ "@alice_590:hs1": {
14044+ "ALICEDEVICE590": {
14045+ "algorithms": [
14046+ "m.olm.v1.curve25519-aes-sha2",
14047+ "m.megolm.v1.aes-sha2"
14048+ ],
14049+ "device_id": "ALICEDEVICE590",
14050+ "keys": {
14051+ "curve25519:ALICEDEVICE590": "2Xstbp5zGspslTf2xRoWQJgMz3SoejF8pM1NfAQ84zw",
14052+ "ed25519:ALICEDEVICE590": "ZKatHYw2z4e9rF6PMp9sJYqvxEZJN4CsuLy6YhUNTVw"
14053+ },
14054+ "signatures": {
14055+ "@alice_590:hs1": {
14056+ "ed25519:ALICEDEVICE590": "3CqqQiqXhAQ9HWN18TWGI2Rzp1B9AwLoqjGTgoGPHTOHZJ+K+NulBmt/A2jvwCvVzCeKSoE5zuIO7QzBtxRNCw"
14057+ }
14058+ },
14059+ "user_id": "@alice_590:hs1",
14060+ "unsigned": {}
14061+ }
14062+ },
14063+ "@alice_596:hs1": {
14064+ "ALICEDEVICE596": {
14065+ "algorithms": [
14066+ "m.olm.v1.curve25519-aes-sha2",
14067+ "m.megolm.v1.aes-sha2"
14068+ ],
14069+ "device_id": "ALICEDEVICE596",
14070+ "keys": {
14071+ "curve25519:ALICEDEVICE596": "6F3gZZZp9jYgpMGTDEXRL/OAum9paahMbcIMhMhgdCA",
14072+ "ed25519:ALICEDEVICE596": "7FRxrO9zKRGaC6ngEFt9HksIrqpVq9AcWCImTClJZHQ"
14073+ },
14074+ "signatures": {
14075+ "@alice_596:hs1": {
14076+ "ed25519:ALICEDEVICE596": "lGQTAL0FHygsNgC0RJtl2zzssguPAXLs5h+s27bgkEIBSR6mjc1jkIauW584oPzPLdwC+224freyLJbW0Q1dAg"
14077+ }
14078+ },
14079+ "user_id": "@alice_596:hs1",
14080+ "unsigned": {}
14081+ }
14082+ },
14083+ "@alice_598:hs1": {
14084+ "ALICEDEVICE598": {
14085+ "algorithms": [
14086+ "m.olm.v1.curve25519-aes-sha2",
14087+ "m.megolm.v1.aes-sha2"
14088+ ],
14089+ "device_id": "ALICEDEVICE598",
14090+ "keys": {
14091+ "curve25519:ALICEDEVICE598": "2fMHT2TVrZgVI8+HLLJ7t19LPmYgFLH6VK40WABO9Vw",
14092+ "ed25519:ALICEDEVICE598": "bKEZ6HjEjkAzDNE6/H54hqMmwuhMtIZ6jqBUvQ/58YM"
14093+ },
14094+ "signatures": {
14095+ "@alice_598:hs1": {
14096+ "ed25519:ALICEDEVICE598": "PTPuQWDG60aZ7KbWeHqp5A0rc1iC8OGB/lrIw7t8dSLUalvJMHHKRqgRbPUpAhucGCPoWlyzI3VaqrSvMmLRDg"
14097+ }
14098+ },
14099+ "user_id": "@alice_598:hs1",
14100+ "unsigned": {}
14101+ }
14102+ },
14103+ "@alice_599:hs1": {
14104+ "ALICEDEVICE599": {
14105+ "algorithms": [
14106+ "m.olm.v1.curve25519-aes-sha2",
14107+ "m.megolm.v1.aes-sha2"
14108+ ],
14109+ "device_id": "ALICEDEVICE599",
14110+ "keys": {
14111+ "curve25519:ALICEDEVICE599": "v3KknLJjrXmCYhGyqwNRqclm23iBXSJt7AI9Wvh48nI",
14112+ "ed25519:ALICEDEVICE599": "NKvdgWtxo/6smMae9ieZZKYJA63TJiCof/jVH9E2HXo"
14113+ },
14114+ "signatures": {
14115+ "@alice_599:hs1": {
14116+ "ed25519:ALICEDEVICE599": "OdZuMtA0TQM8VceyQCfw70o9sbNzczzwH+Mje+m4wYiR3lzM6RDv//HZFu06Yy8ilL7dC2AOWXSinVcgsuuKCQ"
14117+ }
14118+ },
14119+ "user_id": "@alice_599:hs1",
14120+ "unsigned": {}
14121+ }
14122+ },
14123+ "@alice_617:hs1": {
14124+ "ALICEDEVICE617": {
14125+ "algorithms": [
14126+ "m.olm.v1.curve25519-aes-sha2",
14127+ "m.megolm.v1.aes-sha2"
14128+ ],
14129+ "device_id": "ALICEDEVICE617",
14130+ "keys": {
14131+ "curve25519:ALICEDEVICE617": "TzBOzbJnhPB42UHj3YZZkUQ7HBbCVo6z6m1JBhI0Clc",
14132+ "ed25519:ALICEDEVICE617": "z4ZkmHL3hn6PHO3vacEY3oyu+asSXG5U4cO617u1gnA"
14133+ },
14134+ "signatures": {
14135+ "@alice_617:hs1": {
14136+ "ed25519:ALICEDEVICE617": "JxyarrUHNquVTu0Owp+IN6KtgT+J1CEamKYZsoe9RJZfPmh4pVilk9oMiPmuT4IpRswWfMagulINoDcbVUdXDA"
14137+ }
14138+ },
14139+ "user_id": "@alice_617:hs1",
14140+ "unsigned": {}
14141+ }
14142+ },
14143+ "@alice_627:hs1": {
14144+ "ALICEDEVICE627": {
14145+ "algorithms": [
14146+ "m.olm.v1.curve25519-aes-sha2",
14147+ "m.megolm.v1.aes-sha2"
14148+ ],
14149+ "device_id": "ALICEDEVICE627",
14150+ "keys": {
14151+ "curve25519:ALICEDEVICE627": "Eyjz2OoOKHiETQEFhXlE6GDRnvjiOc4fXyHqwNRm6BA",
14152+ "ed25519:ALICEDEVICE627": "MqbqUOBCgDD26Kb6Ov7cK4ThmlB5OBogoRWN4ms/xqo"
14153+ },
14154+ "signatures": {
14155+ "@alice_627:hs1": {
14156+ "ed25519:ALICEDEVICE627": "AHR82bUxZt56lkd1VLEKUuXd4S6kq/35cIVbpOjvmEkKCH03lee1WC3jRDUq5oazg8dyTX5Q73P3Kk6HiYwcAQ"
14157+ }
14158+ },
14159+ "user_id": "@alice_627:hs1",
14160+ "unsigned": {}
14161+ }
14162+ },
14163+ "@alice_633:hs1": {
14164+ "ALICEDEVICE633": {
14165+ "algorithms": [
14166+ "m.olm.v1.curve25519-aes-sha2",
14167+ "m.megolm.v1.aes-sha2"
14168+ ],
14169+ "device_id": "ALICEDEVICE633",
14170+ "keys": {
14171+ "curve25519:ALICEDEVICE633": "HSwDO+fR7xIsCpIAeoD+lEAmx+rDDREIsrQP6du1Q28",
14172+ "ed25519:ALICEDEVICE633": "SUkM+ARWs4CXc1mch/pYrtiFnIWu610CABWHmEatkhw"
14173+ },
14174+ "signatures": {
14175+ "@alice_633:hs1": {
14176+ "ed25519:ALICEDEVICE633": "eyErp1d9+B5csGLMCacyr4KBRtWluUoMcPPonHo0VICN9q7cK/umPz2niZIYOiNEEj1wGZSQCjL+6rU1JkHqCg"
14177+ }
14178+ },
14179+ "user_id": "@alice_633:hs1",
14180+ "unsigned": {}
14181+ }
14182+ },
14183+ "@alice_638:hs1": {
14184+ "ALICEDEVICE638": {
14185+ "algorithms": [
14186+ "m.olm.v1.curve25519-aes-sha2",
14187+ "m.megolm.v1.aes-sha2"
14188+ ],
14189+ "device_id": "ALICEDEVICE638",
14190+ "keys": {
14191+ "curve25519:ALICEDEVICE638": "zdCwhcg4q+RjtD4ma8mbnp5J7qPfvtbPHRwE8AUHKCg",
14192+ "ed25519:ALICEDEVICE638": "UnPBI9CZGI8mBmd2kngBlIy76e5Qa+ZqKr43PFW4zvI"
14193+ },
14194+ "signatures": {
14195+ "@alice_638:hs1": {
14196+ "ed25519:ALICEDEVICE638": "EAI1R6+66pL8VFcqLn2e447B4ynM3qZKYTa5rKnqSJa0Bn0k9p+s3Oxw77TCaxP74U2zkNaNDO/E10Ed7gPMCA"
14197+ }
14198+ },
14199+ "user_id": "@alice_638:hs1",
14200+ "unsigned": {}
14201+ }
14202+ },
14203+ "@alice_63:hs1": {
14204+ "ALICEDEVICE63": {
14205+ "algorithms": [
14206+ "m.olm.v1.curve25519-aes-sha2",
14207+ "m.megolm.v1.aes-sha2"
14208+ ],
14209+ "device_id": "ALICEDEVICE63",
14210+ "keys": {
14211+ "curve25519:ALICEDEVICE63": "TOU9b1eeO5yjyVSLIaMF79TAkxS2nrFJrJds+eZtYEI",
14212+ "ed25519:ALICEDEVICE63": "QSjIjqK1/0zNfQtI1egWUtgRFT1/+4WKTomTllIyZZY"
14213+ },
14214+ "signatures": {
14215+ "@alice_63:hs1": {
14216+ "ed25519:ALICEDEVICE63": "9VugwZWq6L7jpPl6CEy+YEdj7oh7lLu3LqOoY5fE+mpwZ8sx5jVJxV6+8SGb91enFxr3XYv+mPRqFR1YZ5NTDw"
14217+ }
14218+ },
14219+ "user_id": "@alice_63:hs1",
14220+ "unsigned": {}
14221+ }
14222+ },
14223+ "@alice_641:hs1": {
14224+ "ALICEDEVICE641": {
14225+ "algorithms": [
14226+ "m.olm.v1.curve25519-aes-sha2",
14227+ "m.megolm.v1.aes-sha2"
14228+ ],
14229+ "device_id": "ALICEDEVICE641",
14230+ "keys": {
14231+ "curve25519:ALICEDEVICE641": "J+xSLpECSLpwFty4/qtlVWtxYZz4WfDM7iYXpgRAywM",
14232+ "ed25519:ALICEDEVICE641": "SqQvGp1ST4UPIcIMltOhvp8BnX4PWH/7amrxnmjxkiQ"
14233+ },
14234+ "signatures": {
14235+ "@alice_641:hs1": {
14236+ "ed25519:ALICEDEVICE641": "rkf1MPlkJRMPE5Nc+kW/rYkLz4dK1wKD3GVL/1BOhqkfILIsOSZgvuVI8jTcV4D/kqLuniUOc37T93gcjNA2Dg"
14237+ }
14238+ },
14239+ "user_id": "@alice_641:hs1",
14240+ "unsigned": {}
14241+ }
14242+ },
14243+ "@alice_656:hs1": {
14244+ "ALICEDEVICE656": {
14245+ "algorithms": [
14246+ "m.olm.v1.curve25519-aes-sha2",
14247+ "m.megolm.v1.aes-sha2"
14248+ ],
14249+ "device_id": "ALICEDEVICE656",
14250+ "keys": {
14251+ "curve25519:ALICEDEVICE656": "C+JBLMXjctIXAKTs0X8qaZOwBCwV3VFoo3JdXRFZwWQ",
14252+ "ed25519:ALICEDEVICE656": "edxtFeW+GCgpfKSrIiEwKX+bYRwC6XDnkSOBBtXG4GY"
14253+ },
14254+ "signatures": {
14255+ "@alice_656:hs1": {
14256+ "ed25519:ALICEDEVICE656": "5tOCHd2WtaY8jWMh8tNNeK1ziIDGpeIT2co7HFeTwpOd161M5OwGeVxr7M8d2KERkI1jWVBltyXkVhl/oANHDg"
14257+ }
14258+ },
14259+ "user_id": "@alice_656:hs1",
14260+ "unsigned": {}
14261+ }
14262+ },
14263+ "@alice_668:hs1": {
14264+ "ALICEDEVICE668": {
14265+ "algorithms": [
14266+ "m.olm.v1.curve25519-aes-sha2",
14267+ "m.megolm.v1.aes-sha2"
14268+ ],
14269+ "device_id": "ALICEDEVICE668",
14270+ "keys": {
14271+ "curve25519:ALICEDEVICE668": "HPcU5LW/KjSNQFfz5YaC8ChPZ0MGSUcn98iy6p+PUQI",
14272+ "ed25519:ALICEDEVICE668": "opLMi85bp0JPnvmxW20ez7vnRDZ/nuLh4n0FKsm6QGw"
14273+ },
14274+ "signatures": {
14275+ "@alice_668:hs1": {
14276+ "ed25519:ALICEDEVICE668": "2HG1l94v+rU5+1ZbZUzZZw6zuTwGcUiKAp8FCl2nN2WMOoXNoKwHiyF6mVfLpmhWP7J/uhW8MyJRC285AAz7AA"
14277+ }
14278+ },
14279+ "user_id": "@alice_668:hs1",
14280+ "unsigned": {}
14281+ }
14282+ },
14283+ "@alice_672:hs1": {
14284+ "ALICEDEVICE672": {
14285+ "algorithms": [
14286+ "m.olm.v1.curve25519-aes-sha2",
14287+ "m.megolm.v1.aes-sha2"
14288+ ],
14289+ "device_id": "ALICEDEVICE672",
14290+ "keys": {
14291+ "curve25519:ALICEDEVICE672": "XHJg0P9FQvykb5AjpSirNS8N+UoTY8R0Lmijh6cR6nM",
14292+ "ed25519:ALICEDEVICE672": "wfuEUvl19v07/XQHlf0RYyFaISFdAhl6sirmrRmH42A"
14293+ },
14294+ "signatures": {
14295+ "@alice_672:hs1": {
14296+ "ed25519:ALICEDEVICE672": "v8C+qTBduXqqx8e5mtlYFna0OXZLpmPX/H7o8PFJqo0kI1OeUawmOJ0LRznv3BuNN9Snlmb2ToONa1eLV3CIBw"
14297+ }
14298+ },
14299+ "user_id": "@alice_672:hs1",
14300+ "unsigned": {}
14301+ }
14302+ },
14303+ "@alice_675:hs1": {
14304+ "ALICEDEVICE675": {
14305+ "algorithms": [
14306+ "m.olm.v1.curve25519-aes-sha2",
14307+ "m.megolm.v1.aes-sha2"
14308+ ],
14309+ "device_id": "ALICEDEVICE675",
14310+ "keys": {
14311+ "curve25519:ALICEDEVICE675": "miuwTblGYZi55Dq3RXOM23VOnXPgboWXwpibapqFDhg",
14312+ "ed25519:ALICEDEVICE675": "XOG5e5SFR/+jr5DIVf/Cv3rVVclInjzfsunjo5EsMhc"
14313+ },
14314+ "signatures": {
14315+ "@alice_675:hs1": {
14316+ "ed25519:ALICEDEVICE675": "rx5sck57Nb8NFgSeywUIk+T7LIkNvKVWSiR5haqGp6mnptNvzmNLrS4jNOgUt7Rn43KaXiN8y2xNMS2aJmCaAQ"
14317+ }
14318+ },
14319+ "user_id": "@alice_675:hs1",
14320+ "unsigned": {}
14321+ }
14322+ },
14323+ "@alice_677:hs1": {
14324+ "ALICEDEVICE677": {
14325+ "algorithms": [
14326+ "m.olm.v1.curve25519-aes-sha2",
14327+ "m.megolm.v1.aes-sha2"
14328+ ],
14329+ "device_id": "ALICEDEVICE677",
14330+ "keys": {
14331+ "curve25519:ALICEDEVICE677": "WDqgIKfaqxxx+1NnZRVpe0f49nmb5R690+Et6xzmW0A",
14332+ "ed25519:ALICEDEVICE677": "2fvrSOitb8/C2w9P8JzxyNuV5f8oDKaikHUk5c1mvGU"
14333+ },
14334+ "signatures": {
14335+ "@alice_677:hs1": {
14336+ "ed25519:ALICEDEVICE677": "ZfC3sIgcprsFjPAKDTMZwoMoUVkSRO2pGCrcWrV9R7KZQQwSVFcWKOLQImJ0NkPE8GFySeZvvIw1I0mVR0QhBg"
14337+ }
14338+ },
14339+ "user_id": "@alice_677:hs1",
14340+ "unsigned": {}
14341+ }
14342+ },
14343+ "@alice_681:hs1": {
14344+ "ALICEDEVICE681": {
14345+ "algorithms": [
14346+ "m.olm.v1.curve25519-aes-sha2",
14347+ "m.megolm.v1.aes-sha2"
14348+ ],
14349+ "device_id": "ALICEDEVICE681",
14350+ "keys": {
14351+ "curve25519:ALICEDEVICE681": "l3LE6vJ5icTA1cT9iY90qX25AdwJUo06uWqd9UUwRj0",
14352+ "ed25519:ALICEDEVICE681": "fd7/XViwjodqcNVzL2mSMzVLc7CTIdQH47oGDhwgGTw"
14353+ },
14354+ "signatures": {
14355+ "@alice_681:hs1": {
14356+ "ed25519:ALICEDEVICE681": "heDvS9xnLsaPIqVLcdhrQ0DwlcLJJqXkFsYgQue3G7S0nohUXzMXFnCFrF/nXiV0530isIBiRDztLgNzMxlcCA"
14357+ }
14358+ },
14359+ "user_id": "@alice_681:hs1",
14360+ "unsigned": {}
14361+ }
14362+ },
14363+ "@alice_705:hs1": {
14364+ "ALICEDEVICE705": {
14365+ "algorithms": [
14366+ "m.olm.v1.curve25519-aes-sha2",
14367+ "m.megolm.v1.aes-sha2"
14368+ ],
14369+ "device_id": "ALICEDEVICE705",
14370+ "keys": {
14371+ "curve25519:ALICEDEVICE705": "N60LZ/wg7uVozIGjd4lgptwO2qSRqMlbR3JVdKTMuzI",
14372+ "ed25519:ALICEDEVICE705": "rAG5vXjriDUpvFAeF5sJ6By1JTgTUta7oeIUwVl1LSY"
14373+ },
14374+ "signatures": {
14375+ "@alice_705:hs1": {
14376+ "ed25519:ALICEDEVICE705": "VjWveIXZ8IRjPLmk6V23je1URGpKVyRuL6Z9SnxUAdhjOzFPsZx9U0HNPiD8AZv28AtpAWj80bUQIJgc5U54Aw"
14377+ }
14378+ },
14379+ "user_id": "@alice_705:hs1",
14380+ "unsigned": {}
14381+ }
14382+ },
14383+ "@alice_716:hs1": {
14384+ "ALICEDEVICE716": {
14385+ "algorithms": [
14386+ "m.olm.v1.curve25519-aes-sha2",
14387+ "m.megolm.v1.aes-sha2"
14388+ ],
14389+ "device_id": "ALICEDEVICE716",
14390+ "keys": {
14391+ "curve25519:ALICEDEVICE716": "zoQ7c3kc3AJFFSV+uIoGSbOYyRCEYZx/nMv+gSrWMVU",
14392+ "ed25519:ALICEDEVICE716": "kE0eJ5pH5K/vwEkqcie/QeKcLbqFe+4ehUeVwsobgJ8"
14393+ },
14394+ "signatures": {
14395+ "@alice_716:hs1": {
14396+ "ed25519:ALICEDEVICE716": "utaojCJeoMUMW9TDRpcL6+/zMP/T6+oPCZoi+H4Gx6m4xceMY8BOKaN1cBlYX+XihIopMZH/HqSjHfd3+LKZAg"
14397+ }
14398+ },
14399+ "user_id": "@alice_716:hs1",
14400+ "unsigned": {}
14401+ }
14402+ },
14403+ "@alice_721:hs1": {
14404+ "ALICEDEVICE721": {
14405+ "algorithms": [
14406+ "m.olm.v1.curve25519-aes-sha2",
14407+ "m.megolm.v1.aes-sha2"
14408+ ],
14409+ "device_id": "ALICEDEVICE721",
14410+ "keys": {
14411+ "curve25519:ALICEDEVICE721": "vi0c0esc7foXPeSrIziXqxikiYBlxrEz6s22ftrp1Fs",
14412+ "ed25519:ALICEDEVICE721": "XTNANq+OkP6RWtNAO2rg1QGoo0R0Pra2NE+//X/C20A"
14413+ },
14414+ "signatures": {
14415+ "@alice_721:hs1": {
14416+ "ed25519:ALICEDEVICE721": "SiFkeV8g/g3dOmIov3bj5bskO2wALtCHacGzRM9gg8e12LgSHl/xfqq/9uXUloG/jRdkrkxk4mHLm6UQ3H65CQ"
14417+ }
14418+ },
14419+ "user_id": "@alice_721:hs1",
14420+ "unsigned": {}
14421+ }
14422+ },
14423+ "@alice_725:hs1": {
14424+ "ALICEDEVICE725": {
14425+ "algorithms": [
14426+ "m.olm.v1.curve25519-aes-sha2",
14427+ "m.megolm.v1.aes-sha2"
14428+ ],
14429+ "device_id": "ALICEDEVICE725",
14430+ "keys": {
14431+ "curve25519:ALICEDEVICE725": "QoIVAJYcLnjNeFEK00camGQ0QfpWgy3gzPnPaagwJzk",
14432+ "ed25519:ALICEDEVICE725": "Sckbsp75LL7PnYj8sBjismICu5f2eNKPAIx/FFRXuG4"
14433+ },
14434+ "signatures": {
14435+ "@alice_725:hs1": {
14436+ "ed25519:ALICEDEVICE725": "beTnf4+ENg5uByN4lCNuS1fK/Xgl9J+ZFRGrELUB7lbzWYK9J+hH1f3DaP8pDzjadwbPD46ti5R3d+bRF+Y6Bw"
14437+ }
14438+ },
14439+ "user_id": "@alice_725:hs1",
14440+ "unsigned": {}
14441+ }
14442+ },
14443+ "@alice_728:hs1": {
14444+ "ALICEDEVICE728": {
14445+ "algorithms": [
14446+ "m.olm.v1.curve25519-aes-sha2",
14447+ "m.megolm.v1.aes-sha2"
14448+ ],
14449+ "device_id": "ALICEDEVICE728",
14450+ "keys": {
14451+ "curve25519:ALICEDEVICE728": "o66Vyqawa72IUZ5UrgB/64pHbyve3KwIdhQFdGqUHyc",
14452+ "ed25519:ALICEDEVICE728": "FA6hl8yt4qzi0RH/U6US5pJJzLLslSYWDZAIJG++354"
14453+ },
14454+ "signatures": {
14455+ "@alice_728:hs1": {
14456+ "ed25519:ALICEDEVICE728": "kcRITZSlVzzpzFSUcG8Fv1IVnYxN7v5aaRgk+u3WgnbowUR/T8OZFwwK98OvFKUlACwc6Uc/uur673YYMqXQCQ"
14457+ }
14458+ },
14459+ "user_id": "@alice_728:hs1",
14460+ "unsigned": {}
14461+ }
14462+ },
14463+ "@alice_72:hs1": {
14464+ "ALICEDEVICE72": {
14465+ "algorithms": [
14466+ "m.olm.v1.curve25519-aes-sha2",
14467+ "m.megolm.v1.aes-sha2"
14468+ ],
14469+ "device_id": "ALICEDEVICE72",
14470+ "keys": {
14471+ "curve25519:ALICEDEVICE72": "t4x4irBG4wxOrvzvrV9JMkbpNwZjXLlJlMiVg7QM2Qw",
14472+ "ed25519:ALICEDEVICE72": "1Gi3EPSjCwn3tnByuYz4xDhTD2JkLr1RBxyhflLsN+E"
14473+ },
14474+ "signatures": {
14475+ "@alice_72:hs1": {
14476+ "ed25519:ALICEDEVICE72": "TBqseynumnM6VztjkqImyyex0TS/EKPvAu6D6k+XWFF/wHF4i0pPTXPzG60G5m/xlhQUPHrW+3e8I2LYtaENDQ"
14477+ }
14478+ },
14479+ "user_id": "@alice_72:hs1",
14480+ "unsigned": {}
14481+ }
14482+ },
14483+ "@alice_730:hs1": {
14484+ "ALICEDEVICE730": {
14485+ "algorithms": [
14486+ "m.olm.v1.curve25519-aes-sha2",
14487+ "m.megolm.v1.aes-sha2"
14488+ ],
14489+ "device_id": "ALICEDEVICE730",
14490+ "keys": {
14491+ "curve25519:ALICEDEVICE730": "qOrsbACo6i/xjJB632SwNAV3i/U5obmNuA6ufSjUOHE",
14492+ "ed25519:ALICEDEVICE730": "FcyieQVsXrTy9R9lKkcFQUmOGnprPGBdfducZEvVbIA"
14493+ },
14494+ "signatures": {
14495+ "@alice_730:hs1": {
14496+ "ed25519:ALICEDEVICE730": "xLGUZd5e2EiAepLETXVsz2www5G5dh6kNGD+hl+orAxnILQcQHOvhfEz5piStHdpJct9BcjQ4GU0gao/sYQ6Cw"
14497+ }
14498+ },
14499+ "user_id": "@alice_730:hs1",
14500+ "unsigned": {}
14501+ }
14502+ },
14503+ "@alice_746:hs1": {
14504+ "ALICEDEVICE746": {
14505+ "algorithms": [
14506+ "m.olm.v1.curve25519-aes-sha2",
14507+ "m.megolm.v1.aes-sha2"
14508+ ],
14509+ "device_id": "ALICEDEVICE746",
14510+ "keys": {
14511+ "curve25519:ALICEDEVICE746": "fRslzYsk4g7bB4LU8puXKngF5og0pGHUgoVfj8kT8Rs",
14512+ "ed25519:ALICEDEVICE746": "erjgG8lF2sgbciy03J7RGI5P/o42ukva28kQanmN5G0"
14513+ },
14514+ "signatures": {
14515+ "@alice_746:hs1": {
14516+ "ed25519:ALICEDEVICE746": "33SL2t2Qe/bWUX8sAnN6Nw3Zs1Svi943k0dr2UocPxnNQzNagVosSBJsZfVFTo4hKYW90L/6E6kXGg3Y5r7GAg"
14517+ }
14518+ },
14519+ "user_id": "@alice_746:hs1",
14520+ "unsigned": {}
14521+ }
14522+ },
14523+ "@alice_766:hs1": {
14524+ "ALICEDEVICE766": {
14525+ "algorithms": [
14526+ "m.olm.v1.curve25519-aes-sha2",
14527+ "m.megolm.v1.aes-sha2"
14528+ ],
14529+ "device_id": "ALICEDEVICE766",
14530+ "keys": {
14531+ "curve25519:ALICEDEVICE766": "RFnBJMbr2x2NrjYbmpsErV6Bxe35AX8/QA2up7Cu3iI",
14532+ "ed25519:ALICEDEVICE766": "3hwXI8OZqTnHQtSfwl5sMhPsKvvADDrteMOzkMiy5ig"
14533+ },
14534+ "signatures": {
14535+ "@alice_766:hs1": {
14536+ "ed25519:ALICEDEVICE766": "XYOrLn+C1ItvZDr5+D+MGtVJPFo4NCeeiPcOF3y/pFRmpSzX1G9rO8dxHf6PTKUf5a3+DBfphGocHAipD7GtDA"
14537+ }
14538+ },
14539+ "user_id": "@alice_766:hs1",
14540+ "unsigned": {}
14541+ }
14542+ },
14543+ "@alice_768:hs1": {
14544+ "ALICEDEVICE768": {
14545+ "algorithms": [
14546+ "m.olm.v1.curve25519-aes-sha2",
14547+ "m.megolm.v1.aes-sha2"
14548+ ],
14549+ "device_id": "ALICEDEVICE768",
14550+ "keys": {
14551+ "curve25519:ALICEDEVICE768": "KGRp1Ru2J/7hDfgHockGHVoOb93G8YgR8mlhHrzi4FU",
14552+ "ed25519:ALICEDEVICE768": "2IQH6oBhD4UPfc6M0JOYhrSHVwNzX3IgcCpp/QQ7+As"
14553+ },
14554+ "signatures": {
14555+ "@alice_768:hs1": {
14556+ "ed25519:ALICEDEVICE768": "zl97cLW/BUsTZl9+wanTq+AtBeaxXzLTuD02QynSk4TWEftmDnYDE7sjqKgxjpVzbYz+a95oYF0wngsAEHt6CQ"
14557+ }
14558+ },
14559+ "user_id": "@alice_768:hs1",
14560+ "unsigned": {}
14561+ }
14562+ },
14563+ "@alice_776:hs1": {
14564+ "ALICEDEVICE776": {
14565+ "algorithms": [
14566+ "m.olm.v1.curve25519-aes-sha2",
14567+ "m.megolm.v1.aes-sha2"
14568+ ],
14569+ "device_id": "ALICEDEVICE776",
14570+ "keys": {
14571+ "curve25519:ALICEDEVICE776": "w0Yws4/+lyYB/6bTrsh9ydLTCCWDKRKB1vcFtOlWkTM",
14572+ "ed25519:ALICEDEVICE776": "dLqtCa6ACyRJ84qofiKEU/y6+BzEdU6irPPse0tTedc"
14573+ },
14574+ "signatures": {
14575+ "@alice_776:hs1": {
14576+ "ed25519:ALICEDEVICE776": "Pt9OvZNwLOBQEuWDJiWKlxo/PIeTo8+omtzeSN/vgOu/czNYV7Uoj4t7Cr6TWpDZmo6DGgQPfqYJuJBl7f7oDQ"
14577+ }
14578+ },
14579+ "user_id": "@alice_776:hs1",
14580+ "unsigned": {}
14581+ }
14582+ },
14583+ "@alice_782:hs1": {
14584+ "ALICEDEVICE782": {
14585+ "algorithms": [
14586+ "m.olm.v1.curve25519-aes-sha2",
14587+ "m.megolm.v1.aes-sha2"
14588+ ],
14589+ "device_id": "ALICEDEVICE782",
14590+ "keys": {
14591+ "curve25519:ALICEDEVICE782": "OjYZPdDXCJQQuOZHEOfrZd5HNqY67C2fY+1kX5s9b30",
14592+ "ed25519:ALICEDEVICE782": "YwTJ1yZhx+oyo45xs4i8j4B946Fr9NdwIbYNAeHmaJI"
14593+ },
14594+ "signatures": {
14595+ "@alice_782:hs1": {
14596+ "ed25519:ALICEDEVICE782": "KvMy2+iWxVZwZApEahqWvVPma+mw5BGxEYIjF1FKOfz37wy7L/TE1qmUZqVC0Hqssx71iJ5r0nsaGfDfPDc2Dg"
14597+ }
14598+ },
14599+ "user_id": "@alice_782:hs1",
14600+ "unsigned": {}
14601+ }
14602+ },
14603+ "@alice_784:hs1": {
14604+ "ALICEDEVICE784": {
14605+ "algorithms": [
14606+ "m.olm.v1.curve25519-aes-sha2",
14607+ "m.megolm.v1.aes-sha2"
14608+ ],
14609+ "device_id": "ALICEDEVICE784",
14610+ "keys": {
14611+ "curve25519:ALICEDEVICE784": "Vo+jnQRThMabUB9UtoFC7d7PzFmgL+pHbns9SkKRQBI",
14612+ "ed25519:ALICEDEVICE784": "CjzO9o+Q16lT/m8p8+ZXU8BG94k+kmQVyaR1nHwnhbI"
14613+ },
14614+ "signatures": {
14615+ "@alice_784:hs1": {
14616+ "ed25519:ALICEDEVICE784": "6Px5mBq9Wo1AC85ezld1u7FYVd/6p7H45IPXsG6Qmh0jvkXxyDQopE19W8pEda2gs2Ed7EBgM/JP+17gargECg"
14617+ }
14618+ },
14619+ "user_id": "@alice_784:hs1",
14620+ "unsigned": {}
14621+ }
14622+ },
14623+ "@alice_785:hs1": {
14624+ "ALICEDEVICE785": {
14625+ "algorithms": [
14626+ "m.olm.v1.curve25519-aes-sha2",
14627+ "m.megolm.v1.aes-sha2"
14628+ ],
14629+ "device_id": "ALICEDEVICE785",
14630+ "keys": {
14631+ "curve25519:ALICEDEVICE785": "slWQ+COytxhEaEC7gvRSmFnJ5wAdr1swJzX85T58zzA",
14632+ "ed25519:ALICEDEVICE785": "Pivz1bfObCyplDLqsLAt6DwrMHUJErbcWVnZBqtgzow"
14633+ },
14634+ "signatures": {
14635+ "@alice_785:hs1": {
14636+ "ed25519:ALICEDEVICE785": "PTcz4TZUCkUAFwXq/kPh2/4A3anoHaGxUc+bgVW3EoKO1Qi38i9TFNM8wLxL5Rgpw2lL6BWRjaxil2Rwt9F2BA"
14637+ }
14638+ },
14639+ "user_id": "@alice_785:hs1",
14640+ "unsigned": {}
14641+ }
14642+ },
14643+ "@alice_790:hs1": {
14644+ "ALICEDEVICE790": {
14645+ "algorithms": [
14646+ "m.olm.v1.curve25519-aes-sha2",
14647+ "m.megolm.v1.aes-sha2"
14648+ ],
14649+ "device_id": "ALICEDEVICE790",
14650+ "keys": {
14651+ "curve25519:ALICEDEVICE790": "iE+23Afo1/n3QwwkU9Z9zBDUrJTiIDviV+Ja0RmFW3I",
14652+ "ed25519:ALICEDEVICE790": "LIp7/vvptUynzL3qITI6NHQgrPsV4S+5kvwRYPe6MTg"
14653+ },
14654+ "signatures": {
14655+ "@alice_790:hs1": {
14656+ "ed25519:ALICEDEVICE790": "yYPyvsusrVM24dmwsNDI3bKMHuRkNOpPaByvDFjEvAXl5+nvtmn4w0GJnX5Bk3rWNe9EfJv8gae2qe+Q+rgHDw"
14657+ }
14658+ },
14659+ "user_id": "@alice_790:hs1",
14660+ "unsigned": {}
14661+ }
14662+ },
14663+ "@alice_795:hs1": {
14664+ "ALICEDEVICE795": {
14665+ "algorithms": [
14666+ "m.olm.v1.curve25519-aes-sha2",
14667+ "m.megolm.v1.aes-sha2"
14668+ ],
14669+ "device_id": "ALICEDEVICE795",
14670+ "keys": {
14671+ "curve25519:ALICEDEVICE795": "DdwfMX+V63jGECENC582yT96ze2LCbj2hsR5E2xIgGg",
14672+ "ed25519:ALICEDEVICE795": "nC/vjgACOvhu4PZS4fppneg5xE4aTfWo3OZXqxeFSR0"
14673+ },
14674+ "signatures": {
14675+ "@alice_795:hs1": {
14676+ "ed25519:ALICEDEVICE795": "ZuhFcfaL9GxTkemrERE8UAvnGPSms04w4qEU5QvghI4Fu1De3FB1Xo2MYg+kSRFg0ZQZLUIBy5UBTaRf+msdBg"
14677+ }
14678+ },
14679+ "user_id": "@alice_795:hs1",
14680+ "unsigned": {}
14681+ }
14682+ },
14683+ "@alice_796:hs1": {
14684+ "ALICEDEVICE796": {
14685+ "algorithms": [
14686+ "m.olm.v1.curve25519-aes-sha2",
14687+ "m.megolm.v1.aes-sha2"
14688+ ],
14689+ "device_id": "ALICEDEVICE796",
14690+ "keys": {
14691+ "curve25519:ALICEDEVICE796": "3crDD+GcUp7DVALKUW5KaUTdJBKahOgzS7t5ytX4YTw",
14692+ "ed25519:ALICEDEVICE796": "vRqhUEnKActL8RBXkcYBJA9VxSVMlypd4N6/lLP3DyY"
14693+ },
14694+ "signatures": {
14695+ "@alice_796:hs1": {
14696+ "ed25519:ALICEDEVICE796": "IgmfULvNSB24CFAeRMcm4ryxPKsYvrNdEuwTJiYlL+fWePVxniV48XvN9bOsdQn5bgkO4anigJA4egBFgc3SBA"
14697+ }
14698+ },
14699+ "user_id": "@alice_796:hs1",
14700+ "unsigned": {}
14701+ }
14702+ },
14703+ "@alice_813:hs1": {
14704+ "ALICEDEVICE813": {
14705+ "algorithms": [
14706+ "m.olm.v1.curve25519-aes-sha2",
14707+ "m.megolm.v1.aes-sha2"
14708+ ],
14709+ "device_id": "ALICEDEVICE813",
14710+ "keys": {
14711+ "curve25519:ALICEDEVICE813": "kvcW8iDCMGkdwlVgbvfSO5Nb91qSPItJ6eSWXS9GYzc",
14712+ "ed25519:ALICEDEVICE813": "s0+ThNKF0vD4DlHqQVnaP6DE8VE0taBFInDEvGUOmz8"
14713+ },
14714+ "signatures": {
14715+ "@alice_813:hs1": {
14716+ "ed25519:ALICEDEVICE813": "CMpLOiMN9A9GKmbojMEkLORX691tRYMMrO03exOdOjE7pMC+Uhv2Je6VjYyuWKO/DPeBnClSxheEnt5PxoeHBg"
14717+ }
14718+ },
14719+ "user_id": "@alice_813:hs1",
14720+ "unsigned": {}
14721+ }
14722+ },
14723+ "@alice_820:hs1": {
14724+ "ALICEDEVICE820": {
14725+ "algorithms": [
14726+ "m.olm.v1.curve25519-aes-sha2",
14727+ "m.megolm.v1.aes-sha2"
14728+ ],
14729+ "device_id": "ALICEDEVICE820",
14730+ "keys": {
14731+ "curve25519:ALICEDEVICE820": "xt35iGHhtWkhMfxOFSST2oDvqAX/mXCC0EQd5Z6yJQs",
14732+ "ed25519:ALICEDEVICE820": "ryMBWf4+UnwmDQdVMn47aOoSU38Nc+2oK3VovI7DWaw"
14733+ },
14734+ "signatures": {
14735+ "@alice_820:hs1": {
14736+ "ed25519:ALICEDEVICE820": "P6N96ml5tDroJH5BLoGvzg1RXW9htUL2gIWkxeMKjHqMRlofv5+sHk2kF5TgeKe8QJ2UntExHiWvq0ntbT7mCA"
14737+ }
14738+ },
14739+ "user_id": "@alice_820:hs1",
14740+ "unsigned": {}
14741+ }
14742+ },
14743+ "@alice_828:hs1": {
14744+ "ALICEDEVICE828": {
14745+ "algorithms": [
14746+ "m.olm.v1.curve25519-aes-sha2",
14747+ "m.megolm.v1.aes-sha2"
14748+ ],
14749+ "device_id": "ALICEDEVICE828",
14750+ "keys": {
14751+ "curve25519:ALICEDEVICE828": "f/BnLoRaWuVPG1QLMgLBseUa4Svsf4MPr0NxHkLGWww",
14752+ "ed25519:ALICEDEVICE828": "JOSc17A50aGWE3GqNMlvp3uLjQc04lm2v3rJNW2eGps"
14753+ },
14754+ "signatures": {
14755+ "@alice_828:hs1": {
14756+ "ed25519:ALICEDEVICE828": "BKQ94FJ+woJ1OYp6IMn2+bGr+Jxias3Kj/2foeKmpzSFpDX1ohBPNjasCwN95XzpSevToVdmbaNk5Blk8YTrBg"
14757+ }
14758+ },
14759+ "user_id": "@alice_828:hs1",
14760+ "unsigned": {}
14761+ }
14762+ },
14763+ "@alice_845:hs1": {
14764+ "ALICEDEVICE845": {
14765+ "algorithms": [
14766+ "m.olm.v1.curve25519-aes-sha2",
14767+ "m.megolm.v1.aes-sha2"
14768+ ],
14769+ "device_id": "ALICEDEVICE845",
14770+ "keys": {
14771+ "curve25519:ALICEDEVICE845": "d9qokMYMofZWhSuNK92PgB9MplVFdoYlaYQSHf3kLV8",
14772+ "ed25519:ALICEDEVICE845": "rXHREdLzvJO8wip/1wOucsVXVe76B3/6h2yBhiVrtIs"
14773+ },
14774+ "signatures": {
14775+ "@alice_845:hs1": {
14776+ "ed25519:ALICEDEVICE845": "qBhp5No9jOb9Ns99X6lc7zuAuFkImMEjZQILGTiwRAula/sSO8UjqenACx2i7NoRSZfafJI1RnQUvBb6WXGQDA"
14777+ }
14778+ },
14779+ "user_id": "@alice_845:hs1",
14780+ "unsigned": {}
14781+ }
14782+ },
14783+ "@alice_849:hs1": {
14784+ "ALICEDEVICE849": {
14785+ "algorithms": [
14786+ "m.olm.v1.curve25519-aes-sha2",
14787+ "m.megolm.v1.aes-sha2"
14788+ ],
14789+ "device_id": "ALICEDEVICE849",
14790+ "keys": {
14791+ "curve25519:ALICEDEVICE849": "lWUArr0L9Pjpg3Oai+DZakxw3tYiWQcQ4NQfU37AFWM",
14792+ "ed25519:ALICEDEVICE849": "GV+TiW0Pfvv5ebBdt9GkGgRRg2JCqcznBu62MZinCAw"
14793+ },
14794+ "signatures": {
14795+ "@alice_849:hs1": {
14796+ "ed25519:ALICEDEVICE849": "cdfliAYzh0xnXBIZDzGhNQCXlQW4oxneGFx9IQGuJ/NGyF1gZFl1GBOj0erKx4f3bpM5mxTfZEYm/Rx1Zb7kBg"
14797+ }
14798+ },
14799+ "user_id": "@alice_849:hs1",
14800+ "unsigned": {}
14801+ }
14802+ },
14803+ "@alice_851:hs1": {
14804+ "ALICEDEVICE851": {
14805+ "algorithms": [
14806+ "m.olm.v1.curve25519-aes-sha2",
14807+ "m.megolm.v1.aes-sha2"
14808+ ],
14809+ "device_id": "ALICEDEVICE851",
14810+ "keys": {
14811+ "curve25519:ALICEDEVICE851": "aaTlfhFtSHdhb/x3Zu8iGTtbSgR1vhtbBUJzCOQjv0M",
14812+ "ed25519:ALICEDEVICE851": "8wz4Sz/ngQFyOc9KQwks8XS2GeCVskqqxTgcdZFjDH8"
14813+ },
14814+ "signatures": {
14815+ "@alice_851:hs1": {
14816+ "ed25519:ALICEDEVICE851": "KiqllLL34KMr9ynD44NXnzuXhc+zFfcOKAsEEUBUwXOQc9znP5ITRAOxCM/FMLS29eWJ6PVKx1hN8sWFF0FZCw"
14817+ }
14818+ },
14819+ "user_id": "@alice_851:hs1",
14820+ "unsigned": {}
14821+ }
14822+ },
14823+ "@alice_85:hs1": {
14824+ "ALICEDEVICE85": {
14825+ "algorithms": [
14826+ "m.olm.v1.curve25519-aes-sha2",
14827+ "m.megolm.v1.aes-sha2"
14828+ ],
14829+ "device_id": "ALICEDEVICE85",
14830+ "keys": {
14831+ "curve25519:ALICEDEVICE85": "UlFoo65knvTodr1K640KkfHvJd85cj5g86cjdTbjw0w",
14832+ "ed25519:ALICEDEVICE85": "62BMSFj+lprsljxCbkOZhedvH7phi7+lhOA2cS39tn8"
14833+ },
14834+ "signatures": {
14835+ "@alice_85:hs1": {
14836+ "ed25519:ALICEDEVICE85": "a/LYxk0OQhItgujxDPR7oakuDfbO6sZyzgApnY+dKvnRnHJVALraINVZb8QUmi9tzLerzcAC02nJc4fiajsuBw"
14837+ }
14838+ },
14839+ "user_id": "@alice_85:hs1",
14840+ "unsigned": {}
14841+ }
14842+ },
14843+ "@alice_862:hs1": {
14844+ "ALICEDEVICE862": {
14845+ "algorithms": [
14846+ "m.olm.v1.curve25519-aes-sha2",
14847+ "m.megolm.v1.aes-sha2"
14848+ ],
14849+ "device_id": "ALICEDEVICE862",
14850+ "keys": {
14851+ "curve25519:ALICEDEVICE862": "oa7+Vwd0drOGrVhHTn9RNeIZrIH6rgdFQvyU43z8ahI",
14852+ "ed25519:ALICEDEVICE862": "kgJznh8qQnIkE0zaCqPeZpUa6Xygri/aLaH5XQCbALc"
14853+ },
14854+ "signatures": {
14855+ "@alice_862:hs1": {
14856+ "ed25519:ALICEDEVICE862": "wgd32dvk2pSjlj1jjgWSNcSAtEMObC2Q3vsOXwJcDNz/GnUkGEdCq9eZyys/ik3mN0F+IQf9X5DmN4jFUQQpAw"
14857+ }
14858+ },
14859+ "user_id": "@alice_862:hs1",
14860+ "unsigned": {}
14861+ }
14862+ },
14863+ "@alice_869:hs1": {
14864+ "ALICEDEVICE869": {
14865+ "algorithms": [
14866+ "m.olm.v1.curve25519-aes-sha2",
14867+ "m.megolm.v1.aes-sha2"
14868+ ],
14869+ "device_id": "ALICEDEVICE869",
14870+ "keys": {
14871+ "curve25519:ALICEDEVICE869": "x4ziFr4YRyKB4ugkEHcwh4Q/LNxySu6wrB1Vfflnzx4",
14872+ "ed25519:ALICEDEVICE869": "zot243WL46ktsCZjVUTC58oaxs/UhQBd5jSTyCPET/Q"
14873+ },
14874+ "signatures": {
14875+ "@alice_869:hs1": {
14876+ "ed25519:ALICEDEVICE869": "0wi9mZ37bYGJwj8EDmD5xVDOdbCjkD4lEQhvKY8v2IYYR1o+xNDcnx/W7Vu+PODShoRcziQvJoeyqH++gJSpDQ"
14877+ }
14878+ },
14879+ "user_id": "@alice_869:hs1",
14880+ "unsigned": {}
14881+ }
14882+ },
14883+ "@alice_876:hs1": {
14884+ "ALICEDEVICE876": {
14885+ "algorithms": [
14886+ "m.olm.v1.curve25519-aes-sha2",
14887+ "m.megolm.v1.aes-sha2"
14888+ ],
14889+ "device_id": "ALICEDEVICE876",
14890+ "keys": {
14891+ "curve25519:ALICEDEVICE876": "sXGlHg9Pr9yE8i9p2kEWMhE3W31CofRkXb7/V5MzZwQ",
14892+ "ed25519:ALICEDEVICE876": "gReOI1rJBH3Gqbybi5rjdH/1Sg8DkeAYdzRe2uis8fg"
14893+ },
14894+ "signatures": {
14895+ "@alice_876:hs1": {
14896+ "ed25519:ALICEDEVICE876": "fikA5SKg645JjoH2FO0YQGrfHn449F+Zi+1ncfGhNmJHysdcbFvIBHaRlBy9BYiT7ElJ8iIgLqU/ycLyZ5wlAg"
14897+ }
14898+ },
14899+ "user_id": "@alice_876:hs1",
14900+ "unsigned": {}
14901+ }
14902+ },
14903+ "@alice_878:hs1": {
14904+ "ALICEDEVICE878": {
14905+ "algorithms": [
14906+ "m.olm.v1.curve25519-aes-sha2",
14907+ "m.megolm.v1.aes-sha2"
14908+ ],
14909+ "device_id": "ALICEDEVICE878",
14910+ "keys": {
14911+ "curve25519:ALICEDEVICE878": "4Islt65/icvST4fObFNAgsmYQzlcGNRaASV7jUrnR08",
14912+ "ed25519:ALICEDEVICE878": "Mtj09W2N27vNu9HuKGiPl44gnbBXm2iHwA5fWvcyBYg"
14913+ },
14914+ "signatures": {
14915+ "@alice_878:hs1": {
14916+ "ed25519:ALICEDEVICE878": "I3Y64elSQjZdm9gYM8uwM6AYHBCM/Sx8CFgUD65vIDLNI7uo0Rp+FV3yOPatup3dl/PudcqBuPAqkuyQfRJnCw"
14917+ }
14918+ },
14919+ "user_id": "@alice_878:hs1",
14920+ "unsigned": {}
14921+ }
14922+ },
14923+ "@alice_880:hs1": {
14924+ "ALICEDEVICE880": {
14925+ "algorithms": [
14926+ "m.olm.v1.curve25519-aes-sha2",
14927+ "m.megolm.v1.aes-sha2"
14928+ ],
14929+ "device_id": "ALICEDEVICE880",
14930+ "keys": {
14931+ "curve25519:ALICEDEVICE880": "1R+InQDKBLmAxVDYsQoFypDBIf7ov3ZGHJSVAhNsDVs",
14932+ "ed25519:ALICEDEVICE880": "USdpdxkQVZUAA/1edqKfeg3XowyQ6bzkPmcws+sqA5A"
14933+ },
14934+ "signatures": {
14935+ "@alice_880:hs1": {
14936+ "ed25519:ALICEDEVICE880": "4a1TadxiC/NFSQptzL6yRGFhq0JdijlAgQ6K2sem3zpUZFfVndZu8lURzRXnNAoUv4ouHfzmcavA9MP+2/w3BA"
14937+ }
14938+ },
14939+ "user_id": "@alice_880:hs1",
14940+ "unsigned": {}
14941+ }
14942+ },
14943+ "@alice_882:hs1": {
14944+ "ALICEDEVICE882": {
14945+ "algorithms": [
14946+ "m.olm.v1.curve25519-aes-sha2",
14947+ "m.megolm.v1.aes-sha2"
14948+ ],
14949+ "device_id": "ALICEDEVICE882",
14950+ "keys": {
14951+ "curve25519:ALICEDEVICE882": "iVpuIJ0EJQeK3B0mawMKOuQocsG/DGQWwWsTTcw281Q",
14952+ "ed25519:ALICEDEVICE882": "7tJMegI1D/0WSNNMbk3qIU0mpZ3fUuclR/MzWQQg6Ns"
14953+ },
14954+ "signatures": {
14955+ "@alice_882:hs1": {
14956+ "ed25519:ALICEDEVICE882": "nQ9tArNVrKLqWGkYhQTAbtFeCcu4cLLYbYg1Q1VcQQZmqNHLv9a0WLyiGfTkKFomOlKK5VrbrQAGJh1OFPSgBg"
14957+ }
14958+ },
14959+ "user_id": "@alice_882:hs1",
14960+ "unsigned": {}
14961+ }
14962+ },
14963+ "@alice_890:hs1": {
14964+ "ALICEDEVICE890": {
14965+ "algorithms": [
14966+ "m.olm.v1.curve25519-aes-sha2",
14967+ "m.megolm.v1.aes-sha2"
14968+ ],
14969+ "device_id": "ALICEDEVICE890",
14970+ "keys": {
14971+ "curve25519:ALICEDEVICE890": "2/r1MELKDBfSLJSy152jldf3UBKlFT6QW6347XfY2F8",
14972+ "ed25519:ALICEDEVICE890": "NJ3wUUeAmijRz/0cN95Oc1FC4XYlQLyxnFKuYWlytxw"
14973+ },
14974+ "signatures": {
14975+ "@alice_890:hs1": {
14976+ "ed25519:ALICEDEVICE890": "5lMPZ/zqUKu+kiF0g1b0nIN665LWlYnk/o0Ig4ieiHoYIGQuxojtIa60objub4AAqfVZoviQqOpJSZDUBTZbCA"
14977+ }
14978+ },
14979+ "user_id": "@alice_890:hs1",
14980+ "unsigned": {}
14981+ }
14982+ },
14983+ "@alice_893:hs1": {
14984+ "ALICEDEVICE893": {
14985+ "algorithms": [
14986+ "m.olm.v1.curve25519-aes-sha2",
14987+ "m.megolm.v1.aes-sha2"
14988+ ],
14989+ "device_id": "ALICEDEVICE893",
14990+ "keys": {
14991+ "curve25519:ALICEDEVICE893": "8wWFLV0HxaBm+qf3Nj1d1d4HtiXVo43ZyE/Y2M/BaRc",
14992+ "ed25519:ALICEDEVICE893": "Qc881Pe6hykvLNtNhD4d6TCYetRnExSU49LPknBlvpE"
14993+ },
14994+ "signatures": {
14995+ "@alice_893:hs1": {
14996+ "ed25519:ALICEDEVICE893": "mCFPohy6KoXAgQGiHs8Io9rjwAIsyKusUEmbIoSCxJchsaYrMWtXtvEu2U3SaI/u858ZINaTY0N3flBDt3x2Aw"
14997+ }
14998+ },
14999+ "user_id": "@alice_893:hs1",
15000+ "unsigned": {}
15001+ }
15002+ },
15003+ "@alice_896:hs1": {
15004+ "ALICEDEVICE896": {
15005+ "algorithms": [
15006+ "m.olm.v1.curve25519-aes-sha2",
15007+ "m.megolm.v1.aes-sha2"
15008+ ],
15009+ "device_id": "ALICEDEVICE896",
15010+ "keys": {
15011+ "curve25519:ALICEDEVICE896": "OWImP0OnwIBmqJ+ZVgIDGOyKAYC5Xxk3DT6tcFn7x3Q",
15012+ "ed25519:ALICEDEVICE896": "HrZwASh49mbItrIB731y/Rq92DTTJIJiYQS0R25rEzc"
15013+ },
15014+ "signatures": {
15015+ "@alice_896:hs1": {
15016+ "ed25519:ALICEDEVICE896": "S0MJY4Fdg9qp7dUOkDmdNcoDYOH9nJzeVL7XKeRWV6EIujJIR2+DzMq2V16o1eALrdYG9YCNZK+3Gao2okZiCw"
15017+ }
15018+ },
15019+ "user_id": "@alice_896:hs1",
15020+ "unsigned": {}
15021+ }
15022+ },
15023+ "@alice_908:hs1": {
15024+ "ALICEDEVICE908": {
15025+ "algorithms": [
15026+ "m.olm.v1.curve25519-aes-sha2",
15027+ "m.megolm.v1.aes-sha2"
15028+ ],
15029+ "device_id": "ALICEDEVICE908",
15030+ "keys": {
15031+ "curve25519:ALICEDEVICE908": "2AmwCe3Tom+eNBm2U1M3HrnT3NRpcDGhRtuKVOIa0GY",
15032+ "ed25519:ALICEDEVICE908": "sPMgcSfsmLYreVxtmcty9Lw+wYkuQqCs8p0zscfIIEM"
15033+ },
15034+ "signatures": {
15035+ "@alice_908:hs1": {
15036+ "ed25519:ALICEDEVICE908": "aS6CT3gnILL/nyXsUIlXXbRFLPbyBe2WUtELGdpSAA90NCh5VdKylX4ZMMnQOufkO6Yk/W69AUqscN7sG9pTAA"
15037+ }
15038+ },
15039+ "user_id": "@alice_908:hs1",
15040+ "unsigned": {}
15041+ }
15042+ },
15043+ "@alice_916:hs1": {
15044+ "ALICEDEVICE916": {
15045+ "algorithms": [
15046+ "m.olm.v1.curve25519-aes-sha2",
15047+ "m.megolm.v1.aes-sha2"
15048+ ],
15049+ "device_id": "ALICEDEVICE916",
15050+ "keys": {
15051+ "curve25519:ALICEDEVICE916": "K7aJnh+e2K0fSj9g1Hpk3X81dhTKpJd0OM7ev8pXsg8",
15052+ "ed25519:ALICEDEVICE916": "7egBgqeCiYmX+ty/lTKl6KWZWOVpS7BO/9hY0fsbl9Q"
15053+ },
15054+ "signatures": {
15055+ "@alice_916:hs1": {
15056+ "ed25519:ALICEDEVICE916": "G3X2OJ0y4fBEGgN7ojPS8myfJxqP0UGye4SsJAFI1dgR1RVwVKTD0mn4TYZzMa3LqMlzJYTYR8Tk2xR3uImkDw"
15057+ }
15058+ },
15059+ "user_id": "@alice_916:hs1",
15060+ "unsigned": {}
15061+ }
15062+ },
15063+ "@alice_941:hs1": {
15064+ "ALICEDEVICE941": {
15065+ "algorithms": [
15066+ "m.olm.v1.curve25519-aes-sha2",
15067+ "m.megolm.v1.aes-sha2"
15068+ ],
15069+ "device_id": "ALICEDEVICE941",
15070+ "keys": {
15071+ "curve25519:ALICEDEVICE941": "BptZZNW3lo8cNlAYVF2tQuSYePat9dNDSXRi+ho6vkc",
15072+ "ed25519:ALICEDEVICE941": "DWNICXjXb+Vwf9c2d6V1cnZna5vkZHE3WkUzaiP5qgg"
15073+ },
15074+ "signatures": {
15075+ "@alice_941:hs1": {
15076+ "ed25519:ALICEDEVICE941": "rpwxwirws6UwOkpjoWaLy6tvbnrFq4dHYxKuJdAaXCr+FOb+yjTU2Rh649068fmsdZC1q6AQFFvJe6HeT2uODA"
15077+ }
15078+ },
15079+ "user_id": "@alice_941:hs1",
15080+ "unsigned": {}
15081+ }
15082+ },
15083+ "@alice_945:hs1": {
15084+ "ALICEDEVICE945": {
15085+ "algorithms": [
15086+ "m.olm.v1.curve25519-aes-sha2",
15087+ "m.megolm.v1.aes-sha2"
15088+ ],
15089+ "device_id": "ALICEDEVICE945",
15090+ "keys": {
15091+ "curve25519:ALICEDEVICE945": "/TGSAe7FBq9zFB3Uy5j+Oj2u/BnLPDVuQl02Pn6okXc",
15092+ "ed25519:ALICEDEVICE945": "O0NjKbC6K0iHvYvvz3SEppsHzbpVeY+9K1gozZHEpK8"
15093+ },
15094+ "signatures": {
15095+ "@alice_945:hs1": {
15096+ "ed25519:ALICEDEVICE945": "y+/Ww0/XBKKSACao0yoY4RL8dbgRbVyz94EQfeeAXjjJ3CcYZXVJea21VXHg/FADOWeYpBvB3lkIoVMQYPdKDg"
15097+ }
15098+ },
15099+ "user_id": "@alice_945:hs1",
15100+ "unsigned": {}
15101+ }
15102+ },
15103+ "@alice_963:hs1": {
15104+ "ALICEDEVICE963": {
15105+ "algorithms": [
15106+ "m.olm.v1.curve25519-aes-sha2",
15107+ "m.megolm.v1.aes-sha2"
15108+ ],
15109+ "device_id": "ALICEDEVICE963",
15110+ "keys": {
15111+ "curve25519:ALICEDEVICE963": "92eAdafu6humlgySUClsdnmEsaZr9NX/W5jPTWFiang",
15112+ "ed25519:ALICEDEVICE963": "kdW0eQHmSqqCO2JCYzTv5SMv+PoTSNzVT7CumA7+NEs"
15113+ },
15114+ "signatures": {
15115+ "@alice_963:hs1": {
15116+ "ed25519:ALICEDEVICE963": "YlpEv1rmOyBLrF/BrHKvNjI6qfXgGGsTZ0AWxKAwZVxnI3c2vIosouuW8TexhzPm+LBwYCcxYLDejipf3m0UCg"
15117+ }
15118+ },
15119+ "user_id": "@alice_963:hs1",
15120+ "unsigned": {}
15121+ }
15122+ },
15123+ "@alice_964:hs1": {
15124+ "ALICEDEVICE964": {
15125+ "algorithms": [
15126+ "m.olm.v1.curve25519-aes-sha2",
15127+ "m.megolm.v1.aes-sha2"
15128+ ],
15129+ "device_id": "ALICEDEVICE964",
15130+ "keys": {
15131+ "curve25519:ALICEDEVICE964": "W/5VxPQbOow0e3kxtmm7/ORz8UO8mky2xl9fd8JKwX0",
15132+ "ed25519:ALICEDEVICE964": "hbAU9nccaRGj0NfhrmVUhOflWbQSx9Nw/INQOP47SyY"
15133+ },
15134+ "signatures": {
15135+ "@alice_964:hs1": {
15136+ "ed25519:ALICEDEVICE964": "9KP6i4l9SdJ0mxMusjmfABEYk8Jb2mqVlXJdozzUN0ew+VZeENCXrQD/ysDVSJm6/8tRa3ctBrxxB77y2BnxBw"
15137+ }
15138+ },
15139+ "user_id": "@alice_964:hs1",
15140+ "unsigned": {}
15141+ }
15142+ },
15143+ "@alice_965:hs1": {
15144+ "ALICEDEVICE965": {
15145+ "algorithms": [
15146+ "m.olm.v1.curve25519-aes-sha2",
15147+ "m.megolm.v1.aes-sha2"
15148+ ],
15149+ "device_id": "ALICEDEVICE965",
15150+ "keys": {
15151+ "curve25519:ALICEDEVICE965": "Gwmp2xg7ls9gTaTS7rUpIhyjYJ++xDMdWsG23SSUW14",
15152+ "ed25519:ALICEDEVICE965": "ljZlRu+d4E84FPHKSINLaBSssln3FeNFtwlZOsZb6i4"
15153+ },
15154+ "signatures": {
15155+ "@alice_965:hs1": {
15156+ "ed25519:ALICEDEVICE965": "hSs42wZbg7mwIHQUezg0FpaU9SxLgtGiigQ3tPpQe37dj38Nv6yJeBVPL4PgJudi7XhNPyjIhC4NOLmqhBguBg"
15157+ }
15158+ },
15159+ "user_id": "@alice_965:hs1",
15160+ "unsigned": {}
15161+ }
15162+ },
15163+ "@alice_969:hs1": {
15164+ "ALICEDEVICE969": {
15165+ "algorithms": [
15166+ "m.olm.v1.curve25519-aes-sha2",
15167+ "m.megolm.v1.aes-sha2"
15168+ ],
15169+ "device_id": "ALICEDEVICE969",
15170+ "keys": {
15171+ "curve25519:ALICEDEVICE969": "uPZdlCpk+Q8krFzMyBY11KywRbTraw0MeMAtlHvUBAU",
15172+ "ed25519:ALICEDEVICE969": "YZFx98VYAAQmGgwcW84vmYuvJ9zyznOLmJPI/804igc"
15173+ },
15174+ "signatures": {
15175+ "@alice_969:hs1": {
15176+ "ed25519:ALICEDEVICE969": "HghtkJ29ml+qZnUKA8Zv8c0kYFQChCyyOtjP6j06zTypwyY0QdVXDRmteoRrSRF0qjo+11VOI+r35fdSUxzUCA"
15177+ }
15178+ },
15179+ "user_id": "@alice_969:hs1",
15180+ "unsigned": {}
15181+ }
15182+ },
15183+ "@alice_970:hs1": {
15184+ "ALICEDEVICE970": {
15185+ "algorithms": [
15186+ "m.olm.v1.curve25519-aes-sha2",
15187+ "m.megolm.v1.aes-sha2"
15188+ ],
15189+ "device_id": "ALICEDEVICE970",
15190+ "keys": {
15191+ "curve25519:ALICEDEVICE970": "PosPyXEhAohi1HgCZN3j6/9jzYrkZhpvifF5SeB4x00",
15192+ "ed25519:ALICEDEVICE970": "E7s3sJo0If2hFdDI3MyMEp6LFDSHFMgUaz6ash28pkc"
15193+ },
15194+ "signatures": {
15195+ "@alice_970:hs1": {
15196+ "ed25519:ALICEDEVICE970": "3draLhccMxtwzZEFuTfrPg+zhpz73UhN4Kc4rufmGpkJwrXr9k3vTvHXBn17DtJDhJEx1R9JqeUp8cPe1GBOAA"
15197+ }
15198+ },
15199+ "user_id": "@alice_970:hs1",
15200+ "unsigned": {}
15201+ }
15202+ },
15203+ "@alice_979:hs1": {
15204+ "ALICEDEVICE979": {
15205+ "algorithms": [
15206+ "m.olm.v1.curve25519-aes-sha2",
15207+ "m.megolm.v1.aes-sha2"
15208+ ],
15209+ "device_id": "ALICEDEVICE979",
15210+ "keys": {
15211+ "curve25519:ALICEDEVICE979": "D0S9AE/CcFlc5UCqmHJdoO+GvNGBuYLr5cb+Gpm2LEs",
15212+ "ed25519:ALICEDEVICE979": "i+2A+KdpnrUz8AC8eD7/+26AvFacNh+NZRLtOmUMSyw"
15213+ },
15214+ "signatures": {
15215+ "@alice_979:hs1": {
15216+ "ed25519:ALICEDEVICE979": "HYoJxLYXRelCzr19JteBMkKbKmj65ZwkCUkQk1OovAG3jOVu+Nhb56zFAJRcJ4UMkvhhS7WtvrdRmFITCme3BQ"
15217+ }
15218+ },
15219+ "user_id": "@alice_979:hs1",
15220+ "unsigned": {}
15221+ }
15222+ },
15223+ "@alice_97:hs1": {
15224+ "ALICEDEVICE97": {
15225+ "algorithms": [
15226+ "m.olm.v1.curve25519-aes-sha2",
15227+ "m.megolm.v1.aes-sha2"
15228+ ],
15229+ "device_id": "ALICEDEVICE97",
15230+ "keys": {
15231+ "curve25519:ALICEDEVICE97": "FrXFoLJWvkXo6Sc3YhW6s6/IS9v7cURNocInwaetGFg",
15232+ "ed25519:ALICEDEVICE97": "p9rAqGCYNoc3jo/7NxPQ95J6jgpVcGVuoZMVAPXspgw"
15233+ },
15234+ "signatures": {
15235+ "@alice_97:hs1": {
15236+ "ed25519:ALICEDEVICE97": "W0uNjZUjHLn0wDbQwX8Smaagy2W3KnazqmQGReBnZc7FZQzeeGHUNmipxU3ENU2+bUuGw/o/hv2l2hHcKjL9Aw"
15237+ }
15238+ },
15239+ "user_id": "@alice_97:hs1",
15240+ "unsigned": {}
15241+ }
15242+ },
15243+ "@alice_983:hs1": {
15244+ "ALICEDEVICE983": {
15245+ "algorithms": [
15246+ "m.olm.v1.curve25519-aes-sha2",
15247+ "m.megolm.v1.aes-sha2"
15248+ ],
15249+ "device_id": "ALICEDEVICE983",
15250+ "keys": {
15251+ "curve25519:ALICEDEVICE983": "yjHAb3qg1S1QwvfCafMhFWDH2bf/Ommjsfo74a9jklo",
15252+ "ed25519:ALICEDEVICE983": "3JKlLhFEPWACGdx26vLJWa4U1kIp265sIrdecaznSM0"
15253+ },
15254+ "signatures": {
15255+ "@alice_983:hs1": {
15256+ "ed25519:ALICEDEVICE983": "UOxRZtH1+aXhvVUqFFaruvrogzL+lKoUn+5wPvYT0Sky7BxR2p3RodOmj7UdB6+zQcXOGxikjWbeFRpUB2GaDA"
15257+ }
15258+ },
15259+ "user_id": "@alice_983:hs1",
15260+ "unsigned": {}
15261+ }
15262+ },
15263+ "@alice_987:hs1": {
15264+ "ALICEDEVICE987": {
15265+ "algorithms": [
15266+ "m.olm.v1.curve25519-aes-sha2",
15267+ "m.megolm.v1.aes-sha2"
15268+ ],
15269+ "device_id": "ALICEDEVICE987",
15270+ "keys": {
15271+ "curve25519:ALICEDEVICE987": "ye78Fy7jV1lzhXAAgwlATPBsZ6pwLMKlqGvUXcsRzQY",
15272+ "ed25519:ALICEDEVICE987": "T3/qFjJOLFsWkxh3bh07mz4QpMtq+vS5l25Vsc6rhR0"
15273+ },
15274+ "signatures": {
15275+ "@alice_987:hs1": {
15276+ "ed25519:ALICEDEVICE987": "uz3xQgr0TNB46f7LmfXiZUMH/+oCjRhMZPcIQwMmRahew0kRxDYORsBsL3qVBOkRWTzkOtHBbxxfyOxDWmAvDw"
15277+ }
15278+ },
15279+ "user_id": "@alice_987:hs1",
15280+ "unsigned": {}
15281+ }
15282+ },
15283+ "@alice_98:hs1": {
15284+ "ALICEDEVICE98": {
15285+ "algorithms": [
15286+ "m.olm.v1.curve25519-aes-sha2",
15287+ "m.megolm.v1.aes-sha2"
15288+ ],
15289+ "device_id": "ALICEDEVICE98",
15290+ "keys": {
15291+ "curve25519:ALICEDEVICE98": "I2XwdVdSBaVHgfiHzqixkGDKcHOq9vZuGTu3BmDpOlU",
15292+ "ed25519:ALICEDEVICE98": "Q0l485Y34yRmcOKYZ5Rbgyiz+l5WHvu85rw3cfl0kOA"
15293+ },
15294+ "signatures": {
15295+ "@alice_98:hs1": {
15296+ "ed25519:ALICEDEVICE98": "gCsUMPqlrmAiA0FVnMjesXaEDU3cKS1xB+vMaZ0Nu3IiMLTz9kLH9KwMe60xZtcxuxgQSthN28CxEZFhDVn7Aw"
15297+ }
15298+ },
15299+ "user_id": "@alice_98:hs1",
15300+ "unsigned": {}
15301+ }
15302+ },
15303+ "@alice_1005:hs1": {
15304+ "ALICEDEVICE1005": {
15305+ "algorithms": [
15306+ "m.olm.v1.curve25519-aes-sha2",
15307+ "m.megolm.v1.aes-sha2"
15308+ ],
15309+ "device_id": "ALICEDEVICE1005",
15310+ "keys": {
15311+ "curve25519:ALICEDEVICE1005": "1uta1s2OfqmV9oqPXJjXJMyYEwOiJeYAFumiSXYXIwI",
15312+ "ed25519:ALICEDEVICE1005": "Xa+m36Hwn7GRxyW08Z28AQOBOCMOCDWh76U7BzH4ifg"
15313+ },
15314+ "signatures": {
15315+ "@alice_1005:hs1": {
15316+ "ed25519:ALICEDEVICE1005": "LLT56QNmb+Knlzp3s47eMdlGXklXLXjwIaQjiomraPAPUDF4KRgg+6Dn5SYo4lyWF97jL8cnxdykYcE1NMY7Bg"
15317+ }
15318+ },
15319+ "user_id": "@alice_1005:hs1",
15320+ "unsigned": {}
15321+ }
15322+ },
15323+ "@alice_101:hs1": {
15324+ "ALICEDEVICE101": {
15325+ "algorithms": [
15326+ "m.olm.v1.curve25519-aes-sha2",
15327+ "m.megolm.v1.aes-sha2"
15328+ ],
15329+ "device_id": "ALICEDEVICE101",
15330+ "keys": {
15331+ "curve25519:ALICEDEVICE101": "PMoZdlcgiLtzg53OKh/D6vMCyPxpjC/Yy+Pka0JBNh4",
15332+ "ed25519:ALICEDEVICE101": "LAxiw/YBZv9M8c76zWcztvwUjyux55BJiI3CNNSyp24"
15333+ },
15334+ "signatures": {
15335+ "@alice_101:hs1": {
15336+ "ed25519:ALICEDEVICE101": "xc7JQaFujStTs0qIhgZSQy4rXggms8ZysiJWy1kpQXWPIUl9njKoZ2MAR2lQ9UeFwGQa2iHsVqwGcn+uHIpRAg"
15337+ }
15338+ },
15339+ "user_id": "@alice_101:hs1",
15340+ "unsigned": {}
15341+ }
15342+ },
15343+ "@alice_1022:hs1": {
15344+ "ALICEDEVICE1022": {
15345+ "algorithms": [
15346+ "m.olm.v1.curve25519-aes-sha2",
15347+ "m.megolm.v1.aes-sha2"
15348+ ],
15349+ "device_id": "ALICEDEVICE1022",
15350+ "keys": {
15351+ "curve25519:ALICEDEVICE1022": "nonNWRvBlPeMK8cgOWvg8KTxbJezWaiHUekzib7trG4",
15352+ "ed25519:ALICEDEVICE1022": "qUs+y5ishHZLiis5Q6NJKhyzbK+jlaH1+hL4MQCMMQ4"
15353+ },
15354+ "signatures": {
15355+ "@alice_1022:hs1": {
15356+ "ed25519:ALICEDEVICE1022": "tuv9mN/C9Pm7kC5v3bCXZeGAKoiAulXljz8AqJg2yQP6YVzL5RbLt+eWBAvHxxqhKuE69StnWXWHgsoektJuCw"
15357+ }
15358+ },
15359+ "user_id": "@alice_1022:hs1",
15360+ "unsigned": {}
15361+ }
15362+ },
15363+ "@alice_1023:hs1": {
15364+ "ALICEDEVICE1023": {
15365+ "algorithms": [
15366+ "m.olm.v1.curve25519-aes-sha2",
15367+ "m.megolm.v1.aes-sha2"
15368+ ],
15369+ "device_id": "ALICEDEVICE1023",
15370+ "keys": {
15371+ "curve25519:ALICEDEVICE1023": "cZwiYG/zf9houAVO5wxyxRt/l7wjtp3D0qIqD8I2sDk",
15372+ "ed25519:ALICEDEVICE1023": "SZ8hCZACHGg8MOe3/HTae1luSciXzEZpk7hgW7DYmvQ"
15373+ },
15374+ "signatures": {
15375+ "@alice_1023:hs1": {
15376+ "ed25519:ALICEDEVICE1023": "T3zLBvMYkJajcCaVSdeGwENGusrO5CnNmzLWO/OcL/Z4jJkgnSQXYUJUAnxqsJfEt7QA67WcUcR3aNGWqIdeCw"
15377+ }
15378+ },
15379+ "user_id": "@alice_1023:hs1",
15380+ "unsigned": {}
15381+ }
15382+ },
15383+ "@alice_1025:hs1": {
15384+ "ALICEDEVICE1025": {
15385+ "algorithms": [
15386+ "m.olm.v1.curve25519-aes-sha2",
15387+ "m.megolm.v1.aes-sha2"
15388+ ],
15389+ "device_id": "ALICEDEVICE1025",
15390+ "keys": {
15391+ "curve25519:ALICEDEVICE1025": "0DeqQbcWn9JQGJwqSOcEDEn+i8Iz+cckllOoU8jRySE",
15392+ "ed25519:ALICEDEVICE1025": "KGNoCK6rQKbelmD8HGYJAYM9gljihqMEL3pPi80O/AU"
15393+ },
15394+ "signatures": {
15395+ "@alice_1025:hs1": {
15396+ "ed25519:ALICEDEVICE1025": "5E93WB0l/aIRyAZTExFOLbNypXH3DGr0sdtw/xjQYxpoOjDcogUfmlvxW6mNwGQ0lbDnDNV+2LD5eo7GgoKqDA"
15397+ }
15398+ },
15399+ "user_id": "@alice_1025:hs1",
15400+ "unsigned": {}
15401+ }
15402+ },
15403+ "@alice_1044:hs1": {
15404+ "ALICEDEVICE1044": {
15405+ "algorithms": [
15406+ "m.olm.v1.curve25519-aes-sha2",
15407+ "m.megolm.v1.aes-sha2"
15408+ ],
15409+ "device_id": "ALICEDEVICE1044",
15410+ "keys": {
15411+ "curve25519:ALICEDEVICE1044": "FK5QsuokxT4RcsCRcRNH/R/m2npI6jGqHMLi66X5VU8",
15412+ "ed25519:ALICEDEVICE1044": "MXTA5Ph+jPVKWPBxDCYRpmG9HqubaQipjpPkBo2YHOE"
15413+ },
15414+ "signatures": {
15415+ "@alice_1044:hs1": {
15416+ "ed25519:ALICEDEVICE1044": "3UUqT/rm0emNr/uc5654kr3Po3fNsESjfCgTClIjWxs5j4Kldkq3JJb07ErEm+CRXeEk6sbv9q6mqvV0RXXdAQ"
15417+ }
15418+ },
15419+ "user_id": "@alice_1044:hs1",
15420+ "unsigned": {}
15421+ }
15422+ },
15423+ "@alice_1072:hs1": {
15424+ "ALICEDEVICE1072": {
15425+ "algorithms": [
15426+ "m.olm.v1.curve25519-aes-sha2",
15427+ "m.megolm.v1.aes-sha2"
15428+ ],
15429+ "device_id": "ALICEDEVICE1072",
15430+ "keys": {
15431+ "curve25519:ALICEDEVICE1072": "nqzEjydlCMDw4PVBHeyVKKWBXKeU+Lcw/qtoNJlsPnY",
15432+ "ed25519:ALICEDEVICE1072": "aa3DkNYTNfR4iHRnOgumeXYVQiCeGd57yoaPuLi4ISM"
15433+ },
15434+ "signatures": {
15435+ "@alice_1072:hs1": {
15436+ "ed25519:ALICEDEVICE1072": "Xhq/PeeHPUNkFF1uFnEBBIOVKRzQEuGLLcsHCrf4dJpIDtbdpLgvllaFtF9Mfa2DTpYZNDiJuXZ04GLsoPtbBQ"
15437+ }
15438+ },
15439+ "user_id": "@alice_1072:hs1",
15440+ "unsigned": {}
15441+ }
15442+ },
15443+ "@alice_1102:hs1": {
15444+ "ALICEDEVICE1102": {
15445+ "algorithms": [
15446+ "m.olm.v1.curve25519-aes-sha2",
15447+ "m.megolm.v1.aes-sha2"
15448+ ],
15449+ "device_id": "ALICEDEVICE1102",
15450+ "keys": {
15451+ "curve25519:ALICEDEVICE1102": "xsx4B5aFFipLmKEwvwgmBCOZBzS7y6uBZwxQSgZPzX0",
15452+ "ed25519:ALICEDEVICE1102": "APB7hrFd69qaEBcbWhpICAhzhRYeKxkFPRjvccLwKrc"
15453+ },
15454+ "signatures": {
15455+ "@alice_1102:hs1": {
15456+ "ed25519:ALICEDEVICE1102": "XWXVNSxDqd4L+4rr2UezPgmW11CPgon+Db/Pf9ClGqIzmMDGqToYWYbHLMNvEe5lBVgji+x1mtzoUENLjE75Ag"
15457+ }
15458+ },
15459+ "user_id": "@alice_1102:hs1",
15460+ "unsigned": {}
15461+ }
15462+ },
15463+ "@alice_1122:hs1": {
15464+ "ALICEDEVICE1122": {
15465+ "algorithms": [
15466+ "m.olm.v1.curve25519-aes-sha2",
15467+ "m.megolm.v1.aes-sha2"
15468+ ],
15469+ "device_id": "ALICEDEVICE1122",
15470+ "keys": {
15471+ "curve25519:ALICEDEVICE1122": "G/QDNJJnVWKCy2IcPMRrGhEUIQWzrCSUwvFWSvngngU",
15472+ "ed25519:ALICEDEVICE1122": "6r/xELHI34OgH7upxOwOqelewZW5OZ5t12bc5xtAql4"
15473+ },
15474+ "signatures": {
15475+ "@alice_1122:hs1": {
15476+ "ed25519:ALICEDEVICE1122": "ysm+/q+miYq5Sfz6k1/7W4chLmzlviJ9jAzvEdIuv2A0j5+E746M4ebrmEnbGUvUbqQVuSUNhsjhjk0U4Q62Ag"
15477+ }
15478+ },
15479+ "user_id": "@alice_1122:hs1",
15480+ "unsigned": {}
15481+ }
15482+ },
15483+ "@alice_1135:hs1": {
15484+ "ALICEDEVICE1135": {
15485+ "algorithms": [
15486+ "m.olm.v1.curve25519-aes-sha2",
15487+ "m.megolm.v1.aes-sha2"
15488+ ],
15489+ "device_id": "ALICEDEVICE1135",
15490+ "keys": {
15491+ "curve25519:ALICEDEVICE1135": "dnenkmjqSPjrekzSMdM3YFPva0hFJL1vAghSzO4vZ24",
15492+ "ed25519:ALICEDEVICE1135": "Vtaw72QJpDWgw3aOT88LnRTywSj6y4aYsDUuILBWLa0"
15493+ },
15494+ "signatures": {
15495+ "@alice_1135:hs1": {
15496+ "ed25519:ALICEDEVICE1135": "Jb3R7dxd6JhIsnsI4DOczrF4DmnYwMDmGDzjy5yU06i/TKb8SqkgmAK5GpNlZItGWpEn62LaexSZWH0ZIZsVBA"
15497+ }
15498+ },
15499+ "user_id": "@alice_1135:hs1",
15500+ "unsigned": {}
15501+ }
15502+ },
15503+ "@alice_1148:hs1": {
15504+ "ALICEDEVICE1148": {
15505+ "algorithms": [
15506+ "m.olm.v1.curve25519-aes-sha2",
15507+ "m.megolm.v1.aes-sha2"
15508+ ],
15509+ "device_id": "ALICEDEVICE1148",
15510+ "keys": {
15511+ "curve25519:ALICEDEVICE1148": "f1QrKEuoHJjKYiyamNdBi7cASZUW1cdnUOzD6N365kE",
15512+ "ed25519:ALICEDEVICE1148": "q5FKqfZX31BF+Ww081Q5y36Z1qZui+kkPwllQZ1fS+8"
15513+ },
15514+ "signatures": {
15515+ "@alice_1148:hs1": {
15516+ "ed25519:ALICEDEVICE1148": "p4MgmbovTtbnldiYwVeWOngYlR83ldHb/40/jjryIK8lUCHYrvkKwEiYBRkZUSE4ZYL/q9SM4gSXzkEj3en6Ag"
15517+ }
15518+ },
15519+ "user_id": "@alice_1148:hs1",
15520+ "unsigned": {}
15521+ }
15522+ },
15523+ "@alice_1155:hs1": {
15524+ "ALICEDEVICE1155": {
15525+ "algorithms": [
15526+ "m.olm.v1.curve25519-aes-sha2",
15527+ "m.megolm.v1.aes-sha2"
15528+ ],
15529+ "device_id": "ALICEDEVICE1155",
15530+ "keys": {
15531+ "curve25519:ALICEDEVICE1155": "50W2RLO06kiQ/7OF35IkVUWpWU5fOZdJLbxtFS0mQB0",
15532+ "ed25519:ALICEDEVICE1155": "arHzk4ilnNcHzZzn3HLazAjHz1DjVvcI//sPAIirBKM"
15533+ },
15534+ "signatures": {
15535+ "@alice_1155:hs1": {
15536+ "ed25519:ALICEDEVICE1155": "zCFVA7ht+Te5p0xhiGzY7skZu6bYN5RTqJWANROXflBpr6hrXxLM+1PViSi2aDosIGxj8Pnlsbf6SJWhbp9iAg"
15537+ }
15538+ },
15539+ "user_id": "@alice_1155:hs1",
15540+ "unsigned": {}
15541+ }
15542+ },
15543+ "@alice_1165:hs1": {
15544+ "ALICEDEVICE1165": {
15545+ "algorithms": [
15546+ "m.olm.v1.curve25519-aes-sha2",
15547+ "m.megolm.v1.aes-sha2"
15548+ ],
15549+ "device_id": "ALICEDEVICE1165",
15550+ "keys": {
15551+ "curve25519:ALICEDEVICE1165": "5/PKlkbHfVi4BKPW/DsdSRvAkToMYbaH5jit+STFhF0",
15552+ "ed25519:ALICEDEVICE1165": "sCKY0+cLHr0E5+JAGynUQBblZSftuowvVKtlu/OIMUQ"
15553+ },
15554+ "signatures": {
15555+ "@alice_1165:hs1": {
15556+ "ed25519:ALICEDEVICE1165": "mfUCbC62sFARsks7a8xE2boTe65AMUAowlrzCMHmfliNgD8cQeciFKjri5dG8rovWZalvptsDpTtlNkupQBrBA"
15557+ }
15558+ },
15559+ "user_id": "@alice_1165:hs1",
15560+ "unsigned": {}
15561+ }
15562+ },
15563+ "@alice_1174:hs1": {
15564+ "ALICEDEVICE1174": {
15565+ "algorithms": [
15566+ "m.olm.v1.curve25519-aes-sha2",
15567+ "m.megolm.v1.aes-sha2"
15568+ ],
15569+ "device_id": "ALICEDEVICE1174",
15570+ "keys": {
15571+ "curve25519:ALICEDEVICE1174": "dEKiGcTpioYd0CYae8EPk4c0GFWW3LeFfJF5EwVZG34",
15572+ "ed25519:ALICEDEVICE1174": "DrCi8O7+kx7Tlkp/ofAaZuLHXOl/3q20OLcsUMSgmEw"
15573+ },
15574+ "signatures": {
15575+ "@alice_1174:hs1": {
15576+ "ed25519:ALICEDEVICE1174": "mb+P4lDay4nOO1HM33uf1L2MsAxR9nQ3cNCTqYn0EnGLg9cdWXp9MYc0Jiua+8EuFaZPvvy6zqgT/SQjD7fgCw"
15577+ }
15578+ },
15579+ "user_id": "@alice_1174:hs1",
15580+ "unsigned": {}
15581+ }
15582+ },
15583+ "@alice_1191:hs1": {
15584+ "ALICEDEVICE1191": {
15585+ "algorithms": [
15586+ "m.olm.v1.curve25519-aes-sha2",
15587+ "m.megolm.v1.aes-sha2"
15588+ ],
15589+ "device_id": "ALICEDEVICE1191",
15590+ "keys": {
15591+ "curve25519:ALICEDEVICE1191": "i3PW2JS9mNMYDmsmWLQGOqL1PmYd0h6QRIO9Jnj4qBc",
15592+ "ed25519:ALICEDEVICE1191": "wURVUp7OiEQfrE+brnXDpcyaXQhfzoO5luLFzQGgfto"
15593+ },
15594+ "signatures": {
15595+ "@alice_1191:hs1": {
15596+ "ed25519:ALICEDEVICE1191": "uMCIkIAnGGplDf36pwZ432Ge8gxAZIkNeytm2I7CYtIFhdCUtHZlB6buvvL+6BxhqHUunGpAH/QF7bPC+C0BDg"
15597+ }
15598+ },
15599+ "user_id": "@alice_1191:hs1",
15600+ "unsigned": {}
15601+ }
15602+ },
15603+ "@alice_1198:hs1": {
15604+ "ALICEDEVICE1198": {
15605+ "algorithms": [
15606+ "m.olm.v1.curve25519-aes-sha2",
15607+ "m.megolm.v1.aes-sha2"
15608+ ],
15609+ "device_id": "ALICEDEVICE1198",
15610+ "keys": {
15611+ "curve25519:ALICEDEVICE1198": "ngw/ozfP60cSnEVq9tJdUtbr0dC0f07GrhHt6efXAgE",
15612+ "ed25519:ALICEDEVICE1198": "6lWbgEwZZbSoE6ru0ENHr/YP3HnGXbW5l6v2Yu9GiB0"
15613+ },
15614+ "signatures": {
15615+ "@alice_1198:hs1": {
15616+ "ed25519:ALICEDEVICE1198": "MoiIA5Ucls10gU9jEVy8YlAeFbmUNGYtZ47hP3lC+mMvLL49CixsKoyZVq+2J/fssNjejBycYJPcSQ/Mm/XKDw"
15617+ }
15618+ },
15619+ "user_id": "@alice_1198:hs1",
15620+ "unsigned": {}
15621+ }
15622+ },
15623+ "@alice_1200:hs1": {
15624+ "ALICEDEVICE1200": {
15625+ "algorithms": [
15626+ "m.olm.v1.curve25519-aes-sha2",
15627+ "m.megolm.v1.aes-sha2"
15628+ ],
15629+ "device_id": "ALICEDEVICE1200",
15630+ "keys": {
15631+ "curve25519:ALICEDEVICE1200": "1jqDyEBg+7s9j7wRQgLcceuANZJcaylISVY+D6j6Oms",
15632+ "ed25519:ALICEDEVICE1200": "lWa5BHy+3x1Qx4sJ7PRt27tmoq+c71WWgJI4NaSZ0Q4"
15633+ },
15634+ "signatures": {
15635+ "@alice_1200:hs1": {
15636+ "ed25519:ALICEDEVICE1200": "4oFLRPxgKWfUr8uH56j8seG6H5yGCkj3b+7yMbt45S55ixUe73+ZhKs+Q92h6lV9slZcuBV/bazJ3BvKbEyACw"
15637+ }
15638+ },
15639+ "user_id": "@alice_1200:hs1",
15640+ "unsigned": {}
15641+ }
15642+ },
15643+ "@alice_1204:hs1": {
15644+ "ALICEDEVICE1204": {
15645+ "algorithms": [
15646+ "m.olm.v1.curve25519-aes-sha2",
15647+ "m.megolm.v1.aes-sha2"
15648+ ],
15649+ "device_id": "ALICEDEVICE1204",
15650+ "keys": {
15651+ "curve25519:ALICEDEVICE1204": "TiAtfQnJl7wM2kh6m35CmXibEcem9Holtm30vrJqnF4",
15652+ "ed25519:ALICEDEVICE1204": "AQl6FsNC+uGyvUZZDbSNMbXTl5AaBROFvI1dtNTf9HE"
15653+ },
15654+ "signatures": {
15655+ "@alice_1204:hs1": {
15656+ "ed25519:ALICEDEVICE1204": "PrvQuSQ8NqEHOsN1qy3Kb7DrGOGHFbGzgaFGyk6DvGsljOMOi4sfhpt6KMsczZBoMFz2kJbTJbz+BGn0J2XLAA"
15657+ }
15658+ },
15659+ "user_id": "@alice_1204:hs1",
15660+ "unsigned": {}
15661+ }
15662+ },
15663+ "@alice_1206:hs1": {
15664+ "ALICEDEVICE1206": {
15665+ "algorithms": [
15666+ "m.olm.v1.curve25519-aes-sha2",
15667+ "m.megolm.v1.aes-sha2"
15668+ ],
15669+ "device_id": "ALICEDEVICE1206",
15670+ "keys": {
15671+ "curve25519:ALICEDEVICE1206": "fN7G4QNePkeXAUgpcXuKgO3KEPjalUEO/2GKfkTV/Us",
15672+ "ed25519:ALICEDEVICE1206": "aY20Yf+fuD9mhk1qb+7mXwUXZbbGqGStssEKlJD5SK0"
15673+ },
15674+ "signatures": {
15675+ "@alice_1206:hs1": {
15676+ "ed25519:ALICEDEVICE1206": "JxOd0o/aOxIyrqx/wC5chu91c+0vChz0QqFMv4JxnmDaMTYhjn3OFBXFp++Po3mw9S6tcy1fGDv1ipK2DtyZDg"
15677+ }
15678+ },
15679+ "user_id": "@alice_1206:hs1",
15680+ "unsigned": {}
15681+ }
15682+ },
15683+ "@alice_1219:hs1": {
15684+ "ALICEDEVICE1219": {
15685+ "algorithms": [
15686+ "m.olm.v1.curve25519-aes-sha2",
15687+ "m.megolm.v1.aes-sha2"
15688+ ],
15689+ "device_id": "ALICEDEVICE1219",
15690+ "keys": {
15691+ "curve25519:ALICEDEVICE1219": "RP5D7bCNjsIvg1X1QHWmjG42LDL5+ef4PAnSjaAMMGQ",
15692+ "ed25519:ALICEDEVICE1219": "wXbJvSItBgWkWSHPySkWfLQo5hOi+fRJJsdWX5H0qzs"
15693+ },
15694+ "signatures": {
15695+ "@alice_1219:hs1": {
15696+ "ed25519:ALICEDEVICE1219": "8cCXA4BSXqOzIiqGYzupw8epVHsRX/99OwWZt9jO/HRbrcJG22ywpNStYBoyA1rDIgqnzaBP0Y0v6T42+GxGAQ"
15697+ }
15698+ },
15699+ "user_id": "@alice_1219:hs1",
15700+ "unsigned": {}
15701+ }
15702+ },
15703+ "@alice_1221:hs1": {
15704+ "ALICEDEVICE1221": {
15705+ "algorithms": [
15706+ "m.olm.v1.curve25519-aes-sha2",
15707+ "m.megolm.v1.aes-sha2"
15708+ ],
15709+ "device_id": "ALICEDEVICE1221",
15710+ "keys": {
15711+ "curve25519:ALICEDEVICE1221": "b4+TyWPnPUfXrtro4/ZElyvwNNS1NlJksmxZAJVzKFg",
15712+ "ed25519:ALICEDEVICE1221": "7s1Cc0Nrb5Eugf1Wt3t92d9mRusaF05B6uUEeJ0gvdI"
15713+ },
15714+ "signatures": {
15715+ "@alice_1221:hs1": {
15716+ "ed25519:ALICEDEVICE1221": "Av0+WW5eGWMocl6Mpmadkd+V76qRg0ot/9+49vdiHW6q2AhSEoHFmZWoKt+rtyJdnSsOkJ9TJxBdTt8YgsbCCg"
15717+ }
15718+ },
15719+ "user_id": "@alice_1221:hs1",
15720+ "unsigned": {}
15721+ }
15722+ },
15723+ "@alice_1226:hs1": {
15724+ "ALICEDEVICE1226": {
15725+ "algorithms": [
15726+ "m.olm.v1.curve25519-aes-sha2",
15727+ "m.megolm.v1.aes-sha2"
15728+ ],
15729+ "device_id": "ALICEDEVICE1226",
15730+ "keys": {
15731+ "curve25519:ALICEDEVICE1226": "I3Dfi4OYonU6/qn6Mvhu8lYrlCXgazYeZZJGlz/Nj3U",
15732+ "ed25519:ALICEDEVICE1226": "j8qiy9YDfWSw8yOY/Cmv7GduZdMtYiv/vfuXEsw1vJQ"
15733+ },
15734+ "signatures": {
15735+ "@alice_1226:hs1": {
15736+ "ed25519:ALICEDEVICE1226": "LZIoQnVHEBNpwSuSa3+SzHgAYdcDlzYMChrQfqkkrYnHBI3v9hldjlcgVHaYCRcY/AVZiW457WoCfNUVoTPdBQ"
15737+ }
15738+ },
15739+ "user_id": "@alice_1226:hs1",
15740+ "unsigned": {}
15741+ }
15742+ },
15743+ "@alice_1233:hs1": {
15744+ "ALICEDEVICE1233": {
15745+ "algorithms": [
15746+ "m.olm.v1.curve25519-aes-sha2",
15747+ "m.megolm.v1.aes-sha2"
15748+ ],
15749+ "device_id": "ALICEDEVICE1233",
15750+ "keys": {
15751+ "curve25519:ALICEDEVICE1233": "ZSBdQ+haA58bhiSyoWMOsxHEEjA6BjuiqxxgDOatJlQ",
15752+ "ed25519:ALICEDEVICE1233": "HC/4hg0Ze4wLOH/9vSYLs+Ct3pmK0m8avBof2y6L0mw"
15753+ },
15754+ "signatures": {
15755+ "@alice_1233:hs1": {
15756+ "ed25519:ALICEDEVICE1233": "tm7kTTiJnVgn+l5tNV9SfyvYoSQyCfwA2asOVyv48dN/WE9xqk/NHyL/hCUNLz6ceK4RwjZnp6lvSEQdof4oDQ"
15757+ }
15758+ },
15759+ "user_id": "@alice_1233:hs1",
15760+ "unsigned": {}
15761+ }
15762+ },
15763+ "@alice_1239:hs1": {
15764+ "ALICEDEVICE1239": {
15765+ "algorithms": [
15766+ "m.olm.v1.curve25519-aes-sha2",
15767+ "m.megolm.v1.aes-sha2"
15768+ ],
15769+ "device_id": "ALICEDEVICE1239",
15770+ "keys": {
15771+ "curve25519:ALICEDEVICE1239": "9662N9lBeLYedfkBxvQaWTMzFjU+FyZO2/8aZy6LZmc",
15772+ "ed25519:ALICEDEVICE1239": "Hl3ie7jZt6LN6G5MYxTxkQ+B2hj1N4rmM2gCr4/S1uw"
15773+ },
15774+ "signatures": {
15775+ "@alice_1239:hs1": {
15776+ "ed25519:ALICEDEVICE1239": "2fxWxHoARIPLVP2CIq9X3FvWjWG8XsWIuk30TsXsWLAT3swafw6iVeeOjkEzNIaE6U0vy+wWs7K0u2zy6FKsCg"
15777+ }
15778+ },
15779+ "user_id": "@alice_1239:hs1",
15780+ "unsigned": {}
15781+ }
15782+ },
15783+ "@alice_123:hs1": {
15784+ "ALICEDEVICE123": {
15785+ "algorithms": [
15786+ "m.olm.v1.curve25519-aes-sha2",
15787+ "m.megolm.v1.aes-sha2"
15788+ ],
15789+ "device_id": "ALICEDEVICE123",
15790+ "keys": {
15791+ "curve25519:ALICEDEVICE123": "c410As92emKdm5Bsub83OQJEQxSTHCB0tvbFcMWYzB0",
15792+ "ed25519:ALICEDEVICE123": "W5orWRJnatXs5wpvPjv3udgb6siKqFPhFR9Bt8QebUw"
15793+ },
15794+ "signatures": {
15795+ "@alice_123:hs1": {
15796+ "ed25519:ALICEDEVICE123": "yna9Oi25k4+E3MiiU3Vi452TXHY+mIR3cfLoWb/YRy9RJQamq/lPqY6lAlF+APnVq1K1gbO6Ydt6ucKtag6MCg"
15797+ }
15798+ },
15799+ "user_id": "@alice_123:hs1",
15800+ "unsigned": {}
15801+ }
15802+ },
15803+ "@alice_1241:hs1": {
15804+ "ALICEDEVICE1241": {
15805+ "algorithms": [
15806+ "m.olm.v1.curve25519-aes-sha2",
15807+ "m.megolm.v1.aes-sha2"
15808+ ],
15809+ "device_id": "ALICEDEVICE1241",
15810+ "keys": {
15811+ "curve25519:ALICEDEVICE1241": "QLAb1xiTdfKnHun64v0/s6XyWsn55wX2mSig70BaHzU",
15812+ "ed25519:ALICEDEVICE1241": "olzpH61PvmHiIdbRLeBNYr/y7TrbwSKj6PzH+7BrBUo"
15813+ },
15814+ "signatures": {
15815+ "@alice_1241:hs1": {
15816+ "ed25519:ALICEDEVICE1241": "lR0ZQ2GVv+C3xX9O9qdZgtrgm9AHitRwchCvdyX4wlD6GrJoYDGuaLwAUUEoO+t0MoLFzS9Lv04Vmv8mUvZjCg"
15817+ }
15818+ },
15819+ "user_id": "@alice_1241:hs1",
15820+ "unsigned": {}
15821+ }
15822+ },
15823+ "@alice_1245:hs1": {
15824+ "ALICEDEVICE1245": {
15825+ "algorithms": [
15826+ "m.olm.v1.curve25519-aes-sha2",
15827+ "m.megolm.v1.aes-sha2"
15828+ ],
15829+ "device_id": "ALICEDEVICE1245",
15830+ "keys": {
15831+ "curve25519:ALICEDEVICE1245": "ju4SgNyMZbpSc/I9TmgjbVDp9XvWGg19vB4Vp6EknDE",
15832+ "ed25519:ALICEDEVICE1245": "cRHdCADETgASf8qAKuF5XsaZgvmBCW3HDE8a2n7bmnk"
15833+ },
15834+ "signatures": {
15835+ "@alice_1245:hs1": {
15836+ "ed25519:ALICEDEVICE1245": "rx6+y16ZAJAUm52Y2lUIEdba7xaf1YpMUmFXzDb/NPpkt3T6WlOJjcY2NHNPAHYD+SDsRPF95o4T41OmrXwBAg"
15837+ }
15838+ },
15839+ "user_id": "@alice_1245:hs1",
15840+ "unsigned": {}
15841+ }
15842+ },
15843+ "@alice_1252:hs1": {
15844+ "ALICEDEVICE1252": {
15845+ "algorithms": [
15846+ "m.olm.v1.curve25519-aes-sha2",
15847+ "m.megolm.v1.aes-sha2"
15848+ ],
15849+ "device_id": "ALICEDEVICE1252",
15850+ "keys": {
15851+ "curve25519:ALICEDEVICE1252": "JZ6gqkkNYkSrjjF8bBn9WWJvVDoEZ1gg7wEPFl53GBw",
15852+ "ed25519:ALICEDEVICE1252": "bfRP128PaTwrCeCdnmQRy1L4sMycwZGfBK/z6y7KVB0"
15853+ },
15854+ "signatures": {
15855+ "@alice_1252:hs1": {
15856+ "ed25519:ALICEDEVICE1252": "thICflj3vBo5XxoI4b7qDHU4qpCvWvSzgJuK17BT+/Vr5bonFt/R8zBVh767I0endj6fHVaouEtetUiSKKEKCg"
15857+ }
15858+ },
15859+ "user_id": "@alice_1252:hs1",
15860+ "unsigned": {}
15861+ }
15862+ },
15863+ "@alice_1269:hs1": {
15864+ "ALICEDEVICE1269": {
15865+ "algorithms": [
15866+ "m.olm.v1.curve25519-aes-sha2",
15867+ "m.megolm.v1.aes-sha2"
15868+ ],
15869+ "device_id": "ALICEDEVICE1269",
15870+ "keys": {
15871+ "curve25519:ALICEDEVICE1269": "OVjYrR16pRCRkI7NobOA7T1pxw2X2pwcXHbOOn58unE",
15872+ "ed25519:ALICEDEVICE1269": "RmAE6qJu4leNKuKvktCG36+bUgh8qsoPkyYOHVWGAs4"
15873+ },
15874+ "signatures": {
15875+ "@alice_1269:hs1": {
15876+ "ed25519:ALICEDEVICE1269": "QixDcRZXgbmOvGrxUfOVIk0ORDzEIv18JBqIYWaJGz8pZXgkxPfcDLjzI8/QneUNxfpoG6Rmm7UrTqrg4uGaBw"
15877+ }
15878+ },
15879+ "user_id": "@alice_1269:hs1",
15880+ "unsigned": {}
15881+ }
15882+ },
15883+ "@alice_1270:hs1": {
15884+ "ALICEDEVICE1270": {
15885+ "algorithms": [
15886+ "m.olm.v1.curve25519-aes-sha2",
15887+ "m.megolm.v1.aes-sha2"
15888+ ],
15889+ "device_id": "ALICEDEVICE1270",
15890+ "keys": {
15891+ "curve25519:ALICEDEVICE1270": "GQIm62kmfZa2ETBy0va36Y6FLlawjMwwPi9V/QpaMDw",
15892+ "ed25519:ALICEDEVICE1270": "tf9lgzVA48B9U1iOtjGq3x31lk0fw657ZE8Sm3/B6yQ"
15893+ },
15894+ "signatures": {
15895+ "@alice_1270:hs1": {
15896+ "ed25519:ALICEDEVICE1270": "tJ7q+nBXvqr4oBWo7+Ed1PhfpqsyDPU6C1yuJw4pKGzncqD3WpuvGZqJJLCrRye2caYWTvgiLpmW44u2eQruCg"
15897+ }
15898+ },
15899+ "user_id": "@alice_1270:hs1",
15900+ "unsigned": {}
15901+ }
15902+ },
15903+ "@alice_1277:hs1": {
15904+ "ALICEDEVICE1277": {
15905+ "algorithms": [
15906+ "m.olm.v1.curve25519-aes-sha2",
15907+ "m.megolm.v1.aes-sha2"
15908+ ],
15909+ "device_id": "ALICEDEVICE1277",
15910+ "keys": {
15911+ "curve25519:ALICEDEVICE1277": "eS4Ok4obmPG0LkaRMIu9Lepvy0uIihcDaqcSAayqIj0",
15912+ "ed25519:ALICEDEVICE1277": "sIjP9/SpBhFWK5dTlaFHIV5E1KQ/CS3WFSz6OvAOJio"
15913+ },
15914+ "signatures": {
15915+ "@alice_1277:hs1": {
15916+ "ed25519:ALICEDEVICE1277": "zQvvNLvww7U+bS3Til9WgC/w984M5A65I4JDVhKtoWcd/GTh2PviXbkzfUUE0So++uK31UiIkUZ7eGhdbCRmBA"
15917+ }
15918+ },
15919+ "user_id": "@alice_1277:hs1",
15920+ "unsigned": {}
15921+ }
15922+ },
15923+ "@alice_1278:hs1": {
15924+ "ALICEDEVICE1278": {
15925+ "algorithms": [
15926+ "m.olm.v1.curve25519-aes-sha2",
15927+ "m.megolm.v1.aes-sha2"
15928+ ],
15929+ "device_id": "ALICEDEVICE1278",
15930+ "keys": {
15931+ "curve25519:ALICEDEVICE1278": "KjSZCqWrafv4cvq+uyDQMPpGIu2P7WNtPttwpMu6Wnw",
15932+ "ed25519:ALICEDEVICE1278": "bSXJI+DRYlylKXZSDcsrz7Aa54q9yWWrMRUka62CetA"
15933+ },
15934+ "signatures": {
15935+ "@alice_1278:hs1": {
15936+ "ed25519:ALICEDEVICE1278": "SpWjC6W3fSWsyYCpYTaEa5APdSYG73dgDEUZkRPZYDsZzYrRYJ8kiKob+j1i46iuy3h79aI1/d8wE6EF7Yl4DQ"
15937+ }
15938+ },
15939+ "user_id": "@alice_1278:hs1",
15940+ "unsigned": {}
15941+ }
15942+ },
15943+ "@alice_128:hs1": {
15944+ "ALICEDEVICE128": {
15945+ "algorithms": [
15946+ "m.olm.v1.curve25519-aes-sha2",
15947+ "m.megolm.v1.aes-sha2"
15948+ ],
15949+ "device_id": "ALICEDEVICE128",
15950+ "keys": {
15951+ "curve25519:ALICEDEVICE128": "ANNv7FkwOnd8h0YSmoD9elfytCNGYIqoNLyWk/qfbDw",
15952+ "ed25519:ALICEDEVICE128": "+RrHziJAFaHwF22pQCJmafBAhSxY99qYsPrZJBCTFT4"
15953+ },
15954+ "signatures": {
15955+ "@alice_128:hs1": {
15956+ "ed25519:ALICEDEVICE128": "i/Cqe8VLEiFxC7OFeI1JbqeKfgzLeNfmEk5ZsDDKkTDm3rj+Iocv+9Sv3fE0IJ56Buqldw1Vjqc8XHsjXRGYBw"
15957+ }
15958+ },
15959+ "user_id": "@alice_128:hs1",
15960+ "unsigned": {}
15961+ }
15962+ },
15963+ "@alice_1293:hs1": {
15964+ "ALICEDEVICE1293": {
15965+ "algorithms": [
15966+ "m.olm.v1.curve25519-aes-sha2",
15967+ "m.megolm.v1.aes-sha2"
15968+ ],
15969+ "device_id": "ALICEDEVICE1293",
15970+ "keys": {
15971+ "curve25519:ALICEDEVICE1293": "Ik639Bv/ERMaQp6iT1Zf2nRR7xT58ucQrnnbhwNtmSs",
15972+ "ed25519:ALICEDEVICE1293": "+6mQ2Kt9mQhxOrgiKAgkB87mwktRc+VGiLDE5UMWlow"
15973+ },
15974+ "signatures": {
15975+ "@alice_1293:hs1": {
15976+ "ed25519:ALICEDEVICE1293": "DgVJmGT0I5YbbLbKKbJutsndefVHz2bjiVD7zb6TQffejRPUtXmpcCESwVXLmd6qxHLK8h/EW7nKt0f5y5U7DQ"
15977+ }
15978+ },
15979+ "user_id": "@alice_1293:hs1",
15980+ "unsigned": {}
15981+ }
15982+ },
15983+ "@alice_1317:hs1": {
15984+ "ALICEDEVICE1317": {
15985+ "algorithms": [
15986+ "m.olm.v1.curve25519-aes-sha2",
15987+ "m.megolm.v1.aes-sha2"
15988+ ],
15989+ "device_id": "ALICEDEVICE1317",
15990+ "keys": {
15991+ "curve25519:ALICEDEVICE1317": "99tINBHviTeyMkc8fwqxScD2myz7sEVZgJ1g6CYvJXY",
15992+ "ed25519:ALICEDEVICE1317": "VCru7wx7ncCLPqnugypmPZhkvxmdU6YGgWPqhOR1A/4"
15993+ },
15994+ "signatures": {
15995+ "@alice_1317:hs1": {
15996+ "ed25519:ALICEDEVICE1317": "fjm3C51psDFUxEJsFQ+T75lqaCrNjd/RNUnBxU6PHEtZ6+BDax8Ff03aYjcvc7TtSmklqEAmg7rBsnnMadZjDg"
15997+ }
15998+ },
15999+ "user_id": "@alice_1317:hs1",
16000+ "unsigned": {}
16001+ }
16002+ },
16003+ "@alice_1323:hs1": {
16004+ "ALICEDEVICE1323": {
16005+ "algorithms": [
16006+ "m.olm.v1.curve25519-aes-sha2",
16007+ "m.megolm.v1.aes-sha2"
16008+ ],
16009+ "device_id": "ALICEDEVICE1323",
16010+ "keys": {
16011+ "curve25519:ALICEDEVICE1323": "Ku0B2lLFCM01t3W/erVxULxJByx9mSdUowCSYFw2ZHs",
16012+ "ed25519:ALICEDEVICE1323": "OlAEj9EORTAERXcxJiZfnypZS73R8gP4PP610dtEbuw"
16013+ },
16014+ "signatures": {
16015+ "@alice_1323:hs1": {
16016+ "ed25519:ALICEDEVICE1323": "kmTO3V6e8nIrs9HMaZ0tj3FwPm1U84TmlhtOXwlbkZ6kmUbZNB1gPOHsfoBCcrGY1X9p+0G5u0hL5V/qqqlZCw"
16017+ }
16018+ },
16019+ "user_id": "@alice_1323:hs1",
16020+ "unsigned": {}
16021+ }
16022+ },
16023+ "@alice_1324:hs1": {
16024+ "ALICEDEVICE1324": {
16025+ "algorithms": [
16026+ "m.olm.v1.curve25519-aes-sha2",
16027+ "m.megolm.v1.aes-sha2"
16028+ ],
16029+ "device_id": "ALICEDEVICE1324",
16030+ "keys": {
16031+ "curve25519:ALICEDEVICE1324": "2z/EMLuU2DaymBXS32jvkL0Xr8ieiGfaLTACxiKAREE",
16032+ "ed25519:ALICEDEVICE1324": "ypZ+J7P0f3tkKNwnhMCk82f4Wj+2Ff/fAo7eNAg6nro"
16033+ },
16034+ "signatures": {
16035+ "@alice_1324:hs1": {
16036+ "ed25519:ALICEDEVICE1324": "aiFsvKpGJ04PFdopbpife9zvtiL3IV0tWl5ekPGeRgUiVkNh5wEXe4t5TNRwi/aeG8ES3+xwFYuTqiIuz5/IDA"
16037+ }
16038+ },
16039+ "user_id": "@alice_1324:hs1",
16040+ "unsigned": {}
16041+ }
16042+ },
16043+ "@alice_1326:hs1": {
16044+ "ALICEDEVICE1326": {
16045+ "algorithms": [
16046+ "m.olm.v1.curve25519-aes-sha2",
16047+ "m.megolm.v1.aes-sha2"
16048+ ],
16049+ "device_id": "ALICEDEVICE1326",
16050+ "keys": {
16051+ "curve25519:ALICEDEVICE1326": "qKgNBPLb2+gIk88q/wlJZeWQfYxuXa3hoFjbbdNeoA0",
16052+ "ed25519:ALICEDEVICE1326": "swD6SpeJ3K9b3/t2e1Qhy/TWWTdfiEkTtlxoK7GP6uA"
16053+ },
16054+ "signatures": {
16055+ "@alice_1326:hs1": {
16056+ "ed25519:ALICEDEVICE1326": "e+lQV3mph6WJsVrPNUq8VU7FF+Wgb2Xc0f3ifnIXDoTnRyPKiaBw6AbwZfSJsAI8ETCSLowDii4xV7JWJ3eiBg"
16057+ }
16058+ },
16059+ "user_id": "@alice_1326:hs1",
16060+ "unsigned": {}
16061+ }
16062+ },
16063+ "@alice_1328:hs1": {
16064+ "ALICEDEVICE1328": {
16065+ "algorithms": [
16066+ "m.olm.v1.curve25519-aes-sha2",
16067+ "m.megolm.v1.aes-sha2"
16068+ ],
16069+ "device_id": "ALICEDEVICE1328",
16070+ "keys": {
16071+ "curve25519:ALICEDEVICE1328": "kdynyPJfChrbq07yhmU6ycmaDdKA8MSEZ+5aEWzuWBE",
16072+ "ed25519:ALICEDEVICE1328": "hZGtPuwYhhIMX8iqT1+CvMVER/oVpn8j4m5PW0poElU"
16073+ },
16074+ "signatures": {
16075+ "@alice_1328:hs1": {
16076+ "ed25519:ALICEDEVICE1328": "+BN7DvvJh6iTxlH4zUcQIDFXEbIWM/jx01sgudtKfFDW2wRnXaGXDZ54oRtO/fCJw8UmhgHeOeWziP8+go2fDg"
16077+ }
16078+ },
16079+ "user_id": "@alice_1328:hs1",
16080+ "unsigned": {}
16081+ }
16082+ },
16083+ "@alice_1337:hs1": {
16084+ "ALICEDEVICE1337": {
16085+ "algorithms": [
16086+ "m.olm.v1.curve25519-aes-sha2",
16087+ "m.megolm.v1.aes-sha2"
16088+ ],
16089+ "device_id": "ALICEDEVICE1337",
16090+ "keys": {
16091+ "curve25519:ALICEDEVICE1337": "IoamEv6O43xBmg8ppxEJvsGeY2EpUbhMLhTtP4cCuFo",
16092+ "ed25519:ALICEDEVICE1337": "6ktn8vyEgAGTUOoP95+tmm/BKB88kbqNq6hNYMavBcY"
16093+ },
16094+ "signatures": {
16095+ "@alice_1337:hs1": {
16096+ "ed25519:ALICEDEVICE1337": "8gXN7E0VFQ7sJSK74TeP4BXyiilFn9+vHZrYKlof28Q25nqnhbDaYgvALcWZglOTXxTg4yTR/nI1fsdaJnNYBQ"
16097+ }
16098+ },
16099+ "user_id": "@alice_1337:hs1",
16100+ "unsigned": {}
16101+ }
16102+ },
16103+ "@alice_1342:hs1": {
16104+ "ALICEDEVICE1342": {
16105+ "algorithms": [
16106+ "m.olm.v1.curve25519-aes-sha2",
16107+ "m.megolm.v1.aes-sha2"
16108+ ],
16109+ "device_id": "ALICEDEVICE1342",
16110+ "keys": {
16111+ "curve25519:ALICEDEVICE1342": "0QvHv1r4cT92QwSuhR2LfI/j4S23HTSgGuYDScnFdjE",
16112+ "ed25519:ALICEDEVICE1342": "Qob+rFw9UR9YJjL+m/I7FBbTRykgS3mjh6SivfD3S7E"
16113+ },
16114+ "signatures": {
16115+ "@alice_1342:hs1": {
16116+ "ed25519:ALICEDEVICE1342": "c4fmPtdWSWnQHAx/+YAuVoXhGcYdv3MstTX43EeFHAnsouvjxOaVuLroi5TgwX3dehGSMCvnhkiebCW6SvhpDw"
16117+ }
16118+ },
16119+ "user_id": "@alice_1342:hs1",
16120+ "unsigned": {}
16121+ }
16122+ },
16123+ "@alice_1346:hs1": {
16124+ "ALICEDEVICE1346": {
16125+ "algorithms": [
16126+ "m.olm.v1.curve25519-aes-sha2",
16127+ "m.megolm.v1.aes-sha2"
16128+ ],
16129+ "device_id": "ALICEDEVICE1346",
16130+ "keys": {
16131+ "curve25519:ALICEDEVICE1346": "iF5B5omG1uVEXBrvM6QEXoPxYKGTGUDLU+XXLzxYr3A",
16132+ "ed25519:ALICEDEVICE1346": "dWMrWk9azdDgtUaQMeBNWUXYxx0XHYpEXxDS+bbEuRg"
16133+ },
16134+ "signatures": {
16135+ "@alice_1346:hs1": {
16136+ "ed25519:ALICEDEVICE1346": "AMwWTJULh8BIYVG+L4rn0iO/LVAQoqPCwW0OH4BARTKT2+vf6YyctkvKCDvd5sw+oE76jQ5tt+qlYeACK/kzCA"
16137+ }
16138+ },
16139+ "user_id": "@alice_1346:hs1",
16140+ "unsigned": {}
16141+ }
16142+ },
16143+ "@alice_1347:hs1": {
16144+ "ALICEDEVICE1347": {
16145+ "algorithms": [
16146+ "m.olm.v1.curve25519-aes-sha2",
16147+ "m.megolm.v1.aes-sha2"
16148+ ],
16149+ "device_id": "ALICEDEVICE1347",
16150+ "keys": {
16151+ "curve25519:ALICEDEVICE1347": "Jlvf26lX7mERLdPSxXlT8hmQWHgla01hAdcw+zX0Jzs",
16152+ "ed25519:ALICEDEVICE1347": "ADmN/MMHSeMQUHxvJfpiwMRGJgsuz8r2WQI3vnV2Py0"
16153+ },
16154+ "signatures": {
16155+ "@alice_1347:hs1": {
16156+ "ed25519:ALICEDEVICE1347": "8aTMLuDO/EcKl6I26Ruq/I6DkYIYzKPzIG4Eqyna8FITxxMriTUAUWu/B9fQHegeSyYIFHJV3kDbLSG69Xu3AQ"
16157+ }
16158+ },
16159+ "user_id": "@alice_1347:hs1",
16160+ "unsigned": {}
16161+ }
16162+ },
16163+ "@alice_1348:hs1": {
16164+ "ALICEDEVICE1348": {
16165+ "algorithms": [
16166+ "m.olm.v1.curve25519-aes-sha2",
16167+ "m.megolm.v1.aes-sha2"
16168+ ],
16169+ "device_id": "ALICEDEVICE1348",
16170+ "keys": {
16171+ "curve25519:ALICEDEVICE1348": "MfRfkkIjKJK0FbnGYBhbCvIu53HPPDx42HgJhOu79zg",
16172+ "ed25519:ALICEDEVICE1348": "GfHyWEy7p29eAi6izWAew+9n8/G49h1klc5C/qGqe9A"
16173+ },
16174+ "signatures": {
16175+ "@alice_1348:hs1": {
16176+ "ed25519:ALICEDEVICE1348": "62kV4ifffg2hJgIqPLWBrMK+ClMuDTy5yek38tdyHckT3vAGyRF5osRprAbFkFQbKYcWmPWuFLsNapjljN22Ag"
16177+ }
16178+ },
16179+ "user_id": "@alice_1348:hs1",
16180+ "unsigned": {}
16181+ }
16182+ },
16183+ "@alice_135:hs1": {
16184+ "ALICEDEVICE135": {
16185+ "algorithms": [
16186+ "m.olm.v1.curve25519-aes-sha2",
16187+ "m.megolm.v1.aes-sha2"
16188+ ],
16189+ "device_id": "ALICEDEVICE135",
16190+ "keys": {
16191+ "curve25519:ALICEDEVICE135": "fiBffB0whgcP0exVGkYy9r8E3xVeI0mx3Y9nCBgCTRc",
16192+ "ed25519:ALICEDEVICE135": "llSHbU9/we5bD9GnWH72atLR2Jg38Akz58zj3hFxmNA"
16193+ },
16194+ "signatures": {
16195+ "@alice_135:hs1": {
16196+ "ed25519:ALICEDEVICE135": "O9XgY2eQPlSsD+ZdtCZDTaqpTqn0q/4WsMMM62i3S+alZC913UtY94o/cemKqjjr+oyJLBKetgwhvgWK/EdhCA"
16197+ }
16198+ },
16199+ "user_id": "@alice_135:hs1",
16200+ "unsigned": {}
16201+ }
16202+ },
16203+ "@alice_136:hs1": {
16204+ "ALICEDEVICE136": {
16205+ "algorithms": [
16206+ "m.olm.v1.curve25519-aes-sha2",
16207+ "m.megolm.v1.aes-sha2"
16208+ ],
16209+ "device_id": "ALICEDEVICE136",
16210+ "keys": {
16211+ "curve25519:ALICEDEVICE136": "kSROXZhwZcQ648oG+HK5RVp9hghMuD0dmyoNDrGHIhM",
16212+ "ed25519:ALICEDEVICE136": "UYo35EzOnOXXYZo08T4MvfUGbgodNDwPrzyiW9f0RTI"
16213+ },
16214+ "signatures": {
16215+ "@alice_136:hs1": {
16216+ "ed25519:ALICEDEVICE136": "A+tT50ldOKpuHIiKD9Zu9P4hlHsBomB2g40ZPm5Fm/6Bfs0uzshvN25Jlj0KN+5U1bEjYoOjlvVkx/pO3vk5Bw"
16217+ }
16218+ },
16219+ "user_id": "@alice_136:hs1",
16220+ "unsigned": {}
16221+ }
16222+ },
16223+ "@alice_1370:hs1": {
16224+ "ALICEDEVICE1370": {
16225+ "algorithms": [
16226+ "m.olm.v1.curve25519-aes-sha2",
16227+ "m.megolm.v1.aes-sha2"
16228+ ],
16229+ "device_id": "ALICEDEVICE1370",
16230+ "keys": {
16231+ "curve25519:ALICEDEVICE1370": "v1+59Zf4WpVh78062fn0cl9P8MjuNiUQ+ek8NMCUjWo",
16232+ "ed25519:ALICEDEVICE1370": "W9adjo6lG5eN23Cr0a0mXQKWMfq8OFh0WkyVIHKGhXk"
16233+ },
16234+ "signatures": {
16235+ "@alice_1370:hs1": {
16236+ "ed25519:ALICEDEVICE1370": "SjXK0ZO/nWMBSFXzJwIBP71DoliUSaG92vMLv8q9lc8dzrA2uzsv4idGnc3EwTvQ6DojjiNt0MWzum0nQGliDg"
16237+ }
16238+ },
16239+ "user_id": "@alice_1370:hs1",
16240+ "unsigned": {}
16241+ }
16242+ },
16243+ "@alice_1387:hs1": {
16244+ "ALICEDEVICE1387": {
16245+ "algorithms": [
16246+ "m.olm.v1.curve25519-aes-sha2",
16247+ "m.megolm.v1.aes-sha2"
16248+ ],
16249+ "device_id": "ALICEDEVICE1387",
16250+ "keys": {
16251+ "curve25519:ALICEDEVICE1387": "ZH+nbesr9HCpO11EAobWlqYspy6o0oi9Ps9giNcBkHQ",
16252+ "ed25519:ALICEDEVICE1387": "eNQHIYsh3ran39r4+Hmd9nembrHOZ22Laccuoi7DyP8"
16253+ },
16254+ "signatures": {
16255+ "@alice_1387:hs1": {
16256+ "ed25519:ALICEDEVICE1387": "1BQd4G/lzLmqPd/W77yDGMl48UNtF+UttdaqEDhaoos5Y8vmohlogQVYfN8XIj+F4KAn8GE30ldO/RYlNl7WCg"
16257+ }
16258+ },
16259+ "user_id": "@alice_1387:hs1",
16260+ "unsigned": {}
16261+ }
16262+ },
16263+ "@alice_1389:hs1": {
16264+ "ALICEDEVICE1389": {
16265+ "algorithms": [
16266+ "m.olm.v1.curve25519-aes-sha2",
16267+ "m.megolm.v1.aes-sha2"
16268+ ],
16269+ "device_id": "ALICEDEVICE1389",
16270+ "keys": {
16271+ "curve25519:ALICEDEVICE1389": "n090V3XL6ICSTSKlpwl9Q8pMi+yB2y2NoQ9LSRv6Vmo",
16272+ "ed25519:ALICEDEVICE1389": "lE5DM5CTVb5UAXahO6XioFcE1eyg1JY5ZGE2/jP0c7U"
16273+ },
16274+ "signatures": {
16275+ "@alice_1389:hs1": {
16276+ "ed25519:ALICEDEVICE1389": "eCQfpQOnx9SPzoLhi3yHLYRijIA7VWzPaF5PjyLPAS47yInHO4rQOP6+IwTMI1tLLnWW/h098tMRq/BHgbdEAA"
16277+ }
16278+ },
16279+ "user_id": "@alice_1389:hs1",
16280+ "unsigned": {}
16281+ }
16282+ },
16283+ "@alice_140:hs1": {
16284+ "ALICEDEVICE140": {
16285+ "algorithms": [
16286+ "m.olm.v1.curve25519-aes-sha2",
16287+ "m.megolm.v1.aes-sha2"
16288+ ],
16289+ "device_id": "ALICEDEVICE140",
16290+ "keys": {
16291+ "curve25519:ALICEDEVICE140": "QotDrpQBlp0jWWJcLBZtZa50i4auJSH7zK749gZQ0BM",
16292+ "ed25519:ALICEDEVICE140": "kgTbMQFxPkHY97dK3jdTziognf4NZ2T5rfrQtYFga7M"
16293+ },
16294+ "signatures": {
16295+ "@alice_140:hs1": {
16296+ "ed25519:ALICEDEVICE140": "LwVaLPgUtGAHLYD4CfyLsB+nmt8UssLHHQe1U1qWnqNO6zzZDXmd0k5QmLg7xigseRFhSlH8pojLgZKlSdTHAA"
16297+ }
16298+ },
16299+ "user_id": "@alice_140:hs1",
16300+ "unsigned": {}
16301+ }
16302+ },
16303+ "@alice_1414:hs1": {
16304+ "ALICEDEVICE1414": {
16305+ "algorithms": [
16306+ "m.olm.v1.curve25519-aes-sha2",
16307+ "m.megolm.v1.aes-sha2"
16308+ ],
16309+ "device_id": "ALICEDEVICE1414",
16310+ "keys": {
16311+ "curve25519:ALICEDEVICE1414": "YDv0znpDUqOL2aFoJtxVfEd8ALrjzgGzSrO7LzwPIG8",
16312+ "ed25519:ALICEDEVICE1414": "IyeMCjjLkpaEsN7EAV3vVmzEuj7JSMzgQ5z+bhTeW7w"
16313+ },
16314+ "signatures": {
16315+ "@alice_1414:hs1": {
16316+ "ed25519:ALICEDEVICE1414": "ihpjYDmYDQCotToDRm9JZVbFwKL0DsD+J/0Mk2I5M6VLm4GDV5ffz9CjGOLzrP8UK/Ggn0mYzqnsUvclGWRiCQ"
16317+ }
16318+ },
16319+ "user_id": "@alice_1414:hs1",
16320+ "unsigned": {}
16321+ }
16322+ },
16323+ "@alice_1416:hs1": {
16324+ "ALICEDEVICE1416": {
16325+ "algorithms": [
16326+ "m.olm.v1.curve25519-aes-sha2",
16327+ "m.megolm.v1.aes-sha2"
16328+ ],
16329+ "device_id": "ALICEDEVICE1416",
16330+ "keys": {
16331+ "curve25519:ALICEDEVICE1416": "Um7G1MQFZfcdjduuKUUlBPpJPWUhCCifVnWDY5ezikc",
16332+ "ed25519:ALICEDEVICE1416": "MedIcLHij3c8+5q8qTrRrVmQWPVp+zOKT8ONTb8WZ4c"
16333+ },
16334+ "signatures": {
16335+ "@alice_1416:hs1": {
16336+ "ed25519:ALICEDEVICE1416": "uv6u+DzBlmJaUqBhFLU3JWDiR5tnto14YUs/p3c19OYJiNcidj6MyL5LbKwOuMS463+dVlHBRkSmCbzhqhllDw"
16337+ }
16338+ },
16339+ "user_id": "@alice_1416:hs1",
16340+ "unsigned": {}
16341+ }
16342+ },
16343+ "@alice_1417:hs1": {
16344+ "ALICEDEVICE1417": {
16345+ "algorithms": [
16346+ "m.olm.v1.curve25519-aes-sha2",
16347+ "m.megolm.v1.aes-sha2"
16348+ ],
16349+ "device_id": "ALICEDEVICE1417",
16350+ "keys": {
16351+ "curve25519:ALICEDEVICE1417": "iUxa7mEzTuAIQ3nMjowso8eJn54TvRh/wv4NaDvO2RE",
16352+ "ed25519:ALICEDEVICE1417": "IhLuzWxfLT7JWnARfQU1VUu3xkbNXR3T7j4ChRS+2GY"
16353+ },
16354+ "signatures": {
16355+ "@alice_1417:hs1": {
16356+ "ed25519:ALICEDEVICE1417": "WGhPaX4+Iyvq/OU4rGh/5EUVJOoXpED7oSg+Yvg6NYRAuW1TwNMGkcyRoumyX5oi/YcH77ctEnqve9dQuOsJBg"
16357+ }
16358+ },
16359+ "user_id": "@alice_1417:hs1",
16360+ "unsigned": {}
16361+ }
16362+ },
16363+ "@alice_1418:hs1": {
16364+ "ALICEDEVICE1418": {
16365+ "algorithms": [
16366+ "m.olm.v1.curve25519-aes-sha2",
16367+ "m.megolm.v1.aes-sha2"
16368+ ],
16369+ "device_id": "ALICEDEVICE1418",
16370+ "keys": {
16371+ "curve25519:ALICEDEVICE1418": "66DpsaCE8VDOlIHBsQux7M+Q5VYfLr2mVgxI3VEk3RE",
16372+ "ed25519:ALICEDEVICE1418": "h+1RiKiEEtr0gkIBxX5ew24y3punAVbZC1mpoydsV7w"
16373+ },
16374+ "signatures": {
16375+ "@alice_1418:hs1": {
16376+ "ed25519:ALICEDEVICE1418": "VEUyzn2+jwlXdZ8TisZ5Zr2SKkZ0nyLKOhNNO3x+JRMwn+oaTjtm/sXindFw2cwWFL8x+wvXTFfKiLgr4zxXDQ"
16377+ }
16378+ },
16379+ "user_id": "@alice_1418:hs1",
16380+ "unsigned": {}
16381+ }
16382+ },
16383+ "@alice_1423:hs1": {
16384+ "ALICEDEVICE1423": {
16385+ "algorithms": [
16386+ "m.olm.v1.curve25519-aes-sha2",
16387+ "m.megolm.v1.aes-sha2"
16388+ ],
16389+ "device_id": "ALICEDEVICE1423",
16390+ "keys": {
16391+ "curve25519:ALICEDEVICE1423": "QJl5kGv6JnTbP3/nNZSZOdREgGQKbY5SBvZeS+weMDg",
16392+ "ed25519:ALICEDEVICE1423": "vv9E076Mjpr+irKJ/zRK/ydgmx66q5NuG6ovRF4eGUc"
16393+ },
16394+ "signatures": {
16395+ "@alice_1423:hs1": {
16396+ "ed25519:ALICEDEVICE1423": "YoL7ufVxVOkXbIUku7jolz0TNbismEsyGNMQZ5+49HL24zTVNb/bjlnmWTXAHMtMmTehfiK3xu3JPxDnB4lwCQ"
16397+ }
16398+ },
16399+ "user_id": "@alice_1423:hs1",
16400+ "unsigned": {}
16401+ }
16402+ },
16403+ "@alice_1430:hs1": {
16404+ "ALICEDEVICE1430": {
16405+ "algorithms": [
16406+ "m.olm.v1.curve25519-aes-sha2",
16407+ "m.megolm.v1.aes-sha2"
16408+ ],
16409+ "device_id": "ALICEDEVICE1430",
16410+ "keys": {
16411+ "curve25519:ALICEDEVICE1430": "mwG0u1pyiQ8BLAPLruQUriXslxvY/dQYeXDhx2Ovemg",
16412+ "ed25519:ALICEDEVICE1430": "mB0SBSqWM98nuU7Cqj/N6vxCbr+OhxurB5yRxWa5WPI"
16413+ },
16414+ "signatures": {
16415+ "@alice_1430:hs1": {
16416+ "ed25519:ALICEDEVICE1430": "0Ysfk2xUTZI0H0NDSXzVg7OkGyU2cuAtAP9/Th5rkiyCF5BrKPk53HmewATpt9SqEiJJi304YSNcx7vzujOfAQ"
16417+ }
16418+ },
16419+ "user_id": "@alice_1430:hs1",
16420+ "unsigned": {}
16421+ }
16422+ },
16423+ "@alice_1435:hs1": {
16424+ "ALICEDEVICE1435": {
16425+ "algorithms": [
16426+ "m.olm.v1.curve25519-aes-sha2",
16427+ "m.megolm.v1.aes-sha2"
16428+ ],
16429+ "device_id": "ALICEDEVICE1435",
16430+ "keys": {
16431+ "curve25519:ALICEDEVICE1435": "ic+6Za7pI69ff0NhbQGxw08kPuRYeoAXzUGv1UqLHWw",
16432+ "ed25519:ALICEDEVICE1435": "S572IT09SgLZYetbyfxr725Eemko/H4WK1rkr2eP1n0"
16433+ },
16434+ "signatures": {
16435+ "@alice_1435:hs1": {
16436+ "ed25519:ALICEDEVICE1435": "UnP39/kSnqXLLe8w/vHkQIthU9comUiNIc88LIbAp0088O4VEabpC7MHSnHCOgfE9OA8H29Sq8/xcjyTE3hpAA"
16437+ }
16438+ },
16439+ "user_id": "@alice_1435:hs1",
16440+ "unsigned": {}
16441+ }
16442+ },
16443+ "@alice_1441:hs1": {
16444+ "ALICEDEVICE1441": {
16445+ "algorithms": [
16446+ "m.olm.v1.curve25519-aes-sha2",
16447+ "m.megolm.v1.aes-sha2"
16448+ ],
16449+ "device_id": "ALICEDEVICE1441",
16450+ "keys": {
16451+ "curve25519:ALICEDEVICE1441": "6CTRXWfO5PvCFl3zhYjC9/l3HiAGUqF8FaiBR9B0q18",
16452+ "ed25519:ALICEDEVICE1441": "bywOrUq1dc6Cdj2QTvayp/IqC559pH30oPv1umCeTaI"
16453+ },
16454+ "signatures": {
16455+ "@alice_1441:hs1": {
16456+ "ed25519:ALICEDEVICE1441": "JfS2ClQdAznUXXNzPc8IyO/TfvE/N4mayz7ZIgAd8g4acDAfdqvgJa+Pw9oPFZ8156+dXFIf6GUCn1duE7C0Bw"
16457+ }
16458+ },
16459+ "user_id": "@alice_1441:hs1",
16460+ "unsigned": {}
16461+ }
16462+ },
16463+ "@alice_1444:hs1": {
16464+ "ALICEDEVICE1444": {
16465+ "algorithms": [
16466+ "m.olm.v1.curve25519-aes-sha2",
16467+ "m.megolm.v1.aes-sha2"
16468+ ],
16469+ "device_id": "ALICEDEVICE1444",
16470+ "keys": {
16471+ "curve25519:ALICEDEVICE1444": "8hpVH3IUSFhQQSDDj3J1S75+LCwrPIPthFwSIcDl1gY",
16472+ "ed25519:ALICEDEVICE1444": "ZcXUJq7QVcz64LgYL9f5/ikzEseYSCZTrAOyGADzEK8"
16473+ },
16474+ "signatures": {
16475+ "@alice_1444:hs1": {
16476+ "ed25519:ALICEDEVICE1444": "2EKBsIaZYDqF6Hw8i7Kj85ggC3bH/S5GeaDDt2PoGGn+UqkqHkmKfkNtSuYu3+vYbgfJ02KbZ+8+YDgLFF8SBw"
16477+ }
16478+ },
16479+ "user_id": "@alice_1444:hs1",
16480+ "unsigned": {}
16481+ }
16482+ },
16483+ "@alice_1445:hs1": {
16484+ "ALICEDEVICE1445": {
16485+ "algorithms": [
16486+ "m.olm.v1.curve25519-aes-sha2",
16487+ "m.megolm.v1.aes-sha2"
16488+ ],
16489+ "device_id": "ALICEDEVICE1445",
16490+ "keys": {
16491+ "curve25519:ALICEDEVICE1445": "6/9ghnauL4n3sYSonEsp1S+lUuJxh8t5tke7cPQXCiQ",
16492+ "ed25519:ALICEDEVICE1445": "59q5GNtwWnM4D/ukDLAXfzPPvLHOKRu/qO1fC6xlTDA"
16493+ },
16494+ "signatures": {
16495+ "@alice_1445:hs1": {
16496+ "ed25519:ALICEDEVICE1445": "lbz/nimJItT7GtDlBxiwm4UHAsSxQdy1PcTb8Pw78b4k+Q4AVHlCB/ff3MEeVPbpHcFqKTZsXhcdlmfkvKyYDw"
16497+ }
16498+ },
16499+ "user_id": "@alice_1445:hs1",
16500+ "unsigned": {}
16501+ }
16502+ },
16503+ "@alice_1449:hs1": {
16504+ "ALICEDEVICE1449": {
16505+ "algorithms": [
16506+ "m.olm.v1.curve25519-aes-sha2",
16507+ "m.megolm.v1.aes-sha2"
16508+ ],
16509+ "device_id": "ALICEDEVICE1449",
16510+ "keys": {
16511+ "curve25519:ALICEDEVICE1449": "XxwKnoWBr87leYO+h+YX2vX1UbUIEMABUMirKPpFcx8",
16512+ "ed25519:ALICEDEVICE1449": "se244gk1ZOvU2olmH+TQGJjNMo2ioEqloCYodC+gkY8"
16513+ },
16514+ "signatures": {
16515+ "@alice_1449:hs1": {
16516+ "ed25519:ALICEDEVICE1449": "tsSIxgvn7fRuqlMJQvA/gODmo6biKLM65mE/lXjs4sx7SdvQJVTIuh/10/TgVUHPveOhZQdfwjZU4lrX75qmDA"
16517+ }
16518+ },
16519+ "user_id": "@alice_1449:hs1",
16520+ "unsigned": {}
16521+ }
16522+ },
16523+ "@alice_1450:hs1": {
16524+ "ALICEDEVICE1450": {
16525+ "algorithms": [
16526+ "m.olm.v1.curve25519-aes-sha2",
16527+ "m.megolm.v1.aes-sha2"
16528+ ],
16529+ "device_id": "ALICEDEVICE1450",
16530+ "keys": {
16531+ "curve25519:ALICEDEVICE1450": "Mccpu7Fn+I58PvkObUzDWy6EE1AFq5DDl8mVNeByQ3U",
16532+ "ed25519:ALICEDEVICE1450": "DQWGzJVETa9COSW1BMd1W3VvMbMoCombzJUQCoAg4WU"
16533+ },
16534+ "signatures": {
16535+ "@alice_1450:hs1": {
16536+ "ed25519:ALICEDEVICE1450": "DVU1ScWLbbYZwftEPNuGZJZp4bc1V0bEzRrbJ6f40743bRIV4vA9Jh9D2clBEjG/UALYmrZq38G5vsPl/lZ9Aw"
16537+ }
16538+ },
16539+ "user_id": "@alice_1450:hs1",
16540+ "unsigned": {}
16541+ }
16542+ },
16543+ "@alice_1457:hs1": {
16544+ "ALICEDEVICE1457": {
16545+ "algorithms": [
16546+ "m.olm.v1.curve25519-aes-sha2",
16547+ "m.megolm.v1.aes-sha2"
16548+ ],
16549+ "device_id": "ALICEDEVICE1457",
16550+ "keys": {
16551+ "curve25519:ALICEDEVICE1457": "iwNhFiJEvcMzxmN1bDUN50agARxTHhjJAkmyZFQiIF8",
16552+ "ed25519:ALICEDEVICE1457": "dIV5Yx11z/dYPqOaxnBpIxQs8grbom+XHTPUzCeKTAw"
16553+ },
16554+ "signatures": {
16555+ "@alice_1457:hs1": {
16556+ "ed25519:ALICEDEVICE1457": "HrJjP2m9tuQJSPF2fg9CGerpDXM9WhHJgveImEJetQGsPFunCqaqkJFSgbuXeoMRhTFqal6b5Xj/KJ/apTRRDg"
16557+ }
16558+ },
16559+ "user_id": "@alice_1457:hs1",
16560+ "unsigned": {}
16561+ }
16562+ },
16563+ "@alice_1458:hs1": {
16564+ "ALICEDEVICE1458": {
16565+ "algorithms": [
16566+ "m.olm.v1.curve25519-aes-sha2",
16567+ "m.megolm.v1.aes-sha2"
16568+ ],
16569+ "device_id": "ALICEDEVICE1458",
16570+ "keys": {
16571+ "curve25519:ALICEDEVICE1458": "n+sjVZ0eXt9p1nAxsidPYIr93aamsDaBY9eRi4GUInU",
16572+ "ed25519:ALICEDEVICE1458": "6glWGC6tQ2YQ7ZCJWAHaktc2HA/6821u7HHIwKRNiXc"
16573+ },
16574+ "signatures": {
16575+ "@alice_1458:hs1": {
16576+ "ed25519:ALICEDEVICE1458": "b2N95I1rYxkuw7hngth3b3jSBbXQCB97sTd/xmoaNyTB7bt5RChj5U5lAkwou0Py62gXk9xHw+8F64KuYX9IBg"
16577+ }
16578+ },
16579+ "user_id": "@alice_1458:hs1",
16580+ "unsigned": {}
16581+ }
16582+ },
16583+ "@alice_1463:hs1": {
16584+ "ALICEDEVICE1463": {
16585+ "algorithms": [
16586+ "m.olm.v1.curve25519-aes-sha2",
16587+ "m.megolm.v1.aes-sha2"
16588+ ],
16589+ "device_id": "ALICEDEVICE1463",
16590+ "keys": {
16591+ "curve25519:ALICEDEVICE1463": "xW5RpUq9L67ytvqD4ZH1onOSPVWZ0xQjSIh1rQnRymc",
16592+ "ed25519:ALICEDEVICE1463": "08DFKTyGDsUIQXxfI/6i0f3+UrLQ7BioMsfjh+wxsG0"
16593+ },
16594+ "signatures": {
16595+ "@alice_1463:hs1": {
16596+ "ed25519:ALICEDEVICE1463": "8xNDwkDmwEhH7V0+F1N/FpPWga46SQYXlUUgVOaR2iodKeuhqk+nG+84LJnPcjregKrnf2GEA0UobWKiNLm2Cw"
16597+ }
16598+ },
16599+ "user_id": "@alice_1463:hs1",
16600+ "unsigned": {}
16601+ }
16602+ },
16603+ "@alice_1477:hs1": {
16604+ "ALICEDEVICE1477": {
16605+ "algorithms": [
16606+ "m.olm.v1.curve25519-aes-sha2",
16607+ "m.megolm.v1.aes-sha2"
16608+ ],
16609+ "device_id": "ALICEDEVICE1477",
16610+ "keys": {
16611+ "curve25519:ALICEDEVICE1477": "HTQMVLG+SMzGmab3DZP0jIcEQpzz9GHPTOWW+L45Jgs",
16612+ "ed25519:ALICEDEVICE1477": "o+0WcEeWTmwsOUylac8aU/9THbTh8Xvl4jJ8p1a7XMU"
16613+ },
16614+ "signatures": {
16615+ "@alice_1477:hs1": {
16616+ "ed25519:ALICEDEVICE1477": "utC6vUPCqXiE/m00tCIqY1uArJL7sum0ayqwygWF4hLRq/wOH+JNKDUYrEjekGyqHST+XXkr8Kw6GOHzVL8eBQ"
16617+ }
16618+ },
16619+ "user_id": "@alice_1477:hs1",
16620+ "unsigned": {}
16621+ }
16622+ },
16623+ "@alice_1496:hs1": {
16624+ "ALICEDEVICE1496": {
16625+ "algorithms": [
16626+ "m.olm.v1.curve25519-aes-sha2",
16627+ "m.megolm.v1.aes-sha2"
16628+ ],
16629+ "device_id": "ALICEDEVICE1496",
16630+ "keys": {
16631+ "curve25519:ALICEDEVICE1496": "NQO2oTRQTvLrTg6HX/MhkLCbcEIjWadqJkU7SJx1f1Y",
16632+ "ed25519:ALICEDEVICE1496": "Fu2MMmKciK/cqZRdJgKaRORaXcSqTLkwQEPYjNh4Svg"
16633+ },
16634+ "signatures": {
16635+ "@alice_1496:hs1": {
16636+ "ed25519:ALICEDEVICE1496": "ig9QBljum7W7cW/1sdvPg5m87qMuFEyQE0EUO6KV5Iyy8C1cHBzQd8bTISKdsNecykLyBstEvho8j98O5WmVBg"
16637+ }
16638+ },
16639+ "user_id": "@alice_1496:hs1",
16640+ "unsigned": {}
16641+ }
16642+ },
16643+ "@alice_1499:hs1": {
16644+ "ALICEDEVICE1499": {
16645+ "algorithms": [
16646+ "m.olm.v1.curve25519-aes-sha2",
16647+ "m.megolm.v1.aes-sha2"
16648+ ],
16649+ "device_id": "ALICEDEVICE1499",
16650+ "keys": {
16651+ "curve25519:ALICEDEVICE1499": "XrvNAcyCM90+jZTYG8pO6437da0EAXrTfZ7E304akzc",
16652+ "ed25519:ALICEDEVICE1499": "1w5JEQ22u9Qt/fz8vXdJxFk5QTH5O14Xv7FgG/GpF40"
16653+ },
16654+ "signatures": {
16655+ "@alice_1499:hs1": {
16656+ "ed25519:ALICEDEVICE1499": "ZdU3HNuyCeja/mD5d2BlUPPfzjwwjz8id0PKR70UV6hDzghv6b5PRFVPANHsSLPmosp9OzR7Oe6mVxd8ShCBCg"
16657+ }
16658+ },
16659+ "user_id": "@alice_1499:hs1",
16660+ "unsigned": {}
16661+ }
16662+ },
16663+ "@alice_149:hs1": {
16664+ "ALICEDEVICE149": {
16665+ "algorithms": [
16666+ "m.olm.v1.curve25519-aes-sha2",
16667+ "m.megolm.v1.aes-sha2"
16668+ ],
16669+ "device_id": "ALICEDEVICE149",
16670+ "keys": {
16671+ "curve25519:ALICEDEVICE149": "yYlVJRuyHqo6oCFajPRWfld1mwForSFY00uOhMMQilo",
16672+ "ed25519:ALICEDEVICE149": "tg7QH7GrnfxUFY5wG8kJ+Lg9/aMb7NrZ3pXXXG5vdO4"
16673+ },
16674+ "signatures": {
16675+ "@alice_149:hs1": {
16676+ "ed25519:ALICEDEVICE149": "1bua1N/w9ApDIdbhm0j/mX7/4PS0zKB3sRyFvcIMRmBA49l0OoqTkKv5jjdcFQoIUKF6iK5RfalmFHfYDTXpAw"
16677+ }
16678+ },
16679+ "user_id": "@alice_149:hs1",
16680+ "unsigned": {}
16681+ }
16682+ },
16683+ "@alice_1508:hs1": {
16684+ "ALICEDEVICE1508": {
16685+ "algorithms": [
16686+ "m.olm.v1.curve25519-aes-sha2",
16687+ "m.megolm.v1.aes-sha2"
16688+ ],
16689+ "device_id": "ALICEDEVICE1508",
16690+ "keys": {
16691+ "curve25519:ALICEDEVICE1508": "q9pHXaEV6qzeRMi1dap4De8zErnHcCUz09HP8rgBHlw",
16692+ "ed25519:ALICEDEVICE1508": "PDUfJ9RZcEhYcNeD1GRCTl0mD3LfHXcJqe88+qYqVcg"
16693+ },
16694+ "signatures": {
16695+ "@alice_1508:hs1": {
16696+ "ed25519:ALICEDEVICE1508": "ylglEYUJO1rxSw6QxZJZujoAUxRkv28mE9/yRhu82p7zW+C8glHbE8qeNsXU/mD8Sz7j0Jk2xlOzG50nlwX0Ag"
16697+ }
16698+ },
16699+ "user_id": "@alice_1508:hs1",
16700+ "unsigned": {}
16701+ }
16702+ },
16703+ "@alice_1519:hs1": {
16704+ "ALICEDEVICE1519": {
16705+ "algorithms": [
16706+ "m.olm.v1.curve25519-aes-sha2",
16707+ "m.megolm.v1.aes-sha2"
16708+ ],
16709+ "device_id": "ALICEDEVICE1519",
16710+ "keys": {
16711+ "curve25519:ALICEDEVICE1519": "pQfXfIr14LZ9iM4TM1tLRALtDMM5iHW1p/rEDN2C9Hc",
16712+ "ed25519:ALICEDEVICE1519": "7Q6htYT6eoNXYrB+/6r1OuhhYxBj4yAJy1zWmUa4Dr0"
16713+ },
16714+ "signatures": {
16715+ "@alice_1519:hs1": {
16716+ "ed25519:ALICEDEVICE1519": "z8I4fKEzNGIma/VEFzk3VAhW+gzVsBwtOHiCNBzBAHPJWdOX8wuzzhbl3wIRpGaQtEoxobNFCi24pOuHshO8BQ"
16717+ }
16718+ },
16719+ "user_id": "@alice_1519:hs1",
16720+ "unsigned": {}
16721+ }
16722+ },
16723+ "@alice_151:hs1": {
16724+ "ALICEDEVICE151": {
16725+ "algorithms": [
16726+ "m.olm.v1.curve25519-aes-sha2",
16727+ "m.megolm.v1.aes-sha2"
16728+ ],
16729+ "device_id": "ALICEDEVICE151",
16730+ "keys": {
16731+ "curve25519:ALICEDEVICE151": "eiF5LQqCP+CmMSyIc2MyaKz9VUw1bHmlMslPWRdhwTE",
16732+ "ed25519:ALICEDEVICE151": "l6N5U9Xw0aVhHU+aQCNbYQMMF0tTeYu5p/89QPejOOg"
16733+ },
16734+ "signatures": {
16735+ "@alice_151:hs1": {
16736+ "ed25519:ALICEDEVICE151": "9064aQSltCOOoUsOm9nu/by7iyDvpYn+eXVjWTBR4ioFrtRp3ZL/6joIe2xrgiF+Tu2vCS9siYlthR7NJbgJCQ"
16737+ }
16738+ },
16739+ "user_id": "@alice_151:hs1",
16740+ "unsigned": {}
16741+ }
16742+ },
16743+ "@alice_1520:hs1": {
16744+ "ALICEDEVICE1520": {
16745+ "algorithms": [
16746+ "m.olm.v1.curve25519-aes-sha2",
16747+ "m.megolm.v1.aes-sha2"
16748+ ],
16749+ "device_id": "ALICEDEVICE1520",
16750+ "keys": {
16751+ "curve25519:ALICEDEVICE1520": "OYW0AhgRzTqiDg/fgl/HPklaPNuSNXewj1rlTapNZH4",
16752+ "ed25519:ALICEDEVICE1520": "0rdmsPkU7yJyRKJVnw2NLLJjuoVGzRpn/H+ljzJ8fVE"
16753+ },
16754+ "signatures": {
16755+ "@alice_1520:hs1": {
16756+ "ed25519:ALICEDEVICE1520": "PdLOXbIE0EMR0edVgukSxAE1uZyZyb3LyudvQkPcho/UB3H59rBTSKEssJQz/cGJKuqDQy4Blo8+Ipx3ewQsBg"
16757+ }
16758+ },
16759+ "user_id": "@alice_1520:hs1",
16760+ "unsigned": {}
16761+ }
16762+ },
16763+ "@alice_1542:hs1": {
16764+ "ALICEDEVICE1542": {
16765+ "algorithms": [
16766+ "m.olm.v1.curve25519-aes-sha2",
16767+ "m.megolm.v1.aes-sha2"
16768+ ],
16769+ "device_id": "ALICEDEVICE1542",
16770+ "keys": {
16771+ "curve25519:ALICEDEVICE1542": "4L5kkXEOVteuuYOzxdmiPeRj4tTpZGlk/9dTTOnBEkk",
16772+ "ed25519:ALICEDEVICE1542": "O3Ufu62z8/EDPsU5wKXU6Rcx2D1UjXvOmfOaRcsF2yE"
16773+ },
16774+ "signatures": {
16775+ "@alice_1542:hs1": {
16776+ "ed25519:ALICEDEVICE1542": "c6sbICk7JTDPbEKKQ7efmo6Cv7nmYFBaZE1duKPltJf76Bt3Fl/sBNnElc3BsDYMjfVa8y5e8MewphuFIOmcCg"
16777+ }
16778+ },
16779+ "user_id": "@alice_1542:hs1",
16780+ "unsigned": {}
16781+ }
16782+ },
16783+ "@alice_1549:hs1": {
16784+ "ALICEDEVICE1549": {
16785+ "algorithms": [
16786+ "m.olm.v1.curve25519-aes-sha2",
16787+ "m.megolm.v1.aes-sha2"
16788+ ],
16789+ "device_id": "ALICEDEVICE1549",
16790+ "keys": {
16791+ "curve25519:ALICEDEVICE1549": "poIsxWOc7VNL0/F3huS8+N+KnnSKCUWU2yJAUnqSEjE",
16792+ "ed25519:ALICEDEVICE1549": "u+5Ywb/O38tCC8DJiQbrV8kQTyWqYmSruZng2koIoPQ"
16793+ },
16794+ "signatures": {
16795+ "@alice_1549:hs1": {
16796+ "ed25519:ALICEDEVICE1549": "P8QC77JBYFu5V7mDcaIfQu+zy5NjawdP0X3XBwppHPLYL2GK2LCIWez6L/iaTW4Npm9cQcOiBuT9k2bUxAVIBA"
16797+ }
16798+ },
16799+ "user_id": "@alice_1549:hs1",
16800+ "unsigned": {}
16801+ }
16802+ },
16803+ "@alice_1560:hs1": {
16804+ "ALICEDEVICE1560": {
16805+ "algorithms": [
16806+ "m.olm.v1.curve25519-aes-sha2",
16807+ "m.megolm.v1.aes-sha2"
16808+ ],
16809+ "device_id": "ALICEDEVICE1560",
16810+ "keys": {
16811+ "curve25519:ALICEDEVICE1560": "RbaMYvF5PSeHrk8sOZDjF7Xle3GycqLR8f9kzfJ7hGA",
16812+ "ed25519:ALICEDEVICE1560": "uq4MH0Cp5+1ndVidziV0m+rXv6wcyJ69ge+unFbEfmI"
16813+ },
16814+ "signatures": {
16815+ "@alice_1560:hs1": {
16816+ "ed25519:ALICEDEVICE1560": "JRkeTUTYqlr7CwNwvYLEiw+xQA27UjBV5z9K0fqCxWTjbELlSepm86oaOxvTeUJl6oBNWshEOBXe0Q1vJoBAAw"
16817+ }
16818+ },
16819+ "user_id": "@alice_1560:hs1",
16820+ "unsigned": {}
16821+ }
16822+ },
16823+ "@alice_1565:hs1": {
16824+ "ALICEDEVICE1565": {
16825+ "algorithms": [
16826+ "m.olm.v1.curve25519-aes-sha2",
16827+ "m.megolm.v1.aes-sha2"
16828+ ],
16829+ "device_id": "ALICEDEVICE1565",
16830+ "keys": {
16831+ "curve25519:ALICEDEVICE1565": "3aXR13j7NHQVBqcxfC1uXLfugJBkYXqoZwWwUJe1T3c",
16832+ "ed25519:ALICEDEVICE1565": "QrwWQOrNbyy3kivI1PAkW3hjdXpLBFn5UoPAUj7v+SY"
16833+ },
16834+ "signatures": {
16835+ "@alice_1565:hs1": {
16836+ "ed25519:ALICEDEVICE1565": "FgpasFx1CmCWJ1tAdKoEXpMl62dWwG8Dpt7nlwzAgPl4I/iy1qgPNhM6N1KNkdDEvfis2YiKjQECBa18y5ZSDw"
16837+ }
16838+ },
16839+ "user_id": "@alice_1565:hs1",
16840+ "unsigned": {}
16841+ }
16842+ },
16843+ "@alice_156:hs1": {
16844+ "ALICEDEVICE156": {
16845+ "algorithms": [
16846+ "m.olm.v1.curve25519-aes-sha2",
16847+ "m.megolm.v1.aes-sha2"
16848+ ],
16849+ "device_id": "ALICEDEVICE156",
16850+ "keys": {
16851+ "curve25519:ALICEDEVICE156": "s8eZWFnvwUcjNVExaSrblopRYD8HjBn4hdr4vv8xBX0",
16852+ "ed25519:ALICEDEVICE156": "hyw+q+Pw93WvmCsXNhg0bX1e2QompTlJEptNGcFIm9w"
16853+ },
16854+ "signatures": {
16855+ "@alice_156:hs1": {
16856+ "ed25519:ALICEDEVICE156": "/8otYFKqLR/4IiRXBac4QFA1uyAXetQ+WzToepDlUFRvHqeCRwqzKG8I5FjDWGd1XpnL5wpTJAgma8klYHn0BA"
16857+ }
16858+ },
16859+ "user_id": "@alice_156:hs1",
16860+ "unsigned": {}
16861+ }
16862+ },
16863+ "@alice_1574:hs1": {
16864+ "ALICEDEVICE1574": {
16865+ "algorithms": [
16866+ "m.olm.v1.curve25519-aes-sha2",
16867+ "m.megolm.v1.aes-sha2"
16868+ ],
16869+ "device_id": "ALICEDEVICE1574",
16870+ "keys": {
16871+ "curve25519:ALICEDEVICE1574": "6oVG8+5sSOMVVWIxAMZM/M2oBQ2rbyY7rRzZ3ehR5gA",
16872+ "ed25519:ALICEDEVICE1574": "oLodrN2sNEfLav9dwDhl9W0TJ6Iu3roBacQ7sU1vtyI"
16873+ },
16874+ "signatures": {
16875+ "@alice_1574:hs1": {
16876+ "ed25519:ALICEDEVICE1574": "d3rBVS5/bPT+dHEu0NQZn3mjLpwLjM/DnYl52Y16n4jOdmoqfXrWv434olReiGtvzjbijzg34CiA+m/XSng7Bw"
16877+ }
16878+ },
16879+ "user_id": "@alice_1574:hs1",
16880+ "unsigned": {}
16881+ }
16882+ },
16883+ "@alice_1579:hs1": {
16884+ "ALICEDEVICE1579": {
16885+ "algorithms": [
16886+ "m.olm.v1.curve25519-aes-sha2",
16887+ "m.megolm.v1.aes-sha2"
16888+ ],
16889+ "device_id": "ALICEDEVICE1579",
16890+ "keys": {
16891+ "curve25519:ALICEDEVICE1579": "eLBJpggoI9/rruOxHd1HI6pR7Q4rnxoYvTYFLbWmyDs",
16892+ "ed25519:ALICEDEVICE1579": "e8X7IghIj7U2R8iQDL6Ag2nBWWrb/P78KUXMbhy7rsw"
16893+ },
16894+ "signatures": {
16895+ "@alice_1579:hs1": {
16896+ "ed25519:ALICEDEVICE1579": "J3SP7Kf13b56+PiTmSfkn+qvQQrFB2OajCRUzAu3GBZcAyPRXzyVuZdyjZPp2Nrpx6tpbqonrhiBEKWm3fd2DA"
16897+ }
16898+ },
16899+ "user_id": "@alice_1579:hs1",
16900+ "unsigned": {}
16901+ }
16902+ },
16903+ "@alice_1607:hs1": {
16904+ "ALICEDEVICE1607": {
16905+ "algorithms": [
16906+ "m.olm.v1.curve25519-aes-sha2",
16907+ "m.megolm.v1.aes-sha2"
16908+ ],
16909+ "device_id": "ALICEDEVICE1607",
16910+ "keys": {
16911+ "curve25519:ALICEDEVICE1607": "Q/mfA9AB/MGbvU02zqu/7KMVpuD6S8A+s7LIn09oYhk",
16912+ "ed25519:ALICEDEVICE1607": "2ho72lZMc2TwCAr86cvbWxKLwgiMWpODx+TLgaJr+Ew"
16913+ },
16914+ "signatures": {
16915+ "@alice_1607:hs1": {
16916+ "ed25519:ALICEDEVICE1607": "SijFr0P73ZTB112mbxi121h50zLzGrB98GZ+h5jOyDWypVxQefI6go6BagN2pzCAVNkhsYKqx6k7/D13nc5YCA"
16917+ }
16918+ },
16919+ "user_id": "@alice_1607:hs1",
16920+ "unsigned": {}
16921+ }
16922+ },
16923+ "@alice_1612:hs1": {
16924+ "ALICEDEVICE1612": {
16925+ "algorithms": [
16926+ "m.olm.v1.curve25519-aes-sha2",
16927+ "m.megolm.v1.aes-sha2"
16928+ ],
16929+ "device_id": "ALICEDEVICE1612",
16930+ "keys": {
16931+ "curve25519:ALICEDEVICE1612": "eAWmb8yA1h0Ri9RHwkk0XGOq1q+qPKrg6HGjAq7tV3A",
16932+ "ed25519:ALICEDEVICE1612": "Y1nDrM7LiNcisBMTKZONwiZlROB3XXVZdTxOXHpFWlQ"
16933+ },
16934+ "signatures": {
16935+ "@alice_1612:hs1": {
16936+ "ed25519:ALICEDEVICE1612": "lhTqcpdB5zYBnG11Jw8OaFoJuvNlcokKZGbxu6HdCiGogj/5P9j4h1McrlsIdPRB1KWUDEcCGfHd+ZcDSjhyCw"
16937+ }
16938+ },
16939+ "user_id": "@alice_1612:hs1",
16940+ "unsigned": {}
16941+ }
16942+ },
16943+ "@alice_1625:hs1": {
16944+ "ALICEDEVICE1625": {
16945+ "algorithms": [
16946+ "m.olm.v1.curve25519-aes-sha2",
16947+ "m.megolm.v1.aes-sha2"
16948+ ],
16949+ "device_id": "ALICEDEVICE1625",
16950+ "keys": {
16951+ "curve25519:ALICEDEVICE1625": "hMImA77TH2y9eu1uucczfItVqZGe7pBuvgvVD0p6eQM",
16952+ "ed25519:ALICEDEVICE1625": "xa1SMTgl+WzXdzZ4yJSAgT0onxctToBpekLHNATeUPA"
16953+ },
16954+ "signatures": {
16955+ "@alice_1625:hs1": {
16956+ "ed25519:ALICEDEVICE1625": "exu+7ZQhLX7I+laPT9p0M8q7toLYNd9QuoEF09lzvAWo6m1/xa8Ci1aAUt7z6ZTgh05DhXjEhjbVuSeQpdMxAw"
16957+ }
16958+ },
16959+ "user_id": "@alice_1625:hs1",
16960+ "unsigned": {}
16961+ }
16962+ },
16963+ "@alice_1637:hs1": {
16964+ "ALICEDEVICE1637": {
16965+ "algorithms": [
16966+ "m.olm.v1.curve25519-aes-sha2",
16967+ "m.megolm.v1.aes-sha2"
16968+ ],
16969+ "device_id": "ALICEDEVICE1637",
16970+ "keys": {
16971+ "curve25519:ALICEDEVICE1637": "PzI1q46Ev8q0afX5KP8iGnSDJkXo03ujmBeT9PXoQjE",
16972+ "ed25519:ALICEDEVICE1637": "+Ls3bihYjFKmr9+ffN2lWet+zoHxrGK3NDDigKz43N4"
16973+ },
16974+ "signatures": {
16975+ "@alice_1637:hs1": {
16976+ "ed25519:ALICEDEVICE1637": "EYOLBMAtjGnLK66c3yaePYYJDEKuUT6KykkWgGEqyX/4S12INMigZsbUPPo9flvzVUqKuCdAEY8hdfmpQIf+Bw"
16977+ }
16978+ },
16979+ "user_id": "@alice_1637:hs1",
16980+ "unsigned": {}
16981+ }
16982+ },
16983+ "@alice_1644:hs1": {
16984+ "ALICEDEVICE1644": {
16985+ "algorithms": [
16986+ "m.olm.v1.curve25519-aes-sha2",
16987+ "m.megolm.v1.aes-sha2"
16988+ ],
16989+ "device_id": "ALICEDEVICE1644",
16990+ "keys": {
16991+ "curve25519:ALICEDEVICE1644": "gCv9sYSjCSSY/1+gyWrcJEk9iSs6otBtOG/rNb2XQBg",
16992+ "ed25519:ALICEDEVICE1644": "ZFA57f8F3qfVXoeW7CUeEYc/u8A4tLPF1bnviVXxcmk"
16993+ },
16994+ "signatures": {
16995+ "@alice_1644:hs1": {
16996+ "ed25519:ALICEDEVICE1644": "X7awfccBUe6NsQ6qiljkiccTS5EInRm2viUO/K9txvdhypnszPm8pq1hYy+5mGDNho0NKff2mZMUFET9cV1BCw"
16997+ }
16998+ },
16999+ "user_id": "@alice_1644:hs1",
17000+ "unsigned": {}
17001+ }
17002+ },
17003+ "@alice_1655:hs1": {
17004+ "ALICEDEVICE1655": {
17005+ "algorithms": [
17006+ "m.olm.v1.curve25519-aes-sha2",
17007+ "m.megolm.v1.aes-sha2"
17008+ ],
17009+ "device_id": "ALICEDEVICE1655",
17010+ "keys": {
17011+ "curve25519:ALICEDEVICE1655": "oRFOK7dBZ4gM7YywvSxbfHZ5mT+INbxWsjgKFm2HzzI",
17012+ "ed25519:ALICEDEVICE1655": "TNeo7aa81AUAyPwDzXQIpFbVUyIRejLnVyw3M3bCZ4s"
17013+ },
17014+ "signatures": {
17015+ "@alice_1655:hs1": {
17016+ "ed25519:ALICEDEVICE1655": "ycPQV9oZ1+HUdGIavfHSZTyFQ2JojqbTUNb+9PxH8gFy6myI0a8I6U92k4l7WfXB7bpa2jItlQvkqHOt21vfAA"
17017+ }
17018+ },
17019+ "user_id": "@alice_1655:hs1",
17020+ "unsigned": {}
17021+ }
17022+ },
17023+ "@alice_166:hs1": {
17024+ "ALICEDEVICE166": {
17025+ "algorithms": [
17026+ "m.olm.v1.curve25519-aes-sha2",
17027+ "m.megolm.v1.aes-sha2"
17028+ ],
17029+ "device_id": "ALICEDEVICE166",
17030+ "keys": {
17031+ "curve25519:ALICEDEVICE166": "wkwEd3Tulc2jc1ZHydc1rDQd0ATqvdGBspBtxjt9UD4",
17032+ "ed25519:ALICEDEVICE166": "m/wpLcY+EkhcrxVn96SSDMbKFsX1zDXxY1XgLAH6ldo"
17033+ },
17034+ "signatures": {
17035+ "@alice_166:hs1": {
17036+ "ed25519:ALICEDEVICE166": "ZoU0NnXYFeUGLeptV4P2637Lh9OPgj5q31MOBA2yG8xPZSrjX27IwMpBR5im2IQGRA2/6B7jwh8S+kFytp3NBw"
17037+ }
17038+ },
17039+ "user_id": "@alice_166:hs1",
17040+ "unsigned": {}
17041+ }
17042+ },
17043+ "@alice_1681:hs1": {
17044+ "ALICEDEVICE1681": {
17045+ "algorithms": [
17046+ "m.olm.v1.curve25519-aes-sha2",
17047+ "m.megolm.v1.aes-sha2"
17048+ ],
17049+ "device_id": "ALICEDEVICE1681",
17050+ "keys": {
17051+ "curve25519:ALICEDEVICE1681": "u1xY7F4uFC3inumJt+Ta8P1G+T7hEZkxQljdaz8d514",
17052+ "ed25519:ALICEDEVICE1681": "qKW3q4dSZUDqasq3mIqKDC6VB0HCnLDcgR0SJOcPPiA"
17053+ },
17054+ "signatures": {
17055+ "@alice_1681:hs1": {
17056+ "ed25519:ALICEDEVICE1681": "XSfX8sSZmUwMBX/kBEl0yM36vcJOrX4VibPanzzl06lJoqzTHP1KZh9KhxmnOTyT8qJu0q3oC8N6aQkNFUlMBA"
17057+ }
17058+ },
17059+ "user_id": "@alice_1681:hs1",
17060+ "unsigned": {}
17061+ }
17062+ },
17063+ "@alice_1685:hs1": {
17064+ "ALICEDEVICE1685": {
17065+ "algorithms": [
17066+ "m.olm.v1.curve25519-aes-sha2",
17067+ "m.megolm.v1.aes-sha2"
17068+ ],
17069+ "device_id": "ALICEDEVICE1685",
17070+ "keys": {
17071+ "curve25519:ALICEDEVICE1685": "AArcMwNrjtPihkhGb2Yjnyb/WVRKCZm1I0WXFbFJBm4",
17072+ "ed25519:ALICEDEVICE1685": "2Wrtyt4o4xXiZ+BgexIFXpWq5g/gAunc+qs+6RbvDTU"
17073+ },
17074+ "signatures": {
17075+ "@alice_1685:hs1": {
17076+ "ed25519:ALICEDEVICE1685": "67sn/ilEBRciT6t9clVs3P3g+7xFXz/z6hh7NXGr3nmkYZU3CWErGjeO3y22wWSYaCue/7kdiV6FBTcLNPytCg"
17077+ }
17078+ },
17079+ "user_id": "@alice_1685:hs1",
17080+ "unsigned": {}
17081+ }
17082+ },
17083+ "@alice_1689:hs1": {
17084+ "ALICEDEVICE1689": {
17085+ "algorithms": [
17086+ "m.olm.v1.curve25519-aes-sha2",
17087+ "m.megolm.v1.aes-sha2"
17088+ ],
17089+ "device_id": "ALICEDEVICE1689",
17090+ "keys": {
17091+ "curve25519:ALICEDEVICE1689": "Qv1l4/8EDeDu2DzPNuK6SwxpSLWYIJaZUzLofU7UsCg",
17092+ "ed25519:ALICEDEVICE1689": "diRJTn+tcvJ4X7YYYPAFAoPsR/tYJMr1T9/BEaBHGAc"
17093+ },
17094+ "signatures": {
17095+ "@alice_1689:hs1": {
17096+ "ed25519:ALICEDEVICE1689": "g2OJ+kYu8wtTzpWMUeLid9ShQAw8mM448BlqaTm1QdxwDErSH9ph1iLLYDObxoArkl2dZGmrtMfsm1OcueKsAA"
17097+ }
17098+ },
17099+ "user_id": "@alice_1689:hs1",
17100+ "unsigned": {}
17101+ }
17102+ },
17103+ "@alice_168:hs1": {
17104+ "ALICEDEVICE168": {
17105+ "algorithms": [
17106+ "m.olm.v1.curve25519-aes-sha2",
17107+ "m.megolm.v1.aes-sha2"
17108+ ],
17109+ "device_id": "ALICEDEVICE168",
17110+ "keys": {
17111+ "curve25519:ALICEDEVICE168": "m3cF8YHRNHs64MYcLIpz3ysTIgxGvH7MFJpvGmcj9iY",
17112+ "ed25519:ALICEDEVICE168": "qATYblV0IXJJXB5S1f9ykIiX3qgRXciYkGsnTLAxjzI"
17113+ },
17114+ "signatures": {
17115+ "@alice_168:hs1": {
17116+ "ed25519:ALICEDEVICE168": "WtOgYwI7/egrLIateAAxvuJ80mRGpg2zPwPhahtvg/gYjkLgPYSzHAKiwh3LGf7r4yz8oUjg0kvjAZy+YX2TCA"
17117+ }
17118+ },
17119+ "user_id": "@alice_168:hs1",
17120+ "unsigned": {}
17121+ }
17122+ },
17123+ "@alice_1690:hs1": {
17124+ "ALICEDEVICE1690": {
17125+ "algorithms": [
17126+ "m.olm.v1.curve25519-aes-sha2",
17127+ "m.megolm.v1.aes-sha2"
17128+ ],
17129+ "device_id": "ALICEDEVICE1690",
17130+ "keys": {
17131+ "curve25519:ALICEDEVICE1690": "edn6AQ695GV8MOrldRc4yNdhGUJo1anXOCGfnBhGI3M",
17132+ "ed25519:ALICEDEVICE1690": "2AE3O7NnSe4qwsx0pa3T7gSYzEUY//vNingPSZ+hGes"
17133+ },
17134+ "signatures": {
17135+ "@alice_1690:hs1": {
17136+ "ed25519:ALICEDEVICE1690": "m8Ldo3eM22DDTWDo1Bn7HWWUiX2njwiR5AQAELXWJqRUnKSkbVf4jqYz+vYayTO+sq1M+0QNogGhFyuosZgoDw"
17137+ }
17138+ },
17139+ "user_id": "@alice_1690:hs1",
17140+ "unsigned": {}
17141+ }
17142+ },
17143+ "@alice_1692:hs1": {
17144+ "ALICEDEVICE1692": {
17145+ "algorithms": [
17146+ "m.olm.v1.curve25519-aes-sha2",
17147+ "m.megolm.v1.aes-sha2"
17148+ ],
17149+ "device_id": "ALICEDEVICE1692",
17150+ "keys": {
17151+ "curve25519:ALICEDEVICE1692": "bMe65D+87aBpFCKvJojLcuMLhIDWJud9KiHgqKVDhG4",
17152+ "ed25519:ALICEDEVICE1692": "/F/3oGNn0NEDs7x0b3Q5PaFUfnwbZ7QNryNEzKG5mNg"
17153+ },
17154+ "signatures": {
17155+ "@alice_1692:hs1": {
17156+ "ed25519:ALICEDEVICE1692": "ntL63RkUvEQc7cLu571pWsOHm3GEN5cROXmKpaM784VQMgPr0e/Hd8qFPPAEU8rTf2J1tGlRSaBxJLcPYJv6CA"
17157+ }
17158+ },
17159+ "user_id": "@alice_1692:hs1",
17160+ "unsigned": {}
17161+ }
17162+ },
17163+ "@alice_1695:hs1": {
17164+ "ALICEDEVICE1695": {
17165+ "algorithms": [
17166+ "m.olm.v1.curve25519-aes-sha2",
17167+ "m.megolm.v1.aes-sha2"
17168+ ],
17169+ "device_id": "ALICEDEVICE1695",
17170+ "keys": {
17171+ "curve25519:ALICEDEVICE1695": "jaWL00OxctWr00ukywHI1rDVoWWmZpA4AcY3oOGt1mM",
17172+ "ed25519:ALICEDEVICE1695": "ZnwV+JoIoo2WKDIxrkLEhYxWzmpV7mbcaf6qeSx+zRM"
17173+ },
17174+ "signatures": {
17175+ "@alice_1695:hs1": {
17176+ "ed25519:ALICEDEVICE1695": "FxJDOq1THQnS9raBygxnxLwRXP06p4LOKtsKBbqgZ/prTN63C6WohAwO25OYx19PWvWVt+wWsZmLlzqsVSUYBw"
17177+ }
17178+ },
17179+ "user_id": "@alice_1695:hs1",
17180+ "unsigned": {}
17181+ }
17182+ },
17183+ "@alice_1698:hs1": {
17184+ "ALICEDEVICE1698": {
17185+ "algorithms": [
17186+ "m.olm.v1.curve25519-aes-sha2",
17187+ "m.megolm.v1.aes-sha2"
17188+ ],
17189+ "device_id": "ALICEDEVICE1698",
17190+ "keys": {
17191+ "curve25519:ALICEDEVICE1698": "nNtxMA0pbIuZBnHryrK7bwdg9k5S5+BJNz14VWAN0ws",
17192+ "ed25519:ALICEDEVICE1698": "wCHGG/gVhZirpWhnAf019b82fVfLGRNe5dYhbAeH65o"
17193+ },
17194+ "signatures": {
17195+ "@alice_1698:hs1": {
17196+ "ed25519:ALICEDEVICE1698": "ZeX1erIlXJm7d5OchLT8TYHBViclsa3sRDkjb+0HtwYaL14ygYOzNwTZqUvs7ehR7Ae0CkJqVqT0GSl6XySwDA"
17197+ }
17198+ },
17199+ "user_id": "@alice_1698:hs1",
17200+ "unsigned": {}
17201+ }
17202+ },
17203+ "@alice_1700:hs1": {
17204+ "ALICEDEVICE1700": {
17205+ "algorithms": [
17206+ "m.olm.v1.curve25519-aes-sha2",
17207+ "m.megolm.v1.aes-sha2"
17208+ ],
17209+ "device_id": "ALICEDEVICE1700",
17210+ "keys": {
17211+ "curve25519:ALICEDEVICE1700": "Js7EOrN1xWZGeyMD5EkPAhiMXOegvqrkelFvTbb89kk",
17212+ "ed25519:ALICEDEVICE1700": "SBAiNJPGiZl4hB+QOBQU9B5AKuPYOl9h+S6T0RX4pCE"
17213+ },
17214+ "signatures": {
17215+ "@alice_1700:hs1": {
17216+ "ed25519:ALICEDEVICE1700": "cLnoRfbe9Zeh/5pKbo+vVPkNuNCfBB8hWkMAzOnTVEUSXrGykzcLcZ9XPGS/X7ezIgNxnBBusZYnGS06Tb0dDA"
17217+ }
17218+ },
17219+ "user_id": "@alice_1700:hs1",
17220+ "unsigned": {}
17221+ }
17222+ },
17223+ "@alice_1709:hs1": {
17224+ "ALICEDEVICE1709": {
17225+ "algorithms": [
17226+ "m.olm.v1.curve25519-aes-sha2",
17227+ "m.megolm.v1.aes-sha2"
17228+ ],
17229+ "device_id": "ALICEDEVICE1709",
17230+ "keys": {
17231+ "curve25519:ALICEDEVICE1709": "aeXEdxaFKa+4pEC9xUwdfirwUtOVirnnVYT15mD2J3I",
17232+ "ed25519:ALICEDEVICE1709": "K7RZNtyh6dGnW1D43cGXMEjKgY9dg5bNByGtTNH8meI"
17233+ },
17234+ "signatures": {
17235+ "@alice_1709:hs1": {
17236+ "ed25519:ALICEDEVICE1709": "9E8koUGX6IBZDU+U5QTv3/fvWMQ+BijnkJ5D5yCcO9jHTOMByHHcI9tlzRul0m/FXdLFylWcdubOMKSH/gWACw"
17237+ }
17238+ },
17239+ "user_id": "@alice_1709:hs1",
17240+ "unsigned": {}
17241+ }
17242+ },
17243+ "@alice_1721:hs1": {
17244+ "ALICEDEVICE1721": {
17245+ "algorithms": [
17246+ "m.olm.v1.curve25519-aes-sha2",
17247+ "m.megolm.v1.aes-sha2"
17248+ ],
17249+ "device_id": "ALICEDEVICE1721",
17250+ "keys": {
17251+ "curve25519:ALICEDEVICE1721": "g2vbLmtBdPCOcNPAnE/2Dx9gtw90IS7VoYSTGrBRc3o",
17252+ "ed25519:ALICEDEVICE1721": "qJv1k6fG9ugRYQEWCI2VamnyvpCExcL6l4uuOxw4g+w"
17253+ },
17254+ "signatures": {
17255+ "@alice_1721:hs1": {
17256+ "ed25519:ALICEDEVICE1721": "/Md5dAditJT2A1nH8ULfpObJFC4VMUjDZkvKf3hvDd8/LDiyS9xYLiPrvILR85VYyGEPcWj+aJ1Ucd5V3QQSAA"
17257+ }
17258+ },
17259+ "user_id": "@alice_1721:hs1",
17260+ "unsigned": {}
17261+ }
17262+ },
17263+ "@alice_1722:hs1": {
17264+ "ALICEDEVICE1722": {
17265+ "algorithms": [
17266+ "m.olm.v1.curve25519-aes-sha2",
17267+ "m.megolm.v1.aes-sha2"
17268+ ],
17269+ "device_id": "ALICEDEVICE1722",
17270+ "keys": {
17271+ "curve25519:ALICEDEVICE1722": "vkmLIreA5VOUedOzHeTLWQBVE8hoO4xA8bauawf14jE",
17272+ "ed25519:ALICEDEVICE1722": "By6q16uTkBH3/C3bBAnel+VXJTviqmXfiPVZ30pLeBw"
17273+ },
17274+ "signatures": {
17275+ "@alice_1722:hs1": {
17276+ "ed25519:ALICEDEVICE1722": "C/TRgakCTysToqQe+teTcda1GXOf5dVT94jti6YVvg6yhpq2TRJPh5X3DuC2sXWwoK2XSdCpw8SlSaJFoS0JBA"
17277+ }
17278+ },
17279+ "user_id": "@alice_1722:hs1",
17280+ "unsigned": {}
17281+ }
17282+ },
17283+ "@alice_172:hs1": {
17284+ "ALICEDEVICE172": {
17285+ "algorithms": [
17286+ "m.olm.v1.curve25519-aes-sha2",
17287+ "m.megolm.v1.aes-sha2"
17288+ ],
17289+ "device_id": "ALICEDEVICE172",
17290+ "keys": {
17291+ "curve25519:ALICEDEVICE172": "ZSTFXgBu7Y+8VcHvX2yVadSEnIhDW/0aGQrRQNwKfjA",
17292+ "ed25519:ALICEDEVICE172": "+yJW2onxuGJFpiDLg0aDOynZV2mUoOlXjaAJ7OOtH4M"
17293+ },
17294+ "signatures": {
17295+ "@alice_172:hs1": {
17296+ "ed25519:ALICEDEVICE172": "D/WWB+CGWIsoTTuhLW2OzYwAus3ZrRi+pirYkmyswW5gsp3lB9M+kqG4B/sqXs4TmbQYetG+luKkTOUyUX0dCQ"
17297+ }
17298+ },
17299+ "user_id": "@alice_172:hs1",
17300+ "unsigned": {}
17301+ }
17302+ },
17303+ "@alice_1733:hs1": {
17304+ "ALICEDEVICE1733": {
17305+ "algorithms": [
17306+ "m.olm.v1.curve25519-aes-sha2",
17307+ "m.megolm.v1.aes-sha2"
17308+ ],
17309+ "device_id": "ALICEDEVICE1733",
17310+ "keys": {
17311+ "curve25519:ALICEDEVICE1733": "3unp9bWp3rcumo8pJpW8kfzeCeEbVCUImJCYhRelhXk",
17312+ "ed25519:ALICEDEVICE1733": "w10lcLZs5o8+jylOiBuCgV63JINrwqBk9E6MIx8JNr8"
17313+ },
17314+ "signatures": {
17315+ "@alice_1733:hs1": {
17316+ "ed25519:ALICEDEVICE1733": "adCma0xoHJnQy/pAFxJWI5kAWIl/2xHh6x2DgL4kr478ZeK6MM6y2PEkch0dlLl2AkWGIfUb8eZhVVbIpQi1DQ"
17317+ }
17318+ },
17319+ "user_id": "@alice_1733:hs1",
17320+ "unsigned": {}
17321+ }
17322+ },
17323+ "@alice_1735:hs1": {
17324+ "ALICEDEVICE1735": {
17325+ "algorithms": [
17326+ "m.olm.v1.curve25519-aes-sha2",
17327+ "m.megolm.v1.aes-sha2"
17328+ ],
17329+ "device_id": "ALICEDEVICE1735",
17330+ "keys": {
17331+ "curve25519:ALICEDEVICE1735": "2lhZdnVCgOTj7MoAIAfE5PPKlMauFAnlREHx1W35vR0",
17332+ "ed25519:ALICEDEVICE1735": "rXrjlLaIzHewW6X/aU9jK6G8/sA5BBRTQvSrD/9xcGM"
17333+ },
17334+ "signatures": {
17335+ "@alice_1735:hs1": {
17336+ "ed25519:ALICEDEVICE1735": "0wG+O2wyaRcm75xP2QxeTCbvWlrM2xEczHIJE6QwwoxnI+7aM85QJ1QDwQRJaGiBv8Xznuu7DdOff+ocQeZjBA"
17337+ }
17338+ },
17339+ "user_id": "@alice_1735:hs1",
17340+ "unsigned": {}
17341+ }
17342+ },
17343+ "@alice_1739:hs1": {
17344+ "ALICEDEVICE1739": {
17345+ "algorithms": [
17346+ "m.olm.v1.curve25519-aes-sha2",
17347+ "m.megolm.v1.aes-sha2"
17348+ ],
17349+ "device_id": "ALICEDEVICE1739",
17350+ "keys": {
17351+ "curve25519:ALICEDEVICE1739": "bfdxX+EVsovDfsdj1+nHUx38lITWMg4VkI7xlhh7nQk",
17352+ "ed25519:ALICEDEVICE1739": "Z09EbHz93dIfLpn6udnxMqlp338qJrkvu42jq3L56TE"
17353+ },
17354+ "signatures": {
17355+ "@alice_1739:hs1": {
17356+ "ed25519:ALICEDEVICE1739": "TOWIBAhkSBInVkIx9ALzz4TcEiKjHAH45crtivu5TyOquN5Hm6CNqQ5zgc/kNHgKFCS1YoOrcWVOVqkRIwOeDA"
17357+ }
17358+ },
17359+ "user_id": "@alice_1739:hs1",
17360+ "unsigned": {}
17361+ }
17362+ },
17363+ "@alice_173:hs1": {
17364+ "ALICEDEVICE173": {
17365+ "algorithms": [
17366+ "m.olm.v1.curve25519-aes-sha2",
17367+ "m.megolm.v1.aes-sha2"
17368+ ],
17369+ "device_id": "ALICEDEVICE173",
17370+ "keys": {
17371+ "curve25519:ALICEDEVICE173": "q82hiZFJWVSihhBHuFAc+cOwR4HkKXTrC/yE7bxRkEE",
17372+ "ed25519:ALICEDEVICE173": "pNDIszXa7WenU+kgNaBzDAM97+Rxhd7hbEcBQuJv4dI"
17373+ },
17374+ "signatures": {
17375+ "@alice_173:hs1": {
17376+ "ed25519:ALICEDEVICE173": "KSwxORXNuVa58G+C+fJcWSqZPXBeFlxNQwz5vV7eGB9q46KSXQYK9P9WKj+hwbyPwdkOq2KJSo1gzKAP+rCRBw"
17377+ }
17378+ },
17379+ "user_id": "@alice_173:hs1",
17380+ "unsigned": {}
17381+ }
17382+ },
17383+ "@alice_1756:hs1": {
17384+ "ALICEDEVICE1756": {
17385+ "algorithms": [
17386+ "m.olm.v1.curve25519-aes-sha2",
17387+ "m.megolm.v1.aes-sha2"
17388+ ],
17389+ "device_id": "ALICEDEVICE1756",
17390+ "keys": {
17391+ "curve25519:ALICEDEVICE1756": "OzsDunwAjt1aEdWRRL0rut8B8MbHfY0Q0sY8IwR68ls",
17392+ "ed25519:ALICEDEVICE1756": "ux09ap8/cL83aDLFIojx310eaH9XxxD9sccT+33gJ8c"
17393+ },
17394+ "signatures": {
17395+ "@alice_1756:hs1": {
17396+ "ed25519:ALICEDEVICE1756": "VQ1BvJPUfVfnYxAiY8BCw3m2vrxlQciO89+LZnhcWQlMcN+McuujM8n5S7x5aZ0zHMJUTViHqSkYNt+JngV8Ag"
17397+ }
17398+ },
17399+ "user_id": "@alice_1756:hs1",
17400+ "unsigned": {}
17401+ }
17402+ },
17403+ "@alice_1757:hs1": {
17404+ "ALICEDEVICE1757": {
17405+ "algorithms": [
17406+ "m.olm.v1.curve25519-aes-sha2",
17407+ "m.megolm.v1.aes-sha2"
17408+ ],
17409+ "device_id": "ALICEDEVICE1757",
17410+ "keys": {
17411+ "curve25519:ALICEDEVICE1757": "f3Q+42/z6+751g37Vo9/Nu4s6dvE2sUABUy38Smeqxw",
17412+ "ed25519:ALICEDEVICE1757": "HBaa3UAZQOwuIN1FWe4dnzJDZh7SM6TI/gMBw66fsZY"
17413+ },
17414+ "signatures": {
17415+ "@alice_1757:hs1": {
17416+ "ed25519:ALICEDEVICE1757": "37luGwZvWClQiOKd5ukrceuWcJ8yp5WPHPAAJZjr5mvRROgh3npl/hf9O6ExPbSDL1xfX9t6NGjW63//BpCSAw"
17417+ }
17418+ },
17419+ "user_id": "@alice_1757:hs1",
17420+ "unsigned": {}
17421+ }
17422+ },
17423+ "@alice_1762:hs1": {
17424+ "ALICEDEVICE1762": {
17425+ "algorithms": [
17426+ "m.olm.v1.curve25519-aes-sha2",
17427+ "m.megolm.v1.aes-sha2"
17428+ ],
17429+ "device_id": "ALICEDEVICE1762",
17430+ "keys": {
17431+ "curve25519:ALICEDEVICE1762": "HrcKmyDfmJ0cAwwvipOby+2nCqRFCuLMzYM8F6cZrTo",
17432+ "ed25519:ALICEDEVICE1762": "xs1FDVosJ4dAwMhw/9jUtzwK9W2WYFFIMjvT99QSlCw"
17433+ },
17434+ "signatures": {
17435+ "@alice_1762:hs1": {
17436+ "ed25519:ALICEDEVICE1762": "UtNgbT+igAb/F+MZmRQ4RDZqqURi2DuFsk0qzdAHNyyJ6S+gB5WG1ni3vCVwDLi9QR1e0aA6IjY7Yyhgix8QAg"
17437+ }
17438+ },
17439+ "user_id": "@alice_1762:hs1",
17440+ "unsigned": {}
17441+ }
17442+ },
17443+ "@alice_1763:hs1": {
17444+ "ALICEDEVICE1763": {
17445+ "algorithms": [
17446+ "m.olm.v1.curve25519-aes-sha2",
17447+ "m.megolm.v1.aes-sha2"
17448+ ],
17449+ "device_id": "ALICEDEVICE1763",
17450+ "keys": {
17451+ "curve25519:ALICEDEVICE1763": "DsBp+Br3/zW7EngbGEUA0btzwLSezx60aDSVxPOmUyc",
17452+ "ed25519:ALICEDEVICE1763": "0aFa3twpJvc9nJWuuPdw1lZcsLi+5b16RnE2HYebl5g"
17453+ },
17454+ "signatures": {
17455+ "@alice_1763:hs1": {
17456+ "ed25519:ALICEDEVICE1763": "wCUdBbfEN9Cnx5d9Tekn+0va24eyvHgfVLCt7T2fAGgU4SOCwt/4C8utAn0oklfa5McL64VVVnPbLhcOKG3WDA"
17457+ }
17458+ },
17459+ "user_id": "@alice_1763:hs1",
17460+ "unsigned": {}
17461+ }
17462+ },
17463+ "@alice_1764:hs1": {
17464+ "ALICEDEVICE1764": {
17465+ "algorithms": [
17466+ "m.olm.v1.curve25519-aes-sha2",
17467+ "m.megolm.v1.aes-sha2"
17468+ ],
17469+ "device_id": "ALICEDEVICE1764",
17470+ "keys": {
17471+ "curve25519:ALICEDEVICE1764": "9dGUAwM2YCDrPOStlr//NRkqaLvgVAMRP6ivl6gPVjQ",
17472+ "ed25519:ALICEDEVICE1764": "mMekLm5YUDDkzsPbgTz+qpHjqcnfSLCC9+9lidMrYJA"
17473+ },
17474+ "signatures": {
17475+ "@alice_1764:hs1": {
17476+ "ed25519:ALICEDEVICE1764": "8TmxSPk0NdqxfSQM46dyNqOJKXsHccHrjrmmSQOl6BVykWOKfq6kHeYi4rHK5NXtiOudSekNDnab+hyjgZpnDg"
17477+ }
17478+ },
17479+ "user_id": "@alice_1764:hs1",
17480+ "unsigned": {}
17481+ }
17482+ },
17483+ "@alice_1768:hs1": {
17484+ "ALICEDEVICE1768": {
17485+ "algorithms": [
17486+ "m.olm.v1.curve25519-aes-sha2",
17487+ "m.megolm.v1.aes-sha2"
17488+ ],
17489+ "device_id": "ALICEDEVICE1768",
17490+ "keys": {
17491+ "curve25519:ALICEDEVICE1768": "LqdRwoG+EXFeF8Q/x0yPjgqdPAwxhlVUb+Igxp5vCTA",
17492+ "ed25519:ALICEDEVICE1768": "0zOUEI3GOn7yo9VW00/y312nbmFtgIOuBcV5Sih7o7Y"
17493+ },
17494+ "signatures": {
17495+ "@alice_1768:hs1": {
17496+ "ed25519:ALICEDEVICE1768": "TffeR05GuY/1h2Y90l8lDwJ+x/hjAg3IsBj5pRtXelLr6LpTkEdCkEsRBdtoh8JBc624FEh3kwhSCMLPKA+4CQ"
17497+ }
17498+ },
17499+ "user_id": "@alice_1768:hs1",
17500+ "unsigned": {}
17501+ }
17502+ },
17503+ "@alice_1771:hs1": {
17504+ "ALICEDEVICE1771": {
17505+ "algorithms": [
17506+ "m.olm.v1.curve25519-aes-sha2",
17507+ "m.megolm.v1.aes-sha2"
17508+ ],
17509+ "device_id": "ALICEDEVICE1771",
17510+ "keys": {
17511+ "curve25519:ALICEDEVICE1771": "3SST7ehnMQRhSWeh3N4AuyMmub7g2xLpJrEG/dVW+F8",
17512+ "ed25519:ALICEDEVICE1771": "D/WS/UWg+8FyFkHtXWubN+1RwQiBCGNlB4w4Upe5u4Y"
17513+ },
17514+ "signatures": {
17515+ "@alice_1771:hs1": {
17516+ "ed25519:ALICEDEVICE1771": "PKi4boJw4mpPKQid3kpRiYZzok/64ZUBL2gZKaqpXhZS6zL0dBZYiRkHGH/mm/kg2ypzaV6G8+kodFVMPZEYBQ"
17517+ }
17518+ },
17519+ "user_id": "@alice_1771:hs1",
17520+ "unsigned": {}
17521+ }
17522+ },
17523+ "@alice_1775:hs1": {
17524+ "ALICEDEVICE1775": {
17525+ "algorithms": [
17526+ "m.olm.v1.curve25519-aes-sha2",
17527+ "m.megolm.v1.aes-sha2"
17528+ ],
17529+ "device_id": "ALICEDEVICE1775",
17530+ "keys": {
17531+ "curve25519:ALICEDEVICE1775": "xwPzBGP+tvH2hLd/EBubR66CSxIVhmMyiERSNcR5TCc",
17532+ "ed25519:ALICEDEVICE1775": "PHwrymhPLwfwYnRUINBI2YW2SdpPCy1q2C0ufWWhBLQ"
17533+ },
17534+ "signatures": {
17535+ "@alice_1775:hs1": {
17536+ "ed25519:ALICEDEVICE1775": "oO9Fk59v1oH0n/WfIqQe6LhYyIvXEKH4xYFliif07YMAqyyLraYSqWSWsR/u6fkbmZG1YBtwCWCmOmm++OchAQ"
17537+ }
17538+ },
17539+ "user_id": "@alice_1775:hs1",
17540+ "unsigned": {}
17541+ }
17542+ },
17543+ "@alice_1782:hs1": {
17544+ "ALICEDEVICE1782": {
17545+ "algorithms": [
17546+ "m.olm.v1.curve25519-aes-sha2",
17547+ "m.megolm.v1.aes-sha2"
17548+ ],
17549+ "device_id": "ALICEDEVICE1782",
17550+ "keys": {
17551+ "curve25519:ALICEDEVICE1782": "Vh2HaL8mqTD073tHdrH8zG2+/HVEeaGu7oIC3Pjc2yM",
17552+ "ed25519:ALICEDEVICE1782": "Spql/xDtZQuSkVsWendIytkRIVb3eAWna9a71k1CWOI"
17553+ },
17554+ "signatures": {
17555+ "@alice_1782:hs1": {
17556+ "ed25519:ALICEDEVICE1782": "LBabF/ZvJv5zH05S1db19Q1ANLENY8trzpVCS1WlwZWL14tcOUIFXlRvez7sbkN6TJvZFbElsIzbqPEgtRVPCg"
17557+ }
17558+ },
17559+ "user_id": "@alice_1782:hs1",
17560+ "unsigned": {}
17561+ }
17562+ },
17563+ "@alice_1804:hs1": {
17564+ "ALICEDEVICE1804": {
17565+ "algorithms": [
17566+ "m.olm.v1.curve25519-aes-sha2",
17567+ "m.megolm.v1.aes-sha2"
17568+ ],
17569+ "device_id": "ALICEDEVICE1804",
17570+ "keys": {
17571+ "curve25519:ALICEDEVICE1804": "lusKtBMghz61UWz6m85O9WsPMKXbnA9njfUaz54buCE",
17572+ "ed25519:ALICEDEVICE1804": "1kAn2TPN/r/8B/6OnaLh023cKdvwoddi2Zya1lWbyZ0"
17573+ },
17574+ "signatures": {
17575+ "@alice_1804:hs1": {
17576+ "ed25519:ALICEDEVICE1804": "QNHsK25g/f3hK3QsXZIimi7lfKeJxQKKOARcO1lsM6aEGtZ1Erl6sYXe95XmGyjk9PWQybsJFdZdfJrVX/PjCg"
17577+ }
17578+ },
17579+ "user_id": "@alice_1804:hs1",
17580+ "unsigned": {}
17581+ }
17582+ },
17583+ "@alice_1815:hs1": {
17584+ "ALICEDEVICE1815": {
17585+ "algorithms": [
17586+ "m.olm.v1.curve25519-aes-sha2",
17587+ "m.megolm.v1.aes-sha2"
17588+ ],
17589+ "device_id": "ALICEDEVICE1815",
17590+ "keys": {
17591+ "curve25519:ALICEDEVICE1815": "qyGZ0DXtzZA28ncAxWD1+4W3/3SAurtdwcQmAyMYZTw",
17592+ "ed25519:ALICEDEVICE1815": "Dx/lkGP4wwMPwDMoI8X3hQm8qSniRfc+BkLpHG7WN38"
17593+ },
17594+ "signatures": {
17595+ "@alice_1815:hs1": {
17596+ "ed25519:ALICEDEVICE1815": "5hP+huAAbgfEkG08Z1G46Ibtey++HqJC2kC93L1MQ3mwvUeHkY/sX8Rk/rL44Sc9bOoclpaERPeVd9uKNk0oAg"
17597+ }
17598+ },
17599+ "user_id": "@alice_1815:hs1",
17600+ "unsigned": {}
17601+ }
17602+ },
17603+ "@alice_1821:hs1": {
17604+ "ALICEDEVICE1821": {
17605+ "algorithms": [
17606+ "m.olm.v1.curve25519-aes-sha2",
17607+ "m.megolm.v1.aes-sha2"
17608+ ],
17609+ "device_id": "ALICEDEVICE1821",
17610+ "keys": {
17611+ "curve25519:ALICEDEVICE1821": "V53fxnp1aTibZB5mwzTOMVeGK5NrsXnBGzBpXd6KB3E",
17612+ "ed25519:ALICEDEVICE1821": "iUBIw5OE5gTnUCFpWf9hXNtXIdvgw5sl8fKuFackTCo"
17613+ },
17614+ "signatures": {
17615+ "@alice_1821:hs1": {
17616+ "ed25519:ALICEDEVICE1821": "IKnM1NIz/Vn/0vvkcMYrmxf1RDBEdAY/2JyQBEvet9qXxWUgl6LgCSQ7lM6du4CwMa2RyPvHBZxjhlwxKtfTDQ"
17617+ }
17618+ },
17619+ "user_id": "@alice_1821:hs1",
17620+ "unsigned": {}
17621+ }
17622+ },
17623+ "@alice_1837:hs1": {
17624+ "ALICEDEVICE1837": {
17625+ "algorithms": [
17626+ "m.olm.v1.curve25519-aes-sha2",
17627+ "m.megolm.v1.aes-sha2"
17628+ ],
17629+ "device_id": "ALICEDEVICE1837",
17630+ "keys": {
17631+ "curve25519:ALICEDEVICE1837": "mygG6ZiCrPzYdPLWdpMMuAYKuYJlbBybiUojR6qGAjA",
17632+ "ed25519:ALICEDEVICE1837": "21bSPfYmbgbWY5Z1tF5/GwKWLQh4QGjGxZK6rhU04N8"
17633+ },
17634+ "signatures": {
17635+ "@alice_1837:hs1": {
17636+ "ed25519:ALICEDEVICE1837": "8UcwU5vEtPnhjjMbE572NI1nbd+ZyVmhg9kkzk5s3+DUUi1J9sCMir3rtSaS3EIQ2tUCRkXi/KyqByq5v1gTDQ"
17637+ }
17638+ },
17639+ "user_id": "@alice_1837:hs1",
17640+ "unsigned": {}
17641+ }
17642+ },
17643+ "@alice_1856:hs1": {
17644+ "ALICEDEVICE1856": {
17645+ "algorithms": [
17646+ "m.olm.v1.curve25519-aes-sha2",
17647+ "m.megolm.v1.aes-sha2"
17648+ ],
17649+ "device_id": "ALICEDEVICE1856",
17650+ "keys": {
17651+ "curve25519:ALICEDEVICE1856": "0lEsqwCbPNqFCGP6Vb/AobAq+GYiFZpw9xfB8Bhtdno",
17652+ "ed25519:ALICEDEVICE1856": "JB8oRjEuL/TpcNmSQlGYLzCWBfr4Vtminx8jAYX9R1c"
17653+ },
17654+ "signatures": {
17655+ "@alice_1856:hs1": {
17656+ "ed25519:ALICEDEVICE1856": "IWCud5WSDsM9/WEBxWJIQyZz+VrJwM4Jw0ZkGgAEMTzZ0R355bAvoBd05pjOajrb1mB+BSkGBqmxcPE1XGUTCQ"
17657+ }
17658+ },
17659+ "user_id": "@alice_1856:hs1",
17660+ "unsigned": {}
17661+ }
17662+ },
17663+ "@alice_1860:hs1": {
17664+ "ALICEDEVICE1860": {
17665+ "algorithms": [
17666+ "m.olm.v1.curve25519-aes-sha2",
17667+ "m.megolm.v1.aes-sha2"
17668+ ],
17669+ "device_id": "ALICEDEVICE1860",
17670+ "keys": {
17671+ "curve25519:ALICEDEVICE1860": "C5Go1Q/DGbRLiyuFG0Vj7pW0Kmm1JkM+rIU6+QLCQ1Y",
17672+ "ed25519:ALICEDEVICE1860": "sP7ciE10JJpSuUEMg3W5hItM2yUin0+5b1BZpK77XfA"
17673+ },
17674+ "signatures": {
17675+ "@alice_1860:hs1": {
17676+ "ed25519:ALICEDEVICE1860": "6FRDZrfMyV49dYEgiqSxOqz74oGvVfXFHI90WrXSPy0iseWDajfnzUKtzQmz/ZxAXIK/3ZyfEOoDfF9xrp2rAw"
17677+ }
17678+ },
17679+ "user_id": "@alice_1860:hs1",
17680+ "unsigned": {}
17681+ }
17682+ },
17683+ "@alice_1873:hs1": {
17684+ "ALICEDEVICE1873": {
17685+ "algorithms": [
17686+ "m.olm.v1.curve25519-aes-sha2",
17687+ "m.megolm.v1.aes-sha2"
17688+ ],
17689+ "device_id": "ALICEDEVICE1873",
17690+ "keys": {
17691+ "curve25519:ALICEDEVICE1873": "QqX92rsYtEh9+S9yi6CE5e0ZOOMkf0NhWRuMv16vOis",
17692+ "ed25519:ALICEDEVICE1873": "XMcdm6xQYrjDjhpgiBz0MDeFR3vAZPIizmrKDXjShLM"
17693+ },
17694+ "signatures": {
17695+ "@alice_1873:hs1": {
17696+ "ed25519:ALICEDEVICE1873": "eWJpjbVMIB/PFX6bitfMcSd3tOzphr+mXhwH5/Y48XU0u26fpAlHOSPbH+ELxwfK48lJghHxOJKDBbOzqj5+BA"
17697+ }
17698+ },
17699+ "user_id": "@alice_1873:hs1",
17700+ "unsigned": {}
17701+ }
17702+ },
17703+ "@alice_1878:hs1": {
17704+ "ALICEDEVICE1878": {
17705+ "algorithms": [
17706+ "m.olm.v1.curve25519-aes-sha2",
17707+ "m.megolm.v1.aes-sha2"
17708+ ],
17709+ "device_id": "ALICEDEVICE1878",
17710+ "keys": {
17711+ "curve25519:ALICEDEVICE1878": "q8cHpn2L+PUtge9ax+ZlQdzLra0Ms6oWKQiqq/oodhg",
17712+ "ed25519:ALICEDEVICE1878": "f4sHABO+ImmX5b/i9CPQYP3LXkuLYZ9JAQWoN9KBBbM"
17713+ },
17714+ "signatures": {
17715+ "@alice_1878:hs1": {
17716+ "ed25519:ALICEDEVICE1878": "Jb0RtVF1jfDiaxZmcTBJg/0Olp+Q9AglJ8WzlmxJ/5+nRN6V+rsdypD0NbcYyoUSs/nxFXkGofOGi5pc1P+VBg"
17717+ }
17718+ },
17719+ "user_id": "@alice_1878:hs1",
17720+ "unsigned": {}
17721+ }
17722+ },
17723+ "@alice_188:hs1": {
17724+ "ALICEDEVICE188": {
17725+ "algorithms": [
17726+ "m.olm.v1.curve25519-aes-sha2",
17727+ "m.megolm.v1.aes-sha2"
17728+ ],
17729+ "device_id": "ALICEDEVICE188",
17730+ "keys": {
17731+ "curve25519:ALICEDEVICE188": "kS+rY5yDbxLVFPShW6YVc4kGKjQxjf/vFyR4Qauxkmo",
17732+ "ed25519:ALICEDEVICE188": "MS9iYwF4r+1Nq0mUpV19aZidlGYcAN+2GRdV0QP5akY"
17733+ },
17734+ "signatures": {
17735+ "@alice_188:hs1": {
17736+ "ed25519:ALICEDEVICE188": "MSAoO9CKmBcK7Vz7QR7tL6muUfyIYenULSv8Sb5Yy+OvGaZcyTrl8g/4sL0bUJ2LGoEh83RdW0VgG8VL0qmQBw"
17737+ }
17738+ },
17739+ "user_id": "@alice_188:hs1",
17740+ "unsigned": {}
17741+ }
17742+ },
17743+ "@alice_1894:hs1": {
17744+ "ALICEDEVICE1894": {
17745+ "algorithms": [
17746+ "m.olm.v1.curve25519-aes-sha2",
17747+ "m.megolm.v1.aes-sha2"
17748+ ],
17749+ "device_id": "ALICEDEVICE1894",
17750+ "keys": {
17751+ "curve25519:ALICEDEVICE1894": "r7WYDEBLpdZSPwwxMS+876maJU62pTRYp1CBQubwang",
17752+ "ed25519:ALICEDEVICE1894": "GROOZEs9SmI/fCCfkBVfBopiQYcV12KDTqRwNU2W4cw"
17753+ },
17754+ "signatures": {
17755+ "@alice_1894:hs1": {
17756+ "ed25519:ALICEDEVICE1894": "xPz6+SSyfneZG/5AMYnq6S9BQPE3bb3aHu309TJWUqdD0siT9y6UKUHAupOhZ1z2X+aSuCYp5F9B/MUGqq3qCw"
17757+ }
17758+ },
17759+ "user_id": "@alice_1894:hs1",
17760+ "unsigned": {}
17761+ }
17762+ },
17763+ "@alice_1897:hs1": {
17764+ "ALICEDEVICE1897": {
17765+ "algorithms": [
17766+ "m.olm.v1.curve25519-aes-sha2",
17767+ "m.megolm.v1.aes-sha2"
17768+ ],
17769+ "device_id": "ALICEDEVICE1897",
17770+ "keys": {
17771+ "curve25519:ALICEDEVICE1897": "JWdNYgSzTPkYy9m4p7mK9ddEkIfQLBS6qr3XGkpHBU0",
17772+ "ed25519:ALICEDEVICE1897": "eZSPh2MJN3xruEbcIIkpk0v8qgAwaLu0hObsA+fSpoU"
17773+ },
17774+ "signatures": {
17775+ "@alice_1897:hs1": {
17776+ "ed25519:ALICEDEVICE1897": "XKolUy0cju6OmNIGvPVtVDCn6ZkX8oSgRMFo8KdHKeo7qzgWyKJQ0qxNURSO+HruwPq7d6TJsY+qFFjawnkcCw"
17777+ }
17778+ },
17779+ "user_id": "@alice_1897:hs1",
17780+ "unsigned": {}
17781+ }
17782+ },
17783+ "@alice_189:hs1": {
17784+ "ALICEDEVICE189": {
17785+ "algorithms": [
17786+ "m.olm.v1.curve25519-aes-sha2",
17787+ "m.megolm.v1.aes-sha2"
17788+ ],
17789+ "device_id": "ALICEDEVICE189",
17790+ "keys": {
17791+ "curve25519:ALICEDEVICE189": "vgrSPdOxvcQpSxlIdbejXKVPa15txNw3jrohpynt7SU",
17792+ "ed25519:ALICEDEVICE189": "byTm92XiHrMwsGv2xySfkK1aSgTc8gEhmVxxI8b4smc"
17793+ },
17794+ "signatures": {
17795+ "@alice_189:hs1": {
17796+ "ed25519:ALICEDEVICE189": "PBi377Df/CVQVkXMylJLX1Zf42IdPu94fqEGkGPPRlsugchRjn6XLGqKh3q4STM7vGFGx3yCtA2X5i3iyqFoAA"
17797+ }
17798+ },
17799+ "user_id": "@alice_189:hs1",
17800+ "unsigned": {}
17801+ }
17802+ },
17803+ "@alice_1914:hs1": {
17804+ "ALICEDEVICE1914": {
17805+ "algorithms": [
17806+ "m.olm.v1.curve25519-aes-sha2",
17807+ "m.megolm.v1.aes-sha2"
17808+ ],
17809+ "device_id": "ALICEDEVICE1914",
17810+ "keys": {
17811+ "curve25519:ALICEDEVICE1914": "2lURI+mdUU9CHGB8kAnkwFCPKq9+N+hCMA4L263Xgkw",
17812+ "ed25519:ALICEDEVICE1914": "tojwTEfTX8wYpx8K7IdQ9sZ8keKSSFZtYqrAhXKvDEQ"
17813+ },
17814+ "signatures": {
17815+ "@alice_1914:hs1": {
17816+ "ed25519:ALICEDEVICE1914": "NRCfqV7oIwzDFTOKf7VKH/weDjhb/R59q9vH7TrTYYLiU8OBYcH/xMMSTz2nUEbAhPicEkv8fuMB/6N0eifTDg"
17817+ }
17818+ },
17819+ "user_id": "@alice_1914:hs1",
17820+ "unsigned": {}
17821+ }
17822+ },
17823+ "@alice_1916:hs1": {
17824+ "ALICEDEVICE1916": {
17825+ "algorithms": [
17826+ "m.olm.v1.curve25519-aes-sha2",
17827+ "m.megolm.v1.aes-sha2"
17828+ ],
17829+ "device_id": "ALICEDEVICE1916",
17830+ "keys": {
17831+ "curve25519:ALICEDEVICE1916": "PWDY/bohz3yetVS414nFJgs0tVf0+D8CSUhZspQNn3c",
17832+ "ed25519:ALICEDEVICE1916": "NA6JQMG6oYYLqUVB3CHfNidv31IQX5qcfaAga9TAuno"
17833+ },
17834+ "signatures": {
17835+ "@alice_1916:hs1": {
17836+ "ed25519:ALICEDEVICE1916": "+JzjK1g3P2Igzrh2WAkRaTbfTn7QVsjTPBHwbEN7Dvdybfa9j/hUNP3zMbac2MfdySTWr7qmAxj9/LdC1B00Cw"
17837+ }
17838+ },
17839+ "user_id": "@alice_1916:hs1",
17840+ "unsigned": {}
17841+ }
17842+ },
17843+ "@alice_191:hs1": {
17844+ "ALICEDEVICE191": {
17845+ "algorithms": [
17846+ "m.olm.v1.curve25519-aes-sha2",
17847+ "m.megolm.v1.aes-sha2"
17848+ ],
17849+ "device_id": "ALICEDEVICE191",
17850+ "keys": {
17851+ "curve25519:ALICEDEVICE191": "DsmuAb/yaMKsY4MeFX1wPd7Aoe9zQkLDgRGERjtZWC4",
17852+ "ed25519:ALICEDEVICE191": "ajR5APTgYmOQODgzVvhIpAmkyJY9tFSP1pphOyVyuYw"
17853+ },
17854+ "signatures": {
17855+ "@alice_191:hs1": {
17856+ "ed25519:ALICEDEVICE191": "mC8yXVFkDeCrnjaPdOCB0fcvR4ovU+RnQeSZ1CSSt0+KKI15eZF07QPaw1F5ODsWLaVur5rJFgxfZVLpJLYcAw"
17857+ }
17858+ },
17859+ "user_id": "@alice_191:hs1",
17860+ "unsigned": {}
17861+ }
17862+ },
17863+ "@alice_1921:hs1": {
17864+ "ALICEDEVICE1921": {
17865+ "algorithms": [
17866+ "m.olm.v1.curve25519-aes-sha2",
17867+ "m.megolm.v1.aes-sha2"
17868+ ],
17869+ "device_id": "ALICEDEVICE1921",
17870+ "keys": {
17871+ "curve25519:ALICEDEVICE1921": "AqOeve+dcjqstdGdE1ynt3XZmR5VkQ5sSpstlynx1WU",
17872+ "ed25519:ALICEDEVICE1921": "+YCMoXrp7Qyq8WiCCsZxgHZyrGIHuux/WQOMqSZqHN4"
17873+ },
17874+ "signatures": {
17875+ "@alice_1921:hs1": {
17876+ "ed25519:ALICEDEVICE1921": "r3qZPBxAXXDAcDAauflW8BMvjbz1pyuuF3RyTlgLjjL6g/8iBnEkV8xTHh2JQq2nOyDaAJdlMDE3BBl4Kz7ZDw"
17877+ }
17878+ },
17879+ "user_id": "@alice_1921:hs1",
17880+ "unsigned": {}
17881+ }
17882+ },
17883+ "@alice_1923:hs1": {
17884+ "ALICEDEVICE1923": {
17885+ "algorithms": [
17886+ "m.olm.v1.curve25519-aes-sha2",
17887+ "m.megolm.v1.aes-sha2"
17888+ ],
17889+ "device_id": "ALICEDEVICE1923",
17890+ "keys": {
17891+ "curve25519:ALICEDEVICE1923": "NzrL4VIRcEwTpygVD6jIVeHnT8LTHBb9S56SlH7gr2o",
17892+ "ed25519:ALICEDEVICE1923": "gmO7JDMvUnrYCPbK69MALrFzargvkt3ywOHlm1L4LU8"
17893+ },
17894+ "signatures": {
17895+ "@alice_1923:hs1": {
17896+ "ed25519:ALICEDEVICE1923": "ut9L/cvh5FpyKhHtdAbVNTe0dz9fNl79ICuXe9Nhbubt3eoAsVdMsCErM7HwA5xcYjhm+drYCQfNOOuaR+pPDw"
17897+ }
17898+ },
17899+ "user_id": "@alice_1923:hs1",
17900+ "unsigned": {}
17901+ }
17902+ },
17903+ "@alice_1928:hs1": {
17904+ "ALICEDEVICE1928": {
17905+ "algorithms": [
17906+ "m.olm.v1.curve25519-aes-sha2",
17907+ "m.megolm.v1.aes-sha2"
17908+ ],
17909+ "device_id": "ALICEDEVICE1928",
17910+ "keys": {
17911+ "curve25519:ALICEDEVICE1928": "BnQwl8JcYJHBIKjmcrydXzhGqepofEiCbCiXaxQhtzA",
17912+ "ed25519:ALICEDEVICE1928": "rGSKJ25oAgmcb9iVJ/Gg6/Ikvfxny/SJ6K/rWfW1EwI"
17913+ },
17914+ "signatures": {
17915+ "@alice_1928:hs1": {
17916+ "ed25519:ALICEDEVICE1928": "z1Ty0tWEIq1zM4FqL8fUKxuXeSrhWMdNaL5iZffMf890s7WTeevkaFywqNFK0FHUVJB/9n4nYGS4AUmJJiOSBw"
17917+ }
17918+ },
17919+ "user_id": "@alice_1928:hs1",
17920+ "unsigned": {}
17921+ }
17922+ },
17923+ "@alice_1943:hs1": {
17924+ "ALICEDEVICE1943": {
17925+ "algorithms": [
17926+ "m.olm.v1.curve25519-aes-sha2",
17927+ "m.megolm.v1.aes-sha2"
17928+ ],
17929+ "device_id": "ALICEDEVICE1943",
17930+ "keys": {
17931+ "curve25519:ALICEDEVICE1943": "OXQdXnTYNE7boUQzEM2F+vLDLcSkU4+IaOioWjOj51A",
17932+ "ed25519:ALICEDEVICE1943": "m2H1yUjhWdyIhUkvPtRA6eRyLki8gFNzJ1TA2BaOIaQ"
17933+ },
17934+ "signatures": {
17935+ "@alice_1943:hs1": {
17936+ "ed25519:ALICEDEVICE1943": "UL5fReklpSLXDePfjE8SJGz4vp3wXg16XLmbLKbrsPr7u1K5v2WOeYextASjDZhgZOfv7+FE7yokxD9r2UOgCg"
17937+ }
17938+ },
17939+ "user_id": "@alice_1943:hs1",
17940+ "unsigned": {}
17941+ }
17942+ },
17943+ "@alice_1954:hs1": {
17944+ "ALICEDEVICE1954": {
17945+ "algorithms": [
17946+ "m.olm.v1.curve25519-aes-sha2",
17947+ "m.megolm.v1.aes-sha2"
17948+ ],
17949+ "device_id": "ALICEDEVICE1954",
17950+ "keys": {
17951+ "curve25519:ALICEDEVICE1954": "ee7WLH4QWf252NOpRP9eaF0zLRbqUgOPZ3MT6Y9L3l4",
17952+ "ed25519:ALICEDEVICE1954": "kKbsoJSMaSV4zePoFEKP53/RwyUULtgPLK9F1kLcyDw"
17953+ },
17954+ "signatures": {
17955+ "@alice_1954:hs1": {
17956+ "ed25519:ALICEDEVICE1954": "rmhovn+VqZzJg+FyanlfJ2zqqtbjiSqsASCAL9A/bcGKP1wpPQ9caGAp7bKOyBS/Rd6gjOF+uSSfbmTYcR3PDA"
17957+ }
17958+ },
17959+ "user_id": "@alice_1954:hs1",
17960+ "unsigned": {}
17961+ }
17962+ },
17963+ "@alice_195:hs1": {
17964+ "ALICEDEVICE195": {
17965+ "algorithms": [
17966+ "m.olm.v1.curve25519-aes-sha2",
17967+ "m.megolm.v1.aes-sha2"
17968+ ],
17969+ "device_id": "ALICEDEVICE195",
17970+ "keys": {
17971+ "curve25519:ALICEDEVICE195": "e34MhxCAoGrlZfRKd0Z5Cdnq3LlFVtF+x/LxHuiA/Qw",
17972+ "ed25519:ALICEDEVICE195": "lamI5dVZQ7ysIRCzHzGOSe0VHDX4EvHh6W1nHFiwSrQ"
17973+ },
17974+ "signatures": {
17975+ "@alice_195:hs1": {
17976+ "ed25519:ALICEDEVICE195": "35Q0y9HjrM+9ziM/+IFoQI8qQ8IHJikIHW2+Wzzqouk1rft6ypcUb+uTN8RM/kRcRhiOpG0dDI46HtTS+f9NBA"
17977+ }
17978+ },
17979+ "user_id": "@alice_195:hs1",
17980+ "unsigned": {}
17981+ }
17982+ },
17983+ "@alice_1960:hs1": {
17984+ "ALICEDEVICE1960": {
17985+ "algorithms": [
17986+ "m.olm.v1.curve25519-aes-sha2",
17987+ "m.megolm.v1.aes-sha2"
17988+ ],
17989+ "device_id": "ALICEDEVICE1960",
17990+ "keys": {
17991+ "curve25519:ALICEDEVICE1960": "s8lVkRn40KsChTGocgjBsrs1UuHe8bHmbEHOU+U3fTo",
17992+ "ed25519:ALICEDEVICE1960": "ssaQ0wQmwK/bMsGa7FZPZgvE98E4G9/fz2T1AKxkIlY"
17993+ },
17994+ "signatures": {
17995+ "@alice_1960:hs1": {
17996+ "ed25519:ALICEDEVICE1960": "q4QcGPHbm5Qw7Kj3sku2YhkLIWqa3vKuWgcXQ0yOfvtYCT1yUEOHi4IjLM/un1QTxDw+Qq8DeRiwcHF9ERn+Dw"
17997+ }
17998+ },
17999+ "user_id": "@alice_1960:hs1",
18000+ "unsigned": {}
18001+ }
18002+ },
18003+ "@alice_1965:hs1": {
18004+ "ALICEDEVICE1965": {
18005+ "algorithms": [
18006+ "m.olm.v1.curve25519-aes-sha2",
18007+ "m.megolm.v1.aes-sha2"
18008+ ],
18009+ "device_id": "ALICEDEVICE1965",
18010+ "keys": {
18011+ "curve25519:ALICEDEVICE1965": "Os+sYIjSSXgmM+jJufgKm87X53fakPztDnmpHVPc8X0",
18012+ "ed25519:ALICEDEVICE1965": "CReYla8XkFRUT234ak1Ri2xN/EOaDyCOhQdUSIeQKyY"
18013+ },
18014+ "signatures": {
18015+ "@alice_1965:hs1": {
18016+ "ed25519:ALICEDEVICE1965": "/BINlw9An4sDDxCVmWRvtioEzxDbCTUsJspm6eA5qAvLVrW2QpwrjrrdtsziMLjetiiJtR5xEtP/AaMxuGZzBg"
18017+ }
18018+ },
18019+ "user_id": "@alice_1965:hs1",
18020+ "unsigned": {}
18021+ }
18022+ },
18023+ "@alice_1968:hs1": {
18024+ "ALICEDEVICE1968": {
18025+ "algorithms": [
18026+ "m.olm.v1.curve25519-aes-sha2",
18027+ "m.megolm.v1.aes-sha2"
18028+ ],
18029+ "device_id": "ALICEDEVICE1968",
18030+ "keys": {
18031+ "curve25519:ALICEDEVICE1968": "c+yjE+sx9KEf39fnjEdXa7wMf+fxIQNaJm1riWj/8WY",
18032+ "ed25519:ALICEDEVICE1968": "EVUGssC1Etn5+bMtfOy+M0TdXtcJKXFclwxUGokRzpA"
18033+ },
18034+ "signatures": {
18035+ "@alice_1968:hs1": {
18036+ "ed25519:ALICEDEVICE1968": "YFiFJSP2o/u+Ak7aQkhDToZlx62XI5NoJixcOZ3YO3HAYtDEE9/y1Tt9fC6yGKoWDvklpJCl7sfI3lW2QAzxCA"
18037+ }
18038+ },
18039+ "user_id": "@alice_1968:hs1",
18040+ "unsigned": {}
18041+ }
18042+ },
18043+ "@alice_1971:hs1": {
18044+ "ALICEDEVICE1971": {
18045+ "algorithms": [
18046+ "m.olm.v1.curve25519-aes-sha2",
18047+ "m.megolm.v1.aes-sha2"
18048+ ],
18049+ "device_id": "ALICEDEVICE1971",
18050+ "keys": {
18051+ "curve25519:ALICEDEVICE1971": "WkZHVwl0sGZ0DGggh+S6/4F0j1zVp9iOw3LXWB2/+1c",
18052+ "ed25519:ALICEDEVICE1971": "jWrhrRciVQ1ypbL68h1ZOUfT6+9B390umQhKaNYVpuU"
18053+ },
18054+ "signatures": {
18055+ "@alice_1971:hs1": {
18056+ "ed25519:ALICEDEVICE1971": "kBJsC4Ie/sxVFyrztcx+YwhmTqFhJE1YfVoO7PPgsEIwbljLmbgmMpZ+FauxrzplJow+SAmmXRbMEyBgpBysBw"
18057+ }
18058+ },
18059+ "user_id": "@alice_1971:hs1",
18060+ "unsigned": {}
18061+ }
18062+ },
18063+ "@alice_1976:hs1": {
18064+ "ALICEDEVICE1976": {
18065+ "algorithms": [
18066+ "m.olm.v1.curve25519-aes-sha2",
18067+ "m.megolm.v1.aes-sha2"
18068+ ],
18069+ "device_id": "ALICEDEVICE1976",
18070+ "keys": {
18071+ "curve25519:ALICEDEVICE1976": "JfiEEoPQzCO5S305wfcvsG3IagWSM8q5r9gNbxce6SM",
18072+ "ed25519:ALICEDEVICE1976": "1LFxGjcZOu51yckf1vtXTawOePU8eA2Bj1Vlw48mow0"
18073+ },
18074+ "signatures": {
18075+ "@alice_1976:hs1": {
18076+ "ed25519:ALICEDEVICE1976": "u1B2VU+36J7W3CEqxWJ2IR+/yPLQ7F3I5FyQxQX0BCHyHOSUfzXkus+vBJgnnxo9XClkVCYhPIO73BdiWTCLDA"
18077+ }
18078+ },
18079+ "user_id": "@alice_1976:hs1",
18080+ "unsigned": {}
18081+ }
18082+ },
18083+ "@alice_1980:hs1": {
18084+ "ALICEDEVICE1980": {
18085+ "algorithms": [
18086+ "m.olm.v1.curve25519-aes-sha2",
18087+ "m.megolm.v1.aes-sha2"
18088+ ],
18089+ "device_id": "ALICEDEVICE1980",
18090+ "keys": {
18091+ "curve25519:ALICEDEVICE1980": "VWm96mGRoKoRLrmdIK6KkAfbGYH5S8qdu83VHsl42xI",
18092+ "ed25519:ALICEDEVICE1980": "nw7n8bDr6JPxonF/Z08Am8fsbWNTxWgoDcU7wP9BWdc"
18093+ },
18094+ "signatures": {
18095+ "@alice_1980:hs1": {
18096+ "ed25519:ALICEDEVICE1980": "Jq4//cB4Emh093NH4wTwg56v/m7YpH6pRXi6Wc27sK1B6vfXAdIQGF23ooGWaTpeYyBVEuUnWxyiJReHv3VvDg"
18097+ }
18098+ },
18099+ "user_id": "@alice_1980:hs1",
18100+ "unsigned": {}
18101+ }
18102+ },
18103+ "@alice_20:hs1": {
18104+ "ALICEDEVICE20": {
18105+ "algorithms": [
18106+ "m.olm.v1.curve25519-aes-sha2",
18107+ "m.megolm.v1.aes-sha2"
18108+ ],
18109+ "device_id": "ALICEDEVICE20",
18110+ "keys": {
18111+ "curve25519:ALICEDEVICE20": "Nlx96wgpDrv78HvfdCt7Y7h0lZoJW3pUGK57IYQphgc",
18112+ "ed25519:ALICEDEVICE20": "INkfpMp9cPTzyjzbCEnASkT/9rwaCsk+BoYLnfoOWn4"
18113+ },
18114+ "signatures": {
18115+ "@alice_20:hs1": {
18116+ "ed25519:ALICEDEVICE20": "DSnC/hXwNA9G/eR6V5zQRlyZ2qwo3+14RLESLDtDADZ4tjUJl6GoABJVGpDAYCaxZ/C+MFfROkm6NI7pvuT2Aw"
18117+ }
18118+ },
18119+ "user_id": "@alice_20:hs1",
18120+ "unsigned": {}
18121+ }
18122+ },
18123+ "@alice_216:hs1": {
18124+ "ALICEDEVICE216": {
18125+ "algorithms": [
18126+ "m.olm.v1.curve25519-aes-sha2",
18127+ "m.megolm.v1.aes-sha2"
18128+ ],
18129+ "device_id": "ALICEDEVICE216",
18130+ "keys": {
18131+ "curve25519:ALICEDEVICE216": "ydh9e6CZyQZNLAKsqN/KkzrL46+w3U/fRdcNXo+7cgY",
18132+ "ed25519:ALICEDEVICE216": "M1SVfLU3ka57OCV1NhjTg3bs2SH3CNs3QMnxWGrLRXo"
18133+ },
18134+ "signatures": {
18135+ "@alice_216:hs1": {
18136+ "ed25519:ALICEDEVICE216": "15jkEnDDsZ2hE9BbmbhvrzlWKtOksGtMEoOAEIu3tmvjmcBGCGaQRrvv1+j2DEvH21nXfcud+81XMPIUH6s9BQ"
18137+ }
18138+ },
18139+ "user_id": "@alice_216:hs1",
18140+ "unsigned": {}
18141+ }
18142+ },
18143+ "@alice_219:hs1": {
18144+ "ALICEDEVICE219": {
18145+ "algorithms": [
18146+ "m.olm.v1.curve25519-aes-sha2",
18147+ "m.megolm.v1.aes-sha2"
18148+ ],
18149+ "device_id": "ALICEDEVICE219",
18150+ "keys": {
18151+ "curve25519:ALICEDEVICE219": "/FyNQaEcOcb2nMA+2iHXc5bJpTue0WaNnFqqiiLmZkc",
18152+ "ed25519:ALICEDEVICE219": "Io7S0H/Vj0garbVYCiPH1ORT9t7wfZOF+Mh7wOhJTRg"
18153+ },
18154+ "signatures": {
18155+ "@alice_219:hs1": {
18156+ "ed25519:ALICEDEVICE219": "XJkInYHpqyL7cAmaJTKgANBdl3XPXzAMweLyCkJnowudK2ru9Ks6SK8Q2CarJB0gQSkduj7E8/xWvl6KpmAlBA"
18157+ }
18158+ },
18159+ "user_id": "@alice_219:hs1",
18160+ "unsigned": {}
18161+ }
18162+ },
18163+ "@alice_223:hs1": {
18164+ "ALICEDEVICE223": {
18165+ "algorithms": [
18166+ "m.olm.v1.curve25519-aes-sha2",
18167+ "m.megolm.v1.aes-sha2"
18168+ ],
18169+ "device_id": "ALICEDEVICE223",
18170+ "keys": {
18171+ "curve25519:ALICEDEVICE223": "nAVmkbdMbRF5SbSKDCTBzQ2mOGyfhofi19TOI1FDECk",
18172+ "ed25519:ALICEDEVICE223": "oGbyVkRibL4kWoLWKkDGm+ZaiYFx73ijttuDgLrjIrQ"
18173+ },
18174+ "signatures": {
18175+ "@alice_223:hs1": {
18176+ "ed25519:ALICEDEVICE223": "WI0vmH4GOMFafPn07pMacLGGWc95rhdN3wRqvoiioDJGsBR2m8eYyAAw/IpcpCNc8oyIGxJwJcTi3oNdve76Dw"
18177+ }
18178+ },
18179+ "user_id": "@alice_223:hs1",
18180+ "unsigned": {}
18181+ }
18182+ },
18183+ "@alice_224:hs1": {
18184+ "ALICEDEVICE224": {
18185+ "algorithms": [
18186+ "m.olm.v1.curve25519-aes-sha2",
18187+ "m.megolm.v1.aes-sha2"
18188+ ],
18189+ "device_id": "ALICEDEVICE224",
18190+ "keys": {
18191+ "curve25519:ALICEDEVICE224": "6aM+RF6C6gsIAY/F9jAvaeSqbTdvK8D1vVQmqHSo5BU",
18192+ "ed25519:ALICEDEVICE224": "LQk3iyTY4d+2seVjnzIi/aDnUGkVyd9yXCP02T8c6qI"
18193+ },
18194+ "signatures": {
18195+ "@alice_224:hs1": {
18196+ "ed25519:ALICEDEVICE224": "VmsSCIrrYsvy1yK3igt44u/UFhIylORvHml6bObFExdDYXSqwRx3zbaS8kGyvLUcVPCdnyuEJd1JmI8iBIH9DQ"
18197+ }
18198+ },
18199+ "user_id": "@alice_224:hs1",
18200+ "unsigned": {}
18201+ }
18202+ },
18203+ "@alice_241:hs1": {
18204+ "ALICEDEVICE241": {
18205+ "algorithms": [
18206+ "m.olm.v1.curve25519-aes-sha2",
18207+ "m.megolm.v1.aes-sha2"
18208+ ],
18209+ "device_id": "ALICEDEVICE241",
18210+ "keys": {
18211+ "curve25519:ALICEDEVICE241": "HpFG8i43prh096iKE/1WXXQp7skCn3WmVAsEDeJKrDs",
18212+ "ed25519:ALICEDEVICE241": "t7bVyI+ZhrCEEvT9mLbgRvpxd/s9iE+P8vdL/OE0Ykc"
18213+ },
18214+ "signatures": {
18215+ "@alice_241:hs1": {
18216+ "ed25519:ALICEDEVICE241": "qi2/r7yTKM004JZ03zPoi8HwmVOoWElo8mTfieOhNFz22xFjLwuqrfTELBzoH1JBscwodB7/pHP6XnT9JvRQBA"
18217+ }
18218+ },
18219+ "user_id": "@alice_241:hs1",
18220+ "unsigned": {}
18221+ }
18222+ },
18223+ "@alice_242:hs1": {
18224+ "ALICEDEVICE242": {
18225+ "algorithms": [
18226+ "m.olm.v1.curve25519-aes-sha2",
18227+ "m.megolm.v1.aes-sha2"
18228+ ],
18229+ "device_id": "ALICEDEVICE242",
18230+ "keys": {
18231+ "curve25519:ALICEDEVICE242": "xAH4Yc8OVuH0rliM3jDyuBwO62Lxe2bg9RpdJ7oixUE",
18232+ "ed25519:ALICEDEVICE242": "RjdZSA+m/NPj0L89qGsQBVAQMQwqbhVPTT3yEtxm5xw"
18233+ },
18234+ "signatures": {
18235+ "@alice_242:hs1": {
18236+ "ed25519:ALICEDEVICE242": "dCzKTmov9Z+PTFyUa9uMjrdus8GDpXMAbmLb+SXChgmY7tlxkaLwWD3A2BCEpJSSufR6Iao4y2fEMysWx/MtBg"
18237+ }
18238+ },
18239+ "user_id": "@alice_242:hs1",
18240+ "unsigned": {}
18241+ }
18242+ },
18243+ "@alice_244:hs1": {
18244+ "ALICEDEVICE244": {
18245+ "algorithms": [
18246+ "m.olm.v1.curve25519-aes-sha2",
18247+ "m.megolm.v1.aes-sha2"
18248+ ],
18249+ "device_id": "ALICEDEVICE244",
18250+ "keys": {
18251+ "curve25519:ALICEDEVICE244": "uit7bplg6F6g70YJ1ca03eOlB15n9LCcG0glL32YOSU",
18252+ "ed25519:ALICEDEVICE244": "kHWIcb2XnxCEy1xPwGLxBQGNhEq0KCA8nQtpgohr/p0"
18253+ },
18254+ "signatures": {
18255+ "@alice_244:hs1": {
18256+ "ed25519:ALICEDEVICE244": "zmdBICd/KVaCWrrjWNXXMWTu7lrDBrse1AUGCww8c6vlxBSXedOebYQroIGrqFx6eTRbenykqz4F8NvYLH4jDQ"
18257+ }
18258+ },
18259+ "user_id": "@alice_244:hs1",
18260+ "unsigned": {}
18261+ }
18262+ },
18263+ "@alice_246:hs1": {
18264+ "ALICEDEVICE246": {
18265+ "algorithms": [
18266+ "m.olm.v1.curve25519-aes-sha2",
18267+ "m.megolm.v1.aes-sha2"
18268+ ],
18269+ "device_id": "ALICEDEVICE246",
18270+ "keys": {
18271+ "curve25519:ALICEDEVICE246": "4Gc8b98cWOlYigGiXv3JuEdRFC07Tl7htMyZS1tM4G4",
18272+ "ed25519:ALICEDEVICE246": "Ii5vpP+IF4nmfyXBu7euiAnEuqzro9mrkMuNJyGQYTU"
18273+ },
18274+ "signatures": {
18275+ "@alice_246:hs1": {
18276+ "ed25519:ALICEDEVICE246": "GTnXbzqrQhUBwjKBPHAx0xz82QWYILmJmJvHWJgmDQwlAo/kMiu7pPCdbDPpwFJmqzfZacSV3bUUJTUwgpNaAA"
18277+ }
18278+ },
18279+ "user_id": "@alice_246:hs1",
18280+ "unsigned": {}
18281+ }
18282+ },
18283+ "@alice_249:hs1": {
18284+ "ALICEDEVICE249": {
18285+ "algorithms": [
18286+ "m.olm.v1.curve25519-aes-sha2",
18287+ "m.megolm.v1.aes-sha2"
18288+ ],
18289+ "device_id": "ALICEDEVICE249",
18290+ "keys": {
18291+ "curve25519:ALICEDEVICE249": "YX81rISugA0Asl2XIi7smN0WYB+E6jNWIOFTu1+85lY",
18292+ "ed25519:ALICEDEVICE249": "tU4CtszBiNeiY0Lq/nafElPFLPdbNz9k1/I5WkZXpt0"
18293+ },
18294+ "signatures": {
18295+ "@alice_249:hs1": {
18296+ "ed25519:ALICEDEVICE249": "MHV3EUspMe4LYu+QfSJKgU19f3ueIdCjDfuRRQ3IZaNZy+NtSgeXdyEeauxSbj0zKZOyy3NVKNng47XTkubrBg"
18297+ }
18298+ },
18299+ "user_id": "@alice_249:hs1",
18300+ "unsigned": {}
18301+ }
18302+ },
18303+ "@alice_253:hs1": {
18304+ "ALICEDEVICE253": {
18305+ "algorithms": [
18306+ "m.olm.v1.curve25519-aes-sha2",
18307+ "m.megolm.v1.aes-sha2"
18308+ ],
18309+ "device_id": "ALICEDEVICE253",
18310+ "keys": {
18311+ "curve25519:ALICEDEVICE253": "H8rQ2tdfwzHiYntRONznA6E583LUAIkgToHy9ex7c0s",
18312+ "ed25519:ALICEDEVICE253": "abE2Qe+/P0/7io/F0TVMhG1NLAF3BGsFlH/L9epqHEM"
18313+ },
18314+ "signatures": {
18315+ "@alice_253:hs1": {
18316+ "ed25519:ALICEDEVICE253": "xNoP0gc+3bx2WWnYr/mdBPNGOeYuPlJRrbKdtilo8pW6JpZpo6OcC4+SYZ3UTr611lMOhaQbnOHoKVEOEAzQDw"
18317+ }
18318+ },
18319+ "user_id": "@alice_253:hs1",
18320+ "unsigned": {}
18321+ }
18322+ },
18323+ "@alice_265:hs1": {
18324+ "ALICEDEVICE265": {
18325+ "algorithms": [
18326+ "m.olm.v1.curve25519-aes-sha2",
18327+ "m.megolm.v1.aes-sha2"
18328+ ],
18329+ "device_id": "ALICEDEVICE265",
18330+ "keys": {
18331+ "curve25519:ALICEDEVICE265": "SevVG3P82TW4k1r3wj5RpclG5gUjaWqufwql9sZB2AA",
18332+ "ed25519:ALICEDEVICE265": "K5qIDpqWGDOkuzPabx6q7Wux1fhgb7og/QpBmkAlraU"
18333+ },
18334+ "signatures": {
18335+ "@alice_265:hs1": {
18336+ "ed25519:ALICEDEVICE265": "2YROszpJxv7jHzMVAbot09glwybuQSDNqp2yonfajH/J+UtCD0QNUJY8x7EVlgM7RmwEy6/YL2OY7v0WYPPsCA"
18337+ }
18338+ },
18339+ "user_id": "@alice_265:hs1",
18340+ "unsigned": {}
18341+ }
18342+ },
18343+ "@alice_272:hs1": {
18344+ "ALICEDEVICE272": {
18345+ "algorithms": [
18346+ "m.olm.v1.curve25519-aes-sha2",
18347+ "m.megolm.v1.aes-sha2"
18348+ ],
18349+ "device_id": "ALICEDEVICE272",
18350+ "keys": {
18351+ "curve25519:ALICEDEVICE272": "ef+cmt9nu+QpUGkyGzaSIZX+TjY1ufqIdfFgRVjE7lg",
18352+ "ed25519:ALICEDEVICE272": "GrK8liryMXMhcWwwKhfL3Roeu9TSVeNp9ITpOk7dowE"
18353+ },
18354+ "signatures": {
18355+ "@alice_272:hs1": {
18356+ "ed25519:ALICEDEVICE272": "tZyc43R57KvlCXd/8EFKvY+2YfWBlyTj4vmB48BY33QEsSupayovnyiUvg0vGzb51OANhMhidCg2W9GMOW91CQ"
18357+ }
18358+ },
18359+ "user_id": "@alice_272:hs1",
18360+ "unsigned": {}
18361+ }
18362+ },
18363+ "@alice_279:hs1": {
18364+ "ALICEDEVICE279": {
18365+ "algorithms": [
18366+ "m.olm.v1.curve25519-aes-sha2",
18367+ "m.megolm.v1.aes-sha2"
18368+ ],
18369+ "device_id": "ALICEDEVICE279",
18370+ "keys": {
18371+ "curve25519:ALICEDEVICE279": "fX8zf1mjVK6gurPYgzOTCbZxeeeKHtFoA8p3EtkOlT0",
18372+ "ed25519:ALICEDEVICE279": "YOqhrOTEsr/qzn/H0YzPvpkmMaWDAX13/ZmInmR6mh8"
18373+ },
18374+ "signatures": {
18375+ "@alice_279:hs1": {
18376+ "ed25519:ALICEDEVICE279": "IE7eLticQYoqNGwRrFYA2isnhDVSsV7WFfR64RATxYhNKzmNBBiLJ+POLCNrftXM3IWDovIYP7T9mvbhEUHpAQ"
18377+ }
18378+ },
18379+ "user_id": "@alice_279:hs1",
18380+ "unsigned": {}
18381+ }
18382+ },
18383+ "@alice_281:hs1": {
18384+ "ALICEDEVICE281": {
18385+ "algorithms": [
18386+ "m.olm.v1.curve25519-aes-sha2",
18387+ "m.megolm.v1.aes-sha2"
18388+ ],
18389+ "device_id": "ALICEDEVICE281",
18390+ "keys": {
18391+ "curve25519:ALICEDEVICE281": "dggH2Gb47E2aGk/nb4Bn8N3zDpPsAQAjjZ+fxw3OVTQ",
18392+ "ed25519:ALICEDEVICE281": "GJXaVgOKKPBY6DsSgyGRrkwIoe1TOi62DMBApFPO97Q"
18393+ },
18394+ "signatures": {
18395+ "@alice_281:hs1": {
18396+ "ed25519:ALICEDEVICE281": "/V2wFn3MGEFa4fZJTOZWvf69SfaJ9AVxUclYo2ixb2BgaEgPGA0CE9doIeKqs4IFPDznb8B5vneR+WZEWc5VAA"
18397+ }
18398+ },
18399+ "user_id": "@alice_281:hs1",
18400+ "unsigned": {}
18401+ }
18402+ },
18403+ "@alice_315:hs1": {
18404+ "ALICEDEVICE315": {
18405+ "algorithms": [
18406+ "m.olm.v1.curve25519-aes-sha2",
18407+ "m.megolm.v1.aes-sha2"
18408+ ],
18409+ "device_id": "ALICEDEVICE315",
18410+ "keys": {
18411+ "curve25519:ALICEDEVICE315": "6zj43x84Qg0NJ9tiiN9oe9DMh7+7lT/kn28fXfB3BQU",
18412+ "ed25519:ALICEDEVICE315": "rxC21eHFJQuAIKPYmQeD6uTHCgvPQ0z3GhDFLAM5Gwk"
18413+ },
18414+ "signatures": {
18415+ "@alice_315:hs1": {
18416+ "ed25519:ALICEDEVICE315": "J45MzRNrLX9PRNCZY5O4DVZTWeaJS3R9jh5UdqSwm0Ly+oeX85Q8xpc60gqMtF/smM5Vi/MigaAci7gM5J2uBw"
18417+ }
18418+ },
18419+ "user_id": "@alice_315:hs1",
18420+ "unsigned": {}
18421+ }
18422+ },
18423+ "@alice_328:hs1": {
18424+ "ALICEDEVICE328": {
18425+ "algorithms": [
18426+ "m.olm.v1.curve25519-aes-sha2",
18427+ "m.megolm.v1.aes-sha2"
18428+ ],
18429+ "device_id": "ALICEDEVICE328",
18430+ "keys": {
18431+ "curve25519:ALICEDEVICE328": "5fTiWdm/4LUwLIMNu4U9V0xGyaa3R5RklMKz5jfyhww",
18432+ "ed25519:ALICEDEVICE328": "CYYQOl1+/C/kSCLqriIVKvR1wlkVunVMBNpl2GjB4Es"
18433+ },
18434+ "signatures": {
18435+ "@alice_328:hs1": {
18436+ "ed25519:ALICEDEVICE328": "pjgRTWUof2Nq6vPN3w16wOxbtyQEFH0yfpwsB/QL6S23zZDsob7VxsC6E5yqW9R8T8j5Ved+Zm81imoRNvo/Cg"
18437+ }
18438+ },
18439+ "user_id": "@alice_328:hs1",
18440+ "unsigned": {}
18441+ }
18442+ },
18443+ "@alice_341:hs1": {
18444+ "ALICEDEVICE341": {
18445+ "algorithms": [
18446+ "m.olm.v1.curve25519-aes-sha2",
18447+ "m.megolm.v1.aes-sha2"
18448+ ],
18449+ "device_id": "ALICEDEVICE341",
18450+ "keys": {
18451+ "curve25519:ALICEDEVICE341": "4u8wFIfpo1Ls/j+0Cgz+jIxPbPjwtUfeG+XfSYHk2Sk",
18452+ "ed25519:ALICEDEVICE341": "G+jZknL+G2Cjf8tj3+WwwW7nv9hZ7Jq4siUk3m7R+5M"
18453+ },
18454+ "signatures": {
18455+ "@alice_341:hs1": {
18456+ "ed25519:ALICEDEVICE341": "RsqQYPO1lF/vgSe07aqgnkzrcCHckivacCEFPGp9J1cYtwCGBJMevXe4bk+XhsD15Igcwsi2JrnU7H6pVTPxBw"
18457+ }
18458+ },
18459+ "user_id": "@alice_341:hs1",
18460+ "unsigned": {}
18461+ }
18462+ },
18463+ "@alice_363:hs1": {
18464+ "ALICEDEVICE363": {
18465+ "algorithms": [
18466+ "m.olm.v1.curve25519-aes-sha2",
18467+ "m.megolm.v1.aes-sha2"
18468+ ],
18469+ "device_id": "ALICEDEVICE363",
18470+ "keys": {
18471+ "curve25519:ALICEDEVICE363": "ANaoYuTDPr3YZm6+nDuNN618eRm9WJmk/K/nQ/nwP10",
18472+ "ed25519:ALICEDEVICE363": "aqTRTM65WUgqmeTU+PX3fhXX+mdYWGf+RE5WBvdq+wI"
18473+ },
18474+ "signatures": {
18475+ "@alice_363:hs1": {
18476+ "ed25519:ALICEDEVICE363": "zQCy+Fk0EM37WSEVHKD791NbPXhiRKGC52rT7TMuYoKSC8QIVBxnADUDOcAk1EMkQJg/5uFbPuiVeFwWOTuRBw"
18477+ }
18478+ },
18479+ "user_id": "@alice_363:hs1",
18480+ "unsigned": {}
18481+ }
18482+ },
18483+ "@alice_367:hs1": {
18484+ "ALICEDEVICE367": {
18485+ "algorithms": [
18486+ "m.olm.v1.curve25519-aes-sha2",
18487+ "m.megolm.v1.aes-sha2"
18488+ ],
18489+ "device_id": "ALICEDEVICE367",
18490+ "keys": {
18491+ "curve25519:ALICEDEVICE367": "67HdpLFrnJsUnPiFoOM1tSVdMEix2r26nReNn90AhD0",
18492+ "ed25519:ALICEDEVICE367": "Jlzlff2Jsh6fzkO9unR3aI1lfW4OxTu9KV2KUB+lL9s"
18493+ },
18494+ "signatures": {
18495+ "@alice_367:hs1": {
18496+ "ed25519:ALICEDEVICE367": "UZ9cdtNlIFp0fWs7QoYUvCH5FryVzdQvyIfamalqoMVDlzzSYK90lGs+ClScru8g/Qp+GFPdwrhAfin9bFN/Dw"
18497+ }
18498+ },
18499+ "user_id": "@alice_367:hs1",
18500+ "unsigned": {}
18501+ }
18502+ },
18503+ "@alice_373:hs1": {
18504+ "ALICEDEVICE373": {
18505+ "algorithms": [
18506+ "m.olm.v1.curve25519-aes-sha2",
18507+ "m.megolm.v1.aes-sha2"
18508+ ],
18509+ "device_id": "ALICEDEVICE373",
18510+ "keys": {
18511+ "curve25519:ALICEDEVICE373": "Kh/yLv69ke2VZje3sV/c5XF9rmfgF/M6uHbKtfITCzA",
18512+ "ed25519:ALICEDEVICE373": "rLMVGgmvhSU73GIJbdWEN3UxETocvRwPcfk/F+S95Us"
18513+ },
18514+ "signatures": {
18515+ "@alice_373:hs1": {
18516+ "ed25519:ALICEDEVICE373": "vT5iXdKSHJOEWEBKBb8G/voMbv9RKrUj0hE7ovW+gSGt8h5OTQ1v59+gPwD0NwD9OIgBXXh2fBjR9WnRhqgRBA"
18517+ }
18518+ },
18519+ "user_id": "@alice_373:hs1",
18520+ "unsigned": {}
18521+ }
18522+ },
18523+ "@alice_384:hs1": {
18524+ "ALICEDEVICE384": {
18525+ "algorithms": [
18526+ "m.olm.v1.curve25519-aes-sha2",
18527+ "m.megolm.v1.aes-sha2"
18528+ ],
18529+ "device_id": "ALICEDEVICE384",
18530+ "keys": {
18531+ "curve25519:ALICEDEVICE384": "sYKeTxke778Iowz5qKggs1xKBSZvuKC09UpRMkfUp10",
18532+ "ed25519:ALICEDEVICE384": "/Ag9VKZuRq071s68WvhkBgHUN+rbzpOHVBqH7upeAHk"
18533+ },
18534+ "signatures": {
18535+ "@alice_384:hs1": {
18536+ "ed25519:ALICEDEVICE384": "eEOmce0f8t1CrJs1AtA65up0cD8IpO0h7r3lHK1zdZIazJHNHG+mwiGiC4M5+li8WwELT3ntADHMNunnixDwDw"
18537+ }
18538+ },
18539+ "user_id": "@alice_384:hs1",
18540+ "unsigned": {}
18541+ }
18542+ },
18543+ "@alice_391:hs1": {
18544+ "ALICEDEVICE391": {
18545+ "algorithms": [
18546+ "m.olm.v1.curve25519-aes-sha2",
18547+ "m.megolm.v1.aes-sha2"
18548+ ],
18549+ "device_id": "ALICEDEVICE391",
18550+ "keys": {
18551+ "curve25519:ALICEDEVICE391": "0FcRmdnbwmj+J+QlAjWHcrOjo++I/kqrWNAIPuEuRWk",
18552+ "ed25519:ALICEDEVICE391": "mc+twaKgnAwdVI1yQg5gJyFCiKgCcYND2Vu1+yhd2G4"
18553+ },
18554+ "signatures": {
18555+ "@alice_391:hs1": {
18556+ "ed25519:ALICEDEVICE391": "lBAp+rYLZukXizRM7rlwHiQbOhEJFHjOir1YxOv7G/iQXeWZ1ZgqpI3boPmuLkGllMaDW2WTsal7w11ZMcgOBg"
18557+ }
18558+ },
18559+ "user_id": "@alice_391:hs1",
18560+ "unsigned": {}
18561+ }
18562+ },
18563+ "@alice_394:hs1": {
18564+ "ALICEDEVICE394": {
18565+ "algorithms": [
18566+ "m.olm.v1.curve25519-aes-sha2",
18567+ "m.megolm.v1.aes-sha2"
18568+ ],
18569+ "device_id": "ALICEDEVICE394",
18570+ "keys": {
18571+ "curve25519:ALICEDEVICE394": "WNn1H3IbHeouwqPTMtiSnRhBlml+1JFB5qvSZpqEmGc",
18572+ "ed25519:ALICEDEVICE394": "21DYpCJNE2gp1PAuuhoIObvt9mfEQJADcSBh4Pne8J8"
18573+ },
18574+ "signatures": {
18575+ "@alice_394:hs1": {
18576+ "ed25519:ALICEDEVICE394": "BKbiLfA0DEFIN4LUyYxhifEDwqc2163mZiNrimZAZm6KX1gXC29KdkRemvPyy6c1Se0zShIsbnNq0/f+gN3RCQ"
18577+ }
18578+ },
18579+ "user_id": "@alice_394:hs1",
18580+ "unsigned": {}
18581+ }
18582+ },
18583+ "@alice_395:hs1": {
18584+ "ALICEDEVICE395": {
18585+ "algorithms": [
18586+ "m.olm.v1.curve25519-aes-sha2",
18587+ "m.megolm.v1.aes-sha2"
18588+ ],
18589+ "device_id": "ALICEDEVICE395",
18590+ "keys": {
18591+ "curve25519:ALICEDEVICE395": "KLPN35LmFdktUJLZM2ywvNdyoJqBqZD25NAsqgRZVCc",
18592+ "ed25519:ALICEDEVICE395": "r6eyLvzxS1bLzzzizdDKUzFmfyUNvTS+H+SJvmLsLo0"
18593+ },
18594+ "signatures": {
18595+ "@alice_395:hs1": {
18596+ "ed25519:ALICEDEVICE395": "Ftdamd9Tf4IGvV1LvKW/rYq9jsRX3VtXCnvBX9HYn4nBUzLUSmlJD8fS6aZVgayMhtERo5TQZAlnS6sZTwcuCA"
18597+ }
18598+ },
18599+ "user_id": "@alice_395:hs1",
18600+ "unsigned": {}
18601+ }
18602+ },
18603+ "@alice_402:hs1": {
18604+ "ALICEDEVICE402": {
18605+ "algorithms": [
18606+ "m.olm.v1.curve25519-aes-sha2",
18607+ "m.megolm.v1.aes-sha2"
18608+ ],
18609+ "device_id": "ALICEDEVICE402",
18610+ "keys": {
18611+ "curve25519:ALICEDEVICE402": "dQllvJD6MoRGMLHANw0pDlnLu0xb7MqOAB2u2zw5/F0",
18612+ "ed25519:ALICEDEVICE402": "jfzD5b3p4L2SiprcaEPKap/gx1UCRdcWHWZ4YuZ6IY0"
18613+ },
18614+ "signatures": {
18615+ "@alice_402:hs1": {
18616+ "ed25519:ALICEDEVICE402": "cnzE5ZZqOFC3rQimsy9B+zurfyJ3EwE0FyGLfgOBa38uydQiIHbu+tf0TE24wnVobq2Xq1+jekdMpCcV1cwiBg"
18617+ }
18618+ },
18619+ "user_id": "@alice_402:hs1",
18620+ "unsigned": {}
18621+ }
18622+ },
18623+ "@alice_411:hs1": {
18624+ "ALICEDEVICE411": {
18625+ "algorithms": [
18626+ "m.olm.v1.curve25519-aes-sha2",
18627+ "m.megolm.v1.aes-sha2"
18628+ ],
18629+ "device_id": "ALICEDEVICE411",
18630+ "keys": {
18631+ "curve25519:ALICEDEVICE411": "05rTmHvtuWSwgsoz3aM7giTC/R2aT1PsEf9d17+a1Ck",
18632+ "ed25519:ALICEDEVICE411": "8vLLJYN3EYufj+zCqFhPWzqbFS561Lcl0nvsKVKUHa8"
18633+ },
18634+ "signatures": {
18635+ "@alice_411:hs1": {
18636+ "ed25519:ALICEDEVICE411": "rFyu+3sM5EGFry1RODZ7axzaQAhaDvFQ1anpX8E5h8lKmkkB8UlQ7ORPQLplSNHNW1/yU+dfXJa/meq9nUCQAw"
18637+ }
18638+ },
18639+ "user_id": "@alice_411:hs1",
18640+ "unsigned": {}
18641+ }
18642+ },
18643+ "@alice_417:hs1": {
18644+ "ALICEDEVICE417": {
18645+ "algorithms": [
18646+ "m.olm.v1.curve25519-aes-sha2",
18647+ "m.megolm.v1.aes-sha2"
18648+ ],
18649+ "device_id": "ALICEDEVICE417",
18650+ "keys": {
18651+ "curve25519:ALICEDEVICE417": "BGDO4RYnE6el3tYvOSt2taem7M4C3Yya+m//V3PY5W0",
18652+ "ed25519:ALICEDEVICE417": "pT8iEgrJONsuaTX5sVyaRIMWHFxg/2HwvZJd13zYNiE"
18653+ },
18654+ "signatures": {
18655+ "@alice_417:hs1": {
18656+ "ed25519:ALICEDEVICE417": "etmJ9Xw+y+yFSVzEUYQfZ5+42bAHU2iybKofF3XFpscDF6NRa1U0zgqUCFWB4zAXvFU9brvgaSwoMwVXsE7tBg"
18657+ }
18658+ },
18659+ "user_id": "@alice_417:hs1",
18660+ "unsigned": {}
18661+ }
18662+ },
18663+ "@alice_421:hs1": {
18664+ "ALICEDEVICE421": {
18665+ "algorithms": [
18666+ "m.olm.v1.curve25519-aes-sha2",
18667+ "m.megolm.v1.aes-sha2"
18668+ ],
18669+ "device_id": "ALICEDEVICE421",
18670+ "keys": {
18671+ "curve25519:ALICEDEVICE421": "4YJoBS+Ixi8hkVETq7OUhrWLhc/hkWIQ/VKvXkyBOFs",
18672+ "ed25519:ALICEDEVICE421": "l1OC/62bke9kNBcW5mA3madYftn5Fk/h3Ei6Ka7+Q/w"
18673+ },
18674+ "signatures": {
18675+ "@alice_421:hs1": {
18676+ "ed25519:ALICEDEVICE421": "YxHZeDgHC3LJEnE5h/ePazGZ9xgmX/oTYikHTHPIH4FNGl9t4w906WeCsSGwxI9AKignvHZqpc9W5NNhKMHdBw"
18677+ }
18678+ },
18679+ "user_id": "@alice_421:hs1",
18680+ "unsigned": {}
18681+ }
18682+ },
18683+ "@alice_440:hs1": {
18684+ "ALICEDEVICE440": {
18685+ "algorithms": [
18686+ "m.olm.v1.curve25519-aes-sha2",
18687+ "m.megolm.v1.aes-sha2"
18688+ ],
18689+ "device_id": "ALICEDEVICE440",
18690+ "keys": {
18691+ "curve25519:ALICEDEVICE440": "6HIRDGP3EXrpVri1ZF4SOLlO5dcbyiPp0kC4YAr/QE4",
18692+ "ed25519:ALICEDEVICE440": "pwypWp0FHkVnlkgqsGKoLgHG+E1f+X/6bl4WNkTpFiQ"
18693+ },
18694+ "signatures": {
18695+ "@alice_440:hs1": {
18696+ "ed25519:ALICEDEVICE440": "SzYlXAm/RZh5rJi9wuRzQo5xf/soF0uqMcrnNMdFYIrocaxScBvOvclN5Sg1e+697AbvhLuxpm0eZbhKNlZ9Cw"
18697+ }
18698+ },
18699+ "user_id": "@alice_440:hs1",
18700+ "unsigned": {}
18701+ }
18702+ },
18703+ "@alice_449:hs1": {
18704+ "ALICEDEVICE449": {
18705+ "algorithms": [
18706+ "m.olm.v1.curve25519-aes-sha2",
18707+ "m.megolm.v1.aes-sha2"
18708+ ],
18709+ "device_id": "ALICEDEVICE449",
18710+ "keys": {
18711+ "curve25519:ALICEDEVICE449": "9qwG8gPbwrzy3lw3jVsP5eQ+7mHhPh/cUt4PuGEUqyE",
18712+ "ed25519:ALICEDEVICE449": "4If+fIzkiD1YJtZcSy4mb8F+qBC+uLRnKKK5UMghYpE"
18713+ },
18714+ "signatures": {
18715+ "@alice_449:hs1": {
18716+ "ed25519:ALICEDEVICE449": "0n1e49tVZhxEd1RSq8tOjUsDgHog1L6+8MWf2dBFjFMN+xWoDPeWDLXM8ukBD37SqEoAfWdOq4BoF4d2ffzVBQ"
18717+ }
18718+ },
18719+ "user_id": "@alice_449:hs1",
18720+ "unsigned": {}
18721+ }
18722+ },
18723+ "@alice_456:hs1": {
18724+ "ALICEDEVICE456": {
18725+ "algorithms": [
18726+ "m.olm.v1.curve25519-aes-sha2",
18727+ "m.megolm.v1.aes-sha2"
18728+ ],
18729+ "device_id": "ALICEDEVICE456",
18730+ "keys": {
18731+ "curve25519:ALICEDEVICE456": "0lfH9na4bpubo+5GaGYwO3i2j99BWRaDr6pOmuy3/QI",
18732+ "ed25519:ALICEDEVICE456": "zKIdVP7yTkoH/cXh1og/hK8zYSG0DVAhzdGwiwePy1k"
18733+ },
18734+ "signatures": {
18735+ "@alice_456:hs1": {
18736+ "ed25519:ALICEDEVICE456": "UGkBYob3dgMoqg9cNg/Ok9iLfWVFhq8r9MVP0NSql/8FcNO9h8iWb2BxcgKbIZ33zP+ZAy8BGTdWMlOjB9SBCQ"
18737+ }
18738+ },
18739+ "user_id": "@alice_456:hs1",
18740+ "unsigned": {}
18741+ }
18742+ },
18743+ "@alice_476:hs1": {
18744+ "ALICEDEVICE476": {
18745+ "algorithms": [
18746+ "m.olm.v1.curve25519-aes-sha2",
18747+ "m.megolm.v1.aes-sha2"
18748+ ],
18749+ "device_id": "ALICEDEVICE476",
18750+ "keys": {
18751+ "curve25519:ALICEDEVICE476": "iIcOV/e8jixq2aS7GrvrUKk3k7qg51nfshk0Cw8jhFw",
18752+ "ed25519:ALICEDEVICE476": "F+FicFc0qjsouvDL8ThRaXQu+R0T2Ws7NixMOxnGzgM"
18753+ },
18754+ "signatures": {
18755+ "@alice_476:hs1": {
18756+ "ed25519:ALICEDEVICE476": "m94nZctzIpZvY5JSDYFD7famHmsVLVli+VfN655ZqcxISR/G3xdbJFMCJ/QQOSn6ukIhah2FEB4WRZ/WE0EvBg"
18757+ }
18758+ },
18759+ "user_id": "@alice_476:hs1",
18760+ "unsigned": {}
18761+ }
18762+ },
18763+ "@alice_478:hs1": {
18764+ "ALICEDEVICE478": {
18765+ "algorithms": [
18766+ "m.olm.v1.curve25519-aes-sha2",
18767+ "m.megolm.v1.aes-sha2"
18768+ ],
18769+ "device_id": "ALICEDEVICE478",
18770+ "keys": {
18771+ "curve25519:ALICEDEVICE478": "QbFTIQzbWe93M7her+22IZhdkYR3RWCZUOEHPbWU0mQ",
18772+ "ed25519:ALICEDEVICE478": "pD9vvXqCbnvk2uX1SvpDts+zzkGAPyG5dqAzQkAPszI"
18773+ },
18774+ "signatures": {
18775+ "@alice_478:hs1": {
18776+ "ed25519:ALICEDEVICE478": "oJ+d/QYMKkXvkRcCPC3IzRYo7WDei+TvoA31k+8wS2g/T0+UcmniWUJubLRjNHnMyOyuUC9NuFY2BlE/JF+pAg"
18777+ }
18778+ },
18779+ "user_id": "@alice_478:hs1",
18780+ "unsigned": {}
18781+ }
18782+ },
18783+ "@alice_490:hs1": {
18784+ "ALICEDEVICE490": {
18785+ "algorithms": [
18786+ "m.olm.v1.curve25519-aes-sha2",
18787+ "m.megolm.v1.aes-sha2"
18788+ ],
18789+ "device_id": "ALICEDEVICE490",
18790+ "keys": {
18791+ "curve25519:ALICEDEVICE490": "o7jd0WHIJvV9n1ZC0JexnERFSOxGJc4Esg75FWeZWSc",
18792+ "ed25519:ALICEDEVICE490": "XPgd7yrgC/Ro/Ndbbybo+LdRRoJ0ZiEKR0FnCie8dSo"
18793+ },
18794+ "signatures": {
18795+ "@alice_490:hs1": {
18796+ "ed25519:ALICEDEVICE490": "aq1OtRmoF0+ehV+QOLs7Oc2Q+tGkoTep4hjEo4oWcwyI5PQeIMdCvzQwbsUS0BUT7BAUMzRKbVuAw8QOuhkeBA"
18797+ }
18798+ },
18799+ "user_id": "@alice_490:hs1",
18800+ "unsigned": {}
18801+ }
18802+ },
18803+ "@alice_4:hs1": {
18804+ "ALICEDEVICE4": {
18805+ "algorithms": [
18806+ "m.olm.v1.curve25519-aes-sha2",
18807+ "m.megolm.v1.aes-sha2"
18808+ ],
18809+ "device_id": "ALICEDEVICE4",
18810+ "keys": {
18811+ "curve25519:ALICEDEVICE4": "iDg0ocLBSX6+mpUnRl9TfVnDjdpJc+E15SALuY3cUB0",
18812+ "ed25519:ALICEDEVICE4": "UPM9nHD6jmsq5Rk6K9w51YaGU2Y2JePUwcTQHvXELlM"
18813+ },
18814+ "signatures": {
18815+ "@alice_4:hs1": {
18816+ "ed25519:ALICEDEVICE4": "hcWF5KSZzj/wvHLtqw+5ntbC3r5uGtwlCKT3wKdsrkjDL/6qbapJXl1fBVVpBnrZW/REi4Qqbl+2PbgXwZEQDw"
18817+ }
18818+ },
18819+ "user_id": "@alice_4:hs1",
18820+ "unsigned": {}
18821+ }
18822+ },
18823+ "@alice_503:hs1": {
18824+ "ALICEDEVICE503": {
18825+ "algorithms": [
18826+ "m.olm.v1.curve25519-aes-sha2",
18827+ "m.megolm.v1.aes-sha2"
18828+ ],
18829+ "device_id": "ALICEDEVICE503",
18830+ "keys": {
18831+ "curve25519:ALICEDEVICE503": "pqgyqfydHGeJamzoywjUH+7POxP3lULi7YQRS5r/WyM",
18832+ "ed25519:ALICEDEVICE503": "hnp2aBqM9KL1QQ1jk/PWzHPb8moGPlO2LuZ+h44nkQg"
18833+ },
18834+ "signatures": {
18835+ "@alice_503:hs1": {
18836+ "ed25519:ALICEDEVICE503": "jypK7fJxnHpxeWkLMzJnutkbmoDwaqKE0vs8XBrjfQ+nnK35UvDg691vAkRRl+Qd0YC7Y819zvc3fuYLn0pzAg"
18837+ }
18838+ },
18839+ "user_id": "@alice_503:hs1",
18840+ "unsigned": {}
18841+ }
18842+ },
18843+ "@alice_504:hs1": {
18844+ "ALICEDEVICE504": {
18845+ "algorithms": [
18846+ "m.olm.v1.curve25519-aes-sha2",
18847+ "m.megolm.v1.aes-sha2"
18848+ ],
18849+ "device_id": "ALICEDEVICE504",
18850+ "keys": {
18851+ "curve25519:ALICEDEVICE504": "8UEvqXaJtNsXG55RFVxkZ8tmsqvYJzpTv5ZXEGjtLFQ",
18852+ "ed25519:ALICEDEVICE504": "xK1vhODzCiJ160O4i/Rvpt4kL8cjvFb1S4wmrxUWZcY"
18853+ },
18854+ "signatures": {
18855+ "@alice_504:hs1": {
18856+ "ed25519:ALICEDEVICE504": "TdtYzh2UqS4X6ADGYmiYYjAJSVZkakUS88fzVC/VchTNSyeYE84WLn47v/dUe8OuEmlx0gOL0pVG7l85a7PFAA"
18857+ }
18858+ },
18859+ "user_id": "@alice_504:hs1",
18860+ "unsigned": {}
18861+ }
18862+ },
18863+ "@alice_506:hs1": {
18864+ "ALICEDEVICE506": {
18865+ "algorithms": [
18866+ "m.olm.v1.curve25519-aes-sha2",
18867+ "m.megolm.v1.aes-sha2"
18868+ ],
18869+ "device_id": "ALICEDEVICE506",
18870+ "keys": {
18871+ "curve25519:ALICEDEVICE506": "vYF//pxXpYnQgKrHjLR+KpW0QiGPUOmRYqzPXt4g+js",
18872+ "ed25519:ALICEDEVICE506": "tPuYqcTi3JBeFB0wV3W3etgZrdZRrGlcaAvcn7+1aQc"
18873+ },
18874+ "signatures": {
18875+ "@alice_506:hs1": {
18876+ "ed25519:ALICEDEVICE506": "ELjO/i3K38SD2TToxmrab8kejSmpCDjsg4LiBkG2ftZi/pwCg78+LMQfUd0Y5TaHFit9EF3kJsHstviBXGCnBA"
18877+ }
18878+ },
18879+ "user_id": "@alice_506:hs1",
18880+ "unsigned": {}
18881+ }
18882+ },
18883+ "@alice_519:hs1": {
18884+ "ALICEDEVICE519": {
18885+ "algorithms": [
18886+ "m.olm.v1.curve25519-aes-sha2",
18887+ "m.megolm.v1.aes-sha2"
18888+ ],
18889+ "device_id": "ALICEDEVICE519",
18890+ "keys": {
18891+ "curve25519:ALICEDEVICE519": "m4tohdhsp3r7uQGZune4cgYg6Wri1LGj6/5IYM+m+SU",
18892+ "ed25519:ALICEDEVICE519": "KroMsAvJDld0ddzKmcxzZh32nDcI64K/XEAhhf4Qq3M"
18893+ },
18894+ "signatures": {
18895+ "@alice_519:hs1": {
18896+ "ed25519:ALICEDEVICE519": "GAfY3HA8qIJbhUqMiIDXc4qJdukYO5rYoN7QpekPu/r95zQt3q92P5+zXqt2c+WUiB/0H+mC9q12w5YgA1iaCQ"
18897+ }
18898+ },
18899+ "user_id": "@alice_519:hs1",
18900+ "unsigned": {}
18901+ }
18902+ },
18903+ "@alice_523:hs1": {
18904+ "ALICEDEVICE523": {
18905+ "algorithms": [
18906+ "m.olm.v1.curve25519-aes-sha2",
18907+ "m.megolm.v1.aes-sha2"
18908+ ],
18909+ "device_id": "ALICEDEVICE523",
18910+ "keys": {
18911+ "curve25519:ALICEDEVICE523": "cz28ZrF6npOJwzQ9+vmLMc/wHjmu4psQB2mG8aUvBQE",
18912+ "ed25519:ALICEDEVICE523": "oeIrNeXpiJ1SsjTEawpNhTLVQGc053np1Iaa26nAHLk"
18913+ },
18914+ "signatures": {
18915+ "@alice_523:hs1": {
18916+ "ed25519:ALICEDEVICE523": "aQL8Xfjn/rlkQ9gyo18kgL3HMLjj74e+Ic+l0H5B2vYrmHgvxlr31GaYKXG7kbo8NMdLO/HTYc0cCzuPCDFiDg"
18917+ }
18918+ },
18919+ "user_id": "@alice_523:hs1",
18920+ "unsigned": {}
18921+ }
18922+ },
18923+ "@alice_524:hs1": {
18924+ "ALICEDEVICE524": {
18925+ "algorithms": [
18926+ "m.olm.v1.curve25519-aes-sha2",
18927+ "m.megolm.v1.aes-sha2"
18928+ ],
18929+ "device_id": "ALICEDEVICE524",
18930+ "keys": {
18931+ "curve25519:ALICEDEVICE524": "FAlJJjeLnguDomFoDBIB8wBGjqvUSrs+gnVuzUYG7jk",
18932+ "ed25519:ALICEDEVICE524": "T9l7jLM2g230GM4iL65qOLctWrqWVvf2s5zSP80QJkY"
18933+ },
18934+ "signatures": {
18935+ "@alice_524:hs1": {
18936+ "ed25519:ALICEDEVICE524": "GMmoIaUOIGIkhuuxCAJ1yeucyINF9bqqSenqMFK8320gNduQm17wb9nGRYTFsRInIs+bzH7GVg9QjKmAYAguAQ"
18937+ }
18938+ },
18939+ "user_id": "@alice_524:hs1",
18940+ "unsigned": {}
18941+ }
18942+ },
18943+ "@alice_527:hs1": {
18944+ "ALICEDEVICE527": {
18945+ "algorithms": [
18946+ "m.olm.v1.curve25519-aes-sha2",
18947+ "m.megolm.v1.aes-sha2"
18948+ ],
18949+ "device_id": "ALICEDEVICE527",
18950+ "keys": {
18951+ "curve25519:ALICEDEVICE527": "cBKvrblEWQaSTQ5/56pV78fZzUTuQ919C6fYPIG0RlI",
18952+ "ed25519:ALICEDEVICE527": "Ka4b/ZFfyAM/2VAj/ImxQ/uE9+NwOqK7am8WUCN4bCo"
18953+ },
18954+ "signatures": {
18955+ "@alice_527:hs1": {
18956+ "ed25519:ALICEDEVICE527": "hrH4VwIrWDO6BXJ9kuSuhaX69GWQ2Qjj5uml+kBf3gvZndj5/fk83r+BFCRKQpMBr4GQuUzNq1DPgC2wVuk8Bw"
18957+ }
18958+ },
18959+ "user_id": "@alice_527:hs1",
18960+ "unsigned": {}
18961+ }
18962+ },
18963+ "@alice_541:hs1": {
18964+ "ALICEDEVICE541": {
18965+ "algorithms": [
18966+ "m.olm.v1.curve25519-aes-sha2",
18967+ "m.megolm.v1.aes-sha2"
18968+ ],
18969+ "device_id": "ALICEDEVICE541",
18970+ "keys": {
18971+ "curve25519:ALICEDEVICE541": "2wfcX8QhA1XjHXPTFTlA3SZxBNRtv1aEdxOvuqiE4BI",
18972+ "ed25519:ALICEDEVICE541": "GU08LRt5khfGltSQ0sJ3z+UKwgyhhqdfl3Z06ptefxY"
18973+ },
18974+ "signatures": {
18975+ "@alice_541:hs1": {
18976+ "ed25519:ALICEDEVICE541": "VM8GVLR1HyBEnSlzkucXXKzVr6vTnzJTKgiVSttmtptnUMwKIGVGJ0XNRDBebzFG1azOd/Z+mqVMtJU3Yk1tCA"
18977+ }
18978+ },
18979+ "user_id": "@alice_541:hs1",
18980+ "unsigned": {}
18981+ }
18982+ },
18983+ "@alice_545:hs1": {
18984+ "ALICEDEVICE545": {
18985+ "algorithms": [
18986+ "m.olm.v1.curve25519-aes-sha2",
18987+ "m.megolm.v1.aes-sha2"
18988+ ],
18989+ "device_id": "ALICEDEVICE545",
18990+ "keys": {
18991+ "curve25519:ALICEDEVICE545": "N5Dz+ueMbRXiayZ8pg372Spn1VHWiF+wg4NjbtM27Dc",
18992+ "ed25519:ALICEDEVICE545": "CKS++BtVQ1Q2OO/vxyQEH9N1VnmcK+oNxig2NBMa5og"
18993+ },
18994+ "signatures": {
18995+ "@alice_545:hs1": {
18996+ "ed25519:ALICEDEVICE545": "3bjiE+OUMRTAGvQRHcHYjX3vnRKJXHm7Eub7trgY0hfLT1G2yPtij/BXckKrJKT7Sljn507JqU1upg9qES7NCg"
18997+ }
18998+ },
18999+ "user_id": "@alice_545:hs1",
19000+ "unsigned": {}
19001+ }
19002+ },
19003+ "@alice_546:hs1": {
19004+ "ALICEDEVICE546": {
19005+ "algorithms": [
19006+ "m.olm.v1.curve25519-aes-sha2",
19007+ "m.megolm.v1.aes-sha2"
19008+ ],
19009+ "device_id": "ALICEDEVICE546",
19010+ "keys": {
19011+ "curve25519:ALICEDEVICE546": "+BmObApw37cruXI4JB+DE/Qh92F2iCRs5Y6i5y75hws",
19012+ "ed25519:ALICEDEVICE546": "vkkFyyOOgZZcG+oRVykQb75W5HTdRZQyvplt2jcAJFo"
19013+ },
19014+ "signatures": {
19015+ "@alice_546:hs1": {
19016+ "ed25519:ALICEDEVICE546": "g3GXun1vN/YCeSl8h/7Knd2Qtnr6wbU61eRDO9A5wUqymguwlvV6pFOfCtd3duHSSx7BeZ+M6M8l+cAgF4qTDg"
19017+ }
19018+ },
19019+ "user_id": "@alice_546:hs1",
19020+ "unsigned": {}
19021+ }
19022+ },
19023+ "@alice_550:hs1": {
19024+ "ALICEDEVICE550": {
19025+ "algorithms": [
19026+ "m.olm.v1.curve25519-aes-sha2",
19027+ "m.megolm.v1.aes-sha2"
19028+ ],
19029+ "device_id": "ALICEDEVICE550",
19030+ "keys": {
19031+ "curve25519:ALICEDEVICE550": "/Jhhal6Kc8Me4D6I1YjUA4bwfwHlYD+BUescKTGV1WI",
19032+ "ed25519:ALICEDEVICE550": "Tt+7hX0kg8WUUATQIuDd16aR2mC8sLw5a9XvGYaplNM"
19033+ },
19034+ "signatures": {
19035+ "@alice_550:hs1": {
19036+ "ed25519:ALICEDEVICE550": "xKpcv55EgmdoBjh1elHRBdt5tqnTO6oCUtv/o7kXSDWJMXFvBhVrrhbZMoORfxl3Svf1FFWWI5g9kkz0bA1WAQ"
19037+ }
19038+ },
19039+ "user_id": "@alice_550:hs1",
19040+ "unsigned": {}
19041+ }
19042+ },
19043+ "@alice_561:hs1": {
19044+ "ALICEDEVICE561": {
19045+ "algorithms": [
19046+ "m.olm.v1.curve25519-aes-sha2",
19047+ "m.megolm.v1.aes-sha2"
19048+ ],
19049+ "device_id": "ALICEDEVICE561",
19050+ "keys": {
19051+ "curve25519:ALICEDEVICE561": "5TwjE6TklDUHUvSSrmxTeL1weWfUWo0DYotMT4rxvEw",
19052+ "ed25519:ALICEDEVICE561": "Co0gN0x8Cw1exo4yfhlK7aMCnq6h/0okCkqHonsO46E"
19053+ },
19054+ "signatures": {
19055+ "@alice_561:hs1": {
19056+ "ed25519:ALICEDEVICE561": "+8hY2Aqv0gmWyBoqxfWnyhD3xPEoloPCFCNh2AL8xdlbWkni4UXIFZi1/uxxaWG+m2HRP5Rgg4ya6KPCUgzCCQ"
19057+ }
19058+ },
19059+ "user_id": "@alice_561:hs1",
19060+ "unsigned": {}
19061+ }
19062+ },
19063+ "@alice_563:hs1": {
19064+ "ALICEDEVICE563": {
19065+ "algorithms": [
19066+ "m.olm.v1.curve25519-aes-sha2",
19067+ "m.megolm.v1.aes-sha2"
19068+ ],
19069+ "device_id": "ALICEDEVICE563",
19070+ "keys": {
19071+ "curve25519:ALICEDEVICE563": "xhh5NUnDUWm68NUOPwpmuYW+MHYWsqVazATzb690BE0",
19072+ "ed25519:ALICEDEVICE563": "E82YGiDM+WPMateB4fygE1jID+pKxozKLJTfl7iLhJs"
19073+ },
19074+ "signatures": {
19075+ "@alice_563:hs1": {
19076+ "ed25519:ALICEDEVICE563": "3HjDQOB7w2EvjSP9IEGmErS1Nw4YK/4WbbYf4mLd/RiVMbcWvPqcXlYUBQzkpdGHh4ZJDOY5lFeSFmqQKaqbBg"
19077+ }
19078+ },
19079+ "user_id": "@alice_563:hs1",
19080+ "unsigned": {}
19081+ }
19082+ },
19083+ "@alice_564:hs1": {
19084+ "ALICEDEVICE564": {
19085+ "algorithms": [
19086+ "m.olm.v1.curve25519-aes-sha2",
19087+ "m.megolm.v1.aes-sha2"
19088+ ],
19089+ "device_id": "ALICEDEVICE564",
19090+ "keys": {
19091+ "curve25519:ALICEDEVICE564": "g7mmqnxc/7N4fSm4/RiN0p9cg+TegC5Vr+nLhr+pFj0",
19092+ "ed25519:ALICEDEVICE564": "2zc7h9OkvfnTiX2dwUl55dzqfSSQOiFIcTz46LG3tlg"
19093+ },
19094+ "signatures": {
19095+ "@alice_564:hs1": {
19096+ "ed25519:ALICEDEVICE564": "eiT9kJZq/Vp+a30XvKfvUHRbjKM33hq+OjC0EYQXArSyV4iDXpOVybYCvz7+7mw8i8jkA0GlcLn85sMYY95nAg"
19097+ }
19098+ },
19099+ "user_id": "@alice_564:hs1",
19100+ "unsigned": {}
19101+ }
19102+ },
19103+ "@alice_575:hs1": {
19104+ "ALICEDEVICE575": {
19105+ "algorithms": [
19106+ "m.olm.v1.curve25519-aes-sha2",
19107+ "m.megolm.v1.aes-sha2"
19108+ ],
19109+ "device_id": "ALICEDEVICE575",
19110+ "keys": {
19111+ "curve25519:ALICEDEVICE575": "2k+2QFHY6XJVRUN3+lqC3nbiVo6ywyvNN1fdroYOYww",
19112+ "ed25519:ALICEDEVICE575": "4NlUSsdChXep4gcsz9pWesFqVK6A5tBPqFsBnu1GMJI"
19113+ },
19114+ "signatures": {
19115+ "@alice_575:hs1": {
19116+ "ed25519:ALICEDEVICE575": "vnj2RYjigeibbehOFlfzsCWgNW9lnXzllxIbjTAELr9z/Nc/muHNLy+OTFJVhHi64ecbKSkWi3xxgy1zvTcMBQ"
19117+ }
19118+ },
19119+ "user_id": "@alice_575:hs1",
19120+ "unsigned": {}
19121+ }
19122+ },
19123+ "@alice_577:hs1": {
19124+ "ALICEDEVICE577": {
19125+ "algorithms": [
19126+ "m.olm.v1.curve25519-aes-sha2",
19127+ "m.megolm.v1.aes-sha2"
19128+ ],
19129+ "device_id": "ALICEDEVICE577",
19130+ "keys": {
19131+ "curve25519:ALICEDEVICE577": "6yvqCFtl9Uenl8ziQOIl45fMxuvNc2RODFPAdIkFPTw",
19132+ "ed25519:ALICEDEVICE577": "w5aJBah8GJDP39JvTL/vd/NOSdyr6ZCYFTQqT6KPfRs"
19133+ },
19134+ "signatures": {
19135+ "@alice_577:hs1": {
19136+ "ed25519:ALICEDEVICE577": "+wEiq8n/4k7mZ1rb62eadzlIfcB3fnM5cebOeqk71XffVDNKU6bxx16RUmt1dnJ6waGzHoY1SRDW6m+n8BxDCQ"
19137+ }
19138+ },
19139+ "user_id": "@alice_577:hs1",
19140+ "unsigned": {}
19141+ }
19142+ },
19143+ "@alice_578:hs1": {
19144+ "ALICEDEVICE578": {
19145+ "algorithms": [
19146+ "m.olm.v1.curve25519-aes-sha2",
19147+ "m.megolm.v1.aes-sha2"
19148+ ],
19149+ "device_id": "ALICEDEVICE578",
19150+ "keys": {
19151+ "curve25519:ALICEDEVICE578": "66BnsOmTB6v88nlkyCKHG6/Js1K4OlsJ2OltDw/x0kA",
19152+ "ed25519:ALICEDEVICE578": "4K7ViwXRoHby5JvZY4bZjKtZmw6esZeXpwh8serFBfU"
19153+ },
19154+ "signatures": {
19155+ "@alice_578:hs1": {
19156+ "ed25519:ALICEDEVICE578": "70XZ5+jrO75BRiB8b8cNbd+bMr0QCQDcTqB5P5UB+43LrLWIzLxJd5CA/auQqLj9OJmYrfv+xfgYm1P1KCEkAg"
19157+ }
19158+ },
19159+ "user_id": "@alice_578:hs1",
19160+ "unsigned": {}
19161+ }
19162+ },
19163+ "@alice_580:hs1": {
19164+ "ALICEDEVICE580": {
19165+ "algorithms": [
19166+ "m.olm.v1.curve25519-aes-sha2",
19167+ "m.megolm.v1.aes-sha2"
19168+ ],
19169+ "device_id": "ALICEDEVICE580",
19170+ "keys": {
19171+ "curve25519:ALICEDEVICE580": "yryQiGhFTnEzBs7vjUK+LKWWOHGIcigXeASy9uUxeBg",
19172+ "ed25519:ALICEDEVICE580": "wnyuHMtG8ZE5TOgqksMdRZ3W9pGmit5l/TTzJPAdmAY"
19173+ },
19174+ "signatures": {
19175+ "@alice_580:hs1": {
19176+ "ed25519:ALICEDEVICE580": "kguA5PNsewwMDLnCXQD4x7hrXu9zjz74WenLf6vmUKPiDIZjFTMXzrXP/zeqSON6StMHXtbMA26ZCWzw7EQpBQ"
19177+ }
19178+ },
19179+ "user_id": "@alice_580:hs1",
19180+ "unsigned": {}
19181+ }
19182+ },
19183+ "@alice_586:hs1": {
19184+ "ALICEDEVICE586": {
19185+ "algorithms": [
19186+ "m.olm.v1.curve25519-aes-sha2",
19187+ "m.megolm.v1.aes-sha2"
19188+ ],
19189+ "device_id": "ALICEDEVICE586",
19190+ "keys": {
19191+ "curve25519:ALICEDEVICE586": "1zvfHfT91GlD4kRkdMYBLzqVFxaAFidOFv4V+0FfDxM",
19192+ "ed25519:ALICEDEVICE586": "hUhI1s48s+GqLve6G2BSx6QpTJNF6t65jIrPNU96ZjE"
19193+ },
19194+ "signatures": {
19195+ "@alice_586:hs1": {
19196+ "ed25519:ALICEDEVICE586": "wNy5eq4MFqOxeRW6/ADmDuJCTYR3wrFY+JbgB98D72g7aI7AtdCyDsSrdxIRY2sku5DW0ZuZfBiSIpMQRdK1Cg"
19197+ }
19198+ },
19199+ "user_id": "@alice_586:hs1",
19200+ "unsigned": {}
19201+ }
19202+ },
19203+ "@alice_588:hs1": {
19204+ "ALICEDEVICE588": {
19205+ "algorithms": [
19206+ "m.olm.v1.curve25519-aes-sha2",
19207+ "m.megolm.v1.aes-sha2"
19208+ ],
19209+ "device_id": "ALICEDEVICE588",
19210+ "keys": {
19211+ "curve25519:ALICEDEVICE588": "BRo2EhtPtSK5nkDD30lvy4dAkuZDFpkyWt1XoEKGxCQ",
19212+ "ed25519:ALICEDEVICE588": "VuMef4EHCJM6XZkDhc+fajI+cr4Coyp3bA7qbWf/+fM"
19213+ },
19214+ "signatures": {
19215+ "@alice_588:hs1": {
19216+ "ed25519:ALICEDEVICE588": "GNHs9G8PpmfTiu+owHPgPUJFHM33GXONUccUPDBKPKCN7W4Bo9pKDLkBepGvtSTH7lCfIx25D8a5LKELCIm/Bg"
19217+ }
19218+ },
19219+ "user_id": "@alice_588:hs1",
19220+ "unsigned": {}
19221+ }
19222+ },
19223+ "@alice_58:hs1": {
19224+ "ALICEDEVICE58": {
19225+ "algorithms": [
19226+ "m.olm.v1.curve25519-aes-sha2",
19227+ "m.megolm.v1.aes-sha2"
19228+ ],
19229+ "device_id": "ALICEDEVICE58",
19230+ "keys": {
19231+ "curve25519:ALICEDEVICE58": "VWB/BGRtVxfuk1KruNOgPQd/4oBSuH0pA06GXos25zQ",
19232+ "ed25519:ALICEDEVICE58": "CDXQZT+TkM55l6r5sB6278czpiOtrf94BkAXD4WVY78"
19233+ },
19234+ "signatures": {
19235+ "@alice_58:hs1": {
19236+ "ed25519:ALICEDEVICE58": "xrTJ66QrE1KCARAXOKIxVeMj9l5hAgfGoeh6JOd93/8tjvhBFX1oPHS6MvmT8VHd4db8ZpNaHOd6dqLs8HdUAQ"
19237+ }
19238+ },
19239+ "user_id": "@alice_58:hs1",
19240+ "unsigned": {}
19241+ }
19242+ },
19243+ "@alice_592:hs1": {
19244+ "ALICEDEVICE592": {
19245+ "algorithms": [
19246+ "m.olm.v1.curve25519-aes-sha2",
19247+ "m.megolm.v1.aes-sha2"
19248+ ],
19249+ "device_id": "ALICEDEVICE592",
19250+ "keys": {
19251+ "curve25519:ALICEDEVICE592": "CDWTlPrr8kPcujftnKikiRk7YhJT/CZl5lYOzNr+Ihs",
19252+ "ed25519:ALICEDEVICE592": "Ixxn+OaUoMKV5Q5K6dqM2EZCJK1iZRA2huYOzocHeho"
19253+ },
19254+ "signatures": {
19255+ "@alice_592:hs1": {
19256+ "ed25519:ALICEDEVICE592": "raXdmXntrOmS5wIYlfIfSWf/c+K74eUepzRBJjZSi2gsCYlTxStI1XNLKsr7Nu18mar1QIajK0+5rsRNv/ZBCg"
19257+ }
19258+ },
19259+ "user_id": "@alice_592:hs1",
19260+ "unsigned": {}
19261+ }
19262+ },
19263+ "@alice_648:hs1": {
19264+ "ALICEDEVICE648": {
19265+ "algorithms": [
19266+ "m.olm.v1.curve25519-aes-sha2",
19267+ "m.megolm.v1.aes-sha2"
19268+ ],
19269+ "device_id": "ALICEDEVICE648",
19270+ "keys": {
19271+ "curve25519:ALICEDEVICE648": "HyxRUgQFv0OUqijuRhGlVxQtZJc4RGxzfv0l8tuM5U4",
19272+ "ed25519:ALICEDEVICE648": "W9la+krd3r6SsDVhzudZbmRQPZvWMUMck6twzsXY8Wc"
19273+ },
19274+ "signatures": {
19275+ "@alice_648:hs1": {
19276+ "ed25519:ALICEDEVICE648": "SL39vSPJrn6bcJF+W2Sfh1NzYGP1IjYkkePQYI0WgtVAM7AmBe8fR99sni7Db+Atal+AqxBGCwFeobR4mhI6Cg"
19277+ }
19278+ },
19279+ "user_id": "@alice_648:hs1",
19280+ "unsigned": {}
19281+ }
19282+ },
19283+ "@alice_649:hs1": {
19284+ "ALICEDEVICE649": {
19285+ "algorithms": [
19286+ "m.olm.v1.curve25519-aes-sha2",
19287+ "m.megolm.v1.aes-sha2"
19288+ ],
19289+ "device_id": "ALICEDEVICE649",
19290+ "keys": {
19291+ "curve25519:ALICEDEVICE649": "TdaKA1gcaSmxkvq6zP/gwKUvbnnDOyJiB77/GI42elU",
19292+ "ed25519:ALICEDEVICE649": "O+7KkQ/6mE4yhQfliuXp64b5BrMofO77ApbNQov/VXE"
19293+ },
19294+ "signatures": {
19295+ "@alice_649:hs1": {
19296+ "ed25519:ALICEDEVICE649": "T1+Fdur5jW6glxzWj1aq3bQ8A3UxM8yVpDN+Z+Dq4O5k1sp+js5wsh8rZB1LMxtU7GjWUi26YYGCqIvrUtYLDA"
19297+ }
19298+ },
19299+ "user_id": "@alice_649:hs1",
19300+ "unsigned": {}
19301+ }
19302+ },
19303+ "@alice_651:hs1": {
19304+ "ALICEDEVICE651": {
19305+ "algorithms": [
19306+ "m.olm.v1.curve25519-aes-sha2",
19307+ "m.megolm.v1.aes-sha2"
19308+ ],
19309+ "device_id": "ALICEDEVICE651",
19310+ "keys": {
19311+ "curve25519:ALICEDEVICE651": "l2iVS3x3lXcW/46d8bUWy4io5hXAWB/WwQGDSPo7uCI",
19312+ "ed25519:ALICEDEVICE651": "WecvB2KMlCzUeCGMx44mdIU7SIJMjX8uz+kQnnmVg5A"
19313+ },
19314+ "signatures": {
19315+ "@alice_651:hs1": {
19316+ "ed25519:ALICEDEVICE651": "UtDsm+zhizlqOsFi/7lsQ0+zx4cHK16xeI6yxnRztXBfJWpwxDH28Ch1ntqKF8GR2HZ1sMJwUjIkSC0z4+wQCg"
19317+ }
19318+ },
19319+ "user_id": "@alice_651:hs1",
19320+ "unsigned": {}
19321+ }
19322+ },
19323+ "@alice_653:hs1": {
19324+ "ALICEDEVICE653": {
19325+ "algorithms": [
19326+ "m.olm.v1.curve25519-aes-sha2",
19327+ "m.megolm.v1.aes-sha2"
19328+ ],
19329+ "device_id": "ALICEDEVICE653",
19330+ "keys": {
19331+ "curve25519:ALICEDEVICE653": "SJfj2lH79L5yIgJbuHmRUOy5mCEzkRWcZc2JxrG+Pns",
19332+ "ed25519:ALICEDEVICE653": "g3zIDiR1VJX4mh8JGmpIgDeVHaRRehXmAFGJzn1PjiQ"
19333+ },
19334+ "signatures": {
19335+ "@alice_653:hs1": {
19336+ "ed25519:ALICEDEVICE653": "VebP1TSQJ4wSGJ37pbqUA0XaVDVKFYLdaiJgRaSn+JVGl2VFmQa1Tx01WUTXhL/9a2d6oyvxK7LXo5EEHLOsAQ"
19337+ }
19338+ },
19339+ "user_id": "@alice_653:hs1",
19340+ "unsigned": {}
19341+ }
19342+ },
19343+ "@alice_660:hs1": {
19344+ "ALICEDEVICE660": {
19345+ "algorithms": [
19346+ "m.olm.v1.curve25519-aes-sha2",
19347+ "m.megolm.v1.aes-sha2"
19348+ ],
19349+ "device_id": "ALICEDEVICE660",
19350+ "keys": {
19351+ "curve25519:ALICEDEVICE660": "MqVX4SgHDMjC4mt5r/jUiA4IiVbmKU8JYBhKFNxKBk4",
19352+ "ed25519:ALICEDEVICE660": "lpE6o77XAqh3Crr82GIU04SrHmKYPHlkyclD0R0c1+I"
19353+ },
19354+ "signatures": {
19355+ "@alice_660:hs1": {
19356+ "ed25519:ALICEDEVICE660": "HnOJYi+730/v47xjHlkJvP5lH61Rgy/g0X/PMtNpjO0NNDm/oupLNGTljXHiUrzo9h6zKA49urZX0OsNo2HlAA"
19357+ }
19358+ },
19359+ "user_id": "@alice_660:hs1",
19360+ "unsigned": {}
19361+ }
19362+ },
19363+ "@alice_676:hs1": {
19364+ "ALICEDEVICE676": {
19365+ "algorithms": [
19366+ "m.olm.v1.curve25519-aes-sha2",
19367+ "m.megolm.v1.aes-sha2"
19368+ ],
19369+ "device_id": "ALICEDEVICE676",
19370+ "keys": {
19371+ "curve25519:ALICEDEVICE676": "yOn6jnxdmb8zgXsnwazwo56SU1vIMxCoLsm6hgqowUA",
19372+ "ed25519:ALICEDEVICE676": "2LJcYqdg6ZhzkiML/CvNWQ93K+9EhB/nXgSgatb0l44"
19373+ },
19374+ "signatures": {
19375+ "@alice_676:hs1": {
19376+ "ed25519:ALICEDEVICE676": "4z7tZ3pbNNq8YiNDakRBcudh9cOOGZn59/Kc4Xjh+rZogK/C8KA6aFqhq6l+oVixH/TOSxUnR5nZ4hRdrFp+Dg"
19377+ }
19378+ },
19379+ "user_id": "@alice_676:hs1",
19380+ "unsigned": {}
19381+ }
19382+ },
19383+ "@alice_689:hs1": {
19384+ "ALICEDEVICE689": {
19385+ "algorithms": [
19386+ "m.olm.v1.curve25519-aes-sha2",
19387+ "m.megolm.v1.aes-sha2"
19388+ ],
19389+ "device_id": "ALICEDEVICE689",
19390+ "keys": {
19391+ "curve25519:ALICEDEVICE689": "ZsTnw5CPDufHdRyNbR2TE2Sd47cx/coPFTTjdcH1fAU",
19392+ "ed25519:ALICEDEVICE689": "4EIGytYhL3yD+Gf6wYQ5Y37beNZJ/bpPxCPl0vl+gNg"
19393+ },
19394+ "signatures": {
19395+ "@alice_689:hs1": {
19396+ "ed25519:ALICEDEVICE689": "2xggaoTaQ2WadMqSpe5m7Nekuj0RWg2B6p8c9YVM7+vnCjBhwLiySObnIrdG1K/jULTi19pjzLnv9KG50SaABQ"
19397+ }
19398+ },
19399+ "user_id": "@alice_689:hs1",
19400+ "unsigned": {}
19401+ }
19402+ },
19403+ "@alice_68:hs1": {
19404+ "ALICEDEVICE68": {
19405+ "algorithms": [
19406+ "m.olm.v1.curve25519-aes-sha2",
19407+ "m.megolm.v1.aes-sha2"
19408+ ],
19409+ "device_id": "ALICEDEVICE68",
19410+ "keys": {
19411+ "curve25519:ALICEDEVICE68": "Sg8Fhheu8GNAgDIzOxBrR2PWtpBSLd34bBCHCD8ZQmQ",
19412+ "ed25519:ALICEDEVICE68": "rWm4d605hWc8cNW7exE5FFOt0yBZZuqBB6HT/o/3LxY"
19413+ },
19414+ "signatures": {
19415+ "@alice_68:hs1": {
19416+ "ed25519:ALICEDEVICE68": "qq7fF6dYKpN43mLVUGpN4kc8R3f+inKgw8627X9xvoqhxVT1On3f5dOd4Z3SYQQJrxaQg5WNTrDixP309kItAQ"
19417+ }
19418+ },
19419+ "user_id": "@alice_68:hs1",
19420+ "unsigned": {}
19421+ }
19422+ },
19423+ "@alice_690:hs1": {
19424+ "ALICEDEVICE690": {
19425+ "algorithms": [
19426+ "m.olm.v1.curve25519-aes-sha2",
19427+ "m.megolm.v1.aes-sha2"
19428+ ],
19429+ "device_id": "ALICEDEVICE690",
19430+ "keys": {
19431+ "curve25519:ALICEDEVICE690": "OBxn+ihAB/eti+pCY8XHQqIZQ19iGx3BVKrG8dzsZUM",
19432+ "ed25519:ALICEDEVICE690": "1tryMEWTz74Jsi15mzmjYoWfXNFIUu38UvQYW/k9ykk"
19433+ },
19434+ "signatures": {
19435+ "@alice_690:hs1": {
19436+ "ed25519:ALICEDEVICE690": "+PI83u+e4/44a269IzzuFgsN2sznTdz+iPbmPaEXQP2jB8qnC2JxewCtKv+KP0LFjrSbYYHlmqTrbF+B2HMCDw"
19437+ }
19438+ },
19439+ "user_id": "@alice_690:hs1",
19440+ "unsigned": {}
19441+ }
19442+ },
19443+ "@alice_702:hs1": {
19444+ "ALICEDEVICE702": {
19445+ "algorithms": [
19446+ "m.olm.v1.curve25519-aes-sha2",
19447+ "m.megolm.v1.aes-sha2"
19448+ ],
19449+ "device_id": "ALICEDEVICE702",
19450+ "keys": {
19451+ "curve25519:ALICEDEVICE702": "POjgh/Nv28PM8g0NAJ4DwAaXKPbqaHJqTJMGGvzc6QU",
19452+ "ed25519:ALICEDEVICE702": "Qk6pTgkhVGeZJnllxh4oKqRiFl955FaOBRizC+Wyyoc"
19453+ },
19454+ "signatures": {
19455+ "@alice_702:hs1": {
19456+ "ed25519:ALICEDEVICE702": "OyuMUkrFXo+Ha/moP+GCDLlkQFadbV+RGHonZZ+2fJZrVhOPHGWHPdNXd0FQIUjjgAa9R9cpWaQsPFBu0m8PDg"
19457+ }
19458+ },
19459+ "user_id": "@alice_702:hs1",
19460+ "unsigned": {}
19461+ }
19462+ },
19463+ "@alice_718:hs1": {
19464+ "ALICEDEVICE718": {
19465+ "algorithms": [
19466+ "m.olm.v1.curve25519-aes-sha2",
19467+ "m.megolm.v1.aes-sha2"
19468+ ],
19469+ "device_id": "ALICEDEVICE718",
19470+ "keys": {
19471+ "curve25519:ALICEDEVICE718": "XaB/BRUKS2qMxK4yqhXA2/hN47SX14MMbfzwi2e9UVY",
19472+ "ed25519:ALICEDEVICE718": "eO8sZDuBUGVsLOkJB5Qkd2D30scJ4H/kqUeUddubzFQ"
19473+ },
19474+ "signatures": {
19475+ "@alice_718:hs1": {
19476+ "ed25519:ALICEDEVICE718": "iUMXbVt7rIVKiOcZlSCW3Vok2nYikOfefmAxnJRhdLptDJ5UBdfJupQ1CfDYlLKEP80Ycf/EgUkyJscT2v2lCA"
19477+ }
19478+ },
19479+ "user_id": "@alice_718:hs1",
19480+ "unsigned": {}
19481+ }
19482+ },
19483+ "@alice_731:hs1": {
19484+ "ALICEDEVICE731": {
19485+ "algorithms": [
19486+ "m.olm.v1.curve25519-aes-sha2",
19487+ "m.megolm.v1.aes-sha2"
19488+ ],
19489+ "device_id": "ALICEDEVICE731",
19490+ "keys": {
19491+ "curve25519:ALICEDEVICE731": "CcO0/8faHEII+xgcz2+lWIBJ041031QqtvadckNrURo",
19492+ "ed25519:ALICEDEVICE731": "GztnnbCTrMvJNsRTmkVik5BEdJ1hSEJiI021lQ2dtaI"
19493+ },
19494+ "signatures": {
19495+ "@alice_731:hs1": {
19496+ "ed25519:ALICEDEVICE731": "VJYcQCAj1w5VrAxTgAuPY06P6ASGO4lcPFqYWq3WlcEUthcteS6cRjmSaHpo5CkEan31vlzoo4Zt6zptl2t3Cg"
19497+ }
19498+ },
19499+ "user_id": "@alice_731:hs1",
19500+ "unsigned": {}
19501+ }
19502+ },
19503+ "@alice_734:hs1": {
19504+ "ALICEDEVICE734": {
19505+ "algorithms": [
19506+ "m.olm.v1.curve25519-aes-sha2",
19507+ "m.megolm.v1.aes-sha2"
19508+ ],
19509+ "device_id": "ALICEDEVICE734",
19510+ "keys": {
19511+ "curve25519:ALICEDEVICE734": "9JS/8jwvfQZ0/btQlJJVVxWxN+1jAY96A2YM+EYVMEk",
19512+ "ed25519:ALICEDEVICE734": "ugU2XvgmIluU+VJwvZ9uR3ESMss0kbRBcsxMY4SfvhA"
19513+ },
19514+ "signatures": {
19515+ "@alice_734:hs1": {
19516+ "ed25519:ALICEDEVICE734": "WdDhDHspX/euMWUjMxZQdkOsoegOiVIarEqggjK5I7qfwJaTdi2wkZ0ElgqC+iVjBaJ1hrVd9QjjYzmj7/Z9DQ"
19517+ }
19518+ },
19519+ "user_id": "@alice_734:hs1",
19520+ "unsigned": {}
19521+ }
19522+ },
19523+ "@alice_736:hs1": {
19524+ "ALICEDEVICE736": {
19525+ "algorithms": [
19526+ "m.olm.v1.curve25519-aes-sha2",
19527+ "m.megolm.v1.aes-sha2"
19528+ ],
19529+ "device_id": "ALICEDEVICE736",
19530+ "keys": {
19531+ "curve25519:ALICEDEVICE736": "Z8uCOmJlY0yKHiCjStjzpk8rUBY7sJ/n2IMRotFcaUg",
19532+ "ed25519:ALICEDEVICE736": "3+PNMk4GF6T5ktXPsa4EWd+7ofOa51Jy/qnOWIaW++c"
19533+ },
19534+ "signatures": {
19535+ "@alice_736:hs1": {
19536+ "ed25519:ALICEDEVICE736": "a39vjacgehE+r1DlqPAx4T+kEYSmtjnwpKDCsXvU1HqeM2u6Ewn+Hrw2EqRfkNRkGw1kmoasgpP1Qu3bgBaVCw"
19537+ }
19538+ },
19539+ "user_id": "@alice_736:hs1",
19540+ "unsigned": {}
19541+ }
19542+ },
19543+ "@alice_737:hs1": {
19544+ "ALICEDEVICE737": {
19545+ "algorithms": [
19546+ "m.olm.v1.curve25519-aes-sha2",
19547+ "m.megolm.v1.aes-sha2"
19548+ ],
19549+ "device_id": "ALICEDEVICE737",
19550+ "keys": {
19551+ "curve25519:ALICEDEVICE737": "prK2Jurzs5BLdDOW3z1MGypnOOnYqxBqU9yHK+sgC24",
19552+ "ed25519:ALICEDEVICE737": "sS2TkzbMuQXYCBAEQLCsqk/rq5HBc7Nrqc6WHLUHwyk"
19553+ },
19554+ "signatures": {
19555+ "@alice_737:hs1": {
19556+ "ed25519:ALICEDEVICE737": "CV1A2uF5u+8qwFYXDwLJ9DwcokA0YDt99+KITPWMOpg0IkBCWPvc3gB8fImiyi9IOo7U1nK+ljgw4wFtqJFfAg"
19557+ }
19558+ },
19559+ "user_id": "@alice_737:hs1",
19560+ "unsigned": {}
19561+ }
19562+ },
19563+ "@alice_747:hs1": {
19564+ "ALICEDEVICE747": {
19565+ "algorithms": [
19566+ "m.olm.v1.curve25519-aes-sha2",
19567+ "m.megolm.v1.aes-sha2"
19568+ ],
19569+ "device_id": "ALICEDEVICE747",
19570+ "keys": {
19571+ "curve25519:ALICEDEVICE747": "TBr7rD4LZkR3Epg1+WqVvPWWpXDmwsTh4/JK5Hen1wc",
19572+ "ed25519:ALICEDEVICE747": "VLZ13mtP0wzknksCTcBLKe/zY0aQAshmSjWHKqhGOaw"
19573+ },
19574+ "signatures": {
19575+ "@alice_747:hs1": {
19576+ "ed25519:ALICEDEVICE747": "64yBpmNtiVqVoVlaV1IVR3pt/Srh6rRQj5nw6wKpirsJaHJsp1LZl20+4zibrJWAD6rMtpvIXwN8YRrYlRKPBQ"
19577+ }
19578+ },
19579+ "user_id": "@alice_747:hs1",
19580+ "unsigned": {}
19581+ }
19582+ },
19583+ "@alice_750:hs1": {
19584+ "ALICEDEVICE750": {
19585+ "algorithms": [
19586+ "m.olm.v1.curve25519-aes-sha2",
19587+ "m.megolm.v1.aes-sha2"
19588+ ],
19589+ "device_id": "ALICEDEVICE750",
19590+ "keys": {
19591+ "curve25519:ALICEDEVICE750": "ay2Dlb7x7kChAmLuGUaAlbeseL/VoBGYnqjlyx5r6xc",
19592+ "ed25519:ALICEDEVICE750": "upun4eMXktGF4pFlAajtaHD/qfCtBOnF1IemDd7xVnw"
19593+ },
19594+ "signatures": {
19595+ "@alice_750:hs1": {
19596+ "ed25519:ALICEDEVICE750": "0bsqZVivS+HnGtPRc7AuDSSFM+gYS0h98YVHgVULRWQYf+F4gqUEiXAonRjfq93rVa3mrBMiDTGeGsjLZkH8DQ"
19597+ }
19598+ },
19599+ "user_id": "@alice_750:hs1",
19600+ "unsigned": {}
19601+ }
19602+ },
19603+ "@alice_760:hs1": {
19604+ "ALICEDEVICE760": {
19605+ "algorithms": [
19606+ "m.olm.v1.curve25519-aes-sha2",
19607+ "m.megolm.v1.aes-sha2"
19608+ ],
19609+ "device_id": "ALICEDEVICE760",
19610+ "keys": {
19611+ "curve25519:ALICEDEVICE760": "kOIHBpLqOEeDYOfmBXPI/xozaKjI7aoK1bx2o5Wuegk",
19612+ "ed25519:ALICEDEVICE760": "8scwcIPV9pEBe7hwdAh9XXi8903RT83EixE4TiJlbHc"
19613+ },
19614+ "signatures": {
19615+ "@alice_760:hs1": {
19616+ "ed25519:ALICEDEVICE760": "xXcYeCqFiEoyJCkz9LfoCJws5hixk6YeXXaluUvSmyyY4EhOuBoGBhOn/KVRC4KraMrecqu0KUhMEkGT9hSuDQ"
19617+ }
19618+ },
19619+ "user_id": "@alice_760:hs1",
19620+ "unsigned": {}
19621+ }
19622+ },
19623+ "@alice_76:hs1": {
19624+ "ALICEDEVICE76": {
19625+ "algorithms": [
19626+ "m.olm.v1.curve25519-aes-sha2",
19627+ "m.megolm.v1.aes-sha2"
19628+ ],
19629+ "device_id": "ALICEDEVICE76",
19630+ "keys": {
19631+ "curve25519:ALICEDEVICE76": "3eACOKHcQjeeYQqrvpcX8oVjoqWkuGG0JEM0tZpGIUw",
19632+ "ed25519:ALICEDEVICE76": "br+eFn+JuMp+Lklx5XnScLYuHTbUyCbew5SFelVH3I0"
19633+ },
19634+ "signatures": {
19635+ "@alice_76:hs1": {
19636+ "ed25519:ALICEDEVICE76": "k7s6JO6BDsLSdb97Qb/Ts4NcK9Gjo+1y2CaFS0hNR8iOlONyX1PV14/yoPyQ7vqWysJaCFdgu6QTXoBSBVGjBg"
19637+ }
19638+ },
19639+ "user_id": "@alice_76:hs1",
19640+ "unsigned": {}
19641+ }
19642+ },
19643+ "@alice_781:hs1": {
19644+ "ALICEDEVICE781": {
19645+ "algorithms": [
19646+ "m.olm.v1.curve25519-aes-sha2",
19647+ "m.megolm.v1.aes-sha2"
19648+ ],
19649+ "device_id": "ALICEDEVICE781",
19650+ "keys": {
19651+ "curve25519:ALICEDEVICE781": "WeNFTS8rqE+HnbW2/Br4wGUapiWVQOC4djmFjaWoJ2w",
19652+ "ed25519:ALICEDEVICE781": "c9qb7ykkpKWpN4gCBpqRtV1LBHK9iDxQuU9TRt6hHhY"
19653+ },
19654+ "signatures": {
19655+ "@alice_781:hs1": {
19656+ "ed25519:ALICEDEVICE781": "kgExA/vpC9zL/OyAizr0X0llzIZeBOFPKrDqnmeBLguT2U3TY2F4PSNv1ctZUPKPEjyVgeq9Ke+Tn+yTHeqiBw"
19657+ }
19658+ },
19659+ "user_id": "@alice_781:hs1",
19660+ "unsigned": {}
19661+ }
19662+ },
19663+ "@alice_787:hs1": {
19664+ "ALICEDEVICE787": {
19665+ "algorithms": [
19666+ "m.olm.v1.curve25519-aes-sha2",
19667+ "m.megolm.v1.aes-sha2"
19668+ ],
19669+ "device_id": "ALICEDEVICE787",
19670+ "keys": {
19671+ "curve25519:ALICEDEVICE787": "A8i+wFKXiuv61Ws0eZ6F9Uo4+8FxnD4/dDFIdORtlmI",
19672+ "ed25519:ALICEDEVICE787": "kHlZGFbViXHfsMJenwXa7WBm7DzYaLgAEiKttOHXv0A"
19673+ },
19674+ "signatures": {
19675+ "@alice_787:hs1": {
19676+ "ed25519:ALICEDEVICE787": "pq+VeDyhTRI1hVZuvUmFiJmVmKeEzv6prQ5Mq9oM6nM1m6x7QScSHHFCQlohlSTQZjqqi/N6JMJdV3Dx0mCXBA"
19677+ }
19678+ },
19679+ "user_id": "@alice_787:hs1",
19680+ "unsigned": {}
19681+ }
19682+ },
19683+ "@alice_800:hs1": {
19684+ "ALICEDEVICE800": {
19685+ "algorithms": [
19686+ "m.olm.v1.curve25519-aes-sha2",
19687+ "m.megolm.v1.aes-sha2"
19688+ ],
19689+ "device_id": "ALICEDEVICE800",
19690+ "keys": {
19691+ "curve25519:ALICEDEVICE800": "71SoJv3jSTvLwgbWGevOA7QGV/yYsoM22yc2RxMWMSk",
19692+ "ed25519:ALICEDEVICE800": "4HYKwti9HKsh2fAgOW///y1Gy24S8rcpGQTLiMUZDXE"
19693+ },
19694+ "signatures": {
19695+ "@alice_800:hs1": {
19696+ "ed25519:ALICEDEVICE800": "9WvKSyH+D1ujmPHM78Dy+JDo8HHCXAcQNix+lgDhE0fcdppQkwDbcXcxIvtC46359R6VmnL/uv1Wd0OXTrLwBA"
19697+ }
19698+ },
19699+ "user_id": "@alice_800:hs1",
19700+ "unsigned": {}
19701+ }
19702+ },
19703+ "@alice_802:hs1": {
19704+ "ALICEDEVICE802": {
19705+ "algorithms": [
19706+ "m.olm.v1.curve25519-aes-sha2",
19707+ "m.megolm.v1.aes-sha2"
19708+ ],
19709+ "device_id": "ALICEDEVICE802",
19710+ "keys": {
19711+ "curve25519:ALICEDEVICE802": "T/om0UOgyK3lemcMVK/8UP2N4t/DbRmhIM0iGl3FmHM",
19712+ "ed25519:ALICEDEVICE802": "Gj3o9SWEy6ogCMTTTue5oFaPdppBu4JCT6bfRXvpqNs"
19713+ },
19714+ "signatures": {
19715+ "@alice_802:hs1": {
19716+ "ed25519:ALICEDEVICE802": "H27DrzlyQWyZayX9yD8zM67oskMZ8s4LC4qcMjkjnWgE/xoQCkVs8hsSlmkuomyCCOPOGbPLli2ppG29iHWLDQ"
19717+ }
19718+ },
19719+ "user_id": "@alice_802:hs1",
19720+ "unsigned": {}
19721+ }
19722+ },
19723+ "@alice_816:hs1": {
19724+ "ALICEDEVICE816": {
19725+ "algorithms": [
19726+ "m.olm.v1.curve25519-aes-sha2",
19727+ "m.megolm.v1.aes-sha2"
19728+ ],
19729+ "device_id": "ALICEDEVICE816",
19730+ "keys": {
19731+ "curve25519:ALICEDEVICE816": "hbgj2t6XL87xFf+b9yUPufEFovoW3jYUN441RjmxJgY",
19732+ "ed25519:ALICEDEVICE816": "cv/84GDuvLXqvM6U/6MrfJvXVYSU3VbikvMq2JaJhX4"
19733+ },
19734+ "signatures": {
19735+ "@alice_816:hs1": {
19736+ "ed25519:ALICEDEVICE816": "s5AeZDECpVbzzoJ8j3JfnvLDLO8BNtSX8VOlbDsfEO5ABoME/3LhW0oFhhfGcbq4rD8sWC0lQLfbHmiCcsZ1Bg"
19737+ }
19738+ },
19739+ "user_id": "@alice_816:hs1",
19740+ "unsigned": {}
19741+ }
19742+ },
19743+ "@alice_818:hs1": {
19744+ "ALICEDEVICE818": {
19745+ "algorithms": [
19746+ "m.olm.v1.curve25519-aes-sha2",
19747+ "m.megolm.v1.aes-sha2"
19748+ ],
19749+ "device_id": "ALICEDEVICE818",
19750+ "keys": {
19751+ "curve25519:ALICEDEVICE818": "BVZKe7OKmYxhlEPaF359DtvDwkuryL7iBrrKi41A1H8",
19752+ "ed25519:ALICEDEVICE818": "ZzVLQ9wnWRuBU8LQIplcroWRN65O+aAs1sn0SOpcHxA"
19753+ },
19754+ "signatures": {
19755+ "@alice_818:hs1": {
19756+ "ed25519:ALICEDEVICE818": "jWomHaBJf21A/tqyJlqMrbqpQ9JeULBwBLJiiHyae+BosT8odLv1IbsOPAJ7s5Zi9E3q1EEoywQnUmNEY3gKBA"
19757+ }
19758+ },
19759+ "user_id": "@alice_818:hs1",
19760+ "unsigned": {}
19761+ }
19762+ },
19763+ "@alice_837:hs1": {
19764+ "ALICEDEVICE837": {
19765+ "algorithms": [
19766+ "m.olm.v1.curve25519-aes-sha2",
19767+ "m.megolm.v1.aes-sha2"
19768+ ],
19769+ "device_id": "ALICEDEVICE837",
19770+ "keys": {
19771+ "curve25519:ALICEDEVICE837": "CcxriawQN4+rl4XSxbowlpx6NyP4zKbUfYTwUcqvMDA",
19772+ "ed25519:ALICEDEVICE837": "80zGEtQWyGQ/lvfBQldZHVgtHbCse75WKXS4Oir6gMM"
19773+ },
19774+ "signatures": {
19775+ "@alice_837:hs1": {
19776+ "ed25519:ALICEDEVICE837": "AaeUM+DSn3F2lVIxWE+DdOMRgg3gNx1KQ3ri7dxlzp8TGDEVTqTCuP4X5S4EMg1XTC6LejWKBhJWKzGYSa+JAw"
19777+ }
19778+ },
19779+ "user_id": "@alice_837:hs1",
19780+ "unsigned": {}
19781+ }
19782+ },
19783+ "@alice_840:hs1": {
19784+ "ALICEDEVICE840": {
19785+ "algorithms": [
19786+ "m.olm.v1.curve25519-aes-sha2",
19787+ "m.megolm.v1.aes-sha2"
19788+ ],
19789+ "device_id": "ALICEDEVICE840",
19790+ "keys": {
19791+ "curve25519:ALICEDEVICE840": "t8HPHCKUTHUqCSUVI4YnKk/j3/PNxWS7wTa7EgTZBhg",
19792+ "ed25519:ALICEDEVICE840": "qmYG2Vlv7PvdBMtkIi7+neExyUoPeaxpveZP9zaqSxA"
19793+ },
19794+ "signatures": {
19795+ "@alice_840:hs1": {
19796+ "ed25519:ALICEDEVICE840": "SXk24Z2E9OB+VOFg/ag4u99bcac6mZNesWl25xdWnQzpGfF7Qu0PwfHNQ5fzZVGdOlnLXZSTwbqmi2k7QTHjDA"
19797+ }
19798+ },
19799+ "user_id": "@alice_840:hs1",
19800+ "unsigned": {}
19801+ }
19802+ },
19803+ "@alice_841:hs1": {
19804+ "ALICEDEVICE841": {
19805+ "algorithms": [
19806+ "m.olm.v1.curve25519-aes-sha2",
19807+ "m.megolm.v1.aes-sha2"
19808+ ],
19809+ "device_id": "ALICEDEVICE841",
19810+ "keys": {
19811+ "curve25519:ALICEDEVICE841": "13QHvwVA0ygxzZI7oEh/DG2pyJUYKh3l4moE5cmUD1I",
19812+ "ed25519:ALICEDEVICE841": "4bg3bqZAzRf5T0oZK8wbHMMyReAuUszOr5Tm2utoI10"
19813+ },
19814+ "signatures": {
19815+ "@alice_841:hs1": {
19816+ "ed25519:ALICEDEVICE841": "6aIEtOFeWNapV/jEW96I0yHwbmsViImkOiRorwuqDhEBvcTNmLsVyUxR4pGyhAutOXGExLzESTqo7VpCNK6cAg"
19817+ }
19818+ },
19819+ "user_id": "@alice_841:hs1",
19820+ "unsigned": {}
19821+ }
19822+ },
19823+ "@alice_84:hs1": {
19824+ "ALICEDEVICE84": {
19825+ "algorithms": [
19826+ "m.olm.v1.curve25519-aes-sha2",
19827+ "m.megolm.v1.aes-sha2"
19828+ ],
19829+ "device_id": "ALICEDEVICE84",
19830+ "keys": {
19831+ "curve25519:ALICEDEVICE84": "UEU3CaJsFYtm9bK+LpzfA95QeoU+9zDEs8kLU4ys/RE",
19832+ "ed25519:ALICEDEVICE84": "e7wJ3WzrMNtkVAb8M6f6NEODnXXPWUTAp3bK4MHXnYw"
19833+ },
19834+ "signatures": {
19835+ "@alice_84:hs1": {
19836+ "ed25519:ALICEDEVICE84": "ycpgjewWyCxBzXtseseNLwF5wKy4j9rZqe+xJxIvMVqxVpFNJ/hoHao3008I792aniF8heWoUZiGayI6zybVAA"
19837+ }
19838+ },
19839+ "user_id": "@alice_84:hs1",
19840+ "unsigned": {}
19841+ }
19842+ },
19843+ "@alice_863:hs1": {
19844+ "ALICEDEVICE863": {
19845+ "algorithms": [
19846+ "m.olm.v1.curve25519-aes-sha2",
19847+ "m.megolm.v1.aes-sha2"
19848+ ],
19849+ "device_id": "ALICEDEVICE863",
19850+ "keys": {
19851+ "curve25519:ALICEDEVICE863": "KyrMHa5D/BcmF55I1MXTAPr+T5ohzX3/kfaE0josKxk",
19852+ "ed25519:ALICEDEVICE863": "1WB7Vhu0nVO8nZGJfhld1gVXXDwqRDOyABY0p+RKzGk"
19853+ },
19854+ "signatures": {
19855+ "@alice_863:hs1": {
19856+ "ed25519:ALICEDEVICE863": "X6Q6sgLmMkxetvb8rbLCJynA3B7qWCjx/FqV5pIKFTptsqp8j4uUYuSlSXA+yFSNMdhvS0XIity9RV9fAoQSBw"
19857+ }
19858+ },
19859+ "user_id": "@alice_863:hs1",
19860+ "unsigned": {}
19861+ }
19862+ },
19863+ "@alice_867:hs1": {
19864+ "ALICEDEVICE867": {
19865+ "algorithms": [
19866+ "m.olm.v1.curve25519-aes-sha2",
19867+ "m.megolm.v1.aes-sha2"
19868+ ],
19869+ "device_id": "ALICEDEVICE867",
19870+ "keys": {
19871+ "curve25519:ALICEDEVICE867": "wLTDNNRyCW+lgS3eiojFUY6BhRQkFIF/PEjyUar1EgU",
19872+ "ed25519:ALICEDEVICE867": "r5zpJvrmrpleR4MhVnSbLAYeADddOoDtHiaGVpPFNuk"
19873+ },
19874+ "signatures": {
19875+ "@alice_867:hs1": {
19876+ "ed25519:ALICEDEVICE867": "+fHa1jBVbm7gV5KQWwqoojuDVjrugtAYMAXL+cPntBX32HLw9RY390gKVuBjjx+DyEwCdJTtho5wxWBAWfdYBQ"
19877+ }
19878+ },
19879+ "user_id": "@alice_867:hs1",
19880+ "unsigned": {}
19881+ }
19882+ },
19883+ "@alice_877:hs1": {
19884+ "ALICEDEVICE877": {
19885+ "algorithms": [
19886+ "m.olm.v1.curve25519-aes-sha2",
19887+ "m.megolm.v1.aes-sha2"
19888+ ],
19889+ "device_id": "ALICEDEVICE877",
19890+ "keys": {
19891+ "curve25519:ALICEDEVICE877": "S93fdV7uI5xl/PKVaKimONEKbJicO+qPx6pKPxIFTns",
19892+ "ed25519:ALICEDEVICE877": "biBmXpf0Zl/PhRx9OP/CJiGRn9qmxdjeBGZAExRfejE"
19893+ },
19894+ "signatures": {
19895+ "@alice_877:hs1": {
19896+ "ed25519:ALICEDEVICE877": "0goeilLwpUAb8McoD57A32dE+t3/q67zzcay24y4mGRBQVVmMbSIxw7Y0iQU5rQBdfzGC8HAChYQ99HCYssxAQ"
19897+ }
19898+ },
19899+ "user_id": "@alice_877:hs1",
19900+ "unsigned": {}
19901+ }
19902+ },
19903+ "@alice_884:hs1": {
19904+ "ALICEDEVICE884": {
19905+ "algorithms": [
19906+ "m.olm.v1.curve25519-aes-sha2",
19907+ "m.megolm.v1.aes-sha2"
19908+ ],
19909+ "device_id": "ALICEDEVICE884",
19910+ "keys": {
19911+ "curve25519:ALICEDEVICE884": "7WbI+0re+a2lAjs4gkvS7XGovTD5R51bUXLaKQjCHl4",
19912+ "ed25519:ALICEDEVICE884": "0N2fb14MXooQS3OnJmsJop2lihrNDUQKQYDs18Vb/f4"
19913+ },
19914+ "signatures": {
19915+ "@alice_884:hs1": {
19916+ "ed25519:ALICEDEVICE884": "Z/eHkez+SCjR0Eo1TkSEyrZKM1Nsae+g6aSPLFwO0cb3GXV9iiDSo4KpTgB+pB20g10U1D70RQJf53XZlcx8Ag"
19917+ }
19918+ },
19919+ "user_id": "@alice_884:hs1",
19920+ "unsigned": {}
19921+ }
19922+ },
19923+ "@alice_885:hs1": {
19924+ "ALICEDEVICE885": {
19925+ "algorithms": [
19926+ "m.olm.v1.curve25519-aes-sha2",
19927+ "m.megolm.v1.aes-sha2"
19928+ ],
19929+ "device_id": "ALICEDEVICE885",
19930+ "keys": {
19931+ "curve25519:ALICEDEVICE885": "DQJMKc9E1V/BpXbzb0fPPshHsRKtlJGiRgHs7KGK4Vg",
19932+ "ed25519:ALICEDEVICE885": "LxSaaEzcivh8nXU6//dGMPcRwNqKDv9beHxQzB598Ao"
19933+ },
19934+ "signatures": {
19935+ "@alice_885:hs1": {
19936+ "ed25519:ALICEDEVICE885": "IzEaQ9+KIq8oPkQNCP76LxVzfEaF+5/GiKH1xXgGziLDSH2bc65oyEugUIUX8QjYFzP0tJ3Z5JcnH7CEHZalDQ"
19937+ }
19938+ },
19939+ "user_id": "@alice_885:hs1",
19940+ "unsigned": {}
19941+ }
19942+ },
19943+ "@alice_889:hs1": {
19944+ "ALICEDEVICE889": {
19945+ "algorithms": [
19946+ "m.olm.v1.curve25519-aes-sha2",
19947+ "m.megolm.v1.aes-sha2"
19948+ ],
19949+ "device_id": "ALICEDEVICE889",
19950+ "keys": {
19951+ "curve25519:ALICEDEVICE889": "z7srVk6Uai0l18hO4iSqjfWq8B46NWUrl5PYxh7ZPGQ",
19952+ "ed25519:ALICEDEVICE889": "NzKznPYWqqvXtoDTjGowfbmzQO+1KfiQ1Sv8/+VHt/Q"
19953+ },
19954+ "signatures": {
19955+ "@alice_889:hs1": {
19956+ "ed25519:ALICEDEVICE889": "DRPWfmVSlMkQe2AxR5O26OzfhLbxxqsIJuZBshYS0yTx7STZnzG6ULahVBr12mTiP1F017QkgS9nyJ4s4fDACw"
19957+ }
19958+ },
19959+ "user_id": "@alice_889:hs1",
19960+ "unsigned": {}
19961+ }
19962+ },
19963+ "@alice_892:hs1": {
19964+ "ALICEDEVICE892": {
19965+ "algorithms": [
19966+ "m.olm.v1.curve25519-aes-sha2",
19967+ "m.megolm.v1.aes-sha2"
19968+ ],
19969+ "device_id": "ALICEDEVICE892",
19970+ "keys": {
19971+ "curve25519:ALICEDEVICE892": "PTtylPClamGGQYGGhayvlHzgfeaFZU9tyQsCvJ7raCg",
19972+ "ed25519:ALICEDEVICE892": "oXbiohIxBcdpv2R+Vl2yZhCxab9ALNE2Bcyjs/kl+54"
19973+ },
19974+ "signatures": {
19975+ "@alice_892:hs1": {
19976+ "ed25519:ALICEDEVICE892": "ixpkBgyIMEZ9NK5jVVymRdzC8tfyr7MxONAHxmXfJ97C8X/goZQMkXjcDIfSY1pTvwQqzCr3327Gff1zwgnADg"
19977+ }
19978+ },
19979+ "user_id": "@alice_892:hs1",
19980+ "unsigned": {}
19981+ }
19982+ },
19983+ "@alice_899:hs1": {
19984+ "ALICEDEVICE899": {
19985+ "algorithms": [
19986+ "m.olm.v1.curve25519-aes-sha2",
19987+ "m.megolm.v1.aes-sha2"
19988+ ],
19989+ "device_id": "ALICEDEVICE899",
19990+ "keys": {
19991+ "curve25519:ALICEDEVICE899": "TrjwhGLD0prh+bnJlRphfiDTaWeLNIQzgNuPMJtqZwk",
19992+ "ed25519:ALICEDEVICE899": "KvCaY/iK3qHl17HLL+c+cT5+0Rt9lDmUou2wVa98eiQ"
19993+ },
19994+ "signatures": {
19995+ "@alice_899:hs1": {
19996+ "ed25519:ALICEDEVICE899": "yFsMIDzRAG+gDXJ3ckvohThMLGXveY5ZYMsAM3bH2LP10jChB2uRQNyqu8uFN6Xmvi6cfpQ0bTJ6bhI9giTsDQ"
19997+ }
19998+ },
19999+ "user_id": "@alice_899:hs1",
20000+ "unsigned": {}
20001+ }
20002+ },
20003+ "@alice_900:hs1": {
20004+ "ALICEDEVICE900": {
20005+ "algorithms": [
20006+ "m.olm.v1.curve25519-aes-sha2",
20007+ "m.megolm.v1.aes-sha2"
20008+ ],
20009+ "device_id": "ALICEDEVICE900",
20010+ "keys": {
20011+ "curve25519:ALICEDEVICE900": "BDM1G9g68X9tLRVjySfBzolyx7LprlVbawlhN4m5X18",
20012+ "ed25519:ALICEDEVICE900": "sh3WXHA/vE5Rg+Zzw0Om5UvByTUUHXaTBGt1DTmanpk"
20013+ },
20014+ "signatures": {
20015+ "@alice_900:hs1": {
20016+ "ed25519:ALICEDEVICE900": "talIaFP96OlYEitI/BVRHOH6liF16HMpoikIS/W2NB4uoccf3ECijG7X7xQcoNQHVc639ModHIboXxmP3pRBAA"
20017+ }
20018+ },
20019+ "user_id": "@alice_900:hs1",
20020+ "unsigned": {}
20021+ }
20022+ },
20023+ "@alice_90:hs1": {
20024+ "ALICEDEVICE90": {
20025+ "algorithms": [
20026+ "m.olm.v1.curve25519-aes-sha2",
20027+ "m.megolm.v1.aes-sha2"
20028+ ],
20029+ "device_id": "ALICEDEVICE90",
20030+ "keys": {
20031+ "curve25519:ALICEDEVICE90": "RtXtWDKi5Xi+Wr1t17Y+V73+1YfhDvMUli5GmqEbMDo",
20032+ "ed25519:ALICEDEVICE90": "yorqfXscuie+sudFNAdmBdboxqghAvh+JXcTwnK2zko"
20033+ },
20034+ "signatures": {
20035+ "@alice_90:hs1": {
20036+ "ed25519:ALICEDEVICE90": "Uxr5C2coKkhgz9ym4chqsmny7Wk/JbttHi6a5YyEU2C5QRhHM7qFNdSh8JQ1QjUbT9tgoNpZNfs/zyCuW9nnBw"
20037+ }
20038+ },
20039+ "user_id": "@alice_90:hs1",
20040+ "unsigned": {}
20041+ }
20042+ },
20043+ "@alice_919:hs1": {
20044+ "ALICEDEVICE919": {
20045+ "algorithms": [
20046+ "m.olm.v1.curve25519-aes-sha2",
20047+ "m.megolm.v1.aes-sha2"
20048+ ],
20049+ "device_id": "ALICEDEVICE919",
20050+ "keys": {
20051+ "curve25519:ALICEDEVICE919": "jhcBXtXD5J2/k0kMH+PSKJO1GlU2hneYNo/qyftjNRk",
20052+ "ed25519:ALICEDEVICE919": "8B1bpIAv1AUe+3vI2etBiTs0TyQMI5td6IwH5iXK1m4"
20053+ },
20054+ "signatures": {
20055+ "@alice_919:hs1": {
20056+ "ed25519:ALICEDEVICE919": "ZSlmM8I+0Py9dF999Udv7prlJxPPboS+cOsAqwrL8EHZL7upHx9KghsJndDMXOlz6nlIzbwZs4zCnQn9AcVaBg"
20057+ }
20058+ },
20059+ "user_id": "@alice_919:hs1",
20060+ "unsigned": {}
20061+ }
20062+ },
20063+ "@alice_91:hs1": {
20064+ "ALICEDEVICE91": {
20065+ "algorithms": [
20066+ "m.olm.v1.curve25519-aes-sha2",
20067+ "m.megolm.v1.aes-sha2"
20068+ ],
20069+ "device_id": "ALICEDEVICE91",
20070+ "keys": {
20071+ "curve25519:ALICEDEVICE91": "1SmjbleffBTLLs4d1Y/KcC017YYcIraPYD1j7Z/GkzI",
20072+ "ed25519:ALICEDEVICE91": "Gnw9/GIuFh0bjCB5ZJqtiwxIEV03PNCQMpaDOQwnD6o"
20073+ },
20074+ "signatures": {
20075+ "@alice_91:hs1": {
20076+ "ed25519:ALICEDEVICE91": "8thmE3WHmaPhrwslZMRCIlWV1M0KYn3t0cP7afGYBrQEeHWoAqsVnKbLAakp47sC45c0odxEFTK6APJyhNdeDQ"
20077+ }
20078+ },
20079+ "user_id": "@alice_91:hs1",
20080+ "unsigned": {}
20081+ }
20082+ },
20083+ "@alice_922:hs1": {
20084+ "ALICEDEVICE922": {
20085+ "algorithms": [
20086+ "m.olm.v1.curve25519-aes-sha2",
20087+ "m.megolm.v1.aes-sha2"
20088+ ],
20089+ "device_id": "ALICEDEVICE922",
20090+ "keys": {
20091+ "curve25519:ALICEDEVICE922": "pZgo+G2LXhwyswGqerTeSU/Xo9yLYM846vjEqeJ/dQw",
20092+ "ed25519:ALICEDEVICE922": "HmDiScaIBAaWGVW4bsokm1BVqH3eQFbkaLeVKnK8ucI"
20093+ },
20094+ "signatures": {
20095+ "@alice_922:hs1": {
20096+ "ed25519:ALICEDEVICE922": "ZJio1rga4S5ad/1sIYC2jreRLTjzEyagJAn5oCSXWYcOxNP6DjH+UR05tedGeVPczDWvs7sVHWk0rToKLrU5CQ"
20097+ }
20098+ },
20099+ "user_id": "@alice_922:hs1",
20100+ "unsigned": {}
20101+ }
20102+ },
20103+ "@alice_926:hs1": {
20104+ "ALICEDEVICE926": {
20105+ "algorithms": [
20106+ "m.olm.v1.curve25519-aes-sha2",
20107+ "m.megolm.v1.aes-sha2"
20108+ ],
20109+ "device_id": "ALICEDEVICE926",
20110+ "keys": {
20111+ "curve25519:ALICEDEVICE926": "wuNs7UOdwWy8iXO9aCiO/0hq1ZXpPHwWoAUGZjfj+F4",
20112+ "ed25519:ALICEDEVICE926": "J6C+3yx834qBHnM8/zYoCpbCsiS2nCOZ6KCI+iDA7cU"
20113+ },
20114+ "signatures": {
20115+ "@alice_926:hs1": {
20116+ "ed25519:ALICEDEVICE926": "n6A+x3MX8y9KcqEygOoqZWPLOkB+ehmOJubWp1LlJpmmO01QuzGge8pc4v8C4Fq5mGqG2IcLNR0rIOVk9YuRDw"
20117+ }
20118+ },
20119+ "user_id": "@alice_926:hs1",
20120+ "unsigned": {}
20121+ }
20122+ },
20123+ "@alice_933:hs1": {
20124+ "ALICEDEVICE933": {
20125+ "algorithms": [
20126+ "m.olm.v1.curve25519-aes-sha2",
20127+ "m.megolm.v1.aes-sha2"
20128+ ],
20129+ "device_id": "ALICEDEVICE933",
20130+ "keys": {
20131+ "curve25519:ALICEDEVICE933": "7lLsAr4crdqoFQzOsYrDZaemjKr/QFEvagIa1jUV1BM",
20132+ "ed25519:ALICEDEVICE933": "l07TjIFkPfZrRzFYP1iPGlD8xNy7sncx0TnElow9+1g"
20133+ },
20134+ "signatures": {
20135+ "@alice_933:hs1": {
20136+ "ed25519:ALICEDEVICE933": "X+s4Sw9/WOOfjTROjZTh6MsSFDAdmkCVy3ZzzFLB5RzwTJ7O4nIenU/axBFX5iEt6/VwCJav5DFv91kgnwWIBQ"
20137+ }
20138+ },
20139+ "user_id": "@alice_933:hs1",
20140+ "unsigned": {}
20141+ }
20142+ },
20143+ "@alice_937:hs1": {
20144+ "ALICEDEVICE937": {
20145+ "algorithms": [
20146+ "m.olm.v1.curve25519-aes-sha2",
20147+ "m.megolm.v1.aes-sha2"
20148+ ],
20149+ "device_id": "ALICEDEVICE937",
20150+ "keys": {
20151+ "curve25519:ALICEDEVICE937": "yvp6IEZYDEjNU2cteHuV6HaGHBUAeJBSKb4/IgGm9gA",
20152+ "ed25519:ALICEDEVICE937": "Iz6uhf+3ce6bmnyWhwrDcvq44hPg64Xe2NLHDVQK8O0"
20153+ },
20154+ "signatures": {
20155+ "@alice_937:hs1": {
20156+ "ed25519:ALICEDEVICE937": "sQ09FYjTDXsGtNOLrpSmOTuc+jzaWIjHSbrkQzKy+u/KPH5I5H3boZ3DafWvwNf8OJvI/V5HOaPkrR8OaSh/Cw"
20157+ }
20158+ },
20159+ "user_id": "@alice_937:hs1",
20160+ "unsigned": {}
20161+ }
20162+ },
20163+ "@alice_942:hs1": {
20164+ "ALICEDEVICE942": {
20165+ "algorithms": [
20166+ "m.olm.v1.curve25519-aes-sha2",
20167+ "m.megolm.v1.aes-sha2"
20168+ ],
20169+ "device_id": "ALICEDEVICE942",
20170+ "keys": {
20171+ "curve25519:ALICEDEVICE942": "QNN9TLYKoIDz3f+9TpeFW9NceO6nvH+NBtYZF4g0rzc",
20172+ "ed25519:ALICEDEVICE942": "VmL7zVZgg+qUy9oBsAWBBkXZUlR8pfOFhmf/pJr0h7E"
20173+ },
20174+ "signatures": {
20175+ "@alice_942:hs1": {
20176+ "ed25519:ALICEDEVICE942": "zfq64MMU/1LPk4iAR1X3sZA4yQa/FlOn2KWkzb4OhiUtplaAMVbdYSqf28t9OndquGoiXfPu9S013ZaF2EJvDQ"
20177+ }
20178+ },
20179+ "user_id": "@alice_942:hs1",
20180+ "unsigned": {}
20181+ }
20182+ },
20183+ "@alice_948:hs1": {
20184+ "ALICEDEVICE948": {
20185+ "algorithms": [
20186+ "m.olm.v1.curve25519-aes-sha2",
20187+ "m.megolm.v1.aes-sha2"
20188+ ],
20189+ "device_id": "ALICEDEVICE948",
20190+ "keys": {
20191+ "curve25519:ALICEDEVICE948": "kkREoDZyV6AqVObJ0shPpx3XgaMMb/G5vGkQOvrzTFs",
20192+ "ed25519:ALICEDEVICE948": "8u7hDQWibJ7jPfjYKESb2W/FdAsKFIWf65VSZqIeiYs"
20193+ },
20194+ "signatures": {
20195+ "@alice_948:hs1": {
20196+ "ed25519:ALICEDEVICE948": "yzwW0zFePPDDoDEPtdMWtE136CWaW0NVEk8fi/6NYd7cNcFcO16phly9PPFPcye8l8xjIApyQaX74sl4U4LRBw"
20197+ }
20198+ },
20199+ "user_id": "@alice_948:hs1",
20200+ "unsigned": {}
20201+ }
20202+ },
20203+ "@alice_953:hs1": {
20204+ "ALICEDEVICE953": {
20205+ "algorithms": [
20206+ "m.olm.v1.curve25519-aes-sha2",
20207+ "m.megolm.v1.aes-sha2"
20208+ ],
20209+ "device_id": "ALICEDEVICE953",
20210+ "keys": {
20211+ "curve25519:ALICEDEVICE953": "+wkk+bEOcbPCbEKFIcKizAZNRkICe5/lVDSHuD4v22o",
20212+ "ed25519:ALICEDEVICE953": "xwIShCpv1yO8opxCqfC0PTiFRCuN2yWTeB/GbSTVcLo"
20213+ },
20214+ "signatures": {
20215+ "@alice_953:hs1": {
20216+ "ed25519:ALICEDEVICE953": "MI7GIDjuu6Z3UDK4BFaewE04CMmAsW8f2fPpT9LSuxTaVKCDfea6noaaQWLOSOPNvqv9AikJ6pqKEmLQCMqgDg"
20217+ }
20218+ },
20219+ "user_id": "@alice_953:hs1",
20220+ "unsigned": {}
20221+ }
20222+ },
20223+ "@alice_966:hs1": {
20224+ "ALICEDEVICE966": {
20225+ "algorithms": [
20226+ "m.olm.v1.curve25519-aes-sha2",
20227+ "m.megolm.v1.aes-sha2"
20228+ ],
20229+ "device_id": "ALICEDEVICE966",
20230+ "keys": {
20231+ "curve25519:ALICEDEVICE966": "pRDHc+P+hQAbRKzIyz7yTjUBC4aH7ZQ8GFSoyuS1vXI",
20232+ "ed25519:ALICEDEVICE966": "XLO+LDLoXOX28zu6tm1giM8Jbi/xiG8nX5BkYTzGnDE"
20233+ },
20234+ "signatures": {
20235+ "@alice_966:hs1": {
20236+ "ed25519:ALICEDEVICE966": "3lWnSfxMy5esTEtTj9UifXqq/BiDoTccX90CDG0zsIHhDMIWHHFdnc85r0TiM4qCT22dJAZu7ncf8Q/gO+u/Aw"
20237+ }
20238+ },
20239+ "user_id": "@alice_966:hs1",
20240+ "unsigned": {}
20241+ }
20242+ },
20243+ "@alice_986:hs1": {
20244+ "ALICEDEVICE986": {
20245+ "algorithms": [
20246+ "m.olm.v1.curve25519-aes-sha2",
20247+ "m.megolm.v1.aes-sha2"
20248+ ],
20249+ "device_id": "ALICEDEVICE986",
20250+ "keys": {
20251+ "curve25519:ALICEDEVICE986": "5wMfslNl9OHtuFRuKl1lAuiEX8xaX1PRBkVzkR0f330",
20252+ "ed25519:ALICEDEVICE986": "a5GlyqlxgbQOFPjoHQx11nWYKMzjCcrB+OE/xXi5K1g"
20253+ },
20254+ "signatures": {
20255+ "@alice_986:hs1": {
20256+ "ed25519:ALICEDEVICE986": "aL+WE/hqBsjAxpdT505bga8RHMzIKO1I9RHiBDP3hMOHIiOLd4I75DZWIQqDHKHQfkALaJIyxGcdWt5Yht5tDg"
20257+ }
20258+ },
20259+ "user_id": "@alice_986:hs1",
20260+ "unsigned": {}
20261+ }
20262+ },
20263+ "@alice_989:hs1": {
20264+ "ALICEDEVICE989": {
20265+ "algorithms": [
20266+ "m.olm.v1.curve25519-aes-sha2",
20267+ "m.megolm.v1.aes-sha2"
20268+ ],
20269+ "device_id": "ALICEDEVICE989",
20270+ "keys": {
20271+ "curve25519:ALICEDEVICE989": "8ZaugJHPY5UUQAASHQ8V01Oo4cYVpdTXVMsJKO6C2xo",
20272+ "ed25519:ALICEDEVICE989": "u4eDY64SjMzfFMrAIrqbpz6mprQItiZihYW1JELXgOA"
20273+ },
20274+ "signatures": {
20275+ "@alice_989:hs1": {
20276+ "ed25519:ALICEDEVICE989": "FDwH94eZJyorK6AMnCl8bRZuCdgq1ZQGyUX08z/iL7ta5xmOq0r7fkZzdGGr009qQY8mrGm3YKKepe10ATqsAg"
20277+ }
20278+ },
20279+ "user_id": "@alice_989:hs1",
20280+ "unsigned": {}
20281+ }
20282+ },
20283+ "@alice_998:hs1": {
20284+ "ALICEDEVICE998": {
20285+ "algorithms": [
20286+ "m.olm.v1.curve25519-aes-sha2",
20287+ "m.megolm.v1.aes-sha2"
20288+ ],
20289+ "device_id": "ALICEDEVICE998",
20290+ "keys": {
20291+ "curve25519:ALICEDEVICE998": "YMPp2yWKgZ2GUtpVzFjDaPv+lJxgfcSF6nXgCreP8i0",
20292+ "ed25519:ALICEDEVICE998": "18J2B/gJM7Gx5aGOK0d0b3o0c+ZT9txh4ao44YSgN7E"
20293+ },
20294+ "signatures": {
20295+ "@alice_998:hs1": {
20296+ "ed25519:ALICEDEVICE998": "hqplnDnyXMskzjKu5AcRWDlEOUhuW+1bAyUPnghIyUgntTcJfG9jhhgrGilEOfV0FqeNsRFnGyiix5VvQjpABQ"
20297+ }
20298+ },
20299+ "user_id": "@alice_998:hs1",
20300+ "unsigned": {}
20301+ }
20302+ },
20303+ "@alice_0:hs1": {
20304+ "ALICEDEVICE0": {
20305+ "algorithms": [
20306+ "m.olm.v1.curve25519-aes-sha2",
20307+ "m.megolm.v1.aes-sha2"
20308+ ],
20309+ "device_id": "ALICEDEVICE0",
20310+ "keys": {
20311+ "curve25519:ALICEDEVICE0": "vlVWx/3pblWM8ud0MG+aF0aGEkAXdNcVdQ0o+q9EDWU",
20312+ "ed25519:ALICEDEVICE0": "IJOWo4WxWM2RzAjdwil7kE0KbFG3M+CndT7nZyHoPVA"
20313+ },
20314+ "signatures": {
20315+ "@alice_0:hs1": {
20316+ "ed25519:ALICEDEVICE0": "7zlJq2/G+zVEvTmMNAi5Fm8SemDVf/UlWwaGIqXtZsPC1StU/CJ/lNUnzvkXbgFbmid714+hc0x0Lf6+NHTjCA"
20317+ }
20318+ },
20319+ "user_id": "@alice_0:hs1",
20320+ "unsigned": {}
20321+ }
20322+ },
20323+ "@alice_1004:hs1": {
20324+ "ALICEDEVICE1004": {
20325+ "algorithms": [
20326+ "m.olm.v1.curve25519-aes-sha2",
20327+ "m.megolm.v1.aes-sha2"
20328+ ],
20329+ "device_id": "ALICEDEVICE1004",
20330+ "keys": {
20331+ "curve25519:ALICEDEVICE1004": "Unh+od/pBAAv0zKYK77darRa8WKqaCmmjo6o8tFyNyo",
20332+ "ed25519:ALICEDEVICE1004": "FatqaFu70cXYLyV8x+KLO64baJU/alEuee3xoerGS/Y"
20333+ },
20334+ "signatures": {
20335+ "@alice_1004:hs1": {
20336+ "ed25519:ALICEDEVICE1004": "439wvUyUbtjZ7lepqFd5v0ayUBEiS5XvnsJMs1WpYHauMecdM43JgEhwCaHAKNO2VUq2oYxCZ/4WCaEKqiGXAA"
20337+ }
20338+ },
20339+ "user_id": "@alice_1004:hs1",
20340+ "unsigned": {}
20341+ }
20342+ },
20343+ "@alice_1006:hs1": {
20344+ "ALICEDEVICE1006": {
20345+ "algorithms": [
20346+ "m.olm.v1.curve25519-aes-sha2",
20347+ "m.megolm.v1.aes-sha2"
20348+ ],
20349+ "device_id": "ALICEDEVICE1006",
20350+ "keys": {
20351+ "curve25519:ALICEDEVICE1006": "4D2YH0PgmxavmMnC4UDiuC7jdng4YOpAQZJoCq75vVA",
20352+ "ed25519:ALICEDEVICE1006": "fWC2nsHjsQZXbiAA8rS9RhSc7xz5YDxhcPcMtdSyLKs"
20353+ },
20354+ "signatures": {
20355+ "@alice_1006:hs1": {
20356+ "ed25519:ALICEDEVICE1006": "8oODQqKVmE8LjUMwKvGGxfrAJ9CKxxxFxFbyfF18K/GCUw34fCBmPzt8HqCv+IITaYP7RJ9dEKvOY/LZ7uXpCg"
20357+ }
20358+ },
20359+ "user_id": "@alice_1006:hs1",
20360+ "unsigned": {}
20361+ }
20362+ },
20363+ "@alice_1008:hs1": {
20364+ "ALICEDEVICE1008": {
20365+ "algorithms": [
20366+ "m.olm.v1.curve25519-aes-sha2",
20367+ "m.megolm.v1.aes-sha2"
20368+ ],
20369+ "device_id": "ALICEDEVICE1008",
20370+ "keys": {
20371+ "curve25519:ALICEDEVICE1008": "iD8IhEA4qWsFQSLy93ZbTmfXz46tikJ4HVs6k6B/Vio",
20372+ "ed25519:ALICEDEVICE1008": "n7A4VmAbOjnv6g62cccu4Sbyr7jQDrdWEKfZCcZl2jk"
20373+ },
20374+ "signatures": {
20375+ "@alice_1008:hs1": {
20376+ "ed25519:ALICEDEVICE1008": "ivi20i0DdJCCoZrjvjlSkqaQGtoIHWSTrRrYtldN0u6BSeXGTbSY72HR0KS7/kMRmitb/83BM9CvdOM68YltAQ"
20377+ }
20378+ },
20379+ "user_id": "@alice_1008:hs1",
20380+ "unsigned": {}
20381+ }
20382+ },
20383+ "@alice_1010:hs1": {
20384+ "ALICEDEVICE1010": {
20385+ "algorithms": [
20386+ "m.olm.v1.curve25519-aes-sha2",
20387+ "m.megolm.v1.aes-sha2"
20388+ ],
20389+ "device_id": "ALICEDEVICE1010",
20390+ "keys": {
20391+ "curve25519:ALICEDEVICE1010": "G/iRtBqYlQ7fwiotmnn8ebzqSpnMoDD4CI1p5ZqCqxE",
20392+ "ed25519:ALICEDEVICE1010": "AsK7jRbFoqIT+T5QuzTRr0CR3DtruUUuZYvsUW02rwM"
20393+ },
20394+ "signatures": {
20395+ "@alice_1010:hs1": {
20396+ "ed25519:ALICEDEVICE1010": "sQUwxJXOCIfdB/V9ghrn7+2bsHVt0B8v8rlxxwx16Snl0SGQiX6Cqhd8renbY5JaKR2ELZVMYVSFZn997ReYBA"
20397+ }
20398+ },
20399+ "user_id": "@alice_1010:hs1",
20400+ "unsigned": {}
20401+ }
20402+ },
20403+ "@alice_1016:hs1": {
20404+ "ALICEDEVICE1016": {
20405+ "algorithms": [
20406+ "m.olm.v1.curve25519-aes-sha2",
20407+ "m.megolm.v1.aes-sha2"
20408+ ],
20409+ "device_id": "ALICEDEVICE1016",
20410+ "keys": {
20411+ "curve25519:ALICEDEVICE1016": "1EOagVpiGbbZa5QlPbzTHmsfhqSS8EufYcH7Y54LhSM",
20412+ "ed25519:ALICEDEVICE1016": "DBOmPEHb8gXQbKy+rGeAUtARsaYPZ7CwO40OTKZII3I"
20413+ },
20414+ "signatures": {
20415+ "@alice_1016:hs1": {
20416+ "ed25519:ALICEDEVICE1016": "mJPvX9+RXFgnXJQPy+JNToPLkmsARFSvU5lyAXo2g71N/3doS5tOUwkq17CPQdic2pwDYNlDVYniMtTtXRPTAQ"
20417+ }
20418+ },
20419+ "user_id": "@alice_1016:hs1",
20420+ "unsigned": {}
20421+ }
20422+ },
20423+ "@alice_1020:hs1": {
20424+ "ALICEDEVICE1020": {
20425+ "algorithms": [
20426+ "m.olm.v1.curve25519-aes-sha2",
20427+ "m.megolm.v1.aes-sha2"
20428+ ],
20429+ "device_id": "ALICEDEVICE1020",
20430+ "keys": {
20431+ "curve25519:ALICEDEVICE1020": "WvmAZzDjFRHxC4dB90mfgf85uJ5vcHLzsdoyqQeC8h8",
20432+ "ed25519:ALICEDEVICE1020": "kwSfOOxjhe/UPZM4KmYBAS+8AJoXZih1HVJs2crzQuA"
20433+ },
20434+ "signatures": {
20435+ "@alice_1020:hs1": {
20436+ "ed25519:ALICEDEVICE1020": "W2wu4PCrln3LWg4+8bRmnbwXU2bCSn8rOAvD95eNgQtW9pUMt3JMTEiF4bSB8DoF1TzwW7HHnUAdhr4YBavnBA"
20437+ }
20438+ },
20439+ "user_id": "@alice_1020:hs1",
20440+ "unsigned": {}
20441+ }
20442+ },
20443+ "@alice_1026:hs1": {
20444+ "ALICEDEVICE1026": {
20445+ "algorithms": [
20446+ "m.olm.v1.curve25519-aes-sha2",
20447+ "m.megolm.v1.aes-sha2"
20448+ ],
20449+ "device_id": "ALICEDEVICE1026",
20450+ "keys": {
20451+ "curve25519:ALICEDEVICE1026": "fNLD+pkaKEVq+GKI1ThEuV7G8lhUjTLqx5FV63pdwWc",
20452+ "ed25519:ALICEDEVICE1026": "3ZeQN3nzsSo2d66LXiuRvJXo3r6jLxOwTxWOW6K+iCM"
20453+ },
20454+ "signatures": {
20455+ "@alice_1026:hs1": {
20456+ "ed25519:ALICEDEVICE1026": "0figQt5EEHmrwDgVmvY84LbQpWsOJwRtWdC9/ohiOX05/Z4c3KQiH3oUN5p9c4Gp5KMlUWelniCJO2wfmez3Bw"
20457+ }
20458+ },
20459+ "user_id": "@alice_1026:hs1",
20460+ "unsigned": {}
20461+ }
20462+ },
20463+ "@alice_1030:hs1": {
20464+ "ALICEDEVICE1030": {
20465+ "algorithms": [
20466+ "m.olm.v1.curve25519-aes-sha2",
20467+ "m.megolm.v1.aes-sha2"
20468+ ],
20469+ "device_id": "ALICEDEVICE1030",
20470+ "keys": {
20471+ "curve25519:ALICEDEVICE1030": "8P6LMjvu8yimbpXprTLP9zTgLPk1n73CVXc+7c8P92k",
20472+ "ed25519:ALICEDEVICE1030": "CXaEVKTphZ0s9m6s4Bk3pL43Phpw4PaOPO4lSS1vV6c"
20473+ },
20474+ "signatures": {
20475+ "@alice_1030:hs1": {
20476+ "ed25519:ALICEDEVICE1030": "a4dYkiXbcxo49O9MwumAtgdn1s/y+KdZKZRIC61f5Skn5umyJ87M2dn0C6qq23UH1iWtSDAxq61hTCuujzd+Bg"
20477+ }
20478+ },
20479+ "user_id": "@alice_1030:hs1",
20480+ "unsigned": {}
20481+ }
20482+ },
20483+ "@alice_1036:hs1": {
20484+ "ALICEDEVICE1036": {
20485+ "algorithms": [
20486+ "m.olm.v1.curve25519-aes-sha2",
20487+ "m.megolm.v1.aes-sha2"
20488+ ],
20489+ "device_id": "ALICEDEVICE1036",
20490+ "keys": {
20491+ "curve25519:ALICEDEVICE1036": "gqJd+zi3yxfLb/KP7YVRuhFEpgk4Co1MBTR3W0uiji8",
20492+ "ed25519:ALICEDEVICE1036": "4BDHnmw7ck5OiJDqzjWwrljd6j7+HpyyiEbDzJ94QM0"
20493+ },
20494+ "signatures": {
20495+ "@alice_1036:hs1": {
20496+ "ed25519:ALICEDEVICE1036": "r1KbbmWsb+/AnkIqFZj8s8k2XtfSzfJDzZtoU+cvdHaYpPadSBIkMTAG3uUmw7sqd+Udg0CIHsy9e5CLsa91CQ"
20497+ }
20498+ },
20499+ "user_id": "@alice_1036:hs1",
20500+ "unsigned": {}
20501+ }
20502+ },
20503+ "@alice_1039:hs1": {
20504+ "ALICEDEVICE1039": {
20505+ "algorithms": [
20506+ "m.olm.v1.curve25519-aes-sha2",
20507+ "m.megolm.v1.aes-sha2"
20508+ ],
20509+ "device_id": "ALICEDEVICE1039",
20510+ "keys": {
20511+ "curve25519:ALICEDEVICE1039": "FNwB6sdtP5QwpseqczFJ3gHtB+9dr+koBQH1txStRw8",
20512+ "ed25519:ALICEDEVICE1039": "VssNHBa7u4AxHGp0THlHksCE04cZBzlrMos/mcaoRLk"
20513+ },
20514+ "signatures": {
20515+ "@alice_1039:hs1": {
20516+ "ed25519:ALICEDEVICE1039": "oD8BxB4mA6W6xQmwmlbwsmMLHFydU6aTDVIGToaTmUnKC9Mmh568abLnJ3c4dh8cZtQIfGQyTzTcJLKKGCj+Aw"
20517+ }
20518+ },
20519+ "user_id": "@alice_1039:hs1",
20520+ "unsigned": {}
20521+ }
20522+ },
20523+ "@alice_1045:hs1": {
20524+ "ALICEDEVICE1045": {
20525+ "algorithms": [
20526+ "m.olm.v1.curve25519-aes-sha2",
20527+ "m.megolm.v1.aes-sha2"
20528+ ],
20529+ "device_id": "ALICEDEVICE1045",
20530+ "keys": {
20531+ "curve25519:ALICEDEVICE1045": "6g7geFj8Bd855fRz6PxrnSd0DNNosBLpvP3b9q1WXgs",
20532+ "ed25519:ALICEDEVICE1045": "fFb5gEvnawGyEbuDSwLFN6PZKj/gSF3FVcNbMxTbqvM"
20533+ },
20534+ "signatures": {
20535+ "@alice_1045:hs1": {
20536+ "ed25519:ALICEDEVICE1045": "Gz5/WTzESmJXaMd4+JbpddQ7du1dFXQzKDrGxKKtnVa1PBZrwKLh340tVONH7fCr0c9vFZmt++qsmVp+74R2Ag"
20537+ }
20538+ },
20539+ "user_id": "@alice_1045:hs1",
20540+ "unsigned": {}
20541+ }
20542+ },
20543+ "@alice_1052:hs1": {
20544+ "ALICEDEVICE1052": {
20545+ "algorithms": [
20546+ "m.olm.v1.curve25519-aes-sha2",
20547+ "m.megolm.v1.aes-sha2"
20548+ ],
20549+ "device_id": "ALICEDEVICE1052",
20550+ "keys": {
20551+ "curve25519:ALICEDEVICE1052": "XzKXdbhQgiGU/1A8C6L5rtjpyBX2CAxMci//LXXyNT8",
20552+ "ed25519:ALICEDEVICE1052": "TkR6ixJ3Nokh+8fboimOfemn/u3Nqvqw+84uEW/UdNQ"
20553+ },
20554+ "signatures": {
20555+ "@alice_1052:hs1": {
20556+ "ed25519:ALICEDEVICE1052": "CVgFVb3K2ccqe3hXAUjWIgirnAJgkOl/ryFAfXviIIGGf4IYHmDt1+IRSRCZFJ4dUtZuqsMsMQCXu1mokkGqAQ"
20557+ }
20558+ },
20559+ "user_id": "@alice_1052:hs1",
20560+ "unsigned": {}
20561+ }
20562+ },
20563+ "@alice_1067:hs1": {
20564+ "ALICEDEVICE1067": {
20565+ "algorithms": [
20566+ "m.olm.v1.curve25519-aes-sha2",
20567+ "m.megolm.v1.aes-sha2"
20568+ ],
20569+ "device_id": "ALICEDEVICE1067",
20570+ "keys": {
20571+ "curve25519:ALICEDEVICE1067": "ckVroyL5dQsUiprxTPpnNXq5bdTTTtz8zvyZE9BHmWY",
20572+ "ed25519:ALICEDEVICE1067": "lPB8E5ybeDuwWGXbdyqn36/FDDZi3evYaPJgTgriwds"
20573+ },
20574+ "signatures": {
20575+ "@alice_1067:hs1": {
20576+ "ed25519:ALICEDEVICE1067": "zqfPLAsC7NkY5WY3+3e3a6Suc/24JyVMde6RsyCM05INASx09Q2DmkCOg+k+MbFM+LRg0fv6Im5LmZFvleLJCw"
20577+ }
20578+ },
20579+ "user_id": "@alice_1067:hs1",
20580+ "unsigned": {}
20581+ }
20582+ },
20583+ "@alice_1084:hs1": {
20584+ "ALICEDEVICE1084": {
20585+ "algorithms": [
20586+ "m.olm.v1.curve25519-aes-sha2",
20587+ "m.megolm.v1.aes-sha2"
20588+ ],
20589+ "device_id": "ALICEDEVICE1084",
20590+ "keys": {
20591+ "curve25519:ALICEDEVICE1084": "3PEQXjrFilGB7xcMbFgItTiO1nUjg8G1KHZbIXJUrUA",
20592+ "ed25519:ALICEDEVICE1084": "/VnLRjN2+nbV6z1swx6txOllOvGtVZF2stPd7VTPEv4"
20593+ },
20594+ "signatures": {
20595+ "@alice_1084:hs1": {
20596+ "ed25519:ALICEDEVICE1084": "ur+vWeAAH9lEiPUOpE+9q/cl2D49Hrda3d2rpp5fpjeKNOAcqsjpfIzPys7BClDnNFx6Jow6fdDEogGRdzI9DA"
20597+ }
20598+ },
20599+ "user_id": "@alice_1084:hs1",
20600+ "unsigned": {}
20601+ }
20602+ },
20603+ "@alice_1087:hs1": {
20604+ "ALICEDEVICE1087": {
20605+ "algorithms": [
20606+ "m.olm.v1.curve25519-aes-sha2",
20607+ "m.megolm.v1.aes-sha2"
20608+ ],
20609+ "device_id": "ALICEDEVICE1087",
20610+ "keys": {
20611+ "curve25519:ALICEDEVICE1087": "KK1AfXnnjp8GOgsSZpapJSlC3KV7/WNX7Orgioi84QY",
20612+ "ed25519:ALICEDEVICE1087": "ZwpKvsL2tpFasuReseKvdmEhtQJJnJSJGaaTqSplGC4"
20613+ },
20614+ "signatures": {
20615+ "@alice_1087:hs1": {
20616+ "ed25519:ALICEDEVICE1087": "2ZJD/yY/ZNX0MLGZorBA3NowWURXUeDDzWSC3OKzbKJFMI5+tken5IOWZOSkJFadrTXdIPbXQ5W4fShDCBylDQ"
20617+ }
20618+ },
20619+ "user_id": "@alice_1087:hs1",
20620+ "unsigned": {}
20621+ }
20622+ },
20623+ "@alice_1090:hs1": {
20624+ "ALICEDEVICE1090": {
20625+ "algorithms": [
20626+ "m.olm.v1.curve25519-aes-sha2",
20627+ "m.megolm.v1.aes-sha2"
20628+ ],
20629+ "device_id": "ALICEDEVICE1090",
20630+ "keys": {
20631+ "curve25519:ALICEDEVICE1090": "rXHHWaqzpu16av0leBZiOlRgsA/KSym+Twlv2Zloq0E",
20632+ "ed25519:ALICEDEVICE1090": "UFSasbXlO/xEmb9lYZlpP/WW87ToT9RGxbzQJDTuEAA"
20633+ },
20634+ "signatures": {
20635+ "@alice_1090:hs1": {
20636+ "ed25519:ALICEDEVICE1090": "BLESUKg4tiX2P4c6Drt7rqM2cDPKZPsbiyPNubn+NkLz85DS/n16L7nEw4PtzxUjo9y9H/4PbXY6Y+CLT6ngCw"
20637+ }
20638+ },
20639+ "user_id": "@alice_1090:hs1",
20640+ "unsigned": {}
20641+ }
20642+ },
20643+ "@alice_1096:hs1": {
20644+ "ALICEDEVICE1096": {
20645+ "algorithms": [
20646+ "m.olm.v1.curve25519-aes-sha2",
20647+ "m.megolm.v1.aes-sha2"
20648+ ],
20649+ "device_id": "ALICEDEVICE1096",
20650+ "keys": {
20651+ "curve25519:ALICEDEVICE1096": "MFHXFiA4/DlyjsIzjSWlgmvOa2ec49SRkJ0iX/8QlRo",
20652+ "ed25519:ALICEDEVICE1096": "i7Aj1BxsWkR2zjdiZ0UjKC5AgkJ/6/EeuAFpy1S4TmI"
20653+ },
20654+ "signatures": {
20655+ "@alice_1096:hs1": {
20656+ "ed25519:ALICEDEVICE1096": "hU9mx+0l4KorJL1xLg77vBM3MaCNi9I9BDyYE4gTOUokw+u9XbgQzR59pZH6ck0cGnZ8PchX+pz1msxwo4CyAA"
20657+ }
20658+ },
20659+ "user_id": "@alice_1096:hs1",
20660+ "unsigned": {}
20661+ }
20662+ },
20663+ "@alice_1107:hs1": {
20664+ "ALICEDEVICE1107": {
20665+ "algorithms": [
20666+ "m.olm.v1.curve25519-aes-sha2",
20667+ "m.megolm.v1.aes-sha2"
20668+ ],
20669+ "device_id": "ALICEDEVICE1107",
20670+ "keys": {
20671+ "curve25519:ALICEDEVICE1107": "7NAm6ODWlIViLLVm61JUWC8Eu8azo7a59bXSP12zHgk",
20672+ "ed25519:ALICEDEVICE1107": "imXsHqFRcTIN4ks6dCt7/yyrtUnfll3y305Irh62tfQ"
20673+ },
20674+ "signatures": {
20675+ "@alice_1107:hs1": {
20676+ "ed25519:ALICEDEVICE1107": "wxHGpu2JFxWSENAKtH5Wk0Nm2/IQ74rXnvugBVLImJU589wEdoiFNly6+3+7pwMyLa2Zcnfk13vDdIJoiWCrBQ"
20677+ }
20678+ },
20679+ "user_id": "@alice_1107:hs1",
20680+ "unsigned": {}
20681+ }
20682+ },
20683+ "@alice_1112:hs1": {
20684+ "ALICEDEVICE1112": {
20685+ "algorithms": [
20686+ "m.olm.v1.curve25519-aes-sha2",
20687+ "m.megolm.v1.aes-sha2"
20688+ ],
20689+ "device_id": "ALICEDEVICE1112",
20690+ "keys": {
20691+ "curve25519:ALICEDEVICE1112": "9QuTjNIjUmoBfqVJj1ybV4UO7W3Y4VDCw/20m+SLYx4",
20692+ "ed25519:ALICEDEVICE1112": "O3uwOu7Ut0+SbewgeQQAKOQk2i6QVftOS+XzBfCC/vQ"
20693+ },
20694+ "signatures": {
20695+ "@alice_1112:hs1": {
20696+ "ed25519:ALICEDEVICE1112": "XweTSUw+z4rgOy2UUp/Ie2NEanWp2jgcUCFAkCMCZUxOtFU46JNV/OLT7pkG0doRl4XUN92J9Ok35FKcyaeIDQ"
20697+ }
20698+ },
20699+ "user_id": "@alice_1112:hs1",
20700+ "unsigned": {}
20701+ }
20702+ },
20703+ "@alice_1114:hs1": {
20704+ "ALICEDEVICE1114": {
20705+ "algorithms": [
20706+ "m.olm.v1.curve25519-aes-sha2",
20707+ "m.megolm.v1.aes-sha2"
20708+ ],
20709+ "device_id": "ALICEDEVICE1114",
20710+ "keys": {
20711+ "curve25519:ALICEDEVICE1114": "SLlbh01VA09voxvDAPYcEO6ANCC+ANlwWgGPBExo1mc",
20712+ "ed25519:ALICEDEVICE1114": "Ai4CivD0mi09G7GPzuhUbJkDuGbyNJinL62/TnrQFhQ"
20713+ },
20714+ "signatures": {
20715+ "@alice_1114:hs1": {
20716+ "ed25519:ALICEDEVICE1114": "YNelwqE/FMaHUusQdBoX9IGNjCrShONMgNVkFuEk//TWrXm6205J251NXQY20ZWm6HyM3QmdfJkYH8Fe9FvFDA"
20717+ }
20718+ },
20719+ "user_id": "@alice_1114:hs1",
20720+ "unsigned": {}
20721+ }
20722+ },
20723+ "@alice_1129:hs1": {
20724+ "ALICEDEVICE1129": {
20725+ "algorithms": [
20726+ "m.olm.v1.curve25519-aes-sha2",
20727+ "m.megolm.v1.aes-sha2"
20728+ ],
20729+ "device_id": "ALICEDEVICE1129",
20730+ "keys": {
20731+ "curve25519:ALICEDEVICE1129": "ZTdsasp8dlQYmiLf9IvC7MrQittXXqqBrlcOgWFyVhQ",
20732+ "ed25519:ALICEDEVICE1129": "cco2L8hLlvFeUs6vlRCydRrja8UHclHhM/J01JOCThs"
20733+ },
20734+ "signatures": {
20735+ "@alice_1129:hs1": {
20736+ "ed25519:ALICEDEVICE1129": "Ycg0MUAMpD0nR14JgqvOemalFseh9NYXtYA7xE7YBD1fErDPBP5XkE8tI5SLFcGv/Z3uuMby98L9hjcL/4ZABw"
20737+ }
20738+ },
20739+ "user_id": "@alice_1129:hs1",
20740+ "unsigned": {}
20741+ }
20742+ },
20743+ "@alice_1133:hs1": {
20744+ "ALICEDEVICE1133": {
20745+ "algorithms": [
20746+ "m.olm.v1.curve25519-aes-sha2",
20747+ "m.megolm.v1.aes-sha2"
20748+ ],
20749+ "device_id": "ALICEDEVICE1133",
20750+ "keys": {
20751+ "curve25519:ALICEDEVICE1133": "K2/AY8q5RELrHXDRry45nqNw/UO832jXV8fUQW+sgnE",
20752+ "ed25519:ALICEDEVICE1133": "ckXAhUBCby+hKIJQR9kF7wORkSZiWdlXAis9xUAMcQM"
20753+ },
20754+ "signatures": {
20755+ "@alice_1133:hs1": {
20756+ "ed25519:ALICEDEVICE1133": "zLSKkNrhK2G6YMjdS1WjEIfbzgXWK0dILS5G8PYDaTGkFTOks+A4LGGQD2PQIr4YjR5AANeHqWSNmkA6lEkeCw"
20757+ }
20758+ },
20759+ "user_id": "@alice_1133:hs1",
20760+ "unsigned": {}
20761+ }
20762+ },
20763+ "@alice_1160:hs1": {
20764+ "ALICEDEVICE1160": {
20765+ "algorithms": [
20766+ "m.olm.v1.curve25519-aes-sha2",
20767+ "m.megolm.v1.aes-sha2"
20768+ ],
20769+ "device_id": "ALICEDEVICE1160",
20770+ "keys": {
20771+ "curve25519:ALICEDEVICE1160": "BFG3K1aHU6Jvrp/CwLnsJIh6niY9wwOmOyvWSxVw9Es",
20772+ "ed25519:ALICEDEVICE1160": "TTtXhZf3cKvo+kqz/xGsgoQraIFGUW15WV29lcFsM3g"
20773+ },
20774+ "signatures": {
20775+ "@alice_1160:hs1": {
20776+ "ed25519:ALICEDEVICE1160": "hCSDvO19UM2uKD6yBcMwK7GMLxrWfM71dWNGGiUS0WZQc9TH0pe/FI5um5KI+oreTdQVk+A5HSah685BKJT7CQ"
20777+ }
20778+ },
20779+ "user_id": "@alice_1160:hs1",
20780+ "unsigned": {}
20781+ }
20782+ },
20783+ "@alice_1169:hs1": {
20784+ "ALICEDEVICE1169": {
20785+ "algorithms": [
20786+ "m.olm.v1.curve25519-aes-sha2",
20787+ "m.megolm.v1.aes-sha2"
20788+ ],
20789+ "device_id": "ALICEDEVICE1169",
20790+ "keys": {
20791+ "curve25519:ALICEDEVICE1169": "Gv3Kc5F/LLwmU1ArAn8tyMxN6EQIIE6S+/BWtniw42Y",
20792+ "ed25519:ALICEDEVICE1169": "N7bMvNZPZlQSMEV5jxndADbc/nuPWRsr2ouhN07vgiQ"
20793+ },
20794+ "signatures": {
20795+ "@alice_1169:hs1": {
20796+ "ed25519:ALICEDEVICE1169": "RoKd06MRtLzksl8FyjUkMwacsuF45SX+wY6r1gwqSI9cxClxP9w21fQOloKJG3D4iWykCaHD5v1L9zNQk2tSCg"
20797+ }
20798+ },
20799+ "user_id": "@alice_1169:hs1",
20800+ "unsigned": {}
20801+ }
20802+ },
20803+ "@alice_1172:hs1": {
20804+ "ALICEDEVICE1172": {
20805+ "algorithms": [
20806+ "m.olm.v1.curve25519-aes-sha2",
20807+ "m.megolm.v1.aes-sha2"
20808+ ],
20809+ "device_id": "ALICEDEVICE1172",
20810+ "keys": {
20811+ "curve25519:ALICEDEVICE1172": "PFpvktA0YP/csHzvaED3pUrkzox9nKTotRAMl0fiBCA",
20812+ "ed25519:ALICEDEVICE1172": "6XudObJOnIyBYn00mi90w1ZiDGQES9VICKb7q68uNwQ"
20813+ },
20814+ "signatures": {
20815+ "@alice_1172:hs1": {
20816+ "ed25519:ALICEDEVICE1172": "jntdI/w6bVBhjcQVHsTr9w5DkoLLn0zx/D4W45zoic3xEPfCCOI1BIN+roj4XVa2be6n5RC8cy8SUqT6cj6DDg"
20817+ }
20818+ },
20819+ "user_id": "@alice_1172:hs1",
20820+ "unsigned": {}
20821+ }
20822+ },
20823+ "@alice_1190:hs1": {
20824+ "ALICEDEVICE1190": {
20825+ "algorithms": [
20826+ "m.olm.v1.curve25519-aes-sha2",
20827+ "m.megolm.v1.aes-sha2"
20828+ ],
20829+ "device_id": "ALICEDEVICE1190",
20830+ "keys": {
20831+ "curve25519:ALICEDEVICE1190": "2t+a+wUNnn1Pvivff508IhMlm2eQnVolW8RJARhK1hg",
20832+ "ed25519:ALICEDEVICE1190": "amQgU4r8DwcAubpQ9OhR44AL+R3UZ25S4s3/RCbIhf0"
20833+ },
20834+ "signatures": {
20835+ "@alice_1190:hs1": {
20836+ "ed25519:ALICEDEVICE1190": "sip3npPj9Fh4tz8gQuwxaJ2jrWZjpf58iY3lHZv1vyI8TKws1/tPNRZZBC/cGLWCwPgaYBsEQNkc2QqrtkbxBQ"
20837+ }
20838+ },
20839+ "user_id": "@alice_1190:hs1",
20840+ "unsigned": {}
20841+ }
20842+ },
20843+ "@alice_1197:hs1": {
20844+ "ALICEDEVICE1197": {
20845+ "algorithms": [
20846+ "m.olm.v1.curve25519-aes-sha2",
20847+ "m.megolm.v1.aes-sha2"
20848+ ],
20849+ "device_id": "ALICEDEVICE1197",
20850+ "keys": {
20851+ "curve25519:ALICEDEVICE1197": "MebHooGaZAYwqYmxno7zNtz9unYdKlTbE3x//FVtAUU",
20852+ "ed25519:ALICEDEVICE1197": "CjVNRErfI510aXFlAgzK/W6lyiEfVAAwNABZaOvkOZA"
20853+ },
20854+ "signatures": {
20855+ "@alice_1197:hs1": {
20856+ "ed25519:ALICEDEVICE1197": "TPKNAgWFks7NY9PjP5wTC9ZZucDyjKexUV5AZdgKqbYbio3rttKKceMeCBgst7Ua0Jxpev1aN/qTNEIyIIFcDA"
20857+ }
20858+ },
20859+ "user_id": "@alice_1197:hs1",
20860+ "unsigned": {}
20861+ }
20862+ },
20863+ "@alice_11:hs1": {
20864+ "ALICEDEVICE11": {
20865+ "algorithms": [
20866+ "m.olm.v1.curve25519-aes-sha2",
20867+ "m.megolm.v1.aes-sha2"
20868+ ],
20869+ "device_id": "ALICEDEVICE11",
20870+ "keys": {
20871+ "curve25519:ALICEDEVICE11": "18ve8AsJxCBHcIaleIhAxJBCL+8zqpzY1/U2nNBCvAY",
20872+ "ed25519:ALICEDEVICE11": "p92k7ryN/2KAy+CKonJDUh64MrYO30S+p2uITHdKDpg"
20873+ },
20874+ "signatures": {
20875+ "@alice_11:hs1": {
20876+ "ed25519:ALICEDEVICE11": "ABqnXi9dSoV7Mw3+IRuuXvLal379+lgnxDrRkcre2hBI1CHNm6m1JN15J1XgDi4zvLKIOr6GMf1Q41DnWiIcDQ"
20877+ }
20878+ },
20879+ "user_id": "@alice_11:hs1",
20880+ "unsigned": {}
20881+ }
20882+ },
20883+ "@alice_1207:hs1": {
20884+ "ALICEDEVICE1207": {
20885+ "algorithms": [
20886+ "m.olm.v1.curve25519-aes-sha2",
20887+ "m.megolm.v1.aes-sha2"
20888+ ],
20889+ "device_id": "ALICEDEVICE1207",
20890+ "keys": {
20891+ "curve25519:ALICEDEVICE1207": "7eiDj5mNEm5Cn1wnz6cTzJHIdVZA9H+gzRf5FRjGrH0",
20892+ "ed25519:ALICEDEVICE1207": "hgPkB1IceTaMhEZCNhwbwYAzz+kmggPvYvyYU7BR3DA"
20893+ },
20894+ "signatures": {
20895+ "@alice_1207:hs1": {
20896+ "ed25519:ALICEDEVICE1207": "jUcd3Ayzh5Wg+uswabQMhgH+CCwrK8RLCyV/21Kwz0QXZT2HJLg0uWk85bQyxTNlxxarDy129mwuWauGXItGCw"
20897+ }
20898+ },
20899+ "user_id": "@alice_1207:hs1",
20900+ "unsigned": {}
20901+ }
20902+ },
20903+ "@alice_1222:hs1": {
20904+ "ALICEDEVICE1222": {
20905+ "algorithms": [
20906+ "m.olm.v1.curve25519-aes-sha2",
20907+ "m.megolm.v1.aes-sha2"
20908+ ],
20909+ "device_id": "ALICEDEVICE1222",
20910+ "keys": {
20911+ "curve25519:ALICEDEVICE1222": "g5AOky0biRrBfX8W+ooh1XLzbXph56xOC6gvTuTjaHU",
20912+ "ed25519:ALICEDEVICE1222": "17YjFR9NNrb5vsmxVkDXPQog1YKAnGMNM69zpAWd52w"
20913+ },
20914+ "signatures": {
20915+ "@alice_1222:hs1": {
20916+ "ed25519:ALICEDEVICE1222": "b/l6CIMq58e9aTp6m6aDGXMMAeLCz1d+CAAYnRq9XfeTjY9+5N1P6cdit6MqUImnTsQUMamqVnwxDov9ws8RAQ"
20917+ }
20918+ },
20919+ "user_id": "@alice_1222:hs1",
20920+ "unsigned": {}
20921+ }
20922+ },
20923+ "@alice_1228:hs1": {
20924+ "ALICEDEVICE1228": {
20925+ "algorithms": [
20926+ "m.olm.v1.curve25519-aes-sha2",
20927+ "m.megolm.v1.aes-sha2"
20928+ ],
20929+ "device_id": "ALICEDEVICE1228",
20930+ "keys": {
20931+ "curve25519:ALICEDEVICE1228": "y72AEb7h9qcMZL4xKE42s/ZEMvLpaCXGiKBKm+CFnWs",
20932+ "ed25519:ALICEDEVICE1228": "/Fg+mKn8jWz7pIaHfgmS4XacAWfuWugmNMkaoriXQjA"
20933+ },
20934+ "signatures": {
20935+ "@alice_1228:hs1": {
20936+ "ed25519:ALICEDEVICE1228": "UbEPmIsfGqQMbutn86w+FYLPsv2ei18K4e73aJK993FrKGrZbru0liWox2+wsnhBW6/xbVs4cJMOVdntzdgrBg"
20937+ }
20938+ },
20939+ "user_id": "@alice_1228:hs1",
20940+ "unsigned": {}
20941+ }
20942+ },
20943+ "@alice_1229:hs1": {
20944+ "ALICEDEVICE1229": {
20945+ "algorithms": [
20946+ "m.olm.v1.curve25519-aes-sha2",
20947+ "m.megolm.v1.aes-sha2"
20948+ ],
20949+ "device_id": "ALICEDEVICE1229",
20950+ "keys": {
20951+ "curve25519:ALICEDEVICE1229": "eMN9ZhWsY/rh6VHr4HG62LPN7kv14hFWo5WYQrD3TyU",
20952+ "ed25519:ALICEDEVICE1229": "QsF3Lu2olyp6RuB40WEtDMH+vOvgvSLYR8MjnTM9WSA"
20953+ },
20954+ "signatures": {
20955+ "@alice_1229:hs1": {
20956+ "ed25519:ALICEDEVICE1229": "u26aD5q3QZqAgdeoPCHBb1eauifbRgLTn7YdhUKpisciSDYQ4TAIcn4m/YLg97lFl2dskBlQXUgk3cWxLb8uCw"
20957+ }
20958+ },
20959+ "user_id": "@alice_1229:hs1",
20960+ "unsigned": {}
20961+ }
20962+ },
20963+ "@alice_1236:hs1": {
20964+ "ALICEDEVICE1236": {
20965+ "algorithms": [
20966+ "m.olm.v1.curve25519-aes-sha2",
20967+ "m.megolm.v1.aes-sha2"
20968+ ],
20969+ "device_id": "ALICEDEVICE1236",
20970+ "keys": {
20971+ "curve25519:ALICEDEVICE1236": "MsoXH30R1+dW8KEEaaUkzQ+Z0/h2HSU7lW4XJAGYi1E",
20972+ "ed25519:ALICEDEVICE1236": "d6js6WspF6yDWID2dIv5+zwTBxD0Ywx087wENSIrSmo"
20973+ },
20974+ "signatures": {
20975+ "@alice_1236:hs1": {
20976+ "ed25519:ALICEDEVICE1236": "qcbMQTyfGXklAkPCD+35hM1AF2HEzHjrp4w9HZDInhYOSbx1fMFD2RpBmtYn9o+NRJO17vdGHV8Iu7ap49GCDQ"
20977+ }
20978+ },
20979+ "user_id": "@alice_1236:hs1",
20980+ "unsigned": {}
20981+ }
20982+ },
20983+ "@alice_1237:hs1": {
20984+ "ALICEDEVICE1237": {
20985+ "algorithms": [
20986+ "m.olm.v1.curve25519-aes-sha2",
20987+ "m.megolm.v1.aes-sha2"
20988+ ],
20989+ "device_id": "ALICEDEVICE1237",
20990+ "keys": {
20991+ "curve25519:ALICEDEVICE1237": "/X+yngLwC5uDDumNvW+bHSjljrTiYtDBfKZGOBuOhUY",
20992+ "ed25519:ALICEDEVICE1237": "v1xIrZ/f4g6qpCxgyEJ+0rfrJw44F0oOBXsaw0fV6ZQ"
20993+ },
20994+ "signatures": {
20995+ "@alice_1237:hs1": {
20996+ "ed25519:ALICEDEVICE1237": "6tJhh4P6uTcGEEVvlJMgLU+1963Fnt1OURta/qhy3cm3zIwazDnhwZVqDtEu7X1BfbivDRyZ46ZPH68YfVmJDA"
20997+ }
20998+ },
20999+ "user_id": "@alice_1237:hs1",
21000+ "unsigned": {}
21001+ }
21002+ },
21003+ "@alice_1247:hs1": {
21004+ "ALICEDEVICE1247": {
21005+ "algorithms": [
21006+ "m.olm.v1.curve25519-aes-sha2",
21007+ "m.megolm.v1.aes-sha2"
21008+ ],
21009+ "device_id": "ALICEDEVICE1247",
21010+ "keys": {
21011+ "curve25519:ALICEDEVICE1247": "OcJwYKztlTrwp2BuSjQoeg9CxH9KdlVE7Xcm+I8jqFI",
21012+ "ed25519:ALICEDEVICE1247": "Ipt+Mwvrvmz8QV7X3a5VP3laHgdenQAU95uH4cBAmjM"
21013+ },
21014+ "signatures": {
21015+ "@alice_1247:hs1": {
21016+ "ed25519:ALICEDEVICE1247": "6CYxp8Sp3tkeqckrMr74m4SZvf+OOb3UIvdz/4Z78JDbuSC/mcKfYsyPufLXWVBsPmZ5rnh2WefNlKEumIhNAA"
21017+ }
21018+ },
21019+ "user_id": "@alice_1247:hs1",
21020+ "unsigned": {}
21021+ }
21022+ },
21023+ "@alice_1256:hs1": {
21024+ "ALICEDEVICE1256": {
21025+ "algorithms": [
21026+ "m.olm.v1.curve25519-aes-sha2",
21027+ "m.megolm.v1.aes-sha2"
21028+ ],
21029+ "device_id": "ALICEDEVICE1256",
21030+ "keys": {
21031+ "curve25519:ALICEDEVICE1256": "PjDPH1X0+SCvHc2krmKI3fOsGs1uxo7pezkfWELgUwo",
21032+ "ed25519:ALICEDEVICE1256": "WAGN5m0dOgs71KTcbCT2lYcyQ/xG9f/si6UTLD1MUD4"
21033+ },
21034+ "signatures": {
21035+ "@alice_1256:hs1": {
21036+ "ed25519:ALICEDEVICE1256": "JGQKzj5Vl/e0hDJWvkE2+mehPKcQHDXGtTDHsZ4FPuBg+x0NumhMkQg4raP1D2bVL8PzXw7jRxmJNPXTTS9xBg"
21037+ }
21038+ },
21039+ "user_id": "@alice_1256:hs1",
21040+ "unsigned": {}
21041+ }
21042+ },
21043+ "@alice_125:hs1": {
21044+ "ALICEDEVICE125": {
21045+ "algorithms": [
21046+ "m.olm.v1.curve25519-aes-sha2",
21047+ "m.megolm.v1.aes-sha2"
21048+ ],
21049+ "device_id": "ALICEDEVICE125",
21050+ "keys": {
21051+ "curve25519:ALICEDEVICE125": "F62bYZ1QKCI69bzuMrdbQLVmQeWj0rK7N6z9lwzrQB0",
21052+ "ed25519:ALICEDEVICE125": "iAiUL4x4AV5/OFd+SrbwguNrF+q2hlJLnNfuwwUMs1c"
21053+ },
21054+ "signatures": {
21055+ "@alice_125:hs1": {
21056+ "ed25519:ALICEDEVICE125": "dYj47FTncQlyP7u7CiZg9RjjFWZLLjN6q4X6wA21z5gkmhKmcwGB38/B1Kzxma5EbzwE9Oq33w2CSz32KJ5tAg"
21057+ }
21058+ },
21059+ "user_id": "@alice_125:hs1",
21060+ "unsigned": {}
21061+ }
21062+ },
21063+ "@alice_1260:hs1": {
21064+ "ALICEDEVICE1260": {
21065+ "algorithms": [
21066+ "m.olm.v1.curve25519-aes-sha2",
21067+ "m.megolm.v1.aes-sha2"
21068+ ],
21069+ "device_id": "ALICEDEVICE1260",
21070+ "keys": {
21071+ "curve25519:ALICEDEVICE1260": "1EJufZAmFKmxSYipjnN9gx8CCaMemlOatL1biDmAlnw",
21072+ "ed25519:ALICEDEVICE1260": "hY+QaZWG/bPYl+hkiEDmweH8PTGjuIqpodFfL0tG/04"
21073+ },
21074+ "signatures": {
21075+ "@alice_1260:hs1": {
21076+ "ed25519:ALICEDEVICE1260": "oJJEKEse0X0U96mcvdSgDE9OaVu9Q7AaJc6kz4YVckJ9A8fWGaRYOKWot1bkTjlPos/UMIKBpi01ytbRzytsDA"
21077+ }
21078+ },
21079+ "user_id": "@alice_1260:hs1",
21080+ "unsigned": {}
21081+ }
21082+ },
21083+ "@alice_1276:hs1": {
21084+ "ALICEDEVICE1276": {
21085+ "algorithms": [
21086+ "m.olm.v1.curve25519-aes-sha2",
21087+ "m.megolm.v1.aes-sha2"
21088+ ],
21089+ "device_id": "ALICEDEVICE1276",
21090+ "keys": {
21091+ "curve25519:ALICEDEVICE1276": "hsTlGUJsmZvELhupjIImQLIF/lbnhA3MsrMa6BSqm1Q",
21092+ "ed25519:ALICEDEVICE1276": "rguEwN95PyMmoNMjZZuI2RBsgKfxK/5AD48mx/JC/xc"
21093+ },
21094+ "signatures": {
21095+ "@alice_1276:hs1": {
21096+ "ed25519:ALICEDEVICE1276": "l9ZnxNoByO2E2oy9tRC19Xcl8Wju53/zWyb+1iGY3juthUkpkOxXoFod+Kc4I/ULS9rr9i55cIEegaU2xzcJDQ"
21097+ }
21098+ },
21099+ "user_id": "@alice_1276:hs1",
21100+ "unsigned": {}
21101+ }
21102+ },
21103+ "@alice_1295:hs1": {
21104+ "ALICEDEVICE1295": {
21105+ "algorithms": [
21106+ "m.olm.v1.curve25519-aes-sha2",
21107+ "m.megolm.v1.aes-sha2"
21108+ ],
21109+ "device_id": "ALICEDEVICE1295",
21110+ "keys": {
21111+ "curve25519:ALICEDEVICE1295": "gRooLwK/t2tHNbDBoiKBgkRLDtZe3ZQzPA3ZRQA43Wk",
21112+ "ed25519:ALICEDEVICE1295": "WTX/nS80ohffjlyFTXeTTf3hqG7c25q11Va6VYav3T8"
21113+ },
21114+ "signatures": {
21115+ "@alice_1295:hs1": {
21116+ "ed25519:ALICEDEVICE1295": "GWq9hgbTWiQQZyCMzfzsiaixbMYC00YVCUTqNp5CVH4h5HMb0G65Y3XH9PSkwsxUiMQKsJzy3RFit0qYdknhAQ"
21117+ }
21118+ },
21119+ "user_id": "@alice_1295:hs1",
21120+ "unsigned": {}
21121+ }
21122+ },
21123+ "@alice_1305:hs1": {
21124+ "ALICEDEVICE1305": {
21125+ "algorithms": [
21126+ "m.olm.v1.curve25519-aes-sha2",
21127+ "m.megolm.v1.aes-sha2"
21128+ ],
21129+ "device_id": "ALICEDEVICE1305",
21130+ "keys": {
21131+ "curve25519:ALICEDEVICE1305": "MjrnVev3mtwY8ZN5AHs1gKae+Q3HZxVLebTFT/Hu21I",
21132+ "ed25519:ALICEDEVICE1305": "Un0wG+H6q5ucdR9gjMNfQZU63wjLSHoxVLZNZW1hN70"
21133+ },
21134+ "signatures": {
21135+ "@alice_1305:hs1": {
21136+ "ed25519:ALICEDEVICE1305": "3EqmDxmcRMjadLKS3+2Q9QaeKS/IL2XOkDoVnlEfkBu4lhL53vfsQT5J3npEYXF/dA6IYybrKIUPV68K3HYHBQ"
21137+ }
21138+ },
21139+ "user_id": "@alice_1305:hs1",
21140+ "unsigned": {}
21141+ }
21142+ },
21143+ "@alice_1307:hs1": {
21144+ "ALICEDEVICE1307": {
21145+ "algorithms": [
21146+ "m.olm.v1.curve25519-aes-sha2",
21147+ "m.megolm.v1.aes-sha2"
21148+ ],
21149+ "device_id": "ALICEDEVICE1307",
21150+ "keys": {
21151+ "curve25519:ALICEDEVICE1307": "rqRlz+2GSv53eO+ZB7X+7hB9Zu85wgxhHkxsqCIDRXg",
21152+ "ed25519:ALICEDEVICE1307": "r4UdWK89TyX2YeU/TyziDWrvy6fzBqFEP3fktzBnQU0"
21153+ },
21154+ "signatures": {
21155+ "@alice_1307:hs1": {
21156+ "ed25519:ALICEDEVICE1307": "chastY2eY/7pZzGbTcnX3Y0eby+CP5cdQlEU6hMCWAxViLr3K0t7lIgVqb4R2QEL3VzysRmFMuunRqdUoIhXAQ"
21157+ }
21158+ },
21159+ "user_id": "@alice_1307:hs1",
21160+ "unsigned": {}
21161+ }
21162+ },
21163+ "@alice_1311:hs1": {
21164+ "ALICEDEVICE1311": {
21165+ "algorithms": [
21166+ "m.olm.v1.curve25519-aes-sha2",
21167+ "m.megolm.v1.aes-sha2"
21168+ ],
21169+ "device_id": "ALICEDEVICE1311",
21170+ "keys": {
21171+ "curve25519:ALICEDEVICE1311": "B7vO/aI+gvd/vHWUFvwAt9DL0O1oiUq6Om4Xi9mWTAc",
21172+ "ed25519:ALICEDEVICE1311": "RIb6ins2yU0OwJ/NSFklcO2TZHaLLd9qPl9VVd4Wb+Q"
21173+ },
21174+ "signatures": {
21175+ "@alice_1311:hs1": {
21176+ "ed25519:ALICEDEVICE1311": "xeH9rWF/uyaveFpTjUMmk4x+AzyYZsoC73xoDh565nAASgDadFCxQRF6vgbKIMhjGRqIzyC/TFy86/aeKwVmBQ"
21177+ }
21178+ },
21179+ "user_id": "@alice_1311:hs1",
21180+ "unsigned": {}
21181+ }
21182+ },
21183+ "@alice_1314:hs1": {
21184+ "ALICEDEVICE1314": {
21185+ "algorithms": [
21186+ "m.olm.v1.curve25519-aes-sha2",
21187+ "m.megolm.v1.aes-sha2"
21188+ ],
21189+ "device_id": "ALICEDEVICE1314",
21190+ "keys": {
21191+ "curve25519:ALICEDEVICE1314": "rzdvvdhSO05xVKp9+sLZ7S5F9nAsaPqpUAX731Ydn2I",
21192+ "ed25519:ALICEDEVICE1314": "DQpCTq1/EwXcCEGUwqRoDwPMAKNhgAlhs9CR/o+htqg"
21193+ },
21194+ "signatures": {
21195+ "@alice_1314:hs1": {
21196+ "ed25519:ALICEDEVICE1314": "d/LhLMxuqAVbqO5KTUe1ynM1VtLQI0Dm9UdLFryd+EyR37CJL0BjaNSbNk9d1TBD7gcWunmvGe/O3sr8/u0YBw"
21197+ }
21198+ },
21199+ "user_id": "@alice_1314:hs1",
21200+ "unsigned": {}
21201+ }
21202+ },
21203+ "@alice_1315:hs1": {
21204+ "ALICEDEVICE1315": {
21205+ "algorithms": [
21206+ "m.olm.v1.curve25519-aes-sha2",
21207+ "m.megolm.v1.aes-sha2"
21208+ ],
21209+ "device_id": "ALICEDEVICE1315",
21210+ "keys": {
21211+ "curve25519:ALICEDEVICE1315": "QULL444oYeTozd6L6870cIIW+PHmTdD/pHkT36mLVBk",
21212+ "ed25519:ALICEDEVICE1315": "ED+GjLYiV0yayzO/g1dSXl4TcIKTMZZDouHQUMF6nCU"
21213+ },
21214+ "signatures": {
21215+ "@alice_1315:hs1": {
21216+ "ed25519:ALICEDEVICE1315": "R0MHV0KfdoZq2pzbg6VL9JVnZnL6zZ9pu2Vf71DKT5E56jHTUkUHFYVZpbRTphW5Q5LEQo10vDtYuU4QdaEfBQ"
21217+ }
21218+ },
21219+ "user_id": "@alice_1315:hs1",
21220+ "unsigned": {}
21221+ }
21222+ },
21223+ "@alice_1319:hs1": {
21224+ "ALICEDEVICE1319": {
21225+ "algorithms": [
21226+ "m.olm.v1.curve25519-aes-sha2",
21227+ "m.megolm.v1.aes-sha2"
21228+ ],
21229+ "device_id": "ALICEDEVICE1319",
21230+ "keys": {
21231+ "curve25519:ALICEDEVICE1319": "Ddbs0lCkjIMUyFl7IGNfNMx5wAwnmdF3qO8RpO5/Gxg",
21232+ "ed25519:ALICEDEVICE1319": "/6j9X4jjkkGZH6FsjzJKAz8SXCGa7MVw0ZR36uE76qc"
21233+ },
21234+ "signatures": {
21235+ "@alice_1319:hs1": {
21236+ "ed25519:ALICEDEVICE1319": "GnbptsWkjd9kvNstxB1yinC5JqFhjjFERGcrQYaOHVSf6+dbJnjjSc/g3Pgj6AzcLrBiiyhz+mEPkJllpqsHAw"
21237+ }
21238+ },
21239+ "user_id": "@alice_1319:hs1",
21240+ "unsigned": {}
21241+ }
21242+ },
21243+ "@alice_1325:hs1": {
21244+ "ALICEDEVICE1325": {
21245+ "algorithms": [
21246+ "m.olm.v1.curve25519-aes-sha2",
21247+ "m.megolm.v1.aes-sha2"
21248+ ],
21249+ "device_id": "ALICEDEVICE1325",
21250+ "keys": {
21251+ "curve25519:ALICEDEVICE1325": "4jLtG0cduzn1kIGdU1Jw6481WHo18RBh8uqQWA+rdRQ",
21252+ "ed25519:ALICEDEVICE1325": "TPhhyZr7pT1PiszpA50SuqNblSeHvHYlRPQhyC1L1vY"
21253+ },
21254+ "signatures": {
21255+ "@alice_1325:hs1": {
21256+ "ed25519:ALICEDEVICE1325": "Ev/LVekOoc+9ST4ae49C4w8IIEvP9x742NCgpOCotu/EOVztnPBtd8nlFloONRQsz/DHTBsHNxYdLZEkdP6eCw"
21257+ }
21258+ },
21259+ "user_id": "@alice_1325:hs1",
21260+ "unsigned": {}
21261+ }
21262+ },
21263+ "@alice_1329:hs1": {
21264+ "ALICEDEVICE1329": {
21265+ "algorithms": [
21266+ "m.olm.v1.curve25519-aes-sha2",
21267+ "m.megolm.v1.aes-sha2"
21268+ ],
21269+ "device_id": "ALICEDEVICE1329",
21270+ "keys": {
21271+ "curve25519:ALICEDEVICE1329": "IfVPchmmtffdQBSGiZVrFWY9ViUOxwqd9Rzih3PwAkQ",
21272+ "ed25519:ALICEDEVICE1329": "Wlh5PT15u+kgfh97L53tsXfaXYTcVyT8Q9/Fr+M8NbM"
21273+ },
21274+ "signatures": {
21275+ "@alice_1329:hs1": {
21276+ "ed25519:ALICEDEVICE1329": "WvpDdJpmE5rLkOWLq4Pl4mxwgLmJp3ZHzvxpR8NL1A8OUMp5GBU8aIZQ5c6GJ7S+q5aEhX2ro37Ju9HIgbahDg"
21277+ }
21278+ },
21279+ "user_id": "@alice_1329:hs1",
21280+ "unsigned": {}
21281+ }
21282+ },
21283+ "@alice_1344:hs1": {
21284+ "ALICEDEVICE1344": {
21285+ "algorithms": [
21286+ "m.olm.v1.curve25519-aes-sha2",
21287+ "m.megolm.v1.aes-sha2"
21288+ ],
21289+ "device_id": "ALICEDEVICE1344",
21290+ "keys": {
21291+ "curve25519:ALICEDEVICE1344": "hGHMwlY2mveuVXzNoO569s77s1VKeWzjQcLevNhnZ2A",
21292+ "ed25519:ALICEDEVICE1344": "iTsAX9JBi/iy8d8Zo9uUbqnNDlAGAsoROcxWo8LyRXI"
21293+ },
21294+ "signatures": {
21295+ "@alice_1344:hs1": {
21296+ "ed25519:ALICEDEVICE1344": "knAhaNlmRAV53MSE0fy6vGQFn5Y4tehoJ1r/6Ca6FiHs/EeKXCj9gnNscrQ7tLHZGh3pSLpool9tahRUVnigAw"
21297+ }
21298+ },
21299+ "user_id": "@alice_1344:hs1",
21300+ "unsigned": {}
21301+ }
21302+ },
21303+ "@alice_1350:hs1": {
21304+ "ALICEDEVICE1350": {
21305+ "algorithms": [
21306+ "m.olm.v1.curve25519-aes-sha2",
21307+ "m.megolm.v1.aes-sha2"
21308+ ],
21309+ "device_id": "ALICEDEVICE1350",
21310+ "keys": {
21311+ "curve25519:ALICEDEVICE1350": "IrVqJjigWg9eJhlv40Mp6BT973p8jHuSItXUJNWVd1E",
21312+ "ed25519:ALICEDEVICE1350": "rY/vquA3nHKqc9D1NQzWeJOijFs+s3npPC1FSIDl9Ks"
21313+ },
21314+ "signatures": {
21315+ "@alice_1350:hs1": {
21316+ "ed25519:ALICEDEVICE1350": "6z9QEO7AlHII2jU2c6jLmp9eyrb9owcVpOObi6NOanEq0m/eJ5zaLDr+QYoIwaCuipKWrkfApgfRPSWJGfkkBg"
21317+ }
21318+ },
21319+ "user_id": "@alice_1350:hs1",
21320+ "unsigned": {}
21321+ }
21322+ },
21323+ "@alice_1351:hs1": {
21324+ "ALICEDEVICE1351": {
21325+ "algorithms": [
21326+ "m.olm.v1.curve25519-aes-sha2",
21327+ "m.megolm.v1.aes-sha2"
21328+ ],
21329+ "device_id": "ALICEDEVICE1351",
21330+ "keys": {
21331+ "curve25519:ALICEDEVICE1351": "xbxSIIGtOzj6T1RIe9k+X5qBvmf07qbX32TJxAGlD0Y",
21332+ "ed25519:ALICEDEVICE1351": "kRROmFqKaECYQJPwzT/UuY3SomcoVisyczI4ytbtHKM"
21333+ },
21334+ "signatures": {
21335+ "@alice_1351:hs1": {
21336+ "ed25519:ALICEDEVICE1351": "CeFJoQ/7V1WZ8HQdNvRf+pF262tKujj2yDTa1J22F2A6IWi+33Qn0WjShUx6R3kE1lqgAZx3RG7qRadOqbseDQ"
21337+ }
21338+ },
21339+ "user_id": "@alice_1351:hs1",
21340+ "unsigned": {}
21341+ }
21342+ },
21343+ "@alice_1362:hs1": {
21344+ "ALICEDEVICE1362": {
21345+ "algorithms": [
21346+ "m.olm.v1.curve25519-aes-sha2",
21347+ "m.megolm.v1.aes-sha2"
21348+ ],
21349+ "device_id": "ALICEDEVICE1362",
21350+ "keys": {
21351+ "curve25519:ALICEDEVICE1362": "VcMNwyQqMeTne8Bq0XAutp7Bn8e7X3jgWOdtK6OYxUU",
21352+ "ed25519:ALICEDEVICE1362": "/YOkAEdMbogfXyLbKqZVIRg0C4qIwZ5iqenk3uiad9s"
21353+ },
21354+ "signatures": {
21355+ "@alice_1362:hs1": {
21356+ "ed25519:ALICEDEVICE1362": "c90ljg2fa72O9ly2ryo9KgL6zRgT6PCALioSRUFPgX67w0K9EXx1WXFrLaud18SewsN9aRdq9VDYWd8Vc8pIBQ"
21357+ }
21358+ },
21359+ "user_id": "@alice_1362:hs1",
21360+ "unsigned": {}
21361+ }
21362+ },
21363+ "@alice_1363:hs1": {
21364+ "ALICEDEVICE1363": {
21365+ "algorithms": [
21366+ "m.olm.v1.curve25519-aes-sha2",
21367+ "m.megolm.v1.aes-sha2"
21368+ ],
21369+ "device_id": "ALICEDEVICE1363",
21370+ "keys": {
21371+ "curve25519:ALICEDEVICE1363": "z8sw08XrCvOp1ERK6JiBYbtcbJw+/Y4p6Z02xVqOQSg",
21372+ "ed25519:ALICEDEVICE1363": "ymGdd4WIS1QHcUwJzLm+v4m0RKNFiFBj0FiGJ0ZqwzE"
21373+ },
21374+ "signatures": {
21375+ "@alice_1363:hs1": {
21376+ "ed25519:ALICEDEVICE1363": "kyQ+uuNX6KDjS5M0jafp71CWaePapSyfhWPIxAy+ruMEnG1Coi1nT7/Q2RiX05wFavGQ5iQkENC7T6vXrbOGCg"
21377+ }
21378+ },
21379+ "user_id": "@alice_1363:hs1",
21380+ "unsigned": {}
21381+ }
21382+ },
21383+ "@alice_1373:hs1": {
21384+ "ALICEDEVICE1373": {
21385+ "algorithms": [
21386+ "m.olm.v1.curve25519-aes-sha2",
21387+ "m.megolm.v1.aes-sha2"
21388+ ],
21389+ "device_id": "ALICEDEVICE1373",
21390+ "keys": {
21391+ "curve25519:ALICEDEVICE1373": "5ExsDcoFcanJZXmLKZffUx09+Q1eaOL7I3oYsSaPSUw",
21392+ "ed25519:ALICEDEVICE1373": "VKsr0kwsKkJboT7EX+D9gijzqiepcxoFb1gPlo2G5yQ"
21393+ },
21394+ "signatures": {
21395+ "@alice_1373:hs1": {
21396+ "ed25519:ALICEDEVICE1373": "F0vMuUQjV/SenyBgPw5Od2sFk90S0A6zHsCuKOedBLa7zI4SEAvpOMGPhgzIS0Ubj95KU/KIfU4mdieooWdpDw"
21397+ }
21398+ },
21399+ "user_id": "@alice_1373:hs1",
21400+ "unsigned": {}
21401+ }
21402+ },
21403+ "@alice_1375:hs1": {
21404+ "ALICEDEVICE1375": {
21405+ "algorithms": [
21406+ "m.olm.v1.curve25519-aes-sha2",
21407+ "m.megolm.v1.aes-sha2"
21408+ ],
21409+ "device_id": "ALICEDEVICE1375",
21410+ "keys": {
21411+ "curve25519:ALICEDEVICE1375": "wxntBaBmw7OVG5roqROuWzoBccDL9g0HpGZk2m4ghzg",
21412+ "ed25519:ALICEDEVICE1375": "pD2W35XXW7uR6m34AljjTwVrS0/r89qsPZhM/f4oDPU"
21413+ },
21414+ "signatures": {
21415+ "@alice_1375:hs1": {
21416+ "ed25519:ALICEDEVICE1375": "hnZyJQGrAmrvWPBum50WkWz0C56pPjM4cgW28Btsskzb3oxvDVbydiF4dmw9+9NLk10lnywiXdTprjGTMPerBQ"
21417+ }
21418+ },
21419+ "user_id": "@alice_1375:hs1",
21420+ "unsigned": {}
21421+ }
21422+ },
21423+ "@alice_1381:hs1": {
21424+ "ALICEDEVICE1381": {
21425+ "algorithms": [
21426+ "m.olm.v1.curve25519-aes-sha2",
21427+ "m.megolm.v1.aes-sha2"
21428+ ],
21429+ "device_id": "ALICEDEVICE1381",
21430+ "keys": {
21431+ "curve25519:ALICEDEVICE1381": "r4xBgj5yrIEp3BVeYmm5/HA/I3QipVwVyyhtixeyvQo",
21432+ "ed25519:ALICEDEVICE1381": "VFbuGg8wsLxrtR+rmwSjIA8rG2rbIytGUXFXjnm2rwo"
21433+ },
21434+ "signatures": {
21435+ "@alice_1381:hs1": {
21436+ "ed25519:ALICEDEVICE1381": "x9MS0XIuVqTnZy9ce/ZnS2sH3Hs61YY4zGIcnzGpwfg3eZLNyJHHU5eu/PCKbv1s6J15pcZDyOwlBqRjrmQEAA"
21437+ }
21438+ },
21439+ "user_id": "@alice_1381:hs1",
21440+ "unsigned": {}
21441+ }
21442+ },
21443+ "@alice_1401:hs1": {
21444+ "ALICEDEVICE1401": {
21445+ "algorithms": [
21446+ "m.olm.v1.curve25519-aes-sha2",
21447+ "m.megolm.v1.aes-sha2"
21448+ ],
21449+ "device_id": "ALICEDEVICE1401",
21450+ "keys": {
21451+ "curve25519:ALICEDEVICE1401": "yhENZw5pSmpIkTBdf3vXIc3hNHmmYApXmldGWYfm1y8",
21452+ "ed25519:ALICEDEVICE1401": "bWCrIQU9KkHOLzaloEVV5SD3PC396xI1X+Zn934vIs8"
21453+ },
21454+ "signatures": {
21455+ "@alice_1401:hs1": {
21456+ "ed25519:ALICEDEVICE1401": "oCDGXy7uc3THl8GO5epfXj9re85c7GCsPUtK1YWOoFQGfmvpAMcob+LUzZKJAsxySRwVH2IZLLN51RVkogriAw"
21457+ }
21458+ },
21459+ "user_id": "@alice_1401:hs1",
21460+ "unsigned": {}
21461+ }
21462+ },
21463+ "@alice_1402:hs1": {
21464+ "ALICEDEVICE1402": {
21465+ "algorithms": [
21466+ "m.olm.v1.curve25519-aes-sha2",
21467+ "m.megolm.v1.aes-sha2"
21468+ ],
21469+ "device_id": "ALICEDEVICE1402",
21470+ "keys": {
21471+ "curve25519:ALICEDEVICE1402": "kiHH2IKdo2efYDYYaUT8bc6C3Sl/7p6cCG5Cg7Uvk3Q",
21472+ "ed25519:ALICEDEVICE1402": "cEsSRF/VDGImELT0X9Y4T92KQRB7fHNareGrVkg43I0"
21473+ },
21474+ "signatures": {
21475+ "@alice_1402:hs1": {
21476+ "ed25519:ALICEDEVICE1402": "g4C1Weq0l8IE22XUA0vqJMVIp+x9WfAgJsISkicwwjjNltvhgo5t9/Yj9VfaSUtXtID5N+jaESVaaeeV8omgBQ"
21477+ }
21478+ },
21479+ "user_id": "@alice_1402:hs1",
21480+ "unsigned": {}
21481+ }
21482+ },
21483+ "@alice_1407:hs1": {
21484+ "ALICEDEVICE1407": {
21485+ "algorithms": [
21486+ "m.olm.v1.curve25519-aes-sha2",
21487+ "m.megolm.v1.aes-sha2"
21488+ ],
21489+ "device_id": "ALICEDEVICE1407",
21490+ "keys": {
21491+ "curve25519:ALICEDEVICE1407": "egsece7Cuv4IrVBi4uo2PRtv3pLDzOASt5jWDKyAo1Q",
21492+ "ed25519:ALICEDEVICE1407": "dHmMkT6U/K96vmDCENSl31HI+DbiloylfRJXu0NMUf8"
21493+ },
21494+ "signatures": {
21495+ "@alice_1407:hs1": {
21496+ "ed25519:ALICEDEVICE1407": "bOqVknEFIDv7CTbSjiy1Lb3aSs1o5xtVG+Zy/NBbCyWyGbBzFMYBiLZMmG2BJh6IQkp5KfCJZIpeJS6hdU5JCQ"
21497+ }
21498+ },
21499+ "user_id": "@alice_1407:hs1",
21500+ "unsigned": {}
21501+ }
21502+ },
21503+ "@alice_1408:hs1": {
21504+ "ALICEDEVICE1408": {
21505+ "algorithms": [
21506+ "m.olm.v1.curve25519-aes-sha2",
21507+ "m.megolm.v1.aes-sha2"
21508+ ],
21509+ "device_id": "ALICEDEVICE1408",
21510+ "keys": {
21511+ "curve25519:ALICEDEVICE1408": "zMNLrr1o//QkKbTGS/qGDhUPMCQ8uarqM/vf5KPMOSc",
21512+ "ed25519:ALICEDEVICE1408": "OFrqzwjFZm/Ps5uq3rTM38Jmfbbyjao9LNZdAvZ5+Sg"
21513+ },
21514+ "signatures": {
21515+ "@alice_1408:hs1": {
21516+ "ed25519:ALICEDEVICE1408": "olgiF9ffQgzBHrVqNGqwIV3NVpXexyFXvE/toD6FofaxyRUbcvwrLRfQe2qkoXzuEP1/KoRWkYhb28Q+qqhFAw"
21517+ }
21518+ },
21519+ "user_id": "@alice_1408:hs1",
21520+ "unsigned": {}
21521+ }
21522+ },
21523+ "@alice_1412:hs1": {
21524+ "ALICEDEVICE1412": {
21525+ "algorithms": [
21526+ "m.olm.v1.curve25519-aes-sha2",
21527+ "m.megolm.v1.aes-sha2"
21528+ ],
21529+ "device_id": "ALICEDEVICE1412",
21530+ "keys": {
21531+ "curve25519:ALICEDEVICE1412": "tqyLBgMXZ6pUPZ93Mf/T+7xivZlxcvxrCGWL9i6LVic",
21532+ "ed25519:ALICEDEVICE1412": "UxsFLFu9YtLD1BIym99vwBm5caFYlqfAcdQgIxgAHec"
21533+ },
21534+ "signatures": {
21535+ "@alice_1412:hs1": {
21536+ "ed25519:ALICEDEVICE1412": "nv2zmoYJeWBrku1caXsQbiMQTqpcPKw6UDx2b3Z0YWizSvnGt9KiISiPPnLPZX6RhqCopa/As9I5kRODNhTRCQ"
21537+ }
21538+ },
21539+ "user_id": "@alice_1412:hs1",
21540+ "unsigned": {}
21541+ }
21542+ },
21543+ "@alice_1415:hs1": {
21544+ "ALICEDEVICE1415": {
21545+ "algorithms": [
21546+ "m.olm.v1.curve25519-aes-sha2",
21547+ "m.megolm.v1.aes-sha2"
21548+ ],
21549+ "device_id": "ALICEDEVICE1415",
21550+ "keys": {
21551+ "curve25519:ALICEDEVICE1415": "SKrfeScZTc02aoPiUtzmifdsR6M89eUDRa2R2NC0DGM",
21552+ "ed25519:ALICEDEVICE1415": "Wq+fmoQDhruvCuU1yXasQX2a5pKP3Of+bViC6toLWoI"
21553+ },
21554+ "signatures": {
21555+ "@alice_1415:hs1": {
21556+ "ed25519:ALICEDEVICE1415": "0iPesI6qsEjgWh+v1ztTlspbiOmtck8SqzaZ1k1uXHw+10kYy3VVdvBrszT0jkd04JpUS49pL8iyu7OcWtlKAQ"
21557+ }
21558+ },
21559+ "user_id": "@alice_1415:hs1",
21560+ "unsigned": {}
21561+ }
21562+ },
21563+ "@alice_1427:hs1": {
21564+ "ALICEDEVICE1427": {
21565+ "algorithms": [
21566+ "m.olm.v1.curve25519-aes-sha2",
21567+ "m.megolm.v1.aes-sha2"
21568+ ],
21569+ "device_id": "ALICEDEVICE1427",
21570+ "keys": {
21571+ "curve25519:ALICEDEVICE1427": "FI5dlnvtxnmQRnSbQ7adEwuP8hyjy4OMzUbcztdB3SE",
21572+ "ed25519:ALICEDEVICE1427": "iZVcGXLxprx19+l7/VwcdgBbwZkEfPKffmot4Kn0fco"
21573+ },
21574+ "signatures": {
21575+ "@alice_1427:hs1": {
21576+ "ed25519:ALICEDEVICE1427": "MEcatHG9u4ywPDppHFFdVmdLsrc7RmdfnWuEr2r6jXRSP+N1pXvPsPCR/r84gnxexCsfXwojq27q/RqUepOuAA"
21577+ }
21578+ },
21579+ "user_id": "@alice_1427:hs1",
21580+ "unsigned": {}
21581+ }
21582+ },
21583+ "@alice_1428:hs1": {
21584+ "ALICEDEVICE1428": {
21585+ "algorithms": [
21586+ "m.olm.v1.curve25519-aes-sha2",
21587+ "m.megolm.v1.aes-sha2"
21588+ ],
21589+ "device_id": "ALICEDEVICE1428",
21590+ "keys": {
21591+ "curve25519:ALICEDEVICE1428": "xaNPMqGjDoc7PkIwL+oaieqyoHjaOX1+8V8u/j6Yty8",
21592+ "ed25519:ALICEDEVICE1428": "BOnyujtMVWRyCZub5oZdJ0qUai99yQIhvfREuNbt1yE"
21593+ },
21594+ "signatures": {
21595+ "@alice_1428:hs1": {
21596+ "ed25519:ALICEDEVICE1428": "wmhWs7yJo4o7jrfedCT1pXavO6kTnprhQNycUjvZ6TNVv2uHQcK/TNTA0jdIshNTlfAHNFCoMRkduS7g1N9WDg"
21597+ }
21598+ },
21599+ "user_id": "@alice_1428:hs1",
21600+ "unsigned": {}
21601+ }
21602+ },
21603+ "@alice_142:hs1": {
21604+ "ALICEDEVICE142": {
21605+ "algorithms": [
21606+ "m.olm.v1.curve25519-aes-sha2",
21607+ "m.megolm.v1.aes-sha2"
21608+ ],
21609+ "device_id": "ALICEDEVICE142",
21610+ "keys": {
21611+ "curve25519:ALICEDEVICE142": "pzVi4TLZ4k/cxw0Yaj6mPyHpg6jvYy1SBeLMK2/hPHs",
21612+ "ed25519:ALICEDEVICE142": "0i31Xz6SMih9PF7x90K6XSNDIlLf1vPwlrIFg1/ePBU"
21613+ },
21614+ "signatures": {
21615+ "@alice_142:hs1": {
21616+ "ed25519:ALICEDEVICE142": "gjY3W8l4/ibV3mrZR/LK+db8Jyukizrg0ZQc4AYoza3qHeJwkT3n8MZ2BH0/YkQ57KozelSMR9A/iIAdSwl6DQ"
21617+ }
21618+ },
21619+ "user_id": "@alice_142:hs1",
21620+ "unsigned": {}
21621+ }
21622+ },
21623+ "@alice_144:hs1": {
21624+ "ALICEDEVICE144": {
21625+ "algorithms": [
21626+ "m.olm.v1.curve25519-aes-sha2",
21627+ "m.megolm.v1.aes-sha2"
21628+ ],
21629+ "device_id": "ALICEDEVICE144",
21630+ "keys": {
21631+ "curve25519:ALICEDEVICE144": "XFRtjYxH1N8LZgOA1KxR4KbQUbNNjF8RXbmjKr0Q4BU",
21632+ "ed25519:ALICEDEVICE144": "cuu5OEWORSuL7rB3oE0vevXkqqRX3d/bn+UVF0deObM"
21633+ },
21634+ "signatures": {
21635+ "@alice_144:hs1": {
21636+ "ed25519:ALICEDEVICE144": "++IA6i2WbJJU72g7D8t3Z5eC30jjGEEG64bIfFxSfFm2TcCbz7a2JKWDKE538vpd6NkPOwAC34crnPMhc7zMCQ"
21637+ }
21638+ },
21639+ "user_id": "@alice_144:hs1",
21640+ "unsigned": {}
21641+ }
21642+ },
21643+ "@alice_1453:hs1": {
21644+ "ALICEDEVICE1453": {
21645+ "algorithms": [
21646+ "m.olm.v1.curve25519-aes-sha2",
21647+ "m.megolm.v1.aes-sha2"
21648+ ],
21649+ "device_id": "ALICEDEVICE1453",
21650+ "keys": {
21651+ "curve25519:ALICEDEVICE1453": "HlWupSSSHu9qSHGDXpUUIo7mYnEg2WA58UzWPoKpfzo",
21652+ "ed25519:ALICEDEVICE1453": "sdk2AQ2qoaASozpVneJRgrSjkEYq7Qxe/KjkTH3J+Hw"
21653+ },
21654+ "signatures": {
21655+ "@alice_1453:hs1": {
21656+ "ed25519:ALICEDEVICE1453": "EDuw7Wlva3O2PJCjRix6HwntMqjgFOkMyXp5Wt59cKzpU68FB15BOQ4/Q5fmCyq27EdiG8TjSRCMp3Y3q3IKBQ"
21657+ }
21658+ },
21659+ "user_id": "@alice_1453:hs1",
21660+ "unsigned": {}
21661+ }
21662+ },
21663+ "@alice_1455:hs1": {
21664+ "ALICEDEVICE1455": {
21665+ "algorithms": [
21666+ "m.olm.v1.curve25519-aes-sha2",
21667+ "m.megolm.v1.aes-sha2"
21668+ ],
21669+ "device_id": "ALICEDEVICE1455",
21670+ "keys": {
21671+ "curve25519:ALICEDEVICE1455": "C+rmD7G62xEwqbbvcap+InFrANcCtRqtJ5lZ6DxhwCY",
21672+ "ed25519:ALICEDEVICE1455": "hcTSgrM/rz+Mm1jDscOqGqRKMOMbjqrRS/hDWzniR8U"
21673+ },
21674+ "signatures": {
21675+ "@alice_1455:hs1": {
21676+ "ed25519:ALICEDEVICE1455": "eTWqRTa1XIjACQbJ+b1hnvgc3ydPkElgzKvkk5VnsTO64MRUhCzNsKJVy/dHAgw7hF25RnmoLLNIt3NBL3j3CA"
21677+ }
21678+ },
21679+ "user_id": "@alice_1455:hs1",
21680+ "unsigned": {}
21681+ }
21682+ },
21683+ "@alice_1467:hs1": {
21684+ "ALICEDEVICE1467": {
21685+ "algorithms": [
21686+ "m.olm.v1.curve25519-aes-sha2",
21687+ "m.megolm.v1.aes-sha2"
21688+ ],
21689+ "device_id": "ALICEDEVICE1467",
21690+ "keys": {
21691+ "curve25519:ALICEDEVICE1467": "z07iuGeSgmPcvGBRPa4AgsIumK025Ou3X5XBq9qD2lY",
21692+ "ed25519:ALICEDEVICE1467": "JOvET90xFRkmYrn7VCnkM+tiEhwRirPC9NoU4GIm6bg"
21693+ },
21694+ "signatures": {
21695+ "@alice_1467:hs1": {
21696+ "ed25519:ALICEDEVICE1467": "X8PIOnLfMGOJZSNyZezNZJ1BfC6z7dJjhgqqw5VXwacqm6g7NQjmDrMZD7PWCYRnoQSUztUJdRamJszv869UCQ"
21697+ }
21698+ },
21699+ "user_id": "@alice_1467:hs1",
21700+ "unsigned": {}
21701+ }
21702+ },
21703+ "@alice_1480:hs1": {
21704+ "ALICEDEVICE1480": {
21705+ "algorithms": [
21706+ "m.olm.v1.curve25519-aes-sha2",
21707+ "m.megolm.v1.aes-sha2"
21708+ ],
21709+ "device_id": "ALICEDEVICE1480",
21710+ "keys": {
21711+ "curve25519:ALICEDEVICE1480": "JWHhiICLEMin6XiMTDm8o2/MXPPUw1xlyIJcUrUulQo",
21712+ "ed25519:ALICEDEVICE1480": "UroUm/g5+GZs+kZK7uRGogEB9TGZ9wP9N69ZADrwZEc"
21713+ },
21714+ "signatures": {
21715+ "@alice_1480:hs1": {
21716+ "ed25519:ALICEDEVICE1480": "uNjGMFbkDD0hN5pfJ2YTkzvdaUvXIs96RlIE44j6Bcfz4ktMxZJWlaUj5HBf3vBN+sqEgb9v7ubuOQW+b/ikAw"
21717+ }
21718+ },
21719+ "user_id": "@alice_1480:hs1",
21720+ "unsigned": {}
21721+ }
21722+ },
21723+ "@alice_1483:hs1": {
21724+ "ALICEDEVICE1483": {
21725+ "algorithms": [
21726+ "m.olm.v1.curve25519-aes-sha2",
21727+ "m.megolm.v1.aes-sha2"
21728+ ],
21729+ "device_id": "ALICEDEVICE1483",
21730+ "keys": {
21731+ "curve25519:ALICEDEVICE1483": "weFZe29c4lUEuHOU6jw34uKgU26kzfNEOuiEzKfwtzI",
21732+ "ed25519:ALICEDEVICE1483": "iN1xJ8RuxYgIDgwgahUYHlWWahpHatN3d/qqmhgEOjE"
21733+ },
21734+ "signatures": {
21735+ "@alice_1483:hs1": {
21736+ "ed25519:ALICEDEVICE1483": "3zqANDtqx/x8IPdH5fySY3kUL0vYq3FvaGa9+jmGQ9o9hTRLJRKBdWEDTfqUOYrPnKttte+qZf5NwI2EoSAjCg"
21737+ }
21738+ },
21739+ "user_id": "@alice_1483:hs1",
21740+ "unsigned": {}
21741+ }
21742+ },
21743+ "@alice_1485:hs1": {
21744+ "ALICEDEVICE1485": {
21745+ "algorithms": [
21746+ "m.olm.v1.curve25519-aes-sha2",
21747+ "m.megolm.v1.aes-sha2"
21748+ ],
21749+ "device_id": "ALICEDEVICE1485",
21750+ "keys": {
21751+ "curve25519:ALICEDEVICE1485": "NvB/n2zOp6ek7dqh6Rv7SSXvZZHbEOv9FsLGvNy8oXI",
21752+ "ed25519:ALICEDEVICE1485": "5jsSVS/3AsdZKqpROCDh5ihBlyz6bb4c0hKD5FVQGxg"
21753+ },
21754+ "signatures": {
21755+ "@alice_1485:hs1": {
21756+ "ed25519:ALICEDEVICE1485": "qx6i8Nc1cEvK34wMHdKqsIPOdIb8FICH1gagHjgMjeiD1bxV4xNllExUgZrWW0qzWBPzfmaPojkXb7tugQ4RBg"
21757+ }
21758+ },
21759+ "user_id": "@alice_1485:hs1",
21760+ "unsigned": {}
21761+ }
21762+ },
21763+ "@alice_1505:hs1": {
21764+ "ALICEDEVICE1505": {
21765+ "algorithms": [
21766+ "m.olm.v1.curve25519-aes-sha2",
21767+ "m.megolm.v1.aes-sha2"
21768+ ],
21769+ "device_id": "ALICEDEVICE1505",
21770+ "keys": {
21771+ "curve25519:ALICEDEVICE1505": "qcWyoLAuno2LtgAkbvkflfRfakQVIIL1Gb89VbciSiw",
21772+ "ed25519:ALICEDEVICE1505": "7pNHWw1uDM7HV73JlDtt3es67wvXJ+TbkIrUhD7ucZw"
21773+ },
21774+ "signatures": {
21775+ "@alice_1505:hs1": {
21776+ "ed25519:ALICEDEVICE1505": "CcmBs1R3LryACXeoSE/EUL2u3QIVrjqCUN3A4mPD6yY/apLGyezvooMfCwK3U8l/w0RcGjUty56P0LZGNwByAA"
21777+ }
21778+ },
21779+ "user_id": "@alice_1505:hs1",
21780+ "unsigned": {}
21781+ }
21782+ },
21783+ "@alice_1511:hs1": {
21784+ "ALICEDEVICE1511": {
21785+ "algorithms": [
21786+ "m.olm.v1.curve25519-aes-sha2",
21787+ "m.megolm.v1.aes-sha2"
21788+ ],
21789+ "device_id": "ALICEDEVICE1511",
21790+ "keys": {
21791+ "curve25519:ALICEDEVICE1511": "4WntK92pOceIr8WEjsgzfHrlKOMSWS+Ma7QeHwzbJyM",
21792+ "ed25519:ALICEDEVICE1511": "6IaIly/3KGguK1EtABe4uomCykjnhpmmM7sAFbL7Aj4"
21793+ },
21794+ "signatures": {
21795+ "@alice_1511:hs1": {
21796+ "ed25519:ALICEDEVICE1511": "eqbXfeGtULhPElJFUtbpK74CHP00suTtKeIgiDd/7qXxmP5W+fb61p4ZbnnHN0966+AQEe6YHJg/uwrljbAtCg"
21797+ }
21798+ },
21799+ "user_id": "@alice_1511:hs1",
21800+ "unsigned": {}
21801+ }
21802+ },
21803+ "@alice_1512:hs1": {
21804+ "ALICEDEVICE1512": {
21805+ "algorithms": [
21806+ "m.olm.v1.curve25519-aes-sha2",
21807+ "m.megolm.v1.aes-sha2"
21808+ ],
21809+ "device_id": "ALICEDEVICE1512",
21810+ "keys": {
21811+ "curve25519:ALICEDEVICE1512": "F4EcwhENyVthe3nZCYZ1168n1YPFJa5sBSSpkFFmthI",
21812+ "ed25519:ALICEDEVICE1512": "LRoX48nLd1er8uok5Vy5/iARa3oy5W9lcmaP0aG08mU"
21813+ },
21814+ "signatures": {
21815+ "@alice_1512:hs1": {
21816+ "ed25519:ALICEDEVICE1512": "+Bv5XfEnB6CNKeOqM/HG/rsqYoNOTXO0Lu6/IUt8u0r7pvKB3OKTmfLsOE2NW8I8yEliNg+YbSU919ESkOKgDA"
21817+ }
21818+ },
21819+ "user_id": "@alice_1512:hs1",
21820+ "unsigned": {}
21821+ }
21822+ },
21823+ "@alice_1523:hs1": {
21824+ "ALICEDEVICE1523": {
21825+ "algorithms": [
21826+ "m.olm.v1.curve25519-aes-sha2",
21827+ "m.megolm.v1.aes-sha2"
21828+ ],
21829+ "device_id": "ALICEDEVICE1523",
21830+ "keys": {
21831+ "curve25519:ALICEDEVICE1523": "eGHRlAvun9Wg4vTxAqZ8bAWgPqgzJFa2IzA35ablvAY",
21832+ "ed25519:ALICEDEVICE1523": "oSkLFWwIJdFivLWmIdbrEiccJcp8qeS1jF6k/sKYiis"
21833+ },
21834+ "signatures": {
21835+ "@alice_1523:hs1": {
21836+ "ed25519:ALICEDEVICE1523": "mWxc1IY4WJCXF/KUetztbPWkrQn9dit3CsNinTTDWkXqittkMhE4WZ7YC/C30XlKDJbzYqKjRa6gOLgkNPLyCg"
21837+ }
21838+ },
21839+ "user_id": "@alice_1523:hs1",
21840+ "unsigned": {}
21841+ }
21842+ },
21843+ "@alice_1569:hs1": {
21844+ "ALICEDEVICE1569": {
21845+ "algorithms": [
21846+ "m.olm.v1.curve25519-aes-sha2",
21847+ "m.megolm.v1.aes-sha2"
21848+ ],
21849+ "device_id": "ALICEDEVICE1569",
21850+ "keys": {
21851+ "curve25519:ALICEDEVICE1569": "kr0FUzVWHuSMufLGC3tOrJwCUnm6UyPy3eiTi5fojxg",
21852+ "ed25519:ALICEDEVICE1569": "r91tGiYfyKfC8iAwDoDgaCacEUwnuU+uIsoSaM0P+dM"
21853+ },
21854+ "signatures": {
21855+ "@alice_1569:hs1": {
21856+ "ed25519:ALICEDEVICE1569": "yxHmSYf+sam3a3L4nAz2NTMkUnmSKmv4uSHy0iKaV1ZhfzIZJvZb7AL9vaDgez0PCezKglSRFCLsUrytUmlpBA"
21857+ }
21858+ },
21859+ "user_id": "@alice_1569:hs1",
21860+ "unsigned": {}
21861+ }
21862+ },
21863+ "@alice_1573:hs1": {
21864+ "ALICEDEVICE1573": {
21865+ "algorithms": [
21866+ "m.olm.v1.curve25519-aes-sha2",
21867+ "m.megolm.v1.aes-sha2"
21868+ ],
21869+ "device_id": "ALICEDEVICE1573",
21870+ "keys": {
21871+ "curve25519:ALICEDEVICE1573": "8ZEA/3a9qg/VXuf5nlqqk9nCQ/ljoa4si9DS17jLbQ0",
21872+ "ed25519:ALICEDEVICE1573": "YMG6kkKbmthLSHYTeAp2pyaxnTLhn3yyFLHWaT28lKk"
21873+ },
21874+ "signatures": {
21875+ "@alice_1573:hs1": {
21876+ "ed25519:ALICEDEVICE1573": "YCz+fUTkKAGLQArqpjLkvsOOqFxS20agpT/OrcJGK589aYadB5FyzMoGSmAWB7wZhi/96ZNsDr14F78kCaqbAg"
21877+ }
21878+ },
21879+ "user_id": "@alice_1573:hs1",
21880+ "unsigned": {}
21881+ }
21882+ },
21883+ "@alice_1587:hs1": {
21884+ "ALICEDEVICE1587": {
21885+ "algorithms": [
21886+ "m.olm.v1.curve25519-aes-sha2",
21887+ "m.megolm.v1.aes-sha2"
21888+ ],
21889+ "device_id": "ALICEDEVICE1587",
21890+ "keys": {
21891+ "curve25519:ALICEDEVICE1587": "NShQ/THyvaH/X1/n6zV6ZyolVQXPDl3kTZyxuIUQ3j0",
21892+ "ed25519:ALICEDEVICE1587": "K9bCeXDD/qEx82q6IJYZnEPyl+aAgeU0AsPLqzzGp4A"
21893+ },
21894+ "signatures": {
21895+ "@alice_1587:hs1": {
21896+ "ed25519:ALICEDEVICE1587": "wtJOCBxu5XBcP9AoM9+hQjas9Gt4NnTO3R+vzpaNbhhWWtKVtWChQECiICO+UC3gXWqBb26yTEjdsIiZFfGTAw"
21897+ }
21898+ },
21899+ "user_id": "@alice_1587:hs1",
21900+ "unsigned": {}
21901+ }
21902+ },
21903+ "@alice_1598:hs1": {
21904+ "ALICEDEVICE1598": {
21905+ "algorithms": [
21906+ "m.olm.v1.curve25519-aes-sha2",
21907+ "m.megolm.v1.aes-sha2"
21908+ ],
21909+ "device_id": "ALICEDEVICE1598",
21910+ "keys": {
21911+ "curve25519:ALICEDEVICE1598": "wYVZIQlNyuuudbuT9osOCLDZ8Sjkm9q9puJ10lJZPTY",
21912+ "ed25519:ALICEDEVICE1598": "o4/0qYLj2SECSECsJ0QVdjDY8u/CJwp3D2YQMx9Tz/0"
21913+ },
21914+ "signatures": {
21915+ "@alice_1598:hs1": {
21916+ "ed25519:ALICEDEVICE1598": "fSHgzCEoSxME1UWxFxPw31/aDThQCdktxVH2tAli83iJ9s6orD6koUq7AZPWNPifIQew5vnU/RbQ16SC6yayDg"
21917+ }
21918+ },
21919+ "user_id": "@alice_1598:hs1",
21920+ "unsigned": {}
21921+ }
21922+ },
21923+ "@alice_1617:hs1": {
21924+ "ALICEDEVICE1617": {
21925+ "algorithms": [
21926+ "m.olm.v1.curve25519-aes-sha2",
21927+ "m.megolm.v1.aes-sha2"
21928+ ],
21929+ "device_id": "ALICEDEVICE1617",
21930+ "keys": {
21931+ "curve25519:ALICEDEVICE1617": "1wfI6wL76bZx9fykdz5mR8/15ab2PAjojErMcHVsx3E",
21932+ "ed25519:ALICEDEVICE1617": "ztSLUB0WVojBv7kXG4bVm3BE7HlY8Z6tdr36/XD7Wyk"
21933+ },
21934+ "signatures": {
21935+ "@alice_1617:hs1": {
21936+ "ed25519:ALICEDEVICE1617": "MJvflBOWNqMtHkycLBRlSzwas/mAY/xLwhGaaoNAvASveoT78pjw8ortopoFZVNbMSleMCfs5ycxNgXNYxumAg"
21937+ }
21938+ },
21939+ "user_id": "@alice_1617:hs1",
21940+ "unsigned": {}
21941+ }
21942+ },
21943+ "@alice_161:hs1": {
21944+ "ALICEDEVICE161": {
21945+ "algorithms": [
21946+ "m.olm.v1.curve25519-aes-sha2",
21947+ "m.megolm.v1.aes-sha2"
21948+ ],
21949+ "device_id": "ALICEDEVICE161",
21950+ "keys": {
21951+ "curve25519:ALICEDEVICE161": "sf9THNZZjoJbGgf2Tn0+pkMvgJO3ltGLh2U1JVKHGjM",
21952+ "ed25519:ALICEDEVICE161": "V7k1L10/tLNHTROqRPLIDkQuymyOh8gVrPUhNKgU+gE"
21953+ },
21954+ "signatures": {
21955+ "@alice_161:hs1": {
21956+ "ed25519:ALICEDEVICE161": "NAE0S9Of+biF1f2mlfa/+uAn34LA/Hv5p+IBn3tlOUyC/CPfPQQXauUDbPFBQmSXcQQNM4cQQwgLUkZfyMemAw"
21957+ }
21958+ },
21959+ "user_id": "@alice_161:hs1",
21960+ "unsigned": {}
21961+ }
21962+ },
21963+ "@alice_1620:hs1": {
21964+ "ALICEDEVICE1620": {
21965+ "algorithms": [
21966+ "m.olm.v1.curve25519-aes-sha2",
21967+ "m.megolm.v1.aes-sha2"
21968+ ],
21969+ "device_id": "ALICEDEVICE1620",
21970+ "keys": {
21971+ "curve25519:ALICEDEVICE1620": "x+rjRYacL2SyiIeUFIkXMHsF8pxQ0Cmxdec14/PAUQI",
21972+ "ed25519:ALICEDEVICE1620": "a8DW42yQGqwdDeCML2fPK8/7UDBY/ESYHnXiaJ25AM4"
21973+ },
21974+ "signatures": {
21975+ "@alice_1620:hs1": {
21976+ "ed25519:ALICEDEVICE1620": "bT+Hxup2Zn6DS/h4HJGWFqOhd+1c3PkbYN29Uoql3xdwd5R9efcq3H3L64VSsZs98EYX/zkYHqk7lkydYeS5Dw"
21977+ }
21978+ },
21979+ "user_id": "@alice_1620:hs1",
21980+ "unsigned": {}
21981+ }
21982+ },
21983+ "@alice_1623:hs1": {
21984+ "ALICEDEVICE1623": {
21985+ "algorithms": [
21986+ "m.olm.v1.curve25519-aes-sha2",
21987+ "m.megolm.v1.aes-sha2"
21988+ ],
21989+ "device_id": "ALICEDEVICE1623",
21990+ "keys": {
21991+ "curve25519:ALICEDEVICE1623": "PPqFZg4BMsTCNTtQx0KI0b7NWbOq6VXmD9esthXfFDI",
21992+ "ed25519:ALICEDEVICE1623": "r4+VXAnGItinUcXP/Am/cYygeJQ3M2o1rnhV23iSuhs"
21993+ },
21994+ "signatures": {
21995+ "@alice_1623:hs1": {
21996+ "ed25519:ALICEDEVICE1623": "7GfnJqEJ5cfeAtFDQL3TkAZ+j1GD1lQ+T5V09NEgvICMIR54/PfUmGcm+fHO6MElyZgI6OlnlNd6fiCqFS9CBg"
21997+ }
21998+ },
21999+ "user_id": "@alice_1623:hs1",
22000+ "unsigned": {}
22001+ }
22002+ },
22003+ "@alice_162:hs1": {
22004+ "ALICEDEVICE162": {
22005+ "algorithms": [
22006+ "m.olm.v1.curve25519-aes-sha2",
22007+ "m.megolm.v1.aes-sha2"
22008+ ],
22009+ "device_id": "ALICEDEVICE162",
22010+ "keys": {
22011+ "curve25519:ALICEDEVICE162": "GqVRJFWtNPF329ARVYMdvJ4yOKoZ6KXSn8XXscSBrXI",
22012+ "ed25519:ALICEDEVICE162": "QihtbnUvhfXX/M+TGzgH8RZFdHJCERA0jQLDAbxshxI"
22013+ },
22014+ "signatures": {
22015+ "@alice_162:hs1": {
22016+ "ed25519:ALICEDEVICE162": "HoUxYHRxEKMnRhlNVB4rPPyIjyiDfPDanzKPNSLjhmvq55Mc1KGNzh+gkY7Pc6CtzghNLJz/cmDGO7aSuY05Aw"
22017+ }
22018+ },
22019+ "user_id": "@alice_162:hs1",
22020+ "unsigned": {}
22021+ }
22022+ },
22023+ "@alice_1632:hs1": {
22024+ "ALICEDEVICE1632": {
22025+ "algorithms": [
22026+ "m.olm.v1.curve25519-aes-sha2",
22027+ "m.megolm.v1.aes-sha2"
22028+ ],
22029+ "device_id": "ALICEDEVICE1632",
22030+ "keys": {
22031+ "curve25519:ALICEDEVICE1632": "DuteKuDSTMha39c9N3at6Ha3tTdzRLu535NESF9NFVk",
22032+ "ed25519:ALICEDEVICE1632": "FJDvIxqS7sJTfMsQsJN3i3TtwJKSqBcERwtSe0tSH4I"
22033+ },
22034+ "signatures": {
22035+ "@alice_1632:hs1": {
22036+ "ed25519:ALICEDEVICE1632": "fB9NRacRv6uvsDeK7aShIuhiCXDjI1Ppoo/6Iwv0vsV4q+/6iNO7Tg8O803h5G5FkeBJRxSQ/NyT2NQ+di4RDQ"
22037+ }
22038+ },
22039+ "user_id": "@alice_1632:hs1",
22040+ "unsigned": {}
22041+ }
22042+ },
22043+ "@alice_1638:hs1": {
22044+ "ALICEDEVICE1638": {
22045+ "algorithms": [
22046+ "m.olm.v1.curve25519-aes-sha2",
22047+ "m.megolm.v1.aes-sha2"
22048+ ],
22049+ "device_id": "ALICEDEVICE1638",
22050+ "keys": {
22051+ "curve25519:ALICEDEVICE1638": "dWV4VWVrH1hEZ+T5F43xwZhPRrYCzrQFPQqub8Xu0TM",
22052+ "ed25519:ALICEDEVICE1638": "nQcMzBwMJPlEDh69TUzwJnubmllZ+jOBAvaEDHIiT/A"
22053+ },
22054+ "signatures": {
22055+ "@alice_1638:hs1": {
22056+ "ed25519:ALICEDEVICE1638": "JoK7Qv288XdA/ry+MgqUY0fDsFW+5x6t2gw+vtSORlwI7vizFMCtuYBDw9gHyWJpTxDShABnk3BlTCv3D+/mAQ"
22057+ }
22058+ },
22059+ "user_id": "@alice_1638:hs1",
22060+ "unsigned": {}
22061+ }
22062+ },
22063+ "@alice_1656:hs1": {
22064+ "ALICEDEVICE1656": {
22065+ "algorithms": [
22066+ "m.olm.v1.curve25519-aes-sha2",
22067+ "m.megolm.v1.aes-sha2"
22068+ ],
22069+ "device_id": "ALICEDEVICE1656",
22070+ "keys": {
22071+ "curve25519:ALICEDEVICE1656": "PmyW6nlx1wvAuZtfrvvCYz4bgHxq4daZ4bt69PpwNRw",
22072+ "ed25519:ALICEDEVICE1656": "YDeIChV8UdEyYGLo+lpe20ZeDW3TMhvKd3hPzAEpmK4"
22073+ },
22074+ "signatures": {
22075+ "@alice_1656:hs1": {
22076+ "ed25519:ALICEDEVICE1656": "+c15czuJ9Dye7r5B3eobzngavuCkTIPdLFLYNLR2J17RzpEGLv+gSFFh17AkCQNvK3HqhxJWuMJSctU7wRIRDg"
22077+ }
22078+ },
22079+ "user_id": "@alice_1656:hs1",
22080+ "unsigned": {}
22081+ }
22082+ },
22083+ "@alice_1675:hs1": {
22084+ "ALICEDEVICE1675": {
22085+ "algorithms": [
22086+ "m.olm.v1.curve25519-aes-sha2",
22087+ "m.megolm.v1.aes-sha2"
22088+ ],
22089+ "device_id": "ALICEDEVICE1675",
22090+ "keys": {
22091+ "curve25519:ALICEDEVICE1675": "NFj9CBHv8gF9gkDu7mCN5dkXy4HcdZnGwGbAU7vFVRw",
22092+ "ed25519:ALICEDEVICE1675": "TMwxyP+vbQzxZlD2fMw9PYjOPOoFpiHZQWYlRQyThqI"
22093+ },
22094+ "signatures": {
22095+ "@alice_1675:hs1": {
22096+ "ed25519:ALICEDEVICE1675": "emeGzP/3ewV73wf2KhZ30htUqXkImHukLLWI00gRMhZb3f52AtZ4Hrvw4CK2x4HBFknegvZyNNqya7u2PYMkCw"
22097+ }
22098+ },
22099+ "user_id": "@alice_1675:hs1",
22100+ "unsigned": {}
22101+ }
22102+ },
22103+ "@alice_1678:hs1": {
22104+ "ALICEDEVICE1678": {
22105+ "algorithms": [
22106+ "m.olm.v1.curve25519-aes-sha2",
22107+ "m.megolm.v1.aes-sha2"
22108+ ],
22109+ "device_id": "ALICEDEVICE1678",
22110+ "keys": {
22111+ "curve25519:ALICEDEVICE1678": "j/B19fOkFfr4F7L5EfuarHMBrw/UXSsZydDTksRqLEI",
22112+ "ed25519:ALICEDEVICE1678": "Vr9rS1d6kZuiimtAmuw551CaGpgDJ8F7PGqxLwqWKx8"
22113+ },
22114+ "signatures": {
22115+ "@alice_1678:hs1": {
22116+ "ed25519:ALICEDEVICE1678": "Y/9eJQrrAnCj4Gg+b1O+wMPDAYVISIDmhVzIfYQH36fXvhfVoKV8ZARLlhDqcFX8QZI2b9hTHxC8574sIjFNDw"
22117+ }
22118+ },
22119+ "user_id": "@alice_1678:hs1",
22120+ "unsigned": {}
22121+ }
22122+ },
22123+ "@alice_1679:hs1": {
22124+ "ALICEDEVICE1679": {
22125+ "algorithms": [
22126+ "m.olm.v1.curve25519-aes-sha2",
22127+ "m.megolm.v1.aes-sha2"
22128+ ],
22129+ "device_id": "ALICEDEVICE1679",
22130+ "keys": {
22131+ "curve25519:ALICEDEVICE1679": "E6iLZMvbN8DKaQDDxLHGMv3sddaZN4bDxel7fBrriB0",
22132+ "ed25519:ALICEDEVICE1679": "CF8I+M/RgN8KSQZvBhMJnJo1Adm+zPc3OoDvlM6OmFU"
22133+ },
22134+ "signatures": {
22135+ "@alice_1679:hs1": {
22136+ "ed25519:ALICEDEVICE1679": "QdxDvvBP2VBt7Uba6BRdXWa+Sh3P+EjCqg/PI71GFYmjp/SRAE5dUnD2ZEuucV/o5FrLO3OU9qARe4pWcJO8CQ"
22137+ }
22138+ },
22139+ "user_id": "@alice_1679:hs1",
22140+ "unsigned": {}
22141+ }
22142+ },
22143+ "@alice_1680:hs1": {
22144+ "ALICEDEVICE1680": {
22145+ "algorithms": [
22146+ "m.olm.v1.curve25519-aes-sha2",
22147+ "m.megolm.v1.aes-sha2"
22148+ ],
22149+ "device_id": "ALICEDEVICE1680",
22150+ "keys": {
22151+ "curve25519:ALICEDEVICE1680": "KyNsAlVMb72Km07zvawrqopp0fPUNNCrRHzA7Spw/k8",
22152+ "ed25519:ALICEDEVICE1680": "BFTVyeQti3dagG5f7fhwzEBqWVFwKofPSYj0acP9tPA"
22153+ },
22154+ "signatures": {
22155+ "@alice_1680:hs1": {
22156+ "ed25519:ALICEDEVICE1680": "tNV8Zen7UzQWkGEVpMCXnuH/KHmfcHbV9zs882y3kXikVTN4avSfxZXMan3X/K/JCPaYzphDFdr/pSrLYvkvAA"
22157+ }
22158+ },
22159+ "user_id": "@alice_1680:hs1",
22160+ "unsigned": {}
22161+ }
22162+ },
22163+ "@alice_16:hs1": {
22164+ "ALICEDEVICE16": {
22165+ "algorithms": [
22166+ "m.olm.v1.curve25519-aes-sha2",
22167+ "m.megolm.v1.aes-sha2"
22168+ ],
22169+ "device_id": "ALICEDEVICE16",
22170+ "keys": {
22171+ "curve25519:ALICEDEVICE16": "CVpd6+C4+oPKgg17u5R09faOthumCPgd33IiQl4owl4",
22172+ "ed25519:ALICEDEVICE16": "jTH7RPGdCVo8xILqeB0d3Crr0rN6w7bjZ9rPTbPT9tA"
22173+ },
22174+ "signatures": {
22175+ "@alice_16:hs1": {
22176+ "ed25519:ALICEDEVICE16": "kwtUdVo4JphGCFLA7y/cdh13M8aWF6ayhPXYkbOg7ZezMrkFpyfiffDN6efLuoChgpu0ZIK+OZDezGL6IfFbCw"
22177+ }
22178+ },
22179+ "user_id": "@alice_16:hs1",
22180+ "unsigned": {}
22181+ }
22182+ },
22183+ "@alice_1705:hs1": {
22184+ "ALICEDEVICE1705": {
22185+ "algorithms": [
22186+ "m.olm.v1.curve25519-aes-sha2",
22187+ "m.megolm.v1.aes-sha2"
22188+ ],
22189+ "device_id": "ALICEDEVICE1705",
22190+ "keys": {
22191+ "curve25519:ALICEDEVICE1705": "9xNyirdx3VXMxHQZuC7HviXhU6bWOAMpMpMtCvKOiEM",
22192+ "ed25519:ALICEDEVICE1705": "uTNH+gZPiuD/JocmieuA1qs0upmi0HWLX2t5Wd4NIDg"
22193+ },
22194+ "signatures": {
22195+ "@alice_1705:hs1": {
22196+ "ed25519:ALICEDEVICE1705": "UuEfH4unKfRHEN/jPn7VN/5QCl+TytnPhjN9VPyHNrh7Nex3UpdMc1xrhTZZ32yX+bRQXXGMxF4E5Tc5fHxKBQ"
22197+ }
22198+ },
22199+ "user_id": "@alice_1705:hs1",
22200+ "unsigned": {}
22201+ }
22202+ },
22203+ "@alice_1716:hs1": {
22204+ "ALICEDEVICE1716": {
22205+ "algorithms": [
22206+ "m.olm.v1.curve25519-aes-sha2",
22207+ "m.megolm.v1.aes-sha2"
22208+ ],
22209+ "device_id": "ALICEDEVICE1716",
22210+ "keys": {
22211+ "curve25519:ALICEDEVICE1716": "WTz30es2Tn08YmRDPndYGoyqjcPmQI70QNvViaijZSA",
22212+ "ed25519:ALICEDEVICE1716": "drV2oTAarLREsNckGSGQtjkqdJn33+dmrPiGdd94xCw"
22213+ },
22214+ "signatures": {
22215+ "@alice_1716:hs1": {
22216+ "ed25519:ALICEDEVICE1716": "3y9LpbKN1mUMVCgTPwDygaaLBk+y1iDpLlpGF7ECRaIYezw7pmxygwBS0aVqcUiMIWUWaRAFWw832VTZ1r5UCA"
22217+ }
22218+ },
22219+ "user_id": "@alice_1716:hs1",
22220+ "unsigned": {}
22221+ }
22222+ },
22223+ "@alice_1718:hs1": {
22224+ "ALICEDEVICE1718": {
22225+ "algorithms": [
22226+ "m.olm.v1.curve25519-aes-sha2",
22227+ "m.megolm.v1.aes-sha2"
22228+ ],
22229+ "device_id": "ALICEDEVICE1718",
22230+ "keys": {
22231+ "curve25519:ALICEDEVICE1718": "BEaK10IEBMAjc/CuE+kq0qyQiUN2psjDHTesZwyCy0E",
22232+ "ed25519:ALICEDEVICE1718": "8mda5zE36UhmQK1ylbgchxWiA3oKranHu/2cMtDG/Lc"
22233+ },
22234+ "signatures": {
22235+ "@alice_1718:hs1": {
22236+ "ed25519:ALICEDEVICE1718": "6cJqx/FqDO8JYekdhJheT4YHL0UczTeM/RfhM2Zjp6avEjDJ5X6FqaBHjtjTTCBYvISXReU1nyWfXOOhWHgVCA"
22237+ }
22238+ },
22239+ "user_id": "@alice_1718:hs1",
22240+ "unsigned": {}
22241+ }
22242+ },
22243+ "@alice_1723:hs1": {
22244+ "ALICEDEVICE1723": {
22245+ "algorithms": [
22246+ "m.olm.v1.curve25519-aes-sha2",
22247+ "m.megolm.v1.aes-sha2"
22248+ ],
22249+ "device_id": "ALICEDEVICE1723",
22250+ "keys": {
22251+ "curve25519:ALICEDEVICE1723": "+xCRR7NGRH/Z9JyQLP/iEc5pTv659qR6uGDJz8Ad5B4",
22252+ "ed25519:ALICEDEVICE1723": "tCpwVbvj3PZ5pkELl1rsC2gHNyKJBGZnal1vWz27dKk"
22253+ },
22254+ "signatures": {
22255+ "@alice_1723:hs1": {
22256+ "ed25519:ALICEDEVICE1723": "oeaiZm9YpGwYenmW06WIEEsiASEqxA+JWQDz8HgoDaXKwDeHMOuyr5XYkHcqdczjMPbo4AEU0npqdBnow/OTAA"
22257+ }
22258+ },
22259+ "user_id": "@alice_1723:hs1",
22260+ "unsigned": {}
22261+ }
22262+ },
22263+ "@alice_1727:hs1": {
22264+ "ALICEDEVICE1727": {
22265+ "algorithms": [
22266+ "m.olm.v1.curve25519-aes-sha2",
22267+ "m.megolm.v1.aes-sha2"
22268+ ],
22269+ "device_id": "ALICEDEVICE1727",
22270+ "keys": {
22271+ "curve25519:ALICEDEVICE1727": "xagzsES5YpIdwtikBcfCkLYNlwmoA69tpeuPETxeq1I",
22272+ "ed25519:ALICEDEVICE1727": "c7Bwava9Z4ycvblXI69m0Efm6azF4WBqiO/ay1J0KNA"
22273+ },
22274+ "signatures": {
22275+ "@alice_1727:hs1": {
22276+ "ed25519:ALICEDEVICE1727": "TpVj3ftD//AhLrTqWKG1w4c1R6mChkq6Fu0gqNrDckYiGMZG2kEBI2cbDiN3nw39r1lpOBm4Se3jT3BffH6XAQ"
22277+ }
22278+ },
22279+ "user_id": "@alice_1727:hs1",
22280+ "unsigned": {}
22281+ }
22282+ },
22283+ "@alice_1730:hs1": {
22284+ "ALICEDEVICE1730": {
22285+ "algorithms": [
22286+ "m.olm.v1.curve25519-aes-sha2",
22287+ "m.megolm.v1.aes-sha2"
22288+ ],
22289+ "device_id": "ALICEDEVICE1730",
22290+ "keys": {
22291+ "curve25519:ALICEDEVICE1730": "YOSavB2lNbetVEe5YX2JopOSiKT18nQrztts43OxAX4",
22292+ "ed25519:ALICEDEVICE1730": "rSflLgBvZVbLDxL5bfmv0UbmBpcorNGZRwajJO3BE+I"
22293+ },
22294+ "signatures": {
22295+ "@alice_1730:hs1": {
22296+ "ed25519:ALICEDEVICE1730": "kv3eMzWsexVI8rfTqSQuzovuSwHUB+zXeWvIx35VLodCUBcSAIPWEwmtZhBL2u736fMMbbh4Jf3Ymoxu0YZmDw"
22297+ }
22298+ },
22299+ "user_id": "@alice_1730:hs1",
22300+ "unsigned": {}
22301+ }
22302+ },
22303+ "@alice_1732:hs1": {
22304+ "ALICEDEVICE1732": {
22305+ "algorithms": [
22306+ "m.olm.v1.curve25519-aes-sha2",
22307+ "m.megolm.v1.aes-sha2"
22308+ ],
22309+ "device_id": "ALICEDEVICE1732",
22310+ "keys": {
22311+ "curve25519:ALICEDEVICE1732": "7S0Y7jnMD3Y5x32x2V8LvhFwJ8d9Pnh6rZoIe509yy4",
22312+ "ed25519:ALICEDEVICE1732": "rWmGoJE60zxeNkkrw8Z/0MS3JuZOEYyG/Jn0YYPBm5o"
22313+ },
22314+ "signatures": {
22315+ "@alice_1732:hs1": {
22316+ "ed25519:ALICEDEVICE1732": "oDlnihz0+FPt0AhWIt90cvKcRXTKMxpP5jxS1Fi+kQ7vronoirMXyRhAUFxePOykbjpD61l6RJapW4F2iFhUDQ"
22317+ }
22318+ },
22319+ "user_id": "@alice_1732:hs1",
22320+ "unsigned": {}
22321+ }
22322+ },
22323+ "@alice_1753:hs1": {
22324+ "ALICEDEVICE1753": {
22325+ "algorithms": [
22326+ "m.olm.v1.curve25519-aes-sha2",
22327+ "m.megolm.v1.aes-sha2"
22328+ ],
22329+ "device_id": "ALICEDEVICE1753",
22330+ "keys": {
22331+ "curve25519:ALICEDEVICE1753": "jHcjE5lzIn73vBXH+qj0kS751BNLnLx3EHW6MpBv8nQ",
22332+ "ed25519:ALICEDEVICE1753": "DNpLgcWTzx75E/tOMmcAA4+TtYGhDAMsdL3nbuc1H4U"
22333+ },
22334+ "signatures": {
22335+ "@alice_1753:hs1": {
22336+ "ed25519:ALICEDEVICE1753": "wBT75NLY6SbV0txlOraAy0dTSsgzhgS0YVTCWy26L4h3C5GqLixu3FLt1/ulckjpvcVotK8RHUqKou76OBkyCw"
22337+ }
22338+ },
22339+ "user_id": "@alice_1753:hs1",
22340+ "unsigned": {}
22341+ }
22342+ },
22343+ "@alice_175:hs1": {
22344+ "ALICEDEVICE175": {
22345+ "algorithms": [
22346+ "m.olm.v1.curve25519-aes-sha2",
22347+ "m.megolm.v1.aes-sha2"
22348+ ],
22349+ "device_id": "ALICEDEVICE175",
22350+ "keys": {
22351+ "curve25519:ALICEDEVICE175": "Nz8BgUYTzy5mQjfHg8RlN+ppKZ9Hkc6EH47vGqDxHXA",
22352+ "ed25519:ALICEDEVICE175": "lWj43dYJJv7NXbx0hU/9k6lb5tWYzytjy4jUckWEhX4"
22353+ },
22354+ "signatures": {
22355+ "@alice_175:hs1": {
22356+ "ed25519:ALICEDEVICE175": "xWUnQxEHFdIhbSsNmmasLmUG0LnI/chM8MammJGFZqI1V8qa72FLLIBq8z0ihoc9IPnff06jWOyQBvXBeb7MBg"
22357+ }
22358+ },
22359+ "user_id": "@alice_175:hs1",
22360+ "unsigned": {}
22361+ }
22362+ },
22363+ "@alice_1773:hs1": {
22364+ "ALICEDEVICE1773": {
22365+ "algorithms": [
22366+ "m.olm.v1.curve25519-aes-sha2",
22367+ "m.megolm.v1.aes-sha2"
22368+ ],
22369+ "device_id": "ALICEDEVICE1773",
22370+ "keys": {
22371+ "curve25519:ALICEDEVICE1773": "jL1yQzYWU0393NFSHKpl8uyBihpFhhdqtP04d9rT2As",
22372+ "ed25519:ALICEDEVICE1773": "+1XGSgRJDuz1NHhNku5TMK32R1PcFljwhHraiKZgS1Q"
22373+ },
22374+ "signatures": {
22375+ "@alice_1773:hs1": {
22376+ "ed25519:ALICEDEVICE1773": "JuWp3TK252HdytFWFkq7ruNAc4eBJduK7MJl6oapugegmbBNLiJ20fFp7zai4uDHcvgQRHtjqlF/pQfbytAoCQ"
22377+ }
22378+ },
22379+ "user_id": "@alice_1773:hs1",
22380+ "unsigned": {}
22381+ }
22382+ },
22383+ "@alice_1778:hs1": {
22384+ "ALICEDEVICE1778": {
22385+ "algorithms": [
22386+ "m.olm.v1.curve25519-aes-sha2",
22387+ "m.megolm.v1.aes-sha2"
22388+ ],
22389+ "device_id": "ALICEDEVICE1778",
22390+ "keys": {
22391+ "curve25519:ALICEDEVICE1778": "jWMF5JfISpQEXr3CKRRwWZSWa2la5Yj+Ni7ZfWJ5Wnk",
22392+ "ed25519:ALICEDEVICE1778": "HWFzEi29mT2gNi4HdeAZZ9rtoleh/6d4hv+qqzWEivk"
22393+ },
22394+ "signatures": {
22395+ "@alice_1778:hs1": {
22396+ "ed25519:ALICEDEVICE1778": "YsMkqt56d0myev4a2KUxhmwuAI4O2ZBmWH37Wt5Am8hLynyp9aAN4DeWltqxE4eikBtU6R+qXZRIfDy7c2NPBg"
22397+ }
22398+ },
22399+ "user_id": "@alice_1778:hs1",
22400+ "unsigned": {}
22401+ }
22402+ },
22403+ "@alice_1789:hs1": {
22404+ "ALICEDEVICE1789": {
22405+ "algorithms": [
22406+ "m.olm.v1.curve25519-aes-sha2",
22407+ "m.megolm.v1.aes-sha2"
22408+ ],
22409+ "device_id": "ALICEDEVICE1789",
22410+ "keys": {
22411+ "curve25519:ALICEDEVICE1789": "l4SKVjV2pf0zOk/Q2ULe+YgxUwTBfN7Mv2+OZC1rDQo",
22412+ "ed25519:ALICEDEVICE1789": "k5PwVooSZKdRqFXRnql/viHXwLQqq16S565dxWj0IoM"
22413+ },
22414+ "signatures": {
22415+ "@alice_1789:hs1": {
22416+ "ed25519:ALICEDEVICE1789": "zmUx5IQusZyEzpqCxZxZroOrdejoV3yX7cG5BchXhPRXt23/Huf/0ZjRcW/h/nXKm67pfAE8YWI/RDw5JL7pAg"
22417+ }
22418+ },
22419+ "user_id": "@alice_1789:hs1",
22420+ "unsigned": {}
22421+ }
22422+ },
22423+ "@alice_178:hs1": {
22424+ "ALICEDEVICE178": {
22425+ "algorithms": [
22426+ "m.olm.v1.curve25519-aes-sha2",
22427+ "m.megolm.v1.aes-sha2"
22428+ ],
22429+ "device_id": "ALICEDEVICE178",
22430+ "keys": {
22431+ "curve25519:ALICEDEVICE178": "DkVDAiDSbGp2/RZ+7jSrr7WL0lSUpq2egos+nDXn5Xg",
22432+ "ed25519:ALICEDEVICE178": "6vrUSShzq203J/Ve8xM4cI8+t7bRgHfij0yMl8l1wpc"
22433+ },
22434+ "signatures": {
22435+ "@alice_178:hs1": {
22436+ "ed25519:ALICEDEVICE178": "pL8pVeyJGyz1RqV9NIkNQNr2ol8k5t+BzDGLJRBtWvuIompwoxmKBEekd1OfOr38mu5jiPO8oFIQTzyaBH0TBA"
22437+ }
22438+ },
22439+ "user_id": "@alice_178:hs1",
22440+ "unsigned": {}
22441+ }
22442+ },
22443+ "@alice_1811:hs1": {
22444+ "ALICEDEVICE1811": {
22445+ "algorithms": [
22446+ "m.olm.v1.curve25519-aes-sha2",
22447+ "m.megolm.v1.aes-sha2"
22448+ ],
22449+ "device_id": "ALICEDEVICE1811",
22450+ "keys": {
22451+ "curve25519:ALICEDEVICE1811": "iCW/VJtRNaz5+dyXNHe+X6avW8SIoDWJ5smnNayiCB0",
22452+ "ed25519:ALICEDEVICE1811": "CGdoPAU90+t7SPczLc4BbT/EKYO/Dq4+MUbdGtgYoVA"
22453+ },
22454+ "signatures": {
22455+ "@alice_1811:hs1": {
22456+ "ed25519:ALICEDEVICE1811": "DIphJMILYqpbyZeZv1oN6FmIoBXGF+b19LUOjZOiaTnXL7JcgE5g8z+COfzTkJNqGHKky1uwqiQYAGHurclrBA"
22457+ }
22458+ },
22459+ "user_id": "@alice_1811:hs1",
22460+ "unsigned": {}
22461+ }
22462+ },
22463+ "@alice_1813:hs1": {
22464+ "ALICEDEVICE1813": {
22465+ "algorithms": [
22466+ "m.olm.v1.curve25519-aes-sha2",
22467+ "m.megolm.v1.aes-sha2"
22468+ ],
22469+ "device_id": "ALICEDEVICE1813",
22470+ "keys": {
22471+ "curve25519:ALICEDEVICE1813": "jbQjjVW3erkUqLxIVZvf8ceMgqr6FjgH+lelLp8O+Vo",
22472+ "ed25519:ALICEDEVICE1813": "99vU4cWp9GhzhnLd5xyNudJlyO2Xpv2QWSo2zLNy/hA"
22473+ },
22474+ "signatures": {
22475+ "@alice_1813:hs1": {
22476+ "ed25519:ALICEDEVICE1813": "NyCLOI8dSGEsmm7fzNJ+R1LGNDBDWEti1yf3FJ940dNMFV3dTobbhIsUjRulwGe0mYIkPbPAmxAiLiWudCN0Ag"
22477+ }
22478+ },
22479+ "user_id": "@alice_1813:hs1",
22480+ "unsigned": {}
22481+ }
22482+ },
22483+ "@alice_1833:hs1": {
22484+ "ALICEDEVICE1833": {
22485+ "algorithms": [
22486+ "m.olm.v1.curve25519-aes-sha2",
22487+ "m.megolm.v1.aes-sha2"
22488+ ],
22489+ "device_id": "ALICEDEVICE1833",
22490+ "keys": {
22491+ "curve25519:ALICEDEVICE1833": "xj0NnJ+PGCG/Z/SYG/F2cFx+TTZRMXV0t5RrnAaMZjo",
22492+ "ed25519:ALICEDEVICE1833": "CUl0wL5Xho6RoHrmvIz05iuSLHAkLFHgCl+uTygRQlw"
22493+ },
22494+ "signatures": {
22495+ "@alice_1833:hs1": {
22496+ "ed25519:ALICEDEVICE1833": "GpUcrg6X4DyFF4ue4rPw7gv1+XD8VVSWtZ1Fp5KmieH65EEuDkkBvxNbZcvegRgqaePZugvsUeqe9nKoOo5iCQ"
22497+ }
22498+ },
22499+ "user_id": "@alice_1833:hs1",
22500+ "unsigned": {}
22501+ }
22502+ },
22503+ "@alice_1844:hs1": {
22504+ "ALICEDEVICE1844": {
22505+ "algorithms": [
22506+ "m.olm.v1.curve25519-aes-sha2",
22507+ "m.megolm.v1.aes-sha2"
22508+ ],
22509+ "device_id": "ALICEDEVICE1844",
22510+ "keys": {
22511+ "curve25519:ALICEDEVICE1844": "51CUUu1w6103nVXemDiTmjcrO61SqJ7eKTHns27MxU4",
22512+ "ed25519:ALICEDEVICE1844": "wWMr+zRkzuaZheXvHc7NMocrS8+E8COtPapZzrXzznM"
22513+ },
22514+ "signatures": {
22515+ "@alice_1844:hs1": {
22516+ "ed25519:ALICEDEVICE1844": "Ud1rVaAdErVLN6+zxtUbWWeyM7eStLP/PANXCR2RvcuDkfInv295GiaaympMcuH9p6hjtinduBNpw+EWiZUgBw"
22517+ }
22518+ },
22519+ "user_id": "@alice_1844:hs1",
22520+ "unsigned": {}
22521+ }
22522+ },
22523+ "@alice_1847:hs1": {
22524+ "ALICEDEVICE1847": {
22525+ "algorithms": [
22526+ "m.olm.v1.curve25519-aes-sha2",
22527+ "m.megolm.v1.aes-sha2"
22528+ ],
22529+ "device_id": "ALICEDEVICE1847",
22530+ "keys": {
22531+ "curve25519:ALICEDEVICE1847": "OjTuRimXgd6tEAsJg2wSlFyx/Z2gW4ShbOcTTVNOBGU",
22532+ "ed25519:ALICEDEVICE1847": "eTaQVzv0w0yMpUXGsrB+8FWcY9xtiUilT+nk4ctQjWE"
22533+ },
22534+ "signatures": {
22535+ "@alice_1847:hs1": {
22536+ "ed25519:ALICEDEVICE1847": "c1Eq6LMRCCub/24lySrpI4z7uuUxlsZSiAWqU0radtlEYfLvz30/CgL7F6YP7yZThophzU4NUxGQGqG2R20PDQ"
22537+ }
22538+ },
22539+ "user_id": "@alice_1847:hs1",
22540+ "unsigned": {}
22541+ }
22542+ },
22543+ "@alice_1854:hs1": {
22544+ "ALICEDEVICE1854": {
22545+ "algorithms": [
22546+ "m.olm.v1.curve25519-aes-sha2",
22547+ "m.megolm.v1.aes-sha2"
22548+ ],
22549+ "device_id": "ALICEDEVICE1854",
22550+ "keys": {
22551+ "curve25519:ALICEDEVICE1854": "wgo+D9yFh2xlGCrHLqihqJQsKUHFevf9BdqjbADMFic",
22552+ "ed25519:ALICEDEVICE1854": "0hXCauPGL15HS2MptJrxdHeL/k6Iebc7iXkBk38FflE"
22553+ },
22554+ "signatures": {
22555+ "@alice_1854:hs1": {
22556+ "ed25519:ALICEDEVICE1854": "BwsFUiIUja2B9gnsz9mf69Yr5FdChF442kCY8cKrQmLRuMEhYi+y698Zvd3EjO12z0AgsfPsfJ9FGpnqCWj0DA"
22557+ }
22558+ },
22559+ "user_id": "@alice_1854:hs1",
22560+ "unsigned": {}
22561+ }
22562+ },
22563+ "@alice_1863:hs1": {
22564+ "ALICEDEVICE1863": {
22565+ "algorithms": [
22566+ "m.olm.v1.curve25519-aes-sha2",
22567+ "m.megolm.v1.aes-sha2"
22568+ ],
22569+ "device_id": "ALICEDEVICE1863",
22570+ "keys": {
22571+ "curve25519:ALICEDEVICE1863": "kaY5hV5BkWWYcmc470pyfQ8Sax6P9saR++SU9el4JQ4",
22572+ "ed25519:ALICEDEVICE1863": "foVMrTgWHoF6TF+OMs6OFof5qCZ3LyFxR/FJQXEuK7A"
22573+ },
22574+ "signatures": {
22575+ "@alice_1863:hs1": {
22576+ "ed25519:ALICEDEVICE1863": "JE7sQ6l5sG9BDveC4syFMRgQGciOjvIc6SnrUp0HHzzPxGYgM+iC8ASzP6wdxqtogljosuv9YzQHFTPsq4upBA"
22577+ }
22578+ },
22579+ "user_id": "@alice_1863:hs1",
22580+ "unsigned": {}
22581+ }
22582+ },
22583+ "@alice_1864:hs1": {
22584+ "ALICEDEVICE1864": {
22585+ "algorithms": [
22586+ "m.olm.v1.curve25519-aes-sha2",
22587+ "m.megolm.v1.aes-sha2"
22588+ ],
22589+ "device_id": "ALICEDEVICE1864",
22590+ "keys": {
22591+ "curve25519:ALICEDEVICE1864": "mq7ABdryXhkPaEq1prGZj5O62cmMV+gH7InUdskZw1w",
22592+ "ed25519:ALICEDEVICE1864": "9rI+Urs+m4Cb956IX/TSHwzVRK0HSITD/ixI7aEmbes"
22593+ },
22594+ "signatures": {
22595+ "@alice_1864:hs1": {
22596+ "ed25519:ALICEDEVICE1864": "xSBbYpTu3Y3JESn7ZhL/xt1X3U6jg0WLzSOK9oJDO4vXMXj+gZg+p1gQGLC1GV+rm/J2tB7x/AZKudQF/zH3Bg"
22597+ }
22598+ },
22599+ "user_id": "@alice_1864:hs1",
22600+ "unsigned": {}
22601+ }
22602+ },
22603+ "@alice_1870:hs1": {
22604+ "ALICEDEVICE1870": {
22605+ "algorithms": [
22606+ "m.olm.v1.curve25519-aes-sha2",
22607+ "m.megolm.v1.aes-sha2"
22608+ ],
22609+ "device_id": "ALICEDEVICE1870",
22610+ "keys": {
22611+ "curve25519:ALICEDEVICE1870": "RSt703rB6auD8J3zPbZRSEXAFUCd7MkJJrHNhKDc0Wc",
22612+ "ed25519:ALICEDEVICE1870": "D1CdQVn5PIBLHTMeG+tHEJMGuFMv9nxpCFBx56vvgc0"
22613+ },
22614+ "signatures": {
22615+ "@alice_1870:hs1": {
22616+ "ed25519:ALICEDEVICE1870": "gOfi4eKx4obwm3A+f+BJwFe4Ol8/2S9IGfnxDm/vgjxxsUqkSVU9n7ilAhQFjPYTTS5xM8h+jItFio+0r7FbDQ"
22617+ }
22618+ },
22619+ "user_id": "@alice_1870:hs1",
22620+ "unsigned": {}
22621+ }
22622+ },
22623+ "@alice_187:hs1": {
22624+ "ALICEDEVICE187": {
22625+ "algorithms": [
22626+ "m.olm.v1.curve25519-aes-sha2",
22627+ "m.megolm.v1.aes-sha2"
22628+ ],
22629+ "device_id": "ALICEDEVICE187",
22630+ "keys": {
22631+ "curve25519:ALICEDEVICE187": "6l9DVZ5KCaIrHpunRNU5llBHIiBVZYoZJtMlXp2KZEs",
22632+ "ed25519:ALICEDEVICE187": "Gt3bOMYAZLX1VoxavB/J/legkOH1BWnS7WUOLQYmaP0"
22633+ },
22634+ "signatures": {
22635+ "@alice_187:hs1": {
22636+ "ed25519:ALICEDEVICE187": "rrRYYVa+SDXRNWocQ4cjzQqop+mLr/azFfFDnnJGfxnXhh/o9m1RcklEuNF41tK5zDez/fTiDByAqzk6FFiVAA"
22637+ }
22638+ },
22639+ "user_id": "@alice_187:hs1",
22640+ "unsigned": {}
22641+ }
22642+ },
22643+ "@alice_1882:hs1": {
22644+ "ALICEDEVICE1882": {
22645+ "algorithms": [
22646+ "m.olm.v1.curve25519-aes-sha2",
22647+ "m.megolm.v1.aes-sha2"
22648+ ],
22649+ "device_id": "ALICEDEVICE1882",
22650+ "keys": {
22651+ "curve25519:ALICEDEVICE1882": "nnAAQ4Igy8BlQ2QuUKavKwCDIIXOxuj75Rjm7VCVikg",
22652+ "ed25519:ALICEDEVICE1882": "Zc1wV8R2aCv7eRZbNyZK2dRYn1ZTErRFUtODM1sDQVI"
22653+ },
22654+ "signatures": {
22655+ "@alice_1882:hs1": {
22656+ "ed25519:ALICEDEVICE1882": "nEy1vm53+Xv/qn3wZP7NOWIfoVEPwRHTeW1HvZCvaGC3RgAJ7XVhx44C1EncHFiR4QMVvaLibKzqKWtVZ6EJAg"
22657+ }
22658+ },
22659+ "user_id": "@alice_1882:hs1",
22660+ "unsigned": {}
22661+ }
22662+ },
22663+ "@alice_1888:hs1": {
22664+ "ALICEDEVICE1888": {
22665+ "algorithms": [
22666+ "m.olm.v1.curve25519-aes-sha2",
22667+ "m.megolm.v1.aes-sha2"
22668+ ],
22669+ "device_id": "ALICEDEVICE1888",
22670+ "keys": {
22671+ "curve25519:ALICEDEVICE1888": "ou251bMl4RApPmelQZboxy3Jqb5xaFT9gnyMy6t+Wwo",
22672+ "ed25519:ALICEDEVICE1888": "PxOV64BeR97F1bNp1xZymaKY82coSNalyzw5CyusMeU"
22673+ },
22674+ "signatures": {
22675+ "@alice_1888:hs1": {
22676+ "ed25519:ALICEDEVICE1888": "dvKKPTeb+2ix3Sh76SyiwCITNAucJEjjdwRLuZ54qMbx/IF2N6Eo+WS8opqv6DsgDZWckVLaG3vCIoppQD1lDg"
22677+ }
22678+ },
22679+ "user_id": "@alice_1888:hs1",
22680+ "unsigned": {}
22681+ }
22682+ },
22683+ "@alice_1890:hs1": {
22684+ "ALICEDEVICE1890": {
22685+ "algorithms": [
22686+ "m.olm.v1.curve25519-aes-sha2",
22687+ "m.megolm.v1.aes-sha2"
22688+ ],
22689+ "device_id": "ALICEDEVICE1890",
22690+ "keys": {
22691+ "curve25519:ALICEDEVICE1890": "+zOsoDvcpaoSonF7HtwLljzrbkC11R8U04kylhYtE2Y",
22692+ "ed25519:ALICEDEVICE1890": "BWJF3l3IZfj7pcSor8DoQ9i7uG+6WahYFVJc8f+qyx4"
22693+ },
22694+ "signatures": {
22695+ "@alice_1890:hs1": {
22696+ "ed25519:ALICEDEVICE1890": "PZQOBkDcxUB2lbiy6qsItnmwehPyp/tNnQ54YH7hp1k2fX/yD5fxesmAampksUBIvz8NZj25Mpdta5b8RVRvBQ"
22697+ }
22698+ },
22699+ "user_id": "@alice_1890:hs1",
22700+ "unsigned": {}
22701+ }
22702+ },
22703+ "@alice_1898:hs1": {
22704+ "ALICEDEVICE1898": {
22705+ "algorithms": [
22706+ "m.olm.v1.curve25519-aes-sha2",
22707+ "m.megolm.v1.aes-sha2"
22708+ ],
22709+ "device_id": "ALICEDEVICE1898",
22710+ "keys": {
22711+ "curve25519:ALICEDEVICE1898": "s6rLeyjng7LRl693GRBl943IzOg3IZjG+UdBekORWlo",
22712+ "ed25519:ALICEDEVICE1898": "dva1rcm7VCrKiD+DgAelFaNJ3jW4MObqIc73oWwjzkI"
22713+ },
22714+ "signatures": {
22715+ "@alice_1898:hs1": {
22716+ "ed25519:ALICEDEVICE1898": "/mzsp8Gk44Bem69vQhjex/90wl4jquN6khYZu044FNlMBciXD4Ogt7E8g6WSadV2Y/r9o3UxL9Xk/hG6R+PQAw"
22717+ }
22718+ },
22719+ "user_id": "@alice_1898:hs1",
22720+ "unsigned": {}
22721+ }
22722+ },
22723+ "@alice_1899:hs1": {
22724+ "ALICEDEVICE1899": {
22725+ "algorithms": [
22726+ "m.olm.v1.curve25519-aes-sha2",
22727+ "m.megolm.v1.aes-sha2"
22728+ ],
22729+ "device_id": "ALICEDEVICE1899",
22730+ "keys": {
22731+ "curve25519:ALICEDEVICE1899": "wFlD2bvmZtnCB+jLVSm5ZuZI/rHfdzZdn0W/4McQ2F0",
22732+ "ed25519:ALICEDEVICE1899": "edBnF8WFufsWnd0G3M7WbIXcNjR+7tIo1Gw6DNMSGAY"
22733+ },
22734+ "signatures": {
22735+ "@alice_1899:hs1": {
22736+ "ed25519:ALICEDEVICE1899": "qgf8jW26fQkCAiEQXIzyzSUce/c+QV2EAT6BJBrKheQbuoqr2KrXpGVPy+8uxN4NpSLpKdlwSKKZRZaEYrebAw"
22737+ }
22738+ },
22739+ "user_id": "@alice_1899:hs1",
22740+ "unsigned": {}
22741+ }
22742+ },
22743+ "@alice_1909:hs1": {
22744+ "ALICEDEVICE1909": {
22745+ "algorithms": [
22746+ "m.olm.v1.curve25519-aes-sha2",
22747+ "m.megolm.v1.aes-sha2"
22748+ ],
22749+ "device_id": "ALICEDEVICE1909",
22750+ "keys": {
22751+ "curve25519:ALICEDEVICE1909": "2OvK4wAkRUEUG268Ujel7nHMUIBIy8J5uK7tBZaaAQY",
22752+ "ed25519:ALICEDEVICE1909": "Ep1Bpc3rr0OJTnKJj8ae4t17jFDBmmwO7KhdWQMdqeU"
22753+ },
22754+ "signatures": {
22755+ "@alice_1909:hs1": {
22756+ "ed25519:ALICEDEVICE1909": "Fq60wGFnmAweOeEBjEpC9XrmnhXbjZpCRuKWt1LlvnQKI7cuLOq8IE4SjG82rwY/3ZcNL3PkEvC32O55FKFnAg"
22757+ }
22758+ },
22759+ "user_id": "@alice_1909:hs1",
22760+ "unsigned": {}
22761+ }
22762+ },
22763+ "@alice_190:hs1": {
22764+ "ALICEDEVICE190": {
22765+ "algorithms": [
22766+ "m.olm.v1.curve25519-aes-sha2",
22767+ "m.megolm.v1.aes-sha2"
22768+ ],
22769+ "device_id": "ALICEDEVICE190",
22770+ "keys": {
22771+ "curve25519:ALICEDEVICE190": "/py4T7eItovfIahxKQ2djbPqMy/sXcco404bVVfB/z0",
22772+ "ed25519:ALICEDEVICE190": "W9T4cirbIRtb4rCxuXLt0s9omTgaNXg/PoY6E4SBG40"
22773+ },
22774+ "signatures": {
22775+ "@alice_190:hs1": {
22776+ "ed25519:ALICEDEVICE190": "3dElcJgwOoGCgMbtZoHiYV2Gxlhll2PSygU4ob/YNB4hzVsZ2uQEF4Ykvwd1pPuoJ03sHqeD9rliwVOBJrREAA"
22777+ }
22778+ },
22779+ "user_id": "@alice_190:hs1",
22780+ "unsigned": {}
22781+ }
22782+ },
22783+ "@alice_1913:hs1": {
22784+ "ALICEDEVICE1913": {
22785+ "algorithms": [
22786+ "m.olm.v1.curve25519-aes-sha2",
22787+ "m.megolm.v1.aes-sha2"
22788+ ],
22789+ "device_id": "ALICEDEVICE1913",
22790+ "keys": {
22791+ "curve25519:ALICEDEVICE1913": "qZV60BhGk8QeBNmmhDMXAXoPUI5EPROVMrVPt5GnrSk",
22792+ "ed25519:ALICEDEVICE1913": "lpOPerMNPNki2xbclfDas7tk+l1lHZ+nfDwwY7djFxc"
22793+ },
22794+ "signatures": {
22795+ "@alice_1913:hs1": {
22796+ "ed25519:ALICEDEVICE1913": "oLzFrjRNXpr+aJUZtm849cfsXTUlHz/X7keVWzSjFq3HGXEpXflgF3DEt2fHtzNv660L/rbdvCS303a0Mr8fDw"
22797+ }
22798+ },
22799+ "user_id": "@alice_1913:hs1",
22800+ "unsigned": {}
22801+ }
22802+ },
22803+ "@alice_1924:hs1": {
22804+ "ALICEDEVICE1924": {
22805+ "algorithms": [
22806+ "m.olm.v1.curve25519-aes-sha2",
22807+ "m.megolm.v1.aes-sha2"
22808+ ],
22809+ "device_id": "ALICEDEVICE1924",
22810+ "keys": {
22811+ "curve25519:ALICEDEVICE1924": "DaHYR/DvM8P/djn5691v6rHpgI2B4hAcA8/4BwcKkyQ",
22812+ "ed25519:ALICEDEVICE1924": "JaHS3L45gvWRJCANNI4HR5eZBbvFZfP+Kl2nCzjFCWE"
22813+ },
22814+ "signatures": {
22815+ "@alice_1924:hs1": {
22816+ "ed25519:ALICEDEVICE1924": "sNHSrhz3B1yqkvy93DCcYaLnDls0oHOLZJx+GdT2X1GeI0MSlpU3YDEhqac6+rKqhNC6gJfHfxZoKtyjzOgqAA"
22817+ }
22818+ },
22819+ "user_id": "@alice_1924:hs1",
22820+ "unsigned": {}
22821+ }
22822+ },
22823+ "@alice_1935:hs1": {
22824+ "ALICEDEVICE1935": {
22825+ "algorithms": [
22826+ "m.olm.v1.curve25519-aes-sha2",
22827+ "m.megolm.v1.aes-sha2"
22828+ ],
22829+ "device_id": "ALICEDEVICE1935",
22830+ "keys": {
22831+ "curve25519:ALICEDEVICE1935": "pw+HmCHLNL1QOz5B69VRx908vSRblRgd1/un8E3aBhk",
22832+ "ed25519:ALICEDEVICE1935": "nOcl3M9gf/ykZ4OzLCdvUIAi3uc0mG75TBJXfUF7WcA"
22833+ },
22834+ "signatures": {
22835+ "@alice_1935:hs1": {
22836+ "ed25519:ALICEDEVICE1935": "c/pjHnCjevmdQmg8xkTyfBJ+1E4ko0a6nd8wh8XqOKgvOvXVsjb/Ug+QUmiYBn2NlS8NrSWJE7ymeJrWj2cEDg"
22837+ }
22838+ },
22839+ "user_id": "@alice_1935:hs1",
22840+ "unsigned": {}
22841+ }
22842+ },
22843+ "@alice_1937:hs1": {
22844+ "ALICEDEVICE1937": {
22845+ "algorithms": [
22846+ "m.olm.v1.curve25519-aes-sha2",
22847+ "m.megolm.v1.aes-sha2"
22848+ ],
22849+ "device_id": "ALICEDEVICE1937",
22850+ "keys": {
22851+ "curve25519:ALICEDEVICE1937": "QOEVrk96cGNjJeOuLUOxyOl2LVLGEEHiR2IlCgfN8n4",
22852+ "ed25519:ALICEDEVICE1937": "qH0SPXISDWwjeH8tajTt+fize11s0CSZj3cZeiJpR0A"
22853+ },
22854+ "signatures": {
22855+ "@alice_1937:hs1": {
22856+ "ed25519:ALICEDEVICE1937": "TGay7r1pLMDOBDK7XR/pZZEqMYClK03P2On0wQ+F6QjScSDEQQjOPCbIM3yonJilu6ab2y/SK9NrHUXdfA6oDg"
22857+ }
22858+ },
22859+ "user_id": "@alice_1937:hs1",
22860+ "unsigned": {}
22861+ }
22862+ },
22863+ "@alice_1939:hs1": {
22864+ "ALICEDEVICE1939": {
22865+ "algorithms": [
22866+ "m.olm.v1.curve25519-aes-sha2",
22867+ "m.megolm.v1.aes-sha2"
22868+ ],
22869+ "device_id": "ALICEDEVICE1939",
22870+ "keys": {
22871+ "curve25519:ALICEDEVICE1939": "3nUwzLMSCvTxtk52DLWSuBWLx7X5LV2VImUPhtaufFc",
22872+ "ed25519:ALICEDEVICE1939": "NYnDNdhoDNBpZJNnrQNv5EFfaOqvapAXEaHLQWqk4rM"
22873+ },
22874+ "signatures": {
22875+ "@alice_1939:hs1": {
22876+ "ed25519:ALICEDEVICE1939": "DOfTinD+v9+A4Kxo4vV3OR5rbdRJbMpBO+MoGSRLTs51LSIwv5jESo99EbHFWEmo5vvcoeFGFN0xdtzoZxHDCQ"
22877+ }
22878+ },
22879+ "user_id": "@alice_1939:hs1",
22880+ "unsigned": {}
22881+ }
22882+ },
22883+ "@alice_1949:hs1": {
22884+ "ALICEDEVICE1949": {
22885+ "algorithms": [
22886+ "m.olm.v1.curve25519-aes-sha2",
22887+ "m.megolm.v1.aes-sha2"
22888+ ],
22889+ "device_id": "ALICEDEVICE1949",
22890+ "keys": {
22891+ "curve25519:ALICEDEVICE1949": "9bZyMVK6xwH3t0xnfT7rNs96jW7xebpz7QNluhfacEM",
22892+ "ed25519:ALICEDEVICE1949": "56GjOwKp2EFi41f4AxU83TZSclTy9ocX+g8ZzJiBZ7o"
22893+ },
22894+ "signatures": {
22895+ "@alice_1949:hs1": {
22896+ "ed25519:ALICEDEVICE1949": "7UGvhyrKH6zLsM9fO2UGtdE6kWFE4V3TCFUwRjMwGj/mHY68ZDjmF1eFSYSHJV6tSEnN6rc6v4kRYOxWU/PTBg"
22897+ }
22898+ },
22899+ "user_id": "@alice_1949:hs1",
22900+ "unsigned": {}
22901+ }
22902+ },
22903+ "@alice_1957:hs1": {
22904+ "ALICEDEVICE1957": {
22905+ "algorithms": [
22906+ "m.olm.v1.curve25519-aes-sha2",
22907+ "m.megolm.v1.aes-sha2"
22908+ ],
22909+ "device_id": "ALICEDEVICE1957",
22910+ "keys": {
22911+ "curve25519:ALICEDEVICE1957": "97dzThXer6YzePlauCs8SvplK7Uu2YTErg3WDhnfcgo",
22912+ "ed25519:ALICEDEVICE1957": "JM7fHK0nOR63T0+YnZx8vScu395kOgFuOV4gkxuQwNo"
22913+ },
22914+ "signatures": {
22915+ "@alice_1957:hs1": {
22916+ "ed25519:ALICEDEVICE1957": "utKiG/oWn0LSbXkYgsj7kdG8NocQcbsbZis3pa4wMijtT25agGsY+b0A1GnnxTPtssvx+D6bgzChOOVXhlugCQ"
22917+ }
22918+ },
22919+ "user_id": "@alice_1957:hs1",
22920+ "unsigned": {}
22921+ }
22922+ },
22923+ "@alice_1958:hs1": {
22924+ "ALICEDEVICE1958": {
22925+ "algorithms": [
22926+ "m.olm.v1.curve25519-aes-sha2",
22927+ "m.megolm.v1.aes-sha2"
22928+ ],
22929+ "device_id": "ALICEDEVICE1958",
22930+ "keys": {
22931+ "curve25519:ALICEDEVICE1958": "5bWKeg73SgEdb8efgTVF4c/hD+zB9CZkSkaBm69UwR4",
22932+ "ed25519:ALICEDEVICE1958": "u+3MZhDiltssPXdiHL372ZIE860+kqrZTFvJzRQq6ok"
22933+ },
22934+ "signatures": {
22935+ "@alice_1958:hs1": {
22936+ "ed25519:ALICEDEVICE1958": "VzZkkwd6BSKxoOP3SlTylS6e9Uut/8mPfcC1Xdl8xyxO1E2pKHlzJ18GS5neblhwz0CvbVLY28PwHUu3TQXCDA"
22937+ }
22938+ },
22939+ "user_id": "@alice_1958:hs1",
22940+ "unsigned": {}
22941+ }
22942+ },
22943+ "@alice_1973:hs1": {
22944+ "ALICEDEVICE1973": {
22945+ "algorithms": [
22946+ "m.olm.v1.curve25519-aes-sha2",
22947+ "m.megolm.v1.aes-sha2"
22948+ ],
22949+ "device_id": "ALICEDEVICE1973",
22950+ "keys": {
22951+ "curve25519:ALICEDEVICE1973": "/h30ZgRJFRKtoOI6dRwSbm2zQ4QgoiY6pgcz3vn7tnw",
22952+ "ed25519:ALICEDEVICE1973": "D8YEC3LKK054sfN2t1PUNd5VjsfoZ4YB7lfDw1MF7NE"
22953+ },
22954+ "signatures": {
22955+ "@alice_1973:hs1": {
22956+ "ed25519:ALICEDEVICE1973": "R++A5oU47sa7S9XDdv9xZea+KN7b48+wqRXxdLg6fdfNsNtdKJNWR1EMn9QH0HYAojyiKdITg+lGYkqGWu8MBg"
22957+ }
22958+ },
22959+ "user_id": "@alice_1973:hs1",
22960+ "unsigned": {}
22961+ }
22962+ },
22963+ "@alice_1979:hs1": {
22964+ "ALICEDEVICE1979": {
22965+ "algorithms": [
22966+ "m.olm.v1.curve25519-aes-sha2",
22967+ "m.megolm.v1.aes-sha2"
22968+ ],
22969+ "device_id": "ALICEDEVICE1979",
22970+ "keys": {
22971+ "curve25519:ALICEDEVICE1979": "7yLH5wNWNX0i//ddGZ0c1Yvi2UmMqshxNLUPQX+Cd0s",
22972+ "ed25519:ALICEDEVICE1979": "gqNLODDhugAmv30+NQlR6Oqkah8bd0PPcShfFCPPp2s"
22973+ },
22974+ "signatures": {
22975+ "@alice_1979:hs1": {
22976+ "ed25519:ALICEDEVICE1979": "Qgxf5q5pjc4BfQecvOFiwBvsm+TXfF/tPbGHjn9RdjtDidSqFWJOa63yVGbo7+K9AIzS9aETly7N8OTBgbgXCQ"
22977+ }
22978+ },
22979+ "user_id": "@alice_1979:hs1",
22980+ "unsigned": {}
22981+ }
22982+ },
22983+ "@alice_1983:hs1": {
22984+ "ALICEDEVICE1983": {
22985+ "algorithms": [
22986+ "m.olm.v1.curve25519-aes-sha2",
22987+ "m.megolm.v1.aes-sha2"
22988+ ],
22989+ "device_id": "ALICEDEVICE1983",
22990+ "keys": {
22991+ "curve25519:ALICEDEVICE1983": "NaUXpIMefJexsfcIbWY3wiaj0Rb7kqB9E8IMw45ybjI",
22992+ "ed25519:ALICEDEVICE1983": "pCu29sXFWWLEsTIZyLFsw3ufw14JD3QA6FFEFdxWnng"
22993+ },
22994+ "signatures": {
22995+ "@alice_1983:hs1": {
22996+ "ed25519:ALICEDEVICE1983": "906u4qc3sXU/QNP/i3LJSh9q2+iEX3xDUpJEkAA+mKEFMav++ZJIQCorARvDX82LB7FtQDSO5QRPlRWYMLHXBw"
22997+ }
22998+ },
22999+ "user_id": "@alice_1983:hs1",
23000+ "unsigned": {}
23001+ }
23002+ },
23003+ "@alice_1986:hs1": {
23004+ "ALICEDEVICE1986": {
23005+ "algorithms": [
23006+ "m.olm.v1.curve25519-aes-sha2",
23007+ "m.megolm.v1.aes-sha2"
23008+ ],
23009+ "device_id": "ALICEDEVICE1986",
23010+ "keys": {
23011+ "curve25519:ALICEDEVICE1986": "9MOhBZUkP8rohdrI6KKpFAOKrroT5ranKFmpLVnAiV8",
23012+ "ed25519:ALICEDEVICE1986": "qGxYkHb8BbHQfwDQHaPjxg69WLlRmE0izvZl7x/Ca0M"
23013+ },
23014+ "signatures": {
23015+ "@alice_1986:hs1": {
23016+ "ed25519:ALICEDEVICE1986": "1N8XD3lWFC8d9H3m3boGLLoUV3SoHkRX93zUPfAoQIkuOMB+sPteHWL0kFCfEKC37RCRnrCuxCElj4XPOXe4Dg"
23017+ }
23018+ },
23019+ "user_id": "@alice_1986:hs1",
23020+ "unsigned": {}
23021+ }
23022+ },
23023+ "@alice_198:hs1": {
23024+ "ALICEDEVICE198": {
23025+ "algorithms": [
23026+ "m.olm.v1.curve25519-aes-sha2",
23027+ "m.megolm.v1.aes-sha2"
23028+ ],
23029+ "device_id": "ALICEDEVICE198",
23030+ "keys": {
23031+ "curve25519:ALICEDEVICE198": "mRVqoZsjO85Yp6yWAlkQkfQ8fAYvr9lS7TAZVgJ1aV8",
23032+ "ed25519:ALICEDEVICE198": "TtRBkKOy1m/S7u246Gd/LkYbkGSsGmzgW/PhwlkF4D8"
23033+ },
23034+ "signatures": {
23035+ "@alice_198:hs1": {
23036+ "ed25519:ALICEDEVICE198": "Imv8A7eIi8/dWhBSQR8o3l1od5WVoEXUahE9BTKvONJOLEE9j25KODQKwi6TXf4IUPC3TRxLH9weo1bUAzvdBw"
23037+ }
23038+ },
23039+ "user_id": "@alice_198:hs1",
23040+ "unsigned": {}
23041+ }
23042+ },
23043+ "@alice_1:hs1": {
23044+ "ALICEDEVICE1": {
23045+ "algorithms": [
23046+ "m.olm.v1.curve25519-aes-sha2",
23047+ "m.megolm.v1.aes-sha2"
23048+ ],
23049+ "device_id": "ALICEDEVICE1",
23050+ "keys": {
23051+ "curve25519:ALICEDEVICE1": "E1Ns85gWkGgNZEJKf66NvTuafTZum2t6S8bKAXDk1Cc",
23052+ "ed25519:ALICEDEVICE1": "lZ4Xfa/7+VFZUY6yVQ1QxrTE5dNAnHppVxWIqTNf8vE"
23053+ },
23054+ "signatures": {
23055+ "@alice_1:hs1": {
23056+ "ed25519:ALICEDEVICE1": "mZu/aHeSfnHTYVvrWkk/M0DYfu2HHTPIPcKFr6eTkgWGD28qqI3qWq8XfNzM6azxuzpI+doGghNn2/jwBeXoDg"
23057+ }
23058+ },
23059+ "user_id": "@alice_1:hs1",
23060+ "unsigned": {}
23061+ }
23062+ },
23063+ "@alice_209:hs1": {
23064+ "ALICEDEVICE209": {
23065+ "algorithms": [
23066+ "m.olm.v1.curve25519-aes-sha2",
23067+ "m.megolm.v1.aes-sha2"
23068+ ],
23069+ "device_id": "ALICEDEVICE209",
23070+ "keys": {
23071+ "curve25519:ALICEDEVICE209": "DlR1fPZdhAMdUKZA5iPxzma8qTENFFGW49OIANRdCnc",
23072+ "ed25519:ALICEDEVICE209": "qOAaslnzCEEiW+OA0U4QVp5Olefn7nxkkddBpsPr8ec"
23073+ },
23074+ "signatures": {
23075+ "@alice_209:hs1": {
23076+ "ed25519:ALICEDEVICE209": "hsMUhPsyhKq69sGnNL7PeiwYXwqOrjo4Ahf1X9OxcdIKwbuMFF7QlUX/KAvhvSMT2L+Ma6RV0YNMBOeJxNGwDw"
23077+ }
23078+ },
23079+ "user_id": "@alice_209:hs1",
23080+ "unsigned": {}
23081+ }
23082+ },
23083+ "@alice_21:hs1": {
23084+ "ALICEDEVICE21": {
23085+ "algorithms": [
23086+ "m.olm.v1.curve25519-aes-sha2",
23087+ "m.megolm.v1.aes-sha2"
23088+ ],
23089+ "device_id": "ALICEDEVICE21",
23090+ "keys": {
23091+ "curve25519:ALICEDEVICE21": "EJ6qv81itSE1nLQHbnlHPfCfBa2vpTOw7FyaVLShxFs",
23092+ "ed25519:ALICEDEVICE21": "TWACbKRnap5VR0nBykTdnAzTnG/QQsnqq17dgQoVTxo"
23093+ },
23094+ "signatures": {
23095+ "@alice_21:hs1": {
23096+ "ed25519:ALICEDEVICE21": "meGBoJ+bBfl0/fGrsNObu0hJUwy4/vFYolbbh26+BRvPUPVuF1lrRpelmGXdLh0Z4KiTgf3ChFJ6QzJm/X6BBA"
23097+ }
23098+ },
23099+ "user_id": "@alice_21:hs1",
23100+ "unsigned": {}
23101+ }
23102+ },
23103+ "@alice_227:hs1": {
23104+ "ALICEDEVICE227": {
23105+ "algorithms": [
23106+ "m.olm.v1.curve25519-aes-sha2",
23107+ "m.megolm.v1.aes-sha2"
23108+ ],
23109+ "device_id": "ALICEDEVICE227",
23110+ "keys": {
23111+ "curve25519:ALICEDEVICE227": "xkc3brQgxv7RCozZfXuy8sY1Lzgx5ce3VCinQcf3wBQ",
23112+ "ed25519:ALICEDEVICE227": "ZG5dqtDukYqaJE5uAflhYfi1Apjio4slaygbh+vkWus"
23113+ },
23114+ "signatures": {
23115+ "@alice_227:hs1": {
23116+ "ed25519:ALICEDEVICE227": "rbN81GGD4tzfK8jYCexSF1/0gKSWdHF5janEaAbmV0m4CLNdkp/9SvaPDUvtmUSb9a4uWjXIb5ogohzo2IxNDg"
23117+ }
23118+ },
23119+ "user_id": "@alice_227:hs1",
23120+ "unsigned": {}
23121+ }
23122+ },
23123+ "@alice_22:hs1": {
23124+ "ALICEDEVICE22": {
23125+ "algorithms": [
23126+ "m.olm.v1.curve25519-aes-sha2",
23127+ "m.megolm.v1.aes-sha2"
23128+ ],
23129+ "device_id": "ALICEDEVICE22",
23130+ "keys": {
23131+ "curve25519:ALICEDEVICE22": "Sm+eDQYmztnDyTP8Hpuxgd6MYldiowP27T4JAuhN730",
23132+ "ed25519:ALICEDEVICE22": "vOhcC9jKAUq9M/VhZ70NpLJQ74MbGZNtFonoIncJsnM"
23133+ },
23134+ "signatures": {
23135+ "@alice_22:hs1": {
23136+ "ed25519:ALICEDEVICE22": "/jcDvntGS1fCW9M7KuGHaQEI3lyUIOVuleD0gPA3fXc/BrpqTadOBHPmB6RGPNsAMLnouQjCCF1hEHIBC4p0Cg"
23137+ }
23138+ },
23139+ "user_id": "@alice_22:hs1",
23140+ "unsigned": {}
23141+ }
23142+ },
23143+ "@alice_231:hs1": {
23144+ "ALICEDEVICE231": {
23145+ "algorithms": [
23146+ "m.olm.v1.curve25519-aes-sha2",
23147+ "m.megolm.v1.aes-sha2"
23148+ ],
23149+ "device_id": "ALICEDEVICE231",
23150+ "keys": {
23151+ "curve25519:ALICEDEVICE231": "JcpFZXAEu3inKv/p3KQdKaiRGuxwVl8qodV6F2M7PCY",
23152+ "ed25519:ALICEDEVICE231": "Y0CWFL397Teh36E4/QNIO7bOlhF3FxB9AmnfCUxXOiA"
23153+ },
23154+ "signatures": {
23155+ "@alice_231:hs1": {
23156+ "ed25519:ALICEDEVICE231": "nH+hVT6x7+WqyTfYe7vXtJcIkzt8ExCykqdw7PcYwrYsFXhC/pZSI+4bqQScJptgOtF2L74/4/tjgO2HmWbuBA"
23157+ }
23158+ },
23159+ "user_id": "@alice_231:hs1",
23160+ "unsigned": {}
23161+ }
23162+ },
23163+ "@alice_232:hs1": {
23164+ "ALICEDEVICE232": {
23165+ "algorithms": [
23166+ "m.olm.v1.curve25519-aes-sha2",
23167+ "m.megolm.v1.aes-sha2"
23168+ ],
23169+ "device_id": "ALICEDEVICE232",
23170+ "keys": {
23171+ "curve25519:ALICEDEVICE232": "ez4BwXmq/yDUMunjdmzAPH+7m311gUdxTSlXMquf/X0",
23172+ "ed25519:ALICEDEVICE232": "QegpELSMTBbJHOwo9HpxEpsZjPiaAWyWmesZKaruwFY"
23173+ },
23174+ "signatures": {
23175+ "@alice_232:hs1": {
23176+ "ed25519:ALICEDEVICE232": "ujQ6WlAh6mtVmwwMETokIppnWRpHOAB4hw7wBk6H6O3vkuTOB5lGML+Y4CyiCql03ADjpv9t8YleIdJptjgNAA"
23177+ }
23178+ },
23179+ "user_id": "@alice_232:hs1",
23180+ "unsigned": {}
23181+ }
23182+ },
23183+ "@alice_233:hs1": {
23184+ "ALICEDEVICE233": {
23185+ "algorithms": [
23186+ "m.olm.v1.curve25519-aes-sha2",
23187+ "m.megolm.v1.aes-sha2"
23188+ ],
23189+ "device_id": "ALICEDEVICE233",
23190+ "keys": {
23191+ "curve25519:ALICEDEVICE233": "6ixHSePMOwkX/5BbDosVGX9IUxsJtHtsgixVVy3Xn0E",
23192+ "ed25519:ALICEDEVICE233": "i32COmzQdd8jwUEr8uIk/0wgFQ4lnwN0yUlcu5QoL6c"
23193+ },
23194+ "signatures": {
23195+ "@alice_233:hs1": {
23196+ "ed25519:ALICEDEVICE233": "3hRBIa7I9Qpq6cGftGO5HT0Z9458T9lASAWszq15vZtZrX+m0vuAjhmuCooqNcZ7VYP8V9MLKl+GeJi+5jJTAw"
23197+ }
23198+ },
23199+ "user_id": "@alice_233:hs1",
23200+ "unsigned": {}
23201+ }
23202+ },
23203+ "@alice_236:hs1": {
23204+ "ALICEDEVICE236": {
23205+ "algorithms": [
23206+ "m.olm.v1.curve25519-aes-sha2",
23207+ "m.megolm.v1.aes-sha2"
23208+ ],
23209+ "device_id": "ALICEDEVICE236",
23210+ "keys": {
23211+ "curve25519:ALICEDEVICE236": "c8OT7mZPCbSbh4o59NzdeR4yLaJDNaZ+WTpYHjDG4Vc",
23212+ "ed25519:ALICEDEVICE236": "Pzf26dPCF2tjp05s18ZtpIEPh6+tCNDOBmMhsbLoUNE"
23213+ },
23214+ "signatures": {
23215+ "@alice_236:hs1": {
23216+ "ed25519:ALICEDEVICE236": "/XLQGABJsiNwzYLZ1/81MyEY721GVbp8L6F0sjC2teGeH+zCcV1WyNqTv+6YwkveDy34H3iLYTh8PP0tu682BA"
23217+ }
23218+ },
23219+ "user_id": "@alice_236:hs1",
23220+ "unsigned": {}
23221+ }
23222+ },
23223+ "@alice_237:hs1": {
23224+ "ALICEDEVICE237": {
23225+ "algorithms": [
23226+ "m.olm.v1.curve25519-aes-sha2",
23227+ "m.megolm.v1.aes-sha2"
23228+ ],
23229+ "device_id": "ALICEDEVICE237",
23230+ "keys": {
23231+ "curve25519:ALICEDEVICE237": "rW88dGtc1Cwy9EyihEeUQrJhw8txVNfHwWJgp66MgXU",
23232+ "ed25519:ALICEDEVICE237": "NMdjov2Mw2RUGsWv3rF00bV6q3zwG7s/M0NhFEtux1E"
23233+ },
23234+ "signatures": {
23235+ "@alice_237:hs1": {
23236+ "ed25519:ALICEDEVICE237": "mWDeFY4KeuJtG1gvI4TbGPERsgG/DdOTkDuiyHl5hBCD5Ab86Mn+iCnY/dimXKGJhm0D5pmOojgLlMFzkl+YDQ"
23237+ }
23238+ },
23239+ "user_id": "@alice_237:hs1",
23240+ "unsigned": {}
23241+ }
23242+ },
23243+ "@alice_263:hs1": {
23244+ "ALICEDEVICE263": {
23245+ "algorithms": [
23246+ "m.olm.v1.curve25519-aes-sha2",
23247+ "m.megolm.v1.aes-sha2"
23248+ ],
23249+ "device_id": "ALICEDEVICE263",
23250+ "keys": {
23251+ "curve25519:ALICEDEVICE263": "y5sllBHBHkFfYFoFkDQZEfq6WPBbSKml6Z7nDVUxVg8",
23252+ "ed25519:ALICEDEVICE263": "TU1M23ROO1QVZcgsi8OzBuQybYou4xUoHbPvMF57EWg"
23253+ },
23254+ "signatures": {
23255+ "@alice_263:hs1": {
23256+ "ed25519:ALICEDEVICE263": "jh9DElxVs+oAsEMy6QxG1fCA1vP5FtxddrFWSgNX3h34hGBqygaR13gcVP5hhN9PorKoETLpZ8djlW5Gg+nyBA"
23257+ }
23258+ },
23259+ "user_id": "@alice_263:hs1",
23260+ "unsigned": {}
23261+ }
23262+ },
23263+ "@alice_269:hs1": {
23264+ "ALICEDEVICE269": {
23265+ "algorithms": [
23266+ "m.olm.v1.curve25519-aes-sha2",
23267+ "m.megolm.v1.aes-sha2"
23268+ ],
23269+ "device_id": "ALICEDEVICE269",
23270+ "keys": {
23271+ "curve25519:ALICEDEVICE269": "ugWpURKryx4vMbbsJlHOkINJ5LSN/GSotwK2ww3Xkl8",
23272+ "ed25519:ALICEDEVICE269": "e5oXjGTYYSnzKD4/rVinLX7OnRMXYtOznr35puHm8bY"
23273+ },
23274+ "signatures": {
23275+ "@alice_269:hs1": {
23276+ "ed25519:ALICEDEVICE269": "8dvo87D2Be3aoqq4iGRDj2xOP6IBt1strUwM5n9jA91jwhgiK/OkD4Zaibg7PbKPJUWWTFeF+Vo5fGOHdpYwDg"
23277+ }
23278+ },
23279+ "user_id": "@alice_269:hs1",
23280+ "unsigned": {}
23281+ }
23282+ },
23283+ "@alice_280:hs1": {
23284+ "ALICEDEVICE280": {
23285+ "algorithms": [
23286+ "m.olm.v1.curve25519-aes-sha2",
23287+ "m.megolm.v1.aes-sha2"
23288+ ],
23289+ "device_id": "ALICEDEVICE280",
23290+ "keys": {
23291+ "curve25519:ALICEDEVICE280": "SNIfXZF3s0JzK2T570zeuLlFaxp2wW3nIByORA4fTno",
23292+ "ed25519:ALICEDEVICE280": "BYuPyFE/4nAqRJHsIQALh6RelXo9pUPH5e7n0lGE2sg"
23293+ },
23294+ "signatures": {
23295+ "@alice_280:hs1": {
23296+ "ed25519:ALICEDEVICE280": "XUr0iivmv8wDJVJykBUIavQ0uc6ensj4ZPZDW8+SoJesgF2IbRr3giC5EK3HrAAJTJBEnn1CYf40F7duOIfCCw"
23297+ }
23298+ },
23299+ "user_id": "@alice_280:hs1",
23300+ "unsigned": {}
23301+ }
23302+ },
23303+ "@alice_290:hs1": {
23304+ "ALICEDEVICE290": {
23305+ "algorithms": [
23306+ "m.olm.v1.curve25519-aes-sha2",
23307+ "m.megolm.v1.aes-sha2"
23308+ ],
23309+ "device_id": "ALICEDEVICE290",
23310+ "keys": {
23311+ "curve25519:ALICEDEVICE290": "2Qk7C18CQc3veNyNwQA6og9vF7fA9rC7BlfggvGJrWg",
23312+ "ed25519:ALICEDEVICE290": "3vyfqSr6TiJBX3oAicpDrV35c6Et5eH4PZ6BSK2oUTE"
23313+ },
23314+ "signatures": {
23315+ "@alice_290:hs1": {
23316+ "ed25519:ALICEDEVICE290": "TVbQfxSqQLyd2AUQGb3Crcz+7Gna642LbWMwduYb1CN/pcjPURhkM6s9V7Qn7oNz1IhXYS9dOy8csyBD2bcGBw"
23317+ }
23318+ },
23319+ "user_id": "@alice_290:hs1",
23320+ "unsigned": {}
23321+ }
23322+ },
23323+ "@alice_306:hs1": {
23324+ "ALICEDEVICE306": {
23325+ "algorithms": [
23326+ "m.olm.v1.curve25519-aes-sha2",
23327+ "m.megolm.v1.aes-sha2"
23328+ ],
23329+ "device_id": "ALICEDEVICE306",
23330+ "keys": {
23331+ "curve25519:ALICEDEVICE306": "HQ80l4oFC8SjYusdiUY0RC7L6C/tkX7wT1b8n6bSi3c",
23332+ "ed25519:ALICEDEVICE306": "geGlmHrkF2F/2fFVLTWuLKNnxXFHtXZmBFtu9jNL2mY"
23333+ },
23334+ "signatures": {
23335+ "@alice_306:hs1": {
23336+ "ed25519:ALICEDEVICE306": "egtBfSSc51bNEinkRE16gejTQOGPi3VKISyOkNJMWmqEVLQwoaxtOzvgWtM/9i/9zbJjRey48QSEloOLU7K5Cw"
23337+ }
23338+ },
23339+ "user_id": "@alice_306:hs1",
23340+ "unsigned": {}
23341+ }
23342+ },
23343+ "@alice_309:hs1": {
23344+ "ALICEDEVICE309": {
23345+ "algorithms": [
23346+ "m.olm.v1.curve25519-aes-sha2",
23347+ "m.megolm.v1.aes-sha2"
23348+ ],
23349+ "device_id": "ALICEDEVICE309",
23350+ "keys": {
23351+ "curve25519:ALICEDEVICE309": "qmtorkFj5Q/rj5FgOSTdBVmMbmCdiIcsuKVdbdER6QU",
23352+ "ed25519:ALICEDEVICE309": "OqugxYGIVkXC/s2/yZscGx/MFY69sM5DQnHjtSvMkcc"
23353+ },
23354+ "signatures": {
23355+ "@alice_309:hs1": {
23356+ "ed25519:ALICEDEVICE309": "5FfD4JXZgzvrUQBkSvgE7Y5qtFrkYErR1UJ3rV2vFj5kkrIFWyshC2zhMpGnbKqxFTKgOoGZ0mK4/QLzJJMMAQ"
23357+ }
23358+ },
23359+ "user_id": "@alice_309:hs1",
23360+ "unsigned": {}
23361+ }
23362+ },
23363+ "@alice_312:hs1": {
23364+ "ALICEDEVICE312": {
23365+ "algorithms": [
23366+ "m.olm.v1.curve25519-aes-sha2",
23367+ "m.megolm.v1.aes-sha2"
23368+ ],
23369+ "device_id": "ALICEDEVICE312",
23370+ "keys": {
23371+ "curve25519:ALICEDEVICE312": "qhgcqELXLgj7/Ouno0R2dPCnr8CvezpuLhbBkA4SpRw",
23372+ "ed25519:ALICEDEVICE312": "MhVf4fPXQ+BdPskyUvEumka7giNqdOOsUFMpIn0V+2A"
23373+ },
23374+ "signatures": {
23375+ "@alice_312:hs1": {
23376+ "ed25519:ALICEDEVICE312": "Brq9cyJx1iZ8TX1tgNopj+0E3mAK4T9j9EvFvQgp37T+qJ38acgVUcgHhfU+65eneVfGJfbbPDUgRxVkg9h8Dg"
23377+ }
23378+ },
23379+ "user_id": "@alice_312:hs1",
23380+ "unsigned": {}
23381+ }
23382+ },
23383+ "@alice_32:hs1": {
23384+ "ALICEDEVICE32": {
23385+ "algorithms": [
23386+ "m.olm.v1.curve25519-aes-sha2",
23387+ "m.megolm.v1.aes-sha2"
23388+ ],
23389+ "device_id": "ALICEDEVICE32",
23390+ "keys": {
23391+ "curve25519:ALICEDEVICE32": "m4VJFXcrv75o7+RqT1Pm9IJaoFqn8gNaLSaatIWoBxg",
23392+ "ed25519:ALICEDEVICE32": "ZnRL27hcDjYLCdWrGmZSrdnXJbJkpbfw1F7T6T5mDGo"
23393+ },
23394+ "signatures": {
23395+ "@alice_32:hs1": {
23396+ "ed25519:ALICEDEVICE32": "VnuN+nlFXtcK72/yPT1PfX62fmKQZ2/pQHc4K9x4q62qmPzEngCSqvXmZsH37+NVpzoSwC9D/zodROEBaKw/Dg"
23397+ }
23398+ },
23399+ "user_id": "@alice_32:hs1",
23400+ "unsigned": {}
23401+ }
23402+ },
23403+ "@alice_337:hs1": {
23404+ "ALICEDEVICE337": {
23405+ "algorithms": [
23406+ "m.olm.v1.curve25519-aes-sha2",
23407+ "m.megolm.v1.aes-sha2"
23408+ ],
23409+ "device_id": "ALICEDEVICE337",
23410+ "keys": {
23411+ "curve25519:ALICEDEVICE337": "LV2aoC0/SFY0iXONY60Sg8B4kPx0j9tqsx6m/O58xl0",
23412+ "ed25519:ALICEDEVICE337": "v+t3SHvjRLm2QGr7owHuxEas+Pwtr8Y9g2rqCK9YvuM"
23413+ },
23414+ "signatures": {
23415+ "@alice_337:hs1": {
23416+ "ed25519:ALICEDEVICE337": "gboqmwjFtsrW+cqN4Ay+v4brke0cIG3IG6oEPbitRNNOolaGSi6iu0Rykt4VKJJ4tlSR8Oa/y6dTeVw7ShHaBQ"
23417+ }
23418+ },
23419+ "user_id": "@alice_337:hs1",
23420+ "unsigned": {}
23421+ }
23422+ },
23423+ "@alice_357:hs1": {
23424+ "ALICEDEVICE357": {
23425+ "algorithms": [
23426+ "m.olm.v1.curve25519-aes-sha2",
23427+ "m.megolm.v1.aes-sha2"
23428+ ],
23429+ "device_id": "ALICEDEVICE357",
23430+ "keys": {
23431+ "curve25519:ALICEDEVICE357": "vL1eH4ObERuSCzI7RuoG9R9CZ+Z+7eHqIbvqfy/6vzY",
23432+ "ed25519:ALICEDEVICE357": "gGQj5XXJKwVbG6fvjYor7jm3z++v9KhV8l0bCqdTl3s"
23433+ },
23434+ "signatures": {
23435+ "@alice_357:hs1": {
23436+ "ed25519:ALICEDEVICE357": "UHCUxEkVAHRIXJnLeAMiE31UIMFKDWybWmUPWEnMyxycHYIyqdoVnIC3X5qBkiIsE6yRWGiIJJm2K6tJwMnrAg"
23437+ }
23438+ },
23439+ "user_id": "@alice_357:hs1",
23440+ "unsigned": {}
23441+ }
23442+ },
23443+ "@alice_35:hs1": {
23444+ "ALICEDEVICE35": {
23445+ "algorithms": [
23446+ "m.olm.v1.curve25519-aes-sha2",
23447+ "m.megolm.v1.aes-sha2"
23448+ ],
23449+ "device_id": "ALICEDEVICE35",
23450+ "keys": {
23451+ "curve25519:ALICEDEVICE35": "tlY+ExO0eAn9r32czgvV0y5IEXRL5zy98wePs0Ddhig",
23452+ "ed25519:ALICEDEVICE35": "wDhLvkXT+Xnzy5UpAjEwofISk64J/U+OSTh6qd3Tw1s"
23453+ },
23454+ "signatures": {
23455+ "@alice_35:hs1": {
23456+ "ed25519:ALICEDEVICE35": "ZvB2MmAmOV9/yilJ53yHxIZg5CurJvXGZu64eyKnFtNNyyHSL7XcH39RSN22DDByaahlSJ2quj0EMMY3tzeDDw"
23457+ }
23458+ },
23459+ "user_id": "@alice_35:hs1",
23460+ "unsigned": {}
23461+ }
23462+ },
23463+ "@alice_366:hs1": {
23464+ "ALICEDEVICE366": {
23465+ "algorithms": [
23466+ "m.olm.v1.curve25519-aes-sha2",
23467+ "m.megolm.v1.aes-sha2"
23468+ ],
23469+ "device_id": "ALICEDEVICE366",
23470+ "keys": {
23471+ "curve25519:ALICEDEVICE366": "SqAufoppm5ZyUnZWWMXkT2sBq4F8jJg1kMRo0TU1rkY",
23472+ "ed25519:ALICEDEVICE366": "rzPHV0EJqhbYLuX4imTRMEC/eM/ImYNkDVtyjMMtwLU"
23473+ },
23474+ "signatures": {
23475+ "@alice_366:hs1": {
23476+ "ed25519:ALICEDEVICE366": "O2GHAhv9O5RrCmw6IKg3XwiPtpkCv98G7So3t5PMKhSB6RAcev55og4fS4vjBvMcyCKdg+M4lTXubl1zewnnBQ"
23477+ }
23478+ },
23479+ "user_id": "@alice_366:hs1",
23480+ "unsigned": {}
23481+ }
23482+ },
23483+ "@alice_371:hs1": {
23484+ "ALICEDEVICE371": {
23485+ "algorithms": [
23486+ "m.olm.v1.curve25519-aes-sha2",
23487+ "m.megolm.v1.aes-sha2"
23488+ ],
23489+ "device_id": "ALICEDEVICE371",
23490+ "keys": {
23491+ "curve25519:ALICEDEVICE371": "l9GIgHdrtMQVwXutJvWvKKzOSfBYUsV2Yj7Sm5Zy4zk",
23492+ "ed25519:ALICEDEVICE371": "rFWBr06blAbcT5/LEtSzoFCEVOfxqet6aBgabzh8K1Q"
23493+ },
23494+ "signatures": {
23495+ "@alice_371:hs1": {
23496+ "ed25519:ALICEDEVICE371": "QbieG8LjbGEZdScT8+FmxLju+TaQtPKv9SVz+JWfugP1rdB4eoUx5+ulllQsy4WzKgbqbat105yzTv7o6PVSCQ"
23497+ }
23498+ },
23499+ "user_id": "@alice_371:hs1",
23500+ "unsigned": {}
23501+ }
23502+ },
23503+ "@alice_376:hs1": {
23504+ "ALICEDEVICE376": {
23505+ "algorithms": [
23506+ "m.olm.v1.curve25519-aes-sha2",
23507+ "m.megolm.v1.aes-sha2"
23508+ ],
23509+ "device_id": "ALICEDEVICE376",
23510+ "keys": {
23511+ "curve25519:ALICEDEVICE376": "/g5uwMJsZnNXYxNqgCBgVbOS8G/0OBB5gOryBw2x+hY",
23512+ "ed25519:ALICEDEVICE376": "EzQZLuQekNBA/GGD1VGginwFo4Ivysc+rf61dvwNgqo"
23513+ },
23514+ "signatures": {
23515+ "@alice_376:hs1": {
23516+ "ed25519:ALICEDEVICE376": "Cct0ZSqzUy8ICIf+NTTpYK6xODgWMBidb3Hkku+G89Pvljagr/rqOEWC7/9ZlFqgMRVaoBd0RPtGQREXhJgxAw"
23517+ }
23518+ },
23519+ "user_id": "@alice_376:hs1",
23520+ "unsigned": {}
23521+ }
23522+ },
23523+ "@alice_381:hs1": {
23524+ "ALICEDEVICE381": {
23525+ "algorithms": [
23526+ "m.olm.v1.curve25519-aes-sha2",
23527+ "m.megolm.v1.aes-sha2"
23528+ ],
23529+ "device_id": "ALICEDEVICE381",
23530+ "keys": {
23531+ "curve25519:ALICEDEVICE381": "4PZ5GXKbyScJg8kKEVBB4Q30bX+5kRnz0OSKJmOG4Rs",
23532+ "ed25519:ALICEDEVICE381": "kSB6WaSjvXKaZj7dlxmmKNyW0a3DbZMYPzuZPnAivdk"
23533+ },
23534+ "signatures": {
23535+ "@alice_381:hs1": {
23536+ "ed25519:ALICEDEVICE381": "n4D95Ve0oKikLgQ9uN4TcZOSOiT40ZL2CA7MuvdMUke6PqHYvqzMjcGlGpiXG5uTutyTirGWIjjDK+YjuTaVCg"
23537+ }
23538+ },
23539+ "user_id": "@alice_381:hs1",
23540+ "unsigned": {}
23541+ }
23542+ },
23543+ "@alice_393:hs1": {
23544+ "ALICEDEVICE393": {
23545+ "algorithms": [
23546+ "m.olm.v1.curve25519-aes-sha2",
23547+ "m.megolm.v1.aes-sha2"
23548+ ],
23549+ "device_id": "ALICEDEVICE393",
23550+ "keys": {
23551+ "curve25519:ALICEDEVICE393": "Y1we/jR0brCIDV5yUvAFvJb9vSXumrxwfzP2iXZTwlU",
23552+ "ed25519:ALICEDEVICE393": "d4+B/7EE6NsmFbI961IbC9mpknqik3xLQSTpOlY0/8w"
23553+ },
23554+ "signatures": {
23555+ "@alice_393:hs1": {
23556+ "ed25519:ALICEDEVICE393": "VW6xYTNlBv8aXqK4u3wZClspjV4It6EUMyAGnfb+hv1wTksVvIhmhJJU5ZModiK0m6NS5wsiMOcRKMkJI4VMCw"
23557+ }
23558+ },
23559+ "user_id": "@alice_393:hs1",
23560+ "unsigned": {}
23561+ }
23562+ },
23563+ "@alice_40:hs1": {
23564+ "ALICEDEVICE40": {
23565+ "algorithms": [
23566+ "m.olm.v1.curve25519-aes-sha2",
23567+ "m.megolm.v1.aes-sha2"
23568+ ],
23569+ "device_id": "ALICEDEVICE40",
23570+ "keys": {
23571+ "curve25519:ALICEDEVICE40": "ntWG1d+Gx0kUBgPFJSBxLTEKov6CDm1wT3Ry4+zFtQ4",
23572+ "ed25519:ALICEDEVICE40": "1XBu5chXEvBPAk4BDqH2MhdqAuS/0YBXmLSmqcKde4A"
23573+ },
23574+ "signatures": {
23575+ "@alice_40:hs1": {
23576+ "ed25519:ALICEDEVICE40": "oOPVMl86Y1VqK9gLsaYUN4jzbWwbQkTEhVoFX7PoNQt2yTH6Sfi3lGPoMTFsAopAsIZtvI8OUpP2FUkX3ripCg"
23577+ }
23578+ },
23579+ "user_id": "@alice_40:hs1",
23580+ "unsigned": {}
23581+ }
23582+ },
23583+ "@alice_410:hs1": {
23584+ "ALICEDEVICE410": {
23585+ "algorithms": [
23586+ "m.olm.v1.curve25519-aes-sha2",
23587+ "m.megolm.v1.aes-sha2"
23588+ ],
23589+ "device_id": "ALICEDEVICE410",
23590+ "keys": {
23591+ "curve25519:ALICEDEVICE410": "c0pxePike8Bkz2x5o0tmUcLZmLvJXdIE/7ilv5H//x8",
23592+ "ed25519:ALICEDEVICE410": "AhxPsBAsKR9ZAEYNG/BHIfv57BMyUjuVqoY75UbcOA0"
23593+ },
23594+ "signatures": {
23595+ "@alice_410:hs1": {
23596+ "ed25519:ALICEDEVICE410": "PByleBdLQZrivM4sKFYR7s4+Vbqxff3ygzKaGnEejkjxnSIW1/vIQ1OZ5JSEZtnFUBVAWUGwGx4DOPOYa4t+Cw"
23597+ }
23598+ },
23599+ "user_id": "@alice_410:hs1",
23600+ "unsigned": {}
23601+ }
23602+ },
23603+ "@alice_414:hs1": {
23604+ "ALICEDEVICE414": {
23605+ "algorithms": [
23606+ "m.olm.v1.curve25519-aes-sha2",
23607+ "m.megolm.v1.aes-sha2"
23608+ ],
23609+ "device_id": "ALICEDEVICE414",
23610+ "keys": {
23611+ "curve25519:ALICEDEVICE414": "ZW4LStpsvypxE9v27WSY8924a7dBJZitrIbtIJF9AX8",
23612+ "ed25519:ALICEDEVICE414": "I1b1z851+WJtzOKqMp/iKT4qOgT2koqkEM874XbSwsI"
23613+ },
23614+ "signatures": {
23615+ "@alice_414:hs1": {
23616+ "ed25519:ALICEDEVICE414": "m06R2Zh1RLn9CF4S+8Kxco0VlSKMVUX6z0YvqiR0VD33CnnJm3jmh2Mdx53OPzZXMUdbNJ8AuxyGU4kHmbwtCw"
23617+ }
23618+ },
23619+ "user_id": "@alice_414:hs1",
23620+ "unsigned": {}
23621+ }
23622+ },
23623+ "@alice_415:hs1": {
23624+ "ALICEDEVICE415": {
23625+ "algorithms": [
23626+ "m.olm.v1.curve25519-aes-sha2",
23627+ "m.megolm.v1.aes-sha2"
23628+ ],
23629+ "device_id": "ALICEDEVICE415",
23630+ "keys": {
23631+ "curve25519:ALICEDEVICE415": "fLUdiLh4RkiJSyHiRNnEEFC01tt2pcc6xFwJzqjmHyg",
23632+ "ed25519:ALICEDEVICE415": "mg/2P2cM3PfLyPsmyWvAwl5pKSjaWTOViR8c01OApBQ"
23633+ },
23634+ "signatures": {
23635+ "@alice_415:hs1": {
23636+ "ed25519:ALICEDEVICE415": "WbySXmJfWGzmhNDgB4IBCN9rk9ukkRPpzXvI/s4rq2t9YCkwK/JKT1d610wCYfM1S2UmGhzsdVAK2++4leeGBg"
23637+ }
23638+ },
23639+ "user_id": "@alice_415:hs1",
23640+ "unsigned": {}
23641+ }
23642+ },
23643+ "@alice_423:hs1": {
23644+ "ALICEDEVICE423": {
23645+ "algorithms": [
23646+ "m.olm.v1.curve25519-aes-sha2",
23647+ "m.megolm.v1.aes-sha2"
23648+ ],
23649+ "device_id": "ALICEDEVICE423",
23650+ "keys": {
23651+ "curve25519:ALICEDEVICE423": "NU5OUmO1Mjb5dljZiCrjmXEfG1H7p8oPtIkkAYfHCFE",
23652+ "ed25519:ALICEDEVICE423": "mzBrjcvSesNxa28IR/0CRM+4AskulUhYPyVmmU3nObw"
23653+ },
23654+ "signatures": {
23655+ "@alice_423:hs1": {
23656+ "ed25519:ALICEDEVICE423": "/BRumr926/gk6XDPHoiozOCB7IGfCaqZ9brcl3y++W17Y4zRcFIpjComlS0KXtCSzLQcgMqyJ2mOcqp4w7DEDA"
23657+ }
23658+ },
23659+ "user_id": "@alice_423:hs1",
23660+ "unsigned": {}
23661+ }
23662+ },
23663+ "@alice_435:hs1": {
23664+ "ALICEDEVICE435": {
23665+ "algorithms": [
23666+ "m.olm.v1.curve25519-aes-sha2",
23667+ "m.megolm.v1.aes-sha2"
23668+ ],
23669+ "device_id": "ALICEDEVICE435",
23670+ "keys": {
23671+ "curve25519:ALICEDEVICE435": "ytXlwkFk595jU/mcx/M6UcG4NZqzMJJZsK0exwTVyFo",
23672+ "ed25519:ALICEDEVICE435": "F6gZQZxV6CNrV+z2Gph/fwJKlRHdySoSQZQaR7pRXRg"
23673+ },
23674+ "signatures": {
23675+ "@alice_435:hs1": {
23676+ "ed25519:ALICEDEVICE435": "9tOxzVwzwAaSMeOWzi8mIFdE6DrW9NSOR8+jVfpZGrbpONUHhPnOjU7rz1uCGVpkDmotTnyUDRhPeDUa8LvjCw"
23677+ }
23678+ },
23679+ "user_id": "@alice_435:hs1",
23680+ "unsigned": {}
23681+ }
23682+ },
23683+ "@alice_453:hs1": {
23684+ "ALICEDEVICE453": {
23685+ "algorithms": [
23686+ "m.olm.v1.curve25519-aes-sha2",
23687+ "m.megolm.v1.aes-sha2"
23688+ ],
23689+ "device_id": "ALICEDEVICE453",
23690+ "keys": {
23691+ "curve25519:ALICEDEVICE453": "MMZtPAy9uVIvFcLII0QyDOHq8iymaxUqW5RH7R6LJBE",
23692+ "ed25519:ALICEDEVICE453": "vcJwGvhP+qooQTtmK113pUzNfNbWdNDtoAKg4wsK8I4"
23693+ },
23694+ "signatures": {
23695+ "@alice_453:hs1": {
23696+ "ed25519:ALICEDEVICE453": "3Y7FCCcOYpHPxLCbb9UwtsAqNPl0QGZf6NC1aReqXXhvfeY81Sio863wtGYiJrUjRjP4XUFfd/f9tf5URmG5Bg"
23697+ }
23698+ },
23699+ "user_id": "@alice_453:hs1",
23700+ "unsigned": {}
23701+ }
23702+ },
23703+ "@alice_458:hs1": {
23704+ "ALICEDEVICE458": {
23705+ "algorithms": [
23706+ "m.olm.v1.curve25519-aes-sha2",
23707+ "m.megolm.v1.aes-sha2"
23708+ ],
23709+ "device_id": "ALICEDEVICE458",
23710+ "keys": {
23711+ "curve25519:ALICEDEVICE458": "ky57HL4LWnxVIelgN4DEoRZdlQ4JCQHaZq1SbVmGslk",
23712+ "ed25519:ALICEDEVICE458": "Ia9AlnVUbDAJUOt5SQe0zYwicut39sSbmIW1g12F2GA"
23713+ },
23714+ "signatures": {
23715+ "@alice_458:hs1": {
23716+ "ed25519:ALICEDEVICE458": "3LKIFaaomo9N0Swaq9Dh2If6D+5Q9Rj2ehuM3vkYwVlbMCDK8YoCqhgNSen/UYvc28UYP8OpZvfMA6o4yoqIBA"
23717+ }
23718+ },
23719+ "user_id": "@alice_458:hs1",
23720+ "unsigned": {}
23721+ }
23722+ },
23723+ "@alice_460:hs1": {
23724+ "ALICEDEVICE460": {
23725+ "algorithms": [
23726+ "m.olm.v1.curve25519-aes-sha2",
23727+ "m.megolm.v1.aes-sha2"
23728+ ],
23729+ "device_id": "ALICEDEVICE460",
23730+ "keys": {
23731+ "curve25519:ALICEDEVICE460": "65gNNSvKy93Yum/c6iql7VRYxpthAr74iKzFVZZ1dQ0",
23732+ "ed25519:ALICEDEVICE460": "2qPwyXSApvOoW7MEdIMJXk5rt3ZNHpewQJwWrBJkOzE"
23733+ },
23734+ "signatures": {
23735+ "@alice_460:hs1": {
23736+ "ed25519:ALICEDEVICE460": "Asl7CuarElop9ZYlnNhI2jR7222ale0HOSl6/9MSWkxbM2Br+wFXiYrld4cM5UNOC9EfEGT+79LlJx49wMG+Dg"
23737+ }
23738+ },
23739+ "user_id": "@alice_460:hs1",
23740+ "unsigned": {}
23741+ }
23742+ },
23743+ "@alice_482:hs1": {
23744+ "ALICEDEVICE482": {
23745+ "algorithms": [
23746+ "m.olm.v1.curve25519-aes-sha2",
23747+ "m.megolm.v1.aes-sha2"
23748+ ],
23749+ "device_id": "ALICEDEVICE482",
23750+ "keys": {
23751+ "curve25519:ALICEDEVICE482": "tY3XLWmssKFpa2SWNrBP4PiYLFeuYeGcSu2eKQGol3Y",
23752+ "ed25519:ALICEDEVICE482": "CtX/QvDG7TaP89Fuqd4jB4oZvGm5up7ZBVbgkPHY7nQ"
23753+ },
23754+ "signatures": {
23755+ "@alice_482:hs1": {
23756+ "ed25519:ALICEDEVICE482": "TlWrGun/64n5DgNV4gRt//d/7fHExNhhFNKy1+Je8mX8cuOO/Gj8KImwU0CpbZFxIJMunXtyC7HNXY9j72yZBQ"
23757+ }
23758+ },
23759+ "user_id": "@alice_482:hs1",
23760+ "unsigned": {}
23761+ }
23762+ },
23763+ "@alice_489:hs1": {
23764+ "ALICEDEVICE489": {
23765+ "algorithms": [
23766+ "m.olm.v1.curve25519-aes-sha2",
23767+ "m.megolm.v1.aes-sha2"
23768+ ],
23769+ "device_id": "ALICEDEVICE489",
23770+ "keys": {
23771+ "curve25519:ALICEDEVICE489": "HpwGZtOwNQnHrov8LqhmHkIUIgi9KavLCTYENKHaXRo",
23772+ "ed25519:ALICEDEVICE489": "3MheOS5SmN+nK5gEg9yRIl2AoRvzL0JYquxdNx/roN4"
23773+ },
23774+ "signatures": {
23775+ "@alice_489:hs1": {
23776+ "ed25519:ALICEDEVICE489": "BCPhL4ieI5FV5h096dhV/9LSD+ta+J/HRpmv48d4y/3bbWqefrEp0n25n01miPemWWJU+7o9CYayCoVZmOqzDA"
23777+ }
23778+ },
23779+ "user_id": "@alice_489:hs1",
23780+ "unsigned": {}
23781+ }
23782+ },
23783+ "@alice_49:hs1": {
23784+ "ALICEDEVICE49": {
23785+ "algorithms": [
23786+ "m.olm.v1.curve25519-aes-sha2",
23787+ "m.megolm.v1.aes-sha2"
23788+ ],
23789+ "device_id": "ALICEDEVICE49",
23790+ "keys": {
23791+ "curve25519:ALICEDEVICE49": "hAG36inn5uZbbCFXyZSLSs6ATt1woXPZVPdDquCUEHs",
23792+ "ed25519:ALICEDEVICE49": "iINDWR+16aROJdKPi95u3ZvUBadsc58Gcv9XtjWSft4"
23793+ },
23794+ "signatures": {
23795+ "@alice_49:hs1": {
23796+ "ed25519:ALICEDEVICE49": "EAlcUonmVrjKRFvtMoUROFLPcFnP6S2Dg0VHuUhS82mwh9LG5uidzuj5Sy+P1O/CcppdYQj/8Ffl7p/aQuzfBA"
23797+ }
23798+ },
23799+ "user_id": "@alice_49:hs1",
23800+ "unsigned": {}
23801+ }
23802+ },
23803+ "@alice_520:hs1": {
23804+ "ALICEDEVICE520": {
23805+ "algorithms": [
23806+ "m.olm.v1.curve25519-aes-sha2",
23807+ "m.megolm.v1.aes-sha2"
23808+ ],
23809+ "device_id": "ALICEDEVICE520",
23810+ "keys": {
23811+ "curve25519:ALICEDEVICE520": "tg+XPv8gpXkrq2IEeTYG7GUGPzOp0GIZZgWL3Sp6jTs",
23812+ "ed25519:ALICEDEVICE520": "B5ug+9m0ZbkOVl6Xwau6agMRw4txbhbQ0XI73nQPpro"
23813+ },
23814+ "signatures": {
23815+ "@alice_520:hs1": {
23816+ "ed25519:ALICEDEVICE520": "mCFNV3R0FXrbvChhrJhHEmxc/KiYV5IWZxDl1Wla4eEqi6cweG/Y3+8NsMKpZvmZjq8OUVPTD5ohypfOQDY2Aw"
23817+ }
23818+ },
23819+ "user_id": "@alice_520:hs1",
23820+ "unsigned": {}
23821+ }
23822+ },
23823+ "@alice_521:hs1": {
23824+ "ALICEDEVICE521": {
23825+ "algorithms": [
23826+ "m.olm.v1.curve25519-aes-sha2",
23827+ "m.megolm.v1.aes-sha2"
23828+ ],
23829+ "device_id": "ALICEDEVICE521",
23830+ "keys": {
23831+ "curve25519:ALICEDEVICE521": "KfVHvbE7Fa1sSXRxoTy0GKSCbTJvwA+39GfFV7WAmTI",
23832+ "ed25519:ALICEDEVICE521": "nRXRWdvwzuY/8a4vUjpy+tb4UNA6bYxFlykrnQ3pTGI"
23833+ },
23834+ "signatures": {
23835+ "@alice_521:hs1": {
23836+ "ed25519:ALICEDEVICE521": "uAFF7XWSW/LDXVsxk9lviS6qCvaRUptTfTB1D5PkeCzHyhLBvZ+XSsVsgP1Jp04lvJU3jD9C/zSU0GCDq4jKAA"
23837+ }
23838+ },
23839+ "user_id": "@alice_521:hs1",
23840+ "unsigned": {}
23841+ }
23842+ },
23843+ "@alice_529:hs1": {
23844+ "ALICEDEVICE529": {
23845+ "algorithms": [
23846+ "m.olm.v1.curve25519-aes-sha2",
23847+ "m.megolm.v1.aes-sha2"
23848+ ],
23849+ "device_id": "ALICEDEVICE529",
23850+ "keys": {
23851+ "curve25519:ALICEDEVICE529": "4JGIowsdDIXDNCeqAkRwekzvLRgEIaDLwwadAY1983A",
23852+ "ed25519:ALICEDEVICE529": "i3WHJAFkSZfw6pK2pgU8fMyO8iTRZc/CwsUdTOwaI/g"
23853+ },
23854+ "signatures": {
23855+ "@alice_529:hs1": {
23856+ "ed25519:ALICEDEVICE529": "DZZ6GFU6kpB3ImsRhURwbP2ymEv4VbIjPhseXJim5g6/41rDIbaFJHRCXOh9KabRlGIa+KgY1YT6bVv5CrAyBQ"
23857+ }
23858+ },
23859+ "user_id": "@alice_529:hs1",
23860+ "unsigned": {}
23861+ }
23862+ },
23863+ "@alice_534:hs1": {
23864+ "ALICEDEVICE534": {
23865+ "algorithms": [
23866+ "m.olm.v1.curve25519-aes-sha2",
23867+ "m.megolm.v1.aes-sha2"
23868+ ],
23869+ "device_id": "ALICEDEVICE534",
23870+ "keys": {
23871+ "curve25519:ALICEDEVICE534": "vb8u1Cid9K0tzz2EOyp6Vk+PZiIbyt3dnI5C010bFCs",
23872+ "ed25519:ALICEDEVICE534": "JtoYxLsX1sizO7ujC7erddmOadNB+rtPqQTe68HKI5Q"
23873+ },
23874+ "signatures": {
23875+ "@alice_534:hs1": {
23876+ "ed25519:ALICEDEVICE534": "4gPfhHUJtm4jdrVxl+oncjt7gs+lVnmfXsswZ1c8FJOas4zaYQbVPGkabSDyomAhBfRXRmB0GneDmh68xW8oCQ"
23877+ }
23878+ },
23879+ "user_id": "@alice_534:hs1",
23880+ "unsigned": {}
23881+ }
23882+ },
23883+ "@alice_553:hs1": {
23884+ "ALICEDEVICE553": {
23885+ "algorithms": [
23886+ "m.olm.v1.curve25519-aes-sha2",
23887+ "m.megolm.v1.aes-sha2"
23888+ ],
23889+ "device_id": "ALICEDEVICE553",
23890+ "keys": {
23891+ "curve25519:ALICEDEVICE553": "UNnDvIJ6Yds2dDo5UuZK2ye7GPssQZ3yFubkSRtv7AM",
23892+ "ed25519:ALICEDEVICE553": "L/zXlhxR3BlPJN0U63nw1oLWkATqwFYr3zRLjhrGzTE"
23893+ },
23894+ "signatures": {
23895+ "@alice_553:hs1": {
23896+ "ed25519:ALICEDEVICE553": "fcsY4/nSrY0qBusd3UqRO2ZNgtYwUVEL6iuBm28n3FVxDRNJkzFTTa/OTNz4vQpgZu4Dibrc8htUDXXb1cRuCg"
23897+ }
23898+ },
23899+ "user_id": "@alice_553:hs1",
23900+ "unsigned": {}
23901+ }
23902+ },
23903+ "@alice_565:hs1": {
23904+ "ALICEDEVICE565": {
23905+ "algorithms": [
23906+ "m.olm.v1.curve25519-aes-sha2",
23907+ "m.megolm.v1.aes-sha2"
23908+ ],
23909+ "device_id": "ALICEDEVICE565",
23910+ "keys": {
23911+ "curve25519:ALICEDEVICE565": "8BYQpOsZ8NAF3QWLEI/VM1GjQGPUmFyfAeLsIU6/4Xg",
23912+ "ed25519:ALICEDEVICE565": "XUrEbIN2AwYmqjfxony5JwTr6w153zxklbKD5mvLk5U"
23913+ },
23914+ "signatures": {
23915+ "@alice_565:hs1": {
23916+ "ed25519:ALICEDEVICE565": "rti4Eg82V3Z+V5Gxoy0KLlr7CUkuZxx49zZP1IRY3tfaRmttLXl02nKlbNGEPfFowJOVcMydQjYFvuko1mCpDg"
23917+ }
23918+ },
23919+ "user_id": "@alice_565:hs1",
23920+ "unsigned": {}
23921+ }
23922+ },
23923+ "@alice_568:hs1": {
23924+ "ALICEDEVICE568": {
23925+ "algorithms": [
23926+ "m.olm.v1.curve25519-aes-sha2",
23927+ "m.megolm.v1.aes-sha2"
23928+ ],
23929+ "device_id": "ALICEDEVICE568",
23930+ "keys": {
23931+ "curve25519:ALICEDEVICE568": "gaGna2zgYV1zLpZh0VIZjmOH64Km2TZ3Qgctq5q6eRE",
23932+ "ed25519:ALICEDEVICE568": "knYKAvypDfC68+xvAZiw7pFD+Vf6mT4uaJ61x0oPSQs"
23933+ },
23934+ "signatures": {
23935+ "@alice_568:hs1": {
23936+ "ed25519:ALICEDEVICE568": "iNxmqErze+avJhcsiDgFDJ9wZl2/Hc3TDAx36LGwZumxB/6e82gGdJwrbRGU8pNW3dTKKtO3SK78xM9zUJcQAw"
23937+ }
23938+ },
23939+ "user_id": "@alice_568:hs1",
23940+ "unsigned": {}
23941+ }
23942+ },
23943+ "@alice_573:hs1": {
23944+ "ALICEDEVICE573": {
23945+ "algorithms": [
23946+ "m.olm.v1.curve25519-aes-sha2",
23947+ "m.megolm.v1.aes-sha2"
23948+ ],
23949+ "device_id": "ALICEDEVICE573",
23950+ "keys": {
23951+ "curve25519:ALICEDEVICE573": "L6boHiZ7pvsZHCvw+8lHNyfr2nUfcU71uBy+XqKOMXw",
23952+ "ed25519:ALICEDEVICE573": "aWDzoZ3EOpizeG0Bd6UJO5WEF6psOi4LYcgpkPKnNpo"
23953+ },
23954+ "signatures": {
23955+ "@alice_573:hs1": {
23956+ "ed25519:ALICEDEVICE573": "XC3+RSpawORbggSTfmPnkpypiSfe9SyIN0w5xFRlWx319G+TuRTWMFF03U9dlaClxD5gd4DlYNNtpBrqFvomBA"
23957+ }
23958+ },
23959+ "user_id": "@alice_573:hs1",
23960+ "unsigned": {}
23961+ }
23962+ },
23963+ "@alice_574:hs1": {
23964+ "ALICEDEVICE574": {
23965+ "algorithms": [
23966+ "m.olm.v1.curve25519-aes-sha2",
23967+ "m.megolm.v1.aes-sha2"
23968+ ],
23969+ "device_id": "ALICEDEVICE574",
23970+ "keys": {
23971+ "curve25519:ALICEDEVICE574": "eraLLMHNJRvdwp5TujBudkD1FKOhyaraTGV6s5Q2qFU",
23972+ "ed25519:ALICEDEVICE574": "yLeL3d61qIjlys2q/DhdHlDhRIIz7y1AwVbdRTZmz+0"
23973+ },
23974+ "signatures": {
23975+ "@alice_574:hs1": {
23976+ "ed25519:ALICEDEVICE574": "C4Sh1gdHm5IDcYojRgCtCsR6WGVGnyIZKSZK6xYN6tdRrHNmkQBPqzTyDG9LysYKc3s56zCuUFB4fp1r67JDDQ"
23977+ }
23978+ },
23979+ "user_id": "@alice_574:hs1",
23980+ "unsigned": {}
23981+ }
23982+ },
23983+ "@alice_582:hs1": {
23984+ "ALICEDEVICE582": {
23985+ "algorithms": [
23986+ "m.olm.v1.curve25519-aes-sha2",
23987+ "m.megolm.v1.aes-sha2"
23988+ ],
23989+ "device_id": "ALICEDEVICE582",
23990+ "keys": {
23991+ "curve25519:ALICEDEVICE582": "YeWsn4AmSJrkHI5Q6xyQKkpirf8MmeK6q+CfGl3t+Qc",
23992+ "ed25519:ALICEDEVICE582": "w1x70MOzXFrcZ7gL/4bq4AdCarT/EOVyW4e1VCZoih8"
23993+ },
23994+ "signatures": {
23995+ "@alice_582:hs1": {
23996+ "ed25519:ALICEDEVICE582": "T0y2ddguPL/xF1KTWE/S8klBLQt4Sp3vVRBj+NLIiC/ORogFnoWQalEV5O7Ul2+4VPj60ZZWo45Qqk8rWK7bAw"
23997+ }
23998+ },
23999+ "user_id": "@alice_582:hs1",
24000+ "unsigned": {}
24001+ }
24002+ },
24003+ "@alice_589:hs1": {
24004+ "ALICEDEVICE589": {
24005+ "algorithms": [
24006+ "m.olm.v1.curve25519-aes-sha2",
24007+ "m.megolm.v1.aes-sha2"
24008+ ],
24009+ "device_id": "ALICEDEVICE589",
24010+ "keys": {
24011+ "curve25519:ALICEDEVICE589": "ejUmkOQ9FxfIB7wa0ubXaKEkWPybn3Z0L/LbNvF5cBU",
24012+ "ed25519:ALICEDEVICE589": "I+JyicXZKELp3VkoICSpuBPfZMmcV/oz4Kf0PXf6arQ"
24013+ },
24014+ "signatures": {
24015+ "@alice_589:hs1": {
24016+ "ed25519:ALICEDEVICE589": "qKpqbF97fzpkEsDOBJ6aaHbQ09fJrfRu3ssmikJXb7zEIeHlc5WITydrq4wpGsmqxm6aeLdqBEpO3Rl/HtJGCA"
24017+ }
24018+ },
24019+ "user_id": "@alice_589:hs1",
24020+ "unsigned": {}
24021+ }
24022+ },
24023+ "@alice_606:hs1": {
24024+ "ALICEDEVICE606": {
24025+ "algorithms": [
24026+ "m.olm.v1.curve25519-aes-sha2",
24027+ "m.megolm.v1.aes-sha2"
24028+ ],
24029+ "device_id": "ALICEDEVICE606",
24030+ "keys": {
24031+ "curve25519:ALICEDEVICE606": "0js5RdZNqT17DFXlrwmX0B3H4ASaEEjNW/C5qBRqkUY",
24032+ "ed25519:ALICEDEVICE606": "gvrtj02JffuB7avS/Hyh/70csiSC1jBxnUC+CBOSEkE"
24033+ },
24034+ "signatures": {
24035+ "@alice_606:hs1": {
24036+ "ed25519:ALICEDEVICE606": "P3WJGa9qgKD/zCiqBAc8flu2SnNgOl+kycduxEwlQuvpNTUcG51hvBrngBtHOVFbmb3zFpwbVRRrqKopZQ9OAw"
24037+ }
24038+ },
24039+ "user_id": "@alice_606:hs1",
24040+ "unsigned": {}
24041+ }
24042+ },
24043+ "@alice_608:hs1": {
24044+ "ALICEDEVICE608": {
24045+ "algorithms": [
24046+ "m.olm.v1.curve25519-aes-sha2",
24047+ "m.megolm.v1.aes-sha2"
24048+ ],
24049+ "device_id": "ALICEDEVICE608",
24050+ "keys": {
24051+ "curve25519:ALICEDEVICE608": "nZbkblpRVMPkoR1KsYI/uBmDPhfjp2Fvx1vNao5h6zE",
24052+ "ed25519:ALICEDEVICE608": "aeEBYM7asuUeA7TwhHzNHRRAsrQhwctHIoHZRv1ZOj8"
24053+ },
24054+ "signatures": {
24055+ "@alice_608:hs1": {
24056+ "ed25519:ALICEDEVICE608": "BGmJYNtNQJzLyaDveG2RghcY1sx4//DUDalnv46FhUuXNeR/t+lyeXrBlKNfSQ5SYad8jdmUoldW3iJbMgSQAg"
24057+ }
24058+ },
24059+ "user_id": "@alice_608:hs1",
24060+ "unsigned": {}
24061+ }
24062+ },
24063+ "@alice_621:hs1": {
24064+ "ALICEDEVICE621": {
24065+ "algorithms": [
24066+ "m.olm.v1.curve25519-aes-sha2",
24067+ "m.megolm.v1.aes-sha2"
24068+ ],
24069+ "device_id": "ALICEDEVICE621",
24070+ "keys": {
24071+ "curve25519:ALICEDEVICE621": "Y7/J0yQL6H+ujY3Tsrdc6HwRMBanhZMAO1xzeXgxp2Y",
24072+ "ed25519:ALICEDEVICE621": "FlI9m32BtLby1smFlbnlfkvsnCv9rEYMXrqMdjxWLKE"
24073+ },
24074+ "signatures": {
24075+ "@alice_621:hs1": {
24076+ "ed25519:ALICEDEVICE621": "D0rhrHHbVvYryVbuqbVnmT8eKzExoYnlGO/0f7ETXrqeM9SqRGaXlhNu4aBDys9JcyRPvhF9bjErGLgonDQqBQ"
24077+ }
24078+ },
24079+ "user_id": "@alice_621:hs1",
24080+ "unsigned": {}
24081+ }
24082+ },
24083+ "@alice_624:hs1": {
24084+ "ALICEDEVICE624": {
24085+ "algorithms": [
24086+ "m.olm.v1.curve25519-aes-sha2",
24087+ "m.megolm.v1.aes-sha2"
24088+ ],
24089+ "device_id": "ALICEDEVICE624",
24090+ "keys": {
24091+ "curve25519:ALICEDEVICE624": "tW41k9l4Ff9Srqo6CeowzLpEwhVnDB8eSyHl0Av80iU",
24092+ "ed25519:ALICEDEVICE624": "G5PQnLbuZNv5XD5PRPPbQL1BfHEwAO6AHbWW/cBuVro"
24093+ },
24094+ "signatures": {
24095+ "@alice_624:hs1": {
24096+ "ed25519:ALICEDEVICE624": "w/4ovzgqF/bt2Yuua0e8622/AJMcM+YzNDqyCpvZ2+iyQZjp3GnH5KRDuYdpCgTRaak8kFf8lPJJU4HiOnTRDA"
24097+ }
24098+ },
24099+ "user_id": "@alice_624:hs1",
24100+ "unsigned": {}
24101+ }
24102+ },
24103+ "@alice_630:hs1": {
24104+ "ALICEDEVICE630": {
24105+ "algorithms": [
24106+ "m.olm.v1.curve25519-aes-sha2",
24107+ "m.megolm.v1.aes-sha2"
24108+ ],
24109+ "device_id": "ALICEDEVICE630",
24110+ "keys": {
24111+ "curve25519:ALICEDEVICE630": "227S68eTewS4xWhu3at2H2ojSVIN9BwKPbSELRuKRns",
24112+ "ed25519:ALICEDEVICE630": "x1uHN+TzOzXqoiIytr7NuAHyno6FU2TR81TaHsarxaw"
24113+ },
24114+ "signatures": {
24115+ "@alice_630:hs1": {
24116+ "ed25519:ALICEDEVICE630": "ulrn7AcQSxRw4d8HVx54QYUFc1THI0BSxC8D7Pg5b0PXFRGwOPqgsbbDKQzaloaeWALb2vcyo/YCiwkg5gZQCg"
24117+ }
24118+ },
24119+ "user_id": "@alice_630:hs1",
24120+ "unsigned": {}
24121+ }
24122+ },
24123+ "@alice_632:hs1": {
24124+ "ALICEDEVICE632": {
24125+ "algorithms": [
24126+ "m.olm.v1.curve25519-aes-sha2",
24127+ "m.megolm.v1.aes-sha2"
24128+ ],
24129+ "device_id": "ALICEDEVICE632",
24130+ "keys": {
24131+ "curve25519:ALICEDEVICE632": "xrMIpuJeAl6nHzlP7+TmA91iXmiBPlBB0XKQd+nbCho",
24132+ "ed25519:ALICEDEVICE632": "ahbbdfw3tIhWlZs8c1S5g1aFkiPHlCyajNYWcVinQyc"
24133+ },
24134+ "signatures": {
24135+ "@alice_632:hs1": {
24136+ "ed25519:ALICEDEVICE632": "J5jDnQU+oMyHJCQvcFz1ohzUzx/e/bmtPrpGgZfU1EgcYoVCexj5sfNsj9C1ju5fHXFd49dLCU5j3OvEUHE8BQ"
24137+ }
24138+ },
24139+ "user_id": "@alice_632:hs1",
24140+ "unsigned": {}
24141+ }
24142+ },
24143+ "@alice_639:hs1": {
24144+ "ALICEDEVICE639": {
24145+ "algorithms": [
24146+ "m.olm.v1.curve25519-aes-sha2",
24147+ "m.megolm.v1.aes-sha2"
24148+ ],
24149+ "device_id": "ALICEDEVICE639",
24150+ "keys": {
24151+ "curve25519:ALICEDEVICE639": "0Odur276dlK8XKQTvU4LyAJ3mERCCK8zx+LS4rqvVws",
24152+ "ed25519:ALICEDEVICE639": "KKr1BVZ0w0/62su3BduQX0pOu+jxagcj4MoM5rTVMUg"
24153+ },
24154+ "signatures": {
24155+ "@alice_639:hs1": {
24156+ "ed25519:ALICEDEVICE639": "9kPjm3OB/Xu3ccXEW8MO8TVu+UDXDRDdMxiSPO7eHrfLFhrHb4GPSjWoie9RuSjiOkVz4ZPBfTSkies6i6Z1DQ"
24157+ }
24158+ },
24159+ "user_id": "@alice_639:hs1",
24160+ "unsigned": {}
24161+ }
24162+ },
24163+ "@alice_643:hs1": {
24164+ "ALICEDEVICE643": {
24165+ "algorithms": [
24166+ "m.olm.v1.curve25519-aes-sha2",
24167+ "m.megolm.v1.aes-sha2"
24168+ ],
24169+ "device_id": "ALICEDEVICE643",
24170+ "keys": {
24171+ "curve25519:ALICEDEVICE643": "tDkWZSCYil32MZdfI5IGSjr3LLg7vkADCNmSVVC+9R8",
24172+ "ed25519:ALICEDEVICE643": "CVNVAR5e6c007UNG5IZsj7LylzXzcFeOcOC1LDtmwW0"
24173+ },
24174+ "signatures": {
24175+ "@alice_643:hs1": {
24176+ "ed25519:ALICEDEVICE643": "MCmzIKHkZuauHKzfvoR61wiHm54R1epgHRlYEyyNwE0++DufxAcPpVZeU32EPwtCUG4At/lrwOZbkIksAfmGAA"
24177+ }
24178+ },
24179+ "user_id": "@alice_643:hs1",
24180+ "unsigned": {}
24181+ }
24182+ },
24183+ "@alice_644:hs1": {
24184+ "ALICEDEVICE644": {
24185+ "algorithms": [
24186+ "m.olm.v1.curve25519-aes-sha2",
24187+ "m.megolm.v1.aes-sha2"
24188+ ],
24189+ "device_id": "ALICEDEVICE644",
24190+ "keys": {
24191+ "curve25519:ALICEDEVICE644": "R9iSAff4iijMz84T9kSJ7nDrTJtaEwZmOt6GQ+9EpXg",
24192+ "ed25519:ALICEDEVICE644": "WOnYphe8Ua9CIBt7OJlgFA+FXcEqrDaLYjGIuAlrHCU"
24193+ },
24194+ "signatures": {
24195+ "@alice_644:hs1": {
24196+ "ed25519:ALICEDEVICE644": "3yZgLFsx2266bw1E4j5ke+HuVixxuRM9SKV/+599M2yAbhdjzHLau/HdbusrKL1SdjYI5tiKjzBtkhs/3YasDw"
24197+ }
24198+ },
24199+ "user_id": "@alice_644:hs1",
24200+ "unsigned": {}
24201+ }
24202+ },
24203+ "@alice_645:hs1": {
24204+ "ALICEDEVICE645": {
24205+ "algorithms": [
24206+ "m.olm.v1.curve25519-aes-sha2",
24207+ "m.megolm.v1.aes-sha2"
24208+ ],
24209+ "device_id": "ALICEDEVICE645",
24210+ "keys": {
24211+ "curve25519:ALICEDEVICE645": "x4e7Tb6C68qoeJUUzI/Cd+iB2++kgax0i8yW5Y7ATGc",
24212+ "ed25519:ALICEDEVICE645": "9P39QkLjG5MhSQVTa5Bwvn1ETHI6aRYVbhgpCwkVXnI"
24213+ },
24214+ "signatures": {
24215+ "@alice_645:hs1": {
24216+ "ed25519:ALICEDEVICE645": "Ozfx1QhBEgR1uXw5p5TFI4k0FXEYUX/CNwUBgmN+UNh9mvfmKZAyO76U46pT51y8COeqgs7cS624lKaqVDDbCQ"
24217+ }
24218+ },
24219+ "user_id": "@alice_645:hs1",
24220+ "unsigned": {}
24221+ }
24222+ },
24223+ "@alice_65:hs1": {
24224+ "ALICEDEVICE65": {
24225+ "algorithms": [
24226+ "m.olm.v1.curve25519-aes-sha2",
24227+ "m.megolm.v1.aes-sha2"
24228+ ],
24229+ "device_id": "ALICEDEVICE65",
24230+ "keys": {
24231+ "curve25519:ALICEDEVICE65": "OdCYoMcKNvhcPLnrVHh5rBVEWYzR5Srefi/rgnJvIG4",
24232+ "ed25519:ALICEDEVICE65": "4fj5O6NgHUsTjk3onfqmc1+ajzFedCYXAc0bwtwqfK8"
24233+ },
24234+ "signatures": {
24235+ "@alice_65:hs1": {
24236+ "ed25519:ALICEDEVICE65": "46Pqv7FUW36Ce604s56VKAZxw8bVOGkz+qyEJOeTyxB7BG7FXcQ/MceX3zqg+V4nnssvTso+JO1t+cgkTejSCA"
24237+ }
24238+ },
24239+ "user_id": "@alice_65:hs1",
24240+ "unsigned": {}
24241+ }
24242+ },
24243+ "@alice_661:hs1": {
24244+ "ALICEDEVICE661": {
24245+ "algorithms": [
24246+ "m.olm.v1.curve25519-aes-sha2",
24247+ "m.megolm.v1.aes-sha2"
24248+ ],
24249+ "device_id": "ALICEDEVICE661",
24250+ "keys": {
24251+ "curve25519:ALICEDEVICE661": "QfyHSBffg+/5YWrri7yJLwGNNWSQPfj4RbX8sQ37SQ0",
24252+ "ed25519:ALICEDEVICE661": "M0U9Dk5VuKd8OzOofSPKDjoZB7PE01OpW8XOdv5O6xo"
24253+ },
24254+ "signatures": {
24255+ "@alice_661:hs1": {
24256+ "ed25519:ALICEDEVICE661": "aYyWDcfSRQ9S7qi2ECInQTdFAuuIBMHNTwA3TC2WkbBVoycfY7FKUjGAnooNvxhEmu4nSK7gBqFOVVJNUlZNAA"
24257+ }
24258+ },
24259+ "user_id": "@alice_661:hs1",
24260+ "unsigned": {}
24261+ }
24262+ },
24263+ "@alice_665:hs1": {
24264+ "ALICEDEVICE665": {
24265+ "algorithms": [
24266+ "m.olm.v1.curve25519-aes-sha2",
24267+ "m.megolm.v1.aes-sha2"
24268+ ],
24269+ "device_id": "ALICEDEVICE665",
24270+ "keys": {
24271+ "curve25519:ALICEDEVICE665": "HDHQqDBW4LiUE4GJAryL28oAFZlSmFzyVNYKZ4MTJDA",
24272+ "ed25519:ALICEDEVICE665": "G2eMsRRYRqaJ1y1AN4CTFVifpOHpn1K8cr4B/bHjQzs"
24273+ },
24274+ "signatures": {
24275+ "@alice_665:hs1": {
24276+ "ed25519:ALICEDEVICE665": "oDA8Uml91j4LZN801ogTMZaqcXeTAbopEziIkNfObsHU9nbsOcuoPQ2OFeBj2TGEuSYYolJ/1wWo/MWfnbMTDA"
24277+ }
24278+ },
24279+ "user_id": "@alice_665:hs1",
24280+ "unsigned": {}
24281+ }
24282+ },
24283+ "@alice_666:hs1": {
24284+ "ALICEDEVICE666": {
24285+ "algorithms": [
24286+ "m.olm.v1.curve25519-aes-sha2",
24287+ "m.megolm.v1.aes-sha2"
24288+ ],
24289+ "device_id": "ALICEDEVICE666",
24290+ "keys": {
24291+ "curve25519:ALICEDEVICE666": "/Am4iLA2v4c/CLp+CV9Vv09FB4o2lqafeeKm/uJsZAQ",
24292+ "ed25519:ALICEDEVICE666": "eDpeQKKTVKx3n7kU4ebx+esbdnxBCha+TbwsJUBq0CA"
24293+ },
24294+ "signatures": {
24295+ "@alice_666:hs1": {
24296+ "ed25519:ALICEDEVICE666": "6hpVUmui0rJ4t088Hr0VxdFuBmLfCmoVgyyuVAGey6xzp/ARSrLylxrwRIUengQA9EDHnxXBYsrN7osDivcuAw"
24297+ }
24298+ },
24299+ "user_id": "@alice_666:hs1",
24300+ "unsigned": {}
24301+ }
24302+ },
24303+ "@alice_66:hs1": {
24304+ "ALICEDEVICE66": {
24305+ "algorithms": [
24306+ "m.olm.v1.curve25519-aes-sha2",
24307+ "m.megolm.v1.aes-sha2"
24308+ ],
24309+ "device_id": "ALICEDEVICE66",
24310+ "keys": {
24311+ "curve25519:ALICEDEVICE66": "tnRWSJMZVQx5RUe3PvWt8sxiewedoLx0KpjuXK39CyY",
24312+ "ed25519:ALICEDEVICE66": "CefY/q53yAWnmN2SLGvd5e9jPHZshhGpjlBDmriHvt8"
24313+ },
24314+ "signatures": {
24315+ "@alice_66:hs1": {
24316+ "ed25519:ALICEDEVICE66": "/AXUA30Zlvk2uJaeUCFqjesR2PEGP/iabXRzwTfLFEBT9d26uErn5RM74MxruSHsQe+lD4MK9G6prBptH/nkCA"
24317+ }
24318+ },
24319+ "user_id": "@alice_66:hs1",
24320+ "unsigned": {}
24321+ }
24322+ },
24323+ "@alice_671:hs1": {
24324+ "ALICEDEVICE671": {
24325+ "algorithms": [
24326+ "m.olm.v1.curve25519-aes-sha2",
24327+ "m.megolm.v1.aes-sha2"
24328+ ],
24329+ "device_id": "ALICEDEVICE671",
24330+ "keys": {
24331+ "curve25519:ALICEDEVICE671": "H16BvwSxpd0n2df8h49wwh9lTq56mYaWas/VrCmyfGI",
24332+ "ed25519:ALICEDEVICE671": "3FEdmRN6aNRkpXjp8QCKNke0G4MbQSe0iRWCnFeabq4"
24333+ },
24334+ "signatures": {
24335+ "@alice_671:hs1": {
24336+ "ed25519:ALICEDEVICE671": "i38pf9lNYJCq0k0YSyVeUXHnmiRPDU3Xggw61R2obIQNmWKTjVfohd9zcl87g+jnAYGlrgi6yZUhXwgEymEDDA"
24337+ }
24338+ },
24339+ "user_id": "@alice_671:hs1",
24340+ "unsigned": {}
24341+ }
24342+ },
24343+ "@alice_673:hs1": {
24344+ "ALICEDEVICE673": {
24345+ "algorithms": [
24346+ "m.olm.v1.curve25519-aes-sha2",
24347+ "m.megolm.v1.aes-sha2"
24348+ ],
24349+ "device_id": "ALICEDEVICE673",
24350+ "keys": {
24351+ "curve25519:ALICEDEVICE673": "gJwZsWWvPYYBm/xkGcOtTzYT0IHSuCOeWUfQ5tNwTX8",
24352+ "ed25519:ALICEDEVICE673": "+th9Fxri5r4kCOTIb/oRDth+KsVEg8w9REj9pHfBSEU"
24353+ },
24354+ "signatures": {
24355+ "@alice_673:hs1": {
24356+ "ed25519:ALICEDEVICE673": "XXcfYfSi8QROTlKbZUjQA2qYB7U1R0ExoCLFFVE9Re17cKCAjpDmCN9+YL48Nq+KIeRckDhdcIdw08AfLyCuCw"
24357+ }
24358+ },
24359+ "user_id": "@alice_673:hs1",
24360+ "unsigned": {}
24361+ }
24362+ },
24363+ "@alice_685:hs1": {
24364+ "ALICEDEVICE685": {
24365+ "algorithms": [
24366+ "m.olm.v1.curve25519-aes-sha2",
24367+ "m.megolm.v1.aes-sha2"
24368+ ],
24369+ "device_id": "ALICEDEVICE685",
24370+ "keys": {
24371+ "curve25519:ALICEDEVICE685": "f3/TGzV9In7qr7B0K5sBFfIvlVJP/FSZCYVtGCV0ng4",
24372+ "ed25519:ALICEDEVICE685": "I+8fE1hNy9gT+z/n29VO72iXjRWACDzBRC3oWR9pozI"
24373+ },
24374+ "signatures": {
24375+ "@alice_685:hs1": {
24376+ "ed25519:ALICEDEVICE685": "Akf16K4E61ZuskmQ44ruH+dAXvFHo6QoZjswmPL9cAU3bUcfa1Y9tV5R/dHkCWs5ooIdmT21MRXGypJ9a5KYBQ"
24377+ }
24378+ },
24379+ "user_id": "@alice_685:hs1",
24380+ "unsigned": {}
24381+ }
24382+ },
24383+ "@alice_691:hs1": {
24384+ "ALICEDEVICE691": {
24385+ "algorithms": [
24386+ "m.olm.v1.curve25519-aes-sha2",
24387+ "m.megolm.v1.aes-sha2"
24388+ ],
24389+ "device_id": "ALICEDEVICE691",
24390+ "keys": {
24391+ "curve25519:ALICEDEVICE691": "Zyp7QrKwf5Zj7r3ULgHdPEDodqFFhweYirdU+MU42Hs",
24392+ "ed25519:ALICEDEVICE691": "/C8Gt0kC5CuKJJLy1U+2wXnCqnzoJkvnf2WuLlIiN/8"
24393+ },
24394+ "signatures": {
24395+ "@alice_691:hs1": {
24396+ "ed25519:ALICEDEVICE691": "mb5IjngmUftBVRu/AP4ZaFVrY564HVaVHRFNtgvqOQtS3vaQb6ONv8+96xbz3urfYfayLTvHk7xzb1ZGxV+3DQ"
24397+ }
24398+ },
24399+ "user_id": "@alice_691:hs1",
24400+ "unsigned": {}
24401+ }
24402+ },
24403+ "@alice_692:hs1": {
24404+ "ALICEDEVICE692": {
24405+ "algorithms": [
24406+ "m.olm.v1.curve25519-aes-sha2",
24407+ "m.megolm.v1.aes-sha2"
24408+ ],
24409+ "device_id": "ALICEDEVICE692",
24410+ "keys": {
24411+ "curve25519:ALICEDEVICE692": "8gyQJr+M5bV+bGINylu0yC9adAWlmA4iy2cQHDFKcCw",
24412+ "ed25519:ALICEDEVICE692": "p2OqRb/Cnnks3BDYp4RmhOD65WboYu1NdduBQvY/lbA"
24413+ },
24414+ "signatures": {
24415+ "@alice_692:hs1": {
24416+ "ed25519:ALICEDEVICE692": "WWlik0pfgAiFsW/Op3vAPV2WF57QJQgJbMdcMCmFYH640YRsUGXEdec33j+sKedzFz1Et48Rcpc2xaGCS8CZAw"
24417+ }
24418+ },
24419+ "user_id": "@alice_692:hs1",
24420+ "unsigned": {}
24421+ }
24422+ },
24423+ "@alice_694:hs1": {
24424+ "ALICEDEVICE694": {
24425+ "algorithms": [
24426+ "m.olm.v1.curve25519-aes-sha2",
24427+ "m.megolm.v1.aes-sha2"
24428+ ],
24429+ "device_id": "ALICEDEVICE694",
24430+ "keys": {
24431+ "curve25519:ALICEDEVICE694": "f9a9sTtuGmNK/opeQNT3ECeeNarlTSfD5Lw4NH6qvF0",
24432+ "ed25519:ALICEDEVICE694": "gHkEyAYW3z8x8FvwnDr0GV7u1KGn+EpqU22ehptHNFY"
24433+ },
24434+ "signatures": {
24435+ "@alice_694:hs1": {
24436+ "ed25519:ALICEDEVICE694": "l2nLdtSx+d274MS2f+ypGVDgvc0kv85F0Pk6m1WYRzhFMdPAlFYrutwHtJ+t/pOY4ZDfYs3+ILT0R2Ph9TBmBA"
24437+ }
24438+ },
24439+ "user_id": "@alice_694:hs1",
24440+ "unsigned": {}
24441+ }
24442+ },
24443+ "@alice_708:hs1": {
24444+ "ALICEDEVICE708": {
24445+ "algorithms": [
24446+ "m.olm.v1.curve25519-aes-sha2",
24447+ "m.megolm.v1.aes-sha2"
24448+ ],
24449+ "device_id": "ALICEDEVICE708",
24450+ "keys": {
24451+ "curve25519:ALICEDEVICE708": "exhZrv+Tf9T6zgJ36pL4P2lkT6phV20yqH2A+sqVDgI",
24452+ "ed25519:ALICEDEVICE708": "orhEuwTCO3DDegTKyTos7FhGdUrfoem4hqwecSzzMQ8"
24453+ },
24454+ "signatures": {
24455+ "@alice_708:hs1": {
24456+ "ed25519:ALICEDEVICE708": "s01WPOVldBuV9J973FXYWeVTaX10gGyvC6U9cyRsb4tpHlB9f70Gd//NxnH41EtJJDbJnTn7+iZzHDvM8j/yDg"
24457+ }
24458+ },
24459+ "user_id": "@alice_708:hs1",
24460+ "unsigned": {}
24461+ }
24462+ },
24463+ "@alice_70:hs1": {
24464+ "ALICEDEVICE70": {
24465+ "algorithms": [
24466+ "m.olm.v1.curve25519-aes-sha2",
24467+ "m.megolm.v1.aes-sha2"
24468+ ],
24469+ "device_id": "ALICEDEVICE70",
24470+ "keys": {
24471+ "curve25519:ALICEDEVICE70": "ZEyKZpyPU+VsY19bm3FFvAvsQ6fkIyoR62PsomtiY2c",
24472+ "ed25519:ALICEDEVICE70": "+H+qSXJS9yv3bAw2lgNw60W2lhobjOCeqP+dGzz7rb4"
24473+ },
24474+ "signatures": {
24475+ "@alice_70:hs1": {
24476+ "ed25519:ALICEDEVICE70": "iZSYtsPvXbvpOzBYtXENF0ZqqhB86vMa94RhqflZYTo20v0W8/xLnGCD+HLrVvBS1t0J4JW0kBsKNUYdL0fIDA"
24477+ }
24478+ },
24479+ "user_id": "@alice_70:hs1",
24480+ "unsigned": {}
24481+ }
24482+ },
24483+ "@alice_710:hs1": {
24484+ "ALICEDEVICE710": {
24485+ "algorithms": [
24486+ "m.olm.v1.curve25519-aes-sha2",
24487+ "m.megolm.v1.aes-sha2"
24488+ ],
24489+ "device_id": "ALICEDEVICE710",
24490+ "keys": {
24491+ "curve25519:ALICEDEVICE710": "/iLPyg74OhPUGIZQ27uNY7SeaNI08aBwqcdRBeoa5GI",
24492+ "ed25519:ALICEDEVICE710": "WIAhqsYMIwG74I1rvuCp+kd/WHn9Bseh6rl7+k3vXXw"
24493+ },
24494+ "signatures": {
24495+ "@alice_710:hs1": {
24496+ "ed25519:ALICEDEVICE710": "YGtf2Y7dqgXN+PubBmawGsTj27evZHTr8Oz7P7Byrd7xxE5nUCVuor/JkN4dfZ4dd7jIHiFaAjjprviz+L2tDg"
24497+ }
24498+ },
24499+ "user_id": "@alice_710:hs1",
24500+ "unsigned": {}
24501+ }
24502+ },
24503+ "@alice_713:hs1": {
24504+ "ALICEDEVICE713": {
24505+ "algorithms": [
24506+ "m.olm.v1.curve25519-aes-sha2",
24507+ "m.megolm.v1.aes-sha2"
24508+ ],
24509+ "device_id": "ALICEDEVICE713",
24510+ "keys": {
24511+ "curve25519:ALICEDEVICE713": "XFFeznTNmfGGimnRrvxFVRUaTbPxGeeEnd1pdNOw/WE",
24512+ "ed25519:ALICEDEVICE713": "McujtiXLLVoBBPxznSWegIoPqnTtBhnwJXCJx6UbJjA"
24513+ },
24514+ "signatures": {
24515+ "@alice_713:hs1": {
24516+ "ed25519:ALICEDEVICE713": "VgGutsfBDts4SFaAu/2PGp2qzU3LQW9PMLH2mzMnyE0LaMcCA3tAR8RcOaMLO1W44SkPmZgCiJq0ZZSzGgvcDg"
24517+ }
24518+ },
24519+ "user_id": "@alice_713:hs1",
24520+ "unsigned": {}
24521+ }
24522+ },
24523+ "@alice_726:hs1": {
24524+ "ALICEDEVICE726": {
24525+ "algorithms": [
24526+ "m.olm.v1.curve25519-aes-sha2",
24527+ "m.megolm.v1.aes-sha2"
24528+ ],
24529+ "device_id": "ALICEDEVICE726",
24530+ "keys": {
24531+ "curve25519:ALICEDEVICE726": "dy4mEY3BFtCt3kYrtD8rZJXqhDE1bKldzHBYeqIJrns",
24532+ "ed25519:ALICEDEVICE726": "1tNlCDgQeioiR5k4Ez1dFQwBsXfHLvlhDTThUObP0wk"
24533+ },
24534+ "signatures": {
24535+ "@alice_726:hs1": {
24536+ "ed25519:ALICEDEVICE726": "ptEvQOXMKNaRVDgMKjQBrTt9luL6YjYJ7KLzKs6ho1m/65KaaPtVaMr2HS0l4b+Wl9AkmduARL9+1bjOQFXRCw"
24537+ }
24538+ },
24539+ "user_id": "@alice_726:hs1",
24540+ "unsigned": {}
24541+ }
24542+ },
24543+ "@alice_727:hs1": {
24544+ "ALICEDEVICE727": {
24545+ "algorithms": [
24546+ "m.olm.v1.curve25519-aes-sha2",
24547+ "m.megolm.v1.aes-sha2"
24548+ ],
24549+ "device_id": "ALICEDEVICE727",
24550+ "keys": {
24551+ "curve25519:ALICEDEVICE727": "x9UwRmn2UDT6Bg9e+ooa1ZHeWIpo6lUp5wDp2UQqzFw",
24552+ "ed25519:ALICEDEVICE727": "8/z4KLI6xOJxyvwzkaogQPfK7jihDQnjAwXwzmLzAYk"
24553+ },
24554+ "signatures": {
24555+ "@alice_727:hs1": {
24556+ "ed25519:ALICEDEVICE727": "Q567hfYyBuVBaRjRXaIeYihgsVUVTNB9UC4gDuKEKvPaY/vFXOYZQGxQu3xIx0NRZWa+EKZ/HUXoLtNm+yEeBw"
24557+ }
24558+ },
24559+ "user_id": "@alice_727:hs1",
24560+ "unsigned": {}
24561+ }
24562+ },
24563+ "@alice_752:hs1": {
24564+ "ALICEDEVICE752": {
24565+ "algorithms": [
24566+ "m.olm.v1.curve25519-aes-sha2",
24567+ "m.megolm.v1.aes-sha2"
24568+ ],
24569+ "device_id": "ALICEDEVICE752",
24570+ "keys": {
24571+ "curve25519:ALICEDEVICE752": "T1BqrsV679ltMGpbhy2VUmutafqwjXDhhY4kgTMci3w",
24572+ "ed25519:ALICEDEVICE752": "CkiqsiRKHv2BwWZiJf1EujgyYGQ1gqTPaKEbsBYrYic"
24573+ },
24574+ "signatures": {
24575+ "@alice_752:hs1": {
24576+ "ed25519:ALICEDEVICE752": "r4Z6IKOQiBOdoomxZNtCK1YrFaD3ShABs+66he6DZN+nUxzT5O13QreKL36OEkjBkgmCcp2lzvBoe3ZxFaVzBw"
24577+ }
24578+ },
24579+ "user_id": "@alice_752:hs1",
24580+ "unsigned": {}
24581+ }
24582+ },
24583+ "@alice_756:hs1": {
24584+ "ALICEDEVICE756": {
24585+ "algorithms": [
24586+ "m.olm.v1.curve25519-aes-sha2",
24587+ "m.megolm.v1.aes-sha2"
24588+ ],
24589+ "device_id": "ALICEDEVICE756",
24590+ "keys": {
24591+ "curve25519:ALICEDEVICE756": "JsjsWehyxWI+QjnMLAGd0Dxkf2welHRTdCrIHNDzdRk",
24592+ "ed25519:ALICEDEVICE756": "sMY4pnSre6L9dVnOvqERxRR5CLKOQhd1vUEmrLnupB4"
24593+ },
24594+ "signatures": {
24595+ "@alice_756:hs1": {
24596+ "ed25519:ALICEDEVICE756": "CFeaGgtAgb5XEUCGLbixgS2f/Dz+VzfsYG9ZSMXMO8yGpLwjStPq+7yJpRfQUIzHKpevv8pbzMhbPj4yE2u5DQ"
24597+ }
24598+ },
24599+ "user_id": "@alice_756:hs1",
24600+ "unsigned": {}
24601+ }
24602+ },
24603+ "@alice_761:hs1": {
24604+ "ALICEDEVICE761": {
24605+ "algorithms": [
24606+ "m.olm.v1.curve25519-aes-sha2",
24607+ "m.megolm.v1.aes-sha2"
24608+ ],
24609+ "device_id": "ALICEDEVICE761",
24610+ "keys": {
24611+ "curve25519:ALICEDEVICE761": "5VxQl8LitYUyqaykm7vvxO695gR+F2ZGwfWQy/zM8Fk",
24612+ "ed25519:ALICEDEVICE761": "sbby5euqvnqwRfi7c2XSSo0hM8B0jxytXpKIj3mxg9M"
24613+ },
24614+ "signatures": {
24615+ "@alice_761:hs1": {
24616+ "ed25519:ALICEDEVICE761": "Tex+GaEGqJlBDJ0mO/uZimkfDcndG956h/ovQeYP3Zp98PsS8CaTUSRas/u9utPxcev2UYqbHXBXPlWaneX8Bw"
24617+ }
24618+ },
24619+ "user_id": "@alice_761:hs1",
24620+ "unsigned": {}
24621+ }
24622+ },
24623+ "@alice_765:hs1": {
24624+ "ALICEDEVICE765": {
24625+ "algorithms": [
24626+ "m.olm.v1.curve25519-aes-sha2",
24627+ "m.megolm.v1.aes-sha2"
24628+ ],
24629+ "device_id": "ALICEDEVICE765",
24630+ "keys": {
24631+ "curve25519:ALICEDEVICE765": "DXU2HwFrzcUugCdfMvP1J5LAu3js9trgKvU6gdHT3Ug",
24632+ "ed25519:ALICEDEVICE765": "MFRSGesMKyBcmbIEH5QZoG3zHdpLJXLXzLtNMVGWDDU"
24633+ },
24634+ "signatures": {
24635+ "@alice_765:hs1": {
24636+ "ed25519:ALICEDEVICE765": "cVcF0X2OnEY/pn+skxj2wp+ls80dwj7EJjhwU41MPDT0C6EEFu9Cd2HmAl+dvODjVVbnttZttRb0Y8U4EbDrBg"
24637+ }
24638+ },
24639+ "user_id": "@alice_765:hs1",
24640+ "unsigned": {}
24641+ }
24642+ },
24643+ "@alice_774:hs1": {
24644+ "ALICEDEVICE774": {
24645+ "algorithms": [
24646+ "m.olm.v1.curve25519-aes-sha2",
24647+ "m.megolm.v1.aes-sha2"
24648+ ],
24649+ "device_id": "ALICEDEVICE774",
24650+ "keys": {
24651+ "curve25519:ALICEDEVICE774": "VYQ513YljtKo2zqWB3UtbA49vlToO2jcGV6InV7BmBM",
24652+ "ed25519:ALICEDEVICE774": "r3LWV/RxjNMg58bxoltXiA/hAzPPCfqibP9JHvYQI6s"
24653+ },
24654+ "signatures": {
24655+ "@alice_774:hs1": {
24656+ "ed25519:ALICEDEVICE774": "vyE2gje+82GcN6/zuwf1pDZkze60QTpl7HJu1A8DOtc+rV20r3MMuGEcSxZmeWMzAFpSfU6xlLgSc1vCHqr0Bw"
24657+ }
24658+ },
24659+ "user_id": "@alice_774:hs1",
24660+ "unsigned": {}
24661+ }
24662+ },
24663+ "@alice_780:hs1": {
24664+ "ALICEDEVICE780": {
24665+ "algorithms": [
24666+ "m.olm.v1.curve25519-aes-sha2",
24667+ "m.megolm.v1.aes-sha2"
24668+ ],
24669+ "device_id": "ALICEDEVICE780",
24670+ "keys": {
24671+ "curve25519:ALICEDEVICE780": "DAUdyU5762E3468K/J4tQZkV9zvZRpdQflhCSiVgtTE",
24672+ "ed25519:ALICEDEVICE780": "MWk6mparEwji8mjDv6SdDRsqc2pAU7NZCYSgMYqd8Fg"
24673+ },
24674+ "signatures": {
24675+ "@alice_780:hs1": {
24676+ "ed25519:ALICEDEVICE780": "Hda6WmQjyNoto0BOOB3s2ZKrB2RQBqf8e5srJueMo6xlsQR7cug3oCsvQ7geeXBNyeFlFdMGksi8DAAf5SF3CA"
24677+ }
24678+ },
24679+ "user_id": "@alice_780:hs1",
24680+ "unsigned": {}
24681+ }
24682+ },
24683+ "@alice_789:hs1": {
24684+ "ALICEDEVICE789": {
24685+ "algorithms": [
24686+ "m.olm.v1.curve25519-aes-sha2",
24687+ "m.megolm.v1.aes-sha2"
24688+ ],
24689+ "device_id": "ALICEDEVICE789",
24690+ "keys": {
24691+ "curve25519:ALICEDEVICE789": "7gWX+oodwLFCyPPaOLcl6DlA/9OXQg4Z6miJO55mAic",
24692+ "ed25519:ALICEDEVICE789": "g75eoZBfEmLnL/gR7ASgl5rDlk+39dyfXbyg9R9mskg"
24693+ },
24694+ "signatures": {
24695+ "@alice_789:hs1": {
24696+ "ed25519:ALICEDEVICE789": "gFNOaOsVAlD9TbgMfXTzZtvE9jWB5Bs6H41kOkro53qgdWXXd9yfyHgux766yGqXye6EHvNVnJOX5ukQjTHZDg"
24697+ }
24698+ },
24699+ "user_id": "@alice_789:hs1",
24700+ "unsigned": {}
24701+ }
24702+ },
24703+ "@alice_793:hs1": {
24704+ "ALICEDEVICE793": {
24705+ "algorithms": [
24706+ "m.olm.v1.curve25519-aes-sha2",
24707+ "m.megolm.v1.aes-sha2"
24708+ ],
24709+ "device_id": "ALICEDEVICE793",
24710+ "keys": {
24711+ "curve25519:ALICEDEVICE793": "mRXaP53sTNlnFm9z9AGzDxcsYMAQN3XscB6HS6f2nUU",
24712+ "ed25519:ALICEDEVICE793": "dpDMz+dMM19+rhIFeZIsCI3esmeAmu3uso+JgVS9LR8"
24713+ },
24714+ "signatures": {
24715+ "@alice_793:hs1": {
24716+ "ed25519:ALICEDEVICE793": "zd+KKIjwwYzaskyJOVoEjpXuTLfc//W/Ub3j+eVqprGW9dbuZZW86fm5vV6PIoxQkuayVS/7wYmPeZIYR4WKAg"
24717+ }
24718+ },
24719+ "user_id": "@alice_793:hs1",
24720+ "unsigned": {}
24721+ }
24722+ },
24723+ "@alice_803:hs1": {
24724+ "ALICEDEVICE803": {
24725+ "algorithms": [
24726+ "m.olm.v1.curve25519-aes-sha2",
24727+ "m.megolm.v1.aes-sha2"
24728+ ],
24729+ "device_id": "ALICEDEVICE803",
24730+ "keys": {
24731+ "curve25519:ALICEDEVICE803": "vGjQ1b4rwTDxRcoU8jBs4ZOYPOD38htm5bPAiZElAAU",
24732+ "ed25519:ALICEDEVICE803": "N7bmo1pForG9qgQYnmFPDtrzHW7TN+6ONjNtTIU2sas"
24733+ },
24734+ "signatures": {
24735+ "@alice_803:hs1": {
24736+ "ed25519:ALICEDEVICE803": "7DTFaOK1HxsgVt0CrOFQuDP1wxTuA8l/qtB3k+pZ/i94NQ4vJyv8L9DCQ1zOG0ee0D/GvR4CUzaOiYsGM6SLAw"
24737+ }
24738+ },
24739+ "user_id": "@alice_803:hs1",
24740+ "unsigned": {}
24741+ }
24742+ },
24743+ "@alice_811:hs1": {
24744+ "ALICEDEVICE811": {
24745+ "algorithms": [
24746+ "m.olm.v1.curve25519-aes-sha2",
24747+ "m.megolm.v1.aes-sha2"
24748+ ],
24749+ "device_id": "ALICEDEVICE811",
24750+ "keys": {
24751+ "curve25519:ALICEDEVICE811": "0lBBZLntKacP4qouFPe8X9GXu/P9wA1vBA+FToVO3Dw",
24752+ "ed25519:ALICEDEVICE811": "moqZOsl2Yal21eUw4QpfJPTyNfrAkeX+SrKjh+R/4c4"
24753+ },
24754+ "signatures": {
24755+ "@alice_811:hs1": {
24756+ "ed25519:ALICEDEVICE811": "WtPFPwTsNxnJBep5E5YFraaKNOMXGKDRcqZxibFN+0+2Wp7UUv0V70dQKwRAghYv04NZv2SlCbCoUc9XCoJQDA"
24757+ }
24758+ },
24759+ "user_id": "@alice_811:hs1",
24760+ "unsigned": {}
24761+ }
24762+ },
24763+ "@alice_827:hs1": {
24764+ "ALICEDEVICE827": {
24765+ "algorithms": [
24766+ "m.olm.v1.curve25519-aes-sha2",
24767+ "m.megolm.v1.aes-sha2"
24768+ ],
24769+ "device_id": "ALICEDEVICE827",
24770+ "keys": {
24771+ "curve25519:ALICEDEVICE827": "StGzzhHoORG5voEjXp53z2jvuAVDq9HnTlhNet2oRR4",
24772+ "ed25519:ALICEDEVICE827": "/YsUr/YZjIY3XnsBhdewRvKbFg6JH2yRKTT55/Z6H8A"
24773+ },
24774+ "signatures": {
24775+ "@alice_827:hs1": {
24776+ "ed25519:ALICEDEVICE827": "UxPitDFRht7i5vrqEwX/jYnPYvqLWQG++eRyFHvNiT4tBiS+lcasIf9wGvBeFWCf/tdBEJJqBWNeq87SJfExAw"
24777+ }
24778+ },
24779+ "user_id": "@alice_827:hs1",
24780+ "unsigned": {}
24781+ }
24782+ },
24783+ "@alice_829:hs1": {
24784+ "ALICEDEVICE829": {
24785+ "algorithms": [
24786+ "m.olm.v1.curve25519-aes-sha2",
24787+ "m.megolm.v1.aes-sha2"
24788+ ],
24789+ "device_id": "ALICEDEVICE829",
24790+ "keys": {
24791+ "curve25519:ALICEDEVICE829": "LLAzTJ5qi9/scSEnQLHE0m8bG0iQMlgOu+BQFmy3oVM",
24792+ "ed25519:ALICEDEVICE829": "Fd6EG+mVGGC5ERMbi5/223KDc83ykOsseNgIbqwva60"
24793+ },
24794+ "signatures": {
24795+ "@alice_829:hs1": {
24796+ "ed25519:ALICEDEVICE829": "yBAbJx0GO4zkiREiHEcxcsl51JA+jhsXejuclUC6CMxhlm5L1NSWvHVvoFvwQfuhliVdtDmWZJl5hnPtcKzvAw"
24797+ }
24798+ },
24799+ "user_id": "@alice_829:hs1",
24800+ "unsigned": {}
24801+ }
24802+ },
24803+ "@alice_832:hs1": {
24804+ "ALICEDEVICE832": {
24805+ "algorithms": [
24806+ "m.olm.v1.curve25519-aes-sha2",
24807+ "m.megolm.v1.aes-sha2"
24808+ ],
24809+ "device_id": "ALICEDEVICE832",
24810+ "keys": {
24811+ "curve25519:ALICEDEVICE832": "LJgZwo5nUeQmbri+RYLblapUCoRUvHoFq2AewT84TRc",
24812+ "ed25519:ALICEDEVICE832": "vTwSbQnagUmcc0GVOdRV5tCq4Co8NviE6HfJjw6GUis"
24813+ },
24814+ "signatures": {
24815+ "@alice_832:hs1": {
24816+ "ed25519:ALICEDEVICE832": "Vut3GAgfeqnWI3KjUxwZLwKVjfUjpV+m4AEi8BzVIZX2FZ9Nz4LoHBdZAj5gLXC2+J5JRhizbYsgaTEmnLgLDA"
24817+ }
24818+ },
24819+ "user_id": "@alice_832:hs1",
24820+ "unsigned": {}
24821+ }
24822+ },
24823+ "@alice_843:hs1": {
24824+ "ALICEDEVICE843": {
24825+ "algorithms": [
24826+ "m.olm.v1.curve25519-aes-sha2",
24827+ "m.megolm.v1.aes-sha2"
24828+ ],
24829+ "device_id": "ALICEDEVICE843",
24830+ "keys": {
24831+ "curve25519:ALICEDEVICE843": "HhQB3Gqg/p56LWRc6T8FGjcflMHl7mCEz/4AeFclTkk",
24832+ "ed25519:ALICEDEVICE843": "Mb6zKZuNfya6qZrH3JHTPuGJgl22Qaw0vPP8N+J8M3k"
24833+ },
24834+ "signatures": {
24835+ "@alice_843:hs1": {
24836+ "ed25519:ALICEDEVICE843": "s2bUHcXYB9CkUV3E4HWDQQvLCj06Tr22Sf4U1EV0r//Je8495x3iah1Aoih89vxR1eVYWeP+dsxKoOB4ZZzMCw"
24837+ }
24838+ },
24839+ "user_id": "@alice_843:hs1",
24840+ "unsigned": {}
24841+ }
24842+ },
24843+ "@alice_844:hs1": {
24844+ "ALICEDEVICE844": {
24845+ "algorithms": [
24846+ "m.olm.v1.curve25519-aes-sha2",
24847+ "m.megolm.v1.aes-sha2"
24848+ ],
24849+ "device_id": "ALICEDEVICE844",
24850+ "keys": {
24851+ "curve25519:ALICEDEVICE844": "t7Qm+wqKx/4xqXnwIl9T9JptU7zPHFYg6IvspkdBKHM",
24852+ "ed25519:ALICEDEVICE844": "GRkMXORe+JIC00HziG6UcdYupj9d36PQZiyfO+NDlc8"
24853+ },
24854+ "signatures": {
24855+ "@alice_844:hs1": {
24856+ "ed25519:ALICEDEVICE844": "NP38WwhmZ5BLc0AhJMihAdK/T16F0eJkHbQyLpRf/p/TFBHyL5fbinj6oemXxaff+l4Kt/DH7gdZOTYxYEZaAA"
24857+ }
24858+ },
24859+ "user_id": "@alice_844:hs1",
24860+ "unsigned": {}
24861+ }
24862+ },
24863+ "@alice_846:hs1": {
24864+ "ALICEDEVICE846": {
24865+ "algorithms": [
24866+ "m.olm.v1.curve25519-aes-sha2",
24867+ "m.megolm.v1.aes-sha2"
24868+ ],
24869+ "device_id": "ALICEDEVICE846",
24870+ "keys": {
24871+ "curve25519:ALICEDEVICE846": "ffGGCfU/u5yodDqyXjfZDtGiES+AYr60oUd606Ly+zI",
24872+ "ed25519:ALICEDEVICE846": "Ye6BbuNtYrIZ1hg6jc1URCP6q76tYMiok9SDbTSRGpU"
24873+ },
24874+ "signatures": {
24875+ "@alice_846:hs1": {
24876+ "ed25519:ALICEDEVICE846": "cAelOMgKW7m45TsQ3YkR98y/1y9Q5g6ml7npR28YhisSMWA0K74A4FxyeR8u05rW/XxlBh9+TrUl27rpD4KoAw"
24877+ }
24878+ },
24879+ "user_id": "@alice_846:hs1",
24880+ "unsigned": {}
24881+ }
24882+ },
24883+ "@alice_850:hs1": {
24884+ "ALICEDEVICE850": {
24885+ "algorithms": [
24886+ "m.olm.v1.curve25519-aes-sha2",
24887+ "m.megolm.v1.aes-sha2"
24888+ ],
24889+ "device_id": "ALICEDEVICE850",
24890+ "keys": {
24891+ "curve25519:ALICEDEVICE850": "A+mMw+6mye6kUow1fFM4+Wz+KqbF0tvKCeHzcYtWfBM",
24892+ "ed25519:ALICEDEVICE850": "B5qDYYYr/3LDovYxzoWhiNzTnd9fua7DfE6rpwoMmJc"
24893+ },
24894+ "signatures": {
24895+ "@alice_850:hs1": {
24896+ "ed25519:ALICEDEVICE850": "0j8BkputvR150MO2hrjBgc2yoyX4XbqA2yFy9BL8OqPD1J940xkZqa0Ctn889oUy+aMmYq7nyC++B4u//sFRBg"
24897+ }
24898+ },
24899+ "user_id": "@alice_850:hs1",
24900+ "unsigned": {}
24901+ }
24902+ },
24903+ "@alice_856:hs1": {
24904+ "ALICEDEVICE856": {
24905+ "algorithms": [
24906+ "m.olm.v1.curve25519-aes-sha2",
24907+ "m.megolm.v1.aes-sha2"
24908+ ],
24909+ "device_id": "ALICEDEVICE856",
24910+ "keys": {
24911+ "curve25519:ALICEDEVICE856": "NB7MB0KvbnsSayIm5WUX3JyLBKrrOxChg4VPzVSGXXw",
24912+ "ed25519:ALICEDEVICE856": "gQ7H7290yIFUqoCabcmJFPbV3PygSW0pa0hbnXyAr70"
24913+ },
24914+ "signatures": {
24915+ "@alice_856:hs1": {
24916+ "ed25519:ALICEDEVICE856": "CRACHdYtznagwb/9oXyqeHDWOHzt9qtHVrlJ8TYxA43GCWF8BKtfnm5rkyt43efQCoBVY5zMGDEjtA1TjaybDQ"
24917+ }
24918+ },
24919+ "user_id": "@alice_856:hs1",
24920+ "unsigned": {}
24921+ }
24922+ },
24923+ "@alice_859:hs1": {
24924+ "ALICEDEVICE859": {
24925+ "algorithms": [
24926+ "m.olm.v1.curve25519-aes-sha2",
24927+ "m.megolm.v1.aes-sha2"
24928+ ],
24929+ "device_id": "ALICEDEVICE859",
24930+ "keys": {
24931+ "curve25519:ALICEDEVICE859": "l8W2+gA4efTbjzyqNbFSmFokZHcOLTGsuVpblIzNn1Y",
24932+ "ed25519:ALICEDEVICE859": "US584CMoBbw1nY893SLqafTI/AOqfp5nAZiZtLtAEqc"
24933+ },
24934+ "signatures": {
24935+ "@alice_859:hs1": {
24936+ "ed25519:ALICEDEVICE859": "pFmGWZikylyRdI63PKIkhZQjtYSK0lcGa4EzRMll3lpR0iy5Es/ShrMzj5/oImbfhXnfO1vaTnP0VSCvSRx4CA"
24937+ }
24938+ },
24939+ "user_id": "@alice_859:hs1",
24940+ "unsigned": {}
24941+ }
24942+ },
24943+ "@alice_866:hs1": {
24944+ "ALICEDEVICE866": {
24945+ "algorithms": [
24946+ "m.olm.v1.curve25519-aes-sha2",
24947+ "m.megolm.v1.aes-sha2"
24948+ ],
24949+ "device_id": "ALICEDEVICE866",
24950+ "keys": {
24951+ "curve25519:ALICEDEVICE866": "mmWc4HjYxFcn71MIG3r8/jbAr4ueTnafqMxsFnFgK14",
24952+ "ed25519:ALICEDEVICE866": "p+dSk4w+f3+JsP4djjiuf/ds09TvGYJ/+yuJf674EcE"
24953+ },
24954+ "signatures": {
24955+ "@alice_866:hs1": {
24956+ "ed25519:ALICEDEVICE866": "sBBAo6myUWXejbdehhI4fIQWW9RX/VbizsVbZlgqRXQBsESzD/hVspmWUcpAl0iTD541mOQ7Oz92EhlCU+YbCw"
24957+ }
24958+ },
24959+ "user_id": "@alice_866:hs1",
24960+ "unsigned": {}
24961+ }
24962+ },
24963+ "@alice_874:hs1": {
24964+ "ALICEDEVICE874": {
24965+ "algorithms": [
24966+ "m.olm.v1.curve25519-aes-sha2",
24967+ "m.megolm.v1.aes-sha2"
24968+ ],
24969+ "device_id": "ALICEDEVICE874",
24970+ "keys": {
24971+ "curve25519:ALICEDEVICE874": "TPc9YZM5Cej20uZx8Ov3ODO8ZJRaPvi4dcQM4goOK1w",
24972+ "ed25519:ALICEDEVICE874": "AX0IIdwrkZSMIKEe2hbvEDGkVXBEgYwazuXM9KWnhNw"
24973+ },
24974+ "signatures": {
24975+ "@alice_874:hs1": {
24976+ "ed25519:ALICEDEVICE874": "vBKmK1gla3KoAO2c50Wzwtqk5F0VNIxUoV45/MWlUm4Gjy0VllCCDLu85NNq7wne0JqvU5g/0cKD1B9eAP1BCA"
24977+ }
24978+ },
24979+ "user_id": "@alice_874:hs1",
24980+ "unsigned": {}
24981+ }
24982+ },
24983+ "@alice_901:hs1": {
24984+ "ALICEDEVICE901": {
24985+ "algorithms": [
24986+ "m.olm.v1.curve25519-aes-sha2",
24987+ "m.megolm.v1.aes-sha2"
24988+ ],
24989+ "device_id": "ALICEDEVICE901",
24990+ "keys": {
24991+ "curve25519:ALICEDEVICE901": "J4sM2vFuOXAj675Ic/xzE62Ss/YvE1rc2392P7kASRk",
24992+ "ed25519:ALICEDEVICE901": "vyf2KtpfwnX3+3odhGBB5FBF8bZA6vJRLo9RfT94fLQ"
24993+ },
24994+ "signatures": {
24995+ "@alice_901:hs1": {
24996+ "ed25519:ALICEDEVICE901": "QYPkMdmKzV+ERq5or/6eZMfFEEJDfTMN9u52Ppm22kHwWYXLUmDBvsBf/MYlNVP0n8d+WsmJAqm1JfbiD0Y+CQ"
24997+ }
24998+ },
24999+ "user_id": "@alice_901:hs1",
25000+ "unsigned": {}
25001+ }
25002+ },
25003+ "@alice_904:hs1": {
25004+ "ALICEDEVICE904": {
25005+ "algorithms": [
25006+ "m.olm.v1.curve25519-aes-sha2",
25007+ "m.megolm.v1.aes-sha2"
25008+ ],
25009+ "device_id": "ALICEDEVICE904",
25010+ "keys": {
25011+ "curve25519:ALICEDEVICE904": "5rzRp1veD+tmAVCe9earCfveDpf1Lv7FqQDebTFG9DY",
25012+ "ed25519:ALICEDEVICE904": "8t3ILk/wqf/+rY5rRTZBKMlvB7YWCjqspw4STZqK3jI"
25013+ },
25014+ "signatures": {
25015+ "@alice_904:hs1": {
25016+ "ed25519:ALICEDEVICE904": "bSKH60YXKL0Y54YC+sNnoNjgcSLJgvmXfLzU2F8STbOKUmJcDxAzBffDxJqWWAjFSD9mcxh704hlDGyHcwOSDw"
25017+ }
25018+ },
25019+ "user_id": "@alice_904:hs1",
25020+ "unsigned": {}
25021+ }
25022+ },
25023+ "@alice_909:hs1": {
25024+ "ALICEDEVICE909": {
25025+ "algorithms": [
25026+ "m.olm.v1.curve25519-aes-sha2",
25027+ "m.megolm.v1.aes-sha2"
25028+ ],
25029+ "device_id": "ALICEDEVICE909",
25030+ "keys": {
25031+ "curve25519:ALICEDEVICE909": "PzHa49yMBb1RMbl4uMhclwl2v/N7/+bYsWj5royWbWk",
25032+ "ed25519:ALICEDEVICE909": "yvB/mQtOcQPz31HYZTYKNjCDvSo+96ieGxpL0cDLQUM"
25033+ },
25034+ "signatures": {
25035+ "@alice_909:hs1": {
25036+ "ed25519:ALICEDEVICE909": "NLVoqDTxM4ASEC2rAyxzzlBI5ujws2g8GaQJuQa6xx3jwgZSEJ23Lcov4h0EJLCwcVG5k/QJ5TUX0ALw9PCqAw"
25037+ }
25038+ },
25039+ "user_id": "@alice_909:hs1",
25040+ "unsigned": {}
25041+ }
25042+ },
25043+ "@alice_912:hs1": {
25044+ "ALICEDEVICE912": {
25045+ "algorithms": [
25046+ "m.olm.v1.curve25519-aes-sha2",
25047+ "m.megolm.v1.aes-sha2"
25048+ ],
25049+ "device_id": "ALICEDEVICE912",
25050+ "keys": {
25051+ "curve25519:ALICEDEVICE912": "5SVTa+QlmxNEwvu1Cy7uV23BcIz0Lrqh0xHFYjhki1M",
25052+ "ed25519:ALICEDEVICE912": "O9rPsNTL3ccSY0LLN1DdJrec4sfkt3LMjNTNbGbcCCg"
25053+ },
25054+ "signatures": {
25055+ "@alice_912:hs1": {
25056+ "ed25519:ALICEDEVICE912": "KLwqL8HJACb/9iv19+d6vV9RD0zTWG1WrNhhWZA2geMCQCfDAKkwctpuIR7Y3gvQaAwCJOwO6JPD3nr8gS3oAw"
25057+ }
25058+ },
25059+ "user_id": "@alice_912:hs1",
25060+ "unsigned": {}
25061+ }
25062+ },
25063+ "@alice_920:hs1": {
25064+ "ALICEDEVICE920": {
25065+ "algorithms": [
25066+ "m.olm.v1.curve25519-aes-sha2",
25067+ "m.megolm.v1.aes-sha2"
25068+ ],
25069+ "device_id": "ALICEDEVICE920",
25070+ "keys": {
25071+ "curve25519:ALICEDEVICE920": "8aoDrsHLsR0+PMnisNEs1VvgWhMABpVNquD8Y8fEnls",
25072+ "ed25519:ALICEDEVICE920": "TY98X+2jrYyVGBgjvp6uloTUQw70snc6BQO1cbFlPfk"
25073+ },
25074+ "signatures": {
25075+ "@alice_920:hs1": {
25076+ "ed25519:ALICEDEVICE920": "ZPJYCRVhXaqIg8MZb3W+PMJrK6fijLLqGrAjytm1WnjCSEWW3jnI5jMjOsZDsMrvD9qg0GYODpoWgWIF4WubCA"
25077+ }
25078+ },
25079+ "user_id": "@alice_920:hs1",
25080+ "unsigned": {}
25081+ }
25082+ },
25083+ "@alice_928:hs1": {
25084+ "ALICEDEVICE928": {
25085+ "algorithms": [
25086+ "m.olm.v1.curve25519-aes-sha2",
25087+ "m.megolm.v1.aes-sha2"
25088+ ],
25089+ "device_id": "ALICEDEVICE928",
25090+ "keys": {
25091+ "curve25519:ALICEDEVICE928": "Q9dV0D1Owq0TK0hZNe8XUAuywTXCHUWXOV4U4vFB4Bk",
25092+ "ed25519:ALICEDEVICE928": "gbOL8kSI/4ftLUSFv3k1BhBSZdTlFfZGYOIACMqZigg"
25093+ },
25094+ "signatures": {
25095+ "@alice_928:hs1": {
25096+ "ed25519:ALICEDEVICE928": "UdiRNVfGHBnr6UR+bpfgIEp8r4vFhpbgaRXXeY1EGqFkRJzj2wOCBx/tl+VGU7c7cRukcNVCPPo/LCXfF29tCg"
25097+ }
25098+ },
25099+ "user_id": "@alice_928:hs1",
25100+ "unsigned": {}
25101+ }
25102+ },
25103+ "@alice_938:hs1": {
25104+ "ALICEDEVICE938": {
25105+ "algorithms": [
25106+ "m.olm.v1.curve25519-aes-sha2",
25107+ "m.megolm.v1.aes-sha2"
25108+ ],
25109+ "device_id": "ALICEDEVICE938",
25110+ "keys": {
25111+ "curve25519:ALICEDEVICE938": "7WPGasGiaFm/ZNK1eTxIZCVPfPOXoaRYPHoRVAvmCj0",
25112+ "ed25519:ALICEDEVICE938": "T1fg3B2L3SYi2auOG6JsWjORzQEZm8Wik37hX4w44v0"
25113+ },
25114+ "signatures": {
25115+ "@alice_938:hs1": {
25116+ "ed25519:ALICEDEVICE938": "NkHltXMMrpze/3ZCoMfWf1R/bNWMP4RqCYRaXeM58wiGKDw9JotQsgyQtlhDIOHUBoxwMtnGq3k5iOvlRa9JDA"
25117+ }
25118+ },
25119+ "user_id": "@alice_938:hs1",
25120+ "unsigned": {}
25121+ }
25122+ },
25123+ "@alice_943:hs1": {
25124+ "ALICEDEVICE943": {
25125+ "algorithms": [
25126+ "m.olm.v1.curve25519-aes-sha2",
25127+ "m.megolm.v1.aes-sha2"
25128+ ],
25129+ "device_id": "ALICEDEVICE943",
25130+ "keys": {
25131+ "curve25519:ALICEDEVICE943": "fserhHPanoVdJtGFcPP/ppdRohuKyubbvAE4shBz4WA",
25132+ "ed25519:ALICEDEVICE943": "4AHeyhXmVqtSWoYA3aLfGNGKcx6PP3gqIIuoqPBGB80"
25133+ },
25134+ "signatures": {
25135+ "@alice_943:hs1": {
25136+ "ed25519:ALICEDEVICE943": "Jcl86JRBIMH3xpsX57FOQ8oYM6k4dKTG31OFOKgZ4BfKNqZ7z8Nz6obhPm7Mun+ehM4W0wq6fKa8LZYmEzBTBg"
25137+ }
25138+ },
25139+ "user_id": "@alice_943:hs1",
25140+ "unsigned": {}
25141+ }
25142+ },
25143+ "@alice_952:hs1": {
25144+ "ALICEDEVICE952": {
25145+ "algorithms": [
25146+ "m.olm.v1.curve25519-aes-sha2",
25147+ "m.megolm.v1.aes-sha2"
25148+ ],
25149+ "device_id": "ALICEDEVICE952",
25150+ "keys": {
25151+ "curve25519:ALICEDEVICE952": "lVxofyJinZDVXczNWMBeP1RqTtrfDMlrhYT+92CPkVs",
25152+ "ed25519:ALICEDEVICE952": "GjupUuJhVduC3HbLtzEXulmnONzD/t6AH5t4PhbT9Jc"
25153+ },
25154+ "signatures": {
25155+ "@alice_952:hs1": {
25156+ "ed25519:ALICEDEVICE952": "RTtOWyE1v/ANI1aygWg8QFuKg9ZjcCZy6vwxopYYVh4HfV40u5T+Zfou9SrWr7kHXp4sdbbs+k5Idi/lFxAXAw"
25157+ }
25158+ },
25159+ "user_id": "@alice_952:hs1",
25160+ "unsigned": {}
25161+ }
25162+ },
25163+ "@alice_954:hs1": {
25164+ "ALICEDEVICE954": {
25165+ "algorithms": [
25166+ "m.olm.v1.curve25519-aes-sha2",
25167+ "m.megolm.v1.aes-sha2"
25168+ ],
25169+ "device_id": "ALICEDEVICE954",
25170+ "keys": {
25171+ "curve25519:ALICEDEVICE954": "xaHjvWlFHqiCppS36uMjLnGpSay6mEcFfM7weIf7Xzk",
25172+ "ed25519:ALICEDEVICE954": "UvM/eUDOyo1n/wpt7ZHXpz3YqfgzoTHpag4qLOKdI+c"
25173+ },
25174+ "signatures": {
25175+ "@alice_954:hs1": {
25176+ "ed25519:ALICEDEVICE954": "T3qgQ+LOGMGE7ybB5VHocj4c5PzvPDg7jJNXUD6ON3iD5ue7PsdM+nZ8+f7UcF07j4vM+8L2rMOr656N4u3WCg"
25177+ }
25178+ },
25179+ "user_id": "@alice_954:hs1",
25180+ "unsigned": {}
25181+ }
25182+ },
25183+ "@alice_968:hs1": {
25184+ "ALICEDEVICE968": {
25185+ "algorithms": [
25186+ "m.olm.v1.curve25519-aes-sha2",
25187+ "m.megolm.v1.aes-sha2"
25188+ ],
25189+ "device_id": "ALICEDEVICE968",
25190+ "keys": {
25191+ "curve25519:ALICEDEVICE968": "6cr8FBS7ee8RRoZU5s1uCajMD2Wmeqk23cHZDs+OQx0",
25192+ "ed25519:ALICEDEVICE968": "qQGdpVUfcrkC++YVJ+GNALaWYPnZNj+viSucsGxD5yQ"
25193+ },
25194+ "signatures": {
25195+ "@alice_968:hs1": {
25196+ "ed25519:ALICEDEVICE968": "NJwAGO/5BlpZjC5EuXQ0YdE0oqeqh0DfLhin/W3Iad2p67lPtmxgfjk5FuznlQ7GhATQ8GDMmHSfq0goLQhLCQ"
25197+ }
25198+ },
25199+ "user_id": "@alice_968:hs1",
25200+ "unsigned": {}
25201+ }
25202+ },
25203+ "@alice_974:hs1": {
25204+ "ALICEDEVICE974": {
25205+ "algorithms": [
25206+ "m.olm.v1.curve25519-aes-sha2",
25207+ "m.megolm.v1.aes-sha2"
25208+ ],
25209+ "device_id": "ALICEDEVICE974",
25210+ "keys": {
25211+ "curve25519:ALICEDEVICE974": "NdETJnhkjtEyZ+RBAR4B8Kzl/f0v6bXATn8JFY9vaFE",
25212+ "ed25519:ALICEDEVICE974": "0bm/FwVT8QJBJfG8J3IsyWobIWNom8CmIXLada+IaRY"
25213+ },
25214+ "signatures": {
25215+ "@alice_974:hs1": {
25216+ "ed25519:ALICEDEVICE974": "JD0yCD3/F0EiJfaGFxOUbCPbeNeUra/BzJAKOcy3qugwhkxeI6c8vvNsrowE1CKW8zbZCOfNjk1M99iTGrLAAQ"
25217+ }
25218+ },
25219+ "user_id": "@alice_974:hs1",
25220+ "unsigned": {}
25221+ }
25222+ },
25223+ "@alice_975:hs1": {
25224+ "ALICEDEVICE975": {
25225+ "algorithms": [
25226+ "m.olm.v1.curve25519-aes-sha2",
25227+ "m.megolm.v1.aes-sha2"
25228+ ],
25229+ "device_id": "ALICEDEVICE975",
25230+ "keys": {
25231+ "curve25519:ALICEDEVICE975": "VERy3ULgwUzKb8h+3WLgr80p6wxoDx1p0fw+1gfLInU",
25232+ "ed25519:ALICEDEVICE975": "3erhwUoU35yD1GtXKfAAIwoE0a82aseLQHLjyC9sE/I"
25233+ },
25234+ "signatures": {
25235+ "@alice_975:hs1": {
25236+ "ed25519:ALICEDEVICE975": "7sS3+BOkq/Gn/Ak5VmiZydvJqR+ljJwOlD3TgPdI9IZ5n2f94AZ6hwTZQhuSix7Olee/vYM1GT9hNAcpH7l3AQ"
25237+ }
25238+ },
25239+ "user_id": "@alice_975:hs1",
25240+ "unsigned": {}
25241+ }
25242+ },
25243+ "@alice_985:hs1": {
25244+ "ALICEDEVICE985": {
25245+ "algorithms": [
25246+ "m.olm.v1.curve25519-aes-sha2",
25247+ "m.megolm.v1.aes-sha2"
25248+ ],
25249+ "device_id": "ALICEDEVICE985",
25250+ "keys": {
25251+ "curve25519:ALICEDEVICE985": "ypF/pLItybuTBfXPCgAUCu9jvFKGw5lCYyT/EbVM5HI",
25252+ "ed25519:ALICEDEVICE985": "pc1sGQjhoTN7z9pooBnZM0OVN7MhmF2d2ZTLXBoRYYI"
25253+ },
25254+ "signatures": {
25255+ "@alice_985:hs1": {
25256+ "ed25519:ALICEDEVICE985": "Dtb7tv189NlLhDOvi+x+hwbcxEW/APMF7pIZg15a5pZk/BAsNH5ZonDsasZ1Um5lUk6iZvg26n9Zzw8UWOxYBA"
25257+ }
25258+ },
25259+ "user_id": "@alice_985:hs1",
25260+ "unsigned": {}
25261+ }
25262+ },
25263+ "@alice_991:hs1": {
25264+ "ALICEDEVICE991": {
25265+ "algorithms": [
25266+ "m.olm.v1.curve25519-aes-sha2",
25267+ "m.megolm.v1.aes-sha2"
25268+ ],
25269+ "device_id": "ALICEDEVICE991",
25270+ "keys": {
25271+ "curve25519:ALICEDEVICE991": "AGa6/bBJqJyf0M5RVQHRbrPN9O5ZOsHvJidsJpiWUk0",
25272+ "ed25519:ALICEDEVICE991": "7Ubt6MLxQU4lj4sLQBkUlsFxPXA4s+5bz1i+lXILD6I"
25273+ },
25274+ "signatures": {
25275+ "@alice_991:hs1": {
25276+ "ed25519:ALICEDEVICE991": "4Cb9RwVh4xahtOqwdrxoLuqDotDi47zd+Mz+79xrzlKm6BU1sCKtVWVlmNYE573vnE7I8C5t5g4yYLXRMyCmCg"
25277+ }
25278+ },
25279+ "user_id": "@alice_991:hs1",
25280+ "unsigned": {}
25281+ }
25282+ },
25283+ "@alice_999:hs1": {
25284+ "ALICEDEVICE999": {
25285+ "algorithms": [
25286+ "m.olm.v1.curve25519-aes-sha2",
25287+ "m.megolm.v1.aes-sha2"
25288+ ],
25289+ "device_id": "ALICEDEVICE999",
25290+ "keys": {
25291+ "curve25519:ALICEDEVICE999": "yPtd1FLNcWGJERaNPeTogdDcb+jXH0Hnq0csYDKyvTE",
25292+ "ed25519:ALICEDEVICE999": "bsOBSotiTjHFBJxjayZlAYYu0ja3K9odBHmYDNzZla4"
25293+ },
25294+ "signatures": {
25295+ "@alice_999:hs1": {
25296+ "ed25519:ALICEDEVICE999": "DS9Iv8Q/KY1q8dEEbuwGaXqQtekqoVNaZWwIkc4Zh0bODC0VIO4cOgYKPLYJm4da8Whhv4bYZaWYuEL+EGhGAw"
25297+ }
25298+ },
25299+ "user_id": "@alice_999:hs1",
25300+ "unsigned": {}
25301+ }
25302+ },
25303+ "@alice_1009:hs1": {
25304+ "ALICEDEVICE1009": {
25305+ "algorithms": [
25306+ "m.olm.v1.curve25519-aes-sha2",
25307+ "m.megolm.v1.aes-sha2"
25308+ ],
25309+ "device_id": "ALICEDEVICE1009",
25310+ "keys": {
25311+ "curve25519:ALICEDEVICE1009": "c5yWaOwn9EB4EOXQ1FQX9xNHBEGCkzXYDrldSo276Wc",
25312+ "ed25519:ALICEDEVICE1009": "spqVKbXOhMIFdrT+kRvzV2E1a772l5b4s5HUYaDX5OI"
25313+ },
25314+ "signatures": {
25315+ "@alice_1009:hs1": {
25316+ "ed25519:ALICEDEVICE1009": "aPubvJVmIfy0pvApk338s98McwuamXiWy78bVqdIB6qzSMWDj/el5tLxUSCgRPYEWoARrDzQjSm6G9scnJHaAQ"
25317+ }
25318+ },
25319+ "user_id": "@alice_1009:hs1",
25320+ "unsigned": {}
25321+ }
25322+ },
25323+ "@alice_100:hs1": {
25324+ "ALICEDEVICE100": {
25325+ "algorithms": [
25326+ "m.olm.v1.curve25519-aes-sha2",
25327+ "m.megolm.v1.aes-sha2"
25328+ ],
25329+ "device_id": "ALICEDEVICE100",
25330+ "keys": {
25331+ "curve25519:ALICEDEVICE100": "D8LcRZOYW8sCM+oKDicZ8GcqyrJYdato2ZZYJUAnZTY",
25332+ "ed25519:ALICEDEVICE100": "1+dK8Dz8+B2mtSoN88rgjUeacZlhGoOKX6HkFqThHkU"
25333+ },
25334+ "signatures": {
25335+ "@alice_100:hs1": {
25336+ "ed25519:ALICEDEVICE100": "OPe5soa/GFGMUfAHroN3T2MyE8m/lcm1RNEdfdelj9vD2DdreDwZ8vQ7WBfERpfmFnFtihSUjuw4V/IfU2P/Dg"
25337+ }
25338+ },
25339+ "user_id": "@alice_100:hs1",
25340+ "unsigned": {}
25341+ }
25342+ },
25343+ "@alice_1021:hs1": {
25344+ "ALICEDEVICE1021": {
25345+ "algorithms": [
25346+ "m.olm.v1.curve25519-aes-sha2",
25347+ "m.megolm.v1.aes-sha2"
25348+ ],
25349+ "device_id": "ALICEDEVICE1021",
25350+ "keys": {
25351+ "curve25519:ALICEDEVICE1021": "BTJ8F5KliGAhLyweHPYwXAQ1h2h2vpOWV3K1KGM6ohU",
25352+ "ed25519:ALICEDEVICE1021": "64N4+VSku+nhBBR7mFJmX/y1iR1F5dvSWLk3zGvSTXY"
25353+ },
25354+ "signatures": {
25355+ "@alice_1021:hs1": {
25356+ "ed25519:ALICEDEVICE1021": "P68e/N13zWFBeJou7/wQkcz/H7GqvDY0mcrpvHIVTHI/3lw2nJfaJZl0mDMmTyAj4hVfW8zU7RO/DgtJB2H+BA"
25357+ }
25358+ },
25359+ "user_id": "@alice_1021:hs1",
25360+ "unsigned": {}
25361+ }
25362+ },
25363+ "@alice_1027:hs1": {
25364+ "ALICEDEVICE1027": {
25365+ "algorithms": [
25366+ "m.olm.v1.curve25519-aes-sha2",
25367+ "m.megolm.v1.aes-sha2"
25368+ ],
25369+ "device_id": "ALICEDEVICE1027",
25370+ "keys": {
25371+ "curve25519:ALICEDEVICE1027": "bRBgriMB9gy/jLPiBoR/mCdV63hPDURonS19nErso08",
25372+ "ed25519:ALICEDEVICE1027": "4Dk0XmC+GUE6AgJfpzTBceZV1dEz1nS3jXP5BePkR+s"
25373+ },
25374+ "signatures": {
25375+ "@alice_1027:hs1": {
25376+ "ed25519:ALICEDEVICE1027": "skAN2WwVDwO1mP376/ZDTw88vlXNQ7/mcv/0yo/LEn7rgkijMJc7Oy/SQIkccPF/wbq68dWRlx3bRMliKtLMDQ"
25377+ }
25378+ },
25379+ "user_id": "@alice_1027:hs1",
25380+ "unsigned": {}
25381+ }
25382+ },
25383+ "@alice_1031:hs1": {
25384+ "ALICEDEVICE1031": {
25385+ "algorithms": [
25386+ "m.olm.v1.curve25519-aes-sha2",
25387+ "m.megolm.v1.aes-sha2"
25388+ ],
25389+ "device_id": "ALICEDEVICE1031",
25390+ "keys": {
25391+ "curve25519:ALICEDEVICE1031": "Glyt00MHrE3NL+ySEWhpexoPck/w99Q5S0CbcX3cHGQ",
25392+ "ed25519:ALICEDEVICE1031": "Zi+GhpAKq7dG3RjtS/DFhZjgX0S1nUsbrHSPAB8Nfng"
25393+ },
25394+ "signatures": {
25395+ "@alice_1031:hs1": {
25396+ "ed25519:ALICEDEVICE1031": "hePQXS0Fvz9wkCCi+aXXMwCgNa9a3nwtTXX607x6irk0JWqu3cblpaOpaM19j34mK3a59QBSWG+FQuV6F3T3Dw"
25397+ }
25398+ },
25399+ "user_id": "@alice_1031:hs1",
25400+ "unsigned": {}
25401+ }
25402+ },
25403+ "@alice_1033:hs1": {
25404+ "ALICEDEVICE1033": {
25405+ "algorithms": [
25406+ "m.olm.v1.curve25519-aes-sha2",
25407+ "m.megolm.v1.aes-sha2"
25408+ ],
25409+ "device_id": "ALICEDEVICE1033",
25410+ "keys": {
25411+ "curve25519:ALICEDEVICE1033": "N024rMz6zdAPKOtZiqIqMpTZ7F+CloaskCffviJC5Qg",
25412+ "ed25519:ALICEDEVICE1033": "ZjutKGHLIbjCu5i1GRA4LHmFInMJS0Potdh2vbeaDV4"
25413+ },
25414+ "signatures": {
25415+ "@alice_1033:hs1": {
25416+ "ed25519:ALICEDEVICE1033": "AfTud7ZeB2lbAJao3HuTX64RfyHKxu3EBc3s5PmLeeiI82sY5ghNNZ3SEEBp76GVZB0+9/bBHqZV145I/zkxDw"
25417+ }
25418+ },
25419+ "user_id": "@alice_1033:hs1",
25420+ "unsigned": {}
25421+ }
25422+ },
25423+ "@alice_1034:hs1": {
25424+ "ALICEDEVICE1034": {
25425+ "algorithms": [
25426+ "m.olm.v1.curve25519-aes-sha2",
25427+ "m.megolm.v1.aes-sha2"
25428+ ],
25429+ "device_id": "ALICEDEVICE1034",
25430+ "keys": {
25431+ "curve25519:ALICEDEVICE1034": "46LXww8uNYp/iPSbD/IyCPC8m5Sm8VLy4YGqID/P1k4",
25432+ "ed25519:ALICEDEVICE1034": "QUMmV0aM/3hbmeZWBZ9wew9ufB0QVKV273diC/6glJI"
25433+ },
25434+ "signatures": {
25435+ "@alice_1034:hs1": {
25436+ "ed25519:ALICEDEVICE1034": "R028PD97rh8MobrYebD94jlh0etCtiH/W1ktXyET1guVgN3Rd7hSfL98ym6rOSpHcXwHBVpSNahO+Vg+cf/0Bg"
25437+ }
25438+ },
25439+ "user_id": "@alice_1034:hs1",
25440+ "unsigned": {}
25441+ }
25442+ },
25443+ "@alice_1035:hs1": {
25444+ "ALICEDEVICE1035": {
25445+ "algorithms": [
25446+ "m.olm.v1.curve25519-aes-sha2",
25447+ "m.megolm.v1.aes-sha2"
25448+ ],
25449+ "device_id": "ALICEDEVICE1035",
25450+ "keys": {
25451+ "curve25519:ALICEDEVICE1035": "N2YQa8eJTilrS9mTJFax8mPieWwDRq/6OaIqkdeflV4",
25452+ "ed25519:ALICEDEVICE1035": "aBJM6L7QwHTpNc39bRUCPpXS9llbUDYfcavDO0cOKoE"
25453+ },
25454+ "signatures": {
25455+ "@alice_1035:hs1": {
25456+ "ed25519:ALICEDEVICE1035": "Gb1eKJcTLvpAszCj6koXr+HdRIiyvUf1PjdI7q2Y1PBGy/FvXtzh6HXdTK+cC6Q4UV9HpZdmzpmnFTZ91aSjDg"
25457+ }
25458+ },
25459+ "user_id": "@alice_1035:hs1",
25460+ "unsigned": {}
25461+ }
25462+ },
25463+ "@alice_1041:hs1": {
25464+ "ALICEDEVICE1041": {
25465+ "algorithms": [
25466+ "m.olm.v1.curve25519-aes-sha2",
25467+ "m.megolm.v1.aes-sha2"
25468+ ],
25469+ "device_id": "ALICEDEVICE1041",
25470+ "keys": {
25471+ "curve25519:ALICEDEVICE1041": "1ThnGsLKv8Hxosmb7KpZZF9bYnWrhH6AfC5Z62oeCBI",
25472+ "ed25519:ALICEDEVICE1041": "awq/cprthFupewj881P8ZTqYBhLlR45BS/7e0sqr2+s"
25473+ },
25474+ "signatures": {
25475+ "@alice_1041:hs1": {
25476+ "ed25519:ALICEDEVICE1041": "A2PC3SldjfyEODhL/BSvI07QfrmYr9tP54OoWYei/DeUxD+5vmQeE88MK+5apuXj6LSk8MqvzRMDtCJaKGN9Dg"
25477+ }
25478+ },
25479+ "user_id": "@alice_1041:hs1",
25480+ "unsigned": {}
25481+ }
25482+ },
25483+ "@alice_1054:hs1": {
25484+ "ALICEDEVICE1054": {
25485+ "algorithms": [
25486+ "m.olm.v1.curve25519-aes-sha2",
25487+ "m.megolm.v1.aes-sha2"
25488+ ],
25489+ "device_id": "ALICEDEVICE1054",
25490+ "keys": {
25491+ "curve25519:ALICEDEVICE1054": "d2oDGZB0OXJ5LLqNX1ijgmjsr5m40XqSviqJrjscVTo",
25492+ "ed25519:ALICEDEVICE1054": "zjQsBY8eOp1BNYSpWtTu9e38t1YQPFTWu5Zyc/i17Io"
25493+ },
25494+ "signatures": {
25495+ "@alice_1054:hs1": {
25496+ "ed25519:ALICEDEVICE1054": "Rl6WLIa0c6uA5yN4+Uj+t+fCKesPUYc0KccxBmZO3fq9LTRF+7Q+iMsBm2fk02Iv9OoERUEVhqbe7eFSYY2SCA"
25497+ }
25498+ },
25499+ "user_id": "@alice_1054:hs1",
25500+ "unsigned": {}
25501+ }
25502+ },
25503+ "@alice_1064:hs1": {
25504+ "ALICEDEVICE1064": {
25505+ "algorithms": [
25506+ "m.olm.v1.curve25519-aes-sha2",
25507+ "m.megolm.v1.aes-sha2"
25508+ ],
25509+ "device_id": "ALICEDEVICE1064",
25510+ "keys": {
25511+ "curve25519:ALICEDEVICE1064": "S+NP/iJ90ZZ0Jsc4+/nMYSD+45USGuXkmtf1QFdwmnA",
25512+ "ed25519:ALICEDEVICE1064": "TAbYZW3GFFVBqbM+5w/p9fbJTFWEhcsrmgHzV/SxPbM"
25513+ },
25514+ "signatures": {
25515+ "@alice_1064:hs1": {
25516+ "ed25519:ALICEDEVICE1064": "bBYSyhyLvqxemQdZQGJ6GZFOs+71HeVZNFRHaVSh2zoU/xi1KwrP65PRySIGT1tymMUIPIDGeLJl/9/jY2dhCg"
25517+ }
25518+ },
25519+ "user_id": "@alice_1064:hs1",
25520+ "unsigned": {}
25521+ }
25522+ },
25523+ "@alice_1066:hs1": {
25524+ "ALICEDEVICE1066": {
25525+ "algorithms": [
25526+ "m.olm.v1.curve25519-aes-sha2",
25527+ "m.megolm.v1.aes-sha2"
25528+ ],
25529+ "device_id": "ALICEDEVICE1066",
25530+ "keys": {
25531+ "curve25519:ALICEDEVICE1066": "x3Mw3Uru9dpCieHvPcfrWH7XtWBkoOYwl0N+kRAcDD8",
25532+ "ed25519:ALICEDEVICE1066": "0dUj+WL5JXt8S+anMgWbd3SbtVakPL1wLfXriBrC2rI"
25533+ },
25534+ "signatures": {
25535+ "@alice_1066:hs1": {
25536+ "ed25519:ALICEDEVICE1066": "cuiR+cANupyzvLxVWOjS1dt2MUL8JRIpl34Yd3rEtfe60GDu3xJdBcQc4Sa8yk26f5MM3+JNE3NdFDu34odaDQ"
25537+ }
25538+ },
25539+ "user_id": "@alice_1066:hs1",
25540+ "unsigned": {}
25541+ }
25542+ },
25543+ "@alice_1071:hs1": {
25544+ "ALICEDEVICE1071": {
25545+ "algorithms": [
25546+ "m.olm.v1.curve25519-aes-sha2",
25547+ "m.megolm.v1.aes-sha2"
25548+ ],
25549+ "device_id": "ALICEDEVICE1071",
25550+ "keys": {
25551+ "curve25519:ALICEDEVICE1071": "vdGIVxcqZXcTwkbsWxFt+8ybqArfCOvtsV49wHOe9QA",
25552+ "ed25519:ALICEDEVICE1071": "gxNRIBjHfeiQD8TGqTY1IK+kLthCXgaUPF/BBIy3RqU"
25553+ },
25554+ "signatures": {
25555+ "@alice_1071:hs1": {
25556+ "ed25519:ALICEDEVICE1071": "wqGIWYJv5MI/MICddeeJl0hutDayhXk0Z7ZfYeG+YPhgHYisf14rTbYZxVdR6cIEMv4phWuhaEP6v/18i+KcCw"
25557+ }
25558+ },
25559+ "user_id": "@alice_1071:hs1",
25560+ "unsigned": {}
25561+ }
25562+ },
25563+ "@alice_107:hs1": {
25564+ "ALICEDEVICE107": {
25565+ "algorithms": [
25566+ "m.olm.v1.curve25519-aes-sha2",
25567+ "m.megolm.v1.aes-sha2"
25568+ ],
25569+ "device_id": "ALICEDEVICE107",
25570+ "keys": {
25571+ "curve25519:ALICEDEVICE107": "mtqt8+Bp7wSJ0C/nDiB8isXjNEPOz153zflZ5Dg17VI",
25572+ "ed25519:ALICEDEVICE107": "33YXBwQVi4PzJDb/HcB7skFME00dVTbmrPPFRRRE5mw"
25573+ },
25574+ "signatures": {
25575+ "@alice_107:hs1": {
25576+ "ed25519:ALICEDEVICE107": "92o5c2X7xGLY4LK9fb79AtxAr29Ep+OJVshDwqMpTTkr3XPYpY2FQrifAVz1fyiVfiX60bJcGf3RFqDWoajlDA"
25577+ }
25578+ },
25579+ "user_id": "@alice_107:hs1",
25580+ "unsigned": {}
25581+ }
25582+ },
25583+ "@alice_1080:hs1": {
25584+ "ALICEDEVICE1080": {
25585+ "algorithms": [
25586+ "m.olm.v1.curve25519-aes-sha2",
25587+ "m.megolm.v1.aes-sha2"
25588+ ],
25589+ "device_id": "ALICEDEVICE1080",
25590+ "keys": {
25591+ "curve25519:ALICEDEVICE1080": "JGxqCFIPzfyNOkmsDck6jAm1RDgGjg8JpNBachIaB20",
25592+ "ed25519:ALICEDEVICE1080": "sUmTuepfLHXOQPUpoiI1gP5X4QXq6F5/BAu27IkBCRA"
25593+ },
25594+ "signatures": {
25595+ "@alice_1080:hs1": {
25596+ "ed25519:ALICEDEVICE1080": "/P5oXweQwl8TMP0oS7n5t8OSYXuv0G17K+cyFdwhXKBf3eRhK+uqLKhwmT6tAevRhvMUdsqk/pmUzUGqUqUUDg"
25597+ }
25598+ },
25599+ "user_id": "@alice_1080:hs1",
25600+ "unsigned": {}
25601+ }
25602+ },
25603+ "@alice_1086:hs1": {
25604+ "ALICEDEVICE1086": {
25605+ "algorithms": [
25606+ "m.olm.v1.curve25519-aes-sha2",
25607+ "m.megolm.v1.aes-sha2"
25608+ ],
25609+ "device_id": "ALICEDEVICE1086",
25610+ "keys": {
25611+ "curve25519:ALICEDEVICE1086": "jYdFK74eDkkej/B0BsBbZw1Mb+gL0F3AWx9CocQQXlQ",
25612+ "ed25519:ALICEDEVICE1086": "GLmD/BqIO4MTRiKNsUHbyK6JUui/lBlYPcvoRtDDdH0"
25613+ },
25614+ "signatures": {
25615+ "@alice_1086:hs1": {
25616+ "ed25519:ALICEDEVICE1086": "gb6dK0isCLVdQYW9E/NTTpdEdqrnAdBGKPvQ/zNpslZt8Aei1G9H+0KnJyfxhZTU5cdWHGRCMzEQI9N0+hwtDQ"
25617+ }
25618+ },
25619+ "user_id": "@alice_1086:hs1",
25620+ "unsigned": {}
25621+ }
25622+ },
25623+ "@alice_1088:hs1": {
25624+ "ALICEDEVICE1088": {
25625+ "algorithms": [
25626+ "m.olm.v1.curve25519-aes-sha2",
25627+ "m.megolm.v1.aes-sha2"
25628+ ],
25629+ "device_id": "ALICEDEVICE1088",
25630+ "keys": {
25631+ "curve25519:ALICEDEVICE1088": "GHbpMUSnqft8b/eTuO8t249bR44Lc6C5JS19o7eAEi8",
25632+ "ed25519:ALICEDEVICE1088": "PnlQxuigOC2rkBBRycULoFVtvmpabO1Yulo+L/pSg+g"
25633+ },
25634+ "signatures": {
25635+ "@alice_1088:hs1": {
25636+ "ed25519:ALICEDEVICE1088": "dY9f8mUl6bfwRHNwi/Kfplf+9RfZz2Y0ndhmcI+tS/iKNWGNzIQPEsjwL/Ps3fPwOi72v098q3skYtRz11kLBg"
25637+ }
25638+ },
25639+ "user_id": "@alice_1088:hs1",
25640+ "unsigned": {}
25641+ }
25642+ },
25643+ "@alice_1098:hs1": {
25644+ "ALICEDEVICE1098": {
25645+ "algorithms": [
25646+ "m.olm.v1.curve25519-aes-sha2",
25647+ "m.megolm.v1.aes-sha2"
25648+ ],
25649+ "device_id": "ALICEDEVICE1098",
25650+ "keys": {
25651+ "curve25519:ALICEDEVICE1098": "qsmhzSFvMAwdrqLo67qQmiH8vb/crRSGSF9xGYCSCFk",
25652+ "ed25519:ALICEDEVICE1098": "QVhLMicXBwGeRdP8nIlbwZGQESqSoSpXehosSe+Jth4"
25653+ },
25654+ "signatures": {
25655+ "@alice_1098:hs1": {
25656+ "ed25519:ALICEDEVICE1098": "7BlGvEWHzrIPkXax8W6S2weQpCfgo81843H0M3DAlNJHZPD6sZ5UcbXk0zpSDy1WS3u3ZiMacwcoDP83CN6KBw"
25657+ }
25658+ },
25659+ "user_id": "@alice_1098:hs1",
25660+ "unsigned": {}
25661+ }
25662+ },
25663+ "@alice_1101:hs1": {
25664+ "ALICEDEVICE1101": {
25665+ "algorithms": [
25666+ "m.olm.v1.curve25519-aes-sha2",
25667+ "m.megolm.v1.aes-sha2"
25668+ ],
25669+ "device_id": "ALICEDEVICE1101",
25670+ "keys": {
25671+ "curve25519:ALICEDEVICE1101": "hbKDU9vX9QAjQex54f350y/KG7+Icgzk/U0SoYoqonI",
25672+ "ed25519:ALICEDEVICE1101": "ebtoMIiKd8lNuS4jEHJyP+FaXLyDUiUigChf8nrpXJo"
25673+ },
25674+ "signatures": {
25675+ "@alice_1101:hs1": {
25676+ "ed25519:ALICEDEVICE1101": "n5+cTZdNuLpj4hyE7Ff7OR9YnGQ+2Nld9JWqKojYj3WfNmFWa4S1smlWjWzHkKf3ZIpikeIduIUP3CpF6v7xDg"
25677+ }
25678+ },
25679+ "user_id": "@alice_1101:hs1",
25680+ "unsigned": {}
25681+ }
25682+ },
25683+ "@alice_1117:hs1": {
25684+ "ALICEDEVICE1117": {
25685+ "algorithms": [
25686+ "m.olm.v1.curve25519-aes-sha2",
25687+ "m.megolm.v1.aes-sha2"
25688+ ],
25689+ "device_id": "ALICEDEVICE1117",
25690+ "keys": {
25691+ "curve25519:ALICEDEVICE1117": "zHv1wbHIPbkvwnhHZXo1MI9ixHDVV9bfQKoDpSxW7Co",
25692+ "ed25519:ALICEDEVICE1117": "mvIuMgr2LIAEW/XnBWwIp52tTgSNOHcVkSb7dW+rNUY"
25693+ },
25694+ "signatures": {
25695+ "@alice_1117:hs1": {
25696+ "ed25519:ALICEDEVICE1117": "fy0t19Oy87PCJeEY2DGKlMKSR8hv3fRXY8FRTSDwZHBPSUOEk5iO/3+/VLFSGVzU689aFUjMqnyGYuC0cAC3AA"
25697+ }
25698+ },
25699+ "user_id": "@alice_1117:hs1",
25700+ "unsigned": {}
25701+ }
25702+ },
25703+ "@alice_1125:hs1": {
25704+ "ALICEDEVICE1125": {
25705+ "algorithms": [
25706+ "m.olm.v1.curve25519-aes-sha2",
25707+ "m.megolm.v1.aes-sha2"
25708+ ],
25709+ "device_id": "ALICEDEVICE1125",
25710+ "keys": {
25711+ "curve25519:ALICEDEVICE1125": "F21OZxOFv4USGqrdJ02AJmNT1AHTGaqme8OAoAGkvRI",
25712+ "ed25519:ALICEDEVICE1125": "opkDGpgqjQQofO8oPOsnXGAecrJTmUOHnHUn/CjQERI"
25713+ },
25714+ "signatures": {
25715+ "@alice_1125:hs1": {
25716+ "ed25519:ALICEDEVICE1125": "iyuugBp6aIxJWaOP9v+PZOeZ32t+Zi6NaMM+E7av4U56Gqo2tt00BokXQLRGAQGBkxGWgmxa11QorGg72jt8Bg"
25717+ }
25718+ },
25719+ "user_id": "@alice_1125:hs1",
25720+ "unsigned": {}
25721+ }
25722+ },
25723+ "@alice_1132:hs1": {
25724+ "ALICEDEVICE1132": {
25725+ "algorithms": [
25726+ "m.olm.v1.curve25519-aes-sha2",
25727+ "m.megolm.v1.aes-sha2"
25728+ ],
25729+ "device_id": "ALICEDEVICE1132",
25730+ "keys": {
25731+ "curve25519:ALICEDEVICE1132": "ne4McD97G0Y/GBzoCYLqWA8dOF6i2uNV2G9fU7PfZjI",
25732+ "ed25519:ALICEDEVICE1132": "8ulwqKh4zZoaLblraw+Asf19XV+p0D7N23tt9xWO0kE"
25733+ },
25734+ "signatures": {
25735+ "@alice_1132:hs1": {
25736+ "ed25519:ALICEDEVICE1132": "ycbGPKHviPkbBfQNj0uQ98kWK2yK02z/O3KYJIsXx0oe8Lfzox5G4CXh4/ajnkUUhcsDvpAoCDW+0HhetOZrBg"
25737+ }
25738+ },
25739+ "user_id": "@alice_1132:hs1",
25740+ "unsigned": {}
25741+ }
25742+ },
25743+ "@alice_1163:hs1": {
25744+ "ALICEDEVICE1163": {
25745+ "algorithms": [
25746+ "m.olm.v1.curve25519-aes-sha2",
25747+ "m.megolm.v1.aes-sha2"
25748+ ],
25749+ "device_id": "ALICEDEVICE1163",
25750+ "keys": {
25751+ "curve25519:ALICEDEVICE1163": "+a2MxE/kC6R79JbF+GBksPwpH+ZHM91AmhMRvn/WC0s",
25752+ "ed25519:ALICEDEVICE1163": "/ApxPHGln8YpPH/G6S7I1EogLuu9/BHvzp1b/v2c/qM"
25753+ },
25754+ "signatures": {
25755+ "@alice_1163:hs1": {
25756+ "ed25519:ALICEDEVICE1163": "JjV7ygnXXBiLH9dnLOeshbfSBvpphC5fkDkex+iMGLH2JkJeTJ3Di74ZKPJDxNrYTQD9G2bg2d6Et9M4bPctCA"
25757+ }
25758+ },
25759+ "user_id": "@alice_1163:hs1",
25760+ "unsigned": {}
25761+ }
25762+ },
25763+ "@alice_1166:hs1": {
25764+ "ALICEDEVICE1166": {
25765+ "algorithms": [
25766+ "m.olm.v1.curve25519-aes-sha2",
25767+ "m.megolm.v1.aes-sha2"
25768+ ],
25769+ "device_id": "ALICEDEVICE1166",
25770+ "keys": {
25771+ "curve25519:ALICEDEVICE1166": "Pjv5NVbjZk3eR/IlcTw1f9+tCahQcY9uVc/dpHRLZxA",
25772+ "ed25519:ALICEDEVICE1166": "aEJN/xyN2KIOa69KdqlIzu1UQDOh72BgxT43FsEQ/wA"
25773+ },
25774+ "signatures": {
25775+ "@alice_1166:hs1": {
25776+ "ed25519:ALICEDEVICE1166": "5i3tSZsD6qlIgpP4KUjjA8mbOxSnvcBi2JWmAEkSfXGBu9DeiOfHGosaeS7JB/bEAQWgEJydNe1skFbbq35rBw"
25777+ }
25778+ },
25779+ "user_id": "@alice_1166:hs1",
25780+ "unsigned": {}
25781+ }
25782+ },
25783+ "@alice_1171:hs1": {
25784+ "ALICEDEVICE1171": {
25785+ "algorithms": [
25786+ "m.olm.v1.curve25519-aes-sha2",
25787+ "m.megolm.v1.aes-sha2"
25788+ ],
25789+ "device_id": "ALICEDEVICE1171",
25790+ "keys": {
25791+ "curve25519:ALICEDEVICE1171": "xUJmzeOT5EwiJPhlsNOaRbUyZwW+ggZpUkkQGIxL+j0",
25792+ "ed25519:ALICEDEVICE1171": "SnKYI2yGA/xIRlZ6E6/IBE9KWnDrs97HbGFQOCuJM2g"
25793+ },
25794+ "signatures": {
25795+ "@alice_1171:hs1": {
25796+ "ed25519:ALICEDEVICE1171": "V5da9eTXFQ8i5FtHWNShSkumA/CxhxQosWKDe7Pr/tZDoytn9acV3Rb2g3fi0bz3RAo3s4UTKzzw5ToM1HF2BQ"
25797+ }
25798+ },
25799+ "user_id": "@alice_1171:hs1",
25800+ "unsigned": {}
25801+ }
25802+ },
25803+ "@alice_1177:hs1": {
25804+ "ALICEDEVICE1177": {
25805+ "algorithms": [
25806+ "m.olm.v1.curve25519-aes-sha2",
25807+ "m.megolm.v1.aes-sha2"
25808+ ],
25809+ "device_id": "ALICEDEVICE1177",
25810+ "keys": {
25811+ "curve25519:ALICEDEVICE1177": "2yHAgvLzEOmsUIujsMr6MoHx/sgX+OnLhX0f7xQKIRI",
25812+ "ed25519:ALICEDEVICE1177": "X6hn8hF3fSe/pX2xbI6KTvv5jW99pYEskML5zgY2PEU"
25813+ },
25814+ "signatures": {
25815+ "@alice_1177:hs1": {
25816+ "ed25519:ALICEDEVICE1177": "up2hbadurxtC+zaWl8irQatg82W2Rf9ajMSSpvH6trUnlwdSAJwhsVHoBfxqFul28v1rUFn5o9KiCwSeJSPDCA"
25817+ }
25818+ },
25819+ "user_id": "@alice_1177:hs1",
25820+ "unsigned": {}
25821+ }
25822+ },
25823+ "@alice_1179:hs1": {
25824+ "ALICEDEVICE1179": {
25825+ "algorithms": [
25826+ "m.olm.v1.curve25519-aes-sha2",
25827+ "m.megolm.v1.aes-sha2"
25828+ ],
25829+ "device_id": "ALICEDEVICE1179",
25830+ "keys": {
25831+ "curve25519:ALICEDEVICE1179": "PqujknaAxjuYXTP1Mu6IrKlDBisvhHtjNhfxnHp4Xns",
25832+ "ed25519:ALICEDEVICE1179": "hp/4NAuVSP0NU5+srUabpOKzh6picTsjIiDtqRzmRrk"
25833+ },
25834+ "signatures": {
25835+ "@alice_1179:hs1": {
25836+ "ed25519:ALICEDEVICE1179": "8QstQVCKEXFFfnXgNBAfoKtqOpaMB2US3F7WpmZ2ndX+o0I0OoCYkVpFXU6TDPODGJ43YiWQAEX4cRvYpIO5AQ"
25837+ }
25838+ },
25839+ "user_id": "@alice_1179:hs1",
25840+ "unsigned": {}
25841+ }
25842+ },
25843+ "@alice_117:hs1": {
25844+ "ALICEDEVICE117": {
25845+ "algorithms": [
25846+ "m.olm.v1.curve25519-aes-sha2",
25847+ "m.megolm.v1.aes-sha2"
25848+ ],
25849+ "device_id": "ALICEDEVICE117",
25850+ "keys": {
25851+ "curve25519:ALICEDEVICE117": "HxEQCas+YhMJAN9wCV04JVOcZxvQxDDWojMsn9XzbXA",
25852+ "ed25519:ALICEDEVICE117": "TF201XM+brDhOM+gFHZ+OD/oEBp9TDD+7zqXyZmsxDI"
25853+ },
25854+ "signatures": {
25855+ "@alice_117:hs1": {
25856+ "ed25519:ALICEDEVICE117": "UeqUCQHLJ88+Y/6rMxDyhtVPuLCKp44Cb5/DkyxIhkv0hoMEVBTEfGl0zIsjaGJVNHqja2peB9SkfIiLmGHuBQ"
25857+ }
25858+ },
25859+ "user_id": "@alice_117:hs1",
25860+ "unsigned": {}
25861+ }
25862+ },
25863+ "@alice_1185:hs1": {
25864+ "ALICEDEVICE1185": {
25865+ "algorithms": [
25866+ "m.olm.v1.curve25519-aes-sha2",
25867+ "m.megolm.v1.aes-sha2"
25868+ ],
25869+ "device_id": "ALICEDEVICE1185",
25870+ "keys": {
25871+ "curve25519:ALICEDEVICE1185": "2l9lGkynzkF2/I9BurPbpMfpLsWkQwpkH16GCLjujR0",
25872+ "ed25519:ALICEDEVICE1185": "R2qZkeGFMHIxTiRL41LhRA13fMO/2yxQOqbGIl536Cg"
25873+ },
25874+ "signatures": {
25875+ "@alice_1185:hs1": {
25876+ "ed25519:ALICEDEVICE1185": "VLIoxCEiLi2t/I07X28SzPaZom6FwSsZzr8on3pQhAVfd2EYHoiiuIWE9hpB13X+DCi81gbV94czrRkUTTezBA"
25877+ }
25878+ },
25879+ "user_id": "@alice_1185:hs1",
25880+ "unsigned": {}
25881+ }
25882+ },
25883+ "@alice_120:hs1": {
25884+ "ALICEDEVICE120": {
25885+ "algorithms": [
25886+ "m.olm.v1.curve25519-aes-sha2",
25887+ "m.megolm.v1.aes-sha2"
25888+ ],
25889+ "device_id": "ALICEDEVICE120",
25890+ "keys": {
25891+ "curve25519:ALICEDEVICE120": "ctFHsNGIb0St1RC4p1XlFASw5D1pvV1xAzIa/mMBTx0",
25892+ "ed25519:ALICEDEVICE120": "aZOz/U94MX5Pt9XeICyRyQl4C4+7HkoBXtvgjNVvblY"
25893+ },
25894+ "signatures": {
25895+ "@alice_120:hs1": {
25896+ "ed25519:ALICEDEVICE120": "NIaGLNs+mBMz5OG/sB4/YPJdmo+s3obHr7DObRTxBQbuBdYMxVpvE0GdcGujC9ALvLbleRA3V2t1KhbF38W/AA"
25897+ }
25898+ },
25899+ "user_id": "@alice_120:hs1",
25900+ "unsigned": {}
25901+ }
25902+ },
25903+ "@alice_1213:hs1": {
25904+ "ALICEDEVICE1213": {
25905+ "algorithms": [
25906+ "m.olm.v1.curve25519-aes-sha2",
25907+ "m.megolm.v1.aes-sha2"
25908+ ],
25909+ "device_id": "ALICEDEVICE1213",
25910+ "keys": {
25911+ "curve25519:ALICEDEVICE1213": "H+JeVhcoXW9SMtrSW6Yi8IDrvnP4BzIbEjNZsISOAjo",
25912+ "ed25519:ALICEDEVICE1213": "RAJYvGKJMP3r0oTuOErctOvgkPwPM1m5DHH4ypfeb3s"
25913+ },
25914+ "signatures": {
25915+ "@alice_1213:hs1": {
25916+ "ed25519:ALICEDEVICE1213": "+5itbKEBF9NtTLzmPdcVW/50D1NkqSfVeiBVFPu6vfiH9U6JrZ3j5DtJWWUWH9sDMT88pCrFD+GZFtfZUWNrDA"
25917+ }
25918+ },
25919+ "user_id": "@alice_1213:hs1",
25920+ "unsigned": {}
25921+ }
25922+ },
25923+ "@alice_1220:hs1": {
25924+ "ALICEDEVICE1220": {
25925+ "algorithms": [
25926+ "m.olm.v1.curve25519-aes-sha2",
25927+ "m.megolm.v1.aes-sha2"
25928+ ],
25929+ "device_id": "ALICEDEVICE1220",
25930+ "keys": {
25931+ "curve25519:ALICEDEVICE1220": "azMF5lIJEuwoCcDk9x3EmBLIt+wbq4uwenY+HdBvFTk",
25932+ "ed25519:ALICEDEVICE1220": "/5t7hqbHDibmEMqkC2Tq6BC9+tgOm9FByuXiiYjjq1E"
25933+ },
25934+ "signatures": {
25935+ "@alice_1220:hs1": {
25936+ "ed25519:ALICEDEVICE1220": "rho4t7R1piMQJfna/cOEjWTlvbwTTJYIGvGN+/kg4FXzkPukrHtkefdzTse7t6Nstp4N1vbK/UpTOvKkD+9TBw"
25937+ }
25938+ },
25939+ "user_id": "@alice_1220:hs1",
25940+ "unsigned": {}
25941+ }
25942+ },
25943+ "@alice_1240:hs1": {
25944+ "ALICEDEVICE1240": {
25945+ "algorithms": [
25946+ "m.olm.v1.curve25519-aes-sha2",
25947+ "m.megolm.v1.aes-sha2"
25948+ ],
25949+ "device_id": "ALICEDEVICE1240",
25950+ "keys": {
25951+ "curve25519:ALICEDEVICE1240": "ME7596ZVduZXIYAbIiyk3tOuNW6lD63UBH6OVBRCUmI",
25952+ "ed25519:ALICEDEVICE1240": "3vVAiPqTyy/L8knc5WIQn8JNCep5pB/8J6AIUTnMpqk"
25953+ },
25954+ "signatures": {
25955+ "@alice_1240:hs1": {
25956+ "ed25519:ALICEDEVICE1240": "hL99qmSS4XAVNg8P1rzrRVfiX4HACd94XbyZ5G8Lt6vUhdAgqsF+1enYM8z+ia/gRRJckg1r2o448FNTP2jwDg"
25957+ }
25958+ },
25959+ "user_id": "@alice_1240:hs1",
25960+ "unsigned": {}
25961+ }
25962+ },
25963+ "@alice_1242:hs1": {
25964+ "ALICEDEVICE1242": {
25965+ "algorithms": [
25966+ "m.olm.v1.curve25519-aes-sha2",
25967+ "m.megolm.v1.aes-sha2"
25968+ ],
25969+ "device_id": "ALICEDEVICE1242",
25970+ "keys": {
25971+ "curve25519:ALICEDEVICE1242": "U1QU5UvKAPO0DHc+d8rXXCtcXwzf7n0z/JWFBgxuOXQ",
25972+ "ed25519:ALICEDEVICE1242": "nA7G5P6RlSBo+71092ZooL4IUczPanIjbtjUX3aNPdY"
25973+ },
25974+ "signatures": {
25975+ "@alice_1242:hs1": {
25976+ "ed25519:ALICEDEVICE1242": "X2mP1KermW+1HJUJess5zVgGKyKJ/98BKl4qfAmdNQqr+/ONVGRcfjx00hjYDKG48+9UGoQZuhgHj1qmqz42DQ"
25977+ }
25978+ },
25979+ "user_id": "@alice_1242:hs1",
25980+ "unsigned": {}
25981+ }
25982+ },
25983+ "@alice_1246:hs1": {
25984+ "ALICEDEVICE1246": {
25985+ "algorithms": [
25986+ "m.olm.v1.curve25519-aes-sha2",
25987+ "m.megolm.v1.aes-sha2"
25988+ ],
25989+ "device_id": "ALICEDEVICE1246",
25990+ "keys": {
25991+ "curve25519:ALICEDEVICE1246": "6mrGrVatmhsL0iIsgbf2YTRJKy0ewik6TbWO6Y98E1c",
25992+ "ed25519:ALICEDEVICE1246": "P/HrOX5VB1qH8ZSZoO/1Aiq89O5xoR1mnDp3ZMAQpnA"
25993+ },
25994+ "signatures": {
25995+ "@alice_1246:hs1": {
25996+ "ed25519:ALICEDEVICE1246": "15Nf4eX/uBnPVKlJEjeBPJVW+/ixsu0n7dG0jaR3QsJ4oQMX6oniX4HfniSs3C23c3L1UzE71YIIfHGgCUkVCg"
25997+ }
25998+ },
25999+ "user_id": "@alice_1246:hs1",
26000+ "unsigned": {}
26001+ }
26002+ },
26003+ "@alice_1271:hs1": {
26004+ "ALICEDEVICE1271": {
26005+ "algorithms": [
26006+ "m.olm.v1.curve25519-aes-sha2",
26007+ "m.megolm.v1.aes-sha2"
26008+ ],
26009+ "device_id": "ALICEDEVICE1271",
26010+ "keys": {
26011+ "curve25519:ALICEDEVICE1271": "ZGRXUfcS4gkJlDa/9ytYYMLAxvlyOnhDG2FzbgsgDVA",
26012+ "ed25519:ALICEDEVICE1271": "A/AVBI4xzRrrtVPIbBSKVRVkeCLt1f+wjwVKOHSnrCs"
26013+ },
26014+ "signatures": {
26015+ "@alice_1271:hs1": {
26016+ "ed25519:ALICEDEVICE1271": "zkI2oVFlfwgueFSdzSd5tvRs4EIdgzAroPFllZ6o6A0uyviJfjmgewDJxcstHQr9VQVi74NUJpjl6WpII+btCQ"
26017+ }
26018+ },
26019+ "user_id": "@alice_1271:hs1",
26020+ "unsigned": {}
26021+ }
26022+ },
26023+ "@alice_1272:hs1": {
26024+ "ALICEDEVICE1272": {
26025+ "algorithms": [
26026+ "m.olm.v1.curve25519-aes-sha2",
26027+ "m.megolm.v1.aes-sha2"
26028+ ],
26029+ "device_id": "ALICEDEVICE1272",
26030+ "keys": {
26031+ "curve25519:ALICEDEVICE1272": "zrDZvrw+JYtbZjqp9V6lhDcf02P4xdRhcLXfKlLBZ3w",
26032+ "ed25519:ALICEDEVICE1272": "oGQ/5zV0sQgZFcb2dc+IimOTh2TUARBuiX8ZfX31Ew8"
26033+ },
26034+ "signatures": {
26035+ "@alice_1272:hs1": {
26036+ "ed25519:ALICEDEVICE1272": "psrzUheBffQ/4L7BGCOlcXMg5RV/jTg4ZfgDITthaLBL4t4cEoF5kDiMVPQYIku8dLGnH2NyD7E6kYb4vabjDg"
26037+ }
26038+ },
26039+ "user_id": "@alice_1272:hs1",
26040+ "unsigned": {}
26041+ }
26042+ },
26043+ "@alice_1281:hs1": {
26044+ "ALICEDEVICE1281": {
26045+ "algorithms": [
26046+ "m.olm.v1.curve25519-aes-sha2",
26047+ "m.megolm.v1.aes-sha2"
26048+ ],
26049+ "device_id": "ALICEDEVICE1281",
26050+ "keys": {
26051+ "curve25519:ALICEDEVICE1281": "xssYSWcoNkNXqvGdfYwP5ueW/OImwW9QNhEqAhn6iCw",
26052+ "ed25519:ALICEDEVICE1281": "QWeCmpXgZVeYDnns7irZPAtPm2i2Y72skttPU1fQmN4"
26053+ },
26054+ "signatures": {
26055+ "@alice_1281:hs1": {
26056+ "ed25519:ALICEDEVICE1281": "hKNgK1fFutzD7zJNiCUDOsjDEBAKKDtA0+alhBwQa0IsZoSrL78Zpp/HXh92jvJZAHpAA3MbRdaSXJSF3tlwCQ"
26057+ }
26058+ },
26059+ "user_id": "@alice_1281:hs1",
26060+ "unsigned": {}
26061+ }
26062+ },
26063+ "@alice_1285:hs1": {
26064+ "ALICEDEVICE1285": {
26065+ "algorithms": [
26066+ "m.olm.v1.curve25519-aes-sha2",
26067+ "m.megolm.v1.aes-sha2"
26068+ ],
26069+ "device_id": "ALICEDEVICE1285",
26070+ "keys": {
26071+ "curve25519:ALICEDEVICE1285": "Hc/cetcVJc3mSaonG9olF6+r1E4WxN2icyd8+6dHyQQ",
26072+ "ed25519:ALICEDEVICE1285": "ftqz65r51IOPntTi4qxp5rgRwFyWMlYquDE+/mXNSJ8"
26073+ },
26074+ "signatures": {
26075+ "@alice_1285:hs1": {
26076+ "ed25519:ALICEDEVICE1285": "Fp82CSLgUoLiPy9TwRMbt9vEt0QOxaOXhe20ZyUvp6tVYN5cYYt4DQtNp7/QpUGadqouUzzZ3hDPPgAUM5kBBQ"
26077+ }
26078+ },
26079+ "user_id": "@alice_1285:hs1",
26080+ "unsigned": {}
26081+ }
26082+ },
26083+ "@alice_1304:hs1": {
26084+ "ALICEDEVICE1304": {
26085+ "algorithms": [
26086+ "m.olm.v1.curve25519-aes-sha2",
26087+ "m.megolm.v1.aes-sha2"
26088+ ],
26089+ "device_id": "ALICEDEVICE1304",
26090+ "keys": {
26091+ "curve25519:ALICEDEVICE1304": "sIDynojQdr6YWn9E6/+/9GM8KUmxhniZpXRHru8hQmk",
26092+ "ed25519:ALICEDEVICE1304": "ypk4ID27LFqsroU8vReDvmUhJ0ShyLM80zchlvRYYDI"
26093+ },
26094+ "signatures": {
26095+ "@alice_1304:hs1": {
26096+ "ed25519:ALICEDEVICE1304": "Cll2hIvlLFu6XYbvyl0jSBcsSj4imhDjfD026G+mjZzOFLIJe7HBLASttDagT928121jHglxauyoYiQVY/TSDQ"
26097+ }
26098+ },
26099+ "user_id": "@alice_1304:hs1",
26100+ "unsigned": {}
26101+ }
26102+ },
26103+ "@alice_1310:hs1": {
26104+ "ALICEDEVICE1310": {
26105+ "algorithms": [
26106+ "m.olm.v1.curve25519-aes-sha2",
26107+ "m.megolm.v1.aes-sha2"
26108+ ],
26109+ "device_id": "ALICEDEVICE1310",
26110+ "keys": {
26111+ "curve25519:ALICEDEVICE1310": "2nAMTKN/vbqqtsP0V+ltQkBJdpzK54P7H0NS14xH1zY",
26112+ "ed25519:ALICEDEVICE1310": "AF1H09/b9AjA2/UOhyk4FB1o84wkjXZlvPRPmsN/c9U"
26113+ },
26114+ "signatures": {
26115+ "@alice_1310:hs1": {
26116+ "ed25519:ALICEDEVICE1310": "8/E7PTleV8yGeGjND+ux0hNjJoLXp6bDmQjZNWxpmdsVkJhbkEKeoRkzHfHAiJgPAq4BVvP62rQ7eWuTrRmhDg"
26117+ }
26118+ },
26119+ "user_id": "@alice_1310:hs1",
26120+ "unsigned": {}
26121+ }
26122+ },
26123+ "@alice_1343:hs1": {
26124+ "ALICEDEVICE1343": {
26125+ "algorithms": [
26126+ "m.olm.v1.curve25519-aes-sha2",
26127+ "m.megolm.v1.aes-sha2"
26128+ ],
26129+ "device_id": "ALICEDEVICE1343",
26130+ "keys": {
26131+ "curve25519:ALICEDEVICE1343": "xWvh763p2dLGr09My6sJGQN3zB0MmFr4JzTV1SbQwD4",
26132+ "ed25519:ALICEDEVICE1343": "a4w7LCstAkZdHpOFTL1fglCteYBs1NLIDeNtXI31vpU"
26133+ },
26134+ "signatures": {
26135+ "@alice_1343:hs1": {
26136+ "ed25519:ALICEDEVICE1343": "5HNMRXcy81ZQsg6+VMevYintGXgP5QtgkAvWl62W4E9bAkL4m2z39x0VKbRto2w5OiXp1LuF1vvGv3Ru/kMmDw"
26137+ }
26138+ },
26139+ "user_id": "@alice_1343:hs1",
26140+ "unsigned": {}
26141+ }
26142+ },
26143+ "@alice_1383:hs1": {
26144+ "ALICEDEVICE1383": {
26145+ "algorithms": [
26146+ "m.olm.v1.curve25519-aes-sha2",
26147+ "m.megolm.v1.aes-sha2"
26148+ ],
26149+ "device_id": "ALICEDEVICE1383",
26150+ "keys": {
26151+ "curve25519:ALICEDEVICE1383": "O2bLOae3xhPnnwdgYhYGJhXTl11ecObCdHWkC/qXjz4",
26152+ "ed25519:ALICEDEVICE1383": "ShjE7uCD1uXOlD0V7rdsnJMHgYiuDQgPtR0Md/Abl5w"
26153+ },
26154+ "signatures": {
26155+ "@alice_1383:hs1": {
26156+ "ed25519:ALICEDEVICE1383": "LAmHW4g4S3UbUsq0WB+/yfQpCdqT9wfR4LiCpyq2X7Ixx9taEaUBkVQ64Z067rSXbFhS3p6ECipmlzvfwjLcAw"
26157+ }
26158+ },
26159+ "user_id": "@alice_1383:hs1",
26160+ "unsigned": {}
26161+ }
26162+ },
26163+ "@alice_1385:hs1": {
26164+ "ALICEDEVICE1385": {
26165+ "algorithms": [
26166+ "m.olm.v1.curve25519-aes-sha2",
26167+ "m.megolm.v1.aes-sha2"
26168+ ],
26169+ "device_id": "ALICEDEVICE1385",
26170+ "keys": {
26171+ "curve25519:ALICEDEVICE1385": "XF5sx+7ebbpq37CCajkKCLMwWCUAmPGaYlEPt3pDp1w",
26172+ "ed25519:ALICEDEVICE1385": "lXmpE3ItT5BPzihXrL/N34s8JktQ0lpLUCyx6uNJmAI"
26173+ },
26174+ "signatures": {
26175+ "@alice_1385:hs1": {
26176+ "ed25519:ALICEDEVICE1385": "71y28Qa/skpvSKHpCTtFVtKDI8yQvNd0J58nPo7ucPgPr/DmXGHAiD6vu4GyMbClqp9eXgl05IKlxHN2pdczAA"
26177+ }
26178+ },
26179+ "user_id": "@alice_1385:hs1",
26180+ "unsigned": {}
26181+ }
26182+ },
26183+ "@alice_1396:hs1": {
26184+ "ALICEDEVICE1396": {
26185+ "algorithms": [
26186+ "m.olm.v1.curve25519-aes-sha2",
26187+ "m.megolm.v1.aes-sha2"
26188+ ],
26189+ "device_id": "ALICEDEVICE1396",
26190+ "keys": {
26191+ "curve25519:ALICEDEVICE1396": "E6zJqFrkZ5L7NxU9tWbIumt0C/M+cVeXpqzXvGOD5BQ",
26192+ "ed25519:ALICEDEVICE1396": "+il/bajcjlSVyItmEQPDnZpXXjiiHdX+zE6wFK8JXWY"
26193+ },
26194+ "signatures": {
26195+ "@alice_1396:hs1": {
26196+ "ed25519:ALICEDEVICE1396": "qY/wCGWAg5flbrn8B0irlozu3MFq1yTB0bd2i8BoZbPJ4WURCZXoJTzBWrgkE7UA0WBYAapY4LZmRLdUzcIVAg"
26197+ }
26198+ },
26199+ "user_id": "@alice_1396:hs1",
26200+ "unsigned": {}
26201+ }
26202+ },
26203+ "@alice_139:hs1": {
26204+ "ALICEDEVICE139": {
26205+ "algorithms": [
26206+ "m.olm.v1.curve25519-aes-sha2",
26207+ "m.megolm.v1.aes-sha2"
26208+ ],
26209+ "device_id": "ALICEDEVICE139",
26210+ "keys": {
26211+ "curve25519:ALICEDEVICE139": "Gp5KT3TKR83ffnEm0lFzhyKOrwbUfdVEVcCXqzdNaw0",
26212+ "ed25519:ALICEDEVICE139": "SsbmuPqwG1QRcczM2JxhMjVr3QS8DtnyGLkML/mXIqA"
26213+ },
26214+ "signatures": {
26215+ "@alice_139:hs1": {
26216+ "ed25519:ALICEDEVICE139": "98/xwkqiVDpI0i+OzxtHaHmfvBV0bHBbPrPeQjccAkIQiTYDnWDubHO0jcmbUC+W2+IkrdMWYklMhLnSzdTCDw"
26217+ }
26218+ },
26219+ "user_id": "@alice_139:hs1",
26220+ "unsigned": {}
26221+ }
26222+ },
26223+ "@alice_1404:hs1": {
26224+ "ALICEDEVICE1404": {
26225+ "algorithms": [
26226+ "m.olm.v1.curve25519-aes-sha2",
26227+ "m.megolm.v1.aes-sha2"
26228+ ],
26229+ "device_id": "ALICEDEVICE1404",
26230+ "keys": {
26231+ "curve25519:ALICEDEVICE1404": "zcpUNII5zCiCfNwkm7tEcD/sUbvwAsKpdB1b8vllfhI",
26232+ "ed25519:ALICEDEVICE1404": "4G0vDKtcQb5Kcrc3axPP9YxNxPpJYEIx7cxKVZmF6Ps"
26233+ },
26234+ "signatures": {
26235+ "@alice_1404:hs1": {
26236+ "ed25519:ALICEDEVICE1404": "ow+edA79tPyi4HkwP5x5XQgdB4tWEzJ9oP0qiYFkiOS6qpAzG5b3C2BG2ndVMJiauw1wnpLKag4GK8F4FPEUDA"
26237+ }
26238+ },
26239+ "user_id": "@alice_1404:hs1",
26240+ "unsigned": {}
26241+ }
26242+ },
26243+ "@alice_1425:hs1": {
26244+ "ALICEDEVICE1425": {
26245+ "algorithms": [
26246+ "m.olm.v1.curve25519-aes-sha2",
26247+ "m.megolm.v1.aes-sha2"
26248+ ],
26249+ "device_id": "ALICEDEVICE1425",
26250+ "keys": {
26251+ "curve25519:ALICEDEVICE1425": "SctIlFbwCS5yIseb4wuRMFaZNYa8DhiCn+1X+z7PqHE",
26252+ "ed25519:ALICEDEVICE1425": "Ng/WEIKcEkDJ1Sv+u/1a3PdPjKgDuOaX4Xroy+5a1Yg"
26253+ },
26254+ "signatures": {
26255+ "@alice_1425:hs1": {
26256+ "ed25519:ALICEDEVICE1425": "XH8cc3SvnmqVNpJPTSsSwy9zIiv6WSANVchK75uTWFFi48LJco92A53aXdJOVDL/YIH1K8uejauxV3tYjAsmAg"
26257+ }
26258+ },
26259+ "user_id": "@alice_1425:hs1",
26260+ "unsigned": {}
26261+ }
26262+ },
26263+ "@alice_1439:hs1": {
26264+ "ALICEDEVICE1439": {
26265+ "algorithms": [
26266+ "m.olm.v1.curve25519-aes-sha2",
26267+ "m.megolm.v1.aes-sha2"
26268+ ],
26269+ "device_id": "ALICEDEVICE1439",
26270+ "keys": {
26271+ "curve25519:ALICEDEVICE1439": "T87495zIyrNTtk5vFh8X5UsPAYRsYUx1084Dt3tYOSo",
26272+ "ed25519:ALICEDEVICE1439": "kfmlCIw2xEd5k4DiMDrgPqGilcd0efKFx4NNXtVVdS8"
26273+ },
26274+ "signatures": {
26275+ "@alice_1439:hs1": {
26276+ "ed25519:ALICEDEVICE1439": "+utj/T9+UbExLrJimEplNy5WkyUlgGGkb7EF64ahkb9QFZsJ8/5bhn5t4u3myOPfg5x+HwM+/CXSzAFq2Fa1CQ"
26277+ }
26278+ },
26279+ "user_id": "@alice_1439:hs1",
26280+ "unsigned": {}
26281+ }
26282+ },
26283+ "@alice_1443:hs1": {
26284+ "ALICEDEVICE1443": {
26285+ "algorithms": [
26286+ "m.olm.v1.curve25519-aes-sha2",
26287+ "m.megolm.v1.aes-sha2"
26288+ ],
26289+ "device_id": "ALICEDEVICE1443",
26290+ "keys": {
26291+ "curve25519:ALICEDEVICE1443": "mtOLenL+vdEl32EaGHHNxewyWRFcsbrg1LYzeaMQkgI",
26292+ "ed25519:ALICEDEVICE1443": "hjweVJHzJ5qzFdyvQrE+42cLmr0hI+AxF0GFfqWylrQ"
26293+ },
26294+ "signatures": {
26295+ "@alice_1443:hs1": {
26296+ "ed25519:ALICEDEVICE1443": "S60pM4LHNE2GKCtfjieJgbwS/m8X9L3Vb6MF8UMrH68SPXlSPndTPUXEXTxdLvGoAWIIbvoBsBM1a7JCsIupCA"
26297+ }
26298+ },
26299+ "user_id": "@alice_1443:hs1",
26300+ "unsigned": {}
26301+ }
26302+ },
26303+ "@alice_1451:hs1": {
26304+ "ALICEDEVICE1451": {
26305+ "algorithms": [
26306+ "m.olm.v1.curve25519-aes-sha2",
26307+ "m.megolm.v1.aes-sha2"
26308+ ],
26309+ "device_id": "ALICEDEVICE1451",
26310+ "keys": {
26311+ "curve25519:ALICEDEVICE1451": "MkNgqEhPf9dP49OylkSYRJqAMCkckFGmgl+unWYDvm0",
26312+ "ed25519:ALICEDEVICE1451": "spyzpOP+3aGHOxV2M4b9wzGdudW9Lm1RCdvh/D2syTc"
26313+ },
26314+ "signatures": {
26315+ "@alice_1451:hs1": {
26316+ "ed25519:ALICEDEVICE1451": "X8NVa+eEbbUNdkz1/RaEysZkZ6rH63wQQOGaHjs+JDC72Aasc6y6rfT2QCLI34/qF+8TMsiuIIGsJyH5mlrpDQ"
26317+ }
26318+ },
26319+ "user_id": "@alice_1451:hs1",
26320+ "unsigned": {}
26321+ }
26322+ },
26323+ "@alice_1470:hs1": {
26324+ "ALICEDEVICE1470": {
26325+ "algorithms": [
26326+ "m.olm.v1.curve25519-aes-sha2",
26327+ "m.megolm.v1.aes-sha2"
26328+ ],
26329+ "device_id": "ALICEDEVICE1470",
26330+ "keys": {
26331+ "curve25519:ALICEDEVICE1470": "hWGcHypXYhrijmTsq2WyIhAsdhd6kqtO9GIT4F6kST4",
26332+ "ed25519:ALICEDEVICE1470": "2wgzUUc1A53rw5VxfFuFjptGJULF1yX36iFihWWNSHY"
26333+ },
26334+ "signatures": {
26335+ "@alice_1470:hs1": {
26336+ "ed25519:ALICEDEVICE1470": "stXljIBeO4GnIKhmL6lqpBGc6IkSiNHU/Anw48kRdX6LWrBc0+Mjkb/Zq75N5tpsWNhOTdt2RhF7dkboaMA6CQ"
26337+ }
26338+ },
26339+ "user_id": "@alice_1470:hs1",
26340+ "unsigned": {}
26341+ }
26342+ },
26343+ "@alice_1471:hs1": {
26344+ "ALICEDEVICE1471": {
26345+ "algorithms": [
26346+ "m.olm.v1.curve25519-aes-sha2",
26347+ "m.megolm.v1.aes-sha2"
26348+ ],
26349+ "device_id": "ALICEDEVICE1471",
26350+ "keys": {
26351+ "curve25519:ALICEDEVICE1471": "MwhdWnq0gY566bNu4uhCaRMXyhSBo6G78Ksi3Ms2/FE",
26352+ "ed25519:ALICEDEVICE1471": "k4axd36L3jx9xq/HAVHWYNKnp1JM1Nd7HM2hLN1E+8s"
26353+ },
26354+ "signatures": {
26355+ "@alice_1471:hs1": {
26356+ "ed25519:ALICEDEVICE1471": "OBW46vFG/HeF6Tmbn19gt+0RIIlzZUMtVCKi+IgVZBjYhT+T1UhH+gIajxDnP78Jo4Ma2sWGW2XZ4NfYyRoLAg"
26357+ }
26358+ },
26359+ "user_id": "@alice_1471:hs1",
26360+ "unsigned": {}
26361+ }
26362+ },
26363+ "@alice_1473:hs1": {
26364+ "ALICEDEVICE1473": {
26365+ "algorithms": [
26366+ "m.olm.v1.curve25519-aes-sha2",
26367+ "m.megolm.v1.aes-sha2"
26368+ ],
26369+ "device_id": "ALICEDEVICE1473",
26370+ "keys": {
26371+ "curve25519:ALICEDEVICE1473": "ZpAu2Ca/wTFrmGyEA6a+qNS2FBZvzvBndKzPscsU+0g",
26372+ "ed25519:ALICEDEVICE1473": "/6v8+OZTKW33kJIbq6jFnRLqo9JwlYAeuJFgfGjmDtw"
26373+ },
26374+ "signatures": {
26375+ "@alice_1473:hs1": {
26376+ "ed25519:ALICEDEVICE1473": "AF/hHo1L2AEqJ0plYgZysYpulQ8MTYVNmj0bWmviMCftjabf6V5wpZNb9culdfhi5nnvwigzda3BbNDEohjZBw"
26377+ }
26378+ },
26379+ "user_id": "@alice_1473:hs1",
26380+ "unsigned": {}
26381+ }
26382+ },
26383+ "@alice_1476:hs1": {
26384+ "ALICEDEVICE1476": {
26385+ "algorithms": [
26386+ "m.olm.v1.curve25519-aes-sha2",
26387+ "m.megolm.v1.aes-sha2"
26388+ ],
26389+ "device_id": "ALICEDEVICE1476",
26390+ "keys": {
26391+ "curve25519:ALICEDEVICE1476": "GjMKVYChxXZxlJCaX0aLyh35vuhfXNoyVSLEcYJCNV0",
26392+ "ed25519:ALICEDEVICE1476": "zwXYFrBMXYubhg2cKAjQzVfLNKlBTBeZVypqMpHQsbA"
26393+ },
26394+ "signatures": {
26395+ "@alice_1476:hs1": {
26396+ "ed25519:ALICEDEVICE1476": "v/SNfBDf3ic4SfRP2l3IP0UFTJ4af7eh3w2rXqZeWYjgAYj9nVttL4HLnUjI3F2tgkggLXIT/oZadpEIMnlWAQ"
26397+ }
26398+ },
26399+ "user_id": "@alice_1476:hs1",
26400+ "unsigned": {}
26401+ }
26402+ },
26403+ "@alice_1481:hs1": {
26404+ "ALICEDEVICE1481": {
26405+ "algorithms": [
26406+ "m.olm.v1.curve25519-aes-sha2",
26407+ "m.megolm.v1.aes-sha2"
26408+ ],
26409+ "device_id": "ALICEDEVICE1481",
26410+ "keys": {
26411+ "curve25519:ALICEDEVICE1481": "YhTJjespwiJkDf/Im5gqcQdXqg68bdG5J3OoSy1/owY",
26412+ "ed25519:ALICEDEVICE1481": "nYwEQ2GqsjjvUa7lKafzA93TEq0/lqxzZI0wHiBqsLg"
26413+ },
26414+ "signatures": {
26415+ "@alice_1481:hs1": {
26416+ "ed25519:ALICEDEVICE1481": "UDmwzmZ9et2IyCoupUTV7SABbV9G7YEvShmpqBt3OdE+iNC0bSdwJyCBv0XxmjhdKjEANZ2JgZe/1IirQhKwAw"
26417+ }
26418+ },
26419+ "user_id": "@alice_1481:hs1",
26420+ "unsigned": {}
26421+ }
26422+ },
26423+ "@alice_148:hs1": {
26424+ "ALICEDEVICE148": {
26425+ "algorithms": [
26426+ "m.olm.v1.curve25519-aes-sha2",
26427+ "m.megolm.v1.aes-sha2"
26428+ ],
26429+ "device_id": "ALICEDEVICE148",
26430+ "keys": {
26431+ "curve25519:ALICEDEVICE148": "R/d/tsohnfk5UhB2WQxMm5IX+8QHPeSOsbWFoiYOeiE",
26432+ "ed25519:ALICEDEVICE148": "kbIUZLhWoZJmjhbC8VlBqv1ZU735CrtNx6hA3rrj20E"
26433+ },
26434+ "signatures": {
26435+ "@alice_148:hs1": {
26436+ "ed25519:ALICEDEVICE148": "K3TNwkqSgPSf+G5hC/IVq9hkgXONM17ckuWfDiTYs6DfppH+adw25PeKavSEVdvD376W2mSJr43bHWTVM7jjCA"
26437+ }
26438+ },
26439+ "user_id": "@alice_148:hs1",
26440+ "unsigned": {}
26441+ }
26442+ },
26443+ "@alice_1494:hs1": {
26444+ "ALICEDEVICE1494": {
26445+ "algorithms": [
26446+ "m.olm.v1.curve25519-aes-sha2",
26447+ "m.megolm.v1.aes-sha2"
26448+ ],
26449+ "device_id": "ALICEDEVICE1494",
26450+ "keys": {
26451+ "curve25519:ALICEDEVICE1494": "J/aHC/jdfrPAl97hY4mqkYa4O/gtrOKhoS1Ksz3aGkE",
26452+ "ed25519:ALICEDEVICE1494": "ZSIgrp20/Kh27L/R7bInx7H6rKTYvo8DXTkMUL8E6Pw"
26453+ },
26454+ "signatures": {
26455+ "@alice_1494:hs1": {
26456+ "ed25519:ALICEDEVICE1494": "OffA/lhLrL4SBLUwkO7vyvpdlAiOIsknBVhCpT39mRDHoRmjvc27EQGT1XLuX3yziPF+4jvwsk0Md2+HSIWBDw"
26457+ }
26458+ },
26459+ "user_id": "@alice_1494:hs1",
26460+ "unsigned": {}
26461+ }
26462+ },
26463+ "@alice_1497:hs1": {
26464+ "ALICEDEVICE1497": {
26465+ "algorithms": [
26466+ "m.olm.v1.curve25519-aes-sha2",
26467+ "m.megolm.v1.aes-sha2"
26468+ ],
26469+ "device_id": "ALICEDEVICE1497",
26470+ "keys": {
26471+ "curve25519:ALICEDEVICE1497": "rqAvDBy8GnqSYWPWi4OlfchNDGBREdt9Pm7LfMjPj0g",
26472+ "ed25519:ALICEDEVICE1497": "N0lhr2tAV3hXUYknur4rw/r6x7shRV9v1AY+LaAmzxs"
26473+ },
26474+ "signatures": {
26475+ "@alice_1497:hs1": {
26476+ "ed25519:ALICEDEVICE1497": "RHkdOUX0sKW5f41rJPPlYUatws/jhvBHZkGg9tma0jepjTjEoLFa8jC2Pkd24jP1AIGWAmcbcXc7k8InUbKdDw"
26477+ }
26478+ },
26479+ "user_id": "@alice_1497:hs1",
26480+ "unsigned": {}
26481+ }
26482+ },
26483+ "@alice_1501:hs1": {
26484+ "ALICEDEVICE1501": {
26485+ "algorithms": [
26486+ "m.olm.v1.curve25519-aes-sha2",
26487+ "m.megolm.v1.aes-sha2"
26488+ ],
26489+ "device_id": "ALICEDEVICE1501",
26490+ "keys": {
26491+ "curve25519:ALICEDEVICE1501": "rBhRi0q/BBn5cAvDnNRzDRe9MT7G2s+/t681XNBVzB0",
26492+ "ed25519:ALICEDEVICE1501": "x1qaRSfzNQcy9g1UbVBxwbpLPNwIu7Kln4fF5BXjl4w"
26493+ },
26494+ "signatures": {
26495+ "@alice_1501:hs1": {
26496+ "ed25519:ALICEDEVICE1501": "3afyOYbVP7LuC90NQd5Rh0FBCUL7GxpaY8V1ji+9A2KrK+9caVaUgEK+gzysjLh35hu1kR1Wld9MKH8EECtBBw"
26497+ }
26498+ },
26499+ "user_id": "@alice_1501:hs1",
26500+ "unsigned": {}
26501+ }
26502+ },
26503+ "@alice_1509:hs1": {
26504+ "ALICEDEVICE1509": {
26505+ "algorithms": [
26506+ "m.olm.v1.curve25519-aes-sha2",
26507+ "m.megolm.v1.aes-sha2"
26508+ ],
26509+ "device_id": "ALICEDEVICE1509",
26510+ "keys": {
26511+ "curve25519:ALICEDEVICE1509": "yW8x8T32WRQBkz6man3I+YGsutjfTbTfR+Od4uu3oC0",
26512+ "ed25519:ALICEDEVICE1509": "jg9VcHuottyD8JmhS/1lTxCmLsMO7VpSwqfkuKxIhlg"
26513+ },
26514+ "signatures": {
26515+ "@alice_1509:hs1": {
26516+ "ed25519:ALICEDEVICE1509": "0OcHlQvIACIZEgej+82yKebq13GI3qajPTALPDq83VK3nRnG733pXLM9bpBX304TBLXkJO8Isr6j5YfPqXxfAg"
26517+ }
26518+ },
26519+ "user_id": "@alice_1509:hs1",
26520+ "unsigned": {}
26521+ }
26522+ },
26523+ "@alice_1515:hs1": {
26524+ "ALICEDEVICE1515": {
26525+ "algorithms": [
26526+ "m.olm.v1.curve25519-aes-sha2",
26527+ "m.megolm.v1.aes-sha2"
26528+ ],
26529+ "device_id": "ALICEDEVICE1515",
26530+ "keys": {
26531+ "curve25519:ALICEDEVICE1515": "bACcyrmuQAUPNkNjBMOHMNN1Rtpaj4i9BpPOiIjK4hY",
26532+ "ed25519:ALICEDEVICE1515": "ll19rpe0TAJcbaU3L0AJFLGW0cEuXGHAa8Xt/j1+VO0"
26533+ },
26534+ "signatures": {
26535+ "@alice_1515:hs1": {
26536+ "ed25519:ALICEDEVICE1515": "HPvvqluRdlv4RXY7idrkU/jlWaKKRa68MEFDU9eJM0pCFWn8FJvi7Hs+29K7zFBU1vj7tyQmcnIbBxcFOBdJBw"
26537+ }
26538+ },
26539+ "user_id": "@alice_1515:hs1",
26540+ "unsigned": {}
26541+ }
26542+ },
26543+ "@alice_1516:hs1": {
26544+ "ALICEDEVICE1516": {
26545+ "algorithms": [
26546+ "m.olm.v1.curve25519-aes-sha2",
26547+ "m.megolm.v1.aes-sha2"
26548+ ],
26549+ "device_id": "ALICEDEVICE1516",
26550+ "keys": {
26551+ "curve25519:ALICEDEVICE1516": "2d+eHfG9UK7/DxV543v/fDNcfV14/WD4Ze5gCI9EaTQ",
26552+ "ed25519:ALICEDEVICE1516": "Vm4YtAepnTDDRqYhGnfJtF7M09sA0oApN2Ic/ijREq8"
26553+ },
26554+ "signatures": {
26555+ "@alice_1516:hs1": {
26556+ "ed25519:ALICEDEVICE1516": "sH/nRUA/eBcZpmzRIL5RVbrWgu5ZHtgEYhlyktI3otNn2ZfGHrZN/ykrApYCwvM+H37JjfSC6Ta3SBLw/mtDBA"
26557+ }
26558+ },
26559+ "user_id": "@alice_1516:hs1",
26560+ "unsigned": {}
26561+ }
26562+ },
26563+ "@alice_1522:hs1": {
26564+ "ALICEDEVICE1522": {
26565+ "algorithms": [
26566+ "m.olm.v1.curve25519-aes-sha2",
26567+ "m.megolm.v1.aes-sha2"
26568+ ],
26569+ "device_id": "ALICEDEVICE1522",
26570+ "keys": {
26571+ "curve25519:ALICEDEVICE1522": "dd6DGjZNpmUw+aAc9fNAv7zmx358wyZo+TPo9lCn/wg",
26572+ "ed25519:ALICEDEVICE1522": "mSpscWEjHSaCAxEtM2wu0x2LRSGtrggdUUuIceLTMpw"
26573+ },
26574+ "signatures": {
26575+ "@alice_1522:hs1": {
26576+ "ed25519:ALICEDEVICE1522": "OIJ6hfYWI9ysFSEdafoxXpyWguiA6NNpxi3IrOzsTjGIpRsMn31848uQuFzGyARHMyyAmos85O5jL1+j15/1BQ"
26577+ }
26578+ },
26579+ "user_id": "@alice_1522:hs1",
26580+ "unsigned": {}
26581+ }
26582+ },
26583+ "@alice_1531:hs1": {
26584+ "ALICEDEVICE1531": {
26585+ "algorithms": [
26586+ "m.olm.v1.curve25519-aes-sha2",
26587+ "m.megolm.v1.aes-sha2"
26588+ ],
26589+ "device_id": "ALICEDEVICE1531",
26590+ "keys": {
26591+ "curve25519:ALICEDEVICE1531": "AsEVjII6Wfn2h5ooue+WIRqs/WihY1lODZxEr8Qb814",
26592+ "ed25519:ALICEDEVICE1531": "xGozvaoBjSNV1MWXx2oKxEFJqZ429GK6h2CLWRAkeHo"
26593+ },
26594+ "signatures": {
26595+ "@alice_1531:hs1": {
26596+ "ed25519:ALICEDEVICE1531": "xg6Lwh0qEZXu4aC0xsulcr+/w6CwpwM3QJNq6ikmt/svG1AsUy93Q2mfxeHYRGECylevNe1BwdqXsNfxml7dCA"
26597+ }
26598+ },
26599+ "user_id": "@alice_1531:hs1",
26600+ "unsigned": {}
26601+ }
26602+ },
26603+ "@alice_1536:hs1": {
26604+ "ALICEDEVICE1536": {
26605+ "algorithms": [
26606+ "m.olm.v1.curve25519-aes-sha2",
26607+ "m.megolm.v1.aes-sha2"
26608+ ],
26609+ "device_id": "ALICEDEVICE1536",
26610+ "keys": {
26611+ "curve25519:ALICEDEVICE1536": "oeWcm8B7Y6GWahZvbfvfTRzoHpqLlyckTxOPK2JdYno",
26612+ "ed25519:ALICEDEVICE1536": "1WInpdlj+BW2WWnEwYy9/XN+Tmupyz0hkl6lQ4xpE2M"
26613+ },
26614+ "signatures": {
26615+ "@alice_1536:hs1": {
26616+ "ed25519:ALICEDEVICE1536": "u5bKN4uzmACrtJtX872Qv4gECq6PJjHxbeVqtxf1fB+Y3GRPKzNTIhVGRcfgCvge7nKToWAtWVL8ajfs7ciJBg"
26617+ }
26618+ },
26619+ "user_id": "@alice_1536:hs1",
26620+ "unsigned": {}
26621+ }
26622+ },
26623+ "@alice_1537:hs1": {
26624+ "ALICEDEVICE1537": {
26625+ "algorithms": [
26626+ "m.olm.v1.curve25519-aes-sha2",
26627+ "m.megolm.v1.aes-sha2"
26628+ ],
26629+ "device_id": "ALICEDEVICE1537",
26630+ "keys": {
26631+ "curve25519:ALICEDEVICE1537": "55R1CgnKP1K99LR0xJ6qVjWfBGuQUy7dID+FLXD+OnI",
26632+ "ed25519:ALICEDEVICE1537": "E7LX2ghJfUWx57+VILdmLrUnhetSmtRuEb47cvp2MSI"
26633+ },
26634+ "signatures": {
26635+ "@alice_1537:hs1": {
26636+ "ed25519:ALICEDEVICE1537": "QxJZcrqYmoIrc2YWI4Fvue09vn1g7tadxTv/nLpgolc4msrF324CSre6lRRm2cwmEEYJXCkc3feGw1y99PaZAQ"
26637+ }
26638+ },
26639+ "user_id": "@alice_1537:hs1",
26640+ "unsigned": {}
26641+ }
26642+ },
26643+ "@alice_1539:hs1": {
26644+ "ALICEDEVICE1539": {
26645+ "algorithms": [
26646+ "m.olm.v1.curve25519-aes-sha2",
26647+ "m.megolm.v1.aes-sha2"
26648+ ],
26649+ "device_id": "ALICEDEVICE1539",
26650+ "keys": {
26651+ "curve25519:ALICEDEVICE1539": "8kXo+EsBj0WUJO3epH/Cv69eknwZawIm/XvSuEa6Yz0",
26652+ "ed25519:ALICEDEVICE1539": "uJN8OM0zzBKQuYeKsL0Y5nliJ9xfdjiyeldInN3DKik"
26653+ },
26654+ "signatures": {
26655+ "@alice_1539:hs1": {
26656+ "ed25519:ALICEDEVICE1539": "188zjekdEXFQsp30nQnRGjN5wUQho7rvIxiM3B4nSwskgEqHsmK7pbTkqshIaH+Bma9J7XDA84LM9gwJB05YAQ"
26657+ }
26658+ },
26659+ "user_id": "@alice_1539:hs1",
26660+ "unsigned": {}
26661+ }
26662+ },
26663+ "@alice_1541:hs1": {
26664+ "ALICEDEVICE1541": {
26665+ "algorithms": [
26666+ "m.olm.v1.curve25519-aes-sha2",
26667+ "m.megolm.v1.aes-sha2"
26668+ ],
26669+ "device_id": "ALICEDEVICE1541",
26670+ "keys": {
26671+ "curve25519:ALICEDEVICE1541": "2dTz5e4TD1YsjKYH+o2tzSk5DQVBcrFWiOsHEl5nbF0",
26672+ "ed25519:ALICEDEVICE1541": "+uFIf3yeaT3vNcG1Zv/+fICjOkA5WDsXdRquZKqTCXw"
26673+ },
26674+ "signatures": {
26675+ "@alice_1541:hs1": {
26676+ "ed25519:ALICEDEVICE1541": "gmj8FPCanhCaaBgMOCRyhh1cAC/oR3GtwFLHdwcAUA06N2jL1BE6vfXFQPxKl+cHg5eulU/8MwNm2OM4YLttAw"
26677+ }
26678+ },
26679+ "user_id": "@alice_1541:hs1",
26680+ "unsigned": {}
26681+ }
26682+ },
26683+ "@alice_1543:hs1": {
26684+ "ALICEDEVICE1543": {
26685+ "algorithms": [
26686+ "m.olm.v1.curve25519-aes-sha2",
26687+ "m.megolm.v1.aes-sha2"
26688+ ],
26689+ "device_id": "ALICEDEVICE1543",
26690+ "keys": {
26691+ "curve25519:ALICEDEVICE1543": "xrDcAebMOoG10uVao/ukeL5BXmo2EqMwhWuPgqsQGjg",
26692+ "ed25519:ALICEDEVICE1543": "TJJypIPKic2LLEXrQybQzedzFW2EI1aCdKOXWIpJaTY"
26693+ },
26694+ "signatures": {
26695+ "@alice_1543:hs1": {
26696+ "ed25519:ALICEDEVICE1543": "btjp72KeJ9Kj5WUZyzrKNMSF9koI+mAVb5adoP4APg0G5hxDJakpQN5SFk2iUmHfjLfXQE1LY/uJ49q8EF3nBA"
26697+ }
26698+ },
26699+ "user_id": "@alice_1543:hs1",
26700+ "unsigned": {}
26701+ }
26702+ },
26703+ "@alice_1547:hs1": {
26704+ "ALICEDEVICE1547": {
26705+ "algorithms": [
26706+ "m.olm.v1.curve25519-aes-sha2",
26707+ "m.megolm.v1.aes-sha2"
26708+ ],
26709+ "device_id": "ALICEDEVICE1547",
26710+ "keys": {
26711+ "curve25519:ALICEDEVICE1547": "in+AOAGrTqCvFjUlvmagmCW2ZZAiiolGG8ZmLH63EnY",
26712+ "ed25519:ALICEDEVICE1547": "63KNobMyAMR55yjq0tKLM9hM//V6KU5lauk3ME1oi/Y"
26713+ },
26714+ "signatures": {
26715+ "@alice_1547:hs1": {
26716+ "ed25519:ALICEDEVICE1547": "dUWvqHA811lpIWRWo4UEBc4cO1fP4nlwocUCTuAP/yBUnz42Z5CiRmjRnUzkkQEPYPN32hBmry3wVoFEOyjxCA"
26717+ }
26718+ },
26719+ "user_id": "@alice_1547:hs1",
26720+ "unsigned": {}
26721+ }
26722+ },
26723+ "@alice_154:hs1": {
26724+ "ALICEDEVICE154": {
26725+ "algorithms": [
26726+ "m.olm.v1.curve25519-aes-sha2",
26727+ "m.megolm.v1.aes-sha2"
26728+ ],
26729+ "device_id": "ALICEDEVICE154",
26730+ "keys": {
26731+ "curve25519:ALICEDEVICE154": "3zAPmlS+YmcMGHGCX11R51/Swt99BZl9M5X9Cao3QUw",
26732+ "ed25519:ALICEDEVICE154": "EHktb2uKzTcJeH+igmR5jS9LpZKRh0DyFGLFMzFWOH8"
26733+ },
26734+ "signatures": {
26735+ "@alice_154:hs1": {
26736+ "ed25519:ALICEDEVICE154": "7rZcnQdJo9o/IiZ+L4HGmP+HsBayK6/KLI5JBJS0xpnMNr8lZh+ZARCLu9NRZhmoB1+nGtqsfDWLt/3emHCbBQ"
26737+ }
26738+ },
26739+ "user_id": "@alice_154:hs1",
26740+ "unsigned": {}
26741+ }
26742+ },
26743+ "@alice_1550:hs1": {
26744+ "ALICEDEVICE1550": {
26745+ "algorithms": [
26746+ "m.olm.v1.curve25519-aes-sha2",
26747+ "m.megolm.v1.aes-sha2"
26748+ ],
26749+ "device_id": "ALICEDEVICE1550",
26750+ "keys": {
26751+ "curve25519:ALICEDEVICE1550": "9u9pZkzW0/VEbhTLT7Zs2nZ+0xGFYDam5f9tqmhkCnM",
26752+ "ed25519:ALICEDEVICE1550": "DvdUb13Q5st5vCZpZ1YaYC0TInyNf9d3d0iITeDo3jI"
26753+ },
26754+ "signatures": {
26755+ "@alice_1550:hs1": {
26756+ "ed25519:ALICEDEVICE1550": "Rn4bMvIxbaw7dVCgIzsFhxemptJrCm0Rfi3J/+Loi0nXgb+w5PD2S6qFKDam0S36FRWXg9AzR5OX33Y5NCn7Bg"
26757+ }
26758+ },
26759+ "user_id": "@alice_1550:hs1",
26760+ "unsigned": {}
26761+ }
26762+ },
26763+ "@alice_1570:hs1": {
26764+ "ALICEDEVICE1570": {
26765+ "algorithms": [
26766+ "m.olm.v1.curve25519-aes-sha2",
26767+ "m.megolm.v1.aes-sha2"
26768+ ],
26769+ "device_id": "ALICEDEVICE1570",
26770+ "keys": {
26771+ "curve25519:ALICEDEVICE1570": "YTqZ1Bx6zgf5ehzMIPvRsgxUM7DBxiyn7cegrwcaqX4",
26772+ "ed25519:ALICEDEVICE1570": "tNgJVa3OP5I+LqORLydv8SINys4owBb8yJoRbau02Uw"
26773+ },
26774+ "signatures": {
26775+ "@alice_1570:hs1": {
26776+ "ed25519:ALICEDEVICE1570": "MBJgJPoygo8qbFPsuLX/jja5oVse1B7MIr4WmXB8V5+peyf2AAVS5CFu2eJkJwA/X1DjC3TjAlrVW6KfKgwxCA"
26777+ }
26778+ },
26779+ "user_id": "@alice_1570:hs1",
26780+ "unsigned": {}
26781+ }
26782+ },
26783+ "@alice_1575:hs1": {
26784+ "ALICEDEVICE1575": {
26785+ "algorithms": [
26786+ "m.olm.v1.curve25519-aes-sha2",
26787+ "m.megolm.v1.aes-sha2"
26788+ ],
26789+ "device_id": "ALICEDEVICE1575",
26790+ "keys": {
26791+ "curve25519:ALICEDEVICE1575": "4GAa7itRAVgFqYWBaUjrFlQ4PmdtzAZAum3V62VjfR4",
26792+ "ed25519:ALICEDEVICE1575": "JmLMCuMkg9wNVFJFCb2x1dMKIotm/nhwJhykSzQfjb8"
26793+ },
26794+ "signatures": {
26795+ "@alice_1575:hs1": {
26796+ "ed25519:ALICEDEVICE1575": "Hexsw/idpcKQjYgNZPSL5KlJgkpc/NEbiyhvTkAIN8ihyFlhFUM4zwbtQzGcqy3nc5F7B6MlWGiYWRVIJoezAg"
26797+ }
26798+ },
26799+ "user_id": "@alice_1575:hs1",
26800+ "unsigned": {}
26801+ }
26802+ },
26803+ "@alice_157:hs1": {
26804+ "ALICEDEVICE157": {
26805+ "algorithms": [
26806+ "m.olm.v1.curve25519-aes-sha2",
26807+ "m.megolm.v1.aes-sha2"
26808+ ],
26809+ "device_id": "ALICEDEVICE157",
26810+ "keys": {
26811+ "curve25519:ALICEDEVICE157": "xwk55451y/aQD+4JLjGknJ67SiSPtKJQhoriwTCI4n0",
26812+ "ed25519:ALICEDEVICE157": "ps46uBZ/pm+CETZrWmAKDI6RwOHs4otWfLQ8Vy25LUE"
26813+ },
26814+ "signatures": {
26815+ "@alice_157:hs1": {
26816+ "ed25519:ALICEDEVICE157": "MwAx56TEuLMToPd2j0YwMgqzcwJE6MG9EEa+l9xgjozQOdOoB0unQ27u2r27rAWeJtCyC7ECijZ9wI+4Gy8YDA"
26817+ }
26818+ },
26819+ "user_id": "@alice_157:hs1",
26820+ "unsigned": {}
26821+ }
26822+ },
26823+ "@alice_1584:hs1": {
26824+ "ALICEDEVICE1584": {
26825+ "algorithms": [
26826+ "m.olm.v1.curve25519-aes-sha2",
26827+ "m.megolm.v1.aes-sha2"
26828+ ],
26829+ "device_id": "ALICEDEVICE1584",
26830+ "keys": {
26831+ "curve25519:ALICEDEVICE1584": "7F+K7pMZNqRKirLdrJ7JYrrCVlZsdUshw13743FS7Xo",
26832+ "ed25519:ALICEDEVICE1584": "Lv1uADwZLt6GLjQGJV1RnXWwN931VlAKHY6iav8WP7U"
26833+ },
26834+ "signatures": {
26835+ "@alice_1584:hs1": {
26836+ "ed25519:ALICEDEVICE1584": "ctZmGowQuPi3Zu6xRUryjiVx3U4EOz7DXR3w/v1xlZpsdsXuoSf3lTtURVKEQEZnLrCSgXyvgqsRz5YsUzhGBA"
26837+ }
26838+ },
26839+ "user_id": "@alice_1584:hs1",
26840+ "unsigned": {}
26841+ }
26842+ },
26843+ "@alice_1588:hs1": {
26844+ "ALICEDEVICE1588": {
26845+ "algorithms": [
26846+ "m.olm.v1.curve25519-aes-sha2",
26847+ "m.megolm.v1.aes-sha2"
26848+ ],
26849+ "device_id": "ALICEDEVICE1588",
26850+ "keys": {
26851+ "curve25519:ALICEDEVICE1588": "b4VmiHQ+/BLo22oCzaMMK7nqFEGL7iYl3Nk8HTQEGHo",
26852+ "ed25519:ALICEDEVICE1588": "PYTNgKgcHIIiF9zu79r+5bNgH2np/u8rWt/CI0CDAhk"
26853+ },
26854+ "signatures": {
26855+ "@alice_1588:hs1": {
26856+ "ed25519:ALICEDEVICE1588": "jD9JuEoQRLEY47WFXgn6iW0Ed+JD03MQmnZWjm+zexXxr2+eYUGYN2pACIOHk4IdH2D7Np6wZqkO4k3q+W/eDQ"
26857+ }
26858+ },
26859+ "user_id": "@alice_1588:hs1",
26860+ "unsigned": {}
26861+ }
26862+ },
26863+ "@alice_158:hs1": {
26864+ "ALICEDEVICE158": {
26865+ "algorithms": [
26866+ "m.olm.v1.curve25519-aes-sha2",
26867+ "m.megolm.v1.aes-sha2"
26868+ ],
26869+ "device_id": "ALICEDEVICE158",
26870+ "keys": {
26871+ "curve25519:ALICEDEVICE158": "sf7RM/fDFa5lu7JXZhubKI7zAI0gBcUUbqr0fCmu8gQ",
26872+ "ed25519:ALICEDEVICE158": "NyvDfBlXVBtuPKdUuoj71UymkVwQAfUnne31meLLCRQ"
26873+ },
26874+ "signatures": {
26875+ "@alice_158:hs1": {
26876+ "ed25519:ALICEDEVICE158": "R/mUEyukWk/mlCXf7NB9e1qe7AfAjsl4mr2m2n5zdN2QdGlyYQyWPLAijMWA4qZ2B3LkSD2rkZEVJYdUGy36Cw"
26877+ }
26878+ },
26879+ "user_id": "@alice_158:hs1",
26880+ "unsigned": {}
26881+ }
26882+ },
26883+ "@alice_1604:hs1": {
26884+ "ALICEDEVICE1604": {
26885+ "algorithms": [
26886+ "m.olm.v1.curve25519-aes-sha2",
26887+ "m.megolm.v1.aes-sha2"
26888+ ],
26889+ "device_id": "ALICEDEVICE1604",
26890+ "keys": {
26891+ "curve25519:ALICEDEVICE1604": "HxQ5k/cxLEEXRlehnvCaAEqaw/ChyTfBhMmLIi7sqlg",
26892+ "ed25519:ALICEDEVICE1604": "IPcvFMiMm+xZp1EghA1WewZsE+igfwh4fli8z0DwG1Q"
26893+ },
26894+ "signatures": {
26895+ "@alice_1604:hs1": {
26896+ "ed25519:ALICEDEVICE1604": "OqBAc1nmA7Fc5fuVBfTN6LJJxTMsN/v1QItRBeFHpbjR/IhqI4GfamJZ0zlKwHRrwcbp+OqGAgceEc1fkFYZAQ"
26897+ }
26898+ },
26899+ "user_id": "@alice_1604:hs1",
26900+ "unsigned": {}
26901+ }
26902+ },
26903+ "@alice_1605:hs1": {
26904+ "ALICEDEVICE1605": {
26905+ "algorithms": [
26906+ "m.olm.v1.curve25519-aes-sha2",
26907+ "m.megolm.v1.aes-sha2"
26908+ ],
26909+ "device_id": "ALICEDEVICE1605",
26910+ "keys": {
26911+ "curve25519:ALICEDEVICE1605": "xnLHyGi7fHmyeJ9THs3DUE0jcx8M9mZq5Qp9wPVvTx8",
26912+ "ed25519:ALICEDEVICE1605": "oyAVdaiaouXb/sF1X9ev7P0m0wQel2YRjw+RDszXLEY"
26913+ },
26914+ "signatures": {
26915+ "@alice_1605:hs1": {
26916+ "ed25519:ALICEDEVICE1605": "lGd/UfCHZPLjxPSkow7CEa4M4aEFAttT7sdjJCwQBs8igb8TTYxGQ/j5nXni9NKix1nJLUXRvhVPISM9Em62DQ"
26917+ }
26918+ },
26919+ "user_id": "@alice_1605:hs1",
26920+ "unsigned": {}
26921+ }
26922+ },
26923+ "@alice_1606:hs1": {
26924+ "ALICEDEVICE1606": {
26925+ "algorithms": [
26926+ "m.olm.v1.curve25519-aes-sha2",
26927+ "m.megolm.v1.aes-sha2"
26928+ ],
26929+ "device_id": "ALICEDEVICE1606",
26930+ "keys": {
26931+ "curve25519:ALICEDEVICE1606": "vHL2G46jFqYWHOAwDHruuYHUCH85FV7JeLt1NsQjgTs",
26932+ "ed25519:ALICEDEVICE1606": "RcFKJe4mc9dJo9ZLf95oLjT7Ui5Q3rfRRLSyjMR0Awg"
26933+ },
26934+ "signatures": {
26935+ "@alice_1606:hs1": {
26936+ "ed25519:ALICEDEVICE1606": "HrJRtjfDVp8yxA0/i6T7Qvq+f35pa3Gx1yuXkTk0pRkkepsxbGbPDg5ndqDd1c1YEXPj3yDPr9TchH8hbhnTDA"
26937+ }
26938+ },
26939+ "user_id": "@alice_1606:hs1",
26940+ "unsigned": {}
26941+ }
26942+ },
26943+ "@alice_1611:hs1": {
26944+ "ALICEDEVICE1611": {
26945+ "algorithms": [
26946+ "m.olm.v1.curve25519-aes-sha2",
26947+ "m.megolm.v1.aes-sha2"
26948+ ],
26949+ "device_id": "ALICEDEVICE1611",
26950+ "keys": {
26951+ "curve25519:ALICEDEVICE1611": "Pd7jL9wkvUCQV0PKM2GRfqlmNEzLdXiip0IiazaYwhk",
26952+ "ed25519:ALICEDEVICE1611": "q6uBETuimq2FJCKoyXZbt1KjM2awJP9Vv/UP55b17i4"
26953+ },
26954+ "signatures": {
26955+ "@alice_1611:hs1": {
26956+ "ed25519:ALICEDEVICE1611": "RRucPLAXuF2nTV+7QwmK9cUxp6D4Mncghf3knFJgCnJ5DvYDrt/XLNm4A7ZnQ46LERGdwW+HYRCSSqgJ7QMwAg"
26957+ }
26958+ },
26959+ "user_id": "@alice_1611:hs1",
26960+ "unsigned": {}
26961+ }
26962+ },
26963+ "@alice_1618:hs1": {
26964+ "ALICEDEVICE1618": {
26965+ "algorithms": [
26966+ "m.olm.v1.curve25519-aes-sha2",
26967+ "m.megolm.v1.aes-sha2"
26968+ ],
26969+ "device_id": "ALICEDEVICE1618",
26970+ "keys": {
26971+ "curve25519:ALICEDEVICE1618": "VKkeUSfnW9VoWeB1bhsFxee7P+7jAOWIzkXwtPdf+Xk",
26972+ "ed25519:ALICEDEVICE1618": "pzhjgQUJ1VckyVWCV/7CKqDTd6ty4jjqADp18hKIzNo"
26973+ },
26974+ "signatures": {
26975+ "@alice_1618:hs1": {
26976+ "ed25519:ALICEDEVICE1618": "2BFHLCE/0J2J9TcL6MxvVYZnoylnMuwcH13PmjghcqFDDocDdzf18JhKq8kwPgHqiLgxdsUzwbkXXZC1AWEmDw"
26977+ }
26978+ },
26979+ "user_id": "@alice_1618:hs1",
26980+ "unsigned": {}
26981+ }
26982+ },
26983+ "@alice_1630:hs1": {
26984+ "ALICEDEVICE1630": {
26985+ "algorithms": [
26986+ "m.olm.v1.curve25519-aes-sha2",
26987+ "m.megolm.v1.aes-sha2"
26988+ ],
26989+ "device_id": "ALICEDEVICE1630",
26990+ "keys": {
26991+ "curve25519:ALICEDEVICE1630": "Cc6VW59IhIQtAOhUFNkOJUVEt+AaoeyK3SlGxM96ckA",
26992+ "ed25519:ALICEDEVICE1630": "Zdc4SgbZ38ZSzI5HosTrbavjN5BS+ZIbHWMldaRRjLs"
26993+ },
26994+ "signatures": {
26995+ "@alice_1630:hs1": {
26996+ "ed25519:ALICEDEVICE1630": "y7FE0w6LgZ5szfuvrzkYkwKE8DtPzbjKrzbvUkGE7XbpVRm+JbB/InDVCuJygt/rAT1uyA/CoUZP0Iq7AUynAA"
26997+ }
26998+ },
26999+ "user_id": "@alice_1630:hs1",
27000+ "unsigned": {}
27001+ }
27002+ },
27003+ "@alice_1653:hs1": {
27004+ "ALICEDEVICE1653": {
27005+ "algorithms": [
27006+ "m.olm.v1.curve25519-aes-sha2",
27007+ "m.megolm.v1.aes-sha2"
27008+ ],
27009+ "device_id": "ALICEDEVICE1653",
27010+ "keys": {
27011+ "curve25519:ALICEDEVICE1653": "ydpM7Ew9rAdgrUAr9EUuOx6ufdXkcYg7yhBLaadSqgY",
27012+ "ed25519:ALICEDEVICE1653": "tI3/+RQ9zF0QGG40qiWxLucCMeFH+Bo7fLquymBEG2U"
27013+ },
27014+ "signatures": {
27015+ "@alice_1653:hs1": {
27016+ "ed25519:ALICEDEVICE1653": "6602cUR6LcE2pZc9K2nx9n8Udh+vOGtwnQ7/abx8JBubS7mNnlMO/IB1+Pu4eQDyO2kgf/w42RrhyJkIjS12AA"
27017+ }
27018+ },
27019+ "user_id": "@alice_1653:hs1",
27020+ "unsigned": {}
27021+ }
27022+ },
27023+ "@alice_1669:hs1": {
27024+ "ALICEDEVICE1669": {
27025+ "algorithms": [
27026+ "m.olm.v1.curve25519-aes-sha2",
27027+ "m.megolm.v1.aes-sha2"
27028+ ],
27029+ "device_id": "ALICEDEVICE1669",
27030+ "keys": {
27031+ "curve25519:ALICEDEVICE1669": "dDNJ2rF8qBHtxBLS4SHmHzfwVjiaBINZtSFDcYQKuEo",
27032+ "ed25519:ALICEDEVICE1669": "19+yHQn0Y25jVy44nuVz3Y8K9p5Cyd4jJUxO8h0wO68"
27033+ },
27034+ "signatures": {
27035+ "@alice_1669:hs1": {
27036+ "ed25519:ALICEDEVICE1669": "aBsD45+KLdTYeGUBM3ByErCmiu/aTU7LCrQEHrbfmnDtoQhhSIemlV185t6fURY0p1ixS2Elx/l44vh9/vVRAg"
27037+ }
27038+ },
27039+ "user_id": "@alice_1669:hs1",
27040+ "unsigned": {}
27041+ }
27042+ },
27043+ "@alice_1673:hs1": {
27044+ "ALICEDEVICE1673": {
27045+ "algorithms": [
27046+ "m.olm.v1.curve25519-aes-sha2",
27047+ "m.megolm.v1.aes-sha2"
27048+ ],
27049+ "device_id": "ALICEDEVICE1673",
27050+ "keys": {
27051+ "curve25519:ALICEDEVICE1673": "ZHKKsnF8PtbMW+7s5OoHMyLA0xc/OstFF5DCfrliYkc",
27052+ "ed25519:ALICEDEVICE1673": "cy/5K2vyx+xHy6NPCgKdOMZD61+ART+3d8/1AKxxrZ4"
27053+ },
27054+ "signatures": {
27055+ "@alice_1673:hs1": {
27056+ "ed25519:ALICEDEVICE1673": "z+WwkZO2wbGD94SG7XbdwjxUIfOILic3OrrTFD/g5HbQHtRWJ3pDHVi7DgduyE281RL+AFsZMFO7VV2pPCoRDA"
27057+ }
27058+ },
27059+ "user_id": "@alice_1673:hs1",
27060+ "unsigned": {}
27061+ }
27062+ },
27063+ "@alice_1683:hs1": {
27064+ "ALICEDEVICE1683": {
27065+ "algorithms": [
27066+ "m.olm.v1.curve25519-aes-sha2",
27067+ "m.megolm.v1.aes-sha2"
27068+ ],
27069+ "device_id": "ALICEDEVICE1683",
27070+ "keys": {
27071+ "curve25519:ALICEDEVICE1683": "NsYQl0CvIJKJYxb0szxTPebg4KoVqtIFMSGDXpgtJQs",
27072+ "ed25519:ALICEDEVICE1683": "qBuYyudYpXVZuIAAU+a37+O/HVIuK4uSEpEtFTdM7t8"
27073+ },
27074+ "signatures": {
27075+ "@alice_1683:hs1": {
27076+ "ed25519:ALICEDEVICE1683": "TsgniwMrIMkHj+RQ/EKSE1jLCUzmA4oDoUq/djwMSx5XtEvVSmP1jyLbnATd95GOgxz959rYd1V0mFSFEcMFDg"
27077+ }
27078+ },
27079+ "user_id": "@alice_1683:hs1",
27080+ "unsigned": {}
27081+ }
27082+ },
27083+ "@alice_1684:hs1": {
27084+ "ALICEDEVICE1684": {
27085+ "algorithms": [
27086+ "m.olm.v1.curve25519-aes-sha2",
27087+ "m.megolm.v1.aes-sha2"
27088+ ],
27089+ "device_id": "ALICEDEVICE1684",
27090+ "keys": {
27091+ "curve25519:ALICEDEVICE1684": "sAi7EYb4oGHfcwSS8lZaAZPSx2VUo7rzi9MC8udKWR4",
27092+ "ed25519:ALICEDEVICE1684": "yf0z1bGsc6V31B7sr77JEJw2eUSRuyRllb1wA3nhh/w"
27093+ },
27094+ "signatures": {
27095+ "@alice_1684:hs1": {
27096+ "ed25519:ALICEDEVICE1684": "tKfPaWekTcAHbXEiYLepUNBaYZjKKspJ/jTGMEVk6KQ5VbmyTjP1hZPrAQ7SmKHerTnGnTcd4Dptx/xlhy9DDA"
27097+ }
27098+ },
27099+ "user_id": "@alice_1684:hs1",
27100+ "unsigned": {}
27101+ }
27102+ },
27103+ "@alice_1691:hs1": {
27104+ "ALICEDEVICE1691": {
27105+ "algorithms": [
27106+ "m.olm.v1.curve25519-aes-sha2",
27107+ "m.megolm.v1.aes-sha2"
27108+ ],
27109+ "device_id": "ALICEDEVICE1691",
27110+ "keys": {
27111+ "curve25519:ALICEDEVICE1691": "PQahrzouxI8rp7BBcb2Efzn1t5L6SZgNsz3Cp52jAXI",
27112+ "ed25519:ALICEDEVICE1691": "7J+Y7aY9O9xjTU0jnZn7SM52rUl5imFuQ0ZdTrJcAZw"
27113+ },
27114+ "signatures": {
27115+ "@alice_1691:hs1": {
27116+ "ed25519:ALICEDEVICE1691": "pbmEnYwRRZJb4H9rb9WkBpNyNsKRyZtuN/aWF9fyureN27rPnSCYlY1c6cDq2iuTPLtM9TVSEQIFzjunPaRGCg"
27117+ }
27118+ },
27119+ "user_id": "@alice_1691:hs1",
27120+ "unsigned": {}
27121+ }
27122+ },
27123+ "@alice_1693:hs1": {
27124+ "ALICEDEVICE1693": {
27125+ "algorithms": [
27126+ "m.olm.v1.curve25519-aes-sha2",
27127+ "m.megolm.v1.aes-sha2"
27128+ ],
27129+ "device_id": "ALICEDEVICE1693",
27130+ "keys": {
27131+ "curve25519:ALICEDEVICE1693": "rtRGoR+MuRTImNq2prU3c1ZikaYGjMKHDXK9QkM7hhY",
27132+ "ed25519:ALICEDEVICE1693": "8ZSB6NjQ7cVbNGZNtzxiMVuZOgQOqfvxMIMY/7C257o"
27133+ },
27134+ "signatures": {
27135+ "@alice_1693:hs1": {
27136+ "ed25519:ALICEDEVICE1693": "28M/73LszGKmmdnAho9ghDmFS0mHW2kWjwsdGfmFRtI8feHgoQrahjYZTIDCyzlT5o1tA3gqxYZa8/gXAMi8AQ"
27137+ }
27138+ },
27139+ "user_id": "@alice_1693:hs1",
27140+ "unsigned": {}
27141+ }
27142+ },
27143+ "@alice_1717:hs1": {
27144+ "ALICEDEVICE1717": {
27145+ "algorithms": [
27146+ "m.olm.v1.curve25519-aes-sha2",
27147+ "m.megolm.v1.aes-sha2"
27148+ ],
27149+ "device_id": "ALICEDEVICE1717",
27150+ "keys": {
27151+ "curve25519:ALICEDEVICE1717": "g9zY/Ibe9IjfmXsIaNQfHcMBlfrTjzo+sNPBWLiICUA",
27152+ "ed25519:ALICEDEVICE1717": "+J8UQYmWWQ74bL1BLiREeqtRlYJ0rqZKE1ibVOT0too"
27153+ },
27154+ "signatures": {
27155+ "@alice_1717:hs1": {
27156+ "ed25519:ALICEDEVICE1717": "XteCC+mvIFtTqfxiPky6m8kpImWRSwXE72S6UCqjgl0FS9dVvfPI9puzI5pBpX+jtueV2wVqMYyh30zkiqakDQ"
27157+ }
27158+ },
27159+ "user_id": "@alice_1717:hs1",
27160+ "unsigned": {}
27161+ }
27162+ },
27163+ "@alice_171:hs1": {
27164+ "ALICEDEVICE171": {
27165+ "algorithms": [
27166+ "m.olm.v1.curve25519-aes-sha2",
27167+ "m.megolm.v1.aes-sha2"
27168+ ],
27169+ "device_id": "ALICEDEVICE171",
27170+ "keys": {
27171+ "curve25519:ALICEDEVICE171": "9AKRqltA5b4CEqwfoE2Vk6/66kgSaINQCDxBAimDGRA",
27172+ "ed25519:ALICEDEVICE171": "/fXAkPp2GvzzqiERe6Aqst9//REN2Fa0NfINW2Opop0"
27173+ },
27174+ "signatures": {
27175+ "@alice_171:hs1": {
27176+ "ed25519:ALICEDEVICE171": "HXO0P1XirjWp2x0D0HkO/is3UYGyAtPiA3STp8h4tjLhNBdY9uCKdhY9eTGiT7qoCztX5ygg/Yc4AS2mNdG4CA"
27177+ }
27178+ },
27179+ "user_id": "@alice_171:hs1",
27180+ "unsigned": {}
27181+ }
27182+ },
27183+ "@alice_1724:hs1": {
27184+ "ALICEDEVICE1724": {
27185+ "algorithms": [
27186+ "m.olm.v1.curve25519-aes-sha2",
27187+ "m.megolm.v1.aes-sha2"
27188+ ],
27189+ "device_id": "ALICEDEVICE1724",
27190+ "keys": {
27191+ "curve25519:ALICEDEVICE1724": "zJACqqf6r8h1M8/HkSlJJeRtnt6LdArrHlSQ46iy5lQ",
27192+ "ed25519:ALICEDEVICE1724": "Io1lcn+3SfyNAYB+PPEL8qB96qlW0QfDPyqkI27KN5E"
27193+ },
27194+ "signatures": {
27195+ "@alice_1724:hs1": {
27196+ "ed25519:ALICEDEVICE1724": "EMyb+Sm/WpZDgyvXU7ZyvU0+/NEbWsMAMDFXKpVxtjt17OshnVKuW7DCuzpFYaO/iE3meMsi8LsJC8ISBMd1Dg"
27197+ }
27198+ },
27199+ "user_id": "@alice_1724:hs1",
27200+ "unsigned": {}
27201+ }
27202+ },
27203+ "@alice_1731:hs1": {
27204+ "ALICEDEVICE1731": {
27205+ "algorithms": [
27206+ "m.olm.v1.curve25519-aes-sha2",
27207+ "m.megolm.v1.aes-sha2"
27208+ ],
27209+ "device_id": "ALICEDEVICE1731",
27210+ "keys": {
27211+ "curve25519:ALICEDEVICE1731": "qwEwrTk3nAsFVfI/3qOyA8BMk+Vh2INpWSqEbtV4YR4",
27212+ "ed25519:ALICEDEVICE1731": "yxRwC/1VDRscBVMDgufyy02yc9WytiRxW3yf99EVDU0"
27213+ },
27214+ "signatures": {
27215+ "@alice_1731:hs1": {
27216+ "ed25519:ALICEDEVICE1731": "qpFCKRfAj7vk9Q5xhiv5pS/ljU2z9e8zJhHg9BG/6xT4Enh03OTke2cR4DqglkEj4IXhSq8nKvW8qgRMxOERDQ"
27217+ }
27218+ },
27219+ "user_id": "@alice_1731:hs1",
27220+ "unsigned": {}
27221+ }
27222+ },
27223+ "@alice_1736:hs1": {
27224+ "ALICEDEVICE1736": {
27225+ "algorithms": [
27226+ "m.olm.v1.curve25519-aes-sha2",
27227+ "m.megolm.v1.aes-sha2"
27228+ ],
27229+ "device_id": "ALICEDEVICE1736",
27230+ "keys": {
27231+ "curve25519:ALICEDEVICE1736": "otFcP4vUx7yX39rcVziy3dLug1iTTpjgIyT1EEFr1Bk",
27232+ "ed25519:ALICEDEVICE1736": "8Tc985Y9YwnVy4vC2dm8UP1L8xdocZIpqbhRt0vBaX8"
27233+ },
27234+ "signatures": {
27235+ "@alice_1736:hs1": {
27236+ "ed25519:ALICEDEVICE1736": "tLh9qg1TDe8BPsAeGhl+YerZC+tguO1NOXnUl6NQXbJ2WVMiTkExdGxAetn6+XKzPtZDayVHXfcvHkVwy+xHAA"
27237+ }
27238+ },
27239+ "user_id": "@alice_1736:hs1",
27240+ "unsigned": {}
27241+ }
27242+ },
27243+ "@alice_1738:hs1": {
27244+ "ALICEDEVICE1738": {
27245+ "algorithms": [
27246+ "m.olm.v1.curve25519-aes-sha2",
27247+ "m.megolm.v1.aes-sha2"
27248+ ],
27249+ "device_id": "ALICEDEVICE1738",
27250+ "keys": {
27251+ "curve25519:ALICEDEVICE1738": "fO/pVg7t33OjH9k1xxYNL/yYunOx097uIgtMiSEDSE4",
27252+ "ed25519:ALICEDEVICE1738": "IgJrMEg7DFWVqoWy/Mt0m+SP45qkGQiwS8bG09xsZfg"
27253+ },
27254+ "signatures": {
27255+ "@alice_1738:hs1": {
27256+ "ed25519:ALICEDEVICE1738": "lZZOCgaGVHWjnj4Q7dI3Hm9tCd8oEqTSvcTSu5P7yoCQzmvZgfQs7XB2Q60d25qJqWFgdRaCh/EUuOMmyTr3CA"
27257+ }
27258+ },
27259+ "user_id": "@alice_1738:hs1",
27260+ "unsigned": {}
27261+ }
27262+ },
27263+ "@alice_1747:hs1": {
27264+ "ALICEDEVICE1747": {
27265+ "algorithms": [
27266+ "m.olm.v1.curve25519-aes-sha2",
27267+ "m.megolm.v1.aes-sha2"
27268+ ],
27269+ "device_id": "ALICEDEVICE1747",
27270+ "keys": {
27271+ "curve25519:ALICEDEVICE1747": "pSoVB5xErNe8z0MbLVNqS9F4YPdSG5LvaBuwkfYZ20Q",
27272+ "ed25519:ALICEDEVICE1747": "5bgY5zguJ9cAjuLtzTdqc+XmW4rweHjYkbB3TmtpfPw"
27273+ },
27274+ "signatures": {
27275+ "@alice_1747:hs1": {
27276+ "ed25519:ALICEDEVICE1747": "yaW5Kzr3G3jF7Qcy2jidwY/7o1801JByuHB+ypeEnES/RMGCdIyYpR+1Vuin7oogETJy+NgF80Awr/Vw7WdQDw"
27277+ }
27278+ },
27279+ "user_id": "@alice_1747:hs1",
27280+ "unsigned": {}
27281+ }
27282+ },
27283+ "@alice_1750:hs1": {
27284+ "ALICEDEVICE1750": {
27285+ "algorithms": [
27286+ "m.olm.v1.curve25519-aes-sha2",
27287+ "m.megolm.v1.aes-sha2"
27288+ ],
27289+ "device_id": "ALICEDEVICE1750",
27290+ "keys": {
27291+ "curve25519:ALICEDEVICE1750": "CtmoT4PMveW1HpW0oLHwkf2uyXcQb1p2eflWUAZ0IiI",
27292+ "ed25519:ALICEDEVICE1750": "ADiwW5zzWgq2KN9gtlPuIvD4gSfoW+f7zAe8IqGnSPk"
27293+ },
27294+ "signatures": {
27295+ "@alice_1750:hs1": {
27296+ "ed25519:ALICEDEVICE1750": "opSX64D6+cTRxUmrVSwJzKRjqr46vBpaJz5tpeWN55eEkLgg870PJ0KFKByG7rsNhYN0vpf9R6iOj+SfFOvjAA"
27297+ }
27298+ },
27299+ "user_id": "@alice_1750:hs1",
27300+ "unsigned": {}
27301+ }
27302+ },
27303+ "@alice_1759:hs1": {
27304+ "ALICEDEVICE1759": {
27305+ "algorithms": [
27306+ "m.olm.v1.curve25519-aes-sha2",
27307+ "m.megolm.v1.aes-sha2"
27308+ ],
27309+ "device_id": "ALICEDEVICE1759",
27310+ "keys": {
27311+ "curve25519:ALICEDEVICE1759": "Q7Loi4GmpdDlPOwNbF+nyEn5vC6am4+xP22LMxQpuFY",
27312+ "ed25519:ALICEDEVICE1759": "RaPflBwl3dO7h6LXUvQKkkgzWawN9XVoYffKYiyKS4s"
27313+ },
27314+ "signatures": {
27315+ "@alice_1759:hs1": {
27316+ "ed25519:ALICEDEVICE1759": "Vdsv3TCCvNjNolSBtQ45xqgopH/w8oi7YB2L7gdf2/duMBA2sUpw7IUu/oQuFWxBIyUZst29DrOjA7Z2jqy2DQ"
27317+ }
27318+ },
27319+ "user_id": "@alice_1759:hs1",
27320+ "unsigned": {}
27321+ }
27322+ },
27323+ "@alice_1769:hs1": {
27324+ "ALICEDEVICE1769": {
27325+ "algorithms": [
27326+ "m.olm.v1.curve25519-aes-sha2",
27327+ "m.megolm.v1.aes-sha2"
27328+ ],
27329+ "device_id": "ALICEDEVICE1769",
27330+ "keys": {
27331+ "curve25519:ALICEDEVICE1769": "ydTYVsiuQH6MeB0UEH/OhRDjv/ASWrflG2o8IiM/Bz4",
27332+ "ed25519:ALICEDEVICE1769": "oYr7fnD/NkzrbIyaCoFTpHXJlxwXLIPvw36G/Ci3pRQ"
27333+ },
27334+ "signatures": {
27335+ "@alice_1769:hs1": {
27336+ "ed25519:ALICEDEVICE1769": "YTUdZ6RwTY3bXRdpdcP14I3lIjSiWk0QvQLdBmeHFtS1p98f1IdUE5nvT5XNX+DgsmDCPzu0b2qGreC9zBAbBQ"
27337+ }
27338+ },
27339+ "user_id": "@alice_1769:hs1",
27340+ "unsigned": {}
27341+ }
27342+ },
27343+ "@alice_1780:hs1": {
27344+ "ALICEDEVICE1780": {
27345+ "algorithms": [
27346+ "m.olm.v1.curve25519-aes-sha2",
27347+ "m.megolm.v1.aes-sha2"
27348+ ],
27349+ "device_id": "ALICEDEVICE1780",
27350+ "keys": {
27351+ "curve25519:ALICEDEVICE1780": "242Pi0aRAN4esZr6PV//zT1pR2UgH6W6w3v1Fcu0xk8",
27352+ "ed25519:ALICEDEVICE1780": "aiwsrStIHieohgOpou/O/MiDSa3PFg3yimy0+nn0zHk"
27353+ },
27354+ "signatures": {
27355+ "@alice_1780:hs1": {
27356+ "ed25519:ALICEDEVICE1780": "wfFgr4c5X5KK35jNhi95IFf5nmBLbJEMGKWWFFKhc0UrkpsnHh4/fIry9xyn+JF8r1hC6CV7wCmPOXWojtjMDA"
27357+ }
27358+ },
27359+ "user_id": "@alice_1780:hs1",
27360+ "unsigned": {}
27361+ }
27362+ },
27363+ "@alice_1785:hs1": {
27364+ "ALICEDEVICE1785": {
27365+ "algorithms": [
27366+ "m.olm.v1.curve25519-aes-sha2",
27367+ "m.megolm.v1.aes-sha2"
27368+ ],
27369+ "device_id": "ALICEDEVICE1785",
27370+ "keys": {
27371+ "curve25519:ALICEDEVICE1785": "BFOk3FcTuDp1JQ5PLCwPGyEBT0ChywxhaIHvhGzDlEw",
27372+ "ed25519:ALICEDEVICE1785": "m/DddxZJ7snRm8uUmO0dMDT7pC3fAkti5ZoY472mBWM"
27373+ },
27374+ "signatures": {
27375+ "@alice_1785:hs1": {
27376+ "ed25519:ALICEDEVICE1785": "SeznMsWzxq2rnNjUp1TqzSZNPs3WW9plPNdSVkt8rv9X9Qo/ytbn3Ep3VJeOjkNzjpMv2KFlDSOFTbKT8/5DAQ"
27377+ }
27378+ },
27379+ "user_id": "@alice_1785:hs1",
27380+ "unsigned": {}
27381+ }
27382+ },
27383+ "@alice_1787:hs1": {
27384+ "ALICEDEVICE1787": {
27385+ "algorithms": [
27386+ "m.olm.v1.curve25519-aes-sha2",
27387+ "m.megolm.v1.aes-sha2"
27388+ ],
27389+ "device_id": "ALICEDEVICE1787",
27390+ "keys": {
27391+ "curve25519:ALICEDEVICE1787": "hpgqkO9ODGgxSMQoHnSEumoOw/O4g1LoQNX5VPGUbxk",
27392+ "ed25519:ALICEDEVICE1787": "K2C2Bzhcrkf5pgxLmrjPGznMHVbOlPMtDyqhpjdwAfw"
27393+ },
27394+ "signatures": {
27395+ "@alice_1787:hs1": {
27396+ "ed25519:ALICEDEVICE1787": "fm/dFHI7ZEcY8Lz242oANdWDdwgetprLqDrY69bk3SXqfAIJLnUv7JcYcHSWdG5XhWrKLa+XJszT9xynvsu9AQ"
27397+ }
27398+ },
27399+ "user_id": "@alice_1787:hs1",
27400+ "unsigned": {}
27401+ }
27402+ },
27403+ "@alice_1788:hs1": {
27404+ "ALICEDEVICE1788": {
27405+ "algorithms": [
27406+ "m.olm.v1.curve25519-aes-sha2",
27407+ "m.megolm.v1.aes-sha2"
27408+ ],
27409+ "device_id": "ALICEDEVICE1788",
27410+ "keys": {
27411+ "curve25519:ALICEDEVICE1788": "RhNDrzpqVALYriOh/APNc06nY5V7+NwJU5GFszq2xSA",
27412+ "ed25519:ALICEDEVICE1788": "3XIdXoSaUIci9oHOaUbLPjWuouDVZKILQkHPEsJ6UHQ"
27413+ },
27414+ "signatures": {
27415+ "@alice_1788:hs1": {
27416+ "ed25519:ALICEDEVICE1788": "bMCI+B3OGpNHB9uFco1UX2W6v9c5IHeMOEOmuwqtKE3pKQ5KF85SDmLbE/Qfi+RMNQ9aK6xrsWQUB+3KKMdZAw"
27417+ }
27418+ },
27419+ "user_id": "@alice_1788:hs1",
27420+ "unsigned": {}
27421+ }
27422+ },
27423+ "@alice_1798:hs1": {
27424+ "ALICEDEVICE1798": {
27425+ "algorithms": [
27426+ "m.olm.v1.curve25519-aes-sha2",
27427+ "m.megolm.v1.aes-sha2"
27428+ ],
27429+ "device_id": "ALICEDEVICE1798",
27430+ "keys": {
27431+ "curve25519:ALICEDEVICE1798": "ob0hFuf2gKuigIYXcad+v30bMq/1JfetmdJ6Uadm0jc",
27432+ "ed25519:ALICEDEVICE1798": "k0u05xmkrW8Lyo0XODLBY0jETHptuXKfgNcUU2LVoUU"
27433+ },
27434+ "signatures": {
27435+ "@alice_1798:hs1": {
27436+ "ed25519:ALICEDEVICE1798": "ZGCBThga067eYihqn4Xb2aXrPhYOorCinx+FxisUb+/RFh+xOfcS7TpkmvUjwDjLeKs/lReYjCEN+eIHrT5qCg"
27437+ }
27438+ },
27439+ "user_id": "@alice_1798:hs1",
27440+ "unsigned": {}
27441+ }
27442+ },
27443+ "@alice_179:hs1": {
27444+ "ALICEDEVICE179": {
27445+ "algorithms": [
27446+ "m.olm.v1.curve25519-aes-sha2",
27447+ "m.megolm.v1.aes-sha2"
27448+ ],
27449+ "device_id": "ALICEDEVICE179",
27450+ "keys": {
27451+ "curve25519:ALICEDEVICE179": "e2Jq9UL/NT5LEJMz3AbRBRGDBCFb0DYGTXRdnfZl+hU",
27452+ "ed25519:ALICEDEVICE179": "MsRAE3NEY0fONxhtDdMeka2EeAa24Vsb8x12be++SXM"
27453+ },
27454+ "signatures": {
27455+ "@alice_179:hs1": {
27456+ "ed25519:ALICEDEVICE179": "llN5e70tdIg64xM41Kifm18Y+zZunN3MU1DuB8AJ6p+9ntbaCOxaGUuhg11qiXA3eh/7z5YZdDh5+CvqB71SAw"
27457+ }
27458+ },
27459+ "user_id": "@alice_179:hs1",
27460+ "unsigned": {}
27461+ }
27462+ },
27463+ "@alice_1809:hs1": {
27464+ "ALICEDEVICE1809": {
27465+ "algorithms": [
27466+ "m.olm.v1.curve25519-aes-sha2",
27467+ "m.megolm.v1.aes-sha2"
27468+ ],
27469+ "device_id": "ALICEDEVICE1809",
27470+ "keys": {
27471+ "curve25519:ALICEDEVICE1809": "ipNbIs44DwIwTxhJiVXIzVPd+tN94Pw0Njcbgt6lsj4",
27472+ "ed25519:ALICEDEVICE1809": "WIUZQb1UUqkzwHmRa95I7LF45cs20E4VaEVKEYxiXt4"
27473+ },
27474+ "signatures": {
27475+ "@alice_1809:hs1": {
27476+ "ed25519:ALICEDEVICE1809": "Cjg+J+QMAeSLwVZFm2d6btUlJQ7XfIeG4FT6Wga9A2UQn+xtiTP9epOpGjwnkcIT/Md8+XuL7fTUeUnNke9eBw"
27477+ }
27478+ },
27479+ "user_id": "@alice_1809:hs1",
27480+ "unsigned": {}
27481+ }
27482+ },
27483+ "@alice_1817:hs1": {
27484+ "ALICEDEVICE1817": {
27485+ "algorithms": [
27486+ "m.olm.v1.curve25519-aes-sha2",
27487+ "m.megolm.v1.aes-sha2"
27488+ ],
27489+ "device_id": "ALICEDEVICE1817",
27490+ "keys": {
27491+ "curve25519:ALICEDEVICE1817": "7tjUEyehgX4hmgHa6mWoEJKNFx5VLdxM0HYyB3qkeGg",
27492+ "ed25519:ALICEDEVICE1817": "FaXcn0vHnAcutEXJjmUeZmrka/WCvxx3tZkVCm0q/jE"
27493+ },
27494+ "signatures": {
27495+ "@alice_1817:hs1": {
27496+ "ed25519:ALICEDEVICE1817": "TdWwJd1SlReL0iwacGiVNzjOcoKDmfHCVjox2rP0M5tSyPrqqBtpDjf8evQsk3U3UBBd4gGOzex2QrCmeaH5CQ"
27497+ }
27498+ },
27499+ "user_id": "@alice_1817:hs1",
27500+ "unsigned": {}
27501+ }
27502+ },
27503+ "@alice_1818:hs1": {
27504+ "ALICEDEVICE1818": {
27505+ "algorithms": [
27506+ "m.olm.v1.curve25519-aes-sha2",
27507+ "m.megolm.v1.aes-sha2"
27508+ ],
27509+ "device_id": "ALICEDEVICE1818",
27510+ "keys": {
27511+ "curve25519:ALICEDEVICE1818": "QLNTcrIl32Ejlj/L7CqgJufQMmV/oX2zftEiGVhBPBs",
27512+ "ed25519:ALICEDEVICE1818": "pntP5bpUgi7etMltdf3qQ1LxgEDqNVGWS5q1E49GjBw"
27513+ },
27514+ "signatures": {
27515+ "@alice_1818:hs1": {
27516+ "ed25519:ALICEDEVICE1818": "uHU29GAsk4X0jVE6XicgKj3k9mRMt/euSd1larhqAfJ7UYrD3Bf36Zhi02hrVgvZw2aPCbqQIQ2HrshXS+wkDQ"
27517+ }
27518+ },
27519+ "user_id": "@alice_1818:hs1",
27520+ "unsigned": {}
27521+ }
27522+ },
27523+ "@alice_1842:hs1": {
27524+ "ALICEDEVICE1842": {
27525+ "algorithms": [
27526+ "m.olm.v1.curve25519-aes-sha2",
27527+ "m.megolm.v1.aes-sha2"
27528+ ],
27529+ "device_id": "ALICEDEVICE1842",
27530+ "keys": {
27531+ "curve25519:ALICEDEVICE1842": "SwK85crLM1AzOcppvodcX/hefrh2EduQCMbG2I1eWC0",
27532+ "ed25519:ALICEDEVICE1842": "QydGH10GEm0tRMLZgjNkTib/LNWrfkiHkT8dNdxWNfU"
27533+ },
27534+ "signatures": {
27535+ "@alice_1842:hs1": {
27536+ "ed25519:ALICEDEVICE1842": "oR4HdQwZEb1vsrP3j+nHM26OiXv57XhKhYGuDOeAT8x1eG+1xj1PdVPeg0B4OLT1qkAw5FZvhy071t7uTnGLBg"
27537+ }
27538+ },
27539+ "user_id": "@alice_1842:hs1",
27540+ "unsigned": {}
27541+ }
27542+ },
27543+ "@alice_1853:hs1": {
27544+ "ALICEDEVICE1853": {
27545+ "algorithms": [
27546+ "m.olm.v1.curve25519-aes-sha2",
27547+ "m.megolm.v1.aes-sha2"
27548+ ],
27549+ "device_id": "ALICEDEVICE1853",
27550+ "keys": {
27551+ "curve25519:ALICEDEVICE1853": "sFCL7/FqpCPStBP9oRxVxLcEkjMvF79TMUWcj/fvOmY",
27552+ "ed25519:ALICEDEVICE1853": "4kEw9RC1L1eyeepKMTWI+GmCl4meX3S6UAeQfc2x5tg"
27553+ },
27554+ "signatures": {
27555+ "@alice_1853:hs1": {
27556+ "ed25519:ALICEDEVICE1853": "ORDZC9A8HWMQlIfYkWKwnbNU9l1z1PK44RNJMD4NImIEnwEoH7Q6+G24+JD9upS++N+xgMDM6xNKdBcVF5U2Bw"
27557+ }
27558+ },
27559+ "user_id": "@alice_1853:hs1",
27560+ "unsigned": {}
27561+ }
27562+ },
27563+ "@alice_185:hs1": {
27564+ "ALICEDEVICE185": {
27565+ "algorithms": [
27566+ "m.olm.v1.curve25519-aes-sha2",
27567+ "m.megolm.v1.aes-sha2"
27568+ ],
27569+ "device_id": "ALICEDEVICE185",
27570+ "keys": {
27571+ "curve25519:ALICEDEVICE185": "+g/q0YESOSRV2+hqmxwInf6ZWHyF2rGnqK2+zfzTggc",
27572+ "ed25519:ALICEDEVICE185": "9vSfbCe+vSDRXxISrIe0jvdcY/JdlT8oG9Kq7k/ea6s"
27573+ },
27574+ "signatures": {
27575+ "@alice_185:hs1": {
27576+ "ed25519:ALICEDEVICE185": "LnGoovxy7+RxP8K9AokdHZAkzgLbIIvpHeEoy4UQf5goGaoRbC1vW5Vc1fh6f51NQH+xfxqEROHd+flMaQQqDQ"
27577+ }
27578+ },
27579+ "user_id": "@alice_185:hs1",
27580+ "unsigned": {}
27581+ }
27582+ },
27583+ "@alice_1872:hs1": {
27584+ "ALICEDEVICE1872": {
27585+ "algorithms": [
27586+ "m.olm.v1.curve25519-aes-sha2",
27587+ "m.megolm.v1.aes-sha2"
27588+ ],
27589+ "device_id": "ALICEDEVICE1872",
27590+ "keys": {
27591+ "curve25519:ALICEDEVICE1872": "itpXVbTr2iXyy8+PChAENpxxLJy63aBda96HnZCi1F4",
27592+ "ed25519:ALICEDEVICE1872": "T6WQNGhI49vo90PiUrAec0RddIka0e27pq8BI4MIsRY"
27593+ },
27594+ "signatures": {
27595+ "@alice_1872:hs1": {
27596+ "ed25519:ALICEDEVICE1872": "sVn6eM3LHy2fi1+2u/VcnnO0ObvfXOaDfIIboRdNoUGB4lLdEmYi0EAKIFqF+04W6uVjcqthmT+7+Jl/8UVVDw"
27597+ }
27598+ },
27599+ "user_id": "@alice_1872:hs1",
27600+ "unsigned": {}
27601+ }
27602+ },
27603+ "@alice_1893:hs1": {
27604+ "ALICEDEVICE1893": {
27605+ "algorithms": [
27606+ "m.olm.v1.curve25519-aes-sha2",
27607+ "m.megolm.v1.aes-sha2"
27608+ ],
27609+ "device_id": "ALICEDEVICE1893",
27610+ "keys": {
27611+ "curve25519:ALICEDEVICE1893": "PfRLhyXIy6VBO79hvzW4oJ5hRK10XR1AK7YEaEIR5ww",
27612+ "ed25519:ALICEDEVICE1893": "iQ+IK5kPCMaU6336HyysNI/uHhrR9v/VFLBTN3TP6F8"
27613+ },
27614+ "signatures": {
27615+ "@alice_1893:hs1": {
27616+ "ed25519:ALICEDEVICE1893": "2jMyIGuFYFPSbmMMcESpOFk8ybhKvhvcDp7EF0+mYxyClnJwcLk72fqOr5yiwOWwcSL7v+cXyK/dgI+jJmRsDA"
27617+ }
27618+ },
27619+ "user_id": "@alice_1893:hs1",
27620+ "unsigned": {}
27621+ }
27622+ },
27623+ "@alice_1902:hs1": {
27624+ "ALICEDEVICE1902": {
27625+ "algorithms": [
27626+ "m.olm.v1.curve25519-aes-sha2",
27627+ "m.megolm.v1.aes-sha2"
27628+ ],
27629+ "device_id": "ALICEDEVICE1902",
27630+ "keys": {
27631+ "curve25519:ALICEDEVICE1902": "uL/nkqDGs8tbPoiE7MVoH2s9y5bx3i9GzvEtNGAh1lo",
27632+ "ed25519:ALICEDEVICE1902": "mFpxk87zIm1D27cIyWuUjfu97XlpaOCmQu3Znndlz8Q"
27633+ },
27634+ "signatures": {
27635+ "@alice_1902:hs1": {
27636+ "ed25519:ALICEDEVICE1902": "eoQ5hlEqHHBWHTRGJLczUBx+laNl0K47hhtt9k6xf6gCyQ5U47peTHJvqGx8rOBaEy3kuKGGOXNDIqqxu9QtDQ"
27637+ }
27638+ },
27639+ "user_id": "@alice_1902:hs1",
27640+ "unsigned": {}
27641+ }
27642+ },
27643+ "@alice_1903:hs1": {
27644+ "ALICEDEVICE1903": {
27645+ "algorithms": [
27646+ "m.olm.v1.curve25519-aes-sha2",
27647+ "m.megolm.v1.aes-sha2"
27648+ ],
27649+ "device_id": "ALICEDEVICE1903",
27650+ "keys": {
27651+ "curve25519:ALICEDEVICE1903": "AMqoCj+Ta3fZTUtRhP39VRsOxFkYy7AyV7PL/OofR2w",
27652+ "ed25519:ALICEDEVICE1903": "McxKE6dHFbM5Y1VhXlFqQnjZsLEgvlBi0OOcawOta64"
27653+ },
27654+ "signatures": {
27655+ "@alice_1903:hs1": {
27656+ "ed25519:ALICEDEVICE1903": "kDvd8CAVEcz8zM8ix54/HTxXELpfltOsP019bMTDKR6kYUNKb1SEQ2q5IGWBH/dp4+8OggPuFbCKbrYeJ55zAQ"
27657+ }
27658+ },
27659+ "user_id": "@alice_1903:hs1",
27660+ "unsigned": {}
27661+ }
27662+ },
27663+ "@alice_1911:hs1": {
27664+ "ALICEDEVICE1911": {
27665+ "algorithms": [
27666+ "m.olm.v1.curve25519-aes-sha2",
27667+ "m.megolm.v1.aes-sha2"
27668+ ],
27669+ "device_id": "ALICEDEVICE1911",
27670+ "keys": {
27671+ "curve25519:ALICEDEVICE1911": "xq09jLssBLh4fSfj4qF7O+tHqCvwQSc13FCXPHYi728",
27672+ "ed25519:ALICEDEVICE1911": "eGauqXQgkIote3tbqJ4isa1gpmR6aQmsTHtaJEIvC1I"
27673+ },
27674+ "signatures": {
27675+ "@alice_1911:hs1": {
27676+ "ed25519:ALICEDEVICE1911": "mFzZ0oK8P6WdZ0aBylM8hMmM7FQ9nSkrfmRZA0yDJQTmPAles4zbBeNaKXJ+M8oJ/9xXl03k3IoPVi0577VeAQ"
27677+ }
27678+ },
27679+ "user_id": "@alice_1911:hs1",
27680+ "unsigned": {}
27681+ }
27682+ },
27683+ "@alice_1920:hs1": {
27684+ "ALICEDEVICE1920": {
27685+ "algorithms": [
27686+ "m.olm.v1.curve25519-aes-sha2",
27687+ "m.megolm.v1.aes-sha2"
27688+ ],
27689+ "device_id": "ALICEDEVICE1920",
27690+ "keys": {
27691+ "curve25519:ALICEDEVICE1920": "v0nbfUlhQtjzbmZCqCHVPiw8mqNtKWLYLlaatImxgFc",
27692+ "ed25519:ALICEDEVICE1920": "kltLEU3EGv5Ey6TQVtcEcTW4BQ/XYW5oQiHtAVY6Y3U"
27693+ },
27694+ "signatures": {
27695+ "@alice_1920:hs1": {
27696+ "ed25519:ALICEDEVICE1920": "UTYMs2upamiz9PRh/4xy80wX4kQlV8MSHzVoRt3MJtuRw089+Ydbl9exoPCIgYSizijzo0T3uw36U2KRqvlZCA"
27697+ }
27698+ },
27699+ "user_id": "@alice_1920:hs1",
27700+ "unsigned": {}
27701+ }
27702+ },
27703+ "@alice_1929:hs1": {
27704+ "ALICEDEVICE1929": {
27705+ "algorithms": [
27706+ "m.olm.v1.curve25519-aes-sha2",
27707+ "m.megolm.v1.aes-sha2"
27708+ ],
27709+ "device_id": "ALICEDEVICE1929",
27710+ "keys": {
27711+ "curve25519:ALICEDEVICE1929": "e+2rxs4hcYpDMp1RacesPqZ1tbL5Pz5gfL/tjrMc3j0",
27712+ "ed25519:ALICEDEVICE1929": "ULVstXBzDUeostZIC26d+3cTjwDn5M0fp5lbE+exFh0"
27713+ },
27714+ "signatures": {
27715+ "@alice_1929:hs1": {
27716+ "ed25519:ALICEDEVICE1929": "citlJgJUXA+mEAbVTohvIuE7EFLY2j4nf57l5S8bEs7PsaLN+s30SkmHS+WdYbdsSbslyAHblMOMYUlAMrCNDA"
27717+ }
27718+ },
27719+ "user_id": "@alice_1929:hs1",
27720+ "unsigned": {}
27721+ }
27722+ },
27723+ "@alice_1930:hs1": {
27724+ "ALICEDEVICE1930": {
27725+ "algorithms": [
27726+ "m.olm.v1.curve25519-aes-sha2",
27727+ "m.megolm.v1.aes-sha2"
27728+ ],
27729+ "device_id": "ALICEDEVICE1930",
27730+ "keys": {
27731+ "curve25519:ALICEDEVICE1930": "xehd7Xuzu2dS62ax4DtEQj3ayYICXG+M6jx7HbmEmkA",
27732+ "ed25519:ALICEDEVICE1930": "gDhdBdKY4d6JVqI7wNcED+RVaQW4VlZDgDB3jPFsMXk"
27733+ },
27734+ "signatures": {
27735+ "@alice_1930:hs1": {
27736+ "ed25519:ALICEDEVICE1930": "DqNxyOITbpfg1WTOp+DV6R3acSEFR7iToAHtxSOI6Gn3MlFODVCqDeMmVWMgIuEgBtKt5tMuUP1zzuyEdNACDQ"
27737+ }
27738+ },
27739+ "user_id": "@alice_1930:hs1",
27740+ "unsigned": {}
27741+ }
27742+ },
27743+ "@alice_1940:hs1": {
27744+ "ALICEDEVICE1940": {
27745+ "algorithms": [
27746+ "m.olm.v1.curve25519-aes-sha2",
27747+ "m.megolm.v1.aes-sha2"
27748+ ],
27749+ "device_id": "ALICEDEVICE1940",
27750+ "keys": {
27751+ "curve25519:ALICEDEVICE1940": "LeShwAJrQmkvDF4+R237EF9e5C2Li/QXFBAAFtQpTBg",
27752+ "ed25519:ALICEDEVICE1940": "bEKmGHdU5jGMVFUjAX5hCpy2Jlt8Cml5C5Ge9G0MH0c"
27753+ },
27754+ "signatures": {
27755+ "@alice_1940:hs1": {
27756+ "ed25519:ALICEDEVICE1940": "lYx+Gymz4PTOCV+8nrhVu5IdbF9NnwmB9g5trcYUeDRKgFQAVQWFhms54C+qjHkQCUfDiwJV3fFfKbjuXhpJDA"
27757+ }
27758+ },
27759+ "user_id": "@alice_1940:hs1",
27760+ "unsigned": {}
27761+ }
27762+ },
27763+ "@alice_194:hs1": {
27764+ "ALICEDEVICE194": {
27765+ "algorithms": [
27766+ "m.olm.v1.curve25519-aes-sha2",
27767+ "m.megolm.v1.aes-sha2"
27768+ ],
27769+ "device_id": "ALICEDEVICE194",
27770+ "keys": {
27771+ "curve25519:ALICEDEVICE194": "629fTSDy1Ejpni8NnzlS+IE6HD3jP7jZiJJhVU6bMSU",
27772+ "ed25519:ALICEDEVICE194": "JR882IZCc7/SktZ+2gi5MxaYgtBurfZ9AhzxTzcKpN4"
27773+ },
27774+ "signatures": {
27775+ "@alice_194:hs1": {
27776+ "ed25519:ALICEDEVICE194": "Ulh+20eJFPUw9dCJUy2X9mM1IqZQeKt9nLKfZp2vNIcKZP69RErq1gYapKLP1vuETaYhIjuv9OiO/TAG6mrPAQ"
27777+ }
27778+ },
27779+ "user_id": "@alice_194:hs1",
27780+ "unsigned": {}
27781+ }
27782+ },
27783+ "@alice_1956:hs1": {
27784+ "ALICEDEVICE1956": {
27785+ "algorithms": [
27786+ "m.olm.v1.curve25519-aes-sha2",
27787+ "m.megolm.v1.aes-sha2"
27788+ ],
27789+ "device_id": "ALICEDEVICE1956",
27790+ "keys": {
27791+ "curve25519:ALICEDEVICE1956": "SCuUYuQKRN8PPKs1sk6uUcfr3fQw+RJKGNXfj/7P+g0",
27792+ "ed25519:ALICEDEVICE1956": "KKvq65ilUd8qEcXiKKUwwNyXzpNjP4WObM10ElOanxE"
27793+ },
27794+ "signatures": {
27795+ "@alice_1956:hs1": {
27796+ "ed25519:ALICEDEVICE1956": "qz1el9ZbENZoiDLMxphRwftBJ1nX6WCxEIuczsZ3njvbyTwzVxL/w6txZD75e/mOjitYxrXb+2y+iknHVqFlCw"
27797+ }
27798+ },
27799+ "user_id": "@alice_1956:hs1",
27800+ "unsigned": {}
27801+ }
27802+ },
27803+ "@alice_1969:hs1": {
27804+ "ALICEDEVICE1969": {
27805+ "algorithms": [
27806+ "m.olm.v1.curve25519-aes-sha2",
27807+ "m.megolm.v1.aes-sha2"
27808+ ],
27809+ "device_id": "ALICEDEVICE1969",
27810+ "keys": {
27811+ "curve25519:ALICEDEVICE1969": "w1ckQEJyeyCwFL9o3c3Ul7oPfkxvym38WidGsfkL/Fs",
27812+ "ed25519:ALICEDEVICE1969": "PpkvHTZLNPopQeSkWbtSEaVDxV/Vh9pvnNwx47rH360"
27813+ },
27814+ "signatures": {
27815+ "@alice_1969:hs1": {
27816+ "ed25519:ALICEDEVICE1969": "LgbYbot8k83qftqnRx+s/iqREw14sAD1UJKVNLmwiS7yQawi7E1XOqoTVIo4uUks824E/sKLq2kwSXWlNt3XBg"
27817+ }
27818+ },
27819+ "user_id": "@alice_1969:hs1",
27820+ "unsigned": {}
27821+ }
27822+ },
27823+ "@alice_1987:hs1": {
27824+ "ALICEDEVICE1987": {
27825+ "algorithms": [
27826+ "m.olm.v1.curve25519-aes-sha2",
27827+ "m.megolm.v1.aes-sha2"
27828+ ],
27829+ "device_id": "ALICEDEVICE1987",
27830+ "keys": {
27831+ "curve25519:ALICEDEVICE1987": "xJAyzhUAbTJQPHEBjgsoX0sJM7KMUAxPE76155BuP0Q",
27832+ "ed25519:ALICEDEVICE1987": "XNFySAntl1dcCnKcY8NkXPyt9MD7YRAexTqYoq4inYo"
27833+ },
27834+ "signatures": {
27835+ "@alice_1987:hs1": {
27836+ "ed25519:ALICEDEVICE1987": "Sniy0RxnL23Vg6YSzvYhb1zA3RipxM7Kj7sEEyO9UVcM5ZX2Hw5N3o/aXNViN/h/7ce/kD9gAaSvWbKbRokJCg"
27837+ }
27838+ },
27839+ "user_id": "@alice_1987:hs1",
27840+ "unsigned": {}
27841+ }
27842+ },
27843+ "@alice_1990:hs1": {
27844+ "ALICEDEVICE1990": {
27845+ "algorithms": [
27846+ "m.olm.v1.curve25519-aes-sha2",
27847+ "m.megolm.v1.aes-sha2"
27848+ ],
27849+ "device_id": "ALICEDEVICE1990",
27850+ "keys": {
27851+ "curve25519:ALICEDEVICE1990": "lUtUhzbXC9rXpDVI5sdCGVysWXsRkX/LdEj+mKlijy0",
27852+ "ed25519:ALICEDEVICE1990": "ZH9zAffAn5znRKLcFNx8nASWVpgVWL06yD832EkH9f8"
27853+ },
27854+ "signatures": {
27855+ "@alice_1990:hs1": {
27856+ "ed25519:ALICEDEVICE1990": "i3UPR29r6oI4rNlrhFu9a8eJU6oGnmleVekjs+rNA/lrB65qW8kWyTZHwqi35IJUmsTdZw+9URr0POKs+N4EDw"
27857+ }
27858+ },
27859+ "user_id": "@alice_1990:hs1",
27860+ "unsigned": {}
27861+ }
27862+ },
27863+ "@alice_1992:hs1": {
27864+ "ALICEDEVICE1992": {
27865+ "algorithms": [
27866+ "m.olm.v1.curve25519-aes-sha2",
27867+ "m.megolm.v1.aes-sha2"
27868+ ],
27869+ "device_id": "ALICEDEVICE1992",
27870+ "keys": {
27871+ "curve25519:ALICEDEVICE1992": "InzlOIm4Nql6WAaDLbjhtS9dn8oB6d2wQo5xKQo9SzM",
27872+ "ed25519:ALICEDEVICE1992": "+mDIKz0Nn2O9usGNT0JD8tBycZeFCpLUyk1KF4aGLRM"
27873+ },
27874+ "signatures": {
27875+ "@alice_1992:hs1": {
27876+ "ed25519:ALICEDEVICE1992": "Eqn2DBfNe+Vj1ULktFZ4CctnVXZC85tvBap7UHmQfKechVyYPe6igGiQMxZL6ZiL1gx1f3xewZeU+DjK8zU3Cw"
27877+ }
27878+ },
27879+ "user_id": "@alice_1992:hs1",
27880+ "unsigned": {}
27881+ }
27882+ },
27883+ "@alice_206:hs1": {
27884+ "ALICEDEVICE206": {
27885+ "algorithms": [
27886+ "m.olm.v1.curve25519-aes-sha2",
27887+ "m.megolm.v1.aes-sha2"
27888+ ],
27889+ "device_id": "ALICEDEVICE206",
27890+ "keys": {
27891+ "curve25519:ALICEDEVICE206": "fzUZsQ2j+HbA3PBR717yn6RKtnG4dv/tOuYh7T9h+SY",
27892+ "ed25519:ALICEDEVICE206": "y0P8nx9SEEyrdyTisKL+KIXYC8AkZeY1zZrzKeiWUEY"
27893+ },
27894+ "signatures": {
27895+ "@alice_206:hs1": {
27896+ "ed25519:ALICEDEVICE206": "NZR4lZCLf4lYYbOMAKK+LpXFBRjfhybOMH6fAZUG7Xx3qRWcsoatNV16ZQG07rpqAuMgKUdcwxgonYvM0P7JDw"
27897+ }
27898+ },
27899+ "user_id": "@alice_206:hs1",
27900+ "unsigned": {}
27901+ }
27902+ },
27903+ "@alice_229:hs1": {
27904+ "ALICEDEVICE229": {
27905+ "algorithms": [
27906+ "m.olm.v1.curve25519-aes-sha2",
27907+ "m.megolm.v1.aes-sha2"
27908+ ],
27909+ "device_id": "ALICEDEVICE229",
27910+ "keys": {
27911+ "curve25519:ALICEDEVICE229": "Cff4usOxB+GHbRQBOhVJC835SDZ4m/ieeLVfg7vm9mM",
27912+ "ed25519:ALICEDEVICE229": "UGwbZrHD7oglJhY5+yfJD137JfuUIjp4/p/D+8HUOQk"
27913+ },
27914+ "signatures": {
27915+ "@alice_229:hs1": {
27916+ "ed25519:ALICEDEVICE229": "blmXEv8aLBl/H41pptq+piElKpNDaTfyUaYQNvTEmAp2Dt2jEbHfKtNv/UmhHX9PsEYeZPLFRxjxLn9CvLFcCA"
27917+ }
27918+ },
27919+ "user_id": "@alice_229:hs1",
27920+ "unsigned": {}
27921+ }
27922+ },
27923+ "@alice_240:hs1": {
27924+ "ALICEDEVICE240": {
27925+ "algorithms": [
27926+ "m.olm.v1.curve25519-aes-sha2",
27927+ "m.megolm.v1.aes-sha2"
27928+ ],
27929+ "device_id": "ALICEDEVICE240",
27930+ "keys": {
27931+ "curve25519:ALICEDEVICE240": "VLQGTbkUin/DrT3t8o9inZ25NbfuP5QHYbKcy0MN5Fo",
27932+ "ed25519:ALICEDEVICE240": "0pZt4Jhe5BazQsM854yempTafhibl8SIazC9OQ3n2Co"
27933+ },
27934+ "signatures": {
27935+ "@alice_240:hs1": {
27936+ "ed25519:ALICEDEVICE240": "2zV93B5X2lKhoVQj6pd5P+i2pQBziSVI/XMn/jUcQJUIKT5ZnKOvNEkYbQ5KGnP/RqUbjwvW18y+/h/0YjpHDg"
27937+ }
27938+ },
27939+ "user_id": "@alice_240:hs1",
27940+ "unsigned": {}
27941+ }
27942+ },
27943+ "@alice_256:hs1": {
27944+ "ALICEDEVICE256": {
27945+ "algorithms": [
27946+ "m.olm.v1.curve25519-aes-sha2",
27947+ "m.megolm.v1.aes-sha2"
27948+ ],
27949+ "device_id": "ALICEDEVICE256",
27950+ "keys": {
27951+ "curve25519:ALICEDEVICE256": "RxW+ktQ01VlykBMTwhg0QvP8ewORIX5AaGKpqsX/sn4",
27952+ "ed25519:ALICEDEVICE256": "VWEdTdO8efLum0KzS4ss8gZNTEnnVk1kjnHxNYq9ZqU"
27953+ },
27954+ "signatures": {
27955+ "@alice_256:hs1": {
27956+ "ed25519:ALICEDEVICE256": "5rrjPo6KCOpAUQ5Pn3L4cqevkh+rGSfflxel0Q+IWFnCyUIILLvEPBZ8bv5p+aOwb7+QMN17jWEe5bMRzPX/Aw"
27957+ }
27958+ },
27959+ "user_id": "@alice_256:hs1",
27960+ "unsigned": {}
27961+ }
27962+ },
27963+ "@alice_26:hs1": {
27964+ "ALICEDEVICE26": {
27965+ "algorithms": [
27966+ "m.olm.v1.curve25519-aes-sha2",
27967+ "m.megolm.v1.aes-sha2"
27968+ ],
27969+ "device_id": "ALICEDEVICE26",
27970+ "keys": {
27971+ "curve25519:ALICEDEVICE26": "HoGyXqUnEsfEleFYVIbZEwAAuYtH8G1emefo42oN/DU",
27972+ "ed25519:ALICEDEVICE26": "SEE1Y5s6r9tQS+G0g/QLaZL8sha3bowOCCEF5NLb0nc"
27973+ },
27974+ "signatures": {
27975+ "@alice_26:hs1": {
27976+ "ed25519:ALICEDEVICE26": "0dlMDeZqabMD2LbQ9g/hg7/0Bu6ZUN5RnltQ0ygNbD33vLvVoYk4kmLgluqUxkgk0RIYBbUgydBzjlxixoJlDQ"
27977+ }
27978+ },
27979+ "user_id": "@alice_26:hs1",
27980+ "unsigned": {}
27981+ }
27982+ },
27983+ "@alice_276:hs1": {
27984+ "ALICEDEVICE276": {
27985+ "algorithms": [
27986+ "m.olm.v1.curve25519-aes-sha2",
27987+ "m.megolm.v1.aes-sha2"
27988+ ],
27989+ "device_id": "ALICEDEVICE276",
27990+ "keys": {
27991+ "curve25519:ALICEDEVICE276": "p0k83Q4yMI3A2MRxgg7RbcocxyYB79fCx//TBPiCU30",
27992+ "ed25519:ALICEDEVICE276": "hVl05/nWMNHJ0SP2WYZNehPbPf3CZWLXRqpvdNsWIyk"
27993+ },
27994+ "signatures": {
27995+ "@alice_276:hs1": {
27996+ "ed25519:ALICEDEVICE276": "PEKS9J09VffhTg/l83U6P0aPqGF1YBPwiQKYCCojVZA5yvb/SNSs4vIluvwgFh+xrhv4+cP2//Fg1bLba3orDA"
27997+ }
27998+ },
27999+ "user_id": "@alice_276:hs1",
28000+ "unsigned": {}
28001+ }
28002+ },
28003+ "@alice_283:hs1": {
28004+ "ALICEDEVICE283": {
28005+ "algorithms": [
28006+ "m.olm.v1.curve25519-aes-sha2",
28007+ "m.megolm.v1.aes-sha2"
28008+ ],
28009+ "device_id": "ALICEDEVICE283",
28010+ "keys": {
28011+ "curve25519:ALICEDEVICE283": "6wpm1tMeM+nSOY9epT7vvAyffbmUJ35w+FLn3CmgV2I",
28012+ "ed25519:ALICEDEVICE283": "saUDbjkzZiDTs52RrE/cXhtPd1Z95XdU0DQh/Bmh4z8"
28013+ },
28014+ "signatures": {
28015+ "@alice_283:hs1": {
28016+ "ed25519:ALICEDEVICE283": "yy6LBir1wueyaDiONulrp47C5R5uAivQSFL7XNrzky7O/UuW+LLQ0wAnCV6igXR1747fLQsuqaqxUm5Hgm3iDw"
28017+ }
28018+ },
28019+ "user_id": "@alice_283:hs1",
28020+ "unsigned": {}
28021+ }
28022+ },
28023+ "@alice_28:hs1": {
28024+ "ALICEDEVICE28": {
28025+ "algorithms": [
28026+ "m.olm.v1.curve25519-aes-sha2",
28027+ "m.megolm.v1.aes-sha2"
28028+ ],
28029+ "device_id": "ALICEDEVICE28",
28030+ "keys": {
28031+ "curve25519:ALICEDEVICE28": "6WG7CuIUqpLA5dAR1lzWhrp6Skn+S7epoW4aMR0IciQ",
28032+ "ed25519:ALICEDEVICE28": "E/tIj2ZS9Ty5P0BoTTdbGMzZSCNOtJdEROrm0cEldls"
28033+ },
28034+ "signatures": {
28035+ "@alice_28:hs1": {
28036+ "ed25519:ALICEDEVICE28": "ro1+TO7GcZirWVFyEjD846O9Yu8J8jrnWcxz40EuGUm+o0ZXo5EO7fSP0/FJpR0OHAvSCyFXORoz0pP4KlrTDw"
28037+ }
28038+ },
28039+ "user_id": "@alice_28:hs1",
28040+ "unsigned": {}
28041+ }
28042+ },
28043+ "@alice_291:hs1": {
28044+ "ALICEDEVICE291": {
28045+ "algorithms": [
28046+ "m.olm.v1.curve25519-aes-sha2",
28047+ "m.megolm.v1.aes-sha2"
28048+ ],
28049+ "device_id": "ALICEDEVICE291",
28050+ "keys": {
28051+ "curve25519:ALICEDEVICE291": "Ma+NdfI0bg5Y9wzmfNJ8q0y5+lnIU1EPUrX8M82BK2w",
28052+ "ed25519:ALICEDEVICE291": "CSeexGcXw7G61qoGUcS0p3QhB8IZrDNYq/lbVhLYf34"
28053+ },
28054+ "signatures": {
28055+ "@alice_291:hs1": {
28056+ "ed25519:ALICEDEVICE291": "CHHYPz5boZDxCoEaCQIY8w0UO51Utrze2hbfjCSqlNCWj1AU/CWJlPt+plbTZf/1nEq8Il8ID0NnhoIr0OvBBA"
28057+ }
28058+ },
28059+ "user_id": "@alice_291:hs1",
28060+ "unsigned": {}
28061+ }
28062+ },
28063+ "@alice_296:hs1": {
28064+ "ALICEDEVICE296": {
28065+ "algorithms": [
28066+ "m.olm.v1.curve25519-aes-sha2",
28067+ "m.megolm.v1.aes-sha2"
28068+ ],
28069+ "device_id": "ALICEDEVICE296",
28070+ "keys": {
28071+ "curve25519:ALICEDEVICE296": "65uVTP8OymFZtNPhxS7hTMzRYNE50Q0jud+G6FCGbFQ",
28072+ "ed25519:ALICEDEVICE296": "M7vTMe4kZYH3YnC0hrOSC0PL3+K+Wsqt8EjfV912n2k"
28073+ },
28074+ "signatures": {
28075+ "@alice_296:hs1": {
28076+ "ed25519:ALICEDEVICE296": "/qsBk3Fks73iI6TDfD3yynK5P1n5QWyGlqu+/4axOV/hnZyP2I21MmLlv4AVjktdtdDMH1TS8zwfdq7aEy71CA"
28077+ }
28078+ },
28079+ "user_id": "@alice_296:hs1",
28080+ "unsigned": {}
28081+ }
28082+ },
28083+ "@alice_29:hs1": {
28084+ "ALICEDEVICE29": {
28085+ "algorithms": [
28086+ "m.olm.v1.curve25519-aes-sha2",
28087+ "m.megolm.v1.aes-sha2"
28088+ ],
28089+ "device_id": "ALICEDEVICE29",
28090+ "keys": {
28091+ "curve25519:ALICEDEVICE29": "VjrXvSm/6VpXGDNtm48P+nq9TBA6uIStV8IAWQ2M4Es",
28092+ "ed25519:ALICEDEVICE29": "NiqojwhfxgyT69KuxCoTFEIbDnCJbkvuruxSsZxignk"
28093+ },
28094+ "signatures": {
28095+ "@alice_29:hs1": {
28096+ "ed25519:ALICEDEVICE29": "MAyIlX2awdhCrcuSa2lPPoBRck1kF8TLPlpb/+0ERSyhniN5vstJQEeTvONzrAE9uQrtzr/A8dVC+4lKBEavAw"
28097+ }
28098+ },
28099+ "user_id": "@alice_29:hs1",
28100+ "unsigned": {}
28101+ }
28102+ },
28103+ "@alice_301:hs1": {
28104+ "ALICEDEVICE301": {
28105+ "algorithms": [
28106+ "m.olm.v1.curve25519-aes-sha2",
28107+ "m.megolm.v1.aes-sha2"
28108+ ],
28109+ "device_id": "ALICEDEVICE301",
28110+ "keys": {
28111+ "curve25519:ALICEDEVICE301": "0+o6GR2f1+xj59JTJJFgC/HNvhusLxRjUYVUlMSxNyw",
28112+ "ed25519:ALICEDEVICE301": "i1Zydgw7oYELzpS+TDmhd5GRlnpjwTNOuE2J14/YrOA"
28113+ },
28114+ "signatures": {
28115+ "@alice_301:hs1": {
28116+ "ed25519:ALICEDEVICE301": "NFZXsvzpy+Awitg8cPAZUidciU6aRTcApT/r5spBPaTgac648HhoKRy/DYhwCgBKuT44OBwKANMPTxWQ3hejAA"
28117+ }
28118+ },
28119+ "user_id": "@alice_301:hs1",
28120+ "unsigned": {}
28121+ }
28122+ },
28123+ "@alice_303:hs1": {
28124+ "ALICEDEVICE303": {
28125+ "algorithms": [
28126+ "m.olm.v1.curve25519-aes-sha2",
28127+ "m.megolm.v1.aes-sha2"
28128+ ],
28129+ "device_id": "ALICEDEVICE303",
28130+ "keys": {
28131+ "curve25519:ALICEDEVICE303": "rq7ZG+wx3gAm58lOBDewAFNOfcj+MHOswPxwrtj+RxU",
28132+ "ed25519:ALICEDEVICE303": "SyBW0ePEYwRIOagRBiA1SFjMZgORxgqdZ/KHJEbsJ6c"
28133+ },
28134+ "signatures": {
28135+ "@alice_303:hs1": {
28136+ "ed25519:ALICEDEVICE303": "YcgWMaz9COEBQZt40raLyM18mKcd2TjOcYV6Oa7i2kTsSaSTpNEUwlXSRV4UMNyZHtohbEE/kaiNL3ALcaQBDA"
28137+ }
28138+ },
28139+ "user_id": "@alice_303:hs1",
28140+ "unsigned": {}
28141+ }
28142+ },
28143+ "@alice_30:hs1": {
28144+ "ALICEDEVICE30": {
28145+ "algorithms": [
28146+ "m.olm.v1.curve25519-aes-sha2",
28147+ "m.megolm.v1.aes-sha2"
28148+ ],
28149+ "device_id": "ALICEDEVICE30",
28150+ "keys": {
28151+ "curve25519:ALICEDEVICE30": "Cy40syO0KtSKScCO8EsANeM/AtD1Dm0CUTfWDmIyazM",
28152+ "ed25519:ALICEDEVICE30": "TWTXfQ6zCOtY5Z/Xwkybt7OSD8mAnZOYq9V2pbbgi00"
28153+ },
28154+ "signatures": {
28155+ "@alice_30:hs1": {
28156+ "ed25519:ALICEDEVICE30": "Td6NUwJckJ+r1eIYW32kdfqFnTzmQrbfxnPwNpErjAuMvQdz9eTFSTUnD68OucivbYvk9cruiRrWQdWwf2N+AQ"
28157+ }
28158+ },
28159+ "user_id": "@alice_30:hs1",
28160+ "unsigned": {}
28161+ }
28162+ },
28163+ "@alice_311:hs1": {
28164+ "ALICEDEVICE311": {
28165+ "algorithms": [
28166+ "m.olm.v1.curve25519-aes-sha2",
28167+ "m.megolm.v1.aes-sha2"
28168+ ],
28169+ "device_id": "ALICEDEVICE311",
28170+ "keys": {
28171+ "curve25519:ALICEDEVICE311": "7pMlqxgFIfMKLOUFSA01mIDX9sHYFWEGYpnOclllcyw",
28172+ "ed25519:ALICEDEVICE311": "n2Mp8q+7v4kwLp/Du2TASCbmd35goGoPoUzBouSXewU"
28173+ },
28174+ "signatures": {
28175+ "@alice_311:hs1": {
28176+ "ed25519:ALICEDEVICE311": "EjSdNuIwoPf7u6YszNXghOERyBRyV9ZWHb34NfU0PBUQnNVLvbo2VOcakP1grrppllk+KXGYie1H9vKYkMLADA"
28177+ }
28178+ },
28179+ "user_id": "@alice_311:hs1",
28180+ "unsigned": {}
28181+ }
28182+ },
28183+ "@alice_313:hs1": {
28184+ "ALICEDEVICE313": {
28185+ "algorithms": [
28186+ "m.olm.v1.curve25519-aes-sha2",
28187+ "m.megolm.v1.aes-sha2"
28188+ ],
28189+ "device_id": "ALICEDEVICE313",
28190+ "keys": {
28191+ "curve25519:ALICEDEVICE313": "T3KAixZRq5BKdrI1Xm72wUfsOSKoNzWbOUgqjmpDw1g",
28192+ "ed25519:ALICEDEVICE313": "mpbLMdECNd7yal/CsnwJoI4e0YUBk6XvT3N115kPx7E"
28193+ },
28194+ "signatures": {
28195+ "@alice_313:hs1": {
28196+ "ed25519:ALICEDEVICE313": "ncbTtXLPIzCjTJiqWht9ZWDtD8PiD6lt0N3mpX8nqY68/0bLBLa2I5ajEsRXD4ZUwley+QTdVPKLfHCHEgChDA"
28197+ }
28198+ },
28199+ "user_id": "@alice_313:hs1",
28200+ "unsigned": {}
28201+ }
28202+ },
28203+ "@alice_317:hs1": {
28204+ "ALICEDEVICE317": {
28205+ "algorithms": [
28206+ "m.olm.v1.curve25519-aes-sha2",
28207+ "m.megolm.v1.aes-sha2"
28208+ ],
28209+ "device_id": "ALICEDEVICE317",
28210+ "keys": {
28211+ "curve25519:ALICEDEVICE317": "F1IhDojavmATYCIr78jA5OBGxsPqJV1AXEpwnc5xHgw",
28212+ "ed25519:ALICEDEVICE317": "CDqvv8XBXMLM2y9g0BQCOYSaOpvNVvDa1ekyBkG55vU"
28213+ },
28214+ "signatures": {
28215+ "@alice_317:hs1": {
28216+ "ed25519:ALICEDEVICE317": "sKs2rfWvu4uG/Wree7zxOtwKhDEXLUIMA62UnZ2dl0CVcABWSdimsUBq2AoTKBYwfJpm5gAnw+E04vl2jpiDDw"
28217+ }
28218+ },
28219+ "user_id": "@alice_317:hs1",
28220+ "unsigned": {}
28221+ }
28222+ },
28223+ "@alice_319:hs1": {
28224+ "ALICEDEVICE319": {
28225+ "algorithms": [
28226+ "m.olm.v1.curve25519-aes-sha2",
28227+ "m.megolm.v1.aes-sha2"
28228+ ],
28229+ "device_id": "ALICEDEVICE319",
28230+ "keys": {
28231+ "curve25519:ALICEDEVICE319": "1XuaJ8uHG+vp65K1d4i9QHFgM/+8+jk1zwXMPi+gBl4",
28232+ "ed25519:ALICEDEVICE319": "yWxBLH8X4JKPQEq1gwkyYtRdYANEwJxgpCH/LHcODkw"
28233+ },
28234+ "signatures": {
28235+ "@alice_319:hs1": {
28236+ "ed25519:ALICEDEVICE319": "hqyufeG1lkwwJ8bsAf6kKSAvUccqIZTwKQ2sy6/+R4JginpUoAVrmzCGKy/3rxo4jzcrgCmbQzwMrFVZ4Bc6BQ"
28237+ }
28238+ },
28239+ "user_id": "@alice_319:hs1",
28240+ "unsigned": {}
28241+ }
28242+ },
28243+ "@alice_324:hs1": {
28244+ "ALICEDEVICE324": {
28245+ "algorithms": [
28246+ "m.olm.v1.curve25519-aes-sha2",
28247+ "m.megolm.v1.aes-sha2"
28248+ ],
28249+ "device_id": "ALICEDEVICE324",
28250+ "keys": {
28251+ "curve25519:ALICEDEVICE324": "sUFN9Kr0rRBuJNI9J/Yk/QZLByWqthXqJpTKghc/ikY",
28252+ "ed25519:ALICEDEVICE324": "QFgbjh1H6+mHaQIxSguXkMyFaI52tRhoWdBCXV8AMGk"
28253+ },
28254+ "signatures": {
28255+ "@alice_324:hs1": {
28256+ "ed25519:ALICEDEVICE324": "Yc5WtmQv1mtHUjihzLbEJfQG2Ov9eQvGcUGJ+MaajFkooOdco1n7Ucmerb0rGHhAQ3kTiGUWxiabbBNB5t5LCQ"
28257+ }
28258+ },
28259+ "user_id": "@alice_324:hs1",
28260+ "unsigned": {}
28261+ }
28262+ },
28263+ "@alice_329:hs1": {
28264+ "ALICEDEVICE329": {
28265+ "algorithms": [
28266+ "m.olm.v1.curve25519-aes-sha2",
28267+ "m.megolm.v1.aes-sha2"
28268+ ],
28269+ "device_id": "ALICEDEVICE329",
28270+ "keys": {
28271+ "curve25519:ALICEDEVICE329": "1Wdub1QaGY/e69tRmKmVapB6b3Lb9RS016jZ3XzqLlQ",
28272+ "ed25519:ALICEDEVICE329": "o+++20pNJiXNL7yvTyTAHNZgXq4btk6axKervn83dGE"
28273+ },
28274+ "signatures": {
28275+ "@alice_329:hs1": {
28276+ "ed25519:ALICEDEVICE329": "eYs+cVEAH+ZYTaRD+4xkI1ZY7vUjGP92FwgIjaj5IUNh3i6KTAlvId1DWdRTiDj9Urw0vS3dUF+i1xOsjFvOCA"
28277+ }
28278+ },
28279+ "user_id": "@alice_329:hs1",
28280+ "unsigned": {}
28281+ }
28282+ },
28283+ "@alice_333:hs1": {
28284+ "ALICEDEVICE333": {
28285+ "algorithms": [
28286+ "m.olm.v1.curve25519-aes-sha2",
28287+ "m.megolm.v1.aes-sha2"
28288+ ],
28289+ "device_id": "ALICEDEVICE333",
28290+ "keys": {
28291+ "curve25519:ALICEDEVICE333": "EYxhfwAz5DUbOu69JHJ17b8zkLGOC+P0STlgnlxCSQk",
28292+ "ed25519:ALICEDEVICE333": "cN6L6wCd9UxmKVw7D4Kdx3YaHzJXQMWcCdsOq8CTSYo"
28293+ },
28294+ "signatures": {
28295+ "@alice_333:hs1": {
28296+ "ed25519:ALICEDEVICE333": "iJwuLgGEXFatnfTKpba89bK0vhs4v8aKrka3SbYAUWKqSVSAgO861hy1OKu8GNwZq3QEBlkpUyI5cXpXX30hDg"
28297+ }
28298+ },
28299+ "user_id": "@alice_333:hs1",
28300+ "unsigned": {}
28301+ }
28302+ },
28303+ "@alice_334:hs1": {
28304+ "ALICEDEVICE334": {
28305+ "algorithms": [
28306+ "m.olm.v1.curve25519-aes-sha2",
28307+ "m.megolm.v1.aes-sha2"
28308+ ],
28309+ "device_id": "ALICEDEVICE334",
28310+ "keys": {
28311+ "curve25519:ALICEDEVICE334": "a7ZKbQ2oVGsZiJHedZY+6SfWsG/2GpY/O51YLAxGR3w",
28312+ "ed25519:ALICEDEVICE334": "wJ8C9Cmeqd2lpUezsiAUBN5sq6LnQF4EER8oQbpzKW0"
28313+ },
28314+ "signatures": {
28315+ "@alice_334:hs1": {
28316+ "ed25519:ALICEDEVICE334": "8MpBZeo+1XEOuiKGJMzeGGZdbnRwcmv6LMI39EAbZPYCwEFoL1KaGWtthXc1yn1W6Ry79ldEXphcWZ8AdgZiDw"
28317+ }
28318+ },
28319+ "user_id": "@alice_334:hs1",
28320+ "unsigned": {}
28321+ }
28322+ },
28323+ "@alice_335:hs1": {
28324+ "ALICEDEVICE335": {
28325+ "algorithms": [
28326+ "m.olm.v1.curve25519-aes-sha2",
28327+ "m.megolm.v1.aes-sha2"
28328+ ],
28329+ "device_id": "ALICEDEVICE335",
28330+ "keys": {
28331+ "curve25519:ALICEDEVICE335": "DHJDZ69nxae/kIoG9SlFHxu+z+b5J6B46Xu9gPwjPDk",
28332+ "ed25519:ALICEDEVICE335": "vnDagKN+k+2J4fW6E8G9bLJ5YRLIFq8rh3kwo8NuVdI"
28333+ },
28334+ "signatures": {
28335+ "@alice_335:hs1": {
28336+ "ed25519:ALICEDEVICE335": "WdKIAoBdjdnj31APB9BV0DBQkeHHsYeLYu76Ik7U/KiQhnPndjLmx5fYVN+E6CvHW3rKpdzwtQu0K7vJZFiFBg"
28337+ }
28338+ },
28339+ "user_id": "@alice_335:hs1",
28340+ "unsigned": {}
28341+ }
28342+ },
28343+ "@alice_346:hs1": {
28344+ "ALICEDEVICE346": {
28345+ "algorithms": [
28346+ "m.olm.v1.curve25519-aes-sha2",
28347+ "m.megolm.v1.aes-sha2"
28348+ ],
28349+ "device_id": "ALICEDEVICE346",
28350+ "keys": {
28351+ "curve25519:ALICEDEVICE346": "MxaWcnjAX7tWQbsDVmFSOpf7W95/7DE9jdqDowGeXwE",
28352+ "ed25519:ALICEDEVICE346": "1z5dFhsfbZEEP6O5YkvMUumM4WT2bkbz35QwDZwWh8Y"
28353+ },
28354+ "signatures": {
28355+ "@alice_346:hs1": {
28356+ "ed25519:ALICEDEVICE346": "L+pyy/vhoes93/Y7PBpWLp4vMTvvCFRGAs08Gv7YMLRW0HlRXVYGK6OmKPMeO2LC9cxxrEAVtWT9YPrceP+1CA"
28357+ }
28358+ },
28359+ "user_id": "@alice_346:hs1",
28360+ "unsigned": {}
28361+ }
28362+ },
28363+ "@alice_348:hs1": {
28364+ "ALICEDEVICE348": {
28365+ "algorithms": [
28366+ "m.olm.v1.curve25519-aes-sha2",
28367+ "m.megolm.v1.aes-sha2"
28368+ ],
28369+ "device_id": "ALICEDEVICE348",
28370+ "keys": {
28371+ "curve25519:ALICEDEVICE348": "M0FHA+aTlTVHw7TGEB2GeQzE9vHmv2z4Vhj2gGua0HI",
28372+ "ed25519:ALICEDEVICE348": "RIctWcVCsrkM85D+CCV6zZnJ7SFhZrUJSf1WtPRdg3w"
28373+ },
28374+ "signatures": {
28375+ "@alice_348:hs1": {
28376+ "ed25519:ALICEDEVICE348": "CfDD/DWpaSS1GXMAgOUBRrR3AIOhcyOa2ldul4Q5CpMq41ZYmi/z/SdRxj1eCvRBRakyseQW0F9mOSyzlvVhDA"
28377+ }
28378+ },
28379+ "user_id": "@alice_348:hs1",
28380+ "unsigned": {}
28381+ }
28382+ },
28383+ "@alice_355:hs1": {
28384+ "ALICEDEVICE355": {
28385+ "algorithms": [
28386+ "m.olm.v1.curve25519-aes-sha2",
28387+ "m.megolm.v1.aes-sha2"
28388+ ],
28389+ "device_id": "ALICEDEVICE355",
28390+ "keys": {
28391+ "curve25519:ALICEDEVICE355": "He85zJrgs9FdU8zcCQWNx/Y3e+onzPSeUZ9ph552uUo",
28392+ "ed25519:ALICEDEVICE355": "VVEUa/ZvokZBKcQQolqF+6cQy5XUg/k0eRbZ72zSJo0"
28393+ },
28394+ "signatures": {
28395+ "@alice_355:hs1": {
28396+ "ed25519:ALICEDEVICE355": "wlGlVgFb5wEJ+gnamsUU/k6Cv8j8HLDejfC0/hahbhk4R7tFWSsG9VfbofHCkdg8ljwvZ/RMBvV98QdnGm9sBQ"
28397+ }
28398+ },
28399+ "user_id": "@alice_355:hs1",
28400+ "unsigned": {}
28401+ }
28402+ },
28403+ "@alice_365:hs1": {
28404+ "ALICEDEVICE365": {
28405+ "algorithms": [
28406+ "m.olm.v1.curve25519-aes-sha2",
28407+ "m.megolm.v1.aes-sha2"
28408+ ],
28409+ "device_id": "ALICEDEVICE365",
28410+ "keys": {
28411+ "curve25519:ALICEDEVICE365": "nXnQh5+Jw7ZYDPtr/tjBrars+xpe3S41O9kKU6bXGV0",
28412+ "ed25519:ALICEDEVICE365": "ZWAreLrhsT7XH7ccY/Yb1UwbVRySe85690SAG4ORq94"
28413+ },
28414+ "signatures": {
28415+ "@alice_365:hs1": {
28416+ "ed25519:ALICEDEVICE365": "xaHBC9F/7tAjUAJtcQ4G+mUxsCKIKP7lazCOQ+Dg9C/WtRBj/X7Ud8pRkupbKdd+Od9VfeQDstXJMG9FO9uCCw"
28417+ }
28418+ },
28419+ "user_id": "@alice_365:hs1",
28420+ "unsigned": {}
28421+ }
28422+ },
28423+ "@alice_36:hs1": {
28424+ "ALICEDEVICE36": {
28425+ "algorithms": [
28426+ "m.olm.v1.curve25519-aes-sha2",
28427+ "m.megolm.v1.aes-sha2"
28428+ ],
28429+ "device_id": "ALICEDEVICE36",
28430+ "keys": {
28431+ "curve25519:ALICEDEVICE36": "lrI7XSUyhc+SY1fMADoLW10cauXA4Eu8MStTu+jlp0o",
28432+ "ed25519:ALICEDEVICE36": "0vCeOAuUIGfIb3fpJadsRD0B5RMZlhtoh6En37/jPwI"
28433+ },
28434+ "signatures": {
28435+ "@alice_36:hs1": {
28436+ "ed25519:ALICEDEVICE36": "NGW/18p4ndJxIX29E8xEhvgbDKBA7q2rtjS8l9OX6MwKDpfbP2YEU0XjfpR8ucvrE7+4IIu1hTas2A22K3uKCQ"
28437+ }
28438+ },
28439+ "user_id": "@alice_36:hs1",
28440+ "unsigned": {}
28441+ }
28442+ },
28443+ "@alice_370:hs1": {
28444+ "ALICEDEVICE370": {
28445+ "algorithms": [
28446+ "m.olm.v1.curve25519-aes-sha2",
28447+ "m.megolm.v1.aes-sha2"
28448+ ],
28449+ "device_id": "ALICEDEVICE370",
28450+ "keys": {
28451+ "curve25519:ALICEDEVICE370": "r2jTMAAosvmyPSPH73xiFZpOb89nP9FQuuL1hfl/gkA",
28452+ "ed25519:ALICEDEVICE370": "wtAOWZMo4dMJRaVwbHDNpQEjeQcQbANjI4Mmz+2pFn0"
28453+ },
28454+ "signatures": {
28455+ "@alice_370:hs1": {
28456+ "ed25519:ALICEDEVICE370": "ZzTow/PfYFs0fSyEyi5OYsZF+aSRHk2QVbnj/YeSp92AmgvgOSAspCDijY7+wjf7BCAoTLNZP2I6iyj+EkVJBA"
28457+ }
28458+ },
28459+ "user_id": "@alice_370:hs1",
28460+ "unsigned": {}
28461+ }
28462+ },
28463+ "@alice_375:hs1": {
28464+ "ALICEDEVICE375": {
28465+ "algorithms": [
28466+ "m.olm.v1.curve25519-aes-sha2",
28467+ "m.megolm.v1.aes-sha2"
28468+ ],
28469+ "device_id": "ALICEDEVICE375",
28470+ "keys": {
28471+ "curve25519:ALICEDEVICE375": "E7A1lDaxmUt6OUiE1M//Zhe/Dws+SeLGZaDKlxqajxk",
28472+ "ed25519:ALICEDEVICE375": "fnIjqQN2655dSV0kE3nTIY+BVVYjCigil3hRoljMe7Y"
28473+ },
28474+ "signatures": {
28475+ "@alice_375:hs1": {
28476+ "ed25519:ALICEDEVICE375": "wsewBejGnus2z7eZEKd+kVwbjDtCPiWN1RdrOwiqqPYFS+1hTZz3HrVmYLZ2EIZCgLvGeNjhLSEv8MsQs9kYDw"
28477+ }
28478+ },
28479+ "user_id": "@alice_375:hs1",
28480+ "unsigned": {}
28481+ }
28482+ },
28483+ "@alice_379:hs1": {
28484+ "ALICEDEVICE379": {
28485+ "algorithms": [
28486+ "m.olm.v1.curve25519-aes-sha2",
28487+ "m.megolm.v1.aes-sha2"
28488+ ],
28489+ "device_id": "ALICEDEVICE379",
28490+ "keys": {
28491+ "curve25519:ALICEDEVICE379": "qsUcsusW1/iNWgMUdpFamcp1eSZLBDwJ8kzhicoBTQo",
28492+ "ed25519:ALICEDEVICE379": "tLZP37yjzPh/e/1+tlEm4hu94bmY8wsMk1LBJfbLGJ8"
28493+ },
28494+ "signatures": {
28495+ "@alice_379:hs1": {
28496+ "ed25519:ALICEDEVICE379": "jCxdC3qj9trvPX4rItRjymENgs3RCz0Eaq6oyLpMxJo3gVmOzgnPLbq0d4h8IFHz4tLxlH8sWtIzCY3mERWXCw"
28497+ }
28498+ },
28499+ "user_id": "@alice_379:hs1",
28500+ "unsigned": {}
28501+ }
28502+ },
28503+ "@alice_396:hs1": {
28504+ "ALICEDEVICE396": {
28505+ "algorithms": [
28506+ "m.olm.v1.curve25519-aes-sha2",
28507+ "m.megolm.v1.aes-sha2"
28508+ ],
28509+ "device_id": "ALICEDEVICE396",
28510+ "keys": {
28511+ "curve25519:ALICEDEVICE396": "jKw9yy2IdKcc4GEM6+1IDBk5Tx5GbrQZ9F41OYjwwnw",
28512+ "ed25519:ALICEDEVICE396": "PydOAQg7ORjweJ7CCbcSfkm59CX6vhcSuyhBGroYiGs"
28513+ },
28514+ "signatures": {
28515+ "@alice_396:hs1": {
28516+ "ed25519:ALICEDEVICE396": "Yx7T03x2+ssjMuOWNM6DL69upPNimD1RBWvwUdU5jOCwweBnDmM614OaGdkECZ6TxTqo/jcZe9Al32Edjs/YBw"
28517+ }
28518+ },
28519+ "user_id": "@alice_396:hs1",
28520+ "unsigned": {}
28521+ }
28522+ },
28523+ "@alice_400:hs1": {
28524+ "ALICEDEVICE400": {
28525+ "algorithms": [
28526+ "m.olm.v1.curve25519-aes-sha2",
28527+ "m.megolm.v1.aes-sha2"
28528+ ],
28529+ "device_id": "ALICEDEVICE400",
28530+ "keys": {
28531+ "curve25519:ALICEDEVICE400": "473mEX3Q+8FN34CcBcy3QsXeZHMmLJnFpXw2qA/pqg0",
28532+ "ed25519:ALICEDEVICE400": "v513tbFHMBGkrUCPNtfC1CPn8yKPq8GtGN93Gj0ZN2E"
28533+ },
28534+ "signatures": {
28535+ "@alice_400:hs1": {
28536+ "ed25519:ALICEDEVICE400": "iAIvnBhpbzYtSvgY/jRz0+REEEbCIJ86Rj1dLwa9Y3Zk7qZvEM1gRCsehQoVsX9tg28G9i3qoAipQwbcKE+UCA"
28537+ }
28538+ },
28539+ "user_id": "@alice_400:hs1",
28540+ "unsigned": {}
28541+ }
28542+ },
28543+ "@alice_407:hs1": {
28544+ "ALICEDEVICE407": {
28545+ "algorithms": [
28546+ "m.olm.v1.curve25519-aes-sha2",
28547+ "m.megolm.v1.aes-sha2"
28548+ ],
28549+ "device_id": "ALICEDEVICE407",
28550+ "keys": {
28551+ "curve25519:ALICEDEVICE407": "hi819yVM7E/z8YQ1hiONCk12tXg+fv8ZXr2iWU5PLzU",
28552+ "ed25519:ALICEDEVICE407": "lNyXo9H40G760dEHJCNVHfVz7AXGiHHmUGTiMMnxTnk"
28553+ },
28554+ "signatures": {
28555+ "@alice_407:hs1": {
28556+ "ed25519:ALICEDEVICE407": "tvc7Src0ppoBHeLswoF7QcH7/UcpzqHT+snI+YSTm0XMemyD7TLvMdxOKnWyUDZmRNGJPEQufzaZivQCYX/ODg"
28557+ }
28558+ },
28559+ "user_id": "@alice_407:hs1",
28560+ "unsigned": {}
28561+ }
28562+ },
28563+ "@alice_413:hs1": {
28564+ "ALICEDEVICE413": {
28565+ "algorithms": [
28566+ "m.olm.v1.curve25519-aes-sha2",
28567+ "m.megolm.v1.aes-sha2"
28568+ ],
28569+ "device_id": "ALICEDEVICE413",
28570+ "keys": {
28571+ "curve25519:ALICEDEVICE413": "+55GAJ0A+/UhXAvX1Dek1aAyFudNvV6+ikV+V94ENEE",
28572+ "ed25519:ALICEDEVICE413": "4R3Nr7QfKbGZXaibwngHPNEWNwbuEC5tl9xIN9IUwQs"
28573+ },
28574+ "signatures": {
28575+ "@alice_413:hs1": {
28576+ "ed25519:ALICEDEVICE413": "8voH9ynmoTm6JQW3wPfOft++jDYF3BkyAEjQzRwfJdB/gOCg2aWu5wc4Fk1cyCdNOSHCjenCHLQ342ShwcMxDw"
28577+ }
28578+ },
28579+ "user_id": "@alice_413:hs1",
28580+ "unsigned": {}
28581+ }
28582+ },
28583+ "@alice_420:hs1": {
28584+ "ALICEDEVICE420": {
28585+ "algorithms": [
28586+ "m.olm.v1.curve25519-aes-sha2",
28587+ "m.megolm.v1.aes-sha2"
28588+ ],
28589+ "device_id": "ALICEDEVICE420",
28590+ "keys": {
28591+ "curve25519:ALICEDEVICE420": "+Wuv3coi3L+ZUEnGfJStj3neup/X17dRzLL0Y2WOwSE",
28592+ "ed25519:ALICEDEVICE420": "XSt7U3lBKMjDgM9kfGyEOK2JKuCOCZG5lW0Vc6MNI78"
28593+ },
28594+ "signatures": {
28595+ "@alice_420:hs1": {
28596+ "ed25519:ALICEDEVICE420": "5T1g4s82fe45YFsysaKxIaE/A0CvY0pP/2olBgQowLeIEXHO3ETkjBM24K9N3HwZhzjvgegMh+/+mqxJOEHwDA"
28597+ }
28598+ },
28599+ "user_id": "@alice_420:hs1",
28600+ "unsigned": {}
28601+ }
28602+ },
28603+ "@alice_424:hs1": {
28604+ "ALICEDEVICE424": {
28605+ "algorithms": [
28606+ "m.olm.v1.curve25519-aes-sha2",
28607+ "m.megolm.v1.aes-sha2"
28608+ ],
28609+ "device_id": "ALICEDEVICE424",
28610+ "keys": {
28611+ "curve25519:ALICEDEVICE424": "Y4l8JCqieBpMo3H8iXxyUeelZ+YlzIOwqHnWzR6ngk0",
28612+ "ed25519:ALICEDEVICE424": "mtdpV2TXMZZddCVUnXaZP17Ib7YzoypcwE1uMTRK8ME"
28613+ },
28614+ "signatures": {
28615+ "@alice_424:hs1": {
28616+ "ed25519:ALICEDEVICE424": "lRFwr3U5sXjdDSnNGTSp4igixwhEpcTCv2LmgCEeilx4+bzuoxAdl6WyTDKbLyAmRskOgKxb0JNcw3Bw8pPcDg"
28617+ }
28618+ },
28619+ "user_id": "@alice_424:hs1",
28620+ "unsigned": {}
28621+ }
28622+ },
28623+ "@alice_426:hs1": {
28624+ "ALICEDEVICE426": {
28625+ "algorithms": [
28626+ "m.olm.v1.curve25519-aes-sha2",
28627+ "m.megolm.v1.aes-sha2"
28628+ ],
28629+ "device_id": "ALICEDEVICE426",
28630+ "keys": {
28631+ "curve25519:ALICEDEVICE426": "dRRitJQgpTtw8z7GUyYmP/C3PYdlaQ46oOosHMim3HI",
28632+ "ed25519:ALICEDEVICE426": "1730CKgjsq5f2IHAH4KJmOKL5odkcyldACSY3J5kRuQ"
28633+ },
28634+ "signatures": {
28635+ "@alice_426:hs1": {
28636+ "ed25519:ALICEDEVICE426": "E6rUBKXMQEBj7zbY9t3pZjbhocCYIYyGF/0Birmqipz8lRt8TGJxOPjcwNMZGMr+HAs9BUig+zgSUPSNVH/kCQ"
28637+ }
28638+ },
28639+ "user_id": "@alice_426:hs1",
28640+ "unsigned": {}
28641+ }
28642+ },
28643+ "@alice_439:hs1": {
28644+ "ALICEDEVICE439": {
28645+ "algorithms": [
28646+ "m.olm.v1.curve25519-aes-sha2",
28647+ "m.megolm.v1.aes-sha2"
28648+ ],
28649+ "device_id": "ALICEDEVICE439",
28650+ "keys": {
28651+ "curve25519:ALICEDEVICE439": "jDAnvGWeKm6JeLofPwQKhA2lK8RC5QFo1o2z58o1BCo",
28652+ "ed25519:ALICEDEVICE439": "3ewAtT8yUuZBNtZWB+Hd4WE1zzMoRfskyKsEfbCHW04"
28653+ },
28654+ "signatures": {
28655+ "@alice_439:hs1": {
28656+ "ed25519:ALICEDEVICE439": "HQSCZJA1D5BWsyj4mE7hO+KMtXZ9s4Rx8DEx4Rddsld1k0o0fNas+gyq1k9imNfCe5CJBGRyPdmMxGjYOpdJBw"
28657+ }
28658+ },
28659+ "user_id": "@alice_439:hs1",
28660+ "unsigned": {}
28661+ }
28662+ },
28663+ "@alice_454:hs1": {
28664+ "ALICEDEVICE454": {
28665+ "algorithms": [
28666+ "m.olm.v1.curve25519-aes-sha2",
28667+ "m.megolm.v1.aes-sha2"
28668+ ],
28669+ "device_id": "ALICEDEVICE454",
28670+ "keys": {
28671+ "curve25519:ALICEDEVICE454": "+asy/6eH0NxW0zPB2gSBQiYhaihZ5hGH6a/1rKIYJFk",
28672+ "ed25519:ALICEDEVICE454": "HU3/jxjzdMLOzjZ1eSKJih1zMRuDXjI2QEpickaWA18"
28673+ },
28674+ "signatures": {
28675+ "@alice_454:hs1": {
28676+ "ed25519:ALICEDEVICE454": "M0arqUmSNVi8cZK/TRLB7xLuA1c5uKjC5juh5nadVJhjpDhxYez5PowCksgwH6JpQEhm8ocByCLkr6Ssr+gYBQ"
28677+ }
28678+ },
28679+ "user_id": "@alice_454:hs1",
28680+ "unsigned": {}
28681+ }
28682+ },
28683+ "@alice_464:hs1": {
28684+ "ALICEDEVICE464": {
28685+ "algorithms": [
28686+ "m.olm.v1.curve25519-aes-sha2",
28687+ "m.megolm.v1.aes-sha2"
28688+ ],
28689+ "device_id": "ALICEDEVICE464",
28690+ "keys": {
28691+ "curve25519:ALICEDEVICE464": "vulQX+S65EXkWL9JZhXXWqpXWe6AkNzGjFZB2S9gOyo",
28692+ "ed25519:ALICEDEVICE464": "VL3WmGVhev/uNnqD2AEPFhv5GmAsC021ec/gOPBHpQA"
28693+ },
28694+ "signatures": {
28695+ "@alice_464:hs1": {
28696+ "ed25519:ALICEDEVICE464": "Q+lYuQYK57+YaBLaT5V/HnwuX3dxFQvlv+TZCkjgvekMx/jm0j6Ej3l5brssik9Ex72fGnhWUcfiU5pf0UD4CQ"
28697+ }
28698+ },
28699+ "user_id": "@alice_464:hs1",
28700+ "unsigned": {}
28701+ }
28702+ },
28703+ "@alice_470:hs1": {
28704+ "ALICEDEVICE470": {
28705+ "algorithms": [
28706+ "m.olm.v1.curve25519-aes-sha2",
28707+ "m.megolm.v1.aes-sha2"
28708+ ],
28709+ "device_id": "ALICEDEVICE470",
28710+ "keys": {
28711+ "curve25519:ALICEDEVICE470": "VMTqUu5gB8aiVbvQ8i+VHHxXYtBNnUfmL1grLrufbFg",
28712+ "ed25519:ALICEDEVICE470": "yrNU8hUkh89DU0pD5piBmMhN9tbw4DKjHqGf+dT7dVo"
28713+ },
28714+ "signatures": {
28715+ "@alice_470:hs1": {
28716+ "ed25519:ALICEDEVICE470": "46XMe2MZp+TjWEV9ICWy/jIphxb8CeNfoxQh9vC6oNvW13VLkVMnhIC1NDg1L3QuYk1VYmktHgdzLCcZFjUTBg"
28717+ }
28718+ },
28719+ "user_id": "@alice_470:hs1",
28720+ "unsigned": {}
28721+ }
28722+ },
28723+ "@alice_474:hs1": {
28724+ "ALICEDEVICE474": {
28725+ "algorithms": [
28726+ "m.olm.v1.curve25519-aes-sha2",
28727+ "m.megolm.v1.aes-sha2"
28728+ ],
28729+ "device_id": "ALICEDEVICE474",
28730+ "keys": {
28731+ "curve25519:ALICEDEVICE474": "bK/n/JoW+36FwS9+yfTMgtjPCTIzF1dgW3TThN24sS8",
28732+ "ed25519:ALICEDEVICE474": "2DjeVpGKie/rsU6NsPIeyOcqkWGyBqhmTTctN1OkfSE"
28733+ },
28734+ "signatures": {
28735+ "@alice_474:hs1": {
28736+ "ed25519:ALICEDEVICE474": "lglEc+QTBHXSqIXEyQl3HVv7QAFPNOcmPPoz/YT33ZogE11PTNgjV7gvUtIc3HlaxPye03kDh31TffwiHEL+CA"
28737+ }
28738+ },
28739+ "user_id": "@alice_474:hs1",
28740+ "unsigned": {}
28741+ }
28742+ },
28743+ "@alice_477:hs1": {
28744+ "ALICEDEVICE477": {
28745+ "algorithms": [
28746+ "m.olm.v1.curve25519-aes-sha2",
28747+ "m.megolm.v1.aes-sha2"
28748+ ],
28749+ "device_id": "ALICEDEVICE477",
28750+ "keys": {
28751+ "curve25519:ALICEDEVICE477": "mrKJNFiutIfji4DWIWE0U+Hca+lVaWoln6SCKmDcQTY",
28752+ "ed25519:ALICEDEVICE477": "k6ibed6YVTp73vXA4kv1PPaOjPz6e9FYtvL81GMjOxI"
28753+ },
28754+ "signatures": {
28755+ "@alice_477:hs1": {
28756+ "ed25519:ALICEDEVICE477": "wCXgXcaseSJsR+IqSWloOw2xf24hXEsQTT6K0rJS7QCFrtZoGwwuV1Ieo3h/TPHVI/m0fVTaXyrEA+LpazZYAg"
28757+ }
28758+ },
28759+ "user_id": "@alice_477:hs1",
28760+ "unsigned": {}
28761+ }
28762+ },
28763+ "@alice_480:hs1": {
28764+ "ALICEDEVICE480": {
28765+ "algorithms": [
28766+ "m.olm.v1.curve25519-aes-sha2",
28767+ "m.megolm.v1.aes-sha2"
28768+ ],
28769+ "device_id": "ALICEDEVICE480",
28770+ "keys": {
28771+ "curve25519:ALICEDEVICE480": "izGoPgIBHuMAB/TkQZMNtmzFTCp+Sm0e3s76V6YlpUA",
28772+ "ed25519:ALICEDEVICE480": "rV7+ESCvj37CZjz/bz+XbuyG6PnO4vYIcyoGp2BgZ9c"
28773+ },
28774+ "signatures": {
28775+ "@alice_480:hs1": {
28776+ "ed25519:ALICEDEVICE480": "ZzvGL+zpCxu2pNKoWd/pxM7Zgb2aFTG1bI2EEMDwWw3IeTJLNOcoIUUXNhvJeI1ZFLtvoFQs0UTZ8v8UmTZUCA"
28777+ }
28778+ },
28779+ "user_id": "@alice_480:hs1",
28780+ "unsigned": {}
28781+ }
28782+ },
28783+ "@alice_483:hs1": {
28784+ "ALICEDEVICE483": {
28785+ "algorithms": [
28786+ "m.olm.v1.curve25519-aes-sha2",
28787+ "m.megolm.v1.aes-sha2"
28788+ ],
28789+ "device_id": "ALICEDEVICE483",
28790+ "keys": {
28791+ "curve25519:ALICEDEVICE483": "simUfLDzdwAcyOFJUShI55HlSRdkYmSBjq5Y9bamQH0",
28792+ "ed25519:ALICEDEVICE483": "itXg04bYup5G4nXyj7s/7wWIctvkkvg2+S+BkyYT2o8"
28793+ },
28794+ "signatures": {
28795+ "@alice_483:hs1": {
28796+ "ed25519:ALICEDEVICE483": "qR/OXKJ3n9MyhNq1R/w+iEq06DmqAmzpOfg1NBW9GZU0iHjLAXZkvvOCC0+EFixuMcMMtK3EzdEEaGQGyp62AQ"
28797+ }
28798+ },
28799+ "user_id": "@alice_483:hs1",
28800+ "unsigned": {}
28801+ }
28802+ },
28803+ "@alice_50:hs1": {
28804+ "ALICEDEVICE50": {
28805+ "algorithms": [
28806+ "m.olm.v1.curve25519-aes-sha2",
28807+ "m.megolm.v1.aes-sha2"
28808+ ],
28809+ "device_id": "ALICEDEVICE50",
28810+ "keys": {
28811+ "curve25519:ALICEDEVICE50": "ZE2QHXr/znBR/e6lRRDr0bqrvNP7+I2gK6INC4NTrDI",
28812+ "ed25519:ALICEDEVICE50": "2haJL428mGzh/JDj2d36pPNxnERjgXYo96Kw82CtEfc"
28813+ },
28814+ "signatures": {
28815+ "@alice_50:hs1": {
28816+ "ed25519:ALICEDEVICE50": "hfybAi3pnj2PLPWgpxwNHsuszybr/fBcbU5us8IcUjWAYlNmtaeeMeDBNxA0LNTi/Y3WSIKV732YzZ3Rnn4nDA"
28817+ }
28818+ },
28819+ "user_id": "@alice_50:hs1",
28820+ "unsigned": {}
28821+ }
28822+ },
28823+ "@alice_513:hs1": {
28824+ "ALICEDEVICE513": {
28825+ "algorithms": [
28826+ "m.olm.v1.curve25519-aes-sha2",
28827+ "m.megolm.v1.aes-sha2"
28828+ ],
28829+ "device_id": "ALICEDEVICE513",
28830+ "keys": {
28831+ "curve25519:ALICEDEVICE513": "MXCQpgOwlvJTMPKtrxg6UQfTb8FjUAqbIadHcMtYe0Y",
28832+ "ed25519:ALICEDEVICE513": "zxkOBx1wHrsibLuiYZvrQWvcFBYssdakQsbFfA90ESQ"
28833+ },
28834+ "signatures": {
28835+ "@alice_513:hs1": {
28836+ "ed25519:ALICEDEVICE513": "0PBSKMZlrThCR2bRfCtq19wP5vXgtR0fUdzizySaP56zuVARzZs8r/9eAW81Os4pW/R8cduXWJblpAVwx4Z/AA"
28837+ }
28838+ },
28839+ "user_id": "@alice_513:hs1",
28840+ "unsigned": {}
28841+ }
28842+ },
28843+ "@alice_526:hs1": {
28844+ "ALICEDEVICE526": {
28845+ "algorithms": [
28846+ "m.olm.v1.curve25519-aes-sha2",
28847+ "m.megolm.v1.aes-sha2"
28848+ ],
28849+ "device_id": "ALICEDEVICE526",
28850+ "keys": {
28851+ "curve25519:ALICEDEVICE526": "6N4HfoNHRBp5oFvoAlwtZXnZPcDazE3ZP7TgrdhnzhA",
28852+ "ed25519:ALICEDEVICE526": "UccGUNXe8n1pIDZ0uh6OzbE4KjUmYk2+3SczwCg2a8w"
28853+ },
28854+ "signatures": {
28855+ "@alice_526:hs1": {
28856+ "ed25519:ALICEDEVICE526": "gYOx9QjEM1msgsDBnAqXYDW9QdSwwUsn8OLsH6/4Cy/Z+9a1S3eFBHaFf3RSYjeMs0fse0td+JqqCsIrlNgaCQ"
28857+ }
28858+ },
28859+ "user_id": "@alice_526:hs1",
28860+ "unsigned": {}
28861+ }
28862+ },
28863+ "@alice_52:hs1": {
28864+ "ALICEDEVICE52": {
28865+ "algorithms": [
28866+ "m.olm.v1.curve25519-aes-sha2",
28867+ "m.megolm.v1.aes-sha2"
28868+ ],
28869+ "device_id": "ALICEDEVICE52",
28870+ "keys": {
28871+ "curve25519:ALICEDEVICE52": "kVT3pxLNsK+OXjdv3NiJTnRmEDjnvENYbtQY1aMmW0E",
28872+ "ed25519:ALICEDEVICE52": "hLS0Z3ldAWq16gfSLllsyEVaZx3L+QdDtKxnveXvVBs"
28873+ },
28874+ "signatures": {
28875+ "@alice_52:hs1": {
28876+ "ed25519:ALICEDEVICE52": "KncK6J8hBtetdbn2LCG3ie/Zsnd/2LQ2RD0x7t9EAeaBI3zd4cCauVWNlQMrO5sDtcGFzcjLljwpIpuwcGN2AQ"
28877+ }
28878+ },
28879+ "user_id": "@alice_52:hs1",
28880+ "unsigned": {}
28881+ }
28882+ },
28883+ "@alice_548:hs1": {
28884+ "ALICEDEVICE548": {
28885+ "algorithms": [
28886+ "m.olm.v1.curve25519-aes-sha2",
28887+ "m.megolm.v1.aes-sha2"
28888+ ],
28889+ "device_id": "ALICEDEVICE548",
28890+ "keys": {
28891+ "curve25519:ALICEDEVICE548": "J9HDT1HJyRPRkF1vKVUECdcIth1/udMr5I1lW6XpWkY",
28892+ "ed25519:ALICEDEVICE548": "lQRBLlBgWiKIY5TtUVKsewWAD6S6Q2Z4ODHeUByRsQk"
28893+ },
28894+ "signatures": {
28895+ "@alice_548:hs1": {
28896+ "ed25519:ALICEDEVICE548": "NPxS8kuvomVVco9UxsA/j1vmOue6MbRoqfiHzbnvQ7yLyCkOwoeVKZFzmmwGUV7Uf+UhZnnc4TZmDePtjtciCw"
28897+ }
28898+ },
28899+ "user_id": "@alice_548:hs1",
28900+ "unsigned": {}
28901+ }
28902+ },
28903+ "@alice_549:hs1": {
28904+ "ALICEDEVICE549": {
28905+ "algorithms": [
28906+ "m.olm.v1.curve25519-aes-sha2",
28907+ "m.megolm.v1.aes-sha2"
28908+ ],
28909+ "device_id": "ALICEDEVICE549",
28910+ "keys": {
28911+ "curve25519:ALICEDEVICE549": "0N0rCmqlcd/FX4JfRzDTZVzDmfQ2suOmr+/Nt7YSFkE",
28912+ "ed25519:ALICEDEVICE549": "BzdmZgVJ8p2Nm7V9HxXbn9a4aYVpUMqa0FA+E1KKMVA"
28913+ },
28914+ "signatures": {
28915+ "@alice_549:hs1": {
28916+ "ed25519:ALICEDEVICE549": "Z3lIUwfcuHZmAamsHJnlj1jUldQv/gKfo8KZSe1HIQaNbyj/dVz6OOmvxYnfvRN4zvXCSzd6rPZEBzXJpeO8Dw"
28917+ }
28918+ },
28919+ "user_id": "@alice_549:hs1",
28920+ "unsigned": {}
28921+ }
28922+ },
28923+ "@alice_557:hs1": {
28924+ "ALICEDEVICE557": {
28925+ "algorithms": [
28926+ "m.olm.v1.curve25519-aes-sha2",
28927+ "m.megolm.v1.aes-sha2"
28928+ ],
28929+ "device_id": "ALICEDEVICE557",
28930+ "keys": {
28931+ "curve25519:ALICEDEVICE557": "4hbiXySldRw+onqK8/QNrKCRr04nWzrQR0Lc5V711Us",
28932+ "ed25519:ALICEDEVICE557": "rPG0aTTO7/DjlBw59mNm9Oa9CGcVed6BK/NBM+KEdaw"
28933+ },
28934+ "signatures": {
28935+ "@alice_557:hs1": {
28936+ "ed25519:ALICEDEVICE557": "3rGw4ZOxLKAejz2xF47XX7HNRGw3QxjU8nFAIPwXRAMzanuK9x/xBm330GFWH69rqPCZJ4kmiD27C3JmMWx0AA"
28937+ }
28938+ },
28939+ "user_id": "@alice_557:hs1",
28940+ "unsigned": {}
28941+ }
28942+ },
28943+ "@alice_559:hs1": {
28944+ "ALICEDEVICE559": {
28945+ "algorithms": [
28946+ "m.olm.v1.curve25519-aes-sha2",
28947+ "m.megolm.v1.aes-sha2"
28948+ ],
28949+ "device_id": "ALICEDEVICE559",
28950+ "keys": {
28951+ "curve25519:ALICEDEVICE559": "HROz0qL3w5JnKPk63Lg+uMxdq+XfZdT6q+CnFCi8eHY",
28952+ "ed25519:ALICEDEVICE559": "Q+frxy5IRbtaSgohrcuRjqZsY3pXgQbo6QYXEugg8nc"
28953+ },
28954+ "signatures": {
28955+ "@alice_559:hs1": {
28956+ "ed25519:ALICEDEVICE559": "dFNENSMBCRT9Oaze2uz2bXHGdKl7E9TLTQxJ/Faa7k6KwUrw0wUAzwmXGGZMyKVvjq/m8CVbKD1M4300d0QpDQ"
28957+ }
28958+ },
28959+ "user_id": "@alice_559:hs1",
28960+ "unsigned": {}
28961+ }
28962+ },
28963+ "@alice_581:hs1": {
28964+ "ALICEDEVICE581": {
28965+ "algorithms": [
28966+ "m.olm.v1.curve25519-aes-sha2",
28967+ "m.megolm.v1.aes-sha2"
28968+ ],
28969+ "device_id": "ALICEDEVICE581",
28970+ "keys": {
28971+ "curve25519:ALICEDEVICE581": "TabH1flmIcHPpozdaweePEKCrkVNyRiWkNqOEMhE50w",
28972+ "ed25519:ALICEDEVICE581": "XPMXHLrKK6Uxei2i5eiRP8azAqJ5AjgrQ4azF9huOAM"
28973+ },
28974+ "signatures": {
28975+ "@alice_581:hs1": {
28976+ "ed25519:ALICEDEVICE581": "Mb1LmO+Ou84IRFvlkJkkh3sKM4hY6hwZcvjwB0T20dWBjHhBYx4yRwDRsFEBkRe7L3LKAFTD2i4G41j4OH2kCA"
28977+ }
28978+ },
28979+ "user_id": "@alice_581:hs1",
28980+ "unsigned": {}
28981+ }
28982+ },
28983+ "@alice_595:hs1": {
28984+ "ALICEDEVICE595": {
28985+ "algorithms": [
28986+ "m.olm.v1.curve25519-aes-sha2",
28987+ "m.megolm.v1.aes-sha2"
28988+ ],
28989+ "device_id": "ALICEDEVICE595",
28990+ "keys": {
28991+ "curve25519:ALICEDEVICE595": "DIBRbqGH4sNACMbuQ6ck6joD4FHjleKOkUZ7DhbNC18",
28992+ "ed25519:ALICEDEVICE595": "ogo3Gmpsq4e5evaViy9P7NUqJtbjNS8CPyPV/fymlDU"
28993+ },
28994+ "signatures": {
28995+ "@alice_595:hs1": {
28996+ "ed25519:ALICEDEVICE595": "90xIZePOj+/IhCzVz71ZYIT2QN4tds7h7xmHxBNYxxUxEZDEr9pQAAPCPMjFfUqkhfBAPFw/f6RAIhS7RaQdDQ"
28997+ }
28998+ },
28999+ "user_id": "@alice_595:hs1",
29000+ "unsigned": {}
29001+ }
29002+ },
29003+ "@alice_602:hs1": {
29004+ "ALICEDEVICE602": {
29005+ "algorithms": [
29006+ "m.olm.v1.curve25519-aes-sha2",
29007+ "m.megolm.v1.aes-sha2"
29008+ ],
29009+ "device_id": "ALICEDEVICE602",
29010+ "keys": {
29011+ "curve25519:ALICEDEVICE602": "7i6ly7wNhtkYo4kAwNyabGn1rd+6QPgBrSLXC2jdXBk",
29012+ "ed25519:ALICEDEVICE602": "C2HnwJcPf1vzvBPFws9k5EDpzTEDo+tZpUJtuBpqX3E"
29013+ },
29014+ "signatures": {
29015+ "@alice_602:hs1": {
29016+ "ed25519:ALICEDEVICE602": "EH1N96KDPLaJ/GJ5HpIeNLWYqfwwmHZirj9RJ8blJwzt/Bo19m6sr8Pkf0OAsqnX++xmHDwUdpPorn0UMWrYAg"
29017+ }
29018+ },
29019+ "user_id": "@alice_602:hs1",
29020+ "unsigned": {}
29021+ }
29022+ },
29023+ "@alice_604:hs1": {
29024+ "ALICEDEVICE604": {
29025+ "algorithms": [
29026+ "m.olm.v1.curve25519-aes-sha2",
29027+ "m.megolm.v1.aes-sha2"
29028+ ],
29029+ "device_id": "ALICEDEVICE604",
29030+ "keys": {
29031+ "curve25519:ALICEDEVICE604": "WeOlGRtT1nr5ARR2jaZjbk8/CajO3f/iN9v0bU645kc",
29032+ "ed25519:ALICEDEVICE604": "kUA3jETeqURZKoWje6X3b9zOV4U0Htnx6AJXo5NGwco"
29033+ },
29034+ "signatures": {
29035+ "@alice_604:hs1": {
29036+ "ed25519:ALICEDEVICE604": "tDsHOIOOCCvbEz8dzHTyZaFFtCqtA8xpuR5dvGGUm4BL+i9cqW2londvu+iXpGySJFEmdRJZpCMpp/crSXnqDA"
29037+ }
29038+ },
29039+ "user_id": "@alice_604:hs1",
29040+ "unsigned": {}
29041+ }
29042+ },
29043+ "@alice_605:hs1": {
29044+ "ALICEDEVICE605": {
29045+ "algorithms": [
29046+ "m.olm.v1.curve25519-aes-sha2",
29047+ "m.megolm.v1.aes-sha2"
29048+ ],
29049+ "device_id": "ALICEDEVICE605",
29050+ "keys": {
29051+ "curve25519:ALICEDEVICE605": "HiHxqLJ+t+x+lyCT02BYKCixAs3uDrlt08AOpJbW8zs",
29052+ "ed25519:ALICEDEVICE605": "yCGct0+ONEiG5zMBVrtB8IiPmY0bjP7OzLByvnZyiAM"
29053+ },
29054+ "signatures": {
29055+ "@alice_605:hs1": {
29056+ "ed25519:ALICEDEVICE605": "76bXVa+/6iuCrz0z5reHXzMjkSMQhbqoQ7UtOxbfh2VXaIGJqpqlmYu4wQZeOnFhJuv/vTIhJIFQH69dvgAnCw"
29057+ }
29058+ },
29059+ "user_id": "@alice_605:hs1",
29060+ "unsigned": {}
29061+ }
29062+ },
29063+ "@alice_612:hs1": {
29064+ "ALICEDEVICE612": {
29065+ "algorithms": [
29066+ "m.olm.v1.curve25519-aes-sha2",
29067+ "m.megolm.v1.aes-sha2"
29068+ ],
29069+ "device_id": "ALICEDEVICE612",
29070+ "keys": {
29071+ "curve25519:ALICEDEVICE612": "q6szh3Ia59UQLQOXyZ1mCD7Tk4MAVJ7W6NJHdffpjGY",
29072+ "ed25519:ALICEDEVICE612": "+kqoW9zmfLKrLlI2Dp740Wr2Twgkb7jD/9iNkmEuDtg"
29073+ },
29074+ "signatures": {
29075+ "@alice_612:hs1": {
29076+ "ed25519:ALICEDEVICE612": "pOCvbEezRz3v99zwEvQNPp0i2zGc0GDc5q/F/wSVJDFaEyk2XYjwzIqXv6xC8TjrKVFc+PkgpXS9MO70QmnbBw"
29077+ }
29078+ },
29079+ "user_id": "@alice_612:hs1",
29080+ "unsigned": {}
29081+ }
29082+ },
29083+ "@alice_614:hs1": {
29084+ "ALICEDEVICE614": {
29085+ "algorithms": [
29086+ "m.olm.v1.curve25519-aes-sha2",
29087+ "m.megolm.v1.aes-sha2"
29088+ ],
29089+ "device_id": "ALICEDEVICE614",
29090+ "keys": {
29091+ "curve25519:ALICEDEVICE614": "6Mk6iVZJ7UhGT5dMX1JmanoQ9PSphIIc2bgZe/giNTc",
29092+ "ed25519:ALICEDEVICE614": "pZkSrBRnvcCzFnkQf7zI3d4NwpaFUgHKpMndbANdp7k"
29093+ },
29094+ "signatures": {
29095+ "@alice_614:hs1": {
29096+ "ed25519:ALICEDEVICE614": "ma9PHtHAXzaVN2Ox5FuB3To3KsxlMZXInGufY/snOwO4HBLpdu3MVDbBtjGC8JO6XafBmJiT7K6xV4r3I1udDg"
29097+ }
29098+ },
29099+ "user_id": "@alice_614:hs1",
29100+ "unsigned": {}
29101+ }
29102+ },
29103+ "@alice_616:hs1": {
29104+ "ALICEDEVICE616": {
29105+ "algorithms": [
29106+ "m.olm.v1.curve25519-aes-sha2",
29107+ "m.megolm.v1.aes-sha2"
29108+ ],
29109+ "device_id": "ALICEDEVICE616",
29110+ "keys": {
29111+ "curve25519:ALICEDEVICE616": "WffehD34ySEokn9B0OQysw2jPtnWYQZANctf9UlcOEs",
29112+ "ed25519:ALICEDEVICE616": "TaJP7eJZ94JyzlJB/Hn6ikqhX1MKcUwCR+V/r8URGrQ"
29113+ },
29114+ "signatures": {
29115+ "@alice_616:hs1": {
29116+ "ed25519:ALICEDEVICE616": "FFyLbmO/b2t/r1zy7pmk4kIRVEidlzY/IyY6D7/3m0vFkphDOuUhE2DQ99ZvvjbBUdlxDTLO7RNCCElKV4RsCA"
29117+ }
29118+ },
29119+ "user_id": "@alice_616:hs1",
29120+ "unsigned": {}
29121+ }
29122+ },
29123+ "@alice_637:hs1": {
29124+ "ALICEDEVICE637": {
29125+ "algorithms": [
29126+ "m.olm.v1.curve25519-aes-sha2",
29127+ "m.megolm.v1.aes-sha2"
29128+ ],
29129+ "device_id": "ALICEDEVICE637",
29130+ "keys": {
29131+ "curve25519:ALICEDEVICE637": "wyirB03MVyymkHAusvsod0rCfxkrSmq0SbFBCO8Aako",
29132+ "ed25519:ALICEDEVICE637": "JGRkYcYQSEtxUbX2Fq3vxVFFxuIkwSk4vt17FFjrbh0"
29133+ },
29134+ "signatures": {
29135+ "@alice_637:hs1": {
29136+ "ed25519:ALICEDEVICE637": "9TrfdLqb2CsNcuWLe+dExJohWUMEiOHhE1rnFooL2pPaURrDyHD6m9B/yix7N7M6X1EKFBcQG1o/xSbPuNPDDw"
29137+ }
29138+ },
29139+ "user_id": "@alice_637:hs1",
29140+ "unsigned": {}
29141+ }
29142+ },
29143+ "@alice_642:hs1": {
29144+ "ALICEDEVICE642": {
29145+ "algorithms": [
29146+ "m.olm.v1.curve25519-aes-sha2",
29147+ "m.megolm.v1.aes-sha2"
29148+ ],
29149+ "device_id": "ALICEDEVICE642",
29150+ "keys": {
29151+ "curve25519:ALICEDEVICE642": "4o56nXqXdssE7cv0YDbQNku+SjJWPpz3Bp5z4sJ9u04",
29152+ "ed25519:ALICEDEVICE642": "u43ez/6gf02P8dNCKRAyzEM2IBVjAolyFFRyGfFIW/M"
29153+ },
29154+ "signatures": {
29155+ "@alice_642:hs1": {
29156+ "ed25519:ALICEDEVICE642": "3PfJItSkM130fWrIehd2DMxG3dsSPvBq/KrR/i8BAviK6/IfjI8Wn0vFUe9l5YkJSTuspxVk2qPyzcUjY5KODQ"
29157+ }
29158+ },
29159+ "user_id": "@alice_642:hs1",
29160+ "unsigned": {}
29161+ }
29162+ },
29163+ "@alice_647:hs1": {
29164+ "ALICEDEVICE647": {
29165+ "algorithms": [
29166+ "m.olm.v1.curve25519-aes-sha2",
29167+ "m.megolm.v1.aes-sha2"
29168+ ],
29169+ "device_id": "ALICEDEVICE647",
29170+ "keys": {
29171+ "curve25519:ALICEDEVICE647": "pdyMvS6jF9andM+BCtN8BNRuYQ5sYBPyQhMPDLzxWBY",
29172+ "ed25519:ALICEDEVICE647": "n6YQlEyEMX5LAtrz3EBcGoPbT69+ROmR2aQYhY4ZXW8"
29173+ },
29174+ "signatures": {
29175+ "@alice_647:hs1": {
29176+ "ed25519:ALICEDEVICE647": "eEWaBxsDJys1LQuXmOWBC3iMidJPmYDOJINJ02MVBXhL4jgR9X5tp5kvnm5ven/TXoZcmra4bJIVI7FyEHizDA"
29177+ }
29178+ },
29179+ "user_id": "@alice_647:hs1",
29180+ "unsigned": {}
29181+ }
29182+ },
29183+ "@alice_650:hs1": {
29184+ "ALICEDEVICE650": {
29185+ "algorithms": [
29186+ "m.olm.v1.curve25519-aes-sha2",
29187+ "m.megolm.v1.aes-sha2"
29188+ ],
29189+ "device_id": "ALICEDEVICE650",
29190+ "keys": {
29191+ "curve25519:ALICEDEVICE650": "iV0LrczZWoruEgVF6pUQw0Ak1hc83h13rMMHUg5maEw",
29192+ "ed25519:ALICEDEVICE650": "Jfgfn8tKks9mTPK5GUhpWMX2IkMz+eU49vC7UuG3YAo"
29193+ },
29194+ "signatures": {
29195+ "@alice_650:hs1": {
29196+ "ed25519:ALICEDEVICE650": "t2RdfbnzDCQW3dH1+5YhYDO6p8xmuNAaHgNkLavvVVpIAA0QBPp1Xs8LaqA0/LXLE9pgJ8MkV3RCU4XbmunoDA"
29197+ }
29198+ },
29199+ "user_id": "@alice_650:hs1",
29200+ "unsigned": {}
29201+ }
29202+ },
29203+ "@alice_654:hs1": {
29204+ "ALICEDEVICE654": {
29205+ "algorithms": [
29206+ "m.olm.v1.curve25519-aes-sha2",
29207+ "m.megolm.v1.aes-sha2"
29208+ ],
29209+ "device_id": "ALICEDEVICE654",
29210+ "keys": {
29211+ "curve25519:ALICEDEVICE654": "swon3ONFSpjU0zGQ1OIIbuVSDkB0hT3vya8oh3AvAU0",
29212+ "ed25519:ALICEDEVICE654": "GoUQFYCjm2x0HhVxJFw2i8Bwr+OIftNdpi/NPWBpnfI"
29213+ },
29214+ "signatures": {
29215+ "@alice_654:hs1": {
29216+ "ed25519:ALICEDEVICE654": "96hZyMkpXsrNmveWebELfbKVBryAn5bU4/UB2Yw7EtxSyv/HcJ1FDR8hQ/Pepckk1NEorIFEgNtCDHbnxfKzDA"
29217+ }
29218+ },
29219+ "user_id": "@alice_654:hs1",
29220+ "unsigned": {}
29221+ }
29222+ },
29223+ "@alice_655:hs1": {
29224+ "ALICEDEVICE655": {
29225+ "algorithms": [
29226+ "m.olm.v1.curve25519-aes-sha2",
29227+ "m.megolm.v1.aes-sha2"
29228+ ],
29229+ "device_id": "ALICEDEVICE655",
29230+ "keys": {
29231+ "curve25519:ALICEDEVICE655": "o121taT8Jrz0eLQkLSnD19hc2Y6wKmb5tyvx7rzx8QM",
29232+ "ed25519:ALICEDEVICE655": "BHdbeMqpuJvyLVbrV8eLGIlRkic9ToekpoiEym1NEYc"
29233+ },
29234+ "signatures": {
29235+ "@alice_655:hs1": {
29236+ "ed25519:ALICEDEVICE655": "UJJEg/hfaSW1Ibw8eB1sEKxsH4NsadfcI4puTOmAffIGsTV3IWf7KBZn5S9cwk3x7RZjg48+xVKja24tT1+NBQ"
29237+ }
29238+ },
29239+ "user_id": "@alice_655:hs1",
29240+ "unsigned": {}
29241+ }
29242+ },
29243+ "@alice_657:hs1": {
29244+ "ALICEDEVICE657": {
29245+ "algorithms": [
29246+ "m.olm.v1.curve25519-aes-sha2",
29247+ "m.megolm.v1.aes-sha2"
29248+ ],
29249+ "device_id": "ALICEDEVICE657",
29250+ "keys": {
29251+ "curve25519:ALICEDEVICE657": "JXl0cX2Ff5A1lYPHIqmrrr+YNf9Yv3OfmRK98ey6N0c",
29252+ "ed25519:ALICEDEVICE657": "5bkNcK9U54+b8720QQ0FVPxlQPzydTP7hF8zeoeu+7M"
29253+ },
29254+ "signatures": {
29255+ "@alice_657:hs1": {
29256+ "ed25519:ALICEDEVICE657": "cP+P5Pa3J648erWLqP4yz16y+0OF44Z/vEeY/U1j7HuNUtZQ1RFMdRojWQvEIriAXfNTR0OZSrwndGGUdU/aCg"
29257+ }
29258+ },
29259+ "user_id": "@alice_657:hs1",
29260+ "unsigned": {}
29261+ }
29262+ },
29263+ "@alice_664:hs1": {
29264+ "ALICEDEVICE664": {
29265+ "algorithms": [
29266+ "m.olm.v1.curve25519-aes-sha2",
29267+ "m.megolm.v1.aes-sha2"
29268+ ],
29269+ "device_id": "ALICEDEVICE664",
29270+ "keys": {
29271+ "curve25519:ALICEDEVICE664": "CNgMUa03BPpJC53NFP/UxH4T9Rj5qs54mvJWHvJTVhQ",
29272+ "ed25519:ALICEDEVICE664": "qUcVRUsQ0HUHM6H/lBCCrudnQojQ1h7ZJvSuj4xbz3I"
29273+ },
29274+ "signatures": {
29275+ "@alice_664:hs1": {
29276+ "ed25519:ALICEDEVICE664": "DzaTDlQG6gHfytxbPHC5C3jFea7ZanM/yHxl7zIMcq6ywWeHRWJ1Pa7ITWLrC0e5Ys0bNW6J8ZIUKXzysWYGBA"
29277+ }
29278+ },
29279+ "user_id": "@alice_664:hs1",
29280+ "unsigned": {}
29281+ }
29282+ },
29283+ "@alice_667:hs1": {
29284+ "ALICEDEVICE667": {
29285+ "algorithms": [
29286+ "m.olm.v1.curve25519-aes-sha2",
29287+ "m.megolm.v1.aes-sha2"
29288+ ],
29289+ "device_id": "ALICEDEVICE667",
29290+ "keys": {
29291+ "curve25519:ALICEDEVICE667": "wOO68PjH0gcmLHopAtWGRSnnhIUw/KmBcesxPsatiwU",
29292+ "ed25519:ALICEDEVICE667": "nDKlYYk3eBP0EtIgW6++lmznMS6CwapkitEsZzPnHc0"
29293+ },
29294+ "signatures": {
29295+ "@alice_667:hs1": {
29296+ "ed25519:ALICEDEVICE667": "H11khbAlit9R5cGGZWHhtbvlx4s9fGRFhe9uSNW3jFoweazngRaOArTFNtv/519Xn27XRztlzSol8NK3Yv+oBQ"
29297+ }
29298+ },
29299+ "user_id": "@alice_667:hs1",
29300+ "unsigned": {}
29301+ }
29302+ },
29303+ "@alice_682:hs1": {
29304+ "ALICEDEVICE682": {
29305+ "algorithms": [
29306+ "m.olm.v1.curve25519-aes-sha2",
29307+ "m.megolm.v1.aes-sha2"
29308+ ],
29309+ "device_id": "ALICEDEVICE682",
29310+ "keys": {
29311+ "curve25519:ALICEDEVICE682": "txcqKwjn6ZresZufK0febRBzXvp4HrXpypeqVugBmhc",
29312+ "ed25519:ALICEDEVICE682": "xoJAGPhdQLPt/8XyYYKfrGC0Az2z0b3fJum09MUP8r8"
29313+ },
29314+ "signatures": {
29315+ "@alice_682:hs1": {
29316+ "ed25519:ALICEDEVICE682": "7DLo0npc4tTvZIEMsa44dVmPTIQYk+NBuXpQCxzxTlsy1nKUA+VXPikuB/yeGdTPfbB0bFW4Wc26uViyHGgXBg"
29317+ }
29318+ },
29319+ "user_id": "@alice_682:hs1",
29320+ "unsigned": {}
29321+ }
29322+ },
29323+ "@alice_686:hs1": {
29324+ "ALICEDEVICE686": {
29325+ "algorithms": [
29326+ "m.olm.v1.curve25519-aes-sha2",
29327+ "m.megolm.v1.aes-sha2"
29328+ ],
29329+ "device_id": "ALICEDEVICE686",
29330+ "keys": {
29331+ "curve25519:ALICEDEVICE686": "0FsWXIDYCUR5qFhMnzOS4Jp7vl5XAfWTPVxEWZNTSUc",
29332+ "ed25519:ALICEDEVICE686": "80fIOFqlIgWJ14y6WQ2QqFEdV0DtQTFkXYZfceCrtvY"
29333+ },
29334+ "signatures": {
29335+ "@alice_686:hs1": {
29336+ "ed25519:ALICEDEVICE686": "P6TddcgTpM6nJU9j5M+MvVpOmeCTAVJADw9yAqqTgb0R8Ddl41igslFqH5OdazdVj7HCm4W+6RubOZpVN3tlCw"
29337+ }
29338+ },
29339+ "user_id": "@alice_686:hs1",
29340+ "unsigned": {}
29341+ }
29342+ },
29343+ "@alice_687:hs1": {
29344+ "ALICEDEVICE687": {
29345+ "algorithms": [
29346+ "m.olm.v1.curve25519-aes-sha2",
29347+ "m.megolm.v1.aes-sha2"
29348+ ],
29349+ "device_id": "ALICEDEVICE687",
29350+ "keys": {
29351+ "curve25519:ALICEDEVICE687": "mnjWKm9WuUZJLUwMe+Gd+TXwi9NNbQuXwXwkjgLTGnc",
29352+ "ed25519:ALICEDEVICE687": "Jr3OF9ihwin1dETLb3C0BqdmQkpBQxH9s8bMw581Tfg"
29353+ },
29354+ "signatures": {
29355+ "@alice_687:hs1": {
29356+ "ed25519:ALICEDEVICE687": "179jsHm+9hNHB9+6K9OJkLrPslromb43qNJJCVzU2w2h7Roy5mI2Iz0f7F+cV1vkaxGApXwhyuV70eGxDPLHAw"
29357+ }
29358+ },
29359+ "user_id": "@alice_687:hs1",
29360+ "unsigned": {}
29361+ }
29362+ },
29363+ "@alice_701:hs1": {
29364+ "ALICEDEVICE701": {
29365+ "algorithms": [
29366+ "m.olm.v1.curve25519-aes-sha2",
29367+ "m.megolm.v1.aes-sha2"
29368+ ],
29369+ "device_id": "ALICEDEVICE701",
29370+ "keys": {
29371+ "curve25519:ALICEDEVICE701": "H5Wo9zE0G0hMlo/pJ8PeAIiSiJwxLXxGCfeGmAq9zW8",
29372+ "ed25519:ALICEDEVICE701": "hARQfVLCYdOAptASeLElUqsVyYJQgC8P9rPOd0A33CE"
29373+ },
29374+ "signatures": {
29375+ "@alice_701:hs1": {
29376+ "ed25519:ALICEDEVICE701": "bNN7zK1AEpvYdtdO54M+U/43FgRqh1niZNI3KUCXHGlx4kknb3OuofJXs3wLscgfYAjET7eIx3VCbq+Nng3wDA"
29377+ }
29378+ },
29379+ "user_id": "@alice_701:hs1",
29380+ "unsigned": {}
29381+ }
29382+ },
29383+ "@alice_703:hs1": {
29384+ "ALICEDEVICE703": {
29385+ "algorithms": [
29386+ "m.olm.v1.curve25519-aes-sha2",
29387+ "m.megolm.v1.aes-sha2"
29388+ ],
29389+ "device_id": "ALICEDEVICE703",
29390+ "keys": {
29391+ "curve25519:ALICEDEVICE703": "OVVTfNonPUp35M9Xq/jFJ8AK+rTgFO+aW8j52jGR/X4",
29392+ "ed25519:ALICEDEVICE703": "1mYxR35TrnKdHQyCLU+d8yXzTgR3d+HkMWfTEl7vBbQ"
29393+ },
29394+ "signatures": {
29395+ "@alice_703:hs1": {
29396+ "ed25519:ALICEDEVICE703": "gpsitSBDBfcU1cfvVD4YHOboX9GQiBTdJE4euZC4SYhj1SVGqInEpklmB47LyYkpTCAlDRZU/ecFhiDQD2M3Cw"
29397+ }
29398+ },
29399+ "user_id": "@alice_703:hs1",
29400+ "unsigned": {}
29401+ }
29402+ },
29403+ "@alice_704:hs1": {
29404+ "ALICEDEVICE704": {
29405+ "algorithms": [
29406+ "m.olm.v1.curve25519-aes-sha2",
29407+ "m.megolm.v1.aes-sha2"
29408+ ],
29409+ "device_id": "ALICEDEVICE704",
29410+ "keys": {
29411+ "curve25519:ALICEDEVICE704": "dyBbNGRAtMXspVsfMmFoB6vBpUBCCyrAuTo7l8HOqn4",
29412+ "ed25519:ALICEDEVICE704": "Z6fNdnNa04792G3+OYmh5vq8I9TItZG2i6LQE82UE9E"
29413+ },
29414+ "signatures": {
29415+ "@alice_704:hs1": {
29416+ "ed25519:ALICEDEVICE704": "tx0HsjxtKAs63nIsrt///zhaenceE/mgTJ6XVdgSjkb6DheypW5qCFBRfnNcJ4Ep4dOfn283iceEwWmp1SYiDQ"
29417+ }
29418+ },
29419+ "user_id": "@alice_704:hs1",
29420+ "unsigned": {}
29421+ }
29422+ },
29423+ "@alice_706:hs1": {
29424+ "ALICEDEVICE706": {
29425+ "algorithms": [
29426+ "m.olm.v1.curve25519-aes-sha2",
29427+ "m.megolm.v1.aes-sha2"
29428+ ],
29429+ "device_id": "ALICEDEVICE706",
29430+ "keys": {
29431+ "curve25519:ALICEDEVICE706": "8ARRjdKO4eZ6pXz6/50JHoNbwN0wxwwjDd/tc5TI5Bg",
29432+ "ed25519:ALICEDEVICE706": "KgDdbZlz6R+yFnV1bdDiu74liT1wTlKEbbn4hnj/Wrg"
29433+ },
29434+ "signatures": {
29435+ "@alice_706:hs1": {
29436+ "ed25519:ALICEDEVICE706": "GmeIwFpQn6EFcz1s5r3wJn3maiu0eANqUHAqY5BfwPDoNi3DTJcqsbpCD+BNWVNFgEB4WTbsD6AYXyOJrF4EAA"
29437+ }
29438+ },
29439+ "user_id": "@alice_706:hs1",
29440+ "unsigned": {}
29441+ }
29442+ },
29443+ "@alice_73:hs1": {
29444+ "ALICEDEVICE73": {
29445+ "algorithms": [
29446+ "m.olm.v1.curve25519-aes-sha2",
29447+ "m.megolm.v1.aes-sha2"
29448+ ],
29449+ "device_id": "ALICEDEVICE73",
29450+ "keys": {
29451+ "curve25519:ALICEDEVICE73": "KQi0atWpQeJzmIxTGrC0RVFtPa3bBSK3JWCA+9CtJVs",
29452+ "ed25519:ALICEDEVICE73": "0yancbdf3DYBeUAfIxbcaGIG4DM4NEgoAUK4J+2pxnI"
29453+ },
29454+ "signatures": {
29455+ "@alice_73:hs1": {
29456+ "ed25519:ALICEDEVICE73": "Ypd5nGvBgmoWteBqoRfMfpcDqQ74TDTtnLPAcEKv22qAMy0rBypX7BzSKR0hXdBKii6y5AN2CqTGSAouXXr5AA"
29457+ }
29458+ },
29459+ "user_id": "@alice_73:hs1",
29460+ "unsigned": {}
29461+ }
29462+ },
29463+ "@alice_741:hs1": {
29464+ "ALICEDEVICE741": {
29465+ "algorithms": [
29466+ "m.olm.v1.curve25519-aes-sha2",
29467+ "m.megolm.v1.aes-sha2"
29468+ ],
29469+ "device_id": "ALICEDEVICE741",
29470+ "keys": {
29471+ "curve25519:ALICEDEVICE741": "ed77G02/ttxpSoq9oX7jdf8l4IwjGDHOaBNt1ElH2S4",
29472+ "ed25519:ALICEDEVICE741": "8+vj/CIN0lhJWNcqNUzp6pyhzK977aPGd1clE329NLw"
29473+ },
29474+ "signatures": {
29475+ "@alice_741:hs1": {
29476+ "ed25519:ALICEDEVICE741": "yeplXlVP69ZGE8WOh5Xy8vx78LPIMWd/QUgBgv0VBrsDantawiBDzb016QvNYxO2xkl9mYQzC7eVHM349jGRDQ"
29477+ }
29478+ },
29479+ "user_id": "@alice_741:hs1",
29480+ "unsigned": {}
29481+ }
29482+ },
29483+ "@alice_742:hs1": {
29484+ "ALICEDEVICE742": {
29485+ "algorithms": [
29486+ "m.olm.v1.curve25519-aes-sha2",
29487+ "m.megolm.v1.aes-sha2"
29488+ ],
29489+ "device_id": "ALICEDEVICE742",
29490+ "keys": {
29491+ "curve25519:ALICEDEVICE742": "XLGXyAIlPbGfv4rggdxkv6YPz4LaF3UfnPkccJPcfGw",
29492+ "ed25519:ALICEDEVICE742": "U9Gran+pQlR5/HkBXLv/CsXgWn4fK8xSGfNCSs1Z9co"
29493+ },
29494+ "signatures": {
29495+ "@alice_742:hs1": {
29496+ "ed25519:ALICEDEVICE742": "W6OgBcZNjCnVLM5bn482Cz2NxBM2N2mFAb9XU5hbazcNnGjMjm42g0ofqoueNRY/1qvFQx+/571z0CzPr/AbCA"
29497+ }
29498+ },
29499+ "user_id": "@alice_742:hs1",
29500+ "unsigned": {}
29501+ }
29502+ },
29503+ "@alice_759:hs1": {
29504+ "ALICEDEVICE759": {
29505+ "algorithms": [
29506+ "m.olm.v1.curve25519-aes-sha2",
29507+ "m.megolm.v1.aes-sha2"
29508+ ],
29509+ "device_id": "ALICEDEVICE759",
29510+ "keys": {
29511+ "curve25519:ALICEDEVICE759": "iAr1itK4ZgF4AjPjh5aDBrRgu4o2+KGC2qyYTpdpZyo",
29512+ "ed25519:ALICEDEVICE759": "9tdFEu+Gd7BF4l6FouNH+iU+T5OGtYqFsmk7QJKySes"
29513+ },
29514+ "signatures": {
29515+ "@alice_759:hs1": {
29516+ "ed25519:ALICEDEVICE759": "z4+Lx/R3oIuAjyP90Hn5wFbzrfXQB0Gc3sAC2BEuQMq1nzCD9puUSk3E60B+Tbtlpd0zHeJ1OfkkI7UTzrJoAw"
29517+ }
29518+ },
29519+ "user_id": "@alice_759:hs1",
29520+ "unsigned": {}
29521+ }
29522+ },
29523+ "@alice_75:hs1": {
29524+ "ALICEDEVICE75": {
29525+ "algorithms": [
29526+ "m.olm.v1.curve25519-aes-sha2",
29527+ "m.megolm.v1.aes-sha2"
29528+ ],
29529+ "device_id": "ALICEDEVICE75",
29530+ "keys": {
29531+ "curve25519:ALICEDEVICE75": "TB7ahJegy3g8TYM5bPQj7cHI5bTIXU5csk5+P6QRJCI",
29532+ "ed25519:ALICEDEVICE75": "EDnALOvL4mST3ViUaekbehS/qWxqimqPHyi2I59KLRA"
29533+ },
29534+ "signatures": {
29535+ "@alice_75:hs1": {
29536+ "ed25519:ALICEDEVICE75": "cIym5VcO09PXed2BJQPM2pyxdR7yfFNAUPobDnykNH0iI0lG8aoO27KlSUyhsrJfVmJDQPSFnzxxBlsqfe/+Bg"
29537+ }
29538+ },
29539+ "user_id": "@alice_75:hs1",
29540+ "unsigned": {}
29541+ }
29542+ },
29543+ "@alice_762:hs1": {
29544+ "ALICEDEVICE762": {
29545+ "algorithms": [
29546+ "m.olm.v1.curve25519-aes-sha2",
29547+ "m.megolm.v1.aes-sha2"
29548+ ],
29549+ "device_id": "ALICEDEVICE762",
29550+ "keys": {
29551+ "curve25519:ALICEDEVICE762": "3Et0RLJ0FdEpbkKRZwtdbKVubsoka/q+BSDGfze3OAM",
29552+ "ed25519:ALICEDEVICE762": "dBpIe85YbAxMDIdmqyt1kpeo0vs9Xoh5o8yEQ//WkGE"
29553+ },
29554+ "signatures": {
29555+ "@alice_762:hs1": {
29556+ "ed25519:ALICEDEVICE762": "JDpFdReSA2rmpk9lcxJwxn6GRTWC28fm9osbfwIic7QY+cX31Q9OmirFmZ8Ry70zUPBT0iEKGEzsevGB8UInCg"
29557+ }
29558+ },
29559+ "user_id": "@alice_762:hs1",
29560+ "unsigned": {}
29561+ }
29562+ },
29563+ "@alice_769:hs1": {
29564+ "ALICEDEVICE769": {
29565+ "algorithms": [
29566+ "m.olm.v1.curve25519-aes-sha2",
29567+ "m.megolm.v1.aes-sha2"
29568+ ],
29569+ "device_id": "ALICEDEVICE769",
29570+ "keys": {
29571+ "curve25519:ALICEDEVICE769": "BSK6TNUG6fBvZrNn/HLZaiQzOpuyMQowQqJb+GIC0ig",
29572+ "ed25519:ALICEDEVICE769": "oQBAsQEpk4xeYK8i4+Ny4VLVGjN17MkYQedlHFSoc94"
29573+ },
29574+ "signatures": {
29575+ "@alice_769:hs1": {
29576+ "ed25519:ALICEDEVICE769": "T8JUzQ5FuVO/mpI2flHkVViEVxbHOZu++n8p6BWUyr97cR+HJOonKcOwkugu26XpIdz4uLIAvkALX8In/FoQCg"
29577+ }
29578+ },
29579+ "user_id": "@alice_769:hs1",
29580+ "unsigned": {}
29581+ }
29582+ },
29583+ "@alice_771:hs1": {
29584+ "ALICEDEVICE771": {
29585+ "algorithms": [
29586+ "m.olm.v1.curve25519-aes-sha2",
29587+ "m.megolm.v1.aes-sha2"
29588+ ],
29589+ "device_id": "ALICEDEVICE771",
29590+ "keys": {
29591+ "curve25519:ALICEDEVICE771": "BgLxcZPRfB6lN06Ko8qr1m4AvlScYCoVIggQYnEs31I",
29592+ "ed25519:ALICEDEVICE771": "VocLVjI0qCdr46SW0FNj6TpPFcgYcaB8JWEIjAmkX30"
29593+ },
29594+ "signatures": {
29595+ "@alice_771:hs1": {
29596+ "ed25519:ALICEDEVICE771": "/xbVZhDzVOIDL0Taxm2j3Pn78qkg0wCdKjwt9Bi2MQZogct1zBjtlIp9Re/GS89DKnw02hYfunierzKV6JK2BQ"
29597+ }
29598+ },
29599+ "user_id": "@alice_771:hs1",
29600+ "unsigned": {}
29601+ }
29602+ },
29603+ "@alice_775:hs1": {
29604+ "ALICEDEVICE775": {
29605+ "algorithms": [
29606+ "m.olm.v1.curve25519-aes-sha2",
29607+ "m.megolm.v1.aes-sha2"
29608+ ],
29609+ "device_id": "ALICEDEVICE775",
29610+ "keys": {
29611+ "curve25519:ALICEDEVICE775": "+qFyDk2/HBPunvuM3DJggNm9NKpeaNerxYr9Mj6/kzw",
29612+ "ed25519:ALICEDEVICE775": "OK8QR5y00EPGqnthO3FNE2qgCmtUEzJrY8Sj1392FYM"
29613+ },
29614+ "signatures": {
29615+ "@alice_775:hs1": {
29616+ "ed25519:ALICEDEVICE775": "P7pmFZQ3f949OGtB9ImMykZnDKPs3Vm//57odSrULyEuSfVj3PtjoejmFxXA9Du7FQCFJUB/HgnuC+CdHt7iCQ"
29617+ }
29618+ },
29619+ "user_id": "@alice_775:hs1",
29620+ "unsigned": {}
29621+ }
29622+ },
29623+ "@alice_786:hs1": {
29624+ "ALICEDEVICE786": {
29625+ "algorithms": [
29626+ "m.olm.v1.curve25519-aes-sha2",
29627+ "m.megolm.v1.aes-sha2"
29628+ ],
29629+ "device_id": "ALICEDEVICE786",
29630+ "keys": {
29631+ "curve25519:ALICEDEVICE786": "tT4XzMGJ/IB3dIrY58D3A7qB9guFUUh9R0XBlUTTA34",
29632+ "ed25519:ALICEDEVICE786": "38kpBDozgvXsJBXkKqJEIrWsS0ILVzE47jiWt+5aViE"
29633+ },
29634+ "signatures": {
29635+ "@alice_786:hs1": {
29636+ "ed25519:ALICEDEVICE786": "WiKwB9CeK/aDdbU9vMqHNMuUNl4ti8+QQT4vT60Fto2wjCd1e2/PnWO3X1yKOPLp5mCE4hlIaK5PGv85xYVEAQ"
29637+ }
29638+ },
29639+ "user_id": "@alice_786:hs1",
29640+ "unsigned": {}
29641+ }
29642+ },
29643+ "@alice_78:hs1": {
29644+ "ALICEDEVICE78": {
29645+ "algorithms": [
29646+ "m.olm.v1.curve25519-aes-sha2",
29647+ "m.megolm.v1.aes-sha2"
29648+ ],
29649+ "device_id": "ALICEDEVICE78",
29650+ "keys": {
29651+ "curve25519:ALICEDEVICE78": "sY4f6VgkJ8Csk49j9EnKYtA5TkXCAdikRobUC6sgXGQ",
29652+ "ed25519:ALICEDEVICE78": "06+rdqHVhYOgdtFsZtdvSRegBZjOo7q4PDY+RzBP9QQ"
29653+ },
29654+ "signatures": {
29655+ "@alice_78:hs1": {
29656+ "ed25519:ALICEDEVICE78": "cYFGbcb41vejfBBRtLvPhDoDLOnIJZX0DYF7Iw0mSa8mwszsInxvbxi/5C6IwKeMOCTl/KEuNEeidQPZa1vBDw"
29657+ }
29658+ },
29659+ "user_id": "@alice_78:hs1",
29660+ "unsigned": {}
29661+ }
29662+ },
29663+ "@alice_79:hs1": {
29664+ "ALICEDEVICE79": {
29665+ "algorithms": [
29666+ "m.olm.v1.curve25519-aes-sha2",
29667+ "m.megolm.v1.aes-sha2"
29668+ ],
29669+ "device_id": "ALICEDEVICE79",
29670+ "keys": {
29671+ "curve25519:ALICEDEVICE79": "Z0DG7jy9abyp6IoDtXLztDzucLPkORR4NIg1eTtv6AQ",
29672+ "ed25519:ALICEDEVICE79": "OIadEukwLSJlNyhsOlTmHR73V2ilOhcaT4t6crN7mqc"
29673+ },
29674+ "signatures": {
29675+ "@alice_79:hs1": {
29676+ "ed25519:ALICEDEVICE79": "13sL2+098+ijQ3MQOTLf0RfBHpndKj0DybK0SkZBkwL5b4jQ77dgdt9KOH7vON5fczTpuZJdPqJFn1Ulwg47Cw"
29677+ }
29678+ },
29679+ "user_id": "@alice_79:hs1",
29680+ "unsigned": {}
29681+ }
29682+ },
29683+ "@alice_804:hs1": {
29684+ "ALICEDEVICE804": {
29685+ "algorithms": [
29686+ "m.olm.v1.curve25519-aes-sha2",
29687+ "m.megolm.v1.aes-sha2"
29688+ ],
29689+ "device_id": "ALICEDEVICE804",
29690+ "keys": {
29691+ "curve25519:ALICEDEVICE804": "MW6TbqBRgDGXTxDx1Cv/lm4hLW+f2APfW9g79iT9RC8",
29692+ "ed25519:ALICEDEVICE804": "HgCs7WC47+8KxyP+uqG3plC1yNdcWPY4xGpTQocVkxc"
29693+ },
29694+ "signatures": {
29695+ "@alice_804:hs1": {
29696+ "ed25519:ALICEDEVICE804": "PCx58Q6OFtWCBXisuT5vNIURHy46Scx2vd4K9EWnmC9g+5mn+ZK8cbDYjP1NQ5qWgF5pgc7Ht3EEvJgXhwlPBQ"
29697+ }
29698+ },
29699+ "user_id": "@alice_804:hs1",
29700+ "unsigned": {}
29701+ }
29702+ },
29703+ "@alice_806:hs1": {
29704+ "ALICEDEVICE806": {
29705+ "algorithms": [
29706+ "m.olm.v1.curve25519-aes-sha2",
29707+ "m.megolm.v1.aes-sha2"
29708+ ],
29709+ "device_id": "ALICEDEVICE806",
29710+ "keys": {
29711+ "curve25519:ALICEDEVICE806": "PkWvap4rYvCKDJpqsI1UJi17d6uRa2LOXCk3sj6oP1k",
29712+ "ed25519:ALICEDEVICE806": "lUJpJQjma7JKzhE/WDKvzGhgBGbKuzdpjzs0ihuxdmA"
29713+ },
29714+ "signatures": {
29715+ "@alice_806:hs1": {
29716+ "ed25519:ALICEDEVICE806": "aElOw+ECqgfrj1httWv6wI0cxhqScUa+3am4SPP1DeE5FRVnZigOyZ/Q4SSFyruviPEvFzO9Y9wQkN8F/TxXDg"
29717+ }
29718+ },
29719+ "user_id": "@alice_806:hs1",
29720+ "unsigned": {}
29721+ }
29722+ },
29723+ "@alice_808:hs1": {
29724+ "ALICEDEVICE808": {
29725+ "algorithms": [
29726+ "m.olm.v1.curve25519-aes-sha2",
29727+ "m.megolm.v1.aes-sha2"
29728+ ],
29729+ "device_id": "ALICEDEVICE808",
29730+ "keys": {
29731+ "curve25519:ALICEDEVICE808": "80PBoLH5eCWNgrkOn/VWKBsGpWNXWIcb+xynlxs7kk4",
29732+ "ed25519:ALICEDEVICE808": "8735mZqeBMbJV/IlUIDJjVAZ/P4BUlJJpd7sneGDAQ0"
29733+ },
29734+ "signatures": {
29735+ "@alice_808:hs1": {
29736+ "ed25519:ALICEDEVICE808": "7esIh/zkEOEa0T39OeekuejCnlGdiHKaoyOH67gpco5JpVutVucI871kk+agJqnIXgVUw6zc5dKylaPzgJa3CA"
29737+ }
29738+ },
29739+ "user_id": "@alice_808:hs1",
29740+ "unsigned": {}
29741+ }
29742+ },
29743+ "@alice_810:hs1": {
29744+ "ALICEDEVICE810": {
29745+ "algorithms": [
29746+ "m.olm.v1.curve25519-aes-sha2",
29747+ "m.megolm.v1.aes-sha2"
29748+ ],
29749+ "device_id": "ALICEDEVICE810",
29750+ "keys": {
29751+ "curve25519:ALICEDEVICE810": "isBDRpFkhhVDZJ33LJa6+7MuYVWZX9Ty/JplVAWlV0o",
29752+ "ed25519:ALICEDEVICE810": "io7tB9e5ZTsfbTB1jnV9+DiibslG6UfXEUo6E3VhNyY"
29753+ },
29754+ "signatures": {
29755+ "@alice_810:hs1": {
29756+ "ed25519:ALICEDEVICE810": "GJxUDebmS4p4RFLynwkgxYrEgDcD1wh+a1+p72rqUcBJ0VrPYfwHapkNr6W+0nfAgevzDB0PTU3dQt8exlQ8Dg"
29757+ }
29758+ },
29759+ "user_id": "@alice_810:hs1",
29760+ "unsigned": {}
29761+ }
29762+ },
29763+ "@alice_814:hs1": {
29764+ "ALICEDEVICE814": {
29765+ "algorithms": [
29766+ "m.olm.v1.curve25519-aes-sha2",
29767+ "m.megolm.v1.aes-sha2"
29768+ ],
29769+ "device_id": "ALICEDEVICE814",
29770+ "keys": {
29771+ "curve25519:ALICEDEVICE814": "b3mazSXdBKf+8m/P765PS7u25UDZ6IaTlwUrjjhan0w",
29772+ "ed25519:ALICEDEVICE814": "D1kg53No0TLdBkAHcaRirI6mQQtPLDUFq7PTOeSVpmI"
29773+ },
29774+ "signatures": {
29775+ "@alice_814:hs1": {
29776+ "ed25519:ALICEDEVICE814": "Z11fFSLvhiqV612Yar1x7kQFk1tMFQX2jPsJB8Yue1b1YGf+rLxDaGBIzH59a+Oooasy+ddwV8YSVPP42SIbBg"
29777+ }
29778+ },
29779+ "user_id": "@alice_814:hs1",
29780+ "unsigned": {}
29781+ }
29782+ },
29783+ "@alice_819:hs1": {
29784+ "ALICEDEVICE819": {
29785+ "algorithms": [
29786+ "m.olm.v1.curve25519-aes-sha2",
29787+ "m.megolm.v1.aes-sha2"
29788+ ],
29789+ "device_id": "ALICEDEVICE819",
29790+ "keys": {
29791+ "curve25519:ALICEDEVICE819": "6B0StQPhTviai82wonnx+YcMC22nJURnlOsyvcLj72o",
29792+ "ed25519:ALICEDEVICE819": "7w+h1kruyt4SlMQf6xuT4YTjg/aNlYhIMY01xd2JlfA"
29793+ },
29794+ "signatures": {
29795+ "@alice_819:hs1": {
29796+ "ed25519:ALICEDEVICE819": "tlqzmi2ROhSXtUWEvzwGI7ELU+jxvTQ0mXlVbaApWQJGXeSmjVXq7hHjF/EpjYoIJRbq6SonhPz92k1B0AupDA"
29797+ }
29798+ },
29799+ "user_id": "@alice_819:hs1",
29800+ "unsigned": {}
29801+ }
29802+ },
29803+ "@alice_831:hs1": {
29804+ "ALICEDEVICE831": {
29805+ "algorithms": [
29806+ "m.olm.v1.curve25519-aes-sha2",
29807+ "m.megolm.v1.aes-sha2"
29808+ ],
29809+ "device_id": "ALICEDEVICE831",
29810+ "keys": {
29811+ "curve25519:ALICEDEVICE831": "f3dH4sn+UOiiOF/RcR+W5mk66eJh4HPAHW1DYRbt5zM",
29812+ "ed25519:ALICEDEVICE831": "9T6S5oykCZY7L7xR9nQtUOXYd9P2dduaaQxYcvhVwaw"
29813+ },
29814+ "signatures": {
29815+ "@alice_831:hs1": {
29816+ "ed25519:ALICEDEVICE831": "V+P+RwGgNbUTSIdYPi8dLczZ9mCPVu8RT6OI0Oz6NK+XdKn5YcC1ECQWBVnA9sfENgSi/9MiUfz/grIYEXdOBw"
29817+ }
29818+ },
29819+ "user_id": "@alice_831:hs1",
29820+ "unsigned": {}
29821+ }
29822+ },
29823+ "@alice_833:hs1": {
29824+ "ALICEDEVICE833": {
29825+ "algorithms": [
29826+ "m.olm.v1.curve25519-aes-sha2",
29827+ "m.megolm.v1.aes-sha2"
29828+ ],
29829+ "device_id": "ALICEDEVICE833",
29830+ "keys": {
29831+ "curve25519:ALICEDEVICE833": "r0P369zzaiWGTKNManNC52rrL0MdycKAybSO1LxjoGc",
29832+ "ed25519:ALICEDEVICE833": "gY9m7hdN7+QZ2XB+D3SfYT3OMe5mLrJf90z7GxJ102g"
29833+ },
29834+ "signatures": {
29835+ "@alice_833:hs1": {
29836+ "ed25519:ALICEDEVICE833": "xyrmbWACV6u98vgNFkZu6FYr9T9CWKxB/s2p/3bfHZ9ejecIBEIRcLb1c5lwUVnbICoIqvauA3vB66+vWBE9CA"
29837+ }
29838+ },
29839+ "user_id": "@alice_833:hs1",
29840+ "unsigned": {}
29841+ }
29842+ },
29843+ "@alice_838:hs1": {
29844+ "ALICEDEVICE838": {
29845+ "algorithms": [
29846+ "m.olm.v1.curve25519-aes-sha2",
29847+ "m.megolm.v1.aes-sha2"
29848+ ],
29849+ "device_id": "ALICEDEVICE838",
29850+ "keys": {
29851+ "curve25519:ALICEDEVICE838": "6crVKEPEH9wMppcAfpA+Y5YxIkYVXsKU/qh1iuxnQVQ",
29852+ "ed25519:ALICEDEVICE838": "+1MinkBW7fTKFObE+RZJlaa1AidKcRO1FNhLjNCnm6M"
29853+ },
29854+ "signatures": {
29855+ "@alice_838:hs1": {
29856+ "ed25519:ALICEDEVICE838": "Du57W4p7kPJ2Tk0cWWYDNS657u2aJBwOMxXutPtuVMV/m3HoElvJQsxEZqgaVsD04aFjmpvzoCYXSI4mXphlAg"
29857+ }
29858+ },
29859+ "user_id": "@alice_838:hs1",
29860+ "unsigned": {}
29861+ }
29862+ },
29863+ "@alice_839:hs1": {
29864+ "ALICEDEVICE839": {
29865+ "algorithms": [
29866+ "m.olm.v1.curve25519-aes-sha2",
29867+ "m.megolm.v1.aes-sha2"
29868+ ],
29869+ "device_id": "ALICEDEVICE839",
29870+ "keys": {
29871+ "curve25519:ALICEDEVICE839": "5QUf8OI55goc4ZFalPGhKklEmRRrhXbJHWbqjWk4DDE",
29872+ "ed25519:ALICEDEVICE839": "PBEAofEiFJuKtJkOnyTBuVmzEGn4h/7vdr+80qlHoLc"
29873+ },
29874+ "signatures": {
29875+ "@alice_839:hs1": {
29876+ "ed25519:ALICEDEVICE839": "t9NO5l08cOFfBRtsY9eEQW+zUVVHVDhbjdvqCsi1dBTthsp4DhyNHRmFzjLXu1KsuFEQIsv/KFlOC9XJwTsLCw"
29877+ }
29878+ },
29879+ "user_id": "@alice_839:hs1",
29880+ "unsigned": {}
29881+ }
29882+ },
29883+ "@alice_83:hs1": {
29884+ "ALICEDEVICE83": {
29885+ "algorithms": [
29886+ "m.olm.v1.curve25519-aes-sha2",
29887+ "m.megolm.v1.aes-sha2"
29888+ ],
29889+ "device_id": "ALICEDEVICE83",
29890+ "keys": {
29891+ "curve25519:ALICEDEVICE83": "B4JN/0Mu6FzIkoUVy+u9znAyuqHGz8lZOqRBqbo36mE",
29892+ "ed25519:ALICEDEVICE83": "G8y318YI3IyZqoJT4hueh3Ybfk73YeDgcs1ashJVq2Q"
29893+ },
29894+ "signatures": {
29895+ "@alice_83:hs1": {
29896+ "ed25519:ALICEDEVICE83": "fx083oe9jLK5SsZvyhY7grw0uvsriSGR7V3p0PuJ56XWrXhzmmiNwVCWW3UcK3JFhCdEIbVu1L5+clM07R4MAA"
29897+ }
29898+ },
29899+ "user_id": "@alice_83:hs1",
29900+ "unsigned": {}
29901+ }
29902+ },
29903+ "@alice_848:hs1": {
29904+ "ALICEDEVICE848": {
29905+ "algorithms": [
29906+ "m.olm.v1.curve25519-aes-sha2",
29907+ "m.megolm.v1.aes-sha2"
29908+ ],
29909+ "device_id": "ALICEDEVICE848",
29910+ "keys": {
29911+ "curve25519:ALICEDEVICE848": "zrdl7O63xmohO3TyGOcc+FPN8cXOfPFCdNry391muBk",
29912+ "ed25519:ALICEDEVICE848": "7rQEdwo5bIwlD1Nm89vBEL9MyuF2rxJk/izzGonZ5yg"
29913+ },
29914+ "signatures": {
29915+ "@alice_848:hs1": {
29916+ "ed25519:ALICEDEVICE848": "LJpZ0NvJUjKmu0Rk0kbxq5RIKi2+L1CAoRxAMqzUF+tuNWqFLzpnHjP82upsGYkUl2qCv9F6GxdBp5LFciMkAw"
29917+ }
29918+ },
29919+ "user_id": "@alice_848:hs1",
29920+ "unsigned": {}
29921+ }
29922+ },
29923+ "@alice_854:hs1": {
29924+ "ALICEDEVICE854": {
29925+ "algorithms": [
29926+ "m.olm.v1.curve25519-aes-sha2",
29927+ "m.megolm.v1.aes-sha2"
29928+ ],
29929+ "device_id": "ALICEDEVICE854",
29930+ "keys": {
29931+ "curve25519:ALICEDEVICE854": "yBvGMS4rgQE/vL6T9XAbfGdalZMWk/40fxZXrK/5Gjg",
29932+ "ed25519:ALICEDEVICE854": "Y6NrPOn86Gw2K9D+aIJFrMLaEaOWM3TC06rNW21uXUM"
29933+ },
29934+ "signatures": {
29935+ "@alice_854:hs1": {
29936+ "ed25519:ALICEDEVICE854": "TFpU7Prwmv6phuiIkbvUeDzAAUCtB0KW6mcQD9U54xMnz8KP0Oq1ec8cbXpgHgaA0fDPtsfzoM9584FpYVWTBg"
29937+ }
29938+ },
29939+ "user_id": "@alice_854:hs1",
29940+ "unsigned": {}
29941+ }
29942+ },
29943+ "@alice_860:hs1": {
29944+ "ALICEDEVICE860": {
29945+ "algorithms": [
29946+ "m.olm.v1.curve25519-aes-sha2",
29947+ "m.megolm.v1.aes-sha2"
29948+ ],
29949+ "device_id": "ALICEDEVICE860",
29950+ "keys": {
29951+ "curve25519:ALICEDEVICE860": "BzfDU4In6t25z/qUc6bWAUiR3XaJL73bOZxXlrbUM3Q",
29952+ "ed25519:ALICEDEVICE860": "JmjLJgoifkPLlb4hSQ3tXGPoOUhvlJx+ntNrOaP7DsU"
29953+ },
29954+ "signatures": {
29955+ "@alice_860:hs1": {
29956+ "ed25519:ALICEDEVICE860": "RW1FZaPiEy4yJrWPf/PQW99Mw3w0HEqcyFXTuvAP6leQ8rdMILpgbSKSAZI0O/5YmON0Y24Rs1PsZ84OpG1ICA"
29957+ }
29958+ },
29959+ "user_id": "@alice_860:hs1",
29960+ "unsigned": {}
29961+ }
29962+ },
29963+ "@alice_868:hs1": {
29964+ "ALICEDEVICE868": {
29965+ "algorithms": [
29966+ "m.olm.v1.curve25519-aes-sha2",
29967+ "m.megolm.v1.aes-sha2"
29968+ ],
29969+ "device_id": "ALICEDEVICE868",
29970+ "keys": {
29971+ "curve25519:ALICEDEVICE868": "D4QshgsktTJFUSWNZyaL7NrrKqAnCs4e4s5K0KNExgI",
29972+ "ed25519:ALICEDEVICE868": "/t92enMSDpxpVkzgBxOjX00q8sYqgZqVkRiejPdDueA"
29973+ },
29974+ "signatures": {
29975+ "@alice_868:hs1": {
29976+ "ed25519:ALICEDEVICE868": "nUTZNU6Qu7yW1zzedrp/tVdXzP+jlHrV99KDJSUVGlE9OXZ/YU0t1hkb0YJbrWOHJ5/+KpY2iMZ7R64012roDQ"
29977+ }
29978+ },
29979+ "user_id": "@alice_868:hs1",
29980+ "unsigned": {}
29981+ }
29982+ },
29983+ "@alice_879:hs1": {
29984+ "ALICEDEVICE879": {
29985+ "algorithms": [
29986+ "m.olm.v1.curve25519-aes-sha2",
29987+ "m.megolm.v1.aes-sha2"
29988+ ],
29989+ "device_id": "ALICEDEVICE879",
29990+ "keys": {
29991+ "curve25519:ALICEDEVICE879": "cOvLn5g4MiJzQgzFo55w/jiVAKxPL0IUMd4iZSbNGh8",
29992+ "ed25519:ALICEDEVICE879": "f19SraTa88eHk+YD6l4KXfRD2Z4UyeAYVHtR8n9Dbe0"
29993+ },
29994+ "signatures": {
29995+ "@alice_879:hs1": {
29996+ "ed25519:ALICEDEVICE879": "Vi3ZlYYpMJ1zEWtzMFxWUIv6bS1eqbY5CDeT064RAX7eJCYX4AMIziHb715cpVIuk8SlPwJDEQi/aoZPPKOKAg"
29997+ }
29998+ },
29999+ "user_id": "@alice_879:hs1",
30000+ "unsigned": {}
30001+ }
30002+ },
30003+ "@alice_87:hs1": {
30004+ "ALICEDEVICE87": {
30005+ "algorithms": [
30006+ "m.olm.v1.curve25519-aes-sha2",
30007+ "m.megolm.v1.aes-sha2"
30008+ ],
30009+ "device_id": "ALICEDEVICE87",
30010+ "keys": {
30011+ "curve25519:ALICEDEVICE87": "n3dXmM+bphT5Jk3F/gwZhfdqJZRUlGEW7IhaSH59IQ8",
30012+ "ed25519:ALICEDEVICE87": "fcuijADRGPBwG264xJV9m+aH+ZTToqL/oLkpvVHvggQ"
30013+ },
30014+ "signatures": {
30015+ "@alice_87:hs1": {
30016+ "ed25519:ALICEDEVICE87": "7YA6UK1D8j9ES2+lWsAkLbll8Z5ndlSANBBW/fVv0jgTaGXbGnQe+SYHnXQH5V1X6PIcKxymK0bsdLNuk7jtBw"
30017+ }
30018+ },
30019+ "user_id": "@alice_87:hs1",
30020+ "unsigned": {}
30021+ }
30022+ },
30023+ "@alice_881:hs1": {
30024+ "ALICEDEVICE881": {
30025+ "algorithms": [
30026+ "m.olm.v1.curve25519-aes-sha2",
30027+ "m.megolm.v1.aes-sha2"
30028+ ],
30029+ "device_id": "ALICEDEVICE881",
30030+ "keys": {
30031+ "curve25519:ALICEDEVICE881": "rnZ1yn30rJeF6E1ZuBc/KTZRA18rtQ9lRiZww+d6d3c",
30032+ "ed25519:ALICEDEVICE881": "EAuzlv2tDbxsm5I0OvJ2Dez+wNcqYkri255oOxpAb7U"
30033+ },
30034+ "signatures": {
30035+ "@alice_881:hs1": {
30036+ "ed25519:ALICEDEVICE881": "t39FbC/HzWVikA9Qsh7xj7YS4Gosck9K77Nblgwf5RcfFYNYdzE5xnNe39V5Qeg8utcVlcS4zEg7dOprmnFwDQ"
30037+ }
30038+ },
30039+ "user_id": "@alice_881:hs1",
30040+ "unsigned": {}
30041+ }
30042+ },
30043+ "@alice_888:hs1": {
30044+ "ALICEDEVICE888": {
30045+ "algorithms": [
30046+ "m.olm.v1.curve25519-aes-sha2",
30047+ "m.megolm.v1.aes-sha2"
30048+ ],
30049+ "device_id": "ALICEDEVICE888",
30050+ "keys": {
30051+ "curve25519:ALICEDEVICE888": "VTqVMaXTWcZoTvkc4ITQ7ErWlqEo3vxuPVHKiz2Hpj8",
30052+ "ed25519:ALICEDEVICE888": "b+Nmsf6OV4c+HX3uVpcGso09ew7QtvYnsQKWK0Z5Bj4"
30053+ },
30054+ "signatures": {
30055+ "@alice_888:hs1": {
30056+ "ed25519:ALICEDEVICE888": "t7QGn4o5jSZDiF9T18edo+R1vGhapY4NLjX61fg2X31ZNVDCd8NC0Cqr0No6VulS5O8dkprxUw6HNiVMTKOPDg"
30057+ }
30058+ },
30059+ "user_id": "@alice_888:hs1",
30060+ "unsigned": {}
30061+ }
30062+ },
30063+ "@alice_898:hs1": {
30064+ "ALICEDEVICE898": {
30065+ "algorithms": [
30066+ "m.olm.v1.curve25519-aes-sha2",
30067+ "m.megolm.v1.aes-sha2"
30068+ ],
30069+ "device_id": "ALICEDEVICE898",
30070+ "keys": {
30071+ "curve25519:ALICEDEVICE898": "gQrw66mOhsGPciBLHo+4EizdQevYafc9ROiv5WqfvEY",
30072+ "ed25519:ALICEDEVICE898": "kzNVpfhWPHXnEIMtNvO5iL0N1thXQmcebjW6nnfRwmU"
30073+ },
30074+ "signatures": {
30075+ "@alice_898:hs1": {
30076+ "ed25519:ALICEDEVICE898": "DX8qvd8ogmlfenCRRRTyXssY+lYtuR/z45OSkTGlYf/oAtyiijLUXfAAkdeOrv6N0wvoU5Epu0qX+z3BXa/DAA"
30077+ }
30078+ },
30079+ "user_id": "@alice_898:hs1",
30080+ "unsigned": {}
30081+ }
30082+ },
30083+ "@alice_8:hs1": {
30084+ "ALICEDEVICE8": {
30085+ "algorithms": [
30086+ "m.olm.v1.curve25519-aes-sha2",
30087+ "m.megolm.v1.aes-sha2"
30088+ ],
30089+ "device_id": "ALICEDEVICE8",
30090+ "keys": {
30091+ "curve25519:ALICEDEVICE8": "p2m2IItOlwMxxFHa5k+3dHUhOEKRs2BOO1KymliT/zI",
30092+ "ed25519:ALICEDEVICE8": "BdYhfbmJcMkoqNoov5Orut4LcTCyMjwLyFXQW9EJIyM"
30093+ },
30094+ "signatures": {
30095+ "@alice_8:hs1": {
30096+ "ed25519:ALICEDEVICE8": "dIAnK4BaKEKzFT7FFKR44L2fLmg1puPZS45hInXVvXR0LXalkD11/TLvAVoxLn5Q5RyUv/mWmRYdeVYZN2CVAw"
30097+ }
30098+ },
30099+ "user_id": "@alice_8:hs1",
30100+ "unsigned": {}
30101+ }
30102+ },
30103+ "@alice_913:hs1": {
30104+ "ALICEDEVICE913": {
30105+ "algorithms": [
30106+ "m.olm.v1.curve25519-aes-sha2",
30107+ "m.megolm.v1.aes-sha2"
30108+ ],
30109+ "device_id": "ALICEDEVICE913",
30110+ "keys": {
30111+ "curve25519:ALICEDEVICE913": "wD9DVY2h0AIX1Ert5brFTZRmp6uM0B/Px/H1sdfzXQY",
30112+ "ed25519:ALICEDEVICE913": "mpc4poxyG/eMJov2EY9r0SHT/Er2zXZIkH0dVHCpOAM"
30113+ },
30114+ "signatures": {
30115+ "@alice_913:hs1": {
30116+ "ed25519:ALICEDEVICE913": "OXxSh8f17ho2Bl0ZFi86aIWK3zsZ2nspzbtWCHf7ysBxnbQgu5+6G0nNr3lA9Vm9J9UMjY4wR3TzaMcxIfrxDg"
30117+ }
30118+ },
30119+ "user_id": "@alice_913:hs1",
30120+ "unsigned": {}
30121+ }
30122+ },
30123+ "@alice_915:hs1": {
30124+ "ALICEDEVICE915": {
30125+ "algorithms": [
30126+ "m.olm.v1.curve25519-aes-sha2",
30127+ "m.megolm.v1.aes-sha2"
30128+ ],
30129+ "device_id": "ALICEDEVICE915",
30130+ "keys": {
30131+ "curve25519:ALICEDEVICE915": "UAutS2WdhIueEZvEX5su5bPzCeXWlsOmWupGo8dljmA",
30132+ "ed25519:ALICEDEVICE915": "4aPzoTK0/D/YyPI94lAceVUOEEavCbINTvow3aENCXQ"
30133+ },
30134+ "signatures": {
30135+ "@alice_915:hs1": {
30136+ "ed25519:ALICEDEVICE915": "6uYP0tj+2mLx5+dpF8Po194b12LJDYrT8h9dEIrMUeRRaH9JsTuTeNRGh7urZYV7Ipx3ZdZi6WrciqNcqNIiBw"
30137+ }
30138+ },
30139+ "user_id": "@alice_915:hs1",
30140+ "unsigned": {}
30141+ }
30142+ },
30143+ "@alice_918:hs1": {
30144+ "ALICEDEVICE918": {
30145+ "algorithms": [
30146+ "m.olm.v1.curve25519-aes-sha2",
30147+ "m.megolm.v1.aes-sha2"
30148+ ],
30149+ "device_id": "ALICEDEVICE918",
30150+ "keys": {
30151+ "curve25519:ALICEDEVICE918": "5pMKM1hEjsJa8FEhQlVhvIVOdCmsn7mNyyTkp+CnaWc",
30152+ "ed25519:ALICEDEVICE918": "toe8YYxgzIDOuzKTSSQE7akS/mHHr1+1iMDu4V82Dn0"
30153+ },
30154+ "signatures": {
30155+ "@alice_918:hs1": {
30156+ "ed25519:ALICEDEVICE918": "J4LPZwtWTyCDjw2W2BzwiVwV97TN0JfuGIgKC+beo/A9mvazUmMWL9uPDcwiRtKbm1N5VC86lfjag1mE5hUGCQ"
30157+ }
30158+ },
30159+ "user_id": "@alice_918:hs1",
30160+ "unsigned": {}
30161+ }
30162+ },
30163+ "@alice_927:hs1": {
30164+ "ALICEDEVICE927": {
30165+ "algorithms": [
30166+ "m.olm.v1.curve25519-aes-sha2",
30167+ "m.megolm.v1.aes-sha2"
30168+ ],
30169+ "device_id": "ALICEDEVICE927",
30170+ "keys": {
30171+ "curve25519:ALICEDEVICE927": "I4AOTN7TQ/MxUebjws07+SWtzB9J3s0j8ZBk46ztPCM",
30172+ "ed25519:ALICEDEVICE927": "zyMQk5iZ3gg8HCIF4z63wuBytUFbgXfpVFWmws5/G5o"
30173+ },
30174+ "signatures": {
30175+ "@alice_927:hs1": {
30176+ "ed25519:ALICEDEVICE927": "RN5nzWRgk/nWyuIsFkdns/I2fz6bEHHw9dwQbbnBiueEIhEP4gnDjq6zxb0+E+Lttl4jhFSG8MogJELy7d6HAg"
30177+ }
30178+ },
30179+ "user_id": "@alice_927:hs1",
30180+ "unsigned": {}
30181+ }
30182+ },
30183+ "@alice_944:hs1": {
30184+ "ALICEDEVICE944": {
30185+ "algorithms": [
30186+ "m.olm.v1.curve25519-aes-sha2",
30187+ "m.megolm.v1.aes-sha2"
30188+ ],
30189+ "device_id": "ALICEDEVICE944",
30190+ "keys": {
30191+ "curve25519:ALICEDEVICE944": "TvLnR9SKPA/EPs7xOQ/wBvHEdMBVyjiUOBzzzzwUBW4",
30192+ "ed25519:ALICEDEVICE944": "B5sT+o1EcuqtWNuBm6dpCwRmq5Y/lFUJbpFzcyklxn8"
30193+ },
30194+ "signatures": {
30195+ "@alice_944:hs1": {
30196+ "ed25519:ALICEDEVICE944": "fVhaqAmdxr4qRp7xTLjFcNnAOwjkdH1qlwhRwE/qWTOuW/JbxDEqumd9hwdwf8ED7SyyKtQW/K/LQsbcS8MICQ"
30197+ }
30198+ },
30199+ "user_id": "@alice_944:hs1",
30200+ "unsigned": {}
30201+ }
30202+ },
30203+ "@alice_946:hs1": {
30204+ "ALICEDEVICE946": {
30205+ "algorithms": [
30206+ "m.olm.v1.curve25519-aes-sha2",
30207+ "m.megolm.v1.aes-sha2"
30208+ ],
30209+ "device_id": "ALICEDEVICE946",
30210+ "keys": {
30211+ "curve25519:ALICEDEVICE946": "ng3+GQDeWLdvBOiihzdQOlY7XZ0VQu9TPUN1z6j0uQg",
30212+ "ed25519:ALICEDEVICE946": "Nw97NShjTX89A6APE0togE08ZroMD3MUQjwD3wbBc60"
30213+ },
30214+ "signatures": {
30215+ "@alice_946:hs1": {
30216+ "ed25519:ALICEDEVICE946": "v0ur/sTT3Y5PeioCytt6S2n5R4O3ym2wqseP/jdtUFJ7ahn2yFBqleJ2oKGekNASlejt8hfY76D8hw25BmjiAQ"
30217+ }
30218+ },
30219+ "user_id": "@alice_946:hs1",
30220+ "unsigned": {}
30221+ }
30222+ },
30223+ "@alice_960:hs1": {
30224+ "ALICEDEVICE960": {
30225+ "algorithms": [
30226+ "m.olm.v1.curve25519-aes-sha2",
30227+ "m.megolm.v1.aes-sha2"
30228+ ],
30229+ "device_id": "ALICEDEVICE960",
30230+ "keys": {
30231+ "curve25519:ALICEDEVICE960": "vGVvYI6m6VwjIDmRMWR2SmZNuCDoH9AAc+0oRT2t/FY",
30232+ "ed25519:ALICEDEVICE960": "rL1go4BjD73ZuBRLHPDNfT1QM/LsT43XmwnCPmdWlx8"
30233+ },
30234+ "signatures": {
30235+ "@alice_960:hs1": {
30236+ "ed25519:ALICEDEVICE960": "6dNqnJN2jc6CHUaIyqF0I3fhi3rIkbwZLU08nbKJ/Rksu9CzpEJyPyDRGRDmLqzi8H0fyAiJsye8yUOtM6HYDQ"
30237+ }
30238+ },
30239+ "user_id": "@alice_960:hs1",
30240+ "unsigned": {}
30241+ }
30242+ },
30243+ "@alice_962:hs1": {
30244+ "ALICEDEVICE962": {
30245+ "algorithms": [
30246+ "m.olm.v1.curve25519-aes-sha2",
30247+ "m.megolm.v1.aes-sha2"
30248+ ],
30249+ "device_id": "ALICEDEVICE962",
30250+ "keys": {
30251+ "curve25519:ALICEDEVICE962": "dNur/83XOP6Fs/ilH7lkyg+JScfbZkXqsxE+FJjL0HM",
30252+ "ed25519:ALICEDEVICE962": "2EDxyYmX8+1h6cDsE7HoUjwi8hLn7yrziAV98mf9JP8"
30253+ },
30254+ "signatures": {
30255+ "@alice_962:hs1": {
30256+ "ed25519:ALICEDEVICE962": "5VXjUVWk6/arQ5Dkov9IT8nFVxz3TI6EISLa5JNMyINi9p8cBA6cU34B0UGVg2fIm9xTZyheuCEprFHEFBliDg"
30257+ }
30258+ },
30259+ "user_id": "@alice_962:hs1",
30260+ "unsigned": {}
30261+ }
30262+ },
30263+ "@alice_982:hs1": {
30264+ "ALICEDEVICE982": {
30265+ "algorithms": [
30266+ "m.olm.v1.curve25519-aes-sha2",
30267+ "m.megolm.v1.aes-sha2"
30268+ ],
30269+ "device_id": "ALICEDEVICE982",
30270+ "keys": {
30271+ "curve25519:ALICEDEVICE982": "CPDSMh9oAY3QB/jUPmk7NM7YpPi9srtw3SxFMEHLWQc",
30272+ "ed25519:ALICEDEVICE982": "y7M1KP7nyNEtt/g488KoyfQEfDSW10Xqwx1BFNbJLQI"
30273+ },
30274+ "signatures": {
30275+ "@alice_982:hs1": {
30276+ "ed25519:ALICEDEVICE982": "wudriY5V78a8EZcF/YeuQhqTNnhgAiFHnTN7PxYOw+M0ChiTCUwd9z/2DzzXSe5wtN+4O/eXow+A5vAKyRH3AQ"
30277+ }
30278+ },
30279+ "user_id": "@alice_982:hs1",
30280+ "unsigned": {}
30281+ }
30282+ },
30283+ "@alice_995:hs1": {
30284+ "ALICEDEVICE995": {
30285+ "algorithms": [
30286+ "m.olm.v1.curve25519-aes-sha2",
30287+ "m.megolm.v1.aes-sha2"
30288+ ],
30289+ "device_id": "ALICEDEVICE995",
30290+ "keys": {
30291+ "curve25519:ALICEDEVICE995": "+VZtpNhiVcBFZRy54rQoo4y6zT8eaQTGqESrns0CsGI",
30292+ "ed25519:ALICEDEVICE995": "ILINLdWl9DVj42Me9SLf0Kug7k7cR+wBTNsit23KljE"
30293+ },
30294+ "signatures": {
30295+ "@alice_995:hs1": {
30296+ "ed25519:ALICEDEVICE995": "5uKGZ3b0/JwituRGeVimn5O5tm5H/emu2Isd6TiP+Cn2nSiFoUrt6ZZhNjhvuM+2LfP2kNto+//Eky+uJ2FdBg"
30297+ }
30298+ },
30299+ "user_id": "@alice_995:hs1",
30300+ "unsigned": {}
30301+ }
30302+ },
30303+ "@alice_1001:hs1": {
30304+ "ALICEDEVICE1001": {
30305+ "algorithms": [
30306+ "m.olm.v1.curve25519-aes-sha2",
30307+ "m.megolm.v1.aes-sha2"
30308+ ],
30309+ "device_id": "ALICEDEVICE1001",
30310+ "keys": {
30311+ "curve25519:ALICEDEVICE1001": "2s7l0xfxRRYRwy9pUgUeHx0ulxKKpamzp0R98daqqWc",
30312+ "ed25519:ALICEDEVICE1001": "ES2Y8sTRzrjacvquC6C7efNCakhI88J37BLYfWIAtsE"
30313+ },
30314+ "signatures": {
30315+ "@alice_1001:hs1": {
30316+ "ed25519:ALICEDEVICE1001": "XuR5c1RCujZgYnBH8nCv8Y9bhJ4KWbWg3OdIXT+PdfQ8HyTBFjfX2vknVruEwjv5lubvzrWMWfgF1ABTHbifBg"
30317+ }
30318+ },
30319+ "user_id": "@alice_1001:hs1",
30320+ "unsigned": {}
30321+ }
30322+ },
30323+ "@alice_1013:hs1": {
30324+ "ALICEDEVICE1013": {
30325+ "algorithms": [
30326+ "m.olm.v1.curve25519-aes-sha2",
30327+ "m.megolm.v1.aes-sha2"
30328+ ],
30329+ "device_id": "ALICEDEVICE1013",
30330+ "keys": {
30331+ "curve25519:ALICEDEVICE1013": "rbLdO8at9HD3oyJ9eQLjqWJmd5VMJ8vaBT9mEiKM0l4",
30332+ "ed25519:ALICEDEVICE1013": "NbfrMc+ti+IdBDboU5bT2wWGW7I3FyUfLMGAa4BChI8"
30333+ },
30334+ "signatures": {
30335+ "@alice_1013:hs1": {
30336+ "ed25519:ALICEDEVICE1013": "12zIe8tWuJE6OINHg2KFyap3CsIGrpYNJmDhjC6nJ0ngmo3Xs9LzDaciDpvon9B7rwqbsfs0eiEzWC37yhuCBA"
30337+ }
30338+ },
30339+ "user_id": "@alice_1013:hs1",
30340+ "unsigned": {}
30341+ }
30342+ },
30343+ "@alice_1040:hs1": {
30344+ "ALICEDEVICE1040": {
30345+ "algorithms": [
30346+ "m.olm.v1.curve25519-aes-sha2",
30347+ "m.megolm.v1.aes-sha2"
30348+ ],
30349+ "device_id": "ALICEDEVICE1040",
30350+ "keys": {
30351+ "curve25519:ALICEDEVICE1040": "eIPKReE/nfNCdQaSA7icM5ANPdSGuz+f6noc7py8wmM",
30352+ "ed25519:ALICEDEVICE1040": "QxLoyElOTizqow2Gom6A6EjuggJHFvIl4XWWeTH5/vE"
30353+ },
30354+ "signatures": {
30355+ "@alice_1040:hs1": {
30356+ "ed25519:ALICEDEVICE1040": "fJ84DtPK/0o8rdF+shLjCvA79DG5CrTyvQiLQyDPXixpeVVK57pMZlEITrFPHwDR0dlKTen+k2EAvDUNrsNmDg"
30357+ }
30358+ },
30359+ "user_id": "@alice_1040:hs1",
30360+ "unsigned": {}
30361+ }
30362+ },
30363+ "@alice_1047:hs1": {
30364+ "ALICEDEVICE1047": {
30365+ "algorithms": [
30366+ "m.olm.v1.curve25519-aes-sha2",
30367+ "m.megolm.v1.aes-sha2"
30368+ ],
30369+ "device_id": "ALICEDEVICE1047",
30370+ "keys": {
30371+ "curve25519:ALICEDEVICE1047": "tXVKHVEnxQxQ3kzpvP4KpjWMxPJyoin6T/gmLtmqZ3s",
30372+ "ed25519:ALICEDEVICE1047": "ogm6PxRPjfPMETcRJ3B3XsuRiZiSs0mL/Awrb5DS4Tk"
30373+ },
30374+ "signatures": {
30375+ "@alice_1047:hs1": {
30376+ "ed25519:ALICEDEVICE1047": "3R8LFcbdNBk9k6/VZLEKFIOvv2abNUpV5mU/Ij63bRPqBBEwpsFsY5oiN0/Zef0VW8RMtNHxcdMc0xnQ0SYEBw"
30377+ }
30378+ },
30379+ "user_id": "@alice_1047:hs1",
30380+ "unsigned": {}
30381+ }
30382+ },
30383+ "@alice_1053:hs1": {
30384+ "ALICEDEVICE1053": {
30385+ "algorithms": [
30386+ "m.olm.v1.curve25519-aes-sha2",
30387+ "m.megolm.v1.aes-sha2"
30388+ ],
30389+ "device_id": "ALICEDEVICE1053",
30390+ "keys": {
30391+ "curve25519:ALICEDEVICE1053": "Rek/Wn9xvUx1sZl1xsBPUmTXoRP+HoJnOGSjivOiggA",
30392+ "ed25519:ALICEDEVICE1053": "8gNzZfp1bqmlPdl90IS+jNFMlfiPBuliVV3ak2xSudw"
30393+ },
30394+ "signatures": {
30395+ "@alice_1053:hs1": {
30396+ "ed25519:ALICEDEVICE1053": "RXyGwkA171aFA/SvAoQ7p18qi+s4WIDOTyvTXSaFl9o9MMnAkIZDdskZQbNolfdoAFcPKZHp1TUmX5odD1/gAA"
30397+ }
30398+ },
30399+ "user_id": "@alice_1053:hs1",
30400+ "unsigned": {}
30401+ }
30402+ },
30403+ "@alice_1056:hs1": {
30404+ "ALICEDEVICE1056": {
30405+ "algorithms": [
30406+ "m.olm.v1.curve25519-aes-sha2",
30407+ "m.megolm.v1.aes-sha2"
30408+ ],
30409+ "device_id": "ALICEDEVICE1056",
30410+ "keys": {
30411+ "curve25519:ALICEDEVICE1056": "uxuMm++Vr4F+/FAq+WVrkBEGXp2TRBJoSn4186nfMkM",
30412+ "ed25519:ALICEDEVICE1056": "+SVAj9w+MD2jrEvzVGBnstU5XQP919eztTFto5U+4oQ"
30413+ },
30414+ "signatures": {
30415+ "@alice_1056:hs1": {
30416+ "ed25519:ALICEDEVICE1056": "oRa3v3BeFduYc/dMZoHStc70N9vU2MhFT94J/ZpHdxkr6vNrK9cUtLdkWoX58gjiPikoBiZ4W2gbN6ZNEthhBg"
30417+ }
30418+ },
30419+ "user_id": "@alice_1056:hs1",
30420+ "unsigned": {}
30421+ }
30422+ },
30423+ "@alice_1057:hs1": {
30424+ "ALICEDEVICE1057": {
30425+ "algorithms": [
30426+ "m.olm.v1.curve25519-aes-sha2",
30427+ "m.megolm.v1.aes-sha2"
30428+ ],
30429+ "device_id": "ALICEDEVICE1057",
30430+ "keys": {
30431+ "curve25519:ALICEDEVICE1057": "tdQDe4yjMrk7yss3jgxC7sxSR3+SVHPVoLiQwGy/Tg4",
30432+ "ed25519:ALICEDEVICE1057": "Z+lUoyz4QhseSFCguIpkPvQ8qdyuPNanuInPgXHkCTA"
30433+ },
30434+ "signatures": {
30435+ "@alice_1057:hs1": {
30436+ "ed25519:ALICEDEVICE1057": "fTeQKw9yzWCwMob7La8VOxlfDK76UiBBRw3JHpdhqLHqx3n5C28ah4te5mGWYY6J3ujcJG8gYTYrRK3nuKpCDw"
30437+ }
30438+ },
30439+ "user_id": "@alice_1057:hs1",
30440+ "unsigned": {}
30441+ }
30442+ },
30443+ "@alice_1058:hs1": {
30444+ "ALICEDEVICE1058": {
30445+ "algorithms": [
30446+ "m.olm.v1.curve25519-aes-sha2",
30447+ "m.megolm.v1.aes-sha2"
30448+ ],
30449+ "device_id": "ALICEDEVICE1058",
30450+ "keys": {
30451+ "curve25519:ALICEDEVICE1058": "ST8eao1U8qRU9Nrc5WbEjOxlzYMZPZxeFJ8Ig58U7xk",
30452+ "ed25519:ALICEDEVICE1058": "5/b5p8IPZCc96VryWD6PZRce+nLHzeo1NzDkXdUHQEk"
30453+ },
30454+ "signatures": {
30455+ "@alice_1058:hs1": {
30456+ "ed25519:ALICEDEVICE1058": "9cJeeCMOXBj4NDdViXeHOqc5RLNDaOHv2G5np8AjueEVNAr4CpZMe+KaD37yBDtVd6vytMM22RS6O081OEYtCw"
30457+ }
30458+ },
30459+ "user_id": "@alice_1058:hs1",
30460+ "unsigned": {}
30461+ }
30462+ },
30463+ "@alice_105:hs1": {
30464+ "ALICEDEVICE105": {
30465+ "algorithms": [
30466+ "m.olm.v1.curve25519-aes-sha2",
30467+ "m.megolm.v1.aes-sha2"
30468+ ],
30469+ "device_id": "ALICEDEVICE105",
30470+ "keys": {
30471+ "curve25519:ALICEDEVICE105": "Lz4Zq+GqUEAUSRbUlkyK1OL7HChDDkwwQaI885CASFI",
30472+ "ed25519:ALICEDEVICE105": "xm9uuEjVIEYc2wjFBz6X77bnKZLdSgrO5ucoHVsatZ4"
30473+ },
30474+ "signatures": {
30475+ "@alice_105:hs1": {
30476+ "ed25519:ALICEDEVICE105": "gpQP4TtaWrqwxKjT4CzUTYKUZrak5yv7YkD6m+U8Vt3CC4maEXtgUyN5ZGn/31M0I2kWzNTm5WaUC1upGK+jBw"
30477+ }
30478+ },
30479+ "user_id": "@alice_105:hs1",
30480+ "unsigned": {}
30481+ }
30482+ },
30483+ "@alice_1062:hs1": {
30484+ "ALICEDEVICE1062": {
30485+ "algorithms": [
30486+ "m.olm.v1.curve25519-aes-sha2",
30487+ "m.megolm.v1.aes-sha2"
30488+ ],
30489+ "device_id": "ALICEDEVICE1062",
30490+ "keys": {
30491+ "curve25519:ALICEDEVICE1062": "+YzJZ/mVHMW/95Heg+iFF0/XGikj9dapcrBjRPpW0Sw",
30492+ "ed25519:ALICEDEVICE1062": "TWoei6iKtspy/qw/pMmwJE1zjQkDmRB/+3ry2vDvBB4"
30493+ },
30494+ "signatures": {
30495+ "@alice_1062:hs1": {
30496+ "ed25519:ALICEDEVICE1062": "wbPvYvjWmUIWixz+VroTGpFDN49yPzc1qd8CoI2Wf6iks//JMOXhjJcdJIGSD+R8YSAq5hDeEiUFRwLBohJ2AA"
30497+ }
30498+ },
30499+ "user_id": "@alice_1062:hs1",
30500+ "unsigned": {}
30501+ }
30502+ },
30503+ "@alice_1085:hs1": {
30504+ "ALICEDEVICE1085": {
30505+ "algorithms": [
30506+ "m.olm.v1.curve25519-aes-sha2",
30507+ "m.megolm.v1.aes-sha2"
30508+ ],
30509+ "device_id": "ALICEDEVICE1085",
30510+ "keys": {
30511+ "curve25519:ALICEDEVICE1085": "Cn4EyrnuB/Dq7+/a2A6zx3FlGn5qnsZOv9C1cI3/gko",
30512+ "ed25519:ALICEDEVICE1085": "BaXNODB94IME8k2eHzHD8No0cs2EK59mSY/sVxHXmSg"
30513+ },
30514+ "signatures": {
30515+ "@alice_1085:hs1": {
30516+ "ed25519:ALICEDEVICE1085": "Kz/lbcrRD4YLaxOeJvTtbhNFDqeo74DRjY6WclvPgp99lRD0JVSL8Hp8mr1KudxZWKe7K98sOkzBZU3N+wG6Bg"
30517+ }
30518+ },
30519+ "user_id": "@alice_1085:hs1",
30520+ "unsigned": {}
30521+ }
30522+ },
30523+ "@alice_1089:hs1": {
30524+ "ALICEDEVICE1089": {
30525+ "algorithms": [
30526+ "m.olm.v1.curve25519-aes-sha2",
30527+ "m.megolm.v1.aes-sha2"
30528+ ],
30529+ "device_id": "ALICEDEVICE1089",
30530+ "keys": {
30531+ "curve25519:ALICEDEVICE1089": "AXPTNRSwguRTTWAWT/mxszEVGcqO5g+MmDVbL1mQ+ic",
30532+ "ed25519:ALICEDEVICE1089": "NjV5rUSw6iKegN29xRf2hBkP8wDyy0zii2UYVuexbec"
30533+ },
30534+ "signatures": {
30535+ "@alice_1089:hs1": {
30536+ "ed25519:ALICEDEVICE1089": "4+uq1kz0jdqpZPEDnd9VkWJPZR6uFvl33bqObQu0QpwCPPjjlCAHJ9wt07AIESCd3AE/4O92Pj4iskNjq1tEBw"
30537+ }
30538+ },
30539+ "user_id": "@alice_1089:hs1",
30540+ "unsigned": {}
30541+ }
30542+ },
30543+ "@alice_109:hs1": {
30544+ "ALICEDEVICE109": {
30545+ "algorithms": [
30546+ "m.olm.v1.curve25519-aes-sha2",
30547+ "m.megolm.v1.aes-sha2"
30548+ ],
30549+ "device_id": "ALICEDEVICE109",
30550+ "keys": {
30551+ "curve25519:ALICEDEVICE109": "2FYilURFWxhNFljY5WVdBQovkEK47m9bhlZ9xgnfnCo",
30552+ "ed25519:ALICEDEVICE109": "Nj3rQwy8QRVagBi2fLOjSFhvaLg5ZrlwJrjR646BaWk"
30553+ },
30554+ "signatures": {
30555+ "@alice_109:hs1": {
30556+ "ed25519:ALICEDEVICE109": "AFKsrcSOi/qQpD1sXxlDFMt/6rCBTHpqYRylovA2MjbMAKypgq9WrNYyF8awuJey7nZAla0ewy2bToDomdgTAA"
30557+ }
30558+ },
30559+ "user_id": "@alice_109:hs1",
30560+ "unsigned": {}
30561+ }
30562+ },
30563+ "@alice_10:hs1": {
30564+ "ALICEDEVICE10": {
30565+ "algorithms": [
30566+ "m.olm.v1.curve25519-aes-sha2",
30567+ "m.megolm.v1.aes-sha2"
30568+ ],
30569+ "device_id": "ALICEDEVICE10",
30570+ "keys": {
30571+ "curve25519:ALICEDEVICE10": "KKOOmM0lP7lIRy0sl0aMuHdO2w5tfkbPzLxAS4n0rAQ",
30572+ "ed25519:ALICEDEVICE10": "qBydsHM1eyZHe+W9JscisWA8yoRhJPN4lJdx0tQCb7w"
30573+ },
30574+ "signatures": {
30575+ "@alice_10:hs1": {
30576+ "ed25519:ALICEDEVICE10": "Te9E8vFadlTNz4yigGhjo1LcblU8EXiklNhS0v7E/rC7x2YJA68MIKeg9I9BWHlnmjqF9yWzkmwzM4iCbyPMCg"
30577+ }
30578+ },
30579+ "user_id": "@alice_10:hs1",
30580+ "unsigned": {}
30581+ }
30582+ },
30583+ "@alice_1100:hs1": {
30584+ "ALICEDEVICE1100": {
30585+ "algorithms": [
30586+ "m.olm.v1.curve25519-aes-sha2",
30587+ "m.megolm.v1.aes-sha2"
30588+ ],
30589+ "device_id": "ALICEDEVICE1100",
30590+ "keys": {
30591+ "curve25519:ALICEDEVICE1100": "oR6cSefRs3dEdF5KxC2D55KXe1/7JBJOfQmxkAlVGy4",
30592+ "ed25519:ALICEDEVICE1100": "1LV+I97ll7DhJlsNpGWdWobzPoCTyj1vTOItAd9RUUw"
30593+ },
30594+ "signatures": {
30595+ "@alice_1100:hs1": {
30596+ "ed25519:ALICEDEVICE1100": "D0lKTQuUFEEv3CPYosA+7Gr9VxukhYihUIZsNoiGJGxQTcxx3Hltx2oZ14B02CMAAP/PLBhlK9fcs/wTAZpdBA"
30597+ }
30598+ },
30599+ "user_id": "@alice_1100:hs1",
30600+ "unsigned": {}
30601+ }
30602+ },
30603+ "@alice_1108:hs1": {
30604+ "ALICEDEVICE1108": {
30605+ "algorithms": [
30606+ "m.olm.v1.curve25519-aes-sha2",
30607+ "m.megolm.v1.aes-sha2"
30608+ ],
30609+ "device_id": "ALICEDEVICE1108",
30610+ "keys": {
30611+ "curve25519:ALICEDEVICE1108": "rTnu8LlDn6OrgsrFpAAfs/rSQ/WW4gKzOgneCgA2vDQ",
30612+ "ed25519:ALICEDEVICE1108": "OpckWjjwDoCwgF+j4JElirs3rc5gxxu9+VgEfCOhJ/4"
30613+ },
30614+ "signatures": {
30615+ "@alice_1108:hs1": {
30616+ "ed25519:ALICEDEVICE1108": "LlozxLvSDW4tl35NNuvCptJD4dtR7mscuTFZfjA4ROvqwlT3YBmEXn2oUINd2+L9mvk5kRkUh/1H/hlnfVBqAQ"
30617+ }
30618+ },
30619+ "user_id": "@alice_1108:hs1",
30620+ "unsigned": {}
30621+ }
30622+ },
30623+ "@alice_1109:hs1": {
30624+ "ALICEDEVICE1109": {
30625+ "algorithms": [
30626+ "m.olm.v1.curve25519-aes-sha2",
30627+ "m.megolm.v1.aes-sha2"
30628+ ],
30629+ "device_id": "ALICEDEVICE1109",
30630+ "keys": {
30631+ "curve25519:ALICEDEVICE1109": "AVyIWvoALFv6/Ybjs+ICt/VOZDDZeDsTstrh1X9xs2Q",
30632+ "ed25519:ALICEDEVICE1109": "as31Ql9Z7NvifrZbZGPuSFsBtmzb7VWp3noCnwAdz3U"
30633+ },
30634+ "signatures": {
30635+ "@alice_1109:hs1": {
30636+ "ed25519:ALICEDEVICE1109": "R+sY8ISUJAw+0FmuduVfRSe/uyO8VuAa29c1Bph7oZgjxtrqZOYXUxxpJdL5cUuzjThe2m8hl9SXaNHRTsuNDQ"
30637+ }
30638+ },
30639+ "user_id": "@alice_1109:hs1",
30640+ "unsigned": {}
30641+ }
30642+ },
30643+ "@alice_1118:hs1": {
30644+ "ALICEDEVICE1118": {
30645+ "algorithms": [
30646+ "m.olm.v1.curve25519-aes-sha2",
30647+ "m.megolm.v1.aes-sha2"
30648+ ],
30649+ "device_id": "ALICEDEVICE1118",
30650+ "keys": {
30651+ "curve25519:ALICEDEVICE1118": "INJjFQ7jzPa55pIZPxp/xCdkSEGi5/ZUrbv8TSwL0ks",
30652+ "ed25519:ALICEDEVICE1118": "xHUWIoTZj44kMzd6C1z2A0twYYnx0mm21BAoY7/Yn54"
30653+ },
30654+ "signatures": {
30655+ "@alice_1118:hs1": {
30656+ "ed25519:ALICEDEVICE1118": "qOJP70k6iixs9k+wXyAQsSex5EU3OBMDxlhXPaL6LHJP3CxwHVFe0veFhj5NYvADYEgj8y23YF+TK8Yxv1huAQ"
30657+ }
30658+ },
30659+ "user_id": "@alice_1118:hs1",
30660+ "unsigned": {}
30661+ }
30662+ },
30663+ "@alice_1120:hs1": {
30664+ "ALICEDEVICE1120": {
30665+ "algorithms": [
30666+ "m.olm.v1.curve25519-aes-sha2",
30667+ "m.megolm.v1.aes-sha2"
30668+ ],
30669+ "device_id": "ALICEDEVICE1120",
30670+ "keys": {
30671+ "curve25519:ALICEDEVICE1120": "aj69CmiLfWwuNOmSusLr8DzdrsEUOKAin6DP9cFDcD4",
30672+ "ed25519:ALICEDEVICE1120": "Cn7IFM/FHAmzRLy24tt7zjd9iM6xGjYgaIkISem8T6A"
30673+ },
30674+ "signatures": {
30675+ "@alice_1120:hs1": {
30676+ "ed25519:ALICEDEVICE1120": "9f6NiOx13zVsjguBvrmgpMP8UJH5uH3azhzKNudxd58R23tVcU7dLVUt/vnMZOH2kdFOM+cs/Dlvq9Q3kZADBw"
30677+ }
30678+ },
30679+ "user_id": "@alice_1120:hs1",
30680+ "unsigned": {}
30681+ }
30682+ },
30683+ "@alice_1121:hs1": {
30684+ "ALICEDEVICE1121": {
30685+ "algorithms": [
30686+ "m.olm.v1.curve25519-aes-sha2",
30687+ "m.megolm.v1.aes-sha2"
30688+ ],
30689+ "device_id": "ALICEDEVICE1121",
30690+ "keys": {
30691+ "curve25519:ALICEDEVICE1121": "FRs13Q6sxUqr/ESE7Q/F1TNb3yJMHMhbS7hhikiFeU0",
30692+ "ed25519:ALICEDEVICE1121": "jVuwSahdmIJv+p+NVdywRibeLiOFwLsnjv4gppPUoN0"
30693+ },
30694+ "signatures": {
30695+ "@alice_1121:hs1": {
30696+ "ed25519:ALICEDEVICE1121": "oLECbXaF07g4QaYPww9y/XfSIPqXJx6+AOXE8TcOA3TpLf0iUF6vQcyS3hwo69DSAb36AvS/s7T6ki59jtlNCQ"
30697+ }
30698+ },
30699+ "user_id": "@alice_1121:hs1",
30700+ "unsigned": {}
30701+ }
30702+ },
30703+ "@alice_1126:hs1": {
30704+ "ALICEDEVICE1126": {
30705+ "algorithms": [
30706+ "m.olm.v1.curve25519-aes-sha2",
30707+ "m.megolm.v1.aes-sha2"
30708+ ],
30709+ "device_id": "ALICEDEVICE1126",
30710+ "keys": {
30711+ "curve25519:ALICEDEVICE1126": "K4keOL4jBBk+3TF47Eh/bfPQ7l4uKlObUdN+P2HdaCU",
30712+ "ed25519:ALICEDEVICE1126": "vQccdKV+4QAWiRWuOQiod//TSEiQBqz/UKeolC6H3CY"
30713+ },
30714+ "signatures": {
30715+ "@alice_1126:hs1": {
30716+ "ed25519:ALICEDEVICE1126": "WUNGGu0ACa4k0aNHTp+L+abBm7vNdt5Uthc4DAzKQNEUz6kZSYO+Ku4YmlDo+zIbzc4MJfwnhSuyYPS/tTzuCA"
30717+ }
30718+ },
30719+ "user_id": "@alice_1126:hs1",
30720+ "unsigned": {}
30721+ }
30722+ },
30723+ "@alice_1130:hs1": {
30724+ "ALICEDEVICE1130": {
30725+ "algorithms": [
30726+ "m.olm.v1.curve25519-aes-sha2",
30727+ "m.megolm.v1.aes-sha2"
30728+ ],
30729+ "device_id": "ALICEDEVICE1130",
30730+ "keys": {
30731+ "curve25519:ALICEDEVICE1130": "iyopTReRah23RLZFyga0bNhitDC+EUC3n9tepKyK8S0",
30732+ "ed25519:ALICEDEVICE1130": "Yd98p/15dtbiJKrPmLZXJgdkmfP7NisLhC8SdyiTRtI"
30733+ },
30734+ "signatures": {
30735+ "@alice_1130:hs1": {
30736+ "ed25519:ALICEDEVICE1130": "AYTNjt13pMK/2Ub6bRuxAskBkCjioc+1b2iekFJQx6VghfQL/LaQHVCmVvKLjKGFRPX39pAA57YC5tyxY6POCw"
30737+ }
30738+ },
30739+ "user_id": "@alice_1130:hs1",
30740+ "unsigned": {}
30741+ }
30742+ },
30743+ "@alice_1134:hs1": {
30744+ "ALICEDEVICE1134": {
30745+ "algorithms": [
30746+ "m.olm.v1.curve25519-aes-sha2",
30747+ "m.megolm.v1.aes-sha2"
30748+ ],
30749+ "device_id": "ALICEDEVICE1134",
30750+ "keys": {
30751+ "curve25519:ALICEDEVICE1134": "Jb9nzVmizFFBe245oxP2yDXRoeet9SD43wCXvf1WKjs",
30752+ "ed25519:ALICEDEVICE1134": "Mq3oPZrPg2B3i9XzRaJ0Ff4w6r7aYSSom/L+l5tBXrU"
30753+ },
30754+ "signatures": {
30755+ "@alice_1134:hs1": {
30756+ "ed25519:ALICEDEVICE1134": "fvkGtKhMQKnIh5Oy0I5RYWziIns+7ac/CawzicK2Z1FohsAjTAVayiX924AtAkgWLYIE4uvtHMvhJv/gMuNTCQ"
30757+ }
30758+ },
30759+ "user_id": "@alice_1134:hs1",
30760+ "unsigned": {}
30761+ }
30762+ },
30763+ "@alice_1145:hs1": {
30764+ "ALICEDEVICE1145": {
30765+ "algorithms": [
30766+ "m.olm.v1.curve25519-aes-sha2",
30767+ "m.megolm.v1.aes-sha2"
30768+ ],
30769+ "device_id": "ALICEDEVICE1145",
30770+ "keys": {
30771+ "curve25519:ALICEDEVICE1145": "un5BPQr4Ih4WOExD5smzkFnwfw68o8DrFw0Dw9smuHY",
30772+ "ed25519:ALICEDEVICE1145": "EHLEGcVG2oHYp97A3Nfl15zQkpJAhglS6oGV259lX3I"
30773+ },
30774+ "signatures": {
30775+ "@alice_1145:hs1": {
30776+ "ed25519:ALICEDEVICE1145": "83ZM06yoE1rvHY2Mr7RT7MzBlrLUaT5cmMfeRl3+aKOZNC+nxBGTXKr+ypWY/gBUxvnVlMMytoOXJGC1BxUeDQ"
30777+ }
30778+ },
30779+ "user_id": "@alice_1145:hs1",
30780+ "unsigned": {}
30781+ }
30782+ },
30783+ "@alice_1146:hs1": {
30784+ "ALICEDEVICE1146": {
30785+ "algorithms": [
30786+ "m.olm.v1.curve25519-aes-sha2",
30787+ "m.megolm.v1.aes-sha2"
30788+ ],
30789+ "device_id": "ALICEDEVICE1146",
30790+ "keys": {
30791+ "curve25519:ALICEDEVICE1146": "8coQJwP82I+POXJadMEzHpENFouL0sEEMDIizyrAmV4",
30792+ "ed25519:ALICEDEVICE1146": "b1QRtZwrQPrEsmMOEuy8CMbxGW+W8FKPe4uytOXtUgw"
30793+ },
30794+ "signatures": {
30795+ "@alice_1146:hs1": {
30796+ "ed25519:ALICEDEVICE1146": "l2JSQk7F+XpQYsBMCrzLVa4juPRJVM9PYFgAdH/XYiYtkuAFEqkRl31TrTY04RUT8p6ZwORepf8kwqQLPCyrAg"
30797+ }
30798+ },
30799+ "user_id": "@alice_1146:hs1",
30800+ "unsigned": {}
30801+ }
30802+ },
30803+ "@alice_1147:hs1": {
30804+ "ALICEDEVICE1147": {
30805+ "algorithms": [
30806+ "m.olm.v1.curve25519-aes-sha2",
30807+ "m.megolm.v1.aes-sha2"
30808+ ],
30809+ "device_id": "ALICEDEVICE1147",
30810+ "keys": {
30811+ "curve25519:ALICEDEVICE1147": "RoMq6+sitxhajp2lAmXIX0AQhjrdLKyv/ZCOqh5iLwg",
30812+ "ed25519:ALICEDEVICE1147": "IsTUiw/zaMKFWSV3Hr9Xt1V9iDBGS4slKRI0pdNAelg"
30813+ },
30814+ "signatures": {
30815+ "@alice_1147:hs1": {
30816+ "ed25519:ALICEDEVICE1147": "Zx2NurdEv3ZIcML+WOF9LKjIn1ERXFWQQqzrvxvZv9Bvn63P1o3BZMHNkeQCFkggw3wXAZlvaD0b+AMh00N5CA"
30817+ }
30818+ },
30819+ "user_id": "@alice_1147:hs1",
30820+ "unsigned": {}
30821+ }
30822+ },
30823+ "@alice_1151:hs1": {
30824+ "ALICEDEVICE1151": {
30825+ "algorithms": [
30826+ "m.olm.v1.curve25519-aes-sha2",
30827+ "m.megolm.v1.aes-sha2"
30828+ ],
30829+ "device_id": "ALICEDEVICE1151",
30830+ "keys": {
30831+ "curve25519:ALICEDEVICE1151": "FQQgOl9ciV7NKGKNrl9pT9qVqizY86XuqY7fDywbvT0",
30832+ "ed25519:ALICEDEVICE1151": "Ql/Q9yCdHyP6GJooHEZylfSjJ3eEQX+sEM5T0cwQzI4"
30833+ },
30834+ "signatures": {
30835+ "@alice_1151:hs1": {
30836+ "ed25519:ALICEDEVICE1151": "bXH3dHf77SdJKADc5ViWRGrtseparY1hDWu+lRpIqMznNcrqTahSoTDvLl2q2wTt0mZFVQcscecCcZOWg4XSDA"
30837+ }
30838+ },
30839+ "user_id": "@alice_1151:hs1",
30840+ "unsigned": {}
30841+ }
30842+ },
30843+ "@alice_1154:hs1": {
30844+ "ALICEDEVICE1154": {
30845+ "algorithms": [
30846+ "m.olm.v1.curve25519-aes-sha2",
30847+ "m.megolm.v1.aes-sha2"
30848+ ],
30849+ "device_id": "ALICEDEVICE1154",
30850+ "keys": {
30851+ "curve25519:ALICEDEVICE1154": "BIwBWDcFlyPnSLiJH2q2O8Mt70kcpYBkM41SRerWQUE",
30852+ "ed25519:ALICEDEVICE1154": "b8gzdK3swqaS9BQ9rHIsuBZdMmzo+pm1UPyvez+MLT4"
30853+ },
30854+ "signatures": {
30855+ "@alice_1154:hs1": {
30856+ "ed25519:ALICEDEVICE1154": "9o+EHfXAetyHTnnYdqU6KPuuXQ+5Isc2UAqfCoQLhFKdCswB62Hp5jlS3Wq2DaFGPXUTSSiGE9NWWQphArAkBQ"
30857+ }
30858+ },
30859+ "user_id": "@alice_1154:hs1",
30860+ "unsigned": {}
30861+ }
30862+ },
30863+ "@alice_1159:hs1": {
30864+ "ALICEDEVICE1159": {
30865+ "algorithms": [
30866+ "m.olm.v1.curve25519-aes-sha2",
30867+ "m.megolm.v1.aes-sha2"
30868+ ],
30869+ "device_id": "ALICEDEVICE1159",
30870+ "keys": {
30871+ "curve25519:ALICEDEVICE1159": "aV1C/5MFcAOQeCyUifUkh9Oqq/shPZ4o68F01IxecVg",
30872+ "ed25519:ALICEDEVICE1159": "pGokBJtzm1P12yhNqMDWvw+u+s8yzHQnpr9+XBT5fEs"
30873+ },
30874+ "signatures": {
30875+ "@alice_1159:hs1": {
30876+ "ed25519:ALICEDEVICE1159": "cmaedsP7I9yi46mniVk/igOX4P6Mgv3USjEP5z5SnjjuChj7Od30rCSBK2YghqrFHeyvV7qAs5XlZF3QW1OZDg"
30877+ }
30878+ },
30879+ "user_id": "@alice_1159:hs1",
30880+ "unsigned": {}
30881+ }
30882+ },
30883+ "@alice_115:hs1": {
30884+ "ALICEDEVICE115": {
30885+ "algorithms": [
30886+ "m.olm.v1.curve25519-aes-sha2",
30887+ "m.megolm.v1.aes-sha2"
30888+ ],
30889+ "device_id": "ALICEDEVICE115",
30890+ "keys": {
30891+ "curve25519:ALICEDEVICE115": "ViX0+DKr6RQBh5dPSGhDenBAXqX92YK2Wpyu5kjFrgI",
30892+ "ed25519:ALICEDEVICE115": "FnhQyVAdC7qb77IvLyeU6SDa87z2laMQwz861LgUKPc"
30893+ },
30894+ "signatures": {
30895+ "@alice_115:hs1": {
30896+ "ed25519:ALICEDEVICE115": "/yPtVKAxHfJBY25gVLFe54k+Fmp7dkhdTn6qyVUUm1VCvOEnCY/ZEwf1Iqu2c7zIuRwZ62AwEwIhiG+HQsxNCw"
30897+ }
30898+ },
30899+ "user_id": "@alice_115:hs1",
30900+ "unsigned": {}
30901+ }
30902+ },
30903+ "@alice_1173:hs1": {
30904+ "ALICEDEVICE1173": {
30905+ "algorithms": [
30906+ "m.olm.v1.curve25519-aes-sha2",
30907+ "m.megolm.v1.aes-sha2"
30908+ ],
30909+ "device_id": "ALICEDEVICE1173",
30910+ "keys": {
30911+ "curve25519:ALICEDEVICE1173": "OdWzfwG0AGFNgyVcZPzR1ZVkJ+5AXF/g4c48UNVWHzc",
30912+ "ed25519:ALICEDEVICE1173": "2I6GLiaLOmtfHmUAN0qKDINDuKW9GYpbCmNjwKxKkkw"
30913+ },
30914+ "signatures": {
30915+ "@alice_1173:hs1": {
30916+ "ed25519:ALICEDEVICE1173": "ZSPWt+WXZcm0T6J0r0ZKzxsq2ET0rXXFl1DwZZRqwzQaCnG8c7bPmzaEuD6lbh69CgvzOdfyeL2tsVrg9GOFCw"
30917+ }
30918+ },
30919+ "user_id": "@alice_1173:hs1",
30920+ "unsigned": {}
30921+ }
30922+ },
30923+ "@alice_1193:hs1": {
30924+ "ALICEDEVICE1193": {
30925+ "algorithms": [
30926+ "m.olm.v1.curve25519-aes-sha2",
30927+ "m.megolm.v1.aes-sha2"
30928+ ],
30929+ "device_id": "ALICEDEVICE1193",
30930+ "keys": {
30931+ "curve25519:ALICEDEVICE1193": "QsQyC2ZRjKdjVLIJOnk82nQ063pZCL91e9sHv9lDpFo",
30932+ "ed25519:ALICEDEVICE1193": "5n/G0h4+t5RiMmoPvlvrG04gXwSn0Gv1trjX66HnqnU"
30933+ },
30934+ "signatures": {
30935+ "@alice_1193:hs1": {
30936+ "ed25519:ALICEDEVICE1193": "bZQVzd58Uyk0O5YQtdxXlUtouS7QPHcH2J04+LP6icJUwCdtBn063jXxGhDtSskbo2bVN00HRLwQ0lTkC1F7Aw"
30937+ }
30938+ },
30939+ "user_id": "@alice_1193:hs1",
30940+ "unsigned": {}
30941+ }
30942+ },
30943+ "@alice_1201:hs1": {
30944+ "ALICEDEVICE1201": {
30945+ "algorithms": [
30946+ "m.olm.v1.curve25519-aes-sha2",
30947+ "m.megolm.v1.aes-sha2"
30948+ ],
30949+ "device_id": "ALICEDEVICE1201",
30950+ "keys": {
30951+ "curve25519:ALICEDEVICE1201": "h5Csohht/mi4LN2WAkdzn1tFuKkyd9UuIWLdIooqzBM",
30952+ "ed25519:ALICEDEVICE1201": "5VWJ2OU6ye9m84J7Y6oXedEaytmXyMXVvt1Wavf/TxY"
30953+ },
30954+ "signatures": {
30955+ "@alice_1201:hs1": {
30956+ "ed25519:ALICEDEVICE1201": "rH/w1XZLIsIEqJ9js4GEySzjyR3+tF5tRJHRlyECjtY/ephQmwxKZavtc7IFXWwjR6ayOKp+nCagP1YQKdp9AA"
30957+ }
30958+ },
30959+ "user_id": "@alice_1201:hs1",
30960+ "unsigned": {}
30961+ }
30962+ },
30963+ "@alice_1202:hs1": {
30964+ "ALICEDEVICE1202": {
30965+ "algorithms": [
30966+ "m.olm.v1.curve25519-aes-sha2",
30967+ "m.megolm.v1.aes-sha2"
30968+ ],
30969+ "device_id": "ALICEDEVICE1202",
30970+ "keys": {
30971+ "curve25519:ALICEDEVICE1202": "91tcEO+kUnTPxLb0IyAtyu+WnafE9xDkwx+9TWS9Jyo",
30972+ "ed25519:ALICEDEVICE1202": "rPJnxKhujMYlHYuOSYyaTBEp7Qn8PrjdNUbCMXl3qoE"
30973+ },
30974+ "signatures": {
30975+ "@alice_1202:hs1": {
30976+ "ed25519:ALICEDEVICE1202": "5eiA12CXGcHKVx491SjXvkwdykFasdOWljgVZel3UudxgKDm26JLNQIUJWxVhv8Nbc5qQByCZr1vJpTdjjv2BQ"
30977+ }
30978+ },
30979+ "user_id": "@alice_1202:hs1",
30980+ "unsigned": {}
30981+ }
30982+ },
30983+ "@alice_1203:hs1": {
30984+ "ALICEDEVICE1203": {
30985+ "algorithms": [
30986+ "m.olm.v1.curve25519-aes-sha2",
30987+ "m.megolm.v1.aes-sha2"
30988+ ],
30989+ "device_id": "ALICEDEVICE1203",
30990+ "keys": {
30991+ "curve25519:ALICEDEVICE1203": "jqDsEUCgMoZm0oPznmHuNogSs8VOrKnpzi7ntejIjRA",
30992+ "ed25519:ALICEDEVICE1203": "O7bI3DbR03NhZaQIoAtWp2W0bTJA0tnk5dJVTio3KeU"
30993+ },
30994+ "signatures": {
30995+ "@alice_1203:hs1": {
30996+ "ed25519:ALICEDEVICE1203": "iwxB8KFwsNnz0jQ3EATTh08ak5NYHc9k33yrtPEeN1CMEfF4Oas5G9yLgBuOtrUzKdWGYPj9kJz4Azv5e+xbDg"
30997+ }
30998+ },
30999+ "user_id": "@alice_1203:hs1",
31000+ "unsigned": {}
31001+ }
31002+ },
31003+ "@alice_1212:hs1": {
31004+ "ALICEDEVICE1212": {
31005+ "algorithms": [
31006+ "m.olm.v1.curve25519-aes-sha2",
31007+ "m.megolm.v1.aes-sha2"
31008+ ],
31009+ "device_id": "ALICEDEVICE1212",
31010+ "keys": {
31011+ "curve25519:ALICEDEVICE1212": "q5u2PSpFAYC4vsQR+G1EV+Uo+K1ALpOzaHQqIBceslM",
31012+ "ed25519:ALICEDEVICE1212": "/mOkwamjcNNbzl3nAfjuNm8cnPKgWfXWsCcEgA+rFNs"
31013+ },
31014+ "signatures": {
31015+ "@alice_1212:hs1": {
31016+ "ed25519:ALICEDEVICE1212": "IEO37Na/6xdQqm5dUzoGrnLmnAtwZ3FDeNBUWdOkcVW3mVfT43aHFejn9/mjL7O8OhdRHgEuKw6QQp9VG+ceAw"
31017+ }
31018+ },
31019+ "user_id": "@alice_1212:hs1",
31020+ "unsigned": {}
31021+ }
31022+ },
31023+ "@alice_121:hs1": {
31024+ "ALICEDEVICE121": {
31025+ "algorithms": [
31026+ "m.olm.v1.curve25519-aes-sha2",
31027+ "m.megolm.v1.aes-sha2"
31028+ ],
31029+ "device_id": "ALICEDEVICE121",
31030+ "keys": {
31031+ "curve25519:ALICEDEVICE121": "zE/+/cS2J0nKr9jhzOd8gtzxraUBsLQnb17AxR5zajM",
31032+ "ed25519:ALICEDEVICE121": "GVHMxTWxlg+3YbSB85q2BhvlUlcKoaf65lxT64Btu4k"
31033+ },
31034+ "signatures": {
31035+ "@alice_121:hs1": {
31036+ "ed25519:ALICEDEVICE121": "KnKzONk8ZRoKI2HKpiuj+EJrxEEAQHZPFKlEUqjJxmxoRjfWW0o7WbKONuXoJ9K2DTxBGRAsMBuIZASw5EWkDw"
31037+ }
31038+ },
31039+ "user_id": "@alice_121:hs1",
31040+ "unsigned": {}
31041+ }
31042+ },
31043+ "@alice_122:hs1": {
31044+ "ALICEDEVICE122": {
31045+ "algorithms": [
31046+ "m.olm.v1.curve25519-aes-sha2",
31047+ "m.megolm.v1.aes-sha2"
31048+ ],
31049+ "device_id": "ALICEDEVICE122",
31050+ "keys": {
31051+ "curve25519:ALICEDEVICE122": "lb+9/I1ODl8lBWTmm7CvjDLOAAVvEfj2Jhxt4ix8hCQ",
31052+ "ed25519:ALICEDEVICE122": "uwBd5kWPFCXaYTcx9hdGOvC0GdaOY1Zc90e5/3t7Mf0"
31053+ },
31054+ "signatures": {
31055+ "@alice_122:hs1": {
31056+ "ed25519:ALICEDEVICE122": "Jiw7IY2tOKjOlogge3qU5/0LgpdI06AeAfgJJ5hSwocWfkZEIDP9hgD+lCZYbCo5QWzmHn+gfZzPJnMQFgh4Cg"
31057+ }
31058+ },
31059+ "user_id": "@alice_122:hs1",
31060+ "unsigned": {}
31061+ }
31062+ },
31063+ "@alice_1255:hs1": {
31064+ "ALICEDEVICE1255": {
31065+ "algorithms": [
31066+ "m.olm.v1.curve25519-aes-sha2",
31067+ "m.megolm.v1.aes-sha2"
31068+ ],
31069+ "device_id": "ALICEDEVICE1255",
31070+ "keys": {
31071+ "curve25519:ALICEDEVICE1255": "gnppt8fdDJ/seYlF2537UYOrQ/OenZQmZG4WOLhdm1A",
31072+ "ed25519:ALICEDEVICE1255": "Fb/G41PDZvas7INmjAgqxzyBhiRuGGLSEXDaVLTzdkU"
31073+ },
31074+ "signatures": {
31075+ "@alice_1255:hs1": {
31076+ "ed25519:ALICEDEVICE1255": "FhbEhUNZVWa1sfVFHEf2xa0wD0wlbwXYrDU5FopvQEkPRXrN37qoRlQiNGT+fb8tV9plNuj3WfIRlchMpxt1Ag"
31077+ }
31078+ },
31079+ "user_id": "@alice_1255:hs1",
31080+ "unsigned": {}
31081+ }
31082+ },
31083+ "@alice_1258:hs1": {
31084+ "ALICEDEVICE1258": {
31085+ "algorithms": [
31086+ "m.olm.v1.curve25519-aes-sha2",
31087+ "m.megolm.v1.aes-sha2"
31088+ ],
31089+ "device_id": "ALICEDEVICE1258",
31090+ "keys": {
31091+ "curve25519:ALICEDEVICE1258": "QYz5PlyTriursJsp1xdMD17yLWQSQKMIGzSCYbd57ig",
31092+ "ed25519:ALICEDEVICE1258": "+/lR2HR43yXDXGvtFfpjXfcB3haC/N63NpGLZtrETv0"
31093+ },
31094+ "signatures": {
31095+ "@alice_1258:hs1": {
31096+ "ed25519:ALICEDEVICE1258": "lT1rbyUN58R/8Pk3HXFfgTUGQokr/tTTNeSSwaCc498ewinvI7XIR3GuHhrOt0XeyhAdtKuF28A1M3fpsoUYCQ"
31097+ }
31098+ },
31099+ "user_id": "@alice_1258:hs1",
31100+ "unsigned": {}
31101+ }
31102+ },
31103+ "@alice_1259:hs1": {
31104+ "ALICEDEVICE1259": {
31105+ "algorithms": [
31106+ "m.olm.v1.curve25519-aes-sha2",
31107+ "m.megolm.v1.aes-sha2"
31108+ ],
31109+ "device_id": "ALICEDEVICE1259",
31110+ "keys": {
31111+ "curve25519:ALICEDEVICE1259": "cOpD0ex948gl9iQKmAz64meHav6B4Z2O3QwXYIpC9gY",
31112+ "ed25519:ALICEDEVICE1259": "RRDGDvPIpFa0Rc1xU4Y7MxJ7km92zkAsTZawSDHVlGM"
31113+ },
31114+ "signatures": {
31115+ "@alice_1259:hs1": {
31116+ "ed25519:ALICEDEVICE1259": "hqCXnJ5unDoAqrFPuLNM5gqRbB7Ams2P17PbXxtSO9jX2OZKpgjY3gTX4tr8KHH8nW0Q6i+vundXD0ifpGM8DA"
31117+ }
31118+ },
31119+ "user_id": "@alice_1259:hs1",
31120+ "unsigned": {}
31121+ }
31122+ },
31123+ "@alice_1265:hs1": {
31124+ "ALICEDEVICE1265": {
31125+ "algorithms": [
31126+ "m.olm.v1.curve25519-aes-sha2",
31127+ "m.megolm.v1.aes-sha2"
31128+ ],
31129+ "device_id": "ALICEDEVICE1265",
31130+ "keys": {
31131+ "curve25519:ALICEDEVICE1265": "VVPYED2Xx9d4UFHIKADp+xBWyiXsmnc+21gc3hg08Xg",
31132+ "ed25519:ALICEDEVICE1265": "1m+jRg0jAIoYUwk17Wn6t0ByslKkKPrwEa8ZgBLr8No"
31133+ },
31134+ "signatures": {
31135+ "@alice_1265:hs1": {
31136+ "ed25519:ALICEDEVICE1265": "dmegdqnKxX0Yagty0glsDx8iV+CnClzCJFipZ6o9hrwxDwtDxzoh2iCOnpCKtFpJLpSBDs87QkjSLMNTUMbqAw"
31137+ }
31138+ },
31139+ "user_id": "@alice_1265:hs1",
31140+ "unsigned": {}
31141+ }
31142+ },
31143+ "@alice_1274:hs1": {
31144+ "ALICEDEVICE1274": {
31145+ "algorithms": [
31146+ "m.olm.v1.curve25519-aes-sha2",
31147+ "m.megolm.v1.aes-sha2"
31148+ ],
31149+ "device_id": "ALICEDEVICE1274",
31150+ "keys": {
31151+ "curve25519:ALICEDEVICE1274": "Dorj5YqWfho+1NeV3WNqg7BJhWovkNZMf2YWUln5QRg",
31152+ "ed25519:ALICEDEVICE1274": "h7xTvDYQxHo+p5YK49pdIp2KzQIHAcWkSny9ovQCoII"
31153+ },
31154+ "signatures": {
31155+ "@alice_1274:hs1": {
31156+ "ed25519:ALICEDEVICE1274": "Bp00Z96GojbpqtoImNA9WI4HWOGmItVllX2eDL6uuibhIsKe14DNHles+2e1QV7A2EV4E21MUeZdofGgaj+sBw"
31157+ }
31158+ },
31159+ "user_id": "@alice_1274:hs1",
31160+ "unsigned": {}
31161+ }
31162+ },
31163+ "@alice_1279:hs1": {
31164+ "ALICEDEVICE1279": {
31165+ "algorithms": [
31166+ "m.olm.v1.curve25519-aes-sha2",
31167+ "m.megolm.v1.aes-sha2"
31168+ ],
31169+ "device_id": "ALICEDEVICE1279",
31170+ "keys": {
31171+ "curve25519:ALICEDEVICE1279": "BCfNt3KQLhoSA5tPgT4vb+6zm2FHk0ifrHIeMEzt2zE",
31172+ "ed25519:ALICEDEVICE1279": "JHdbEEamuJhGSqL0My88IxjLfNkslfJ+yxLNScekHF0"
31173+ },
31174+ "signatures": {
31175+ "@alice_1279:hs1": {
31176+ "ed25519:ALICEDEVICE1279": "xLnN8KoqUIH9nXFIGrUviqwSanz1eJ1nYTd3sJRabl3e6gLMwel6HZ764IT2cUzLDv9Rdv7h2mLzVJnDlvPvBg"
31177+ }
31178+ },
31179+ "user_id": "@alice_1279:hs1",
31180+ "unsigned": {}
31181+ }
31182+ },
31183+ "@alice_1283:hs1": {
31184+ "ALICEDEVICE1283": {
31185+ "algorithms": [
31186+ "m.olm.v1.curve25519-aes-sha2",
31187+ "m.megolm.v1.aes-sha2"
31188+ ],
31189+ "device_id": "ALICEDEVICE1283",
31190+ "keys": {
31191+ "curve25519:ALICEDEVICE1283": "+alb2X0GeHEwWOvboIns30OznGne4Wo9KPB0OFt0hBc",
31192+ "ed25519:ALICEDEVICE1283": "VIWDpulXhgXNgRqfuFW+9PD54Fda7R5rZCzv2qQeTxE"
31193+ },
31194+ "signatures": {
31195+ "@alice_1283:hs1": {
31196+ "ed25519:ALICEDEVICE1283": "/ghGV8jZ7QU9YrKqcIZu4RC49CLzED87m16gDZHGnIwG7PQ/dIZhcyE9XviW/Z361aH9PJ03HmnY/TmzVBmuDQ"
31197+ }
31198+ },
31199+ "user_id": "@alice_1283:hs1",
31200+ "unsigned": {}
31201+ }
31202+ },
31203+ "@alice_1286:hs1": {
31204+ "ALICEDEVICE1286": {
31205+ "algorithms": [
31206+ "m.olm.v1.curve25519-aes-sha2",
31207+ "m.megolm.v1.aes-sha2"
31208+ ],
31209+ "device_id": "ALICEDEVICE1286",
31210+ "keys": {
31211+ "curve25519:ALICEDEVICE1286": "B1g8FCCN/wlpAWuOz1c7LzFHRTj67PQh9iTItbPZZA0",
31212+ "ed25519:ALICEDEVICE1286": "fUmNZuyy3mgNdRK7KR8CcoFSqtyMRNt4p/SBqamHboM"
31213+ },
31214+ "signatures": {
31215+ "@alice_1286:hs1": {
31216+ "ed25519:ALICEDEVICE1286": "R8G9bhluy4L/Vlhc4qV/wuW1APbfjqm9wTiznkGbvs8+nwMHhl5hW2k/mUmd0Y3YpR8yWZsRpl7R0IepWgaQAg"
31217+ }
31218+ },
31219+ "user_id": "@alice_1286:hs1",
31220+ "unsigned": {}
31221+ }
31222+ },
31223+ "@alice_1300:hs1": {
31224+ "ALICEDEVICE1300": {
31225+ "algorithms": [
31226+ "m.olm.v1.curve25519-aes-sha2",
31227+ "m.megolm.v1.aes-sha2"
31228+ ],
31229+ "device_id": "ALICEDEVICE1300",
31230+ "keys": {
31231+ "curve25519:ALICEDEVICE1300": "g/nvR52Ku60UrJzp+vIY7d55+FXGCBBLPYLdzMOL9lA",
31232+ "ed25519:ALICEDEVICE1300": "uYmcOimdIhdubANYl7ICKVcE4wpNQ0Nb70zp0qZ1o7M"
31233+ },
31234+ "signatures": {
31235+ "@alice_1300:hs1": {
31236+ "ed25519:ALICEDEVICE1300": "aCfiekBrWUcSZZH+D55JNxRdq2Xhm4QzVGuq1ij7ws8iR4M4HsdwwKbpUZepYjHkhcQPOFteRZb4HFFgeaZYBQ"
31237+ }
31238+ },
31239+ "user_id": "@alice_1300:hs1",
31240+ "unsigned": {}
31241+ }
31242+ },
31243+ "@alice_1301:hs1": {
31244+ "ALICEDEVICE1301": {
31245+ "algorithms": [
31246+ "m.olm.v1.curve25519-aes-sha2",
31247+ "m.megolm.v1.aes-sha2"
31248+ ],
31249+ "device_id": "ALICEDEVICE1301",
31250+ "keys": {
31251+ "curve25519:ALICEDEVICE1301": "z2gL5bcEomubN56QE6oTe7GxRjI4TRylV7So9bIhOSc",
31252+ "ed25519:ALICEDEVICE1301": "yF1EL+GR5yh4XxArs3Ix/RQM3X4FJjJ/oZsJoKXlJ4Q"
31253+ },
31254+ "signatures": {
31255+ "@alice_1301:hs1": {
31256+ "ed25519:ALICEDEVICE1301": "pMWamqJvOD2QbgmuVdn34E/0J8KxOBJVbFHDzhd1f5KFGQt3afn12Tec+u8/pVaEGToPIIykHqcRigD5+dtCDA"
31257+ }
31258+ },
31259+ "user_id": "@alice_1301:hs1",
31260+ "unsigned": {}
31261+ }
31262+ },
31263+ "@alice_1302:hs1": {
31264+ "ALICEDEVICE1302": {
31265+ "algorithms": [
31266+ "m.olm.v1.curve25519-aes-sha2",
31267+ "m.megolm.v1.aes-sha2"
31268+ ],
31269+ "device_id": "ALICEDEVICE1302",
31270+ "keys": {
31271+ "curve25519:ALICEDEVICE1302": "zFoy/w2HY0xkGCHckI2KJIkqSy4VM68zOoGSOkuDZVc",
31272+ "ed25519:ALICEDEVICE1302": "IlGrmGam21HEyVZnIYvdjBE2eB/oIbb6MpafnHxYFkc"
31273+ },
31274+ "signatures": {
31275+ "@alice_1302:hs1": {
31276+ "ed25519:ALICEDEVICE1302": "wpMqmyp2e2O1DzONFRXmO43xxa0sREfHyEMdHaB0d+X7/NGE+ubFHb8nu+3PkMZUY0Mlyhf50Zw1kWEPdJ88Dg"
31277+ }
31278+ },
31279+ "user_id": "@alice_1302:hs1",
31280+ "unsigned": {}
31281+ }
31282+ },
31283+ "@alice_1303:hs1": {
31284+ "ALICEDEVICE1303": {
31285+ "algorithms": [
31286+ "m.olm.v1.curve25519-aes-sha2",
31287+ "m.megolm.v1.aes-sha2"
31288+ ],
31289+ "device_id": "ALICEDEVICE1303",
31290+ "keys": {
31291+ "curve25519:ALICEDEVICE1303": "lAxNCexNloY80NG1kGA/85h5spmfKh1SuqXy4ga5nyE",
31292+ "ed25519:ALICEDEVICE1303": "WzqAynYT0qy43hJj8JzBeeKRgYGLQTkC1h9ZAGu6aGQ"
31293+ },
31294+ "signatures": {
31295+ "@alice_1303:hs1": {
31296+ "ed25519:ALICEDEVICE1303": "4Jlj/dRhZ73Kfwb96qB2ECAmmZWFtNnGBWMbf9aTGpBj2ngMBeZ9O8P+5ttupBXR+xbdCuO/EhsI6L6QWUIFAA"
31297+ }
31298+ },
31299+ "user_id": "@alice_1303:hs1",
31300+ "unsigned": {}
31301+ }
31302+ },
31303+ "@alice_1313:hs1": {
31304+ "ALICEDEVICE1313": {
31305+ "algorithms": [
31306+ "m.olm.v1.curve25519-aes-sha2",
31307+ "m.megolm.v1.aes-sha2"
31308+ ],
31309+ "device_id": "ALICEDEVICE1313",
31310+ "keys": {
31311+ "curve25519:ALICEDEVICE1313": "oIRFP5s5UhDgY4Tx7oqKsodmdeu4oNEIbp88PV4dhxg",
31312+ "ed25519:ALICEDEVICE1313": "5vbIZNK+iPYJkPulCgolyxFKZP1JAaAQcGp8P6wXQsM"
31313+ },
31314+ "signatures": {
31315+ "@alice_1313:hs1": {
31316+ "ed25519:ALICEDEVICE1313": "QElQ2eCWxlsy2dWHPSPCoyPLWQ+neMphKW3byDNR2hBvy+3USjkAMHIdzAfQkFujxwB4SOi/ov3LB40s2MH5DQ"
31317+ }
31318+ },
31319+ "user_id": "@alice_1313:hs1",
31320+ "unsigned": {}
31321+ }
31322+ },
31323+ "@alice_1330:hs1": {
31324+ "ALICEDEVICE1330": {
31325+ "algorithms": [
31326+ "m.olm.v1.curve25519-aes-sha2",
31327+ "m.megolm.v1.aes-sha2"
31328+ ],
31329+ "device_id": "ALICEDEVICE1330",
31330+ "keys": {
31331+ "curve25519:ALICEDEVICE1330": "5S4J5Bu4fjlbFNIJb0D56PvKot0GPgMvwdxRRsjBWDo",
31332+ "ed25519:ALICEDEVICE1330": "zrTdZMdaLyIveiGvQF1QboujxqxN3ph4gjjmoW29j4s"
31333+ },
31334+ "signatures": {
31335+ "@alice_1330:hs1": {
31336+ "ed25519:ALICEDEVICE1330": "m6WrhX7Px4iE8V4hcj8dOtw+VVfiEdTduT0T3cdR++ea5q7tC85CjvJvqwCamyhAGkHUzTlcfhkK+bGu47R2Aw"
31337+ }
31338+ },
31339+ "user_id": "@alice_1330:hs1",
31340+ "unsigned": {}
31341+ }
31342+ },
31343+ "@alice_1331:hs1": {
31344+ "ALICEDEVICE1331": {
31345+ "algorithms": [
31346+ "m.olm.v1.curve25519-aes-sha2",
31347+ "m.megolm.v1.aes-sha2"
31348+ ],
31349+ "device_id": "ALICEDEVICE1331",
31350+ "keys": {
31351+ "curve25519:ALICEDEVICE1331": "y17jbucIOTk8ZC2nfa9AlSgna+cHxeSnhFKztt+T+XA",
31352+ "ed25519:ALICEDEVICE1331": "nxEIPUiOn9zPY5LpS1UdL5mnDMpUKJgaQCBQ97FdXE4"
31353+ },
31354+ "signatures": {
31355+ "@alice_1331:hs1": {
31356+ "ed25519:ALICEDEVICE1331": "bGbwEVMuNfB/2nS7tfsvruKDFJMvk53A7BiAIi+f+HTrh6Cj7UPG8QIT+Z0zTPpTdBTHY653rSC0j7YRBln5Aw"
31357+ }
31358+ },
31359+ "user_id": "@alice_1331:hs1",
31360+ "unsigned": {}
31361+ }
31362+ },
31363+ "@alice_1334:hs1": {
31364+ "ALICEDEVICE1334": {
31365+ "algorithms": [
31366+ "m.olm.v1.curve25519-aes-sha2",
31367+ "m.megolm.v1.aes-sha2"
31368+ ],
31369+ "device_id": "ALICEDEVICE1334",
31370+ "keys": {
31371+ "curve25519:ALICEDEVICE1334": "XH11gMk0Utvb8cR8lzsXNvlt9iuPB3AvHScwc0WeQww",
31372+ "ed25519:ALICEDEVICE1334": "Ee/Hv0RWtPswRF5rP8GUSSyFSxK2f7KkHHtjgGKhuJc"
31373+ },
31374+ "signatures": {
31375+ "@alice_1334:hs1": {
31376+ "ed25519:ALICEDEVICE1334": "lRoHOErjeKztMjV03yLDOGx5IjOCcK+uJmHl0mc1WHGqv//v0EQ+jxjDk/g6CP8vGkDPzzXnTsyjebmZryW3CQ"
31377+ }
31378+ },
31379+ "user_id": "@alice_1334:hs1",
31380+ "unsigned": {}
31381+ }
31382+ },
31383+ "@alice_1338:hs1": {
31384+ "ALICEDEVICE1338": {
31385+ "algorithms": [
31386+ "m.olm.v1.curve25519-aes-sha2",
31387+ "m.megolm.v1.aes-sha2"
31388+ ],
31389+ "device_id": "ALICEDEVICE1338",
31390+ "keys": {
31391+ "curve25519:ALICEDEVICE1338": "38pwOKE9Y9O3cMZAUmYBgx2C6AQUM4TFao/bjw2ceSY",
31392+ "ed25519:ALICEDEVICE1338": "lHsKJ+By4s66nkGjoNlcGn6tqb38uMZ6n7UGu2VEcos"
31393+ },
31394+ "signatures": {
31395+ "@alice_1338:hs1": {
31396+ "ed25519:ALICEDEVICE1338": "nma0djnRcxRxbxU5DNzmsDb2T0a8UU1BL+ec3/BPAhN9O37HCXnmSNRjT6/sUsQj/NEQhC4/duNEY63z1dEQBw"
31397+ }
31398+ },
31399+ "user_id": "@alice_1338:hs1",
31400+ "unsigned": {}
31401+ }
31402+ },
31403+ "@alice_1339:hs1": {
31404+ "ALICEDEVICE1339": {
31405+ "algorithms": [
31406+ "m.olm.v1.curve25519-aes-sha2",
31407+ "m.megolm.v1.aes-sha2"
31408+ ],
31409+ "device_id": "ALICEDEVICE1339",
31410+ "keys": {
31411+ "curve25519:ALICEDEVICE1339": "RfBzzWR901WClg3IjRZtS351gU/HhxDNHE/oU2GkIHc",
31412+ "ed25519:ALICEDEVICE1339": "hnlpNIe6xEj8XHg+bAOVRe6Miaa0MUaVYBWiC9L1fj0"
31413+ },
31414+ "signatures": {
31415+ "@alice_1339:hs1": {
31416+ "ed25519:ALICEDEVICE1339": "J1ZXpidkwcQi4JVp18nAh6gwXJqhJ/WWPDr3U6XqEdZDYDELvsaayOZmSGRiuwE18G/kU+Fti7UJoorwvJQuAQ"
31417+ }
31418+ },
31419+ "user_id": "@alice_1339:hs1",
31420+ "unsigned": {}
31421+ }
31422+ },
31423+ "@alice_1352:hs1": {
31424+ "ALICEDEVICE1352": {
31425+ "algorithms": [
31426+ "m.olm.v1.curve25519-aes-sha2",
31427+ "m.megolm.v1.aes-sha2"
31428+ ],
31429+ "device_id": "ALICEDEVICE1352",
31430+ "keys": {
31431+ "curve25519:ALICEDEVICE1352": "j3OHCj08qVlok1DCeYFvFWT5DhFNt9CYg1O+9BWr9lE",
31432+ "ed25519:ALICEDEVICE1352": "ZXuLBcTCXFwC1CaR5t8TU7mT10sOtE0uc2wNxUVI4fs"
31433+ },
31434+ "signatures": {
31435+ "@alice_1352:hs1": {
31436+ "ed25519:ALICEDEVICE1352": "LNYbKhxwfzXhDrNlJKFJxaEqb+PacFu8u4ApWniNtl9Jxi/xa9LNR7Nt83mFJ6oNT/ut2LM5dNTTe207SRb4Bw"
31437+ }
31438+ },
31439+ "user_id": "@alice_1352:hs1",
31440+ "unsigned": {}
31441+ }
31442+ },
31443+ "@alice_1358:hs1": {
31444+ "ALICEDEVICE1358": {
31445+ "algorithms": [
31446+ "m.olm.v1.curve25519-aes-sha2",
31447+ "m.megolm.v1.aes-sha2"
31448+ ],
31449+ "device_id": "ALICEDEVICE1358",
31450+ "keys": {
31451+ "curve25519:ALICEDEVICE1358": "+eS1HL+YwJIUy5MZtMJhiUH979QCT4quT7IPv1Col2I",
31452+ "ed25519:ALICEDEVICE1358": "ZxDZNPtvSm1qkZHvHjUeSFsRN/z3jt7rYDOnwVc4Up0"
31453+ },
31454+ "signatures": {
31455+ "@alice_1358:hs1": {
31456+ "ed25519:ALICEDEVICE1358": "iPEm3V1vd2SMbLC0LKmMNz08zS1yXVQtKn+71rn2wGnGZw3QbktmWXxb6xsqZa8ynmd0j0JQxmUEIFql2XdvBQ"
31457+ }
31458+ },
31459+ "user_id": "@alice_1358:hs1",
31460+ "unsigned": {}
31461+ }
31462+ },
31463+ "@alice_1372:hs1": {
31464+ "ALICEDEVICE1372": {
31465+ "algorithms": [
31466+ "m.olm.v1.curve25519-aes-sha2",
31467+ "m.megolm.v1.aes-sha2"
31468+ ],
31469+ "device_id": "ALICEDEVICE1372",
31470+ "keys": {
31471+ "curve25519:ALICEDEVICE1372": "sn/lO1BFDS8ogA13U3EEcLy9FlClIO0OiI0MThvuHgQ",
31472+ "ed25519:ALICEDEVICE1372": "McIlVSMMY5/6v/3JSBFqDrpgygIrg46G1UCaAEsRhwU"
31473+ },
31474+ "signatures": {
31475+ "@alice_1372:hs1": {
31476+ "ed25519:ALICEDEVICE1372": "LCYGd/t9W7an3EE61FzKUryrZKKSorgEb/IS4BWMxKVEo4Kgs6HaaqNWJ6WHQZ2uEEdqISB1UF5E1mzgeii6CA"
31477+ }
31478+ },
31479+ "user_id": "@alice_1372:hs1",
31480+ "unsigned": {}
31481+ }
31482+ },
31483+ "@alice_138:hs1": {
31484+ "ALICEDEVICE138": {
31485+ "algorithms": [
31486+ "m.olm.v1.curve25519-aes-sha2",
31487+ "m.megolm.v1.aes-sha2"
31488+ ],
31489+ "device_id": "ALICEDEVICE138",
31490+ "keys": {
31491+ "curve25519:ALICEDEVICE138": "2ZipQ8KFyTP7PUn1r5U+8zuziCr5+PopU7NykW/9cBo",
31492+ "ed25519:ALICEDEVICE138": "Gg0DsvZlkb3Kua2COhG0DxcZJq2MS9ZqVsE1o+Iyl7k"
31493+ },
31494+ "signatures": {
31495+ "@alice_138:hs1": {
31496+ "ed25519:ALICEDEVICE138": "l4udKgHMvYur3cvthYSjci1/UfNEgs5Pxz0U+MTsKd48OCoCPcZS1QMNeKi0FF9o7CXGrD0ULP7+OFAV21C6Bw"
31497+ }
31498+ },
31499+ "user_id": "@alice_138:hs1",
31500+ "unsigned": {}
31501+ }
31502+ },
31503+ "@alice_1390:hs1": {
31504+ "ALICEDEVICE1390": {
31505+ "algorithms": [
31506+ "m.olm.v1.curve25519-aes-sha2",
31507+ "m.megolm.v1.aes-sha2"
31508+ ],
31509+ "device_id": "ALICEDEVICE1390",
31510+ "keys": {
31511+ "curve25519:ALICEDEVICE1390": "rTu5DCRIKbqJ0qyUB6uWR2BaoWl9Xtvl/q+iNrEccVc",
31512+ "ed25519:ALICEDEVICE1390": "lprQwpc57r6ICM3jfLnm0Yzs4/P/wr8zkdIA28kc/wk"
31513+ },
31514+ "signatures": {
31515+ "@alice_1390:hs1": {
31516+ "ed25519:ALICEDEVICE1390": "6sQRbnV9e6w2VtKwnW1P6bLRVHB3WAHPwnYEpQzKQMHut34XVvk1vKf+MU909TLKjteMNSky5+GmXQ1rSdqIDA"
31517+ }
31518+ },
31519+ "user_id": "@alice_1390:hs1",
31520+ "unsigned": {}
31521+ }
31522+ },
31523+ "@alice_1391:hs1": {
31524+ "ALICEDEVICE1391": {
31525+ "algorithms": [
31526+ "m.olm.v1.curve25519-aes-sha2",
31527+ "m.megolm.v1.aes-sha2"
31528+ ],
31529+ "device_id": "ALICEDEVICE1391",
31530+ "keys": {
31531+ "curve25519:ALICEDEVICE1391": "ZQDpGw5stwIp6Sz+RJ4oAjqK3wPgeggCKm/MxHmKPRU",
31532+ "ed25519:ALICEDEVICE1391": "y+Q0D3v3datc6EIdLXGxJ5/7Tg5nRpbkrldy8t/ESXU"
31533+ },
31534+ "signatures": {
31535+ "@alice_1391:hs1": {
31536+ "ed25519:ALICEDEVICE1391": "+TKQqTb+A/ojJcgnqmX0A/UEv9lnWGYEjL9b1M52u2IKBf4muoEujl7O3/ATS+nX6ED5HOl4TnUQVnpKAQ82Aw"
31537+ }
31538+ },
31539+ "user_id": "@alice_1391:hs1",
31540+ "unsigned": {}
31541+ }
31542+ },
31543+ "@alice_1393:hs1": {
31544+ "ALICEDEVICE1393": {
31545+ "algorithms": [
31546+ "m.olm.v1.curve25519-aes-sha2",
31547+ "m.megolm.v1.aes-sha2"
31548+ ],
31549+ "device_id": "ALICEDEVICE1393",
31550+ "keys": {
31551+ "curve25519:ALICEDEVICE1393": "QRV+unZPtDpjfEtATO8H4maTmmtt04YTfv/rF2wG9Rs",
31552+ "ed25519:ALICEDEVICE1393": "nnwYzh+lnG+qc3zlBsdCUCXbZZGrHggAvbNCKjRKZd8"
31553+ },
31554+ "signatures": {
31555+ "@alice_1393:hs1": {
31556+ "ed25519:ALICEDEVICE1393": "q7GuaWs6j7W1Xoqmghf25Ritr6J23zqzCNCbMCv8GRdAVpB/0JP5BELpvUEsp+YTsUsvLYhq8YnmZC1LFog1BQ"
31557+ }
31558+ },
31559+ "user_id": "@alice_1393:hs1",
31560+ "unsigned": {}
31561+ }
31562+ },
31563+ "@alice_1394:hs1": {
31564+ "ALICEDEVICE1394": {
31565+ "algorithms": [
31566+ "m.olm.v1.curve25519-aes-sha2",
31567+ "m.megolm.v1.aes-sha2"
31568+ ],
31569+ "device_id": "ALICEDEVICE1394",
31570+ "keys": {
31571+ "curve25519:ALICEDEVICE1394": "oA7TrdcDY4vzQ1gbDv1RUE2ipF/ZT4srCXJjt77YW2E",
31572+ "ed25519:ALICEDEVICE1394": "skSjVZ97rZRJjzr0506aZBj6FayYtIiyxDen0DlnLmE"
31573+ },
31574+ "signatures": {
31575+ "@alice_1394:hs1": {
31576+ "ed25519:ALICEDEVICE1394": "QvHFR0Z/dfNRudlPCAshhDkYRDM6Z5OwTLdpRHClEBXKsRxsScr4ESLc9hyhtTnSXpCMnvOA2ShOYYVHtJvODg"
31577+ }
31578+ },
31579+ "user_id": "@alice_1394:hs1",
31580+ "unsigned": {}
31581+ }
31582+ },
31583+ "@alice_1395:hs1": {
31584+ "ALICEDEVICE1395": {
31585+ "algorithms": [
31586+ "m.olm.v1.curve25519-aes-sha2",
31587+ "m.megolm.v1.aes-sha2"
31588+ ],
31589+ "device_id": "ALICEDEVICE1395",
31590+ "keys": {
31591+ "curve25519:ALICEDEVICE1395": "RVpZ6cbe89pDFc3L/UsHvjUCqD9NDkWwSRlwoCt+i3Y",
31592+ "ed25519:ALICEDEVICE1395": "c0zpfTVo20zftsECmX6UGPSelC0WyW1ZGCnHNMEkC5w"
31593+ },
31594+ "signatures": {
31595+ "@alice_1395:hs1": {
31596+ "ed25519:ALICEDEVICE1395": "Hu1CmQwvf2Jrt2K2GlZwAMbgLAI6HlbY5rJyPM4kD31FJZ9AENo+eXiS298yNiCJyXQpvtCrM3618rEgPYemAw"
31597+ }
31598+ },
31599+ "user_id": "@alice_1395:hs1",
31600+ "unsigned": {}
31601+ }
31602+ },
31603+ "@alice_1406:hs1": {
31604+ "ALICEDEVICE1406": {
31605+ "algorithms": [
31606+ "m.olm.v1.curve25519-aes-sha2",
31607+ "m.megolm.v1.aes-sha2"
31608+ ],
31609+ "device_id": "ALICEDEVICE1406",
31610+ "keys": {
31611+ "curve25519:ALICEDEVICE1406": "XWSBe6FEA827dPVVl665ys6Ay2r/eQkMqEdrcZHKhVo",
31612+ "ed25519:ALICEDEVICE1406": "4EPxvN+/5TSy/6YwLNGJrhJXSbZWLlF4wfeSfZ60D+s"
31613+ },
31614+ "signatures": {
31615+ "@alice_1406:hs1": {
31616+ "ed25519:ALICEDEVICE1406": "TTRBauYnuqOrlSW578PVQBeimZs6HYwAE56/5ua+0SxIw6VtZ4VOwk84KMPZt+8oqGNLIey4o7nkUQwEnP4EDQ"
31617+ }
31618+ },
31619+ "user_id": "@alice_1406:hs1",
31620+ "unsigned": {}
31621+ }
31622+ },
31623+ "@alice_141:hs1": {
31624+ "ALICEDEVICE141": {
31625+ "algorithms": [
31626+ "m.olm.v1.curve25519-aes-sha2",
31627+ "m.megolm.v1.aes-sha2"
31628+ ],
31629+ "device_id": "ALICEDEVICE141",
31630+ "keys": {
31631+ "curve25519:ALICEDEVICE141": "mnF0zoVi/ZDmvvwnbQWRB+tYpyJXHPExpjJz7cM2+BI",
31632+ "ed25519:ALICEDEVICE141": "HjRwpNomsPyEiGZJzo7b0hJHWel9J7fUyJm7VLJ/PK4"
31633+ },
31634+ "signatures": {
31635+ "@alice_141:hs1": {
31636+ "ed25519:ALICEDEVICE141": "lxRyGYeUgG6b1FlLTgwBo/OZk29g4flUOHBgLqN7YMza6M89/gfmFs+t4UcnWltGp01fbZ1CSDcJqO+6PiuBCQ"
31637+ }
31638+ },
31639+ "user_id": "@alice_141:hs1",
31640+ "unsigned": {}
31641+ }
31642+ },
31643+ "@alice_1437:hs1": {
31644+ "ALICEDEVICE1437": {
31645+ "algorithms": [
31646+ "m.olm.v1.curve25519-aes-sha2",
31647+ "m.megolm.v1.aes-sha2"
31648+ ],
31649+ "device_id": "ALICEDEVICE1437",
31650+ "keys": {
31651+ "curve25519:ALICEDEVICE1437": "+cLxF4Ai/M/sgg0TXmqXC/zOMy791vzfq1kRqXbVFAY",
31652+ "ed25519:ALICEDEVICE1437": "KMS/MC3MY1vupvf0Yd+S2w9iFt69i5yC9AJ89n4tyqw"
31653+ },
31654+ "signatures": {
31655+ "@alice_1437:hs1": {
31656+ "ed25519:ALICEDEVICE1437": "K+9ohIC3BGPQ4EturEL7nBC8tgiWMUsTY6NWI3vskC/rrNnCKDsC6bfIdLorqv+we+A8FwUC9p4Cql0dv1hqDg"
31657+ }
31658+ },
31659+ "user_id": "@alice_1437:hs1",
31660+ "unsigned": {}
31661+ }
31662+ },
31663+ "@alice_1448:hs1": {
31664+ "ALICEDEVICE1448": {
31665+ "algorithms": [
31666+ "m.olm.v1.curve25519-aes-sha2",
31667+ "m.megolm.v1.aes-sha2"
31668+ ],
31669+ "device_id": "ALICEDEVICE1448",
31670+ "keys": {
31671+ "curve25519:ALICEDEVICE1448": "bmqt5MmEoQhmO9azVk/JE9qRbrdjta3mcLKHI7r0hXI",
31672+ "ed25519:ALICEDEVICE1448": "ASqy1N3WT53qjelnymTQXI1pOWgIGZdjVZk9ekEQGlk"
31673+ },
31674+ "signatures": {
31675+ "@alice_1448:hs1": {
31676+ "ed25519:ALICEDEVICE1448": "ZwdHTN31ERptPLAE5eLxJeqAQff81HHY21XwIxNEZ/0bmqKX/et97rtDuKdf0y00cGn+2hywRrjVo7saPA6iDQ"
31677+ }
31678+ },
31679+ "user_id": "@alice_1448:hs1",
31680+ "unsigned": {}
31681+ }
31682+ },
31683+ "@alice_1460:hs1": {
31684+ "ALICEDEVICE1460": {
31685+ "algorithms": [
31686+ "m.olm.v1.curve25519-aes-sha2",
31687+ "m.megolm.v1.aes-sha2"
31688+ ],
31689+ "device_id": "ALICEDEVICE1460",
31690+ "keys": {
31691+ "curve25519:ALICEDEVICE1460": "oD42hnDl3psFyw4qI0lgT409wkbEP7wUNAWjMgBCugM",
31692+ "ed25519:ALICEDEVICE1460": "jcQXOYGfWrStfWrPRH6VeJOiVNKyy9GUyb/uQV8evmc"
31693+ },
31694+ "signatures": {
31695+ "@alice_1460:hs1": {
31696+ "ed25519:ALICEDEVICE1460": "+3csGZaN59OGam+9N0OwlJ523I8t4fsv88VTyQEvglXYVGNK6TmdWOU4WGAkEHgT6VDaudbTMO/jye+0uwVDDQ"
31697+ }
31698+ },
31699+ "user_id": "@alice_1460:hs1",
31700+ "unsigned": {}
31701+ }
31702+ },
31703+ "@alice_1469:hs1": {
31704+ "ALICEDEVICE1469": {
31705+ "algorithms": [
31706+ "m.olm.v1.curve25519-aes-sha2",
31707+ "m.megolm.v1.aes-sha2"
31708+ ],
31709+ "device_id": "ALICEDEVICE1469",
31710+ "keys": {
31711+ "curve25519:ALICEDEVICE1469": "MQsGdF2q1s96hQ6iS0l8QMuZohgJSomWjEoSJRf2Q3U",
31712+ "ed25519:ALICEDEVICE1469": "mTk9XenwFPXjZggSfoDsaYlpM4cYKN1hK0EhBAAg9kc"
31713+ },
31714+ "signatures": {
31715+ "@alice_1469:hs1": {
31716+ "ed25519:ALICEDEVICE1469": "Gaa5bT2zeKpx0EO7JiaiusP3L2ljsLUEH42ADWMaRTSLX1kwtiAUoUFl7eVpbYvKGYAj9YATYbdlJV+2UoQgAQ"
31717+ }
31718+ },
31719+ "user_id": "@alice_1469:hs1",
31720+ "unsigned": {}
31721+ }
31722+ },
31723+ "@alice_146:hs1": {
31724+ "ALICEDEVICE146": {
31725+ "algorithms": [
31726+ "m.olm.v1.curve25519-aes-sha2",
31727+ "m.megolm.v1.aes-sha2"
31728+ ],
31729+ "device_id": "ALICEDEVICE146",
31730+ "keys": {
31731+ "curve25519:ALICEDEVICE146": "ukkV54VqL3/cTGX/LQYCCHflYjN43TwUCqrDp5GEgk0",
31732+ "ed25519:ALICEDEVICE146": "DBTJCTRr8CC3isADVGFuxQXSlTu3+TOS2+SDJUcuToc"
31733+ },
31734+ "signatures": {
31735+ "@alice_146:hs1": {
31736+ "ed25519:ALICEDEVICE146": "UwgN4MBh8j5ISM9MBsTvCIdCMaWRgZ1NrP6/kp1PCtHKxTao2nzPzLFCW/rBEU8hEgGko6syRt8D7dMwo6dhBg"
31737+ }
31738+ },
31739+ "user_id": "@alice_146:hs1",
31740+ "unsigned": {}
31741+ }
31742+ },
31743+ "@alice_1486:hs1": {
31744+ "ALICEDEVICE1486": {
31745+ "algorithms": [
31746+ "m.olm.v1.curve25519-aes-sha2",
31747+ "m.megolm.v1.aes-sha2"
31748+ ],
31749+ "device_id": "ALICEDEVICE1486",
31750+ "keys": {
31751+ "curve25519:ALICEDEVICE1486": "CAD0TB2WKDob5RjcIxVYl+b9TGgGF2YOpNuiw8TTZgw",
31752+ "ed25519:ALICEDEVICE1486": "oyQbTnhTVjSa6AYNJtC05p2m/IBtY3qcVdr8ZQrIePA"
31753+ },
31754+ "signatures": {
31755+ "@alice_1486:hs1": {
31756+ "ed25519:ALICEDEVICE1486": "I49akUV+69zMmAHoqRHp6sdxtq2Ez+n8L/EQ8EhUgeg8ls12LNQ/oUo/vhwgZ+dKRlieDHRSvIN8iKYd8aHGDw"
31757+ }
31758+ },
31759+ "user_id": "@alice_1486:hs1",
31760+ "unsigned": {}
31761+ }
31762+ },
31763+ "@alice_1487:hs1": {
31764+ "ALICEDEVICE1487": {
31765+ "algorithms": [
31766+ "m.olm.v1.curve25519-aes-sha2",
31767+ "m.megolm.v1.aes-sha2"
31768+ ],
31769+ "device_id": "ALICEDEVICE1487",
31770+ "keys": {
31771+ "curve25519:ALICEDEVICE1487": "NBQ0cvDOJsFqnvBDxvXvOhKOLLBjGL/merM9zaL7uic",
31772+ "ed25519:ALICEDEVICE1487": "duKUINDxF16z6zMAH2I5GtJuUEsK4OrRuKl5TXSXMEo"
31773+ },
31774+ "signatures": {
31775+ "@alice_1487:hs1": {
31776+ "ed25519:ALICEDEVICE1487": "ySDfdSia4TDpDoiyg3go2rvWIWWAwaqXwd8clibHNxUjKzUc/FEM1C1C49QjmJHbcSV9GLUZD8T8UJ39Bmw1Cw"
31777+ }
31778+ },
31779+ "user_id": "@alice_1487:hs1",
31780+ "unsigned": {}
31781+ }
31782+ },
31783+ "@alice_1489:hs1": {
31784+ "ALICEDEVICE1489": {
31785+ "algorithms": [
31786+ "m.olm.v1.curve25519-aes-sha2",
31787+ "m.megolm.v1.aes-sha2"
31788+ ],
31789+ "device_id": "ALICEDEVICE1489",
31790+ "keys": {
31791+ "curve25519:ALICEDEVICE1489": "LxueAhNztm/iayC769hLV6Ei/fOSBcjt0pjBiDjW2ns",
31792+ "ed25519:ALICEDEVICE1489": "VBNyZPKDr5866PE4D48dj5FBmielKElaqxMgt5XjEMQ"
31793+ },
31794+ "signatures": {
31795+ "@alice_1489:hs1": {
31796+ "ed25519:ALICEDEVICE1489": "woLQWOlokpJxg3lH+GAqkCjyTtOF3R3Bj3kh8V/TmkQVN2ohI7s/brvOdLr7t65h8JYbelhj6QlilvJKwNqWBw"
31797+ }
31798+ },
31799+ "user_id": "@alice_1489:hs1",
31800+ "unsigned": {}
31801+ }
31802+ },
31803+ "@alice_1498:hs1": {
31804+ "ALICEDEVICE1498": {
31805+ "algorithms": [
31806+ "m.olm.v1.curve25519-aes-sha2",
31807+ "m.megolm.v1.aes-sha2"
31808+ ],
31809+ "device_id": "ALICEDEVICE1498",
31810+ "keys": {
31811+ "curve25519:ALICEDEVICE1498": "9mQsit2tJTBBHFbJrDTDzrrAzDro5LPxrP1rH4vMjzc",
31812+ "ed25519:ALICEDEVICE1498": "gEhq/+iVn1agr1kVbPV04q+xh2UN37rU/fM4CKP+exo"
31813+ },
31814+ "signatures": {
31815+ "@alice_1498:hs1": {
31816+ "ed25519:ALICEDEVICE1498": "oKjpQjU4zYvvrZnvXh4G86mZGEPiDeAl1QDDL2eRwAKLUuUIW6v54ecXbI8n1Rlu8PynA2wXp1VX/V8WhDKWDQ"
31817+ }
31818+ },
31819+ "user_id": "@alice_1498:hs1",
31820+ "unsigned": {}
31821+ }
31822+ },
31823+ "@alice_1500:hs1": {
31824+ "ALICEDEVICE1500": {
31825+ "algorithms": [
31826+ "m.olm.v1.curve25519-aes-sha2",
31827+ "m.megolm.v1.aes-sha2"
31828+ ],
31829+ "device_id": "ALICEDEVICE1500",
31830+ "keys": {
31831+ "curve25519:ALICEDEVICE1500": "WGsJ74BBCMF0QhI7UN9TATvx8xWL1qZXkJGoRkzkkW0",
31832+ "ed25519:ALICEDEVICE1500": "KcoNbL1dLIsABsaYECK4ZBcuiFRLV7HEMEZrJvGDhSA"
31833+ },
31834+ "signatures": {
31835+ "@alice_1500:hs1": {
31836+ "ed25519:ALICEDEVICE1500": "zZu1q7BUxaevZTcuSTJ+W/4G3zmz8qxo+/J3em6/htZ7a4pO1B2WxvF+XbZqHkeOTpU5Ko3HnHpJ+ih51KJRDw"
31837+ }
31838+ },
31839+ "user_id": "@alice_1500:hs1",
31840+ "unsigned": {}
31841+ }
31842+ },
31843+ "@alice_1502:hs1": {
31844+ "ALICEDEVICE1502": {
31845+ "algorithms": [
31846+ "m.olm.v1.curve25519-aes-sha2",
31847+ "m.megolm.v1.aes-sha2"
31848+ ],
31849+ "device_id": "ALICEDEVICE1502",
31850+ "keys": {
31851+ "curve25519:ALICEDEVICE1502": "32jgJOGzvx1rMlIE2p3igvnNneAh/JT5RHPDo2Ote2Q",
31852+ "ed25519:ALICEDEVICE1502": "b3F2PnSHeCKwhIR/nNISzlg9txJVXLjHSyTmuSmL/gY"
31853+ },
31854+ "signatures": {
31855+ "@alice_1502:hs1": {
31856+ "ed25519:ALICEDEVICE1502": "juzjpSC1tljmJhgZ15agC4JO/XBVFa8PPrgx4BrSLyh2M2izN1H3Nl1XTh/XkTIXEc/+SojaeTwECn7L/JCpDA"
31857+ }
31858+ },
31859+ "user_id": "@alice_1502:hs1",
31860+ "unsigned": {}
31861+ }
31862+ },
31863+ "@alice_1513:hs1": {
31864+ "ALICEDEVICE1513": {
31865+ "algorithms": [
31866+ "m.olm.v1.curve25519-aes-sha2",
31867+ "m.megolm.v1.aes-sha2"
31868+ ],
31869+ "device_id": "ALICEDEVICE1513",
31870+ "keys": {
31871+ "curve25519:ALICEDEVICE1513": "s7l0/J3whCWwjA5fVfjPp85iY8KXfhUBTMEQ5k7gIxU",
31872+ "ed25519:ALICEDEVICE1513": "aIA0Hz6vZb8QCW8r04XrKev0i5PQKR0mwSnMou4i/z4"
31873+ },
31874+ "signatures": {
31875+ "@alice_1513:hs1": {
31876+ "ed25519:ALICEDEVICE1513": "Xi2ZRBMGsc2vPoUmFPe7qchRBcIX6JvWj9/12z8wWWuLz6mILQoTx8CQyaQh8lXbS7kiTAMTrx1MEeywuXubDw"
31877+ }
31878+ },
31879+ "user_id": "@alice_1513:hs1",
31880+ "unsigned": {}
31881+ }
31882+ },
31883+ "@alice_1514:hs1": {
31884+ "ALICEDEVICE1514": {
31885+ "algorithms": [
31886+ "m.olm.v1.curve25519-aes-sha2",
31887+ "m.megolm.v1.aes-sha2"
31888+ ],
31889+ "device_id": "ALICEDEVICE1514",
31890+ "keys": {
31891+ "curve25519:ALICEDEVICE1514": "SCiFTg3eGPAuscWfMca33KVYo0hiyYXM35Eysqbhr1I",
31892+ "ed25519:ALICEDEVICE1514": "USfHgHHMri2AI6axlFM+8Uj45wzmLyXOvVhGd38j4+Q"
31893+ },
31894+ "signatures": {
31895+ "@alice_1514:hs1": {
31896+ "ed25519:ALICEDEVICE1514": "oPiB2He7gkJMGIaiPhkKRbo1zlkxRE2nLsfaXjroLp4ivkHDnJqB3+6M7uCKJlXpiPTmrV5VWbTKGR5Uz7bnBg"
31897+ }
31898+ },
31899+ "user_id": "@alice_1514:hs1",
31900+ "unsigned": {}
31901+ }
31902+ },
31903+ "@alice_1517:hs1": {
31904+ "ALICEDEVICE1517": {
31905+ "algorithms": [
31906+ "m.olm.v1.curve25519-aes-sha2",
31907+ "m.megolm.v1.aes-sha2"
31908+ ],
31909+ "device_id": "ALICEDEVICE1517",
31910+ "keys": {
31911+ "curve25519:ALICEDEVICE1517": "PWohsMNFbRStQFxMyxgXgO1XzWrbJ2VlOUv5AtGCzUY",
31912+ "ed25519:ALICEDEVICE1517": "qwH7PfgDFwnHNJLOeA/BTwP/7ORjwknf9Wt/o6sTkbk"
31913+ },
31914+ "signatures": {
31915+ "@alice_1517:hs1": {
31916+ "ed25519:ALICEDEVICE1517": "Yc3fKDBSM7fiqbGCLkFNHX3YuWmHUPrcdXfeBrremh0mHYq4uA89FZFD4ZHh3/tfyT4UdKcTcgHvBKMP/9fAAA"
31917+ }
31918+ },
31919+ "user_id": "@alice_1517:hs1",
31920+ "unsigned": {}
31921+ }
31922+ },
31923+ "@alice_1518:hs1": {
31924+ "ALICEDEVICE1518": {
31925+ "algorithms": [
31926+ "m.olm.v1.curve25519-aes-sha2",
31927+ "m.megolm.v1.aes-sha2"
31928+ ],
31929+ "device_id": "ALICEDEVICE1518",
31930+ "keys": {
31931+ "curve25519:ALICEDEVICE1518": "rTNh5p3WbVdmCXDG1iPA9sRz4d8JauxCy/ydHMsZYFY",
31932+ "ed25519:ALICEDEVICE1518": "SbWiOltei3CYmN3/CskGbKOPul8tHzPxYVUJDETRiew"
31933+ },
31934+ "signatures": {
31935+ "@alice_1518:hs1": {
31936+ "ed25519:ALICEDEVICE1518": "2FIQw4e7+myA4+L2oyE4FMVtQi+e8xTVH9JFOelGb87ui5+Xlp6nt/bqkiqPQXe4CilHCYpGFa1NWhXGPDmxCg"
31937+ }
31938+ },
31939+ "user_id": "@alice_1518:hs1",
31940+ "unsigned": {}
31941+ }
31942+ },
31943+ "@alice_1521:hs1": {
31944+ "ALICEDEVICE1521": {
31945+ "algorithms": [
31946+ "m.olm.v1.curve25519-aes-sha2",
31947+ "m.megolm.v1.aes-sha2"
31948+ ],
31949+ "device_id": "ALICEDEVICE1521",
31950+ "keys": {
31951+ "curve25519:ALICEDEVICE1521": "mWbIfBJ3Ne91h+iyrvkRrlsmd6lux/8X+yjfC5EcrQ0",
31952+ "ed25519:ALICEDEVICE1521": "CFDLyH2Jqvf15zOlawRkkoOmRoRtTdcS/jZK0OZMOds"
31953+ },
31954+ "signatures": {
31955+ "@alice_1521:hs1": {
31956+ "ed25519:ALICEDEVICE1521": "LC0eWh2QVNTspvapK/6ROBrblfZ2O/YqLCx2Lw4/45dPOZsx0Q4u3FhlZGhRnXYrcU+Hlmt+VYlViSwvRLrPAQ"
31957+ }
31958+ },
31959+ "user_id": "@alice_1521:hs1",
31960+ "unsigned": {}
31961+ }
31962+ },
31963+ "@alice_1525:hs1": {
31964+ "ALICEDEVICE1525": {
31965+ "algorithms": [
31966+ "m.olm.v1.curve25519-aes-sha2",
31967+ "m.megolm.v1.aes-sha2"
31968+ ],
31969+ "device_id": "ALICEDEVICE1525",
31970+ "keys": {
31971+ "curve25519:ALICEDEVICE1525": "lgyLW11V6l0wF7gYehxFZNFk6JoN0zf/B4K0J/AQnnI",
31972+ "ed25519:ALICEDEVICE1525": "t+VI7kKYBvvoZ/tLiJHbTghOkz49NPdBIrKCRhvKMVM"
31973+ },
31974+ "signatures": {
31975+ "@alice_1525:hs1": {
31976+ "ed25519:ALICEDEVICE1525": "wZJC2DNHOPJgiZ24W7qIuSWO5klBWGv9TbfmIVPP6fR1U+d3vpOZSZuyl8mlgDj47LynkcO9IA6ppbk1UIM+AA"
31977+ }
31978+ },
31979+ "user_id": "@alice_1525:hs1",
31980+ "unsigned": {}
31981+ }
31982+ },
31983+ "@alice_1528:hs1": {
31984+ "ALICEDEVICE1528": {
31985+ "algorithms": [
31986+ "m.olm.v1.curve25519-aes-sha2",
31987+ "m.megolm.v1.aes-sha2"
31988+ ],
31989+ "device_id": "ALICEDEVICE1528",
31990+ "keys": {
31991+ "curve25519:ALICEDEVICE1528": "VLJuFvFHtd1WPEqnSfgL5/iJH2Igb1gpRII4RBDviAM",
31992+ "ed25519:ALICEDEVICE1528": "VZhWldWpiFnwNXlgtedcH6L1wm5lmU7S/9fpNPFFCEU"
31993+ },
31994+ "signatures": {
31995+ "@alice_1528:hs1": {
31996+ "ed25519:ALICEDEVICE1528": "fvSqVqu/26Tff2QyYITj24rfgR0uS+sOYUWd7My7dO5rARoVUuceAcR8H7FiKhMYmxpJ7ctHW7UTqQ3kSDLJCg"
31997+ }
31998+ },
31999+ "user_id": "@alice_1528:hs1",
32000+ "unsigned": {}
32001+ }
32002+ },
32003+ "@alice_1529:hs1": {
32004+ "ALICEDEVICE1529": {
32005+ "algorithms": [
32006+ "m.olm.v1.curve25519-aes-sha2",
32007+ "m.megolm.v1.aes-sha2"
32008+ ],
32009+ "device_id": "ALICEDEVICE1529",
32010+ "keys": {
32011+ "curve25519:ALICEDEVICE1529": "AIJHm2D2pPVSvAWwKdaxbn0PNTB904LlCu8eZFy0vGU",
32012+ "ed25519:ALICEDEVICE1529": "WyMgpAx16PFaeiz2pxhflsGCnbxF+rPNwgSLWRf6bWo"
32013+ },
32014+ "signatures": {
32015+ "@alice_1529:hs1": {
32016+ "ed25519:ALICEDEVICE1529": "OhsbsAMeOPGV2xbr6QJmnNadlILRidmjON1G8/MNAIwW4LnlUKH7SDYItbi3/RWo6VeTXnLuYkkUqU4K8MlZDg"
32017+ }
32018+ },
32019+ "user_id": "@alice_1529:hs1",
32020+ "unsigned": {}
32021+ }
32022+ },
32023+ "@alice_1530:hs1": {
32024+ "ALICEDEVICE1530": {
32025+ "algorithms": [
32026+ "m.olm.v1.curve25519-aes-sha2",
32027+ "m.megolm.v1.aes-sha2"
32028+ ],
32029+ "device_id": "ALICEDEVICE1530",
32030+ "keys": {
32031+ "curve25519:ALICEDEVICE1530": "0yG8PjxoplGdu/ofWvW89yiyX8kwSFUO3rAdA15PaAE",
32032+ "ed25519:ALICEDEVICE1530": "kLzP5EDQrl6V2tjOB4DikJlN+CmWgjPJgI/r9rClWds"
32033+ },
32034+ "signatures": {
32035+ "@alice_1530:hs1": {
32036+ "ed25519:ALICEDEVICE1530": "dhzLkgs0aAn6FqRuvpkxuhXpl4cyAbFqn0z5msSsSejl+7e0PKUmeYFK0KmiYw+DKRNrXiLplnYifCR0dh8bAA"
32037+ }
32038+ },
32039+ "user_id": "@alice_1530:hs1",
32040+ "unsigned": {}
32041+ }
32042+ },
32043+ "@alice_153:hs1": {
32044+ "ALICEDEVICE153": {
32045+ "algorithms": [
32046+ "m.olm.v1.curve25519-aes-sha2",
32047+ "m.megolm.v1.aes-sha2"
32048+ ],
32049+ "device_id": "ALICEDEVICE153",
32050+ "keys": {
32051+ "curve25519:ALICEDEVICE153": "hHEwR1LJY4sqjGVFeJCu6dXM0IC9cVD8KCo027qvNxA",
32052+ "ed25519:ALICEDEVICE153": "QorASAuVGGEQNfpQ1cYUMqFWe+IOQrHSP3R1/bxBUX4"
32053+ },
32054+ "signatures": {
32055+ "@alice_153:hs1": {
32056+ "ed25519:ALICEDEVICE153": "jpJQWlf/o7S05oWuZmqadZu06lWNUlB8T65Dp83id+78YZ5fE732Zs/NwfBIoqiR3ykEkfuuTJbkdHNA036eDg"
32057+ }
32058+ },
32059+ "user_id": "@alice_153:hs1",
32060+ "unsigned": {}
32061+ }
32062+ },
32063+ "@alice_1554:hs1": {
32064+ "ALICEDEVICE1554": {
32065+ "algorithms": [
32066+ "m.olm.v1.curve25519-aes-sha2",
32067+ "m.megolm.v1.aes-sha2"
32068+ ],
32069+ "device_id": "ALICEDEVICE1554",
32070+ "keys": {
32071+ "curve25519:ALICEDEVICE1554": "Hta8Fv+kKB3vJvk66A6e+tnm5G/E4FD/HHdeKJW1R14",
32072+ "ed25519:ALICEDEVICE1554": "sOY18x74rRhU3d4AKxDJuPgtre8ObvzJKzPeE3kag/M"
32073+ },
32074+ "signatures": {
32075+ "@alice_1554:hs1": {
32076+ "ed25519:ALICEDEVICE1554": "WRO+Zgse2GSiIJYS4JLiQG2gNJytIalIxw/mWWEmKpvm54YkQUjeStOKOKFkOisFFALRvu/8v9EZ5FNwG6XQDQ"
32077+ }
32078+ },
32079+ "user_id": "@alice_1554:hs1",
32080+ "unsigned": {}
32081+ }
32082+ },
32083+ "@alice_1558:hs1": {
32084+ "ALICEDEVICE1558": {
32085+ "algorithms": [
32086+ "m.olm.v1.curve25519-aes-sha2",
32087+ "m.megolm.v1.aes-sha2"
32088+ ],
32089+ "device_id": "ALICEDEVICE1558",
32090+ "keys": {
32091+ "curve25519:ALICEDEVICE1558": "h/gZdauQhzwwdC1ukuadynq5hB0lbtDtF4Qcr9ikmhk",
32092+ "ed25519:ALICEDEVICE1558": "3R1rXvCu8jSqkS+mx6pwoL9zHk/mWnQacrYOVO6ygo0"
32093+ },
32094+ "signatures": {
32095+ "@alice_1558:hs1": {
32096+ "ed25519:ALICEDEVICE1558": "Pi08K5afW/VQ2so+JCTugpnSUygqTGTd9twM3Z4b3NZB+9Sn/RA4vyxkqSAcDFWkU2u51c+dstBH6svxlQlnCA"
32097+ }
32098+ },
32099+ "user_id": "@alice_1558:hs1",
32100+ "unsigned": {}
32101+ }
32102+ },
32103+ "@alice_1567:hs1": {
32104+ "ALICEDEVICE1567": {
32105+ "algorithms": [
32106+ "m.olm.v1.curve25519-aes-sha2",
32107+ "m.megolm.v1.aes-sha2"
32108+ ],
32109+ "device_id": "ALICEDEVICE1567",
32110+ "keys": {
32111+ "curve25519:ALICEDEVICE1567": "1FgVEMui5qgga8xBx6fAI5c5IdqsGW+VnMrzF1nqgn4",
32112+ "ed25519:ALICEDEVICE1567": "BR6dHnKDf9DlUHo5VaB8N4EAlxkMetiuKv4wAJh+uBo"
32113+ },
32114+ "signatures": {
32115+ "@alice_1567:hs1": {
32116+ "ed25519:ALICEDEVICE1567": "RKNEYcdowaZoYExaiGbWRlc8g55Jdvg3JV5dPPKRIBF61c2MjHssOzAKOK9JeN1D860zdIMRsTyVOnsPP6CJDA"
32117+ }
32118+ },
32119+ "user_id": "@alice_1567:hs1",
32120+ "unsigned": {}
32121+ }
32122+ },
32123+ "@alice_1591:hs1": {
32124+ "ALICEDEVICE1591": {
32125+ "algorithms": [
32126+ "m.olm.v1.curve25519-aes-sha2",
32127+ "m.megolm.v1.aes-sha2"
32128+ ],
32129+ "device_id": "ALICEDEVICE1591",
32130+ "keys": {
32131+ "curve25519:ALICEDEVICE1591": "bXONiIiVUNpsd8X48fqoUCt1GMDferQqSoahISONIEo",
32132+ "ed25519:ALICEDEVICE1591": "iVfmtN5pnY1xyNEbJbEyWrFEdwwhxjhycP25DMFNmHE"
32133+ },
32134+ "signatures": {
32135+ "@alice_1591:hs1": {
32136+ "ed25519:ALICEDEVICE1591": "JHTv9SuTtHBEo1TG5nmypPpPfNldt6GdVTI2/2SlDtphVR5a/DhDwt6iqtTU2Z5ZNynO4+kRa9Ez5d+97aoiBQ"
32137+ }
32138+ },
32139+ "user_id": "@alice_1591:hs1",
32140+ "unsigned": {}
32141+ }
32142+ },
32143+ "@alice_1592:hs1": {
32144+ "ALICEDEVICE1592": {
32145+ "algorithms": [
32146+ "m.olm.v1.curve25519-aes-sha2",
32147+ "m.megolm.v1.aes-sha2"
32148+ ],
32149+ "device_id": "ALICEDEVICE1592",
32150+ "keys": {
32151+ "curve25519:ALICEDEVICE1592": "sfDFlvumgBTqvIylY+sHIoKE3203zsJJ4jo4GPIOXG4",
32152+ "ed25519:ALICEDEVICE1592": "5+OemcxWZ1rFxPeDZkH2tviW3Q3aHQS7kg8k4mn7jiQ"
32153+ },
32154+ "signatures": {
32155+ "@alice_1592:hs1": {
32156+ "ed25519:ALICEDEVICE1592": "KjKk/auFgVu4yYrRnaZNTuXBxpfLcf5OP2knDlFMx7KBZuWFYDKVEN90R6z2tUNfhVpIiCLzcz5+azPQc05+CA"
32157+ }
32158+ },
32159+ "user_id": "@alice_1592:hs1",
32160+ "unsigned": {}
32161+ }
32162+ },
32163+ "@alice_1594:hs1": {
32164+ "ALICEDEVICE1594": {
32165+ "algorithms": [
32166+ "m.olm.v1.curve25519-aes-sha2",
32167+ "m.megolm.v1.aes-sha2"
32168+ ],
32169+ "device_id": "ALICEDEVICE1594",
32170+ "keys": {
32171+ "curve25519:ALICEDEVICE1594": "cy3SU3uRq1GAHlBPczji3uSwfrM0Y2U8J9LOOpmmfGQ",
32172+ "ed25519:ALICEDEVICE1594": "WhJKVTtmbTnu9RAvh7s4W1dclEqUX5XKumxaKB6zevA"
32173+ },
32174+ "signatures": {
32175+ "@alice_1594:hs1": {
32176+ "ed25519:ALICEDEVICE1594": "6qyEPZtKQ8iCdZ+aAxjEQSdw7U4eVy3BB8yRNvULh5aY2yYzV9GC1gb8w7gg/5mz+7udr8o1cnmuipAg2FDCBw"
32177+ }
32178+ },
32179+ "user_id": "@alice_1594:hs1",
32180+ "unsigned": {}
32181+ }
32182+ },
32183+ "@alice_1595:hs1": {
32184+ "ALICEDEVICE1595": {
32185+ "algorithms": [
32186+ "m.olm.v1.curve25519-aes-sha2",
32187+ "m.megolm.v1.aes-sha2"
32188+ ],
32189+ "device_id": "ALICEDEVICE1595",
32190+ "keys": {
32191+ "curve25519:ALICEDEVICE1595": "bzRrVuI9rdkfjZb9SYGqhvZzy+au1s6a4yW0LSNzgBk",
32192+ "ed25519:ALICEDEVICE1595": "ZcXeNF/plYSsjSE5Go4ttIMquRkPXdy9DGqJaayYLv4"
32193+ },
32194+ "signatures": {
32195+ "@alice_1595:hs1": {
32196+ "ed25519:ALICEDEVICE1595": "ofYmuERtnhT0CnYFa8TmE7mmPHICCQmogxcFgk/qW1nlF/2q5HUjf887/wZZXzW814HiniAIf2AeF+Zcx43jBA"
32197+ }
32198+ },
32199+ "user_id": "@alice_1595:hs1",
32200+ "unsigned": {}
32201+ }
32202+ },
32203+ "@alice_1622:hs1": {
32204+ "ALICEDEVICE1622": {
32205+ "algorithms": [
32206+ "m.olm.v1.curve25519-aes-sha2",
32207+ "m.megolm.v1.aes-sha2"
32208+ ],
32209+ "device_id": "ALICEDEVICE1622",
32210+ "keys": {
32211+ "curve25519:ALICEDEVICE1622": "qB3V2l8wd+xitpRxC84IFt+s/22nyUdu70mVHnj91F8",
32212+ "ed25519:ALICEDEVICE1622": "+faz9KLXeHABHqW7EOKKHVCSaeBZMW8R6LGmaAN04LU"
32213+ },
32214+ "signatures": {
32215+ "@alice_1622:hs1": {
32216+ "ed25519:ALICEDEVICE1622": "dMfadH528+UAagxT9IzSchXDDx4c+8yH+BIm+eL2Ja8avOTJCy9WNHZUpfQTCxcL8MzsQ7ZaHadpe/K09GZrBQ"
32217+ }
32218+ },
32219+ "user_id": "@alice_1622:hs1",
32220+ "unsigned": {}
32221+ }
32222+ },
32223+ "@alice_1629:hs1": {
32224+ "ALICEDEVICE1629": {
32225+ "algorithms": [
32226+ "m.olm.v1.curve25519-aes-sha2",
32227+ "m.megolm.v1.aes-sha2"
32228+ ],
32229+ "device_id": "ALICEDEVICE1629",
32230+ "keys": {
32231+ "curve25519:ALICEDEVICE1629": "BynVwnXfk8iwTl2AqwW511T0lndb9zQvDQ16pjqjv2Q",
32232+ "ed25519:ALICEDEVICE1629": "+wBs46TQ+myyyc3tlYYtR7Txt3ab2lI8/nj4d5F1FW0"
32233+ },
32234+ "signatures": {
32235+ "@alice_1629:hs1": {
32236+ "ed25519:ALICEDEVICE1629": "cPnoc5QgrUiFEF9GenyITFeD7yQOzNZ77DYZb5aOacVVbX1jd7HwdU9nnXPrNdL6crD5tXSlJcVW2OmKu3RsAw"
32237+ }
32238+ },
32239+ "user_id": "@alice_1629:hs1",
32240+ "unsigned": {}
32241+ }
32242+ },
32243+ "@alice_1631:hs1": {
32244+ "ALICEDEVICE1631": {
32245+ "algorithms": [
32246+ "m.olm.v1.curve25519-aes-sha2",
32247+ "m.megolm.v1.aes-sha2"
32248+ ],
32249+ "device_id": "ALICEDEVICE1631",
32250+ "keys": {
32251+ "curve25519:ALICEDEVICE1631": "OpiGKZb7vUUR2Lf6HvljV0KajkRc6RDruRAJ3jjOq1s",
32252+ "ed25519:ALICEDEVICE1631": "k+mx3OEMYYqbYaW07mW50U7wAPnnrF452BK8mjclE4Q"
32253+ },
32254+ "signatures": {
32255+ "@alice_1631:hs1": {
32256+ "ed25519:ALICEDEVICE1631": "e88wgOQ3zrvCfSwyHGEuiSmnM6Sdb7MlX6vGDGHfzg9cxxZo6/Ip+QIJGOr/AzRqPExsGNy7wjrR2OH2IvTOCA"
32257+ }
32258+ },
32259+ "user_id": "@alice_1631:hs1",
32260+ "unsigned": {}
32261+ }
32262+ },
32263+ "@alice_1639:hs1": {
32264+ "ALICEDEVICE1639": {
32265+ "algorithms": [
32266+ "m.olm.v1.curve25519-aes-sha2",
32267+ "m.megolm.v1.aes-sha2"
32268+ ],
32269+ "device_id": "ALICEDEVICE1639",
32270+ "keys": {
32271+ "curve25519:ALICEDEVICE1639": "tjraIQfU+gUD1r4LpoBC2HLBOpaN+D7PXhk1gfU1kDM",
32272+ "ed25519:ALICEDEVICE1639": "Mpl8XHt5BNPvTvyiothNMkahfYrRjip97Ns9n8T65i0"
32273+ },
32274+ "signatures": {
32275+ "@alice_1639:hs1": {
32276+ "ed25519:ALICEDEVICE1639": "PdYoj/kXN39JRZmUsTcrENdHsQmKYJLV+7DPlL0HGw5hLWXsNGGmTXGPN8mItbz0Qdrv8s6DBjMS3Rg9JZT4AA"
32277+ }
32278+ },
32279+ "user_id": "@alice_1639:hs1",
32280+ "unsigned": {}
32281+ }
32282+ },
32283+ "@alice_1641:hs1": {
32284+ "ALICEDEVICE1641": {
32285+ "algorithms": [
32286+ "m.olm.v1.curve25519-aes-sha2",
32287+ "m.megolm.v1.aes-sha2"
32288+ ],
32289+ "device_id": "ALICEDEVICE1641",
32290+ "keys": {
32291+ "curve25519:ALICEDEVICE1641": "b1KMwsCaqDP6dVokNrcetPglVHY8MBV5iQ4sU+BRiU4",
32292+ "ed25519:ALICEDEVICE1641": "xN3LODDR7mUfyp9Ok7j6He30Y/crR1bzD8O2vhACSDo"
32293+ },
32294+ "signatures": {
32295+ "@alice_1641:hs1": {
32296+ "ed25519:ALICEDEVICE1641": "oROGzVqi7py5CL7wpyTdD8zYcflFX+uPDWcovXBBfMY9E8D1vA9glbrgIlVpux0ytx3F1zKlHZEMuExGmJKPCw"
32297+ }
32298+ },
32299+ "user_id": "@alice_1641:hs1",
32300+ "unsigned": {}
32301+ }
32302+ },
32303+ "@alice_1648:hs1": {
32304+ "ALICEDEVICE1648": {
32305+ "algorithms": [
32306+ "m.olm.v1.curve25519-aes-sha2",
32307+ "m.megolm.v1.aes-sha2"
32308+ ],
32309+ "device_id": "ALICEDEVICE1648",
32310+ "keys": {
32311+ "curve25519:ALICEDEVICE1648": "BPyGya5G/8+83gEf1fIPLP4nji8ypmaAP/eBEEfSLWk",
32312+ "ed25519:ALICEDEVICE1648": "HJfNxigtAVCPVAo00cI3bSYweeBmZClKQohII4LhIoQ"
32313+ },
32314+ "signatures": {
32315+ "@alice_1648:hs1": {
32316+ "ed25519:ALICEDEVICE1648": "APjY2iquVLh2u+po+FCruMRW/72YtAjrcVrxh2zbOK8txqlDGqitg8qpbA0vSbRSP6jaX9+9PRhX3/vOLT/WBw"
32317+ }
32318+ },
32319+ "user_id": "@alice_1648:hs1",
32320+ "unsigned": {}
32321+ }
32322+ },
32323+ "@alice_1650:hs1": {
32324+ "ALICEDEVICE1650": {
32325+ "algorithms": [
32326+ "m.olm.v1.curve25519-aes-sha2",
32327+ "m.megolm.v1.aes-sha2"
32328+ ],
32329+ "device_id": "ALICEDEVICE1650",
32330+ "keys": {
32331+ "curve25519:ALICEDEVICE1650": "GVgYxIECQeOIM5bnAGJkpYRANKPiFsMlTq/OYdl4JzA",
32332+ "ed25519:ALICEDEVICE1650": "h/hqp5q4pou0QN+FiJ94Dw63CAUYR2hdxddBmCxJZu8"
32333+ },
32334+ "signatures": {
32335+ "@alice_1650:hs1": {
32336+ "ed25519:ALICEDEVICE1650": "1MSuqN8VeNhfD4OVsNxbyjokhPeBiytrkVV8oCp8P9QBosbKJDPLkmNvENpczHxj5i6mJMORviHgNWcaHEkJDw"
32337+ }
32338+ },
32339+ "user_id": "@alice_1650:hs1",
32340+ "unsigned": {}
32341+ }
32342+ },
32343+ "@alice_1651:hs1": {
32344+ "ALICEDEVICE1651": {
32345+ "algorithms": [
32346+ "m.olm.v1.curve25519-aes-sha2",
32347+ "m.megolm.v1.aes-sha2"
32348+ ],
32349+ "device_id": "ALICEDEVICE1651",
32350+ "keys": {
32351+ "curve25519:ALICEDEVICE1651": "xguEdNP2IW7QYOdxd170Lfx84bphCnwCJHfJaPQPnSE",
32352+ "ed25519:ALICEDEVICE1651": "O2Rc1PyN9nywHtXvbLmfSQb3gXxS4iwBFXHSUT4bClk"
32353+ },
32354+ "signatures": {
32355+ "@alice_1651:hs1": {
32356+ "ed25519:ALICEDEVICE1651": "UFxgAlT4HTpT1m35eAJD9fw4M7Bl0yTxJfeaeKo+8Zu2UstNM3emVV+1L8yAIB0p9E9VZ7hquDx+UIS/ytl/Bw"
32357+ }
32358+ },
32359+ "user_id": "@alice_1651:hs1",
32360+ "unsigned": {}
32361+ }
32362+ },
32363+ "@alice_1654:hs1": {
32364+ "ALICEDEVICE1654": {
32365+ "algorithms": [
32366+ "m.olm.v1.curve25519-aes-sha2",
32367+ "m.megolm.v1.aes-sha2"
32368+ ],
32369+ "device_id": "ALICEDEVICE1654",
32370+ "keys": {
32371+ "curve25519:ALICEDEVICE1654": "GPE168WL1mdYzslfMZ4I9OMRCavlCNrttp2Qy8L1PRk",
32372+ "ed25519:ALICEDEVICE1654": "UvL5wBsX75fswiEL2fOXmwmsg91tYeB2Ff3w3/VArek"
32373+ },
32374+ "signatures": {
32375+ "@alice_1654:hs1": {
32376+ "ed25519:ALICEDEVICE1654": "OhFO3IAlmbT/bDFG9gv8esmqj+n3gkQn+/CZZsfb7nAkmZ1+uEkHkchbbxjuPtFnUzu3T8Pxda/lrlCdGj6/Aw"
32377+ }
32378+ },
32379+ "user_id": "@alice_1654:hs1",
32380+ "unsigned": {}
32381+ }
32382+ },
32383+ "@alice_1666:hs1": {
32384+ "ALICEDEVICE1666": {
32385+ "algorithms": [
32386+ "m.olm.v1.curve25519-aes-sha2",
32387+ "m.megolm.v1.aes-sha2"
32388+ ],
32389+ "device_id": "ALICEDEVICE1666",
32390+ "keys": {
32391+ "curve25519:ALICEDEVICE1666": "HvTKSAAy9aBfdkaEdBcwro8Xznz1MtdAXgAAm1cAeCU",
32392+ "ed25519:ALICEDEVICE1666": "XOHnnbkTz8EZugj5LbPzN+jNeplhGF+yO7FocSySe9I"
32393+ },
32394+ "signatures": {
32395+ "@alice_1666:hs1": {
32396+ "ed25519:ALICEDEVICE1666": "5rOSb5E4YE0uSFCm5S3wXuYaezyTfukWWe/dLEHGw/NWvrjkWofLPMOAj2PojldnsIYc85riJNhb/o8Q8mZ7Aw"
32397+ }
32398+ },
32399+ "user_id": "@alice_1666:hs1",
32400+ "unsigned": {}
32401+ }
32402+ },
32403+ "@alice_1670:hs1": {
32404+ "ALICEDEVICE1670": {
32405+ "algorithms": [
32406+ "m.olm.v1.curve25519-aes-sha2",
32407+ "m.megolm.v1.aes-sha2"
32408+ ],
32409+ "device_id": "ALICEDEVICE1670",
32410+ "keys": {
32411+ "curve25519:ALICEDEVICE1670": "P90P39TKMjKso7I99ZnOzQdnx8iVVOp8QtCYGQiLY2w",
32412+ "ed25519:ALICEDEVICE1670": "Wk1Z4d5cjLsk4a13TxXNTVOhiIEAOEgY2CcYrsLsmeQ"
32413+ },
32414+ "signatures": {
32415+ "@alice_1670:hs1": {
32416+ "ed25519:ALICEDEVICE1670": "xGoGWSehtEV812rUOMEe4590jAO7dXz6Sc5nrSBKPY/C14zZS4eSEI67okGDTIF3PVqnTub7QnIPt0KHNayEAQ"
32417+ }
32418+ },
32419+ "user_id": "@alice_1670:hs1",
32420+ "unsigned": {}
32421+ }
32422+ },
32423+ "@alice_1674:hs1": {
32424+ "ALICEDEVICE1674": {
32425+ "algorithms": [
32426+ "m.olm.v1.curve25519-aes-sha2",
32427+ "m.megolm.v1.aes-sha2"
32428+ ],
32429+ "device_id": "ALICEDEVICE1674",
32430+ "keys": {
32431+ "curve25519:ALICEDEVICE1674": "kxJl5+YNsF3Lg2ltZM4lm7+A98fD/5dJdxaqGhbA9HA",
32432+ "ed25519:ALICEDEVICE1674": "SgHyI2urbuPAMT16jEF3EZvq41Z+oW4eR/NxBusoLMw"
32433+ },
32434+ "signatures": {
32435+ "@alice_1674:hs1": {
32436+ "ed25519:ALICEDEVICE1674": "eff5nV6OiCQdU7C0VJpoPaXfJ3rDFFs8OEpNX2ln0RC2OSKj8K3MdMqo3yTDwGWJn8IKPDulbHzhW7JEMVZ+CQ"
32437+ }
32438+ },
32439+ "user_id": "@alice_1674:hs1",
32440+ "unsigned": {}
32441+ }
32442+ },
32443+ "@alice_1682:hs1": {
32444+ "ALICEDEVICE1682": {
32445+ "algorithms": [
32446+ "m.olm.v1.curve25519-aes-sha2",
32447+ "m.megolm.v1.aes-sha2"
32448+ ],
32449+ "device_id": "ALICEDEVICE1682",
32450+ "keys": {
32451+ "curve25519:ALICEDEVICE1682": "kWDRB829zau8xWtMAxGH1/8jgBK3o1KKhnGsix12oyk",
32452+ "ed25519:ALICEDEVICE1682": "hNz77veRthNMhWB65PsS8x3JMk9PlVltT9aX3qHcsn8"
32453+ },
32454+ "signatures": {
32455+ "@alice_1682:hs1": {
32456+ "ed25519:ALICEDEVICE1682": "UZ5CtDkoWREH1c+NNUsZs0v1ZQ+6ksYhwcKBXTCwcY2k74K9emk9pRadZzS18Bf5P+ink2vpWkPGvFRyWYHmBg"
32457+ }
32458+ },
32459+ "user_id": "@alice_1682:hs1",
32460+ "unsigned": {}
32461+ }
32462+ },
32463+ "@alice_169:hs1": {
32464+ "ALICEDEVICE169": {
32465+ "algorithms": [
32466+ "m.olm.v1.curve25519-aes-sha2",
32467+ "m.megolm.v1.aes-sha2"
32468+ ],
32469+ "device_id": "ALICEDEVICE169",
32470+ "keys": {
32471+ "curve25519:ALICEDEVICE169": "SN0jyLPZqio/VTyNfMdu14mRVc8X+Q3wU6ql4d1jrSA",
32472+ "ed25519:ALICEDEVICE169": "PQW/akcb+36YtuBCQotkWhkMKO97eezS438IL6eKcdE"
32473+ },
32474+ "signatures": {
32475+ "@alice_169:hs1": {
32476+ "ed25519:ALICEDEVICE169": "XGcMvUYk5Iu2oAs8f+vTbN2z+mLu12rrwukHWijffQoy6GmLQl8CzLAsnCveAT08heSuiR4GeKNpUQJEU8+ADA"
32477+ }
32478+ },
32479+ "user_id": "@alice_169:hs1",
32480+ "unsigned": {}
32481+ }
32482+ },
32483+ "@alice_1706:hs1": {
32484+ "ALICEDEVICE1706": {
32485+ "algorithms": [
32486+ "m.olm.v1.curve25519-aes-sha2",
32487+ "m.megolm.v1.aes-sha2"
32488+ ],
32489+ "device_id": "ALICEDEVICE1706",
32490+ "keys": {
32491+ "curve25519:ALICEDEVICE1706": "1eFrNwKkL3dw/1BvhR5Tw91VI3phqiRl0RX885ahgyQ",
32492+ "ed25519:ALICEDEVICE1706": "gXE1eXvHv1eaSPTQbWELlvnbiDNs9S1Hq3kwOaeZN88"
32493+ },
32494+ "signatures": {
32495+ "@alice_1706:hs1": {
32496+ "ed25519:ALICEDEVICE1706": "/cMO2C8FncqiW7ckFbpWLi+DbTqxnOFEBcNAZ7l8bZXEJlEaayLeHp/dmb+nJ2zwMnwSFd2tpj3f9EGWBpOiCw"
32497+ }
32498+ },
32499+ "user_id": "@alice_1706:hs1",
32500+ "unsigned": {}
32501+ }
32502+ },
32503+ "@alice_1707:hs1": {
32504+ "ALICEDEVICE1707": {
32505+ "algorithms": [
32506+ "m.olm.v1.curve25519-aes-sha2",
32507+ "m.megolm.v1.aes-sha2"
32508+ ],
32509+ "device_id": "ALICEDEVICE1707",
32510+ "keys": {
32511+ "curve25519:ALICEDEVICE1707": "FOpaw3I5EO0IovkhSC7nd5UIsMzuAliMGgez7cwJngE",
32512+ "ed25519:ALICEDEVICE1707": "4ydLF7iqPOaZfORASw3gbUC3FKD4Fxbeb/5si7JKtic"
32513+ },
32514+ "signatures": {
32515+ "@alice_1707:hs1": {
32516+ "ed25519:ALICEDEVICE1707": "SEKWVRQdrC2xv9qWIIbWp3GFY0RqKgige02OKNwB0/Z5s2Fxotc6cK0gyyLcboBH6iOCFtAVQatxqhwypZP4BA"
32517+ }
32518+ },
32519+ "user_id": "@alice_1707:hs1",
32520+ "unsigned": {}
32521+ }
32522+ },
32523+ "@alice_1711:hs1": {
32524+ "ALICEDEVICE1711": {
32525+ "algorithms": [
32526+ "m.olm.v1.curve25519-aes-sha2",
32527+ "m.megolm.v1.aes-sha2"
32528+ ],
32529+ "device_id": "ALICEDEVICE1711",
32530+ "keys": {
32531+ "curve25519:ALICEDEVICE1711": "2hbjf8p6pQH2bj+ocIZtzfUQvC9xnnLpNaGKYLWI3BU",
32532+ "ed25519:ALICEDEVICE1711": "ggiogYLCt96HWfUyhpTEAQ4r3gheM3h3gjkoO3197VA"
32533+ },
32534+ "signatures": {
32535+ "@alice_1711:hs1": {
32536+ "ed25519:ALICEDEVICE1711": "VdkEGP3B0xJp1TRtZGIWaRPZ5vXUNYWlsvp2qqBqcHcLVzpDWuX67Ev2epK9abUeJMj6LnC7951GZVTMRP8DBw"
32537+ }
32538+ },
32539+ "user_id": "@alice_1711:hs1",
32540+ "unsigned": {}
32541+ }
32542+ },
32543+ "@alice_1713:hs1": {
32544+ "ALICEDEVICE1713": {
32545+ "algorithms": [
32546+ "m.olm.v1.curve25519-aes-sha2",
32547+ "m.megolm.v1.aes-sha2"
32548+ ],
32549+ "device_id": "ALICEDEVICE1713",
32550+ "keys": {
32551+ "curve25519:ALICEDEVICE1713": "34OnGoMNTYbCN1dcMgZn81ruGY75PUkpz4j1CYBA0hc",
32552+ "ed25519:ALICEDEVICE1713": "sQPNvGgT704L9K9gSCbpZtbvo1lYLSaHUqRrZBBWik4"
32553+ },
32554+ "signatures": {
32555+ "@alice_1713:hs1": {
32556+ "ed25519:ALICEDEVICE1713": "SoqMJbqA0GPfyN0a/zQDRJtVv6L23yPhnZ56DZLqAJSWHEgF4NGUxtbNe73zN6/s0c2Z+DaoloWY06WJl7ORDQ"
32557+ }
32558+ },
32559+ "user_id": "@alice_1713:hs1",
32560+ "unsigned": {}
32561+ }
32562+ },
32563+ "@alice_1714:hs1": {
32564+ "ALICEDEVICE1714": {
32565+ "algorithms": [
32566+ "m.olm.v1.curve25519-aes-sha2",
32567+ "m.megolm.v1.aes-sha2"
32568+ ],
32569+ "device_id": "ALICEDEVICE1714",
32570+ "keys": {
32571+ "curve25519:ALICEDEVICE1714": "cLhANPcj/iowLLBi3ZfNdMFfeHEZrxNu0vg+60P4nyk",
32572+ "ed25519:ALICEDEVICE1714": "V/4k20hqIc8A5GD70DQhp8X3DImaxbbHWX2TYmDZcuk"
32573+ },
32574+ "signatures": {
32575+ "@alice_1714:hs1": {
32576+ "ed25519:ALICEDEVICE1714": "ZS+1OV8s+aN/uBxAtJ0eLPUmGJhTd2CkdBd3DaBQ3bbgOoppVDxprl3K+iVG81pwbd6HKlyObo/eH177G/y5CA"
32577+ }
32578+ },
32579+ "user_id": "@alice_1714:hs1",
32580+ "unsigned": {}
32581+ }
32582+ },
32583+ "@alice_1734:hs1": {
32584+ "ALICEDEVICE1734": {
32585+ "algorithms": [
32586+ "m.olm.v1.curve25519-aes-sha2",
32587+ "m.megolm.v1.aes-sha2"
32588+ ],
32589+ "device_id": "ALICEDEVICE1734",
32590+ "keys": {
32591+ "curve25519:ALICEDEVICE1734": "5/SMxNw/Hz54U7QcTdjxXMu6unq79pP460ARmkLlBVI",
32592+ "ed25519:ALICEDEVICE1734": "KupC0NMaTmoAx/yWcMrQe5i03WvT+CdxdfZNYhWL8pE"
32593+ },
32594+ "signatures": {
32595+ "@alice_1734:hs1": {
32596+ "ed25519:ALICEDEVICE1734": "7G0QS0c6oX7fhD1PsUW7ThF2cpcNokfGAxyMkvqMoC/N9zTbDwOXjex+aeFprTBLwb0mN2yX1Nnw+egwHV3+Bg"
32597+ }
32598+ },
32599+ "user_id": "@alice_1734:hs1",
32600+ "unsigned": {}
32601+ }
32602+ },
32603+ "@alice_1754:hs1": {
32604+ "ALICEDEVICE1754": {
32605+ "algorithms": [
32606+ "m.olm.v1.curve25519-aes-sha2",
32607+ "m.megolm.v1.aes-sha2"
32608+ ],
32609+ "device_id": "ALICEDEVICE1754",
32610+ "keys": {
32611+ "curve25519:ALICEDEVICE1754": "wbqZcoC+AwUvPJQmliHlf6OU655VIRaSCubTOnzwZQM",
32612+ "ed25519:ALICEDEVICE1754": "AD8OVOAJIVTUbqR664D8l7pcZ4kVLjffKrjqVoALfWc"
32613+ },
32614+ "signatures": {
32615+ "@alice_1754:hs1": {
32616+ "ed25519:ALICEDEVICE1754": "LjwnjO0KOwn97PZbkhxIUfCcnVgMkG/u0heinbMF+/du4KPn2M7D54WtIFmQFUQ7flUDaJoA2c8sLzUJ4Do8CA"
32617+ }
32618+ },
32619+ "user_id": "@alice_1754:hs1",
32620+ "unsigned": {}
32621+ }
32622+ },
32623+ "@alice_1765:hs1": {
32624+ "ALICEDEVICE1765": {
32625+ "algorithms": [
32626+ "m.olm.v1.curve25519-aes-sha2",
32627+ "m.megolm.v1.aes-sha2"
32628+ ],
32629+ "device_id": "ALICEDEVICE1765",
32630+ "keys": {
32631+ "curve25519:ALICEDEVICE1765": "DLJ4TJwDk1K8ybLknAazTgXeJNtHKWmgIyER6dDGkBA",
32632+ "ed25519:ALICEDEVICE1765": "XYEBSg4RgvwX3s+bS06ELMJKQ/cndslhcLyms5ke0h0"
32633+ },
32634+ "signatures": {
32635+ "@alice_1765:hs1": {
32636+ "ed25519:ALICEDEVICE1765": "jKMHk4UFpxw3eWiRfyPRPBn8paxuLJ0Kf8DPO6Iiu0TybVRdynydrbnBHt8Cnn1W52bCPeixl5m4EIc3ZMQhDQ"
32637+ }
32638+ },
32639+ "user_id": "@alice_1765:hs1",
32640+ "unsigned": {}
32641+ }
32642+ },
32643+ "@alice_1767:hs1": {
32644+ "ALICEDEVICE1767": {
32645+ "algorithms": [
32646+ "m.olm.v1.curve25519-aes-sha2",
32647+ "m.megolm.v1.aes-sha2"
32648+ ],
32649+ "device_id": "ALICEDEVICE1767",
32650+ "keys": {
32651+ "curve25519:ALICEDEVICE1767": "hl5YHAmqnW+uH0eMHhWPTtOm32xBhbrkdW+KDfW1BX4",
32652+ "ed25519:ALICEDEVICE1767": "h+sRik61WQbcHvODZazRxdjSnJYAs/OasRmvMeVLKlE"
32653+ },
32654+ "signatures": {
32655+ "@alice_1767:hs1": {
32656+ "ed25519:ALICEDEVICE1767": "Zv/JE1YRuV9q0BXOQVtEL3NS5rERnV5w0wr09ybtg/bsX+HnJzmcyp75k9n5u8RH4ycPtSi5CZni9QsfJI68Bw"
32657+ }
32658+ },
32659+ "user_id": "@alice_1767:hs1",
32660+ "unsigned": {}
32661+ }
32662+ },
32663+ "@alice_176:hs1": {
32664+ "ALICEDEVICE176": {
32665+ "algorithms": [
32666+ "m.olm.v1.curve25519-aes-sha2",
32667+ "m.megolm.v1.aes-sha2"
32668+ ],
32669+ "device_id": "ALICEDEVICE176",
32670+ "keys": {
32671+ "curve25519:ALICEDEVICE176": "VSn5skjrQeVCupQTmM2t9/g7AEFcwBSLgC6NSXyoWxw",
32672+ "ed25519:ALICEDEVICE176": "hvYmPCl0G7+OPYfyXQiEzLkzw5P+eVcvrfhR1YD7bGs"
32673+ },
32674+ "signatures": {
32675+ "@alice_176:hs1": {
32676+ "ed25519:ALICEDEVICE176": "8BE5pLcw9otdr720FfqbfdI6WI005SBMnCo1gWju1fW+zW+smBMSR+P5U79s4Mj9SZk0JVCdjLuEYzaMx+S+Cg"
32677+ }
32678+ },
32679+ "user_id": "@alice_176:hs1",
32680+ "unsigned": {}
32681+ }
32682+ },
32683+ "@alice_177:hs1": {
32684+ "ALICEDEVICE177": {
32685+ "algorithms": [
32686+ "m.olm.v1.curve25519-aes-sha2",
32687+ "m.megolm.v1.aes-sha2"
32688+ ],
32689+ "device_id": "ALICEDEVICE177",
32690+ "keys": {
32691+ "curve25519:ALICEDEVICE177": "g95UB9YKc83zsh/izNsfYOJQQJWUwOJH3FvFkqtAHRc",
32692+ "ed25519:ALICEDEVICE177": "5mlubnzu08lG4qM71kXYlMX1h3rBLpRsiy3i41xMl7w"
32693+ },
32694+ "signatures": {
32695+ "@alice_177:hs1": {
32696+ "ed25519:ALICEDEVICE177": "p+NZeabGAWNh8KN7jI/PLZpubdAVuCsr4L0Wb575oKVnp8wrRE88GAxvT+T/GS1xII3SevBnxAueTG4qanZOBA"
32697+ }
32698+ },
32699+ "user_id": "@alice_177:hs1",
32700+ "unsigned": {}
32701+ }
32702+ },
32703+ "@alice_1781:hs1": {
32704+ "ALICEDEVICE1781": {
32705+ "algorithms": [
32706+ "m.olm.v1.curve25519-aes-sha2",
32707+ "m.megolm.v1.aes-sha2"
32708+ ],
32709+ "device_id": "ALICEDEVICE1781",
32710+ "keys": {
32711+ "curve25519:ALICEDEVICE1781": "UqLPIMhfinMbfV+3yY4uMFCgQC2JaV4lX9dk0ayk3kM",
32712+ "ed25519:ALICEDEVICE1781": "SNayllcJfKNCA13yP0io5f2tRDikmerBQow6mORQ7nI"
32713+ },
32714+ "signatures": {
32715+ "@alice_1781:hs1": {
32716+ "ed25519:ALICEDEVICE1781": "o/7slnJZh0eHlAprzifMjXqWJnbaohWJh8b9IILwC3qXBRlUKnSeDwhG78Xq50FEUKREEdL1mtjHsO4llZDTBg"
32717+ }
32718+ },
32719+ "user_id": "@alice_1781:hs1",
32720+ "unsigned": {}
32721+ }
32722+ },
32723+ "@alice_1783:hs1": {
32724+ "ALICEDEVICE1783": {
32725+ "algorithms": [
32726+ "m.olm.v1.curve25519-aes-sha2",
32727+ "m.megolm.v1.aes-sha2"
32728+ ],
32729+ "device_id": "ALICEDEVICE1783",
32730+ "keys": {
32731+ "curve25519:ALICEDEVICE1783": "W5D78MXXqW7lzOkGeeWsuRYPS4sTQDO665Ei1eVprxU",
32732+ "ed25519:ALICEDEVICE1783": "0kMwP7Z2R0IDFtJZ+wL835kk2EOyugBByQex8GUQpHY"
32733+ },
32734+ "signatures": {
32735+ "@alice_1783:hs1": {
32736+ "ed25519:ALICEDEVICE1783": "65ZfF7nwRktb9xooKUaGcIoNi7MZWeCoKL4JdJrdBpLZSklm97bfGFF6pRX/UgE2hzBGJ2zrrAJGy5ne/2HKAQ"
32737+ }
32738+ },
32739+ "user_id": "@alice_1783:hs1",
32740+ "unsigned": {}
32741+ }
32742+ },
32743+ "@alice_1790:hs1": {
32744+ "ALICEDEVICE1790": {
32745+ "algorithms": [
32746+ "m.olm.v1.curve25519-aes-sha2",
32747+ "m.megolm.v1.aes-sha2"
32748+ ],
32749+ "device_id": "ALICEDEVICE1790",
32750+ "keys": {
32751+ "curve25519:ALICEDEVICE1790": "FZBnniS+S9vyY0WXgG9blANF9iizqyxK3bUeBtk2x04",
32752+ "ed25519:ALICEDEVICE1790": "J/aSXs2xIH2cw5ES21ErpjO34FTRMsJvpJpdT8GJCok"
32753+ },
32754+ "signatures": {
32755+ "@alice_1790:hs1": {
32756+ "ed25519:ALICEDEVICE1790": "8RMQ2g3aIPO+waoOyjbkCs8ZmW3KyBFnFQ4MWQGJdNka24OJ7Ep5fk5+llsbYxj3ZlMu+qKWYAqpixesf4ndBw"
32757+ }
32758+ },
32759+ "user_id": "@alice_1790:hs1",
32760+ "unsigned": {}
32761+ }
32762+ },
32763+ "@alice_1792:hs1": {
32764+ "ALICEDEVICE1792": {
32765+ "algorithms": [
32766+ "m.olm.v1.curve25519-aes-sha2",
32767+ "m.megolm.v1.aes-sha2"
32768+ ],
32769+ "device_id": "ALICEDEVICE1792",
32770+ "keys": {
32771+ "curve25519:ALICEDEVICE1792": "vSo5daW3RoXmnXFn3YjBZWCO6o5X4ArLsC6/ANoa9kg",
32772+ "ed25519:ALICEDEVICE1792": "FIFwhmqJX9UGvD7Zz7Bhk6aDslfvBlYyGcrfl6FhvtU"
32773+ },
32774+ "signatures": {
32775+ "@alice_1792:hs1": {
32776+ "ed25519:ALICEDEVICE1792": "SJvVNbK+OaxFxyvT6q1D0+8s5Jm1Rm9eeAfMNtWtx5/S0uC19umLEcAeCXT2MsFeAWt6SgfWb8nQrhjfD/8EBw"
32777+ }
32778+ },
32779+ "user_id": "@alice_1792:hs1",
32780+ "unsigned": {}
32781+ }
32782+ },
32783+ "@alice_1820:hs1": {
32784+ "ALICEDEVICE1820": {
32785+ "algorithms": [
32786+ "m.olm.v1.curve25519-aes-sha2",
32787+ "m.megolm.v1.aes-sha2"
32788+ ],
32789+ "device_id": "ALICEDEVICE1820",
32790+ "keys": {
32791+ "curve25519:ALICEDEVICE1820": "I6STrmGspvK2zMy9ZY+4ToFc3fOILEWn649PNSCQIUE",
32792+ "ed25519:ALICEDEVICE1820": "fxXeSX9iKlrANDBuQnvoLNGOgewRf0/acPmD6lnOMQc"
32793+ },
32794+ "signatures": {
32795+ "@alice_1820:hs1": {
32796+ "ed25519:ALICEDEVICE1820": "e7aHwQ0WVrOvaBrC+AAoNbUimbD7yey0ekl83eqghNFmbZI/5wH9CRt3QVx7VJeDgSJug98QIps/175PeqWoCw"
32797+ }
32798+ },
32799+ "user_id": "@alice_1820:hs1",
32800+ "unsigned": {}
32801+ }
32802+ },
32803+ "@alice_1831:hs1": {
32804+ "ALICEDEVICE1831": {
32805+ "algorithms": [
32806+ "m.olm.v1.curve25519-aes-sha2",
32807+ "m.megolm.v1.aes-sha2"
32808+ ],
32809+ "device_id": "ALICEDEVICE1831",
32810+ "keys": {
32811+ "curve25519:ALICEDEVICE1831": "yhREFKWdeVOODy6de8r26rAFQB/RtPCXuXPDrb6alls",
32812+ "ed25519:ALICEDEVICE1831": "DTyaYQNLKxeKB1G8gkdAflejEJnj4zHdt9g3eHtEvZ4"
32813+ },
32814+ "signatures": {
32815+ "@alice_1831:hs1": {
32816+ "ed25519:ALICEDEVICE1831": "D4xLx286G+nSLZjLQYUdrstc+G9J0UbNz6I+KW4Ah0aXEqbLWxvSUSD/uKYgWbeSiL7S5+suCPJjxWnThtLgAg"
32817+ }
32818+ },
32819+ "user_id": "@alice_1831:hs1",
32820+ "unsigned": {}
32821+ }
32822+ },
32823+ "@alice_1834:hs1": {
32824+ "ALICEDEVICE1834": {
32825+ "algorithms": [
32826+ "m.olm.v1.curve25519-aes-sha2",
32827+ "m.megolm.v1.aes-sha2"
32828+ ],
32829+ "device_id": "ALICEDEVICE1834",
32830+ "keys": {
32831+ "curve25519:ALICEDEVICE1834": "mXBFfgnSDVw2F7oLIDwaQVqAIIf+30KfajMNcLpkwSU",
32832+ "ed25519:ALICEDEVICE1834": "p0kfafKqk2he96LW/8+lIneicY+4Yl1BZVCYWCfEKDg"
32833+ },
32834+ "signatures": {
32835+ "@alice_1834:hs1": {
32836+ "ed25519:ALICEDEVICE1834": "8SvdIBa2Gr/kvjt7E3MfVdipZY+XGEZmBrEIML0t7pGBrrKBaefKyFcbetqOCnjnpP6Qs7Pu3Rgq/1qjbxsPDA"
32837+ }
32838+ },
32839+ "user_id": "@alice_1834:hs1",
32840+ "unsigned": {}
32841+ }
32842+ },
32843+ "@alice_1841:hs1": {
32844+ "ALICEDEVICE1841": {
32845+ "algorithms": [
32846+ "m.olm.v1.curve25519-aes-sha2",
32847+ "m.megolm.v1.aes-sha2"
32848+ ],
32849+ "device_id": "ALICEDEVICE1841",
32850+ "keys": {
32851+ "curve25519:ALICEDEVICE1841": "7PGD4uiFdof2/FcljndqbGRYKmybvG24FKiMmRnjyTA",
32852+ "ed25519:ALICEDEVICE1841": "exutD/Gk8KxzVmVYhU59VGac0LOFMYv4uhos4+sW4AA"
32853+ },
32854+ "signatures": {
32855+ "@alice_1841:hs1": {
32856+ "ed25519:ALICEDEVICE1841": "GPmBaeDXks7sGHrhXEgET+wStdb2CFZG9nc27VFUHc/Fpn7qxBueFhQcfm+G6MGT3KQ/zshjDmbwUgi+LQMoBA"
32857+ }
32858+ },
32859+ "user_id": "@alice_1841:hs1",
32860+ "unsigned": {}
32861+ }
32862+ },
32863+ "@alice_1849:hs1": {
32864+ "ALICEDEVICE1849": {
32865+ "algorithms": [
32866+ "m.olm.v1.curve25519-aes-sha2",
32867+ "m.megolm.v1.aes-sha2"
32868+ ],
32869+ "device_id": "ALICEDEVICE1849",
32870+ "keys": {
32871+ "curve25519:ALICEDEVICE1849": "ULCIY68bAseVBkH/u/ICltyg0VFkOEgxusVXyeZ9R1E",
32872+ "ed25519:ALICEDEVICE1849": "PRfQMMA19DrfPzG6wLR8aDGViSVGW1njB0gipKwpGHc"
32873+ },
32874+ "signatures": {
32875+ "@alice_1849:hs1": {
32876+ "ed25519:ALICEDEVICE1849": "TuUL81ZOzbIc4O1vQjyrRNQm2LJWvPmq6NCAGRYfIAqKH/au1zHcsKhiQL6OHRLOBy0B7drO96jzTWq+1dhTDA"
32877+ }
32878+ },
32879+ "user_id": "@alice_1849:hs1",
32880+ "unsigned": {}
32881+ }
32882+ },
32883+ "@alice_1850:hs1": {
32884+ "ALICEDEVICE1850": {
32885+ "algorithms": [
32886+ "m.olm.v1.curve25519-aes-sha2",
32887+ "m.megolm.v1.aes-sha2"
32888+ ],
32889+ "device_id": "ALICEDEVICE1850",
32890+ "keys": {
32891+ "curve25519:ALICEDEVICE1850": "Ep7/pNtpRVxpJzEcxg5z4prF23gH/E5QYWbeY74pLGc",
32892+ "ed25519:ALICEDEVICE1850": "kd2DZlfH9CnMioP94g2W+dHj0wvi7uKmL7yMI9UwQjY"
32893+ },
32894+ "signatures": {
32895+ "@alice_1850:hs1": {
32896+ "ed25519:ALICEDEVICE1850": "IyaG07H0pWo/7+t3hQSWNhGSaVG12jKa7at1QENqFupVfisoAJJzYu580STWnV7IBM5q5xe9yHJbdVlB1GN+CQ"
32897+ }
32898+ },
32899+ "user_id": "@alice_1850:hs1",
32900+ "unsigned": {}
32901+ }
32902+ },
32903+ "@alice_1874:hs1": {
32904+ "ALICEDEVICE1874": {
32905+ "algorithms": [
32906+ "m.olm.v1.curve25519-aes-sha2",
32907+ "m.megolm.v1.aes-sha2"
32908+ ],
32909+ "device_id": "ALICEDEVICE1874",
32910+ "keys": {
32911+ "curve25519:ALICEDEVICE1874": "oCLAqqtfGzIqY9J2b2ERUtMI74rQ5PDCZPC0rxkfvDE",
32912+ "ed25519:ALICEDEVICE1874": "2pG7jjHLDKZpAlw1MCMJAvYPOs9sYW9oRoQIUKUqoaM"
32913+ },
32914+ "signatures": {
32915+ "@alice_1874:hs1": {
32916+ "ed25519:ALICEDEVICE1874": "zoZ56TIcdc+9FiUQKgkNxclhozqIQDDdIEMVgJowbQeHqyCcnHegRls1KgBaaaFxZnm/WRcyX8Phm29zCdQABA"
32917+ }
32918+ },
32919+ "user_id": "@alice_1874:hs1",
32920+ "unsigned": {}
32921+ }
32922+ },
32923+ "@alice_1876:hs1": {
32924+ "ALICEDEVICE1876": {
32925+ "algorithms": [
32926+ "m.olm.v1.curve25519-aes-sha2",
32927+ "m.megolm.v1.aes-sha2"
32928+ ],
32929+ "device_id": "ALICEDEVICE1876",
32930+ "keys": {
32931+ "curve25519:ALICEDEVICE1876": "I8idivOdt7v/8i5hnWCjBFMF0b9lZbIV6FLRo+hIsHo",
32932+ "ed25519:ALICEDEVICE1876": "cPr/fuG9ddjzvIchQBYDzMOQStacAnWvf2kbeGNNq1U"
32933+ },
32934+ "signatures": {
32935+ "@alice_1876:hs1": {
32936+ "ed25519:ALICEDEVICE1876": "Fgd4wRRAchaRvOLSV7b/JfyHa1jAZChn3slYoYEpEwWB2iqkiu57Deh4DMunCs6OWJiESQw3lnM19hKYh2jKBw"
32937+ }
32938+ },
32939+ "user_id": "@alice_1876:hs1",
32940+ "unsigned": {}
32941+ }
32942+ },
32943+ "@alice_1879:hs1": {
32944+ "ALICEDEVICE1879": {
32945+ "algorithms": [
32946+ "m.olm.v1.curve25519-aes-sha2",
32947+ "m.megolm.v1.aes-sha2"
32948+ ],
32949+ "device_id": "ALICEDEVICE1879",
32950+ "keys": {
32951+ "curve25519:ALICEDEVICE1879": "qGtKV1d6UkqGG+cXvYpBXtQd9Ku5jp1dmPEw37JxEhg",
32952+ "ed25519:ALICEDEVICE1879": "08/sQbA1imT2WTZcOpEZF/yRjqaFNOhkwVckAOhVyqE"
32953+ },
32954+ "signatures": {
32955+ "@alice_1879:hs1": {
32956+ "ed25519:ALICEDEVICE1879": "/XaZVw83jvl8TxR8zTK3+l/KInWTB17uipVO7hzZNEt2Hpm7a2z1z+9HkOjYwvWb235FhggEc6DPDoFeOUE5Dg"
32957+ }
32958+ },
32959+ "user_id": "@alice_1879:hs1",
32960+ "unsigned": {}
32961+ }
32962+ },
32963+ "@alice_1887:hs1": {
32964+ "ALICEDEVICE1887": {
32965+ "algorithms": [
32966+ "m.olm.v1.curve25519-aes-sha2",
32967+ "m.megolm.v1.aes-sha2"
32968+ ],
32969+ "device_id": "ALICEDEVICE1887",
32970+ "keys": {
32971+ "curve25519:ALICEDEVICE1887": "OuU/mGDqdoObM8dU69+TDwzDSHWNDlUWolemlJwhV2w",
32972+ "ed25519:ALICEDEVICE1887": "cMeEcWgy3sJKoGzF3biKmRQCuCcuVnGCGEco3/Wvd4o"
32973+ },
32974+ "signatures": {
32975+ "@alice_1887:hs1": {
32976+ "ed25519:ALICEDEVICE1887": "RzGFOAP8GZo+O1vaaUtEm3ZfIen4bsarpAWgfUVH7StRa6yI8PVsPBCrFMiszCuVv1oqL3SXEVfvo28YLIfYCw"
32977+ }
32978+ },
32979+ "user_id": "@alice_1887:hs1",
32980+ "unsigned": {}
32981+ }
32982+ },
32983+ "@alice_1904:hs1": {
32984+ "ALICEDEVICE1904": {
32985+ "algorithms": [
32986+ "m.olm.v1.curve25519-aes-sha2",
32987+ "m.megolm.v1.aes-sha2"
32988+ ],
32989+ "device_id": "ALICEDEVICE1904",
32990+ "keys": {
32991+ "curve25519:ALICEDEVICE1904": "+MU8PjtdvJL0/bkXQ0KxzcJwLw5NM98si1BGZYUT2QQ",
32992+ "ed25519:ALICEDEVICE1904": "YPpwusiyT1UhBSw1YPcDmHL4i3qQnBfVek4f3ZPY7RA"
32993+ },
32994+ "signatures": {
32995+ "@alice_1904:hs1": {
32996+ "ed25519:ALICEDEVICE1904": "5q5KEWup12oHOGQjDmeSnd3RuyZ6b8gs8v07XhTVlKlujrCldMTLA8vApOZgXcoZkWOzulF3JIhCX60Eh1l1Aw"
32997+ }
32998+ },
32999+ "user_id": "@alice_1904:hs1",
33000+ "unsigned": {}
33001+ }
33002+ },
33003+ "@alice_1917:hs1": {
33004+ "ALICEDEVICE1917": {
33005+ "algorithms": [
33006+ "m.olm.v1.curve25519-aes-sha2",
33007+ "m.megolm.v1.aes-sha2"
33008+ ],
33009+ "device_id": "ALICEDEVICE1917",
33010+ "keys": {
33011+ "curve25519:ALICEDEVICE1917": "q6jEHdjNW3NQITPZcSSViVgbgo5ZLanAjbE6NKRbYTs",
33012+ "ed25519:ALICEDEVICE1917": "Nwqem/94W+nZna+FZrZI5Wfjdtsntb4dnVXekQ7dTvw"
33013+ },
33014+ "signatures": {
33015+ "@alice_1917:hs1": {
33016+ "ed25519:ALICEDEVICE1917": "3Aju31E2R9jCx/UwzwvWNcWJ7Xt2W+cjfWMsDUH0m9vwVSnSJVZbMp7j06ma9k5AOovkqIHc4TJCNENTa/OjAA"
33017+ }
33018+ },
33019+ "user_id": "@alice_1917:hs1",
33020+ "unsigned": {}
33021+ }
33022+ },
33023+ "@alice_1919:hs1": {
33024+ "ALICEDEVICE1919": {
33025+ "algorithms": [
33026+ "m.olm.v1.curve25519-aes-sha2",
33027+ "m.megolm.v1.aes-sha2"
33028+ ],
33029+ "device_id": "ALICEDEVICE1919",
33030+ "keys": {
33031+ "curve25519:ALICEDEVICE1919": "aHB3MI2kFUfynmEiIEi1Dx41i2Jc8jbkWCBYNbSz428",
33032+ "ed25519:ALICEDEVICE1919": "E9denRG3k8FVqYmsbNXs8hnTtD3P6HrMclMD/lnZNpE"
33033+ },
33034+ "signatures": {
33035+ "@alice_1919:hs1": {
33036+ "ed25519:ALICEDEVICE1919": "gmy1cHnRAfd0jc4l9P8Et4eHguZ08YZpxMZ1pxfVgcf9vjbTOp1Ih37YjP6WT40OlKynAN+MJYHrs7HH3slKBw"
33037+ }
33038+ },
33039+ "user_id": "@alice_1919:hs1",
33040+ "unsigned": {}
33041+ }
33042+ },
33043+ "@alice_192:hs1": {
33044+ "ALICEDEVICE192": {
33045+ "algorithms": [
33046+ "m.olm.v1.curve25519-aes-sha2",
33047+ "m.megolm.v1.aes-sha2"
33048+ ],
33049+ "device_id": "ALICEDEVICE192",
33050+ "keys": {
33051+ "curve25519:ALICEDEVICE192": "Xdf/fFR+7A/LQAH5AyTTk++0Ymx048DZjDPPF5jnTEA",
33052+ "ed25519:ALICEDEVICE192": "9szLQDwTSWc9e/vj86wMPHJ/oglitCqiyabfxgJ4cms"
33053+ },
33054+ "signatures": {
33055+ "@alice_192:hs1": {
33056+ "ed25519:ALICEDEVICE192": "gfgYHuXeGcpznmOdPX7FShX6NbR1aQQgE+j6AgXmU0C796aKBKYNRVJ3Y1poeRmR4QvimvOc5XRasj88GCeCCw"
33057+ }
33058+ },
33059+ "user_id": "@alice_192:hs1",
33060+ "unsigned": {}
33061+ }
33062+ },
33063+ "@alice_1931:hs1": {
33064+ "ALICEDEVICE1931": {
33065+ "algorithms": [
33066+ "m.olm.v1.curve25519-aes-sha2",
33067+ "m.megolm.v1.aes-sha2"
33068+ ],
33069+ "device_id": "ALICEDEVICE1931",
33070+ "keys": {
33071+ "curve25519:ALICEDEVICE1931": "CuPEm+gSb5xhErkPANKvDmX+ZTbFAnhPF7yflElC6D4",
33072+ "ed25519:ALICEDEVICE1931": "rywrK8Gulooxxim8GABY/hfeMkTye3G5Hr+HdKBsEzk"
33073+ },
33074+ "signatures": {
33075+ "@alice_1931:hs1": {
33076+ "ed25519:ALICEDEVICE1931": "AvDUsVpjCT/aEuo40ist1LKqW9U9bhzEtvLhbEpFK2o20U8QaWS3YQYHuxmWpFO/KpKWCXk/aQXsM7JUYnD1AA"
33077+ }
33078+ },
33079+ "user_id": "@alice_1931:hs1",
33080+ "unsigned": {}
33081+ }
33082+ },
33083+ "@alice_1944:hs1": {
33084+ "ALICEDEVICE1944": {
33085+ "algorithms": [
33086+ "m.olm.v1.curve25519-aes-sha2",
33087+ "m.megolm.v1.aes-sha2"
33088+ ],
33089+ "device_id": "ALICEDEVICE1944",
33090+ "keys": {
33091+ "curve25519:ALICEDEVICE1944": "kpPz1GsJVr3HJ6ZAMCmXDmPdQDYC3swZRltIcs7bjwk",
33092+ "ed25519:ALICEDEVICE1944": "7egy51WXChlB7/Ahd3Bd8I3fle4L+lPL+CzqIfBwFsM"
33093+ },
33094+ "signatures": {
33095+ "@alice_1944:hs1": {
33096+ "ed25519:ALICEDEVICE1944": "qXNGU8MLCngEbBGIjYx69fkmHkKA4YMpoiadpNSgeU64Y5p5RVESKaQwZTXBEppSSM/K5Z2ldPujOmy4QT4CCQ"
33097+ }
33098+ },
33099+ "user_id": "@alice_1944:hs1",
33100+ "unsigned": {}
33101+ }
33102+ },
33103+ "@alice_1955:hs1": {
33104+ "ALICEDEVICE1955": {
33105+ "algorithms": [
33106+ "m.olm.v1.curve25519-aes-sha2",
33107+ "m.megolm.v1.aes-sha2"
33108+ ],
33109+ "device_id": "ALICEDEVICE1955",
33110+ "keys": {
33111+ "curve25519:ALICEDEVICE1955": "PuIE9xbUcvC+80u7gbUgXFRUaNMF1Zx5OY/1ZJitlTc",
33112+ "ed25519:ALICEDEVICE1955": "S+GQSqKUAw2f1+qnlu39HPUmRcYc/eUurBzKlJJbgd4"
33113+ },
33114+ "signatures": {
33115+ "@alice_1955:hs1": {
33116+ "ed25519:ALICEDEVICE1955": "Zin6/+t/1fc3OOoTtzA9libLvwNRtFmSo23hjgOAjP0IEDg3jsssL3X2RvrINa9xcrqcsQVZukZCTSRHtIMlCg"
33117+ }
33118+ },
33119+ "user_id": "@alice_1955:hs1",
33120+ "unsigned": {}
33121+ }
33122+ },
33123+ "@alice_1959:hs1": {
33124+ "ALICEDEVICE1959": {
33125+ "algorithms": [
33126+ "m.olm.v1.curve25519-aes-sha2",
33127+ "m.megolm.v1.aes-sha2"
33128+ ],
33129+ "device_id": "ALICEDEVICE1959",
33130+ "keys": {
33131+ "curve25519:ALICEDEVICE1959": "ClNwO7vW+4GOf21EcsjkkDBuY+gX10mc0wLXVwY89FY",
33132+ "ed25519:ALICEDEVICE1959": "9ABhMi11yOYmg1hrnuhu0DPeDL/rkevEJu90+ZH6RHA"
33133+ },
33134+ "signatures": {
33135+ "@alice_1959:hs1": {
33136+ "ed25519:ALICEDEVICE1959": "ZsZBUvd/ofMwolJ+xPunorzmlQbXpyq1zwKsgpp7ppDdPIkbAvUg/JiLarkJdQZnVs4SpsUfbNLyyHWDHmjSAg"
33137+ }
33138+ },
33139+ "user_id": "@alice_1959:hs1",
33140+ "unsigned": {}
33141+ }
33142+ },
33143+ "@alice_1977:hs1": {
33144+ "ALICEDEVICE1977": {
33145+ "algorithms": [
33146+ "m.olm.v1.curve25519-aes-sha2",
33147+ "m.megolm.v1.aes-sha2"
33148+ ],
33149+ "device_id": "ALICEDEVICE1977",
33150+ "keys": {
33151+ "curve25519:ALICEDEVICE1977": "4LTM+kzuSBqfeI14HZJ1RNQD7Jbt6NScQA+Lj56qJHw",
33152+ "ed25519:ALICEDEVICE1977": "+jolEYpBmEbWlNMMev8KMp+ir8L5x3Pk7qFQn4KlWpQ"
33153+ },
33154+ "signatures": {
33155+ "@alice_1977:hs1": {
33156+ "ed25519:ALICEDEVICE1977": "dylzCyoW0VSJtIyDofJUrNRUcjHx1TlOgjmS2+z4qZlA5wEDZc5KD+36XT2ToDM4uSpYGe8wO6kqa5RtsH92Cg"
33157+ }
33158+ },
33159+ "user_id": "@alice_1977:hs1",
33160+ "unsigned": {}
33161+ }
33162+ },
33163+ "@alice_197:hs1": {
33164+ "ALICEDEVICE197": {
33165+ "algorithms": [
33166+ "m.olm.v1.curve25519-aes-sha2",
33167+ "m.megolm.v1.aes-sha2"
33168+ ],
33169+ "device_id": "ALICEDEVICE197",
33170+ "keys": {
33171+ "curve25519:ALICEDEVICE197": "1hZuEiKaDHgp5fOq7pgWP7MlthcO9Ks5aPcm+CaicXo",
33172+ "ed25519:ALICEDEVICE197": "2V+15LqPTRmI/uVVE+rlF1XbYLKbAWiqhqCBiCEXb7A"
33173+ },
33174+ "signatures": {
33175+ "@alice_197:hs1": {
33176+ "ed25519:ALICEDEVICE197": "ip2Z5Dou9sWLG6loK0LSx1kjm5j/hcpQiV3EwjZuKmRFZdl57H601PLGwzttjxAAA+JtlMR/7sVDZ/GWLGmaBg"
33177+ }
33178+ },
33179+ "user_id": "@alice_197:hs1",
33180+ "unsigned": {}
33181+ }
33182+ },
33183+ "@alice_1981:hs1": {
33184+ "ALICEDEVICE1981": {
33185+ "algorithms": [
33186+ "m.olm.v1.curve25519-aes-sha2",
33187+ "m.megolm.v1.aes-sha2"
33188+ ],
33189+ "device_id": "ALICEDEVICE1981",
33190+ "keys": {
33191+ "curve25519:ALICEDEVICE1981": "LwslEohRx/qdaROV7h6UCzmhL80dxQq4NtuYt3hHwDQ",
33192+ "ed25519:ALICEDEVICE1981": "dBIodoPuDhlEyirz9VKC/kWmTmT8A3MQNThGTZilfBo"
33193+ },
33194+ "signatures": {
33195+ "@alice_1981:hs1": {
33196+ "ed25519:ALICEDEVICE1981": "7IvnskJbrWHPeSTwOGLSzk9HqFniLHj2cWjT8NfLLJbRfyAsAub3OuGzCAgGbDHyew1pVWvK099Z7jOWNfXIDA"
33197+ }
33198+ },
33199+ "user_id": "@alice_1981:hs1",
33200+ "unsigned": {}
33201+ }
33202+ },
33203+ "@alice_1989:hs1": {
33204+ "ALICEDEVICE1989": {
33205+ "algorithms": [
33206+ "m.olm.v1.curve25519-aes-sha2",
33207+ "m.megolm.v1.aes-sha2"
33208+ ],
33209+ "device_id": "ALICEDEVICE1989",
33210+ "keys": {
33211+ "curve25519:ALICEDEVICE1989": "DM1ed/3GQk52OkV0TTqtBmD7DNLD5oVU1/qUYW7ZpxE",
33212+ "ed25519:ALICEDEVICE1989": "pdGHqtuK+C2FAe2E3c+tp4E6Zo88zASA8/CvSQAQyfM"
33213+ },
33214+ "signatures": {
33215+ "@alice_1989:hs1": {
33216+ "ed25519:ALICEDEVICE1989": "uD8bzhnrnCQce/u3L/EMmsolt1dNicQ6f40KWAtpiF/epQd5Cj44ptfOJQOJkCa9pd0GwQQVvZwqv1puJga0AA"
33217+ }
33218+ },
33219+ "user_id": "@alice_1989:hs1",
33220+ "unsigned": {}
33221+ }
33222+ },
33223+ "@alice_19:hs1": {
33224+ "ALICEDEVICE19": {
33225+ "algorithms": [
33226+ "m.olm.v1.curve25519-aes-sha2",
33227+ "m.megolm.v1.aes-sha2"
33228+ ],
33229+ "device_id": "ALICEDEVICE19",
33230+ "keys": {
33231+ "curve25519:ALICEDEVICE19": "6VEf/9KW8NZAJS4/HQcLwASbsMX99aCRqltrORDn/Ro",
33232+ "ed25519:ALICEDEVICE19": "K5DIScVeuEiUBKniVAFSmY6V/ERKnqpd5hlxQLXrrok"
33233+ },
33234+ "signatures": {
33235+ "@alice_19:hs1": {
33236+ "ed25519:ALICEDEVICE19": "ZEieRjVLS43kQI+gTTFcw14x7s/bs6OX513mjXkBUqcaX58MU1X8IxYWN5kABtmtGpvfn94GIQz716fhuF/sCA"
33237+ }
33238+ },
33239+ "user_id": "@alice_19:hs1",
33240+ "unsigned": {}
33241+ }
33242+ },
33243+ "@alice_202:hs1": {
33244+ "ALICEDEVICE202": {
33245+ "algorithms": [
33246+ "m.olm.v1.curve25519-aes-sha2",
33247+ "m.megolm.v1.aes-sha2"
33248+ ],
33249+ "device_id": "ALICEDEVICE202",
33250+ "keys": {
33251+ "curve25519:ALICEDEVICE202": "qxWK/6urViyJvsXuiga1J3lKqIfYyogt4oWgusQ7tnA",
33252+ "ed25519:ALICEDEVICE202": "w58J9rtX8FHG2jrVGdrcUQXTAjN5s7f+urXwrEnc7A0"
33253+ },
33254+ "signatures": {
33255+ "@alice_202:hs1": {
33256+ "ed25519:ALICEDEVICE202": "13TFR2xBzG5YABWLQsTeBoEsDFDaNy93YF4jgPo+47dmqAXcvHhRC2I7bt930OHgonaDBWBkIG/+GO5lCmOSBw"
33257+ }
33258+ },
33259+ "user_id": "@alice_202:hs1",
33260+ "unsigned": {}
33261+ }
33262+ },
33263+ "@alice_203:hs1": {
33264+ "ALICEDEVICE203": {
33265+ "algorithms": [
33266+ "m.olm.v1.curve25519-aes-sha2",
33267+ "m.megolm.v1.aes-sha2"
33268+ ],
33269+ "device_id": "ALICEDEVICE203",
33270+ "keys": {
33271+ "curve25519:ALICEDEVICE203": "d/4GEpkIZSn3MSac8F1TX7WwmXwuNTPQIXwtyfJjgws",
33272+ "ed25519:ALICEDEVICE203": "NTXsxEsNP7LdeeNKSFymGPxTfdQBCZ64XKc8Xcu33D4"
33273+ },
33274+ "signatures": {
33275+ "@alice_203:hs1": {
33276+ "ed25519:ALICEDEVICE203": "S52oYKNyhBxoarRNm865IUkbmqZwD9f56Oz3TSK0fGajDL/O+g+2ninOUaQGroyRxzmcIafWfA/BtDv1Hpx0Aw"
33277+ }
33278+ },
33279+ "user_id": "@alice_203:hs1",
33280+ "unsigned": {}
33281+ }
33282+ },
33283+ "@alice_205:hs1": {
33284+ "ALICEDEVICE205": {
33285+ "algorithms": [
33286+ "m.olm.v1.curve25519-aes-sha2",
33287+ "m.megolm.v1.aes-sha2"
33288+ ],
33289+ "device_id": "ALICEDEVICE205",
33290+ "keys": {
33291+ "curve25519:ALICEDEVICE205": "6iihOgni24OeoYWboLUfrdt39fx8p+dEiT6BzWoIcXI",
33292+ "ed25519:ALICEDEVICE205": "znJzo0oOBlEI4F+G58M61+5Zsm29yXfhRVc85+08Ltw"
33293+ },
33294+ "signatures": {
33295+ "@alice_205:hs1": {
33296+ "ed25519:ALICEDEVICE205": "AYoKXBKr9KN4BGOgUVg5RAot3YJsFx0zoll+EXGrzte3UdW1YL7RCDWFjVJTBPLDbdu31HzEKGyomyqflgzeBQ"
33297+ }
33298+ },
33299+ "user_id": "@alice_205:hs1",
33300+ "unsigned": {}
33301+ }
33302+ },
33303+ "@alice_212:hs1": {
33304+ "ALICEDEVICE212": {
33305+ "algorithms": [
33306+ "m.olm.v1.curve25519-aes-sha2",
33307+ "m.megolm.v1.aes-sha2"
33308+ ],
33309+ "device_id": "ALICEDEVICE212",
33310+ "keys": {
33311+ "curve25519:ALICEDEVICE212": "8gFQ2rPnhP3qBa1EW5FRj84dVg51f+cgyMBkCOmDSC8",
33312+ "ed25519:ALICEDEVICE212": "81lDEOGXACYzVHcI3i6/kvG0HLyiNiU6GAi1bbZOHnI"
33313+ },
33314+ "signatures": {
33315+ "@alice_212:hs1": {
33316+ "ed25519:ALICEDEVICE212": "2Nq5AWwGD19UyIRKjyxguKM4sWL01CO7s7crSz/5qXRLu8aVaxEaSIs66yE8ufg2LsaJ6mIkX9zEx3943gQ3DQ"
33317+ }
33318+ },
33319+ "user_id": "@alice_212:hs1",
33320+ "unsigned": {}
33321+ }
33322+ },
33323+ "@alice_218:hs1": {
33324+ "ALICEDEVICE218": {
33325+ "algorithms": [
33326+ "m.olm.v1.curve25519-aes-sha2",
33327+ "m.megolm.v1.aes-sha2"
33328+ ],
33329+ "device_id": "ALICEDEVICE218",
33330+ "keys": {
33331+ "curve25519:ALICEDEVICE218": "ACzmxoRH8r7wFVQz4T5azhqtz2EknOnHlsR59KKXfys",
33332+ "ed25519:ALICEDEVICE218": "I4FcXTo93pdTFZdKBhZu8buXnnAM8xM9yYupHWwgnxU"
33333+ },
33334+ "signatures": {
33335+ "@alice_218:hs1": {
33336+ "ed25519:ALICEDEVICE218": "LnhxMJkXGkg+Wp1WJYRfn952CKJaTIqZ+bZvMx9uX39bLatgab3+B6tE5QaLwc2dcMVfNUncNJ74f+z+lkB7AQ"
33337+ }
33338+ },
33339+ "user_id": "@alice_218:hs1",
33340+ "unsigned": {}
33341+ }
33342+ },
33343+ "@alice_23:hs1": {
33344+ "ALICEDEVICE23": {
33345+ "algorithms": [
33346+ "m.olm.v1.curve25519-aes-sha2",
33347+ "m.megolm.v1.aes-sha2"
33348+ ],
33349+ "device_id": "ALICEDEVICE23",
33350+ "keys": {
33351+ "curve25519:ALICEDEVICE23": "61tUsKmD404ZLuDHm64vaz7nsY8UPaqfHOheGT9toB0",
33352+ "ed25519:ALICEDEVICE23": "rLHsooDZ8qlTzNTyUXX3wXXyWyX2b3C8dHgY7HnfazA"
33353+ },
33354+ "signatures": {
33355+ "@alice_23:hs1": {
33356+ "ed25519:ALICEDEVICE23": "BubpQ69blX9TQu5PIR5Eqmn/Zpq7XHaWF/Pp6XhIEMo+zWZ71ZRsVEBahT4LFVbrzOize6rlrGeGMfTw1WY1Cw"
33357+ }
33358+ },
33359+ "user_id": "@alice_23:hs1",
33360+ "unsigned": {}
33361+ }
33362+ },
33363+ "@alice_247:hs1": {
33364+ "ALICEDEVICE247": {
33365+ "algorithms": [
33366+ "m.olm.v1.curve25519-aes-sha2",
33367+ "m.megolm.v1.aes-sha2"
33368+ ],
33369+ "device_id": "ALICEDEVICE247",
33370+ "keys": {
33371+ "curve25519:ALICEDEVICE247": "NYpF5PPnTNWKxRJnjiteXr7bwqLacQtlw/cYxZGrbko",
33372+ "ed25519:ALICEDEVICE247": "qoqstYtJTzkUgITbYHvM+DVLjFQrKXfgPq1+RQ0JUn8"
33373+ },
33374+ "signatures": {
33375+ "@alice_247:hs1": {
33376+ "ed25519:ALICEDEVICE247": "hVqZ43xktdvgac/p5gpZ/yU8QDNBeAGS8Ams+NcSnH/u6eD1qwQ8+wZm7VH1Q5nXjVkf0Nh3cELQxlXtm8cnBg"
33377+ }
33378+ },
33379+ "user_id": "@alice_247:hs1",
33380+ "unsigned": {}
33381+ }
33382+ },
33383+ "@alice_24:hs1": {
33384+ "ALICEDEVICE24": {
33385+ "algorithms": [
33386+ "m.olm.v1.curve25519-aes-sha2",
33387+ "m.megolm.v1.aes-sha2"
33388+ ],
33389+ "device_id": "ALICEDEVICE24",
33390+ "keys": {
33391+ "curve25519:ALICEDEVICE24": "di3G1BR5VLJF4JKbOq2wkVNvEvz0NxtBa7CgoN1d1Fw",
33392+ "ed25519:ALICEDEVICE24": "goU1a6X00w4cJcHKf36m9HLJyXWiqkxFYHyUteyio0Y"
33393+ },
33394+ "signatures": {
33395+ "@alice_24:hs1": {
33396+ "ed25519:ALICEDEVICE24": "kIA8pjiOOQKw+HJ8egaMkkgjkDstbnhReMNce5W4jUDLRXYdJaJ5Kq6dCnF0eU6M2Np91Mv94GA/8BvQZmjMDw"
33397+ }
33398+ },
33399+ "user_id": "@alice_24:hs1",
33400+ "unsigned": {}
33401+ }
33402+ },
33403+ "@alice_252:hs1": {
33404+ "ALICEDEVICE252": {
33405+ "algorithms": [
33406+ "m.olm.v1.curve25519-aes-sha2",
33407+ "m.megolm.v1.aes-sha2"
33408+ ],
33409+ "device_id": "ALICEDEVICE252",
33410+ "keys": {
33411+ "curve25519:ALICEDEVICE252": "DXw7hLFaVFhOFcL6MZJT7Wf+X47tLUaUaXk4ZIHeWyk",
33412+ "ed25519:ALICEDEVICE252": "D8TbYfforK9cwa0EfmTS77hgoJ2M8VlkW/vpZ82DI9c"
33413+ },
33414+ "signatures": {
33415+ "@alice_252:hs1": {
33416+ "ed25519:ALICEDEVICE252": "Tf9otk648/1nRE8nsgESrQYAZo5HxfOvnEl/HHnkwMz894Bx735rzbYzV8zO7TBtPjiIdj95fXOqedw+YDGFCA"
33417+ }
33418+ },
33419+ "user_id": "@alice_252:hs1",
33420+ "unsigned": {}
33421+ }
33422+ },
33423+ "@alice_259:hs1": {
33424+ "ALICEDEVICE259": {
33425+ "algorithms": [
33426+ "m.olm.v1.curve25519-aes-sha2",
33427+ "m.megolm.v1.aes-sha2"
33428+ ],
33429+ "device_id": "ALICEDEVICE259",
33430+ "keys": {
33431+ "curve25519:ALICEDEVICE259": "VYyEX5W5mvKJY954Csh8YDtE97RiR78AisU6U7lXDAs",
33432+ "ed25519:ALICEDEVICE259": "mmZFsr1y7K7vcoshdiiBUvMhpxrliMw/E/KyLZKLvPU"
33433+ },
33434+ "signatures": {
33435+ "@alice_259:hs1": {
33436+ "ed25519:ALICEDEVICE259": "lrw7IDaw1aAQNlNQO3WB3Npkuy3rD77+6s4gN8r6bR/man0tmz3Qdt9n1cwlpZb1zQvrw0D7+PhTpNm2dSjjCA"
33437+ }
33438+ },
33439+ "user_id": "@alice_259:hs1",
33440+ "unsigned": {}
33441+ }
33442+ },
33443+ "@alice_268:hs1": {
33444+ "ALICEDEVICE268": {
33445+ "algorithms": [
33446+ "m.olm.v1.curve25519-aes-sha2",
33447+ "m.megolm.v1.aes-sha2"
33448+ ],
33449+ "device_id": "ALICEDEVICE268",
33450+ "keys": {
33451+ "curve25519:ALICEDEVICE268": "uNMVwJHHZE1tDUBzqY+SYx6tLVoFaIPJTdXnFSJo4kw",
33452+ "ed25519:ALICEDEVICE268": "7K2MjQJF8OKn2zfHJxQMWm8qou5Z4Ixl1rXuo1/liLY"
33453+ },
33454+ "signatures": {
33455+ "@alice_268:hs1": {
33456+ "ed25519:ALICEDEVICE268": "/CcAMXM8v8Inlof1wYINEW8Q3dy/mNMV/6mmHuNOzFJOwfBGn3XFeibocFZc+tbKx9BasCOjd11HOxxN8L1nAQ"
33457+ }
33458+ },
33459+ "user_id": "@alice_268:hs1",
33460+ "unsigned": {}
33461+ }
33462+ },
33463+ "@alice_293:hs1": {
33464+ "ALICEDEVICE293": {
33465+ "algorithms": [
33466+ "m.olm.v1.curve25519-aes-sha2",
33467+ "m.megolm.v1.aes-sha2"
33468+ ],
33469+ "device_id": "ALICEDEVICE293",
33470+ "keys": {
33471+ "curve25519:ALICEDEVICE293": "JLiHL44pEJJRBVJS4R6OdBSLr/omd0LGpqlRyH4ysWI",
33472+ "ed25519:ALICEDEVICE293": "Bs1Ccd8AcXfhlEfI9JjfdXJLVesiS/5J0KVnOvQ8rik"
33473+ },
33474+ "signatures": {
33475+ "@alice_293:hs1": {
33476+ "ed25519:ALICEDEVICE293": "JR7kxg9nY45dfIlQg190UBzUwFM13K9bTKSh9k21pISPGzjVnRSA6xXreJK23dKwfFqcxs8+buiEPov4fBuZBg"
33477+ }
33478+ },
33479+ "user_id": "@alice_293:hs1",
33480+ "unsigned": {}
33481+ }
33482+ },
33483+ "@alice_294:hs1": {
33484+ "ALICEDEVICE294": {
33485+ "algorithms": [
33486+ "m.olm.v1.curve25519-aes-sha2",
33487+ "m.megolm.v1.aes-sha2"
33488+ ],
33489+ "device_id": "ALICEDEVICE294",
33490+ "keys": {
33491+ "curve25519:ALICEDEVICE294": "RvAfW9xWwUkbzBJLpPoorMnqGh8/FKzkRVkVLnEg6DQ",
33492+ "ed25519:ALICEDEVICE294": "UfL4Mh3wiNjfNsOTi4hkJhHHApdBGleiQfL8pLXlnL0"
33493+ },
33494+ "signatures": {
33495+ "@alice_294:hs1": {
33496+ "ed25519:ALICEDEVICE294": "zyZmJOp2hcU0Z/LH5SFzq4TbKVnddFYlOrSZ+0ORN8HNF2yMw1B6k5ubQWIu3kk8PCxw8XvNhhYTzXqak98ACA"
33497+ }
33498+ },
33499+ "user_id": "@alice_294:hs1",
33500+ "unsigned": {}
33501+ }
33502+ },
33503+ "@alice_2:hs1": {
33504+ "ALICEDEVICE2": {
33505+ "algorithms": [
33506+ "m.olm.v1.curve25519-aes-sha2",
33507+ "m.megolm.v1.aes-sha2"
33508+ ],
33509+ "device_id": "ALICEDEVICE2",
33510+ "keys": {
33511+ "curve25519:ALICEDEVICE2": "YTYhvfkjtwMa20hOZKp42kUEa20yOa34pthDehJsZE8",
33512+ "ed25519:ALICEDEVICE2": "MzjddPqZPXCzDafNJksN2uEKcwrrDZahKLt2ynWUHQM"
33513+ },
33514+ "signatures": {
33515+ "@alice_2:hs1": {
33516+ "ed25519:ALICEDEVICE2": "Os4NDuYtIQ0f8+Pam0ZA7ZSb38NLfECP8Wc9hZN2sAnhPz7MGoyaAaWyTrGO2YiLXtxQauITZaaPW2Ggi3uPBw"
33517+ }
33518+ },
33519+ "user_id": "@alice_2:hs1",
33520+ "unsigned": {}
33521+ }
33522+ },
33523+ "@alice_310:hs1": {
33524+ "ALICEDEVICE310": {
33525+ "algorithms": [
33526+ "m.olm.v1.curve25519-aes-sha2",
33527+ "m.megolm.v1.aes-sha2"
33528+ ],
33529+ "device_id": "ALICEDEVICE310",
33530+ "keys": {
33531+ "curve25519:ALICEDEVICE310": "rQq4BnJM/zcxAGJxYmAh0CG9K7Tgd9D7YPcOchlPdF0",
33532+ "ed25519:ALICEDEVICE310": "Lh39+JvG0u2MC5bYeJJJ/ebiHn1YxBaes76rghcMC8o"
33533+ },
33534+ "signatures": {
33535+ "@alice_310:hs1": {
33536+ "ed25519:ALICEDEVICE310": "iYtiyn81EAGrcpgcWJqifyz+D3vtFOfscajRTOI6j0PUpZP0JorQKb2rjdiWVuZIBg3CEh9SGraOKeQi1/xMAg"
33537+ }
33538+ },
33539+ "user_id": "@alice_310:hs1",
33540+ "unsigned": {}
33541+ }
33542+ },
33543+ "@alice_320:hs1": {
33544+ "ALICEDEVICE320": {
33545+ "algorithms": [
33546+ "m.olm.v1.curve25519-aes-sha2",
33547+ "m.megolm.v1.aes-sha2"
33548+ ],
33549+ "device_id": "ALICEDEVICE320",
33550+ "keys": {
33551+ "curve25519:ALICEDEVICE320": "iSb2OC0NXNPr59cdc4RG0brzErAqFE80cCDUSwzy6Wk",
33552+ "ed25519:ALICEDEVICE320": "NY9mxRu0wz12PiIWz/ky8NgzPKlK4W9yeupKjE/kKwo"
33553+ },
33554+ "signatures": {
33555+ "@alice_320:hs1": {
33556+ "ed25519:ALICEDEVICE320": "LdmrccfTNKBOXXIxBo2si6hkeCNeZGEkOXdo5uuzHYgn22KlXsSCaz7JpDxyc3kDrRhG9xVEnrU+zxnTfGltCQ"
33557+ }
33558+ },
33559+ "user_id": "@alice_320:hs1",
33560+ "unsigned": {}
33561+ }
33562+ },
33563+ "@alice_323:hs1": {
33564+ "ALICEDEVICE323": {
33565+ "algorithms": [
33566+ "m.olm.v1.curve25519-aes-sha2",
33567+ "m.megolm.v1.aes-sha2"
33568+ ],
33569+ "device_id": "ALICEDEVICE323",
33570+ "keys": {
33571+ "curve25519:ALICEDEVICE323": "iAUBfwb+eVmm64+niZ6D73X72QD2eGO1RR1dsoMipHY",
33572+ "ed25519:ALICEDEVICE323": "zpbHhXyCSvmAv88gIESLujNn5BHQiNHC6kxWkCLY5kQ"
33573+ },
33574+ "signatures": {
33575+ "@alice_323:hs1": {
33576+ "ed25519:ALICEDEVICE323": "kI8O7gP7czjB+OYmOWDwGk22awicYMBvqwRPv0eMi5rafqOxAjfU6QmFIPhmn5KO++aLARff1gI5nKoDvL7jDw"
33577+ }
33578+ },
33579+ "user_id": "@alice_323:hs1",
33580+ "unsigned": {}
33581+ }
33582+ },
33583+ "@alice_330:hs1": {
33584+ "ALICEDEVICE330": {
33585+ "algorithms": [
33586+ "m.olm.v1.curve25519-aes-sha2",
33587+ "m.megolm.v1.aes-sha2"
33588+ ],
33589+ "device_id": "ALICEDEVICE330",
33590+ "keys": {
33591+ "curve25519:ALICEDEVICE330": "xSfpP4gurCjH8PaVS8Vxz1FJGkKuUoSASyr5H20wVWg",
33592+ "ed25519:ALICEDEVICE330": "kfD45wrNKeUi8Yq0A5d4kcknNRV0T6KZt8gfVjNrpfk"
33593+ },
33594+ "signatures": {
33595+ "@alice_330:hs1": {
33596+ "ed25519:ALICEDEVICE330": "gAaIeeb9ecFojti+ULkSdBOSsTZej9ElcJhuD33NpZ7jtB2hXBwOrE9bN8Tu/ElpjokI48qrDTqYu8Y4wbRqDA"
33597+ }
33598+ },
33599+ "user_id": "@alice_330:hs1",
33600+ "unsigned": {}
33601+ }
33602+ },
33603+ "@alice_360:hs1": {
33604+ "ALICEDEVICE360": {
33605+ "algorithms": [
33606+ "m.olm.v1.curve25519-aes-sha2",
33607+ "m.megolm.v1.aes-sha2"
33608+ ],
33609+ "device_id": "ALICEDEVICE360",
33610+ "keys": {
33611+ "curve25519:ALICEDEVICE360": "6fRIXqi/HQ88LLtk/Z+CIi3YtvQdK2WGCXl3sd/J9Es",
33612+ "ed25519:ALICEDEVICE360": "xRU1lXk+FosGamRr+RJlQjWm41+/atKHZDdk3YrV4x0"
33613+ },
33614+ "signatures": {
33615+ "@alice_360:hs1": {
33616+ "ed25519:ALICEDEVICE360": "fsAQEqU+H0qszsmobHLDo8f9prgbF32Xuc+zonv3puxFgn7KNICtkU4fenS9Li+Y2iSrdGf10ZKSCYxsaCSQCw"
33617+ }
33618+ },
33619+ "user_id": "@alice_360:hs1",
33620+ "unsigned": {}
33621+ }
33622+ },
33623+ "@alice_364:hs1": {
33624+ "ALICEDEVICE364": {
33625+ "algorithms": [
33626+ "m.olm.v1.curve25519-aes-sha2",
33627+ "m.megolm.v1.aes-sha2"
33628+ ],
33629+ "device_id": "ALICEDEVICE364",
33630+ "keys": {
33631+ "curve25519:ALICEDEVICE364": "7GD6Ll0w52RK/3NgORk4kl2I/TNW3GWHYI2qhi7j9UI",
33632+ "ed25519:ALICEDEVICE364": "CDFOBAalo1J5wc1GJTkAJzZX9JEMsl+WNS6II86d35s"
33633+ },
33634+ "signatures": {
33635+ "@alice_364:hs1": {
33636+ "ed25519:ALICEDEVICE364": "wuLSkj0QCsWbT7+7VXsuXUuvht6DrsIsYkIQACbBMH10FdOXjQRE6Sb9dO6A9AX77umElCJyio+wCavcn+pJCQ"
33637+ }
33638+ },
33639+ "user_id": "@alice_364:hs1",
33640+ "unsigned": {}
33641+ }
33642+ },
33643+ "@alice_369:hs1": {
33644+ "ALICEDEVICE369": {
33645+ "algorithms": [
33646+ "m.olm.v1.curve25519-aes-sha2",
33647+ "m.megolm.v1.aes-sha2"
33648+ ],
33649+ "device_id": "ALICEDEVICE369",
33650+ "keys": {
33651+ "curve25519:ALICEDEVICE369": "cSMXarY0j55E5HpFWYBE19f+J9Y1hZxrr8d/NHuVuFM",
33652+ "ed25519:ALICEDEVICE369": "ICTKhb7g+Lkkt145jsBe9RZVEBouUGLl+NmJ70iKYnI"
33653+ },
33654+ "signatures": {
33655+ "@alice_369:hs1": {
33656+ "ed25519:ALICEDEVICE369": "VC6hw23nnySplgpOxinA/RAS06ovhhzyZNXFlZRAncKazcrcGIgWDcgrZrTfDuAuKSZUfE9WKAPkmGpJHosNAw"
33657+ }
33658+ },
33659+ "user_id": "@alice_369:hs1",
33660+ "unsigned": {}
33661+ }
33662+ },
33663+ "@alice_38:hs1": {
33664+ "ALICEDEVICE38": {
33665+ "algorithms": [
33666+ "m.olm.v1.curve25519-aes-sha2",
33667+ "m.megolm.v1.aes-sha2"
33668+ ],
33669+ "device_id": "ALICEDEVICE38",
33670+ "keys": {
33671+ "curve25519:ALICEDEVICE38": "ms3DrowgTpdV+GMWBrqtswdpA9bHBPwVZk2S7D9zXUU",
33672+ "ed25519:ALICEDEVICE38": "K0tEtWknhh3iSuauM1qjBHOHZpDqijeIcCcvmDWTTw0"
33673+ },
33674+ "signatures": {
33675+ "@alice_38:hs1": {
33676+ "ed25519:ALICEDEVICE38": "Hralemc6Rw3FpWoDn5PgK1oOVUKRrghzuNPD2NI8t/Vx/UL7OOz9SyVCq8BqM+Nf1mC6Dc81jWAHLSO4lgddCQ"
33677+ }
33678+ },
33679+ "user_id": "@alice_38:hs1",
33680+ "unsigned": {}
33681+ }
33682+ },
33683+ "@alice_399:hs1": {
33684+ "ALICEDEVICE399": {
33685+ "algorithms": [
33686+ "m.olm.v1.curve25519-aes-sha2",
33687+ "m.megolm.v1.aes-sha2"
33688+ ],
33689+ "device_id": "ALICEDEVICE399",
33690+ "keys": {
33691+ "curve25519:ALICEDEVICE399": "Ll3n3d1C+S6brbsBmaQBVyvKcd6eY00BIOZymlqKaA0",
33692+ "ed25519:ALICEDEVICE399": "7jYo5c3OUyxeHB9eZTV+q79UDACDIpFAmnQ7gTA0Jps"
33693+ },
33694+ "signatures": {
33695+ "@alice_399:hs1": {
33696+ "ed25519:ALICEDEVICE399": "YJ/HyNsbzL/wH+vCBBIcwzGQ0LgfHlybXayH1gdiMCKpxhK7mETFQPUeYIjrdUsHfL3DzZpkwwZ/UKjXIUESDQ"
33697+ }
33698+ },
33699+ "user_id": "@alice_399:hs1",
33700+ "unsigned": {}
33701+ }
33702+ },
33703+ "@alice_409:hs1": {
33704+ "ALICEDEVICE409": {
33705+ "algorithms": [
33706+ "m.olm.v1.curve25519-aes-sha2",
33707+ "m.megolm.v1.aes-sha2"
33708+ ],
33709+ "device_id": "ALICEDEVICE409",
33710+ "keys": {
33711+ "curve25519:ALICEDEVICE409": "b9DSD0MyssEJn3zm1BTF56mNNcoQjQvGlDQG0tZc3HY",
33712+ "ed25519:ALICEDEVICE409": "6r+Id7ah2HdSgnvCSxgRbrCHUDxQC/adgcFJy8ul/Ic"
33713+ },
33714+ "signatures": {
33715+ "@alice_409:hs1": {
33716+ "ed25519:ALICEDEVICE409": "ZZu6MO5XxGMdPIxshruP3dTPG9EsGYcGsihQSbaFJM5YsNrpJ/LiEJPZZYVj3JZrREL/V5+0bUCFqXZFZ4vmCw"
33717+ }
33718+ },
33719+ "user_id": "@alice_409:hs1",
33720+ "unsigned": {}
33721+ }
33722+ },
33723+ "@alice_416:hs1": {
33724+ "ALICEDEVICE416": {
33725+ "algorithms": [
33726+ "m.olm.v1.curve25519-aes-sha2",
33727+ "m.megolm.v1.aes-sha2"
33728+ ],
33729+ "device_id": "ALICEDEVICE416",
33730+ "keys": {
33731+ "curve25519:ALICEDEVICE416": "hukJNboBO3hG33ImGbZ8aRU9wo+ojq/Cl0yU/YzuRQM",
33732+ "ed25519:ALICEDEVICE416": "fSFGYjA56TD3cWRFMRMpg9tR/+0xx3C0yGoGkrJZlB0"
33733+ },
33734+ "signatures": {
33735+ "@alice_416:hs1": {
33736+ "ed25519:ALICEDEVICE416": "uQfFJS2Wmzw4LSoIXHovcOHJSsDa99bfkov62c0qkDkp+OHHndw+YvFBrZQZHvqvT6O+XAeo/sLQGgbQN/1ABg"
33737+ }
33738+ },
33739+ "user_id": "@alice_416:hs1",
33740+ "unsigned": {}
33741+ }
33742+ },
33743+ "@alice_419:hs1": {
33744+ "ALICEDEVICE419": {
33745+ "algorithms": [
33746+ "m.olm.v1.curve25519-aes-sha2",
33747+ "m.megolm.v1.aes-sha2"
33748+ ],
33749+ "device_id": "ALICEDEVICE419",
33750+ "keys": {
33751+ "curve25519:ALICEDEVICE419": "oeTUtX0/FqAmUnZbu9jCNpx0Oxe61Hiabtc4UKHyWGg",
33752+ "ed25519:ALICEDEVICE419": "ulYKb+8eQ+04HH2ONjCIPlnAtGMXE/d9ALbZoXL2K9Y"
33753+ },
33754+ "signatures": {
33755+ "@alice_419:hs1": {
33756+ "ed25519:ALICEDEVICE419": "qeQdi9fGipYg9YkdnUFsXswdfG2swiZjRZxA++yjLfPXkmrylbSdiAPeZ0cQHj1b1T33aNV9albj4fAYkWnvBg"
33757+ }
33758+ },
33759+ "user_id": "@alice_419:hs1",
33760+ "unsigned": {}
33761+ }
33762+ },
33763+ "@alice_425:hs1": {
33764+ "ALICEDEVICE425": {
33765+ "algorithms": [
33766+ "m.olm.v1.curve25519-aes-sha2",
33767+ "m.megolm.v1.aes-sha2"
33768+ ],
33769+ "device_id": "ALICEDEVICE425",
33770+ "keys": {
33771+ "curve25519:ALICEDEVICE425": "ispD6ujd0/Wdr+/jcoBv18wdgGYRniR6x9sdDh/7LFI",
33772+ "ed25519:ALICEDEVICE425": "CaxWURXWZOt5SfllHTPbN27uoyshx0fH/VLUp7PSo3Y"
33773+ },
33774+ "signatures": {
33775+ "@alice_425:hs1": {
33776+ "ed25519:ALICEDEVICE425": "u3O2nUeu7kRyj4UdP5Yh2q+WR87aD8c4d2tE3E9L9nSlns47t2vbJTn52izlE6FoW3tfhYNHJxTNO4gMsgmODw"
33777+ }
33778+ },
33779+ "user_id": "@alice_425:hs1",
33780+ "unsigned": {}
33781+ }
33782+ },
33783+ "@alice_428:hs1": {
33784+ "ALICEDEVICE428": {
33785+ "algorithms": [
33786+ "m.olm.v1.curve25519-aes-sha2",
33787+ "m.megolm.v1.aes-sha2"
33788+ ],
33789+ "device_id": "ALICEDEVICE428",
33790+ "keys": {
33791+ "curve25519:ALICEDEVICE428": "+9b56EDHB2MY6L4rkgAVhoCQi1NhiPfyWEEXjG+xAXU",
33792+ "ed25519:ALICEDEVICE428": "r7BE2NnowglgbIXZyqptPELNyOEboa4hFmvn1d4s4KA"
33793+ },
33794+ "signatures": {
33795+ "@alice_428:hs1": {
33796+ "ed25519:ALICEDEVICE428": "xW3LZy3CDXZ+gg26IW6Lcs+W7TgdcuhJtTMwTnkhA5K3QQxBvknYchQ/BD9dhC/o+c9gH49gv1wok+3AbtZsCw"
33797+ }
33798+ },
33799+ "user_id": "@alice_428:hs1",
33800+ "unsigned": {}
33801+ }
33802+ },
33803+ "@alice_429:hs1": {
33804+ "ALICEDEVICE429": {
33805+ "algorithms": [
33806+ "m.olm.v1.curve25519-aes-sha2",
33807+ "m.megolm.v1.aes-sha2"
33808+ ],
33809+ "device_id": "ALICEDEVICE429",
33810+ "keys": {
33811+ "curve25519:ALICEDEVICE429": "rnOgHDcvRTOKVVEfhKpPd1d446p1co0fYjS5J8hyCjc",
33812+ "ed25519:ALICEDEVICE429": "U8TsWmgx0ePyYXtv0g/a2tw/fzjcMNWmKf1tJZ4JyN4"
33813+ },
33814+ "signatures": {
33815+ "@alice_429:hs1": {
33816+ "ed25519:ALICEDEVICE429": "pnjNSIwh/D2dLB0g2BXOBbo4JF4J7PjwHZ+BX9yk+hYBjclx/4HBSYqeg8ktEB4CqjJp/P9HLUkm+gcTERqpAw"
33817+ }
33818+ },
33819+ "user_id": "@alice_429:hs1",
33820+ "unsigned": {}
33821+ }
33822+ },
33823+ "@alice_431:hs1": {
33824+ "ALICEDEVICE431": {
33825+ "algorithms": [
33826+ "m.olm.v1.curve25519-aes-sha2",
33827+ "m.megolm.v1.aes-sha2"
33828+ ],
33829+ "device_id": "ALICEDEVICE431",
33830+ "keys": {
33831+ "curve25519:ALICEDEVICE431": "7xJCZGccnoBmukjrTj3GfcpgDLcQ6M7LfHagSG3ToCc",
33832+ "ed25519:ALICEDEVICE431": "c41QK4Vge5ZsB6lTT4af2FKt4B2VQhGhJoBVUukDHRA"
33833+ },
33834+ "signatures": {
33835+ "@alice_431:hs1": {
33836+ "ed25519:ALICEDEVICE431": "nJGth/vwIO3hJXGp7+UgdPLy/3TX38PHD8TmRciJBjmFbaQWexx3sUdD8DLJkJ3uBSjb5FtSvMGV0VuSli5KAw"
33837+ }
33838+ },
33839+ "user_id": "@alice_431:hs1",
33840+ "unsigned": {}
33841+ }
33842+ },
33843+ "@alice_432:hs1": {
33844+ "ALICEDEVICE432": {
33845+ "algorithms": [
33846+ "m.olm.v1.curve25519-aes-sha2",
33847+ "m.megolm.v1.aes-sha2"
33848+ ],
33849+ "device_id": "ALICEDEVICE432",
33850+ "keys": {
33851+ "curve25519:ALICEDEVICE432": "ebxbsJyNO5TImQkUfIbpQcvL1w4KElQaPbUH4IeJgTs",
33852+ "ed25519:ALICEDEVICE432": "2LshOp1WMmfJLNKJ9YxKLRTsPtw8xatL5Ct9/Y9DmZM"
33853+ },
33854+ "signatures": {
33855+ "@alice_432:hs1": {
33856+ "ed25519:ALICEDEVICE432": "5lRoSDlx09dOrXlJLa05+UvjO+GN9CEa8jz8+NjYZr3yaH7o6KlydkgkzfewiV1i6Bqhg8iQTi8YmZq54M2zDw"
33857+ }
33858+ },
33859+ "user_id": "@alice_432:hs1",
33860+ "unsigned": {}
33861+ }
33862+ },
33863+ "@alice_457:hs1": {
33864+ "ALICEDEVICE457": {
33865+ "algorithms": [
33866+ "m.olm.v1.curve25519-aes-sha2",
33867+ "m.megolm.v1.aes-sha2"
33868+ ],
33869+ "device_id": "ALICEDEVICE457",
33870+ "keys": {
33871+ "curve25519:ALICEDEVICE457": "rhdhPXxuxu2H4DlQawd2fMujXoQlNd28HTc16UwpHVc",
33872+ "ed25519:ALICEDEVICE457": "SxQf9Mu0QI+jeBQeBhNgbxLgTS4gwMPJLZnuftgbgEY"
33873+ },
33874+ "signatures": {
33875+ "@alice_457:hs1": {
33876+ "ed25519:ALICEDEVICE457": "bzjoNnDvGkzWim8FB3k3GKpS6yRbseAmrW6lqEToH/UfZTOJivUfyErwfnsde5HltCK4eQh5olSp3G10Xa7FBg"
33877+ }
33878+ },
33879+ "user_id": "@alice_457:hs1",
33880+ "unsigned": {}
33881+ }
33882+ },
33883+ "@alice_469:hs1": {
33884+ "ALICEDEVICE469": {
33885+ "algorithms": [
33886+ "m.olm.v1.curve25519-aes-sha2",
33887+ "m.megolm.v1.aes-sha2"
33888+ ],
33889+ "device_id": "ALICEDEVICE469",
33890+ "keys": {
33891+ "curve25519:ALICEDEVICE469": "zUjDDUwV8ECKzk8QS4WwZeD82qtj1/afIo2HTGvYzwU",
33892+ "ed25519:ALICEDEVICE469": "49uYmGH1TQYtVMjRA7x9f/mFZzLc4d6ujLzQtwGyxsY"
33893+ },
33894+ "signatures": {
33895+ "@alice_469:hs1": {
33896+ "ed25519:ALICEDEVICE469": "I0u6XTKIKcmLOBwvTxzCfJbVUtLyC1aepQnep8LufNKY37Br93BCmO2D4TVFCdDCW5o44RgVt7kkky2SRgqnDA"
33897+ }
33898+ },
33899+ "user_id": "@alice_469:hs1",
33900+ "unsigned": {}
33901+ }
33902+ },
33903+ "@alice_475:hs1": {
33904+ "ALICEDEVICE475": {
33905+ "algorithms": [
33906+ "m.olm.v1.curve25519-aes-sha2",
33907+ "m.megolm.v1.aes-sha2"
33908+ ],
33909+ "device_id": "ALICEDEVICE475",
33910+ "keys": {
33911+ "curve25519:ALICEDEVICE475": "bgB2u1YJ74/YZrrxByFxHkHUdWH4hFS2QZnrgQzSbFk",
33912+ "ed25519:ALICEDEVICE475": "FMJttvr4LHoY79ndwruvKUPCcN2A/AU4BY2G37I7oas"
33913+ },
33914+ "signatures": {
33915+ "@alice_475:hs1": {
33916+ "ed25519:ALICEDEVICE475": "HDNa7KF609WRRK9zG/vgWXN0JbxdaYQMadSo7V+RHnjrSoC9e2A00k0dk6249OmhwstIUBSDCts//Fy/WP/KDw"
33917+ }
33918+ },
33919+ "user_id": "@alice_475:hs1",
33920+ "unsigned": {}
33921+ }
33922+ },
33923+ "@alice_47:hs1": {
33924+ "ALICEDEVICE47": {
33925+ "algorithms": [
33926+ "m.olm.v1.curve25519-aes-sha2",
33927+ "m.megolm.v1.aes-sha2"
33928+ ],
33929+ "device_id": "ALICEDEVICE47",
33930+ "keys": {
33931+ "curve25519:ALICEDEVICE47": "hsiDW3IM9/fw/5K2RuS1UqJlZtPsORb09LFEyCShYUc",
33932+ "ed25519:ALICEDEVICE47": "uQEl0Hp+xBUJNUCVtmo8qWNzHzLtBUxbllfPev8OLZY"
33933+ },
33934+ "signatures": {
33935+ "@alice_47:hs1": {
33936+ "ed25519:ALICEDEVICE47": "YkLxgmAlWYNUrZI7mf2bPXm8PSKE9m4C7HhaGAuSOADjoAj54UrUaBWn0xEOwHqe3G3cTQAPdwiHSfjf6daEDQ"
33937+ }
33938+ },
33939+ "user_id": "@alice_47:hs1",
33940+ "unsigned": {}
33941+ }
33942+ },
33943+ "@alice_481:hs1": {
33944+ "ALICEDEVICE481": {
33945+ "algorithms": [
33946+ "m.olm.v1.curve25519-aes-sha2",
33947+ "m.megolm.v1.aes-sha2"
33948+ ],
33949+ "device_id": "ALICEDEVICE481",
33950+ "keys": {
33951+ "curve25519:ALICEDEVICE481": "UKHQONX6LLWIbCBWlAsTtOuqT+zTyFeaF3wRsqWe/TM",
33952+ "ed25519:ALICEDEVICE481": "j04BeEZCYFZHa0TPXgod1OoSuajYl582/9YhVJwtA88"
33953+ },
33954+ "signatures": {
33955+ "@alice_481:hs1": {
33956+ "ed25519:ALICEDEVICE481": "myp6eIuGBydcf8HbsCw5hSLfFVqEWFsoL/sxja9sMtzUBFIiy/5ufFn50e4pDc1UBz9Zm1lvCd0MYBSLboqnDw"
33957+ }
33958+ },
33959+ "user_id": "@alice_481:hs1",
33960+ "unsigned": {}
33961+ }
33962+ },
33963+ "@alice_499:hs1": {
33964+ "ALICEDEVICE499": {
33965+ "algorithms": [
33966+ "m.olm.v1.curve25519-aes-sha2",
33967+ "m.megolm.v1.aes-sha2"
33968+ ],
33969+ "device_id": "ALICEDEVICE499",
33970+ "keys": {
33971+ "curve25519:ALICEDEVICE499": "MxmNFnhw2ex1xcJNyQMXgKeEFzWG4+dhn/xsg1fsUig",
33972+ "ed25519:ALICEDEVICE499": "zOsEDTRLy921rJ8OuxeJztFZaFBmCvpQaEa6XoRBKMk"
33973+ },
33974+ "signatures": {
33975+ "@alice_499:hs1": {
33976+ "ed25519:ALICEDEVICE499": "7UOK450opFJXnOwk4vCfSZpl+/KBMSjefYDZgpPf5kRfEsimkYkE7gHYwe6aBunRHeNdp0hXFRyA4fQzRePHDg"
33977+ }
33978+ },
33979+ "user_id": "@alice_499:hs1",
33980+ "unsigned": {}
33981+ }
33982+ },
33983+ "@alice_528:hs1": {
33984+ "ALICEDEVICE528": {
33985+ "algorithms": [
33986+ "m.olm.v1.curve25519-aes-sha2",
33987+ "m.megolm.v1.aes-sha2"
33988+ ],
33989+ "device_id": "ALICEDEVICE528",
33990+ "keys": {
33991+ "curve25519:ALICEDEVICE528": "6rFDv2IXQ62kAffBAlVZMGumvsuqKbbGQ8zMfAvX6mQ",
33992+ "ed25519:ALICEDEVICE528": "6EQvY4dBvx8/V3RAqIbg7QteLkrWYO+Vdvf8fq/4LVo"
33993+ },
33994+ "signatures": {
33995+ "@alice_528:hs1": {
33996+ "ed25519:ALICEDEVICE528": "VGft1DHyCTrTwisfdRQdrRG6jC09mvlL8TMH2z7znE/Ys1DTWNJRw2hTzPBczpi24w9cvD1i9oZSD5u0o3rABA"
33997+ }
33998+ },
33999+ "user_id": "@alice_528:hs1",
34000+ "unsigned": {}
34001+ }
34002+ },
34003+ "@alice_531:hs1": {
34004+ "ALICEDEVICE531": {
34005+ "algorithms": [
34006+ "m.olm.v1.curve25519-aes-sha2",
34007+ "m.megolm.v1.aes-sha2"
34008+ ],
34009+ "device_id": "ALICEDEVICE531",
34010+ "keys": {
34011+ "curve25519:ALICEDEVICE531": "iyRxHbLL84zu0tEhTfjA6qzgyCXIsxsEnylgy9SJZmA",
34012+ "ed25519:ALICEDEVICE531": "ZOmi9hY4YGOpeE8otvWgB/OS5wjynBotAc5twy31cZo"
34013+ },
34014+ "signatures": {
34015+ "@alice_531:hs1": {
34016+ "ed25519:ALICEDEVICE531": "blmVX9f25HYg6Us5Suw6Qq/JMwwmSDPBGCqrw5glMdFIl2NII9ktOpyDWyVwQGuhPzbQS9KoXuBx49afOcDEAw"
34017+ }
34018+ },
34019+ "user_id": "@alice_531:hs1",
34020+ "unsigned": {}
34021+ }
34022+ },
34023+ "@alice_542:hs1": {
34024+ "ALICEDEVICE542": {
34025+ "algorithms": [
34026+ "m.olm.v1.curve25519-aes-sha2",
34027+ "m.megolm.v1.aes-sha2"
34028+ ],
34029+ "device_id": "ALICEDEVICE542",
34030+ "keys": {
34031+ "curve25519:ALICEDEVICE542": "1VrVAp0uvPL1Kd1zEG38WPCMzKtzTwn9czYYZh76AgI",
34032+ "ed25519:ALICEDEVICE542": "9JBVV6z7kUmSg6ENNVNSVDXWHJpFeFaAgJtaLH8dG38"
34033+ },
34034+ "signatures": {
34035+ "@alice_542:hs1": {
34036+ "ed25519:ALICEDEVICE542": "et5nxm8EIg4KE9CgBqs7XHxxQldp3rDegdkxN+riU3v5ZC0cgTpDjrZ0f9dGQKWSsWxAoZ1bFp4jrOyt3uXUBw"
34037+ }
34038+ },
34039+ "user_id": "@alice_542:hs1",
34040+ "unsigned": {}
34041+ }
34042+ },
34043+ "@alice_570:hs1": {
34044+ "ALICEDEVICE570": {
34045+ "algorithms": [
34046+ "m.olm.v1.curve25519-aes-sha2",
34047+ "m.megolm.v1.aes-sha2"
34048+ ],
34049+ "device_id": "ALICEDEVICE570",
34050+ "keys": {
34051+ "curve25519:ALICEDEVICE570": "nDcL8FBOMuHKYKdw7psMIMIrS2sQij8cFFZ1VOYXLyg",
34052+ "ed25519:ALICEDEVICE570": "hu0VmRP0e+PnrY4WSHI3nxrHe4EIMyjO55SDoClbglU"
34053+ },
34054+ "signatures": {
34055+ "@alice_570:hs1": {
34056+ "ed25519:ALICEDEVICE570": "FrQThT6w6GdToWIif5fLrUwDsaAI/19rhUmVtGsF860Lc1+NQFwnedA6Vt6DagLiEwzFh4lUrwT/UcS5jHdICA"
34057+ }
34058+ },
34059+ "user_id": "@alice_570:hs1",
34060+ "unsigned": {}
34061+ }
34062+ },
34063+ "@alice_57:hs1": {
34064+ "ALICEDEVICE57": {
34065+ "algorithms": [
34066+ "m.olm.v1.curve25519-aes-sha2",
34067+ "m.megolm.v1.aes-sha2"
34068+ ],
34069+ "device_id": "ALICEDEVICE57",
34070+ "keys": {
34071+ "curve25519:ALICEDEVICE57": "5hgF1o/9IAND+9JnaUWD5apTwbPuOC/nIbiNDTLZz1U",
34072+ "ed25519:ALICEDEVICE57": "NUe0MBOaj601yeSHDavyksm31npM712OTHUlIEI25Jw"
34073+ },
34074+ "signatures": {
34075+ "@alice_57:hs1": {
34076+ "ed25519:ALICEDEVICE57": "bR7aAp3uAnj1BDt8zaqgSbnb6tvB9q3kEGZTIYnNJOgqwLsv+pf0kXXX4VtmoQONdKPLWcB5r8eHmpQOx5SFBA"
34077+ }
34078+ },
34079+ "user_id": "@alice_57:hs1",
34080+ "unsigned": {}
34081+ }
34082+ },
34083+ "@alice_587:hs1": {
34084+ "ALICEDEVICE587": {
34085+ "algorithms": [
34086+ "m.olm.v1.curve25519-aes-sha2",
34087+ "m.megolm.v1.aes-sha2"
34088+ ],
34089+ "device_id": "ALICEDEVICE587",
34090+ "keys": {
34091+ "curve25519:ALICEDEVICE587": "NcZr8/TRYYEMA8Eb5erxe4lhTyV/dYzu214/Mj0K2Q4",
34092+ "ed25519:ALICEDEVICE587": "pRms2GvoywUCV0fyexYa6RY1hsBdX96sCdmRiGRcQpc"
34093+ },
34094+ "signatures": {
34095+ "@alice_587:hs1": {
34096+ "ed25519:ALICEDEVICE587": "TVMFMNXF57Bn/xaI7JdDYykfuacMYYokYXu821b3sEFooWGIhH3NeA1DKpM0d0P1elkptzhWj2QGJkS+M4aPCA"
34097+ }
34098+ },
34099+ "user_id": "@alice_587:hs1",
34100+ "unsigned": {}
34101+ }
34102+ },
34103+ "@alice_594:hs1": {
34104+ "ALICEDEVICE594": {
34105+ "algorithms": [
34106+ "m.olm.v1.curve25519-aes-sha2",
34107+ "m.megolm.v1.aes-sha2"
34108+ ],
34109+ "device_id": "ALICEDEVICE594",
34110+ "keys": {
34111+ "curve25519:ALICEDEVICE594": "zlIJLBO9Ar8fmK74GSSD/zM0ruPYDJpUSJ/mASZ6nGU",
34112+ "ed25519:ALICEDEVICE594": "SGdjP3QYgJFl+Xejqw48o1vJb/IJOmtTnRanD8V0wtw"
34113+ },
34114+ "signatures": {
34115+ "@alice_594:hs1": {
34116+ "ed25519:ALICEDEVICE594": "kyjiTk1NOuTgidm4bRKitGlCRcaD+5D/6uAWM7nL6WhQuCthASiPwUe7z2SHxmBVSNnAhoT7ZfmzPv3OFJajCA"
34117+ }
34118+ },
34119+ "user_id": "@alice_594:hs1",
34120+ "unsigned": {}
34121+ }
34122+ },
34123+ "@alice_59:hs1": {
34124+ "ALICEDEVICE59": {
34125+ "algorithms": [
34126+ "m.olm.v1.curve25519-aes-sha2",
34127+ "m.megolm.v1.aes-sha2"
34128+ ],
34129+ "device_id": "ALICEDEVICE59",
34130+ "keys": {
34131+ "curve25519:ALICEDEVICE59": "uXaQIYRMCwDSL8C23scP9LApzlKQsqWGbl2Y2gxdF3Q",
34132+ "ed25519:ALICEDEVICE59": "QneEinibHDVFijS+/ktctZoT6j1LFNYL3rvMPhQsByY"
34133+ },
34134+ "signatures": {
34135+ "@alice_59:hs1": {
34136+ "ed25519:ALICEDEVICE59": "BWj32Dw0Yl6giKbBceoxw1FTjHIwBRIHAOMsz3dQZYwRA4vDmttRSDShX56oAtmFwNy3gZFYG8bmjSBLeAPgAA"
34137+ }
34138+ },
34139+ "user_id": "@alice_59:hs1",
34140+ "unsigned": {}
34141+ }
34142+ },
34143+ "@alice_600:hs1": {
34144+ "ALICEDEVICE600": {
34145+ "algorithms": [
34146+ "m.olm.v1.curve25519-aes-sha2",
34147+ "m.megolm.v1.aes-sha2"
34148+ ],
34149+ "device_id": "ALICEDEVICE600",
34150+ "keys": {
34151+ "curve25519:ALICEDEVICE600": "MwBUBzBCTPziMTznv4j0BT0TLNWKdSQqc8jmfLll7Qw",
34152+ "ed25519:ALICEDEVICE600": "C/oJFqTYQJhfMz+A2OZoeWprTm5npp0yC62jYGdJODY"
34153+ },
34154+ "signatures": {
34155+ "@alice_600:hs1": {
34156+ "ed25519:ALICEDEVICE600": "24rSaRzSgv8i1c/AO0UugKweGWBi+GtrRhQP78GyIQ6/GeuCzrtVcGheet3H2ZEifUjgSTc56WepqnoNRodpCQ"
34157+ }
34158+ },
34159+ "user_id": "@alice_600:hs1",
34160+ "unsigned": {}
34161+ }
34162+ },
34163+ "@alice_603:hs1": {
34164+ "ALICEDEVICE603": {
34165+ "algorithms": [
34166+ "m.olm.v1.curve25519-aes-sha2",
34167+ "m.megolm.v1.aes-sha2"
34168+ ],
34169+ "device_id": "ALICEDEVICE603",
34170+ "keys": {
34171+ "curve25519:ALICEDEVICE603": "OtbmMThl4yX2nTH2PPObvuaOxysmLhee9RH5CTR2xl4",
34172+ "ed25519:ALICEDEVICE603": "61GfINB8mE5hhKbwus/VnV2W4pAxtzlNcgZF1QpSEC0"
34173+ },
34174+ "signatures": {
34175+ "@alice_603:hs1": {
34176+ "ed25519:ALICEDEVICE603": "Lo7zLE3RIizYh5DNJVQ0+iQeIlFMdVZQI2WCOq5E76Un2hQ/Hpg2k3BNgyBf4iLp7+Upbc1GfxovCU/Mn5PzCg"
34177+ }
34178+ },
34179+ "user_id": "@alice_603:hs1",
34180+ "unsigned": {}
34181+ }
34182+ },
34183+ "@alice_610:hs1": {
34184+ "ALICEDEVICE610": {
34185+ "algorithms": [
34186+ "m.olm.v1.curve25519-aes-sha2",
34187+ "m.megolm.v1.aes-sha2"
34188+ ],
34189+ "device_id": "ALICEDEVICE610",
34190+ "keys": {
34191+ "curve25519:ALICEDEVICE610": "JKPzYyA1zrNYl6gVTg3kZ4RwzYGpCjSu5PQLVYSpyBk",
34192+ "ed25519:ALICEDEVICE610": "ODXURjRPkKtlD59p85MSu7kavosusKsAQOVgh/3qvc8"
34193+ },
34194+ "signatures": {
34195+ "@alice_610:hs1": {
34196+ "ed25519:ALICEDEVICE610": "XqaKm8XH6vq8LWPcno3yPfOr+zpK9MVaDQF9dw5qWvL2ZTaETXse4yNxg3ToCxivpEuHv5x1cy3ZT1PQoj5TAw"
34197+ }
34198+ },
34199+ "user_id": "@alice_610:hs1",
34200+ "unsigned": {}
34201+ }
34202+ },
34203+ "@alice_61:hs1": {
34204+ "ALICEDEVICE61": {
34205+ "algorithms": [
34206+ "m.olm.v1.curve25519-aes-sha2",
34207+ "m.megolm.v1.aes-sha2"
34208+ ],
34209+ "device_id": "ALICEDEVICE61",
34210+ "keys": {
34211+ "curve25519:ALICEDEVICE61": "7AEJC+SvwlYHyQpwJbl3ZTRt4NcdJpSexAZR8DC/bXI",
34212+ "ed25519:ALICEDEVICE61": "MdMht+H8CjmryfCopLsqnvyX0rXqJgYyR3Qg4k2sVGQ"
34213+ },
34214+ "signatures": {
34215+ "@alice_61:hs1": {
34216+ "ed25519:ALICEDEVICE61": "CsDqGkUYpYYjy0yGTueVjVFbDKfhcNGXoX5LKUz0N7NPD4v+osWrVoIovD+Gyw9doJvoHvEoawrAmdA+2GHkAQ"
34217+ }
34218+ },
34219+ "user_id": "@alice_61:hs1",
34220+ "unsigned": {}
34221+ }
34222+ },
34223+ "@alice_629:hs1": {
34224+ "ALICEDEVICE629": {
34225+ "algorithms": [
34226+ "m.olm.v1.curve25519-aes-sha2",
34227+ "m.megolm.v1.aes-sha2"
34228+ ],
34229+ "device_id": "ALICEDEVICE629",
34230+ "keys": {
34231+ "curve25519:ALICEDEVICE629": "VaVwZfXT2freaQQOO/+8jw/nC/aln7MykMeKJCNZflM",
34232+ "ed25519:ALICEDEVICE629": "wlg7RZXHUl4MAK9kCMSmBN2pngpKEyT5T2quLQjCdzU"
34233+ },
34234+ "signatures": {
34235+ "@alice_629:hs1": {
34236+ "ed25519:ALICEDEVICE629": "dAsmulMB4XGcHTpvNM6J9N0puWxlGw5fERB3WLYpaiBq9e5bwEB149xd5Isk36V59hqOSp2IWn5ti9PJ8lFeDg"
34237+ }
34238+ },
34239+ "user_id": "@alice_629:hs1",
34240+ "unsigned": {}
34241+ }
34242+ },
34243+ "@alice_62:hs1": {
34244+ "ALICEDEVICE62": {
34245+ "algorithms": [
34246+ "m.olm.v1.curve25519-aes-sha2",
34247+ "m.megolm.v1.aes-sha2"
34248+ ],
34249+ "device_id": "ALICEDEVICE62",
34250+ "keys": {
34251+ "curve25519:ALICEDEVICE62": "iEzrQCh7ffL6dUfUGrfH1vNaWE/6Tn7zOTqq0HBJIA0",
34252+ "ed25519:ALICEDEVICE62": "48pClSaCqmlMax7SPpEICvTfehQeSWID4SkvXuY9Ggo"
34253+ },
34254+ "signatures": {
34255+ "@alice_62:hs1": {
34256+ "ed25519:ALICEDEVICE62": "lsVX8MzfOU7g27L+a81nw8e4zlimJ7iCqTN2U1mRhQUiIyvGmLbpaXsc5UKkWQSkSn5FioCz270Lti34dsQXBw"
34257+ }
34258+ },
34259+ "user_id": "@alice_62:hs1",
34260+ "unsigned": {}
34261+ }
34262+ },
34263+ "@alice_635:hs1": {
34264+ "ALICEDEVICE635": {
34265+ "algorithms": [
34266+ "m.olm.v1.curve25519-aes-sha2",
34267+ "m.megolm.v1.aes-sha2"
34268+ ],
34269+ "device_id": "ALICEDEVICE635",
34270+ "keys": {
34271+ "curve25519:ALICEDEVICE635": "vTBR7urL3JV+V9RiO56abhJJTCSYcuUyaj9jYdiyJ3Q",
34272+ "ed25519:ALICEDEVICE635": "5gu0Chlb4JQxRuk7DjnAxCRUsRYf0eLy/qnSdc3pwgw"
34273+ },
34274+ "signatures": {
34275+ "@alice_635:hs1": {
34276+ "ed25519:ALICEDEVICE635": "ie1AOTCCdxe0SzHY2XgsbnhuFtfVxSvbSz5EDzYIzRZbHYsY2h27B+s9Vkouo+DV08ZKguqjBWNDF88OCcDIBg"
34277+ }
34278+ },
34279+ "user_id": "@alice_635:hs1",
34280+ "unsigned": {}
34281+ }
34282+ },
34283+ "@alice_640:hs1": {
34284+ "ALICEDEVICE640": {
34285+ "algorithms": [
34286+ "m.olm.v1.curve25519-aes-sha2",
34287+ "m.megolm.v1.aes-sha2"
34288+ ],
34289+ "device_id": "ALICEDEVICE640",
34290+ "keys": {
34291+ "curve25519:ALICEDEVICE640": "ZWOciWkG1ICRWvbR2cnEAB4meX7IafJnKQq0VjV5Mmc",
34292+ "ed25519:ALICEDEVICE640": "F1m29Bv9L14QIbzsc50yrhwY6E7i53nfbAcHawR140M"
34293+ },
34294+ "signatures": {
34295+ "@alice_640:hs1": {
34296+ "ed25519:ALICEDEVICE640": "TfwVpHiA1uV6zcjAT6K7hgtc7Ors1cH/f3O7kNJNfsUrl8A1iZmILw9wE0jnEsg5yIkPTRcayRfOGt+eOTNkDw"
34297+ }
34298+ },
34299+ "user_id": "@alice_640:hs1",
34300+ "unsigned": {}
34301+ }
34302+ },
34303+ "@alice_670:hs1": {
34304+ "ALICEDEVICE670": {
34305+ "algorithms": [
34306+ "m.olm.v1.curve25519-aes-sha2",
34307+ "m.megolm.v1.aes-sha2"
34308+ ],
34309+ "device_id": "ALICEDEVICE670",
34310+ "keys": {
34311+ "curve25519:ALICEDEVICE670": "6TEeAdyEzVLhdgxtzABVBFtpiYdU8is9xh9vMJneshE",
34312+ "ed25519:ALICEDEVICE670": "VoG2GelKClllRbCspU2Uw0OMI3WJupRJeohcBZRp7Zw"
34313+ },
34314+ "signatures": {
34315+ "@alice_670:hs1": {
34316+ "ed25519:ALICEDEVICE670": "H47rI9Wm3awpgB9arQzrLb3nIAg5OxNIQVAn0oxn0LKzzowWSLh/EDMsCsWYk2kh9Fw4X5TZH6OFurqbeGYgAg"
34317+ }
34318+ },
34319+ "user_id": "@alice_670:hs1",
34320+ "unsigned": {}
34321+ }
34322+ },
34323+ "@alice_683:hs1": {
34324+ "ALICEDEVICE683": {
34325+ "algorithms": [
34326+ "m.olm.v1.curve25519-aes-sha2",
34327+ "m.megolm.v1.aes-sha2"
34328+ ],
34329+ "device_id": "ALICEDEVICE683",
34330+ "keys": {
34331+ "curve25519:ALICEDEVICE683": "v9TyOu2oCTth9PgzIbCR/6z9GtrWcYD1Ctr2e+nic3E",
34332+ "ed25519:ALICEDEVICE683": "F+Ld3YUWGewMDUjYrU5Dygke3YLeq3MX5Z+nvRuulQ0"
34333+ },
34334+ "signatures": {
34335+ "@alice_683:hs1": {
34336+ "ed25519:ALICEDEVICE683": "tQjrzmCK6kNmkulwfg4HKO1h49oLp5zoen5kdkZItB46d93w9jHxrBDqbnmXaY0RGT4C/xZQQHnLa5RZZmh5DA"
34337+ }
34338+ },
34339+ "user_id": "@alice_683:hs1",
34340+ "unsigned": {}
34341+ }
34342+ },
34343+ "@alice_684:hs1": {
34344+ "ALICEDEVICE684": {
34345+ "algorithms": [
34346+ "m.olm.v1.curve25519-aes-sha2",
34347+ "m.megolm.v1.aes-sha2"
34348+ ],
34349+ "device_id": "ALICEDEVICE684",
34350+ "keys": {
34351+ "curve25519:ALICEDEVICE684": "s34bHhiatk7mNIeBxt22rmKlsr8HbXKPIscXeDSrG0Y",
34352+ "ed25519:ALICEDEVICE684": "8fO+xUGpwQXWM5lNMfZ8YmoMViIBPDyCX0SFexeloDU"
34353+ },
34354+ "signatures": {
34355+ "@alice_684:hs1": {
34356+ "ed25519:ALICEDEVICE684": "3L0XKaNkKSmLx1hlbFgYIREdKl3vtCPiMVvJppDyEhWvQh8eamt4eFb/MSPiPvDVbry64hhb2xRzEmQm6juCCA"
34357+ }
34358+ },
34359+ "user_id": "@alice_684:hs1",
34360+ "unsigned": {}
34361+ }
34362+ },
34363+ "@alice_693:hs1": {
34364+ "ALICEDEVICE693": {
34365+ "algorithms": [
34366+ "m.olm.v1.curve25519-aes-sha2",
34367+ "m.megolm.v1.aes-sha2"
34368+ ],
34369+ "device_id": "ALICEDEVICE693",
34370+ "keys": {
34371+ "curve25519:ALICEDEVICE693": "sMoFVDllrwHEEiJy4GBEuWXYP8NKKrrj9jMmDn6++mE",
34372+ "ed25519:ALICEDEVICE693": "T4gjcfj6lvBIhTy2QndiMP1W/L4wwN5mJcgnge3LKdg"
34373+ },
34374+ "signatures": {
34375+ "@alice_693:hs1": {
34376+ "ed25519:ALICEDEVICE693": "74ITLeXSjRjk2AM6Dz8MRaOZnGAhtKYtJ6Pd6IJbbntdHKXiTCjgwJRiAKpnpaSQWeAiCUQx08TzPdQJJpbWDw"
34377+ }
34378+ },
34379+ "user_id": "@alice_693:hs1",
34380+ "unsigned": {}
34381+ }
34382+ },
34383+ "@alice_695:hs1": {
34384+ "ALICEDEVICE695": {
34385+ "algorithms": [
34386+ "m.olm.v1.curve25519-aes-sha2",
34387+ "m.megolm.v1.aes-sha2"
34388+ ],
34389+ "device_id": "ALICEDEVICE695",
34390+ "keys": {
34391+ "curve25519:ALICEDEVICE695": "K6YKZTvOnvDZKh/pSjXgnUOyC9xsWU9b+V6QrV2pEXQ",
34392+ "ed25519:ALICEDEVICE695": "ngHiVuLLOFrOdi8Cwn5Lvda6rOGc/rqY1vAXDjHTEW8"
34393+ },
34394+ "signatures": {
34395+ "@alice_695:hs1": {
34396+ "ed25519:ALICEDEVICE695": "qmbBNMvkjvr9SIJqCa+eDC871G/Z6Bl2Vg7ye1k5pIl/3T6dWCnrK2fwYu/sGeMb152o/pFe9nJ809mVDAR4BQ"
34397+ }
34398+ },
34399+ "user_id": "@alice_695:hs1",
34400+ "unsigned": {}
34401+ }
34402+ },
34403+ "@alice_69:hs1": {
34404+ "ALICEDEVICE69": {
34405+ "algorithms": [
34406+ "m.olm.v1.curve25519-aes-sha2",
34407+ "m.megolm.v1.aes-sha2"
34408+ ],
34409+ "device_id": "ALICEDEVICE69",
34410+ "keys": {
34411+ "curve25519:ALICEDEVICE69": "yBoV7yHld4PSKXIN+Jp3Nh3oqO9YcrRMrtRe53O8ZHw",
34412+ "ed25519:ALICEDEVICE69": "4VmD20C3tgtVJUCfgG8bOERXaqge0U1ISg6v5ETu7Ec"
34413+ },
34414+ "signatures": {
34415+ "@alice_69:hs1": {
34416+ "ed25519:ALICEDEVICE69": "dVfch5mwk6v+shlDJ2alHwkoFKBwW52sk7er+Crol29+1KxbxlYEFPRuWzvNGl/uJHtalGcepKj4BRI+jlyWCA"
34417+ }
34418+ },
34419+ "user_id": "@alice_69:hs1",
34420+ "unsigned": {}
34421+ }
34422+ },
34423+ "@alice_707:hs1": {
34424+ "ALICEDEVICE707": {
34425+ "algorithms": [
34426+ "m.olm.v1.curve25519-aes-sha2",
34427+ "m.megolm.v1.aes-sha2"
34428+ ],
34429+ "device_id": "ALICEDEVICE707",
34430+ "keys": {
34431+ "curve25519:ALICEDEVICE707": "dfAoGRRfEuQCUaCC2H+Bl+HhCGM22R32V+mhX1ro3gc",
34432+ "ed25519:ALICEDEVICE707": "YFoacKvTXwwzhJZRflN72bxA3diI66JTG9p2vAqVkvk"
34433+ },
34434+ "signatures": {
34435+ "@alice_707:hs1": {
34436+ "ed25519:ALICEDEVICE707": "9N3x4202lFRZNiW6uOpAs/Ao6Df8O2DTZk7Pg7ycAmQIAj0WQ2b37jQsG8DfizlbExGk2V49OPUWyHoH4v7ODg"
34437+ }
34438+ },
34439+ "user_id": "@alice_707:hs1",
34440+ "unsigned": {}
34441+ }
34442+ },
34443+ "@alice_714:hs1": {
34444+ "ALICEDEVICE714": {
34445+ "algorithms": [
34446+ "m.olm.v1.curve25519-aes-sha2",
34447+ "m.megolm.v1.aes-sha2"
34448+ ],
34449+ "device_id": "ALICEDEVICE714",
34450+ "keys": {
34451+ "curve25519:ALICEDEVICE714": "YDIzOQcBFSlz8d4ltwddDGyPnuiUGnBL5Wwh56t4oCk",
34452+ "ed25519:ALICEDEVICE714": "EG1Sw6YYbtnyhjni/awhZiXNGn6N2QlHLG1fWcZQxYQ"
34453+ },
34454+ "signatures": {
34455+ "@alice_714:hs1": {
34456+ "ed25519:ALICEDEVICE714": "FUvAMK4S1zplKk3ofGD3W4pf0yJ9iN2J9cLvE4T0p1baYUnSAkKyt86I9yfF1s675ml2gwRvsnTLiN7H+3AHDg"
34457+ }
34458+ },
34459+ "user_id": "@alice_714:hs1",
34460+ "unsigned": {}
34461+ }
34462+ },
34463+ "@alice_715:hs1": {
34464+ "ALICEDEVICE715": {
34465+ "algorithms": [
34466+ "m.olm.v1.curve25519-aes-sha2",
34467+ "m.megolm.v1.aes-sha2"
34468+ ],
34469+ "device_id": "ALICEDEVICE715",
34470+ "keys": {
34471+ "curve25519:ALICEDEVICE715": "gliTZzuaqtvPIO8mf9s5h9FVOEnQt+lUY3UuoiL8Ezc",
34472+ "ed25519:ALICEDEVICE715": "Wk42RKhYRrfbXPHvXfLUQHK27BR0paPuBxRGL/9nYTI"
34473+ },
34474+ "signatures": {
34475+ "@alice_715:hs1": {
34476+ "ed25519:ALICEDEVICE715": "f73ctPPHQJOddmosO4GrsDMYTfbxuArUMr3wT+6PithpqYvMc1EXBk07BrVr3dHdsJC18dI45LUp+9zavww+Bw"
34477+ }
34478+ },
34479+ "user_id": "@alice_715:hs1",
34480+ "unsigned": {}
34481+ }
34482+ },
34483+ "@alice_722:hs1": {
34484+ "ALICEDEVICE722": {
34485+ "algorithms": [
34486+ "m.olm.v1.curve25519-aes-sha2",
34487+ "m.megolm.v1.aes-sha2"
34488+ ],
34489+ "device_id": "ALICEDEVICE722",
34490+ "keys": {
34491+ "curve25519:ALICEDEVICE722": "hP4MZekvTdsNuqXS0anfYqG9BrBUhDYSIm0Qjof66UU",
34492+ "ed25519:ALICEDEVICE722": "rF+Y6UbqoxZ1SWqu+o9u0Dwxkq3VHanOEG/cscEFWtE"
34493+ },
34494+ "signatures": {
34495+ "@alice_722:hs1": {
34496+ "ed25519:ALICEDEVICE722": "Reuy5wrSnv4ssnQYsvTtl7qDpj1SUUPqRgnDr6sauJ2XWK0NpbkTUTjpiz0z6ALPwqIlCNYBtaNVW0u/xbABDQ"
34497+ }
34498+ },
34499+ "user_id": "@alice_722:hs1",
34500+ "unsigned": {}
34501+ }
34502+ },
34503+ "@alice_729:hs1": {
34504+ "ALICEDEVICE729": {
34505+ "algorithms": [
34506+ "m.olm.v1.curve25519-aes-sha2",
34507+ "m.megolm.v1.aes-sha2"
34508+ ],
34509+ "device_id": "ALICEDEVICE729",
34510+ "keys": {
34511+ "curve25519:ALICEDEVICE729": "2zBfIVEC9AqByLP7vwbYNpWlNjGtU1y/ZHoA8k59+gM",
34512+ "ed25519:ALICEDEVICE729": "93wromnvInKVx7YexZRd5yaetlBnDRN71CPxFf6zw4M"
34513+ },
34514+ "signatures": {
34515+ "@alice_729:hs1": {
34516+ "ed25519:ALICEDEVICE729": "3sBQ545Fxc/UyXPFcsDACf3G+7y0K63yF8o4BTmZbTekHn5kP7SXZNa5gxEkMhtP/y2TsCjSesmsSj1CJ0ehDw"
34517+ }
34518+ },
34519+ "user_id": "@alice_729:hs1",
34520+ "unsigned": {}
34521+ }
34522+ },
34523+ "@alice_732:hs1": {
34524+ "ALICEDEVICE732": {
34525+ "algorithms": [
34526+ "m.olm.v1.curve25519-aes-sha2",
34527+ "m.megolm.v1.aes-sha2"
34528+ ],
34529+ "device_id": "ALICEDEVICE732",
34530+ "keys": {
34531+ "curve25519:ALICEDEVICE732": "MJ5KvQJsHgF+k2suktaXrYsB9kggf1vWM3LPwxDQ5Xs",
34532+ "ed25519:ALICEDEVICE732": "dfGfNsQWeezS79XPwgqXuz/Osl0XT/9p68zYVEGJRPc"
34533+ },
34534+ "signatures": {
34535+ "@alice_732:hs1": {
34536+ "ed25519:ALICEDEVICE732": "EVJWp7gde5isLi3ismpYIhbZw2nsCS4WWyJUsoHbIJf6oO2gl730Lbu1Hh8TMLFAp3DJOiSfvOrMZaU09VEgAQ"
34537+ }
34538+ },
34539+ "user_id": "@alice_732:hs1",
34540+ "unsigned": {}
34541+ }
34542+ },
34543+ "@alice_733:hs1": {
34544+ "ALICEDEVICE733": {
34545+ "algorithms": [
34546+ "m.olm.v1.curve25519-aes-sha2",
34547+ "m.megolm.v1.aes-sha2"
34548+ ],
34549+ "device_id": "ALICEDEVICE733",
34550+ "keys": {
34551+ "curve25519:ALICEDEVICE733": "HVHj95lr3jJeRhBKRiwETapZgDlaMhICDZBxxlW29hc",
34552+ "ed25519:ALICEDEVICE733": "tOV6GRXZO0sOY5/x+Phr/q5SK2FzHq+WdpIT1APUGkY"
34553+ },
34554+ "signatures": {
34555+ "@alice_733:hs1": {
34556+ "ed25519:ALICEDEVICE733": "8Ia/eYjvcVgxMZ5n3rGbFitSncDygItU/MFBit0Rqc22yfZmT7RR/61s+g9dub71FS/QiY+8K+ybQpt5XHm5Cw"
34557+ }
34558+ },
34559+ "user_id": "@alice_733:hs1",
34560+ "unsigned": {}
34561+ }
34562+ },
34563+ "@alice_738:hs1": {
34564+ "ALICEDEVICE738": {
34565+ "algorithms": [
34566+ "m.olm.v1.curve25519-aes-sha2",
34567+ "m.megolm.v1.aes-sha2"
34568+ ],
34569+ "device_id": "ALICEDEVICE738",
34570+ "keys": {
34571+ "curve25519:ALICEDEVICE738": "96oCuYJj60gwMwLNy7J7f5W9fV9tC2eUSr6NnIHGCys",
34572+ "ed25519:ALICEDEVICE738": "PGIWhPOcP0xvOPaLGbyJtLEwSYBzBc01QW8waClj2bY"
34573+ },
34574+ "signatures": {
34575+ "@alice_738:hs1": {
34576+ "ed25519:ALICEDEVICE738": "izABWEJ/G2OyVtIMI6MR0u49c2szdkCMH+3yHYWmWo+wb2r5SKYfS0/laAqCj//cfaw9KKcrod8YB4uJx1HeCg"
34577+ }
34578+ },
34579+ "user_id": "@alice_738:hs1",
34580+ "unsigned": {}
34581+ }
34582+ },
34583+ "@alice_740:hs1": {
34584+ "ALICEDEVICE740": {
34585+ "algorithms": [
34586+ "m.olm.v1.curve25519-aes-sha2",
34587+ "m.megolm.v1.aes-sha2"
34588+ ],
34589+ "device_id": "ALICEDEVICE740",
34590+ "keys": {
34591+ "curve25519:ALICEDEVICE740": "LC8Nrey1xmcCJRe3hfPCEK9ACbfOmqcb+3VOqmLe9QM",
34592+ "ed25519:ALICEDEVICE740": "tsxMpaGi1NSiImHPVrMNfFi45UlMbkYkrKPbTtz7vrU"
34593+ },
34594+ "signatures": {
34595+ "@alice_740:hs1": {
34596+ "ed25519:ALICEDEVICE740": "ax+oCgEwxvmVJ5Shp19vWw94JGWc9Q2mDIM1oTHOWvXKRsExcC4Wp63HRFlP7d6oOtDvNbjfhnLNVhtZgRnvBA"
34597+ }
34598+ },
34599+ "user_id": "@alice_740:hs1",
34600+ "unsigned": {}
34601+ }
34602+ },
34603+ "@alice_744:hs1": {
34604+ "ALICEDEVICE744": {
34605+ "algorithms": [
34606+ "m.olm.v1.curve25519-aes-sha2",
34607+ "m.megolm.v1.aes-sha2"
34608+ ],
34609+ "device_id": "ALICEDEVICE744",
34610+ "keys": {
34611+ "curve25519:ALICEDEVICE744": "wuMBR3ng5Bm2lRHHGxoUnj1rwwDtCxkfrjUnaxkfa0Y",
34612+ "ed25519:ALICEDEVICE744": "x+4muqlDg2WernY3/vLAC6FcHSQPqShzw2PdygyKfcs"
34613+ },
34614+ "signatures": {
34615+ "@alice_744:hs1": {
34616+ "ed25519:ALICEDEVICE744": "e+MJyDF6O8KXsnKKrks2N3lmJ9QhyTwdYJ/L4jo8D1mvIsXcn89HHWTbOb64PHdznlJCRFs4/Tz0qtNdNdX+Dw"
34617+ }
34618+ },
34619+ "user_id": "@alice_744:hs1",
34620+ "unsigned": {}
34621+ }
34622+ },
34623+ "@alice_745:hs1": {
34624+ "ALICEDEVICE745": {
34625+ "algorithms": [
34626+ "m.olm.v1.curve25519-aes-sha2",
34627+ "m.megolm.v1.aes-sha2"
34628+ ],
34629+ "device_id": "ALICEDEVICE745",
34630+ "keys": {
34631+ "curve25519:ALICEDEVICE745": "wLu2NkustC9wlavuJC5xJjndsFXBA+OVAEzoEmKpV3U",
34632+ "ed25519:ALICEDEVICE745": "+tzPFtEFyqUjoadK3kk6q+bADxTQAVq6nY+d+swHRN4"
34633+ },
34634+ "signatures": {
34635+ "@alice_745:hs1": {
34636+ "ed25519:ALICEDEVICE745": "PvHfiG3BFh5uCznR9Vep/7k429SLoyzA4DIwJ4UauoDiadRNxI3CKAi96nw4Pa+Fh+MvFPZxeeBVHew9iQXaCg"
34637+ }
34638+ },
34639+ "user_id": "@alice_745:hs1",
34640+ "unsigned": {}
34641+ }
34642+ },
34643+ "@alice_753:hs1": {
34644+ "ALICEDEVICE753": {
34645+ "algorithms": [
34646+ "m.olm.v1.curve25519-aes-sha2",
34647+ "m.megolm.v1.aes-sha2"
34648+ ],
34649+ "device_id": "ALICEDEVICE753",
34650+ "keys": {
34651+ "curve25519:ALICEDEVICE753": "+hMCA0EEgpCX+J7QzRlCGLLPpZ8zf+NGEurNLj1+ojg",
34652+ "ed25519:ALICEDEVICE753": "xgexba0NDO2+6BDzknNFKhKdfgiDB4dJWbsldlzsDe0"
34653+ },
34654+ "signatures": {
34655+ "@alice_753:hs1": {
34656+ "ed25519:ALICEDEVICE753": "YWMiSpkMLXSKFeQbTsN0cWC7nKLMjQdEU0KfsoUTy+2YoPXeSvk8CetS0E+xDMUQvJwoIcDfMd466Pu1w5QSAA"
34657+ }
34658+ },
34659+ "user_id": "@alice_753:hs1",
34660+ "unsigned": {}
34661+ }
34662+ },
34663+ "@alice_754:hs1": {
34664+ "ALICEDEVICE754": {
34665+ "algorithms": [
34666+ "m.olm.v1.curve25519-aes-sha2",
34667+ "m.megolm.v1.aes-sha2"
34668+ ],
34669+ "device_id": "ALICEDEVICE754",
34670+ "keys": {
34671+ "curve25519:ALICEDEVICE754": "hESi4U2hKxWgDcmcbQz3ihDYvNsKjwirihxQaMewSGE",
34672+ "ed25519:ALICEDEVICE754": "gVU5CRz8kI4mj7mZWzoK4Kg9m7PY/HXqOZjT7r+LSVQ"
34673+ },
34674+ "signatures": {
34675+ "@alice_754:hs1": {
34676+ "ed25519:ALICEDEVICE754": "ylhmIl0PKkZX+aod05ED9fna/BvVbNveS5OYxIw4LCrs1nfnrbHySzOg1UIDxptse9Q3A8LgtsVSwvz3G2tdCw"
34677+ }
34678+ },
34679+ "user_id": "@alice_754:hs1",
34680+ "unsigned": {}
34681+ }
34682+ },
34683+ "@alice_758:hs1": {
34684+ "ALICEDEVICE758": {
34685+ "algorithms": [
34686+ "m.olm.v1.curve25519-aes-sha2",
34687+ "m.megolm.v1.aes-sha2"
34688+ ],
34689+ "device_id": "ALICEDEVICE758",
34690+ "keys": {
34691+ "curve25519:ALICEDEVICE758": "zKI04XDEYLsx08wKnK+e8eECdbIWLut7bu1xtcE+U3c",
34692+ "ed25519:ALICEDEVICE758": "4loxb/NuSEw6makuInlUsnvUdAv403u6Rn3gLknSr1U"
34693+ },
34694+ "signatures": {
34695+ "@alice_758:hs1": {
34696+ "ed25519:ALICEDEVICE758": "invBpK4MA3J7wJlE8ZfdJ5FKZALyDhUmYHyJII6Et5yi0YE4uFIDMgXDdPGd0bTogybFg1zVg408SXPQdXnxCA"
34697+ }
34698+ },
34699+ "user_id": "@alice_758:hs1",
34700+ "unsigned": {}
34701+ }
34702+ },
34703+ "@alice_773:hs1": {
34704+ "ALICEDEVICE773": {
34705+ "algorithms": [
34706+ "m.olm.v1.curve25519-aes-sha2",
34707+ "m.megolm.v1.aes-sha2"
34708+ ],
34709+ "device_id": "ALICEDEVICE773",
34710+ "keys": {
34711+ "curve25519:ALICEDEVICE773": "Mxcpp63v6UJfcPlaTWjvSnHNfi+O5+eSCKbz5aix2WA",
34712+ "ed25519:ALICEDEVICE773": "FSjLn2qR5jJi7kBiMeitDOgdoSYmxncgzLee7UuyTec"
34713+ },
34714+ "signatures": {
34715+ "@alice_773:hs1": {
34716+ "ed25519:ALICEDEVICE773": "QJ8U9ZtFQDhL018nk1UmW32MqIpV/pKSvp/eWnwq8GLDc6pGRUwsfyS3kkE01rUvYFE3+AE8Hh9JfDaqtlH3BA"
34717+ }
34718+ },
34719+ "user_id": "@alice_773:hs1",
34720+ "unsigned": {}
34721+ }
34722+ },
34723+ "@alice_777:hs1": {
34724+ "ALICEDEVICE777": {
34725+ "algorithms": [
34726+ "m.olm.v1.curve25519-aes-sha2",
34727+ "m.megolm.v1.aes-sha2"
34728+ ],
34729+ "device_id": "ALICEDEVICE777",
34730+ "keys": {
34731+ "curve25519:ALICEDEVICE777": "+g8VDSpLRj4PYJPYYKdFt7wJlNvVQJBYjQ3sTyBFe0s",
34732+ "ed25519:ALICEDEVICE777": "HXACP5u3QFabzHCWOQbWyrlhsJI5BheSnOntmKYU9Aw"
34733+ },
34734+ "signatures": {
34735+ "@alice_777:hs1": {
34736+ "ed25519:ALICEDEVICE777": "2B64bFyY3YffEDtA/oiqFt6uHy4vGGQQHYWUowSiIX2BBqT66l1ayBei69ExU54eNNApnfF4TtCGT6HellIxBQ"
34737+ }
34738+ },
34739+ "user_id": "@alice_777:hs1",
34740+ "unsigned": {}
34741+ }
34742+ },
34743+ "@alice_799:hs1": {
34744+ "ALICEDEVICE799": {
34745+ "algorithms": [
34746+ "m.olm.v1.curve25519-aes-sha2",
34747+ "m.megolm.v1.aes-sha2"
34748+ ],
34749+ "device_id": "ALICEDEVICE799",
34750+ "keys": {
34751+ "curve25519:ALICEDEVICE799": "D2kZCqQwb9wokbehGksMEEjKqmGu9bSRZy/5ZXLoDC0",
34752+ "ed25519:ALICEDEVICE799": "QBeb2r3kb//ReiorN1zhYOL7ZttRNvETsuaSH4uG6aA"
34753+ },
34754+ "signatures": {
34755+ "@alice_799:hs1": {
34756+ "ed25519:ALICEDEVICE799": "hieE4Amav3cMjjylhWRLpo/moFlAa6x6EaAPTQKZreDeKEh5i7iZ4+LW4pr+jJdKYZMe3kRxI/r2HEIsYVNOBA"
34757+ }
34758+ },
34759+ "user_id": "@alice_799:hs1",
34760+ "unsigned": {}
34761+ }
34762+ },
34763+ "@alice_801:hs1": {
34764+ "ALICEDEVICE801": {
34765+ "algorithms": [
34766+ "m.olm.v1.curve25519-aes-sha2",
34767+ "m.megolm.v1.aes-sha2"
34768+ ],
34769+ "device_id": "ALICEDEVICE801",
34770+ "keys": {
34771+ "curve25519:ALICEDEVICE801": "3nX0OOW2bBXLtkTTZSiNTmpEHUZJJB3hbCrYS79p1mM",
34772+ "ed25519:ALICEDEVICE801": "y3h3HqLsSBPJvBaSuAl0kcH/xTlHhsg3I1biBfvfvvg"
34773+ },
34774+ "signatures": {
34775+ "@alice_801:hs1": {
34776+ "ed25519:ALICEDEVICE801": "GALu6Wy2yQfulcnSfeFtKHPrjilJ5vK+iAXKA/S8xVdtaQnEOHm/flxY6+L7hzfOG63sAihPOFQpVpFNW9KDBg"
34777+ }
34778+ },
34779+ "user_id": "@alice_801:hs1",
34780+ "unsigned": {}
34781+ }
34782+ },
34783+ "@alice_80:hs1": {
34784+ "ALICEDEVICE80": {
34785+ "algorithms": [
34786+ "m.olm.v1.curve25519-aes-sha2",
34787+ "m.megolm.v1.aes-sha2"
34788+ ],
34789+ "device_id": "ALICEDEVICE80",
34790+ "keys": {
34791+ "curve25519:ALICEDEVICE80": "lsDO9HenRRcbdyKkNDtNSRXwwz/h3RggE0No+S4uq0A",
34792+ "ed25519:ALICEDEVICE80": "doQYzYFo9L+yFd3PmVeh6Vuuh9fwGy8iDIJERYxu+tA"
34793+ },
34794+ "signatures": {
34795+ "@alice_80:hs1": {
34796+ "ed25519:ALICEDEVICE80": "ERgPNVf0HnBerN1L/btbHqWzHL6AluoaTrRwkFv1S4fN+IWOen0TxKH0gfVQFoCcla74TeQ4Lj/nH2mYhQhtDg"
34797+ }
34798+ },
34799+ "user_id": "@alice_80:hs1",
34800+ "unsigned": {}
34801+ }
34802+ },
34803+ "@alice_812:hs1": {
34804+ "ALICEDEVICE812": {
34805+ "algorithms": [
34806+ "m.olm.v1.curve25519-aes-sha2",
34807+ "m.megolm.v1.aes-sha2"
34808+ ],
34809+ "device_id": "ALICEDEVICE812",
34810+ "keys": {
34811+ "curve25519:ALICEDEVICE812": "xwX4q1YPFGAJlPL7+yK6yHKNBOnXFF3GDgJafi59WCg",
34812+ "ed25519:ALICEDEVICE812": "sKPix8OXuWqKEx5GvGzBvqtX1TbO6onYliKtXzrxzmY"
34813+ },
34814+ "signatures": {
34815+ "@alice_812:hs1": {
34816+ "ed25519:ALICEDEVICE812": "+LGcTq3eE+VQcaJmILvDEwL05HqZwUsMB1zvCjrf5EwHqlbYIyq5irFOHJqlfMuCrypHoWMOwZpptmU/HV17Cw"
34817+ }
34818+ },
34819+ "user_id": "@alice_812:hs1",
34820+ "unsigned": {}
34821+ }
34822+ },
34823+ "@alice_81:hs1": {
34824+ "ALICEDEVICE81": {
34825+ "algorithms": [
34826+ "m.olm.v1.curve25519-aes-sha2",
34827+ "m.megolm.v1.aes-sha2"
34828+ ],
34829+ "device_id": "ALICEDEVICE81",
34830+ "keys": {
34831+ "curve25519:ALICEDEVICE81": "HlE7+8i9eapS+pvaW0xmdMSjWt/ZjsEUMESXNf8UdHM",
34832+ "ed25519:ALICEDEVICE81": "V2lvtfBq9ImhewJNz6NAaPbLK5Pi9qLA4AX8CVoo0Wk"
34833+ },
34834+ "signatures": {
34835+ "@alice_81:hs1": {
34836+ "ed25519:ALICEDEVICE81": "iGns+eQviKMEROWHfkh3uEHSfROaoIJ4ds8eojh0NooWojvlCbcU1a/8zvqmG7RkDBWOx/8yuXQP2jH51D2uCw"
34837+ }
34838+ },
34839+ "user_id": "@alice_81:hs1",
34840+ "unsigned": {}
34841+ }
34842+ },
34843+ "@alice_822:hs1": {
34844+ "ALICEDEVICE822": {
34845+ "algorithms": [
34846+ "m.olm.v1.curve25519-aes-sha2",
34847+ "m.megolm.v1.aes-sha2"
34848+ ],
34849+ "device_id": "ALICEDEVICE822",
34850+ "keys": {
34851+ "curve25519:ALICEDEVICE822": "WdsLaOYysXqIU1UG2KUvG/O+QE1k6UPcYu8sjre2bGc",
34852+ "ed25519:ALICEDEVICE822": "ABTAufGnhiQrT2sckEyxjib/+lfmrdJEFOKPtSqCWL0"
34853+ },
34854+ "signatures": {
34855+ "@alice_822:hs1": {
34856+ "ed25519:ALICEDEVICE822": "gFGru0gFFkHsQR7M34v6Ax/XO9+dCJXv9hSkHZSlbYPxPQHnIChU9Pjzo2nNCusYS6jBqsJ9Eo4yAcmUwYNgDg"
34857+ }
34858+ },
34859+ "user_id": "@alice_822:hs1",
34860+ "unsigned": {}
34861+ }
34862+ },
34863+ "@alice_825:hs1": {
34864+ "ALICEDEVICE825": {
34865+ "algorithms": [
34866+ "m.olm.v1.curve25519-aes-sha2",
34867+ "m.megolm.v1.aes-sha2"
34868+ ],
34869+ "device_id": "ALICEDEVICE825",
34870+ "keys": {
34871+ "curve25519:ALICEDEVICE825": "GGDKKMuG7/bj4Uk5UbCETmVc34YTHlgFif5KFWeniT8",
34872+ "ed25519:ALICEDEVICE825": "TLd6zOeu+QKnaUIBaZWne9mhwvJAm2aFSi8vDFaxmFE"
34873+ },
34874+ "signatures": {
34875+ "@alice_825:hs1": {
34876+ "ed25519:ALICEDEVICE825": "8W0i3RJhvHsL+yU0fwZd8hac5C5JWkm7V25zEbeyEp1RJ7bWCWoxzsZBcXcPNT91+PCcX+L3i4qgt9HY9fkJBA"
34877+ }
34878+ },
34879+ "user_id": "@alice_825:hs1",
34880+ "unsigned": {}
34881+ }
34882+ },
34883+ "@alice_830:hs1": {
34884+ "ALICEDEVICE830": {
34885+ "algorithms": [
34886+ "m.olm.v1.curve25519-aes-sha2",
34887+ "m.megolm.v1.aes-sha2"
34888+ ],
34889+ "device_id": "ALICEDEVICE830",
34890+ "keys": {
34891+ "curve25519:ALICEDEVICE830": "BbM3V0RBl+K28r0vIabq4A3wQDYB/VejNbwXoOv8vGk",
34892+ "ed25519:ALICEDEVICE830": "Yg5mFjlKp03oChANmh5KU7QQsdNtTERT79aH4nCVc0o"
34893+ },
34894+ "signatures": {
34895+ "@alice_830:hs1": {
34896+ "ed25519:ALICEDEVICE830": "BXKIcNTpZI+zCtRDUzPjxJUBhvrgIMIX9YQVHOAFGw6KS6eIRnS7RyRw6rcqyO4r13TpPfZBC/Xr8o5lWM1FBQ"
34897+ }
34898+ },
34899+ "user_id": "@alice_830:hs1",
34900+ "unsigned": {}
34901+ }
34902+ },
34903+ "@alice_835:hs1": {
34904+ "ALICEDEVICE835": {
34905+ "algorithms": [
34906+ "m.olm.v1.curve25519-aes-sha2",
34907+ "m.megolm.v1.aes-sha2"
34908+ ],
34909+ "device_id": "ALICEDEVICE835",
34910+ "keys": {
34911+ "curve25519:ALICEDEVICE835": "ua08uIUNvcMT2A8uOQXuXuEbrUasw0Bk5K8TbpNjTgw",
34912+ "ed25519:ALICEDEVICE835": "fOu0I98+qDkKs9mlWhFD3aCUbuJYiynGdmOvBDzrZoY"
34913+ },
34914+ "signatures": {
34915+ "@alice_835:hs1": {
34916+ "ed25519:ALICEDEVICE835": "ifIaEjG4ZTYXOyaszNO6bOten300bZpJ5TSEP/0e0Tq3cRC39/T2LxKy0kfsksPNveJH5zexORrpnLVH7PLPBg"
34917+ }
34918+ },
34919+ "user_id": "@alice_835:hs1",
34920+ "unsigned": {}
34921+ }
34922+ },
34923+ "@alice_855:hs1": {
34924+ "ALICEDEVICE855": {
34925+ "algorithms": [
34926+ "m.olm.v1.curve25519-aes-sha2",
34927+ "m.megolm.v1.aes-sha2"
34928+ ],
34929+ "device_id": "ALICEDEVICE855",
34930+ "keys": {
34931+ "curve25519:ALICEDEVICE855": "SJVOF6zB+rIq+w5dSYzbs6pNopkgMAuJBrvnFnYPzGc",
34932+ "ed25519:ALICEDEVICE855": "cEuHm70jbJPdTDZE/9KkF9iez2Ydf77F2Luj2GBOaLA"
34933+ },
34934+ "signatures": {
34935+ "@alice_855:hs1": {
34936+ "ed25519:ALICEDEVICE855": "pCrGsFaXp2zkibrURFqmcfPawHP09IeTr8miGKVihpHWKfAyGHwOjDnTM5gVMoSgf/boUujYxWAB4iM/VUDUDQ"
34937+ }
34938+ },
34939+ "user_id": "@alice_855:hs1",
34940+ "unsigned": {}
34941+ }
34942+ },
34943+ "@alice_887:hs1": {
34944+ "ALICEDEVICE887": {
34945+ "algorithms": [
34946+ "m.olm.v1.curve25519-aes-sha2",
34947+ "m.megolm.v1.aes-sha2"
34948+ ],
34949+ "device_id": "ALICEDEVICE887",
34950+ "keys": {
34951+ "curve25519:ALICEDEVICE887": "Gg3jhlGJet6Mj2nnd4WwWidiBY/5mcJk9qbZ5PmyvjI",
34952+ "ed25519:ALICEDEVICE887": "uwvQPeBMNEsXCEKU++SYMyFgftFb+AVqXvoXGvR56OU"
34953+ },
34954+ "signatures": {
34955+ "@alice_887:hs1": {
34956+ "ed25519:ALICEDEVICE887": "B34LeaKTwM29BKE5F0SWnsjs/8J1k7aN8wVjmMENd6yC+wRSV18CEvrGHdhYxOn2I/YPv92sMmW7BjfhTyiZCw"
34957+ }
34958+ },
34959+ "user_id": "@alice_887:hs1",
34960+ "unsigned": {}
34961+ }
34962+ },
34963+ "@alice_897:hs1": {
34964+ "ALICEDEVICE897": {
34965+ "algorithms": [
34966+ "m.olm.v1.curve25519-aes-sha2",
34967+ "m.megolm.v1.aes-sha2"
34968+ ],
34969+ "device_id": "ALICEDEVICE897",
34970+ "keys": {
34971+ "curve25519:ALICEDEVICE897": "auvTyb61IEZk/AmvuDr7BY4hVQ4Z9cdCOQ0TlhqBwx8",
34972+ "ed25519:ALICEDEVICE897": "gVaH/z+hie537iMxOgOcNmYZ6nY2j+tWvKRrW0h9Ofw"
34973+ },
34974+ "signatures": {
34975+ "@alice_897:hs1": {
34976+ "ed25519:ALICEDEVICE897": "cMuUhhX2sd0FlCdXra398dkKkw4IN95SzTfxmfkCInymcYZNfsWLJ7BtS84VMTX5rp7vRH1C1fRanBFNosV6BA"
34977+ }
34978+ },
34979+ "user_id": "@alice_897:hs1",
34980+ "unsigned": {}
34981+ }
34982+ },
34983+ "@alice_903:hs1": {
34984+ "ALICEDEVICE903": {
34985+ "algorithms": [
34986+ "m.olm.v1.curve25519-aes-sha2",
34987+ "m.megolm.v1.aes-sha2"
34988+ ],
34989+ "device_id": "ALICEDEVICE903",
34990+ "keys": {
34991+ "curve25519:ALICEDEVICE903": "pkP8T9tcoo8tI590+LDKIysIQ2sbEABroNvUlzbES2U",
34992+ "ed25519:ALICEDEVICE903": "OTpwk4vrc2vRVUPM6Jw3R4Qfd9JhWGYlvVgroKkZsoM"
34993+ },
34994+ "signatures": {
34995+ "@alice_903:hs1": {
34996+ "ed25519:ALICEDEVICE903": "gdHFbQ9zHc/PupS7bhgcuLCzT6xoiSxo4jw80ya1DPT/5HYVqD+pwL2hRdn1xkLwnaav7zampESM6uR28JtEDQ"
34997+ }
34998+ },
34999+ "user_id": "@alice_903:hs1",
35000+ "unsigned": {}
35001+ }
35002+ },
35003+ "@alice_907:hs1": {
35004+ "ALICEDEVICE907": {
35005+ "algorithms": [
35006+ "m.olm.v1.curve25519-aes-sha2",
35007+ "m.megolm.v1.aes-sha2"
35008+ ],
35009+ "device_id": "ALICEDEVICE907",
35010+ "keys": {
35011+ "curve25519:ALICEDEVICE907": "bEsl2aiSdMdV7/JRsWVJ8d78yqz7ctG0yEJyLSyYyQE",
35012+ "ed25519:ALICEDEVICE907": "v1qyL4FcOpVnuvLAbP2sDUpGkDLEUZ5mUJ+O798s9Lo"
35013+ },
35014+ "signatures": {
35015+ "@alice_907:hs1": {
35016+ "ed25519:ALICEDEVICE907": "rJnMfw+5AAYXFyFPmniWpf7DXX0O9PGvqPAcPTrv8jEL5j4emG1vhY76YwiQY36qougCCeYjwKQ6JpX4UHeFBA"
35017+ }
35018+ },
35019+ "user_id": "@alice_907:hs1",
35020+ "unsigned": {}
35021+ }
35022+ },
35023+ "@alice_910:hs1": {
35024+ "ALICEDEVICE910": {
35025+ "algorithms": [
35026+ "m.olm.v1.curve25519-aes-sha2",
35027+ "m.megolm.v1.aes-sha2"
35028+ ],
35029+ "device_id": "ALICEDEVICE910",
35030+ "keys": {
35031+ "curve25519:ALICEDEVICE910": "1/rNBmaaDBIGSwzQKuS/Zsfm8XTPR08dRX51t3gv+Xs",
35032+ "ed25519:ALICEDEVICE910": "zOMxglhwlHnQ5QdDPIdufGZmfMJv5dsvPpuU2UkB61E"
35033+ },
35034+ "signatures": {
35035+ "@alice_910:hs1": {
35036+ "ed25519:ALICEDEVICE910": "x5uqB/ISgdQ2X3jXnOHoPSvT+klqbtHTWS1OCfMzToGvnyeq2FSU4S80dq7HbMpDuuXDdCtoi1Z2pQeVr++hBg"
35037+ }
35038+ },
35039+ "user_id": "@alice_910:hs1",
35040+ "unsigned": {}
35041+ }
35042+ },
35043+ "@alice_917:hs1": {
35044+ "ALICEDEVICE917": {
35045+ "algorithms": [
35046+ "m.olm.v1.curve25519-aes-sha2",
35047+ "m.megolm.v1.aes-sha2"
35048+ ],
35049+ "device_id": "ALICEDEVICE917",
35050+ "keys": {
35051+ "curve25519:ALICEDEVICE917": "/9QjiTB+BbDrvrozm62N3EyDPk5beqMMj+6Q4HF5YRw",
35052+ "ed25519:ALICEDEVICE917": "feZrH6DECSxUh9OCexesJO9d2oZQa+7hSAfT7I2Nlpk"
35053+ },
35054+ "signatures": {
35055+ "@alice_917:hs1": {
35056+ "ed25519:ALICEDEVICE917": "rQHOM5ub+bqZASm2t+I6tHHkjmbgwRDz6r53Qi4VtYAIi+nJPR2+SOIBo3eq/fm7ebVXfl4/uY0aRurFxLxxDQ"
35057+ }
35058+ },
35059+ "user_id": "@alice_917:hs1",
35060+ "unsigned": {}
35061+ }
35062+ },
35063+ "@alice_924:hs1": {
35064+ "ALICEDEVICE924": {
35065+ "algorithms": [
35066+ "m.olm.v1.curve25519-aes-sha2",
35067+ "m.megolm.v1.aes-sha2"
35068+ ],
35069+ "device_id": "ALICEDEVICE924",
35070+ "keys": {
35071+ "curve25519:ALICEDEVICE924": "QT7yB5rB+LTsp8maFrIIjJjxeCqecK7+E4+rw9Qc+wI",
35072+ "ed25519:ALICEDEVICE924": "gwAVnO1HKp5f0Pyd5yTuWYJab2q25w1mo49zJ473waI"
35073+ },
35074+ "signatures": {
35075+ "@alice_924:hs1": {
35076+ "ed25519:ALICEDEVICE924": "OIHilnXnv92vWPMMyKvOBsylTkPL0/zWD9Y1i6F7jgiCoXwyYuiZK6XMMK+XpfjFKfyrxwrr8jFbyPWiTofVAA"
35077+ }
35078+ },
35079+ "user_id": "@alice_924:hs1",
35080+ "unsigned": {}
35081+ }
35082+ },
35083+ "@alice_929:hs1": {
35084+ "ALICEDEVICE929": {
35085+ "algorithms": [
35086+ "m.olm.v1.curve25519-aes-sha2",
35087+ "m.megolm.v1.aes-sha2"
35088+ ],
35089+ "device_id": "ALICEDEVICE929",
35090+ "keys": {
35091+ "curve25519:ALICEDEVICE929": "T49jvQdHMYI09WldG2j4eW7bGVWjtLIlzXay5ISdMj4",
35092+ "ed25519:ALICEDEVICE929": "OwFXEFo6Vsfk37eSWeqtkoIQSxgXbjvjvD/Cy0+5MNA"
35093+ },
35094+ "signatures": {
35095+ "@alice_929:hs1": {
35096+ "ed25519:ALICEDEVICE929": "zTf2AMhH+RP8iiFmpdELopH0LHFjO83+TxAPIzFr8uhh51s+JpYRpdoaW9vm3hWM0DCPx1qLAY/jr+S5836gDw"
35097+ }
35098+ },
35099+ "user_id": "@alice_929:hs1",
35100+ "unsigned": {}
35101+ }
35102+ },
35103+ "@alice_931:hs1": {
35104+ "ALICEDEVICE931": {
35105+ "algorithms": [
35106+ "m.olm.v1.curve25519-aes-sha2",
35107+ "m.megolm.v1.aes-sha2"
35108+ ],
35109+ "device_id": "ALICEDEVICE931",
35110+ "keys": {
35111+ "curve25519:ALICEDEVICE931": "9RKEN9oKNjttp2ShXV73FdCdRMKXo7i4hLeaVUtr7WM",
35112+ "ed25519:ALICEDEVICE931": "YJPyiab6UjCJQ1tKkgBf0QEKSWJicds1dRm4vLYyDH0"
35113+ },
35114+ "signatures": {
35115+ "@alice_931:hs1": {
35116+ "ed25519:ALICEDEVICE931": "Clg7e5ePJx81HM/ejVN1z4drWETI6atjo55kJjSNAzIKzkgu0cWSHkj9qbWROSstYxJg0JIONyzTM9EsnOsLAw"
35117+ }
35118+ },
35119+ "user_id": "@alice_931:hs1",
35120+ "unsigned": {}
35121+ }
35122+ },
35123+ "@alice_947:hs1": {
35124+ "ALICEDEVICE947": {
35125+ "algorithms": [
35126+ "m.olm.v1.curve25519-aes-sha2",
35127+ "m.megolm.v1.aes-sha2"
35128+ ],
35129+ "device_id": "ALICEDEVICE947",
35130+ "keys": {
35131+ "curve25519:ALICEDEVICE947": "Wxsz9T9vtU6u2oiVrfvdQwxFWTxRIX//FrNuLp0mdyo",
35132+ "ed25519:ALICEDEVICE947": "pSmPLKdihIUcJ2q6j0ioibZzwONWgOHAHCj+8ywuuEw"
35133+ },
35134+ "signatures": {
35135+ "@alice_947:hs1": {
35136+ "ed25519:ALICEDEVICE947": "XCj/pjrl/nSMOpmvJnjnikSGj/IOWetI8Jtp7hxLKHgqiiDSbd1mqSn+a+AEcPjqOU6veQyhLqSeM8vt9xHRAA"
35137+ }
35138+ },
35139+ "user_id": "@alice_947:hs1",
35140+ "unsigned": {}
35141+ }
35142+ },
35143+ "@alice_94:hs1": {
35144+ "ALICEDEVICE94": {
35145+ "algorithms": [
35146+ "m.olm.v1.curve25519-aes-sha2",
35147+ "m.megolm.v1.aes-sha2"
35148+ ],
35149+ "device_id": "ALICEDEVICE94",
35150+ "keys": {
35151+ "curve25519:ALICEDEVICE94": "MI+wOtpOuMjxoJAe3NpPgAIU3JuAho3TOAyp6kWh1hM",
35152+ "ed25519:ALICEDEVICE94": "2hYM0n1tm/IdBB9HK43HyB+QHSPAe3UkMG5+bakpf4E"
35153+ },
35154+ "signatures": {
35155+ "@alice_94:hs1": {
35156+ "ed25519:ALICEDEVICE94": "isxxU7tIxu1n40uwmCB88+DIfUqbo73SyURjrSLsuQLeo4rs04PRZgajfdKCiBqEiLOKsjO255n8qfCyuywMAA"
35157+ }
35158+ },
35159+ "user_id": "@alice_94:hs1",
35160+ "unsigned": {}
35161+ }
35162+ },
35163+ "@alice_950:hs1": {
35164+ "ALICEDEVICE950": {
35165+ "algorithms": [
35166+ "m.olm.v1.curve25519-aes-sha2",
35167+ "m.megolm.v1.aes-sha2"
35168+ ],
35169+ "device_id": "ALICEDEVICE950",
35170+ "keys": {
35171+ "curve25519:ALICEDEVICE950": "KIVRHvLOFY+kB+yEpEQQ72GrGXI2iMW/W4PFXrxPVkc",
35172+ "ed25519:ALICEDEVICE950": "79O6C8xyoS42iGoLL65BaYg1nKV+4VHQVdaapyl1TK0"
35173+ },
35174+ "signatures": {
35175+ "@alice_950:hs1": {
35176+ "ed25519:ALICEDEVICE950": "1ExVMQs1ViEHLlEzL38IIm1Tcfzk0xsiHjaBGPL4YUyqx0u7Ncm6WdFX96R3i0KR/Lqmd+J0dOYFqBiNAUVzCA"
35177+ }
35178+ },
35179+ "user_id": "@alice_950:hs1",
35180+ "unsigned": {}
35181+ }
35182+ },
35183+ "@alice_957:hs1": {
35184+ "ALICEDEVICE957": {
35185+ "algorithms": [
35186+ "m.olm.v1.curve25519-aes-sha2",
35187+ "m.megolm.v1.aes-sha2"
35188+ ],
35189+ "device_id": "ALICEDEVICE957",
35190+ "keys": {
35191+ "curve25519:ALICEDEVICE957": "+rQ9ftk2BVRh771cw5Syjydwn0dnsQ/YqJNvzE+zfHw",
35192+ "ed25519:ALICEDEVICE957": "wiZqvWZwXYX0LwCc2lUhboTURxDSYdE+l0n1VO2A6Ng"
35193+ },
35194+ "signatures": {
35195+ "@alice_957:hs1": {
35196+ "ed25519:ALICEDEVICE957": "8z9fGbP+4q2qwmctJvqqoHNVDmhr2GauL5rPgiJEq41nxIvAFkbQBmV5MbHlgPQm1Aey5qxz2s+UzBejGxKkBw"
35197+ }
35198+ },
35199+ "user_id": "@alice_957:hs1",
35200+ "unsigned": {}
35201+ }
35202+ },
35203+ "@alice_958:hs1": {
35204+ "ALICEDEVICE958": {
35205+ "algorithms": [
35206+ "m.olm.v1.curve25519-aes-sha2",
35207+ "m.megolm.v1.aes-sha2"
35208+ ],
35209+ "device_id": "ALICEDEVICE958",
35210+ "keys": {
35211+ "curve25519:ALICEDEVICE958": "9oyPsqsWPDmb6sClVJoOzDI1lxobB8JskM5Yu/HV8Bw",
35212+ "ed25519:ALICEDEVICE958": "L7czfoNW6uaRISU+Jj/WVExivw/NyMhWo/4vKBI5hV4"
35213+ },
35214+ "signatures": {
35215+ "@alice_958:hs1": {
35216+ "ed25519:ALICEDEVICE958": "rgqebiJkSFVirChcJGrzBBBMtRC2EVQTCn4pb2pzou76ReJ5eYUbPeiugcHKxAy7a1f/qtEywQQbSeGClck3CQ"
35217+ }
35218+ },
35219+ "user_id": "@alice_958:hs1",
35220+ "unsigned": {}
35221+ }
35222+ },
35223+ "@alice_967:hs1": {
35224+ "ALICEDEVICE967": {
35225+ "algorithms": [
35226+ "m.olm.v1.curve25519-aes-sha2",
35227+ "m.megolm.v1.aes-sha2"
35228+ ],
35229+ "device_id": "ALICEDEVICE967",
35230+ "keys": {
35231+ "curve25519:ALICEDEVICE967": "osFo+l9HZr4aY3aQQ+Cww17Zq1GwKCchpTPgzQaojSA",
35232+ "ed25519:ALICEDEVICE967": "NGTmvbb1NeucOX2Nbq4qPWVwt7I+j2yVsFYGv+VFhHk"
35233+ },
35234+ "signatures": {
35235+ "@alice_967:hs1": {
35236+ "ed25519:ALICEDEVICE967": "WJd0sSz2eIbmglWCuGh8hRcGaZFxY6m7v4xpLP9aeg+Jx9oxN0Pe4fBnkl7wgSeGs4BJMWFXK9ZtcwgclT6lCA"
35237+ }
35238+ },
35239+ "user_id": "@alice_967:hs1",
35240+ "unsigned": {}
35241+ }
35242+ },
35243+ "@alice_96:hs1": {
35244+ "ALICEDEVICE96": {
35245+ "algorithms": [
35246+ "m.olm.v1.curve25519-aes-sha2",
35247+ "m.megolm.v1.aes-sha2"
35248+ ],
35249+ "device_id": "ALICEDEVICE96",
35250+ "keys": {
35251+ "curve25519:ALICEDEVICE96": "W4RtmMMmV+OePccuNximjEtU7C/i9JQ6gLVjL4iNZxY",
35252+ "ed25519:ALICEDEVICE96": "393PBJD1g5H44jpNqg1Z5JrsC7ZhSs/ShHaGnj2dREY"
35253+ },
35254+ "signatures": {
35255+ "@alice_96:hs1": {
35256+ "ed25519:ALICEDEVICE96": "UJwNdJTmZXjVLhjS+bdYZsiQ3nJPrAVyIwrek9qGKkIUdoDBt8xTkFuJ8g7FJx3ktgY09OurA/DOD+GdwhgMAw"
35257+ }
35258+ },
35259+ "user_id": "@alice_96:hs1",
35260+ "unsigned": {}
35261+ }
35262+ },
35263+ "@alice_980:hs1": {
35264+ "ALICEDEVICE980": {
35265+ "algorithms": [
35266+ "m.olm.v1.curve25519-aes-sha2",
35267+ "m.megolm.v1.aes-sha2"
35268+ ],
35269+ "device_id": "ALICEDEVICE980",
35270+ "keys": {
35271+ "curve25519:ALICEDEVICE980": "d5VTO7XnLb2xXhgq4gmkhJYmmZ1BQfHI+WifxLX9mSo",
35272+ "ed25519:ALICEDEVICE980": "dqol911Ta3DJb0NK/W2c6PBOCiqN2QhpsJ69JDaA6vQ"
35273+ },
35274+ "signatures": {
35275+ "@alice_980:hs1": {
35276+ "ed25519:ALICEDEVICE980": "Xf6VUTst3AarGvsvdqNuHgzJzKbdtxl9Ye/mdFIeDKX6igJYlfEBXcU92JasS1RKLr2pW45SkKPB2wOWfR+KAQ"
35277+ }
35278+ },
35279+ "user_id": "@alice_980:hs1",
35280+ "unsigned": {}
35281+ }
35282+ },
35283+ "@alice_9:hs1": {
35284+ "ALICEDEVICE9": {
35285+ "algorithms": [
35286+ "m.olm.v1.curve25519-aes-sha2",
35287+ "m.megolm.v1.aes-sha2"
35288+ ],
35289+ "device_id": "ALICEDEVICE9",
35290+ "keys": {
35291+ "curve25519:ALICEDEVICE9": "uXmTDp21RLZUF5Xh39MelDW5wjE7jiMmjPU87zjnJhg",
35292+ "ed25519:ALICEDEVICE9": "YHZ8Z5uUv3aqglvM97zzGVkWI8apkG8xsVBTgUcxWn8"
35293+ },
35294+ "signatures": {
35295+ "@alice_9:hs1": {
35296+ "ed25519:ALICEDEVICE9": "SNVYch0+6fPHKDX17wjNKFDPnYfaUnRWoqGSuCk/RXCl/0DF/bjwNuoVrDuowenpyd6AZPYcE4HeAxbZPQm1Dw"
35297+ }
35298+ },
35299+ "user_id": "@alice_9:hs1",
35300+ "unsigned": {}
35301+ }
35302+ },
35303+ "@alice_1002:hs1": {
35304+ "ALICEDEVICE1002": {
35305+ "algorithms": [
35306+ "m.olm.v1.curve25519-aes-sha2",
35307+ "m.megolm.v1.aes-sha2"
35308+ ],
35309+ "device_id": "ALICEDEVICE1002",
35310+ "keys": {
35311+ "curve25519:ALICEDEVICE1002": "uK1vAjL+BfAgxkBmiCLIGkl/sehfS/notI/oBKtKnjA",
35312+ "ed25519:ALICEDEVICE1002": "eVwVDzo2GOhI1rk3iwEISvhkaip/G42cQAc93UGiybE"
35313+ },
35314+ "signatures": {
35315+ "@alice_1002:hs1": {
35316+ "ed25519:ALICEDEVICE1002": "jSrN+DvyWqMaKH6GNhjkv2REb66e0EeUAyMHHKR78XqOQla3eNt65SFpWjNcOaW4gh3UHisAszThIflWlIelCA"
35317+ }
35318+ },
35319+ "user_id": "@alice_1002:hs1",
35320+ "unsigned": {}
35321+ }
35322+ },
35323+ "@alice_1007:hs1": {
35324+ "ALICEDEVICE1007": {
35325+ "algorithms": [
35326+ "m.olm.v1.curve25519-aes-sha2",
35327+ "m.megolm.v1.aes-sha2"
35328+ ],
35329+ "device_id": "ALICEDEVICE1007",
35330+ "keys": {
35331+ "curve25519:ALICEDEVICE1007": "GHdK/SFQenvDg2AOjtEzZrFoFPbS9tC3HL5SUkRerXs",
35332+ "ed25519:ALICEDEVICE1007": "HY7jvuXibeBRovcdfIR9upWumCCxYq3kOxJ9EQIUpjg"
35333+ },
35334+ "signatures": {
35335+ "@alice_1007:hs1": {
35336+ "ed25519:ALICEDEVICE1007": "8lBFORf3LQTrl2LWKuW72yijux8IRzNq08KjNc6um/UxViKVie6Gvq5lBUqdTosA2yVAZA41Vd3TCFdQMfBJCQ"
35337+ }
35338+ },
35339+ "user_id": "@alice_1007:hs1",
35340+ "unsigned": {}
35341+ }
35342+ },
35343+ "@alice_1012:hs1": {
35344+ "ALICEDEVICE1012": {
35345+ "algorithms": [
35346+ "m.olm.v1.curve25519-aes-sha2",
35347+ "m.megolm.v1.aes-sha2"
35348+ ],
35349+ "device_id": "ALICEDEVICE1012",
35350+ "keys": {
35351+ "curve25519:ALICEDEVICE1012": "uhDt2wChsN542cObiHvNu/KbfdiewzYagLu63P4r+D4",
35352+ "ed25519:ALICEDEVICE1012": "YPUnMF7co/OL+vlkO54uMYwbfGGLJGZx5FmOA9jhgdM"
35353+ },
35354+ "signatures": {
35355+ "@alice_1012:hs1": {
35356+ "ed25519:ALICEDEVICE1012": "FkxUhu5aq8TYcHB18NDkMERzTTaph8DP/KyCdCQnAptxY5XBGfFq1zNxIKg5uhLbU0jYqZWktsUQI0s5I09sBA"
35357+ }
35358+ },
35359+ "user_id": "@alice_1012:hs1",
35360+ "unsigned": {}
35361+ }
35362+ },
35363+ "@alice_1017:hs1": {
35364+ "ALICEDEVICE1017": {
35365+ "algorithms": [
35366+ "m.olm.v1.curve25519-aes-sha2",
35367+ "m.megolm.v1.aes-sha2"
35368+ ],
35369+ "device_id": "ALICEDEVICE1017",
35370+ "keys": {
35371+ "curve25519:ALICEDEVICE1017": "nK2EiwUGEwiTU99qxhvirS2AJ56hwbvhB9jl4BK0ojc",
35372+ "ed25519:ALICEDEVICE1017": "NHwXo4bj/Y07QzKF0UUVBxqA1xpSmjHhBPBnbdzT5iE"
35373+ },
35374+ "signatures": {
35375+ "@alice_1017:hs1": {
35376+ "ed25519:ALICEDEVICE1017": "VKPc7bEpqi5U1ISb8MgjXS4pBEsGNPtVLHODUAln/2LP5uvYLgv6Yykr/8RHmPIuZUkJz9koV29qQFqwfBUxAA"
35377+ }
35378+ },
35379+ "user_id": "@alice_1017:hs1",
35380+ "unsigned": {}
35381+ }
35382+ },
35383+ "@alice_1019:hs1": {
35384+ "ALICEDEVICE1019": {
35385+ "algorithms": [
35386+ "m.olm.v1.curve25519-aes-sha2",
35387+ "m.megolm.v1.aes-sha2"
35388+ ],
35389+ "device_id": "ALICEDEVICE1019",
35390+ "keys": {
35391+ "curve25519:ALICEDEVICE1019": "TGNsgqOk/ndRSA2gQ3j2eT1TCUxA51luWdEYfdNWDBs",
35392+ "ed25519:ALICEDEVICE1019": "a/FB0IkIGkY4/f5AfQK3mNfp5LmsXkx0YDVG+UlspVI"
35393+ },
35394+ "signatures": {
35395+ "@alice_1019:hs1": {
35396+ "ed25519:ALICEDEVICE1019": "qdZHTVs/xc0U9nN7G9Jkwj8cIuVcadOXcFnZ75N4xeiF5vLv6jfEKpYRCTugqhwKUCzbhC/8/vWMuMKAKLiUDQ"
35397+ }
35398+ },
35399+ "user_id": "@alice_1019:hs1",
35400+ "unsigned": {}
35401+ }
35402+ },
35403+ "@alice_1028:hs1": {
35404+ "ALICEDEVICE1028": {
35405+ "algorithms": [
35406+ "m.olm.v1.curve25519-aes-sha2",
35407+ "m.megolm.v1.aes-sha2"
35408+ ],
35409+ "device_id": "ALICEDEVICE1028",
35410+ "keys": {
35411+ "curve25519:ALICEDEVICE1028": "Krir62oxa8Eo93QZKm84UUG5y5tjHTAkPdDZnLrIgGk",
35412+ "ed25519:ALICEDEVICE1028": "0NjUWODAhn3fNLI1qj6yrvpBqAEsakZMWq+6BfbqkQY"
35413+ },
35414+ "signatures": {
35415+ "@alice_1028:hs1": {
35416+ "ed25519:ALICEDEVICE1028": "o/LzAW0Q55cZ0c15Yr685nFO7ZKrfyOHWSXpLpjY1YmSKOdvv9A6mvyr65iZRsgDPWRlynWGMdOTyTqZAwotCg"
35417+ }
35418+ },
35419+ "user_id": "@alice_1028:hs1",
35420+ "unsigned": {}
35421+ }
35422+ },
35423+ "@alice_1032:hs1": {
35424+ "ALICEDEVICE1032": {
35425+ "algorithms": [
35426+ "m.olm.v1.curve25519-aes-sha2",
35427+ "m.megolm.v1.aes-sha2"
35428+ ],
35429+ "device_id": "ALICEDEVICE1032",
35430+ "keys": {
35431+ "curve25519:ALICEDEVICE1032": "lvvyhCjbnChi17OoeR+laROnR74Xi1EHluoRzZg4/zY",
35432+ "ed25519:ALICEDEVICE1032": "X+6f145oqtXWY+9KeuqIdukxH538E6In/TMWcCP1vu8"
35433+ },
35434+ "signatures": {
35435+ "@alice_1032:hs1": {
35436+ "ed25519:ALICEDEVICE1032": "ZSc/pMI3Gmbhp2a7xDo3kVuZWEuk/28GdbqN3MYxp5x+lazP/rdsQoT4QKZOELoHlZwRbv2lm4okTWrAlPC8Dg"
35437+ }
35438+ },
35439+ "user_id": "@alice_1032:hs1",
35440+ "unsigned": {}
35441+ }
35442+ },
35443+ "@alice_1043:hs1": {
35444+ "ALICEDEVICE1043": {
35445+ "algorithms": [
35446+ "m.olm.v1.curve25519-aes-sha2",
35447+ "m.megolm.v1.aes-sha2"
35448+ ],
35449+ "device_id": "ALICEDEVICE1043",
35450+ "keys": {
35451+ "curve25519:ALICEDEVICE1043": "ZHgZuuf8pbDwLIwECKxteuPGZ3H+n7+eTeevTcq5jGI",
35452+ "ed25519:ALICEDEVICE1043": "TobFZNp6pyzSdLu2tfVpOrsULjrPZmIshE8nsPXEhvQ"
35453+ },
35454+ "signatures": {
35455+ "@alice_1043:hs1": {
35456+ "ed25519:ALICEDEVICE1043": "3dDQRIAa8W6B+yj+EWMhc/Hs8SW7yTlPPTCLCBpswh2q6k8hPaeg+q3e/IU+dJLQsHnEtSOK0aFoxpqtcGziCg"
35457+ }
35458+ },
35459+ "user_id": "@alice_1043:hs1",
35460+ "unsigned": {}
35461+ }
35462+ },
35463+ "@alice_104:hs1": {
35464+ "ALICEDEVICE104": {
35465+ "algorithms": [
35466+ "m.olm.v1.curve25519-aes-sha2",
35467+ "m.megolm.v1.aes-sha2"
35468+ ],
35469+ "device_id": "ALICEDEVICE104",
35470+ "keys": {
35471+ "curve25519:ALICEDEVICE104": "4PsOxPRjG3OeYih+cpRJUrW1u7rPSpwZnkzbr52icCg",
35472+ "ed25519:ALICEDEVICE104": "nYwj7ItvzhKA4QA89xT3g1+xHzDUh5a29a0E7ACh5ko"
35473+ },
35474+ "signatures": {
35475+ "@alice_104:hs1": {
35476+ "ed25519:ALICEDEVICE104": "C9p7f5GMo+DXMxqCrv63ONeZmDRJCFErT4qrcUSP9znDwoWkqK4Fixhs66OkhhDPoTeIorfMxYxCciSeGMgwDA"
35477+ }
35478+ },
35479+ "user_id": "@alice_104:hs1",
35480+ "unsigned": {}
35481+ }
35482+ },
35483+ "@alice_1050:hs1": {
35484+ "ALICEDEVICE1050": {
35485+ "algorithms": [
35486+ "m.olm.v1.curve25519-aes-sha2",
35487+ "m.megolm.v1.aes-sha2"
35488+ ],
35489+ "device_id": "ALICEDEVICE1050",
35490+ "keys": {
35491+ "curve25519:ALICEDEVICE1050": "TnRlJ6ZSby1cG47Y2xkF7KXpmtBwSkPIwsNN+OZYDxI",
35492+ "ed25519:ALICEDEVICE1050": "K1cyOZwD/zq1tTYM9E5tUhswDIVOtU+YftaSCNb2Hg0"
35493+ },
35494+ "signatures": {
35495+ "@alice_1050:hs1": {
35496+ "ed25519:ALICEDEVICE1050": "i67ydtej/HB6MdzGFHwDWQ7dV7fPLMTsUnT6k730S1QCIZFinFlHz1bGWXQ9PPUUAx1KbgX7KfIpo43bY+6iAw"
35497+ }
35498+ },
35499+ "user_id": "@alice_1050:hs1",
35500+ "unsigned": {}
35501+ }
35502+ },
35503+ "@alice_1051:hs1": {
35504+ "ALICEDEVICE1051": {
35505+ "algorithms": [
35506+ "m.olm.v1.curve25519-aes-sha2",
35507+ "m.megolm.v1.aes-sha2"
35508+ ],
35509+ "device_id": "ALICEDEVICE1051",
35510+ "keys": {
35511+ "curve25519:ALICEDEVICE1051": "gWjjicEdTsjqFQMvr+WlruIzqLi7UsAtrRXgtE6ikF0",
35512+ "ed25519:ALICEDEVICE1051": "f8f95N6gGKeK6yqUuoNPwZEj+4Ep2DsOZgVDiuGVlM0"
35513+ },
35514+ "signatures": {
35515+ "@alice_1051:hs1": {
35516+ "ed25519:ALICEDEVICE1051": "h0JCHe3AntZkuY9v+7nmTOwsUtoH5wu5/jMLuF0dBsKjJ/+TR43FbX63S1zyjd0k2OsVFne3nmGBfMOZh39UDQ"
35517+ }
35518+ },
35519+ "user_id": "@alice_1051:hs1",
35520+ "unsigned": {}
35521+ }
35522+ },
35523+ "@alice_1061:hs1": {
35524+ "ALICEDEVICE1061": {
35525+ "algorithms": [
35526+ "m.olm.v1.curve25519-aes-sha2",
35527+ "m.megolm.v1.aes-sha2"
35528+ ],
35529+ "device_id": "ALICEDEVICE1061",
35530+ "keys": {
35531+ "curve25519:ALICEDEVICE1061": "ALRXGuBSxpOkq2p+HxTYRa9bWPd4b5/Sm1Z4CTTCjQE",
35532+ "ed25519:ALICEDEVICE1061": "PFVcs9JtPzQzKLO8HU/lK8ztKWRK3w9sTKABOGD56iw"
35533+ },
35534+ "signatures": {
35535+ "@alice_1061:hs1": {
35536+ "ed25519:ALICEDEVICE1061": "HzamEeek5kl/XMI7smxfqBy8Ou2XEuddQUTs684Kw2aF/n0MojdqgIC68fK1b4rEfi+Q48Ls+Ab2j1Sm2NDTDA"
35537+ }
35538+ },
35539+ "user_id": "@alice_1061:hs1",
35540+ "unsigned": {}
35541+ }
35542+ },
35543+ "@alice_108:hs1": {
35544+ "ALICEDEVICE108": {
35545+ "algorithms": [
35546+ "m.olm.v1.curve25519-aes-sha2",
35547+ "m.megolm.v1.aes-sha2"
35548+ ],
35549+ "device_id": "ALICEDEVICE108",
35550+ "keys": {
35551+ "curve25519:ALICEDEVICE108": "61w7YinSfr4IAyHzYJabEXKZOZV3MHTt3ygzpgRQ0kQ",
35552+ "ed25519:ALICEDEVICE108": "QrvDVCjkGaD4lhML6l3T1iOOSwhXAfXG+aF4UH/TXVk"
35553+ },
35554+ "signatures": {
35555+ "@alice_108:hs1": {
35556+ "ed25519:ALICEDEVICE108": "UwPRvDQpzDxXdzqhj6S9bffJYlxsKuS1yKtnFO1EPKJq/zXE2nwsA4nKCiWP1pR/6ZnK/ZqBmEjoSe+sQeLqDQ"
35557+ }
35558+ },
35559+ "user_id": "@alice_108:hs1",
35560+ "unsigned": {}
35561+ }
35562+ },
35563+ "@alice_1091:hs1": {
35564+ "ALICEDEVICE1091": {
35565+ "algorithms": [
35566+ "m.olm.v1.curve25519-aes-sha2",
35567+ "m.megolm.v1.aes-sha2"
35568+ ],
35569+ "device_id": "ALICEDEVICE1091",
35570+ "keys": {
35571+ "curve25519:ALICEDEVICE1091": "NyG/wQDeCnVIksdr8RhYlSfUR3omPSJJykWYJzoYlj8",
35572+ "ed25519:ALICEDEVICE1091": "cWxFu624ucVdfOvx6VFunHcXOPOG3ATxiLiOeudIRec"
35573+ },
35574+ "signatures": {
35575+ "@alice_1091:hs1": {
35576+ "ed25519:ALICEDEVICE1091": "xMSguxBnXItrmjGKyqSf0frY9+OuP0w+jhI1uleznIv/SC0LoVRX3s2+7OTuIGCtLKKaf93M8I7HU2lBujHeBw"
35577+ }
35578+ },
35579+ "user_id": "@alice_1091:hs1",
35580+ "unsigned": {}
35581+ }
35582+ },
35583+ "@alice_1093:hs1": {
35584+ "ALICEDEVICE1093": {
35585+ "algorithms": [
35586+ "m.olm.v1.curve25519-aes-sha2",
35587+ "m.megolm.v1.aes-sha2"
35588+ ],
35589+ "device_id": "ALICEDEVICE1093",
35590+ "keys": {
35591+ "curve25519:ALICEDEVICE1093": "3MwOjdvcdBvl2PW9NB39H2xbD8GEz+xHMyL1elrSaHQ",
35592+ "ed25519:ALICEDEVICE1093": "jChBhWgEEJUbBjNgnOxluT27aYCrXd+T46LZu4QtHoU"
35593+ },
35594+ "signatures": {
35595+ "@alice_1093:hs1": {
35596+ "ed25519:ALICEDEVICE1093": "REGjkeVDmash1ysLe6Xul8aaJj+VN04ET837BDhVbh4ro4n8nyfvzabca4a0y4K878QLiMfXWzs4IzYvF4E2DQ"
35597+ }
35598+ },
35599+ "user_id": "@alice_1093:hs1",
35600+ "unsigned": {}
35601+ }
35602+ },
35603+ "@alice_1099:hs1": {
35604+ "ALICEDEVICE1099": {
35605+ "algorithms": [
35606+ "m.olm.v1.curve25519-aes-sha2",
35607+ "m.megolm.v1.aes-sha2"
35608+ ],
35609+ "device_id": "ALICEDEVICE1099",
35610+ "keys": {
35611+ "curve25519:ALICEDEVICE1099": "pqYLPlxqHcppJtthhioQGjR7Y0Mz4bmyM3rUNvGnKFY",
35612+ "ed25519:ALICEDEVICE1099": "1XXYr+S2Hf6lBwQbdZS2/QNi8zbmqFYES3U3GbKhtzA"
35613+ },
35614+ "signatures": {
35615+ "@alice_1099:hs1": {
35616+ "ed25519:ALICEDEVICE1099": "xi93xepiJTxVl4b3YUzjQbleIuPOyqNWjeFDZNq2ywjZM7We5rBhjbuveDu4Y+ysNb2ll+vYc4/yS/6/bGb0CQ"
35617+ }
35618+ },
35619+ "user_id": "@alice_1099:hs1",
35620+ "unsigned": {}
35621+ }
35622+ },
35623+ "@alice_1104:hs1": {
35624+ "ALICEDEVICE1104": {
35625+ "algorithms": [
35626+ "m.olm.v1.curve25519-aes-sha2",
35627+ "m.megolm.v1.aes-sha2"
35628+ ],
35629+ "device_id": "ALICEDEVICE1104",
35630+ "keys": {
35631+ "curve25519:ALICEDEVICE1104": "KJ0nMKik3QcxfDrii1KjZT8yca7MQEOxdt8FHjdRYRA",
35632+ "ed25519:ALICEDEVICE1104": "jZufpa/S/bDty6N/M4WpP2X6pnJF1n7GJMUVKXTIE1o"
35633+ },
35634+ "signatures": {
35635+ "@alice_1104:hs1": {
35636+ "ed25519:ALICEDEVICE1104": "G4ScXD39OXgsz6vEXMQTWnNJgCo+hqf0N3abjivF3BNHAzMLDDJdiAGgUbmfBeIKTHgkBuiBL7N3tpGTYnUWAQ"
35637+ }
35638+ },
35639+ "user_id": "@alice_1104:hs1",
35640+ "unsigned": {}
35641+ }
35642+ },
35643+ "@alice_1110:hs1": {
35644+ "ALICEDEVICE1110": {
35645+ "algorithms": [
35646+ "m.olm.v1.curve25519-aes-sha2",
35647+ "m.megolm.v1.aes-sha2"
35648+ ],
35649+ "device_id": "ALICEDEVICE1110",
35650+ "keys": {
35651+ "curve25519:ALICEDEVICE1110": "h9q9wsJf+d+HN5Nl5gnkw6zXX8bRavX8tXqbIhYIMhw",
35652+ "ed25519:ALICEDEVICE1110": "r5q+OM293ljFp4DZv5ooMFblMqpRwYtP3VBGx1uZhHY"
35653+ },
35654+ "signatures": {
35655+ "@alice_1110:hs1": {
35656+ "ed25519:ALICEDEVICE1110": "8lUY+ia3sV7eHlLoD9xtccfNDsu8l8NTvB11r/0xu710rRj2hE4WeUChtQjAlRsdvLh0Z4/H72Otz2+vtPBbAQ"
35657+ }
35658+ },
35659+ "user_id": "@alice_1110:hs1",
35660+ "unsigned": {}
35661+ }
35662+ },
35663+ "@alice_1113:hs1": {
35664+ "ALICEDEVICE1113": {
35665+ "algorithms": [
35666+ "m.olm.v1.curve25519-aes-sha2",
35667+ "m.megolm.v1.aes-sha2"
35668+ ],
35669+ "device_id": "ALICEDEVICE1113",
35670+ "keys": {
35671+ "curve25519:ALICEDEVICE1113": "AbZaq/M4NTgcH+V/ZLvRX2Y/GCnuAPRqx7AjMjP2024",
35672+ "ed25519:ALICEDEVICE1113": "VJF91WZKEPBWxXbu73ZMhbdHkaKi3ihrZ0r0UCG6fRk"
35673+ },
35674+ "signatures": {
35675+ "@alice_1113:hs1": {
35676+ "ed25519:ALICEDEVICE1113": "sJiH+DfBD5nyCdbyMgaqK01uABzT4rcmdN4j90GR8eKHOM7qmS03qb6XMIzuPBdZHo70IXDFWWCQaCM349c8BQ"
35677+ }
35678+ },
35679+ "user_id": "@alice_1113:hs1",
35680+ "unsigned": {}
35681+ }
35682+ },
35683+ "@alice_1116:hs1": {
35684+ "ALICEDEVICE1116": {
35685+ "algorithms": [
35686+ "m.olm.v1.curve25519-aes-sha2",
35687+ "m.megolm.v1.aes-sha2"
35688+ ],
35689+ "device_id": "ALICEDEVICE1116",
35690+ "keys": {
35691+ "curve25519:ALICEDEVICE1116": "tky/mificBFNlRlIc8D+SzB31AzS30DqHjCXYDpHxQI",
35692+ "ed25519:ALICEDEVICE1116": "WVdQxlKmzXRpa7syP6RrT2AEfEF5KZiTVEljxR+dUvg"
35693+ },
35694+ "signatures": {
35695+ "@alice_1116:hs1": {
35696+ "ed25519:ALICEDEVICE1116": "Sfv8IG9XDuiydrTYEIUjnaIW+jpPRUUMQ+LQqqoEa39rqserAMDp5BkkAyatliaRcPqEXVyUTNJHixxnblufBg"
35697+ }
35698+ },
35699+ "user_id": "@alice_1116:hs1",
35700+ "unsigned": {}
35701+ }
35702+ },
35703+ "@alice_1119:hs1": {
35704+ "ALICEDEVICE1119": {
35705+ "algorithms": [
35706+ "m.olm.v1.curve25519-aes-sha2",
35707+ "m.megolm.v1.aes-sha2"
35708+ ],
35709+ "device_id": "ALICEDEVICE1119",
35710+ "keys": {
35711+ "curve25519:ALICEDEVICE1119": "a4XHW0WmDQFIOhf/FmpVDcRT1RoidpPOIIlPsWkC/mE",
35712+ "ed25519:ALICEDEVICE1119": "wTrZW5tyUUOUnPiQLQF2Y0Aq2YqYMvKFcg6sCevvBbA"
35713+ },
35714+ "signatures": {
35715+ "@alice_1119:hs1": {
35716+ "ed25519:ALICEDEVICE1119": "n09KGF8SuYyqtfKHZ7MQc996LMMwDgQUbz4/E4047s9ChSU6d1KnF6g3I1K72JFRNtO5D2uP1LolhlLpFkm+Cg"
35717+ }
35718+ },
35719+ "user_id": "@alice_1119:hs1",
35720+ "unsigned": {}
35721+ }
35722+ },
35723+ "@alice_111:hs1": {
35724+ "ALICEDEVICE111": {
35725+ "algorithms": [
35726+ "m.olm.v1.curve25519-aes-sha2",
35727+ "m.megolm.v1.aes-sha2"
35728+ ],
35729+ "device_id": "ALICEDEVICE111",
35730+ "keys": {
35731+ "curve25519:ALICEDEVICE111": "Ig4KFgrD1AIPKQNbIX9ScbviESv1oMfhMCPp7p6oT1o",
35732+ "ed25519:ALICEDEVICE111": "w/xECPpn2qHz3qwmtpRWsPaiadj7Fet+wWxNOvn0A/E"
35733+ },
35734+ "signatures": {
35735+ "@alice_111:hs1": {
35736+ "ed25519:ALICEDEVICE111": "VxA7+dhewtzN6uYNrmaiOSc8x43wL98Nv1odnFozDobqrwEfEmx0rsOoifUq1u84XmaUOyHf+N8EKgYfAOH+Cw"
35737+ }
35738+ },
35739+ "user_id": "@alice_111:hs1",
35740+ "unsigned": {}
35741+ }
35742+ },
35743+ "@alice_1124:hs1": {
35744+ "ALICEDEVICE1124": {
35745+ "algorithms": [
35746+ "m.olm.v1.curve25519-aes-sha2",
35747+ "m.megolm.v1.aes-sha2"
35748+ ],
35749+ "device_id": "ALICEDEVICE1124",
35750+ "keys": {
35751+ "curve25519:ALICEDEVICE1124": "HiJb2Se1FuqPwq2nszIzzbahQ7nAB633KA6pRdV44Aw",
35752+ "ed25519:ALICEDEVICE1124": "JxGWBdN0XaK/nYpjOzGDUXI2LRQnZ4drsMRzdxs5nq8"
35753+ },
35754+ "signatures": {
35755+ "@alice_1124:hs1": {
35756+ "ed25519:ALICEDEVICE1124": "WK0FQ0CYF/P1VOppUmm7G996teUOhb4Q02E3yGH9/Gm4SQ5UvEKEU4kuWuh7h4/p7tUBz/t3xl1WFnDj8sHxCg"
35757+ }
35758+ },
35759+ "user_id": "@alice_1124:hs1",
35760+ "unsigned": {}
35761+ }
35762+ },
35763+ "@alice_1137:hs1": {
35764+ "ALICEDEVICE1137": {
35765+ "algorithms": [
35766+ "m.olm.v1.curve25519-aes-sha2",
35767+ "m.megolm.v1.aes-sha2"
35768+ ],
35769+ "device_id": "ALICEDEVICE1137",
35770+ "keys": {
35771+ "curve25519:ALICEDEVICE1137": "v9W8Dv4g4ugdk1M+nhroXfrxeU6JhdPjoX2RBQWuQzU",
35772+ "ed25519:ALICEDEVICE1137": "c2AH/ybbF6sL6ugE9FrGkH3GddWzvpG3At8IGCPj8mU"
35773+ },
35774+ "signatures": {
35775+ "@alice_1137:hs1": {
35776+ "ed25519:ALICEDEVICE1137": "9yvBXRJsSDyv6SX9I8c/+jIPbl4Ji4yQtM9N2E3ID4ISa1ewxnckTl4XB2X1mpc8XCMMkahlUiK2kv24WC/ZCA"
35777+ }
35778+ },
35779+ "user_id": "@alice_1137:hs1",
35780+ "unsigned": {}
35781+ }
35782+ },
35783+ "@alice_1140:hs1": {
35784+ "ALICEDEVICE1140": {
35785+ "algorithms": [
35786+ "m.olm.v1.curve25519-aes-sha2",
35787+ "m.megolm.v1.aes-sha2"
35788+ ],
35789+ "device_id": "ALICEDEVICE1140",
35790+ "keys": {
35791+ "curve25519:ALICEDEVICE1140": "CGNpDu0XQfw+MLWdnuke5sgCQe7WNnUKOTFL4IZ6uwY",
35792+ "ed25519:ALICEDEVICE1140": "8kZWra+jSoJF3mzFCGIRsEmsHzzFsszIuVXDgpw5EUc"
35793+ },
35794+ "signatures": {
35795+ "@alice_1140:hs1": {
35796+ "ed25519:ALICEDEVICE1140": "FlzGkMWewlRlh69YXKc7SzjbquCYbIjGLT/nsnRm4tXnyd9enrG6/FtIGdzJy6gCI2qVsWK5T6YXKF0CA4TQDw"
35797+ }
35798+ },
35799+ "user_id": "@alice_1140:hs1",
35800+ "unsigned": {}
35801+ }
35802+ },
35803+ "@alice_1141:hs1": {
35804+ "ALICEDEVICE1141": {
35805+ "algorithms": [
35806+ "m.olm.v1.curve25519-aes-sha2",
35807+ "m.megolm.v1.aes-sha2"
35808+ ],
35809+ "device_id": "ALICEDEVICE1141",
35810+ "keys": {
35811+ "curve25519:ALICEDEVICE1141": "tGKVz9S4JuQd4s5NDcyrVS+kC4ORjSn3IkyTSVRQuUM",
35812+ "ed25519:ALICEDEVICE1141": "hjOvygbyIPODzFySXxZCodFYL/1/X+TdnnBUcLaSdlg"
35813+ },
35814+ "signatures": {
35815+ "@alice_1141:hs1": {
35816+ "ed25519:ALICEDEVICE1141": "dWa4NGFbpLEbziPlCqaEIn9kPOsrKnYil+1w49xnA3i+H7ng+2wSV+luu0jwU+8HZi44rTHNg89Y16alAWZcCA"
35817+ }
35818+ },
35819+ "user_id": "@alice_1141:hs1",
35820+ "unsigned": {}
35821+ }
35822+ },
35823+ "@alice_1152:hs1": {
35824+ "ALICEDEVICE1152": {
35825+ "algorithms": [
35826+ "m.olm.v1.curve25519-aes-sha2",
35827+ "m.megolm.v1.aes-sha2"
35828+ ],
35829+ "device_id": "ALICEDEVICE1152",
35830+ "keys": {
35831+ "curve25519:ALICEDEVICE1152": "23b7wnugfGwbMEP33DqbcZccViYgDBTLybNwlmwoRFY",
35832+ "ed25519:ALICEDEVICE1152": "gVVGVVFcsWDSvIvVx1xzf5IRs9EKoi1KSch2LcM0mZc"
35833+ },
35834+ "signatures": {
35835+ "@alice_1152:hs1": {
35836+ "ed25519:ALICEDEVICE1152": "y62izFHYVFoc6g3/9crN+Fi2FnkEL2oQVgic7YXTXuKKGu1LyABiq8PlClpz+OI9cQrOkDahyFAudwxN+TkVBQ"
35837+ }
35838+ },
35839+ "user_id": "@alice_1152:hs1",
35840+ "unsigned": {}
35841+ }
35842+ },
35843+ "@alice_1153:hs1": {
35844+ "ALICEDEVICE1153": {
35845+ "algorithms": [
35846+ "m.olm.v1.curve25519-aes-sha2",
35847+ "m.megolm.v1.aes-sha2"
35848+ ],
35849+ "device_id": "ALICEDEVICE1153",
35850+ "keys": {
35851+ "curve25519:ALICEDEVICE1153": "tEpisxj+kM4iSeF1fNnThju2wPsOYIzyK2lz3mb0Ri0",
35852+ "ed25519:ALICEDEVICE1153": "hvxbc2ZXohpsvH5H6mzU9MNrCNXcOlJwsmrMc2CKPTo"
35853+ },
35854+ "signatures": {
35855+ "@alice_1153:hs1": {
35856+ "ed25519:ALICEDEVICE1153": "dHjTYvQi3DnspjAMnCL4aD/sS5+veyYFtwschzySufb8JSuchaL0WvNdAr5Q/f3O8D2IC4fi9S7Z7fj9Q773Dw"
35857+ }
35858+ },
35859+ "user_id": "@alice_1153:hs1",
35860+ "unsigned": {}
35861+ }
35862+ },
35863+ "@alice_1164:hs1": {
35864+ "ALICEDEVICE1164": {
35865+ "algorithms": [
35866+ "m.olm.v1.curve25519-aes-sha2",
35867+ "m.megolm.v1.aes-sha2"
35868+ ],
35869+ "device_id": "ALICEDEVICE1164",
35870+ "keys": {
35871+ "curve25519:ALICEDEVICE1164": "7tHdMXmHN+1pYB16+G+TN4Cadx2OtiTIr9pNewohDmY",
35872+ "ed25519:ALICEDEVICE1164": "QrrHuLKrTnZa9sXwR4IwpKW+f7EU8Pzv2qbgJ8A+Q/k"
35873+ },
35874+ "signatures": {
35875+ "@alice_1164:hs1": {
35876+ "ed25519:ALICEDEVICE1164": "a6rgulVu/pBunWQW4ROLzHArivWPkIDl4UlZ0EVC7KMnVvoSm0HfYbERfERcFTb+sQIl6++My1ABZ5L06V7vAA"
35877+ }
35878+ },
35879+ "user_id": "@alice_1164:hs1",
35880+ "unsigned": {}
35881+ }
35882+ },
35883+ "@alice_1167:hs1": {
35884+ "ALICEDEVICE1167": {
35885+ "algorithms": [
35886+ "m.olm.v1.curve25519-aes-sha2",
35887+ "m.megolm.v1.aes-sha2"
35888+ ],
35889+ "device_id": "ALICEDEVICE1167",
35890+ "keys": {
35891+ "curve25519:ALICEDEVICE1167": "DKxYTqTSgpWvRp/iLF/DQBMUdGS6wLrlh7waPHyQBRU",
35892+ "ed25519:ALICEDEVICE1167": "Al3Urhr7BzJ4xiFGo4fhsohKpxKAWWj1gy6j7E74bT4"
35893+ },
35894+ "signatures": {
35895+ "@alice_1167:hs1": {
35896+ "ed25519:ALICEDEVICE1167": "HSeGt+MRS+uHcKcrhAXfVKfba4IzLHYpRz0qDBltrww9GEucVirAvHp0XJo3qcK7QvulcfU3P0UDuMCoSLVQCA"
35897+ }
35898+ },
35899+ "user_id": "@alice_1167:hs1",
35900+ "unsigned": {}
35901+ }
35902+ },
35903+ "@alice_1175:hs1": {
35904+ "ALICEDEVICE1175": {
35905+ "algorithms": [
35906+ "m.olm.v1.curve25519-aes-sha2",
35907+ "m.megolm.v1.aes-sha2"
35908+ ],
35909+ "device_id": "ALICEDEVICE1175",
35910+ "keys": {
35911+ "curve25519:ALICEDEVICE1175": "DiK3szluegEzgJ50w665Qoay9a8+GafTj6r3QxxwhzI",
35912+ "ed25519:ALICEDEVICE1175": "bLzL8LHcIuYJ4fj4w2H9M3N9rSEw41CknqyPc8KmOvo"
35913+ },
35914+ "signatures": {
35915+ "@alice_1175:hs1": {
35916+ "ed25519:ALICEDEVICE1175": "vJYobaB4Ns69mcRgzV9clK4qEVBkZMKTy9JrNyXLnflkqGXpNDuwil7oUdWD4dEKkGp12ZOn/heDAd44cxFrBg"
35917+ }
35918+ },
35919+ "user_id": "@alice_1175:hs1",
35920+ "unsigned": {}
35921+ }
35922+ },
35923+ "@alice_1176:hs1": {
35924+ "ALICEDEVICE1176": {
35925+ "algorithms": [
35926+ "m.olm.v1.curve25519-aes-sha2",
35927+ "m.megolm.v1.aes-sha2"
35928+ ],
35929+ "device_id": "ALICEDEVICE1176",
35930+ "keys": {
35931+ "curve25519:ALICEDEVICE1176": "CE0NpWJByALkuH1P8YQILb4zrfTTY8rbqSXJ9ZhJ2mU",
35932+ "ed25519:ALICEDEVICE1176": "Mc9V5Srkqvo7liWARrpC2SfyjiadTwiaQHdipoHSRCM"
35933+ },
35934+ "signatures": {
35935+ "@alice_1176:hs1": {
35936+ "ed25519:ALICEDEVICE1176": "2J6tzM7E4V6CUStscQzNZO7zzBPKRkArV9wIxiZOhcLoqbD7XF9+BB06U8A4y+IW3BE05bz0TMJAT3HpieTjAQ"
35937+ }
35938+ },
35939+ "user_id": "@alice_1176:hs1",
35940+ "unsigned": {}
35941+ }
35942+ },
35943+ "@alice_1195:hs1": {
35944+ "ALICEDEVICE1195": {
35945+ "algorithms": [
35946+ "m.olm.v1.curve25519-aes-sha2",
35947+ "m.megolm.v1.aes-sha2"
35948+ ],
35949+ "device_id": "ALICEDEVICE1195",
35950+ "keys": {
35951+ "curve25519:ALICEDEVICE1195": "cEikMN7aNGDr/bUnEclgSwZX7HboscHLRNEub14ERlU",
35952+ "ed25519:ALICEDEVICE1195": "3aDIxWKs716ZOnHR1wLvIb6AHZWj7OJfn2X2FajxLek"
35953+ },
35954+ "signatures": {
35955+ "@alice_1195:hs1": {
35956+ "ed25519:ALICEDEVICE1195": "eOkY3uRvo+eJKR4CeMa4YWRLqtVA864E08leI8CQi8YZPPUaQo/YkRt59xcWx1QWOC9nTw0csX1cKTa1XW9rDg"
35957+ }
35958+ },
35959+ "user_id": "@alice_1195:hs1",
35960+ "unsigned": {}
35961+ }
35962+ },
35963+ "@alice_1199:hs1": {
35964+ "ALICEDEVICE1199": {
35965+ "algorithms": [
35966+ "m.olm.v1.curve25519-aes-sha2",
35967+ "m.megolm.v1.aes-sha2"
35968+ ],
35969+ "device_id": "ALICEDEVICE1199",
35970+ "keys": {
35971+ "curve25519:ALICEDEVICE1199": "ofci4LW6uv6Y2I9cojmYPYclSD1k2+mlyvR7p4a+1BE",
35972+ "ed25519:ALICEDEVICE1199": "0S7ivKwJ/7WLJ30YweXEiX6pIJLXxp717GANJaLoRaM"
35973+ },
35974+ "signatures": {
35975+ "@alice_1199:hs1": {
35976+ "ed25519:ALICEDEVICE1199": "4cWW+XaFI7taOTygr6rM7y4s+QUuzVpWUxFzh6Iru9q7/DPIpkY5ZxExZ6mWWUHIXICeaFrEk4KXK71Pa9uhCQ"
35977+ }
35978+ },
35979+ "user_id": "@alice_1199:hs1",
35980+ "unsigned": {}
35981+ }
35982+ },
35983+ "@alice_1210:hs1": {
35984+ "ALICEDEVICE1210": {
35985+ "algorithms": [
35986+ "m.olm.v1.curve25519-aes-sha2",
35987+ "m.megolm.v1.aes-sha2"
35988+ ],
35989+ "device_id": "ALICEDEVICE1210",
35990+ "keys": {
35991+ "curve25519:ALICEDEVICE1210": "T70vloE4dUV+WG9/hI9bJ5ogWLTJMIIRqVLMRSCjXBs",
35992+ "ed25519:ALICEDEVICE1210": "aWfcGehw30xm9zB8vqzs++UsJyOV/Iz/W2WOLzTNfXI"
35993+ },
35994+ "signatures": {
35995+ "@alice_1210:hs1": {
35996+ "ed25519:ALICEDEVICE1210": "bja94nQMiL5PELg5IFYMkHO4EUelz5e6u+Ck/fW1qFNhkjogwAO0z8S2OwWJo0qgXsEuS4Xlp8jJk/IMqVO5AQ"
35997+ }
35998+ },
35999+ "user_id": "@alice_1210:hs1",
36000+ "unsigned": {}
36001+ }
36002+ },
36003+ "@alice_1216:hs1": {
36004+ "ALICEDEVICE1216": {
36005+ "algorithms": [
36006+ "m.olm.v1.curve25519-aes-sha2",
36007+ "m.megolm.v1.aes-sha2"
36008+ ],
36009+ "device_id": "ALICEDEVICE1216",
36010+ "keys": {
36011+ "curve25519:ALICEDEVICE1216": "awmfydg8C1/NBLFBq2fjTTngP9+zFlOXo/cZV0j+JF4",
36012+ "ed25519:ALICEDEVICE1216": "s0uRmriFirX7TspN4hgmK/3j8W3iZWaIkEvswksCUxw"
36013+ },
36014+ "signatures": {
36015+ "@alice_1216:hs1": {
36016+ "ed25519:ALICEDEVICE1216": "HZMoUhPkWRQlMyDDC7j9dAqkvCVvHdG2le7ViNNFlDA72/IUlYbHhXOeB2M66h51xsK4ZEx2JbXkTHjQU69eAQ"
36017+ }
36018+ },
36019+ "user_id": "@alice_1216:hs1",
36020+ "unsigned": {}
36021+ }
36022+ },
36023+ "@alice_1218:hs1": {
36024+ "ALICEDEVICE1218": {
36025+ "algorithms": [
36026+ "m.olm.v1.curve25519-aes-sha2",
36027+ "m.megolm.v1.aes-sha2"
36028+ ],
36029+ "device_id": "ALICEDEVICE1218",
36030+ "keys": {
36031+ "curve25519:ALICEDEVICE1218": "Y7dv69Py7QncmhcQ31ZTNsXd6Dk6cLtnahuHPJ6vxGQ",
36032+ "ed25519:ALICEDEVICE1218": "vfAK1SZgrjA0KScpKxmP46u6KgAbos6kskZV5NCO0kM"
36033+ },
36034+ "signatures": {
36035+ "@alice_1218:hs1": {
36036+ "ed25519:ALICEDEVICE1218": "8QQTOEMNqf/hx3qhy6571M4kIDlLAW0GNzcIGMfrUvc60jJ9/SgyHlmXO2+pMEdjLC3WVGw+jA6oSNeGfqZIAA"
36037+ }
36038+ },
36039+ "user_id": "@alice_1218:hs1",
36040+ "unsigned": {}
36041+ }
36042+ },
36043+ "@alice_1223:hs1": {
36044+ "ALICEDEVICE1223": {
36045+ "algorithms": [
36046+ "m.olm.v1.curve25519-aes-sha2",
36047+ "m.megolm.v1.aes-sha2"
36048+ ],
36049+ "device_id": "ALICEDEVICE1223",
36050+ "keys": {
36051+ "curve25519:ALICEDEVICE1223": "0buBVA221M1Kku+D2z8WfOD/H8Pmy/avSq8Ryq9Cfjo",
36052+ "ed25519:ALICEDEVICE1223": "V3zF6aJH2waeZ+dbn9F/LpheWZHgXYHI+nzKkVXQ2fk"
36053+ },
36054+ "signatures": {
36055+ "@alice_1223:hs1": {
36056+ "ed25519:ALICEDEVICE1223": "wXWHCFe9T+GD2WZ9UtKOS6LyRgK4Pb+AhmZO1NyqAeaNXufPX2Z4jHvszYr5z4xUPGs4J2zVPMp+JHb+pkchAg"
36057+ }
36058+ },
36059+ "user_id": "@alice_1223:hs1",
36060+ "unsigned": {}
36061+ }
36062+ },
36063+ "@alice_1224:hs1": {
36064+ "ALICEDEVICE1224": {
36065+ "algorithms": [
36066+ "m.olm.v1.curve25519-aes-sha2",
36067+ "m.megolm.v1.aes-sha2"
36068+ ],
36069+ "device_id": "ALICEDEVICE1224",
36070+ "keys": {
36071+ "curve25519:ALICEDEVICE1224": "zgbRXkAlxoGpUj8ZjzMrG6jnqnFECHCS65323r2N9js",
36072+ "ed25519:ALICEDEVICE1224": "uiUaEV5UII0OUDtQ2kaWellwybRHYrWHcHNBxt4/0mo"
36073+ },
36074+ "signatures": {
36075+ "@alice_1224:hs1": {
36076+ "ed25519:ALICEDEVICE1224": "Tzo56Kj7ps40qyWSuucYA980W22TRcY8dc5fQrbgZbWoaTMJTVaLRqDi9yZIRV+yS2q61oQSlLTRUPkdSrF7Dw"
36077+ }
36078+ },
36079+ "user_id": "@alice_1224:hs1",
36080+ "unsigned": {}
36081+ }
36082+ },
36083+ "@alice_1225:hs1": {
36084+ "ALICEDEVICE1225": {
36085+ "algorithms": [
36086+ "m.olm.v1.curve25519-aes-sha2",
36087+ "m.megolm.v1.aes-sha2"
36088+ ],
36089+ "device_id": "ALICEDEVICE1225",
36090+ "keys": {
36091+ "curve25519:ALICEDEVICE1225": "IFVUCgqr1Aq+gKxNgtxUfHsQDgfUgeKAj1D2Db+YvSY",
36092+ "ed25519:ALICEDEVICE1225": "JhVGWn87R8u3zO1p3zSTrs3UhyPLXhhSnX11it592Z4"
36093+ },
36094+ "signatures": {
36095+ "@alice_1225:hs1": {
36096+ "ed25519:ALICEDEVICE1225": "/w8chsuKah525D07M6ZljDcBkg7BSbt9j83ATtpWvEiJmhDQSeGwYl4rj++dBaQjbWJ+u5b8lwVtEAL1DnxcCA"
36097+ }
36098+ },
36099+ "user_id": "@alice_1225:hs1",
36100+ "unsigned": {}
36101+ }
36102+ },
36103+ "@alice_1238:hs1": {
36104+ "ALICEDEVICE1238": {
36105+ "algorithms": [
36106+ "m.olm.v1.curve25519-aes-sha2",
36107+ "m.megolm.v1.aes-sha2"
36108+ ],
36109+ "device_id": "ALICEDEVICE1238",
36110+ "keys": {
36111+ "curve25519:ALICEDEVICE1238": "GUF/wxHnwuEQNQJKzxywS39bCrrKxAdTfxpg6PR1mQc",
36112+ "ed25519:ALICEDEVICE1238": "fAF9pEfRpRbZCCmss3ocH960a0FtISpnYjOhGbqWXfQ"
36113+ },
36114+ "signatures": {
36115+ "@alice_1238:hs1": {
36116+ "ed25519:ALICEDEVICE1238": "XUiFS3uvC9gau8BCgobr61EKZAl1gO3iyYntYsQyX5C7Z2BMyqiRs+fRGlGsBfbGvu6TcjFNADsh1mEpvkI0Ag"
36117+ }
36118+ },
36119+ "user_id": "@alice_1238:hs1",
36120+ "unsigned": {}
36121+ }
36122+ },
36123+ "@alice_1251:hs1": {
36124+ "ALICEDEVICE1251": {
36125+ "algorithms": [
36126+ "m.olm.v1.curve25519-aes-sha2",
36127+ "m.megolm.v1.aes-sha2"
36128+ ],
36129+ "device_id": "ALICEDEVICE1251",
36130+ "keys": {
36131+ "curve25519:ALICEDEVICE1251": "HgA9mwPwmXNz8GM4BYxXK9G8FfL31yVSVzGeCEKxj0M",
36132+ "ed25519:ALICEDEVICE1251": "KqdGHy81dmGOsNqGeQ/ftNBdV6OzSarYkfJnJFyQEv0"
36133+ },
36134+ "signatures": {
36135+ "@alice_1251:hs1": {
36136+ "ed25519:ALICEDEVICE1251": "Zu/8zyP3vlCuxjImWj6QMMK0hI15q7IW9p09bTQIdBEJgFy3jRhLwqdZMDx0xR4/9SqnLv75weSxcvLRUcyIDA"
36137+ }
36138+ },
36139+ "user_id": "@alice_1251:hs1",
36140+ "unsigned": {}
36141+ }
36142+ },
36143+ "@alice_1254:hs1": {
36144+ "ALICEDEVICE1254": {
36145+ "algorithms": [
36146+ "m.olm.v1.curve25519-aes-sha2",
36147+ "m.megolm.v1.aes-sha2"
36148+ ],
36149+ "device_id": "ALICEDEVICE1254",
36150+ "keys": {
36151+ "curve25519:ALICEDEVICE1254": "f3m8D1l8lwF71f/TFP66mo7qTlDcGIAlp97RquXd92Y",
36152+ "ed25519:ALICEDEVICE1254": "W1hiw36GXsurOBeZA8mWT2t8vZyER+9E4bAC1SAsxlQ"
36153+ },
36154+ "signatures": {
36155+ "@alice_1254:hs1": {
36156+ "ed25519:ALICEDEVICE1254": "E7TDIFenIGQyW9ikDTD1YBaS+st63AU+8WIqzsC5rlX4FOQm7xZDV56Ovt8Z0pWhhNZDobQOHXoBUi2ALL38Dg"
36157+ }
36158+ },
36159+ "user_id": "@alice_1254:hs1",
36160+ "unsigned": {}
36161+ }
36162+ },
36163+ "@alice_1262:hs1": {
36164+ "ALICEDEVICE1262": {
36165+ "algorithms": [
36166+ "m.olm.v1.curve25519-aes-sha2",
36167+ "m.megolm.v1.aes-sha2"
36168+ ],
36169+ "device_id": "ALICEDEVICE1262",
36170+ "keys": {
36171+ "curve25519:ALICEDEVICE1262": "S5g+y4jlqo+Q3mxV+p6VJ1hvndIdOb+59N9K6sRDD1M",
36172+ "ed25519:ALICEDEVICE1262": "jEHpwm55I1ajK7+/MXb0U1AF060Lips11EzOa40K4A0"
36173+ },
36174+ "signatures": {
36175+ "@alice_1262:hs1": {
36176+ "ed25519:ALICEDEVICE1262": "uCNdRtueN/JvSoUk3Z2e0ahWObSZU5Ym1pYW3NcBRl9xw1vZiJs52Lmi7eX2J27spVMhQwGR5QhwskW6Z2VLBA"
36177+ }
36178+ },
36179+ "user_id": "@alice_1262:hs1",
36180+ "unsigned": {}
36181+ }
36182+ },
36183+ "@alice_1275:hs1": {
36184+ "ALICEDEVICE1275": {
36185+ "algorithms": [
36186+ "m.olm.v1.curve25519-aes-sha2",
36187+ "m.megolm.v1.aes-sha2"
36188+ ],
36189+ "device_id": "ALICEDEVICE1275",
36190+ "keys": {
36191+ "curve25519:ALICEDEVICE1275": "6VgkfdMTiDKjd3qGeFXLKg4qjNWXBlx1Wfb9IsJhgjw",
36192+ "ed25519:ALICEDEVICE1275": "XlRbatfRx8zCkdBlnlr1VQO6aSu63EXa3cAin5apUG4"
36193+ },
36194+ "signatures": {
36195+ "@alice_1275:hs1": {
36196+ "ed25519:ALICEDEVICE1275": "IIscr+/JjpS8uHNQ8WI2zvW7P2ExR9RbZ3zQ5mN9j7O0eddNYAA6XGtvD3n1dQxdpFhpyByn+N/9MCqDnEVUCQ"
36197+ }
36198+ },
36199+ "user_id": "@alice_1275:hs1",
36200+ "unsigned": {}
36201+ }
36202+ },
36203+ "@alice_1280:hs1": {
36204+ "ALICEDEVICE1280": {
36205+ "algorithms": [
36206+ "m.olm.v1.curve25519-aes-sha2",
36207+ "m.megolm.v1.aes-sha2"
36208+ ],
36209+ "device_id": "ALICEDEVICE1280",
36210+ "keys": {
36211+ "curve25519:ALICEDEVICE1280": "Avo/EP1mW+NyZydYqRrX6IQau/OtBeoRhgz7j2Jx3k0",
36212+ "ed25519:ALICEDEVICE1280": "X0lFIqrJA6B/BAJKBtxtXJjnVJQ5/VEMNnEYUGo5700"
36213+ },
36214+ "signatures": {
36215+ "@alice_1280:hs1": {
36216+ "ed25519:ALICEDEVICE1280": "YOfDiMPq/T8K1QCfTDKXq4dLT25zofpAZzptwiE8OHSdiBTl4fLoWc5K3FbJgUqXwbbBAC/xU32/1kCSDikWBQ"
36217+ }
36218+ },
36219+ "user_id": "@alice_1280:hs1",
36220+ "unsigned": {}
36221+ }
36222+ },
36223+ "@alice_1316:hs1": {
36224+ "ALICEDEVICE1316": {
36225+ "algorithms": [
36226+ "m.olm.v1.curve25519-aes-sha2",
36227+ "m.megolm.v1.aes-sha2"
36228+ ],
36229+ "device_id": "ALICEDEVICE1316",
36230+ "keys": {
36231+ "curve25519:ALICEDEVICE1316": "fSeFjQa9LAebF9oKQtXArw2rFBMMSqLWE9HmR938WSQ",
36232+ "ed25519:ALICEDEVICE1316": "vdJFXDvW3pu29GpxwLg66JCOffZnOBrxN9VVwpsmDsM"
36233+ },
36234+ "signatures": {
36235+ "@alice_1316:hs1": {
36236+ "ed25519:ALICEDEVICE1316": "s3TOj8J6QyqtIwmOi2zeydmyYLlDidG3CepKZRD0Ftiz9o5X45BVQ+l2VNuM9Hy8vnNZUrib5FMevYOGQY6dDg"
36237+ }
36238+ },
36239+ "user_id": "@alice_1316:hs1",
36240+ "unsigned": {}
36241+ }
36242+ },
36243+ "@alice_131:hs1": {
36244+ "ALICEDEVICE131": {
36245+ "algorithms": [
36246+ "m.olm.v1.curve25519-aes-sha2",
36247+ "m.megolm.v1.aes-sha2"
36248+ ],
36249+ "device_id": "ALICEDEVICE131",
36250+ "keys": {
36251+ "curve25519:ALICEDEVICE131": "hFmnK6bxNlth11IqtepEl26PR2t9j+qutYjUbXQTdEc",
36252+ "ed25519:ALICEDEVICE131": "EUpyxyyTc19tqrtLfxAIPOcUxJItCnQ01udRxIIGg5s"
36253+ },
36254+ "signatures": {
36255+ "@alice_131:hs1": {
36256+ "ed25519:ALICEDEVICE131": "OsOIs617TlUNuC/SaI8D0x+K7oJl56sQDkTvhrpa57r3Q84I2naqH+q+8Q6+d6Fwg0dWtLqGyW9OxzVHWS03Cw"
36257+ }
36258+ },
36259+ "user_id": "@alice_131:hs1",
36260+ "unsigned": {}
36261+ }
36262+ },
36263+ "@alice_1320:hs1": {
36264+ "ALICEDEVICE1320": {
36265+ "algorithms": [
36266+ "m.olm.v1.curve25519-aes-sha2",
36267+ "m.megolm.v1.aes-sha2"
36268+ ],
36269+ "device_id": "ALICEDEVICE1320",
36270+ "keys": {
36271+ "curve25519:ALICEDEVICE1320": "Kt9RJhGHPQDfBtDzSHhMyL3sEct//JUePOIW5Js9aGE",
36272+ "ed25519:ALICEDEVICE1320": "KhKgFZWO9gKonTULW1tPeX120klrhiLnGc6SDVrHnZQ"
36273+ },
36274+ "signatures": {
36275+ "@alice_1320:hs1": {
36276+ "ed25519:ALICEDEVICE1320": "xbw5c6RyYMM3dIF68nQWixP1+q1izz0bbD8sIzP+ejXk1ea4SIeWgSlrteHKON5UnPOLMR9QCpdSWc1nJyyjCg"
36277+ }
36278+ },
36279+ "user_id": "@alice_1320:hs1",
36280+ "unsigned": {}
36281+ }
36282+ },
36283+ "@alice_1321:hs1": {
36284+ "ALICEDEVICE1321": {
36285+ "algorithms": [
36286+ "m.olm.v1.curve25519-aes-sha2",
36287+ "m.megolm.v1.aes-sha2"
36288+ ],
36289+ "device_id": "ALICEDEVICE1321",
36290+ "keys": {
36291+ "curve25519:ALICEDEVICE1321": "AhIuQLf5aFIu96A8eymQ4/4BRi5uIlNwC55r1bn15QE",
36292+ "ed25519:ALICEDEVICE1321": "ozPo2Ii9yL0luB8CZzXSkIkLI739DZtp2kWcMUm6dc0"
36293+ },
36294+ "signatures": {
36295+ "@alice_1321:hs1": {
36296+ "ed25519:ALICEDEVICE1321": "nPNo1P/e1LrVDWrc6RmV9mz4NXlRCF615ahrPLiMsQZpeyp4zz6AJHjw8gT271V4ILozNdAQL7FugQO+AS1gDw"
36297+ }
36298+ },
36299+ "user_id": "@alice_1321:hs1",
36300+ "unsigned": {}
36301+ }
36302+ },
36303+ "@alice_133:hs1": {
36304+ "ALICEDEVICE133": {
36305+ "algorithms": [
36306+ "m.olm.v1.curve25519-aes-sha2",
36307+ "m.megolm.v1.aes-sha2"
36308+ ],
36309+ "device_id": "ALICEDEVICE133",
36310+ "keys": {
36311+ "curve25519:ALICEDEVICE133": "wdFAFN1g9Q+fe66x/H2deVbzLE6kCoE+QElXEVh0gAk",
36312+ "ed25519:ALICEDEVICE133": "holToEiJ6j2BEomnff9K/woO0ubGNGU3ULhY/uKUG2Q"
36313+ },
36314+ "signatures": {
36315+ "@alice_133:hs1": {
36316+ "ed25519:ALICEDEVICE133": "2bshsP5JWzyJQWYumU32by5U37CXK+WBbTOfzmYjMrtDH6JzEVJssPCo+eA6/UBCNQ4Hlz+lWzFNA1oJqgDDAA"
36317+ }
36318+ },
36319+ "user_id": "@alice_133:hs1",
36320+ "unsigned": {}
36321+ }
36322+ },
36323+ "@alice_1349:hs1": {
36324+ "ALICEDEVICE1349": {
36325+ "algorithms": [
36326+ "m.olm.v1.curve25519-aes-sha2",
36327+ "m.megolm.v1.aes-sha2"
36328+ ],
36329+ "device_id": "ALICEDEVICE1349",
36330+ "keys": {
36331+ "curve25519:ALICEDEVICE1349": "wqrHNnIu8b/NyqXtCuIDwc++U1LeWXIVyEYHB+pW2EU",
36332+ "ed25519:ALICEDEVICE1349": "wqQFP4Ca9sYV+OSmjMUKdtv9nPlQwrqX6IZBmsxipOg"
36333+ },
36334+ "signatures": {
36335+ "@alice_1349:hs1": {
36336+ "ed25519:ALICEDEVICE1349": "mDMhpcgoC8q22JBhwecMNA9aUtS8GUB2xFSgvYA2IdKvNu6cDobzuC0hh+fQPdoPZaVkflXFhJGXSyouRAFbBw"
36337+ }
36338+ },
36339+ "user_id": "@alice_1349:hs1",
36340+ "unsigned": {}
36341+ }
36342+ },
36343+ "@alice_1355:hs1": {
36344+ "ALICEDEVICE1355": {
36345+ "algorithms": [
36346+ "m.olm.v1.curve25519-aes-sha2",
36347+ "m.megolm.v1.aes-sha2"
36348+ ],
36349+ "device_id": "ALICEDEVICE1355",
36350+ "keys": {
36351+ "curve25519:ALICEDEVICE1355": "NASSkHWP/7lJbmVXq/Ryo0EsL09cCzHybS1EctCRymM",
36352+ "ed25519:ALICEDEVICE1355": "l4aujBLOEbuX9D8LvJpqpSjANoqQjSZylNDAgsBFSPg"
36353+ },
36354+ "signatures": {
36355+ "@alice_1355:hs1": {
36356+ "ed25519:ALICEDEVICE1355": "8sFf5bsQrIgrSpnkExE9qEH36KrsgZsbS+Kfyu5KyIXEI9E5pdmkbQCVa4jp61D4aRwDuyqrPm9u2aO4T3wMBA"
36357+ }
36358+ },
36359+ "user_id": "@alice_1355:hs1",
36360+ "unsigned": {}
36361+ }
36362+ },
36363+ "@alice_1359:hs1": {
36364+ "ALICEDEVICE1359": {
36365+ "algorithms": [
36366+ "m.olm.v1.curve25519-aes-sha2",
36367+ "m.megolm.v1.aes-sha2"
36368+ ],
36369+ "device_id": "ALICEDEVICE1359",
36370+ "keys": {
36371+ "curve25519:ALICEDEVICE1359": "4X2iffvuWZjsE5OI6qrA2vpCcDYgXq44TNqmagSjmnQ",
36372+ "ed25519:ALICEDEVICE1359": "BG2aX3tu3m4PGPhx8+xyAMXnMcDt0Z+HDQ0cfZZ8CRI"
36373+ },
36374+ "signatures": {
36375+ "@alice_1359:hs1": {
36376+ "ed25519:ALICEDEVICE1359": "nXqoPn1ch5xGdof7iJok0fqqrfX5UqVL/SMeFSREFH7dEJv6U1h13TDxJaDmE0GQvH88LfB7GQKLvJ2kyN8GBA"
36377+ }
36378+ },
36379+ "user_id": "@alice_1359:hs1",
36380+ "unsigned": {}
36381+ }
36382+ },
36383+ "@alice_1365:hs1": {
36384+ "ALICEDEVICE1365": {
36385+ "algorithms": [
36386+ "m.olm.v1.curve25519-aes-sha2",
36387+ "m.megolm.v1.aes-sha2"
36388+ ],
36389+ "device_id": "ALICEDEVICE1365",
36390+ "keys": {
36391+ "curve25519:ALICEDEVICE1365": "NIp+BJT0yezPdx2WiY23TRqb0Zru1ipCqvPLAwl2wSY",
36392+ "ed25519:ALICEDEVICE1365": "bualknBljMjWYtwGn+qWCtD5jTTasu1p2stADkcC7t0"
36393+ },
36394+ "signatures": {
36395+ "@alice_1365:hs1": {
36396+ "ed25519:ALICEDEVICE1365": "fQ7B61nLW1jZrtlnpIi8oe0PmHfPuX++jGP5JxC5wF+yJksuzp0FJDem/i7sV0Cm6yE4Ti3152RrGN/7iMyLBg"
36397+ }
36398+ },
36399+ "user_id": "@alice_1365:hs1",
36400+ "unsigned": {}
36401+ }
36402+ },
36403+ "@alice_1366:hs1": {
36404+ "ALICEDEVICE1366": {
36405+ "algorithms": [
36406+ "m.olm.v1.curve25519-aes-sha2",
36407+ "m.megolm.v1.aes-sha2"
36408+ ],
36409+ "device_id": "ALICEDEVICE1366",
36410+ "keys": {
36411+ "curve25519:ALICEDEVICE1366": "nZ/sxPdGCwxv+7hvVdjOufAnGrX7VrzPEcG759aZSF8",
36412+ "ed25519:ALICEDEVICE1366": "dvDNvzllgAz1ySDU+2iBdD6Z/PCS/9eOKTfEUf+5p/o"
36413+ },
36414+ "signatures": {
36415+ "@alice_1366:hs1": {
36416+ "ed25519:ALICEDEVICE1366": "UNYLKI1v0PYBlKNdAMxV6w2zTxzH2c61QfN8n8lb+zVHE3nRi01NwLvmD1NWewWgW7xN7SwU+igG9HPCNEsICA"
36417+ }
36418+ },
36419+ "user_id": "@alice_1366:hs1",
36420+ "unsigned": {}
36421+ }
36422+ },
36423+ "@alice_1382:hs1": {
36424+ "ALICEDEVICE1382": {
36425+ "algorithms": [
36426+ "m.olm.v1.curve25519-aes-sha2",
36427+ "m.megolm.v1.aes-sha2"
36428+ ],
36429+ "device_id": "ALICEDEVICE1382",
36430+ "keys": {
36431+ "curve25519:ALICEDEVICE1382": "aIHk5wgBp18CTlVrtmT+5Ux9fiHeUt0tgbVF+Z1K31I",
36432+ "ed25519:ALICEDEVICE1382": "HO+NR1/I4EDAN7mTfCv+r519H05C4ZpqV9GEYQsfPLc"
36433+ },
36434+ "signatures": {
36435+ "@alice_1382:hs1": {
36436+ "ed25519:ALICEDEVICE1382": "M492W44qrz906SqvFm5kZag72+CIr6sj+sRNk+KkjZtVRhCiuzDK5CqzJLXuqxbK9gXF8R2RxiWaZFvzanqlDg"
36437+ }
36438+ },
36439+ "user_id": "@alice_1382:hs1",
36440+ "unsigned": {}
36441+ }
36442+ },
36443+ "@alice_1386:hs1": {
36444+ "ALICEDEVICE1386": {
36445+ "algorithms": [
36446+ "m.olm.v1.curve25519-aes-sha2",
36447+ "m.megolm.v1.aes-sha2"
36448+ ],
36449+ "device_id": "ALICEDEVICE1386",
36450+ "keys": {
36451+ "curve25519:ALICEDEVICE1386": "Cvp3pG8apPP4VzR/Lx0rTuelZCNBz3J7GjdHdIyuBw8",
36452+ "ed25519:ALICEDEVICE1386": "EupHP4FRBynNJywAd//FExr9blyhjt1ny1BXdiDo3a4"
36453+ },
36454+ "signatures": {
36455+ "@alice_1386:hs1": {
36456+ "ed25519:ALICEDEVICE1386": "VV1WLugdxxFXs3kmcVwfVeVs401BO7O1JEOrET+3qP/nlj537s8qp1rUV3PnSXH9Wgg0PhwO1AoAk42rcTikBw"
36457+ }
36458+ },
36459+ "user_id": "@alice_1386:hs1",
36460+ "unsigned": {}
36461+ }
36462+ },
36463+ "@alice_1409:hs1": {
36464+ "ALICEDEVICE1409": {
36465+ "algorithms": [
36466+ "m.olm.v1.curve25519-aes-sha2",
36467+ "m.megolm.v1.aes-sha2"
36468+ ],
36469+ "device_id": "ALICEDEVICE1409",
36470+ "keys": {
36471+ "curve25519:ALICEDEVICE1409": "YL7onIoQz4Rq0n26ZJmg6Q0QRqdT8TkaG/NszYwb1Xk",
36472+ "ed25519:ALICEDEVICE1409": "isuLVihjP2twPz+P8wHhG4UW0Bqt53b8XSnuSr8DBVU"
36473+ },
36474+ "signatures": {
36475+ "@alice_1409:hs1": {
36476+ "ed25519:ALICEDEVICE1409": "xiyL/AXEDRNRrB4PJKPktfcnGEjLebpUwZ+Cx3li/R+xT+VQtmEztfs05ZnZSUVIkgzcIwq4HS/HQGBPYz0sAg"
36477+ }
36478+ },
36479+ "user_id": "@alice_1409:hs1",
36480+ "unsigned": {}
36481+ }
36482+ },
36483+ "@alice_1411:hs1": {
36484+ "ALICEDEVICE1411": {
36485+ "algorithms": [
36486+ "m.olm.v1.curve25519-aes-sha2",
36487+ "m.megolm.v1.aes-sha2"
36488+ ],
36489+ "device_id": "ALICEDEVICE1411",
36490+ "keys": {
36491+ "curve25519:ALICEDEVICE1411": "9ZzDBP6SHB7/4o69OWrqRdk8SP9VOGGv5YEcGFYoyE8",
36492+ "ed25519:ALICEDEVICE1411": "4v3gjt8ejjcP6PkfSQg8wi6l7TWToam7IaTpcimBuNM"
36493+ },
36494+ "signatures": {
36495+ "@alice_1411:hs1": {
36496+ "ed25519:ALICEDEVICE1411": "3tehxpN3oxW1PELQ1drn9I7UBFn3B/jW1rr3w+JbEAMVnIDRtIUS/GpJkzBHCx36V1Eos0eLcS23b8OxdJA2AQ"
36497+ }
36498+ },
36499+ "user_id": "@alice_1411:hs1",
36500+ "unsigned": {}
36501+ }
36502+ },
36503+ "@alice_1429:hs1": {
36504+ "ALICEDEVICE1429": {
36505+ "algorithms": [
36506+ "m.olm.v1.curve25519-aes-sha2",
36507+ "m.megolm.v1.aes-sha2"
36508+ ],
36509+ "device_id": "ALICEDEVICE1429",
36510+ "keys": {
36511+ "curve25519:ALICEDEVICE1429": "xw7iJE96CR3bkqEd7eiDKVUcCm7h74k2JbkBDLpVWW0",
36512+ "ed25519:ALICEDEVICE1429": "8MSgaCapMLLQl639F7nudn9H1I80qXmv0NM2/xg54WU"
36513+ },
36514+ "signatures": {
36515+ "@alice_1429:hs1": {
36516+ "ed25519:ALICEDEVICE1429": "fCyUiZMUeef8vXNfjYhO+ucNnnb+jl7rD74B9Q5vAcpwLwEb/ixYKh9BvdjWovT+v0dcH5nAs8FPUWhcFgUkBQ"
36517+ }
36518+ },
36519+ "user_id": "@alice_1429:hs1",
36520+ "unsigned": {}
36521+ }
36522+ },
36523+ "@alice_1442:hs1": {
36524+ "ALICEDEVICE1442": {
36525+ "algorithms": [
36526+ "m.olm.v1.curve25519-aes-sha2",
36527+ "m.megolm.v1.aes-sha2"
36528+ ],
36529+ "device_id": "ALICEDEVICE1442",
36530+ "keys": {
36531+ "curve25519:ALICEDEVICE1442": "/nmksvjWeTNTEpFTW5kfM3nYi5qEYA4FYUP0aC5gd3U",
36532+ "ed25519:ALICEDEVICE1442": "QpMdHmkirDetXIcFvdoytzGaHyFLjvwgSx7e4YVAVe0"
36533+ },
36534+ "signatures": {
36535+ "@alice_1442:hs1": {
36536+ "ed25519:ALICEDEVICE1442": "z1VG60bhntN74nPgUBopVvHGZV1+VmJHjcsLpPFNm3aWLEC2SbS/pgD5fha6AqjR4euGFmGsGEuQsmQ/NRLqBQ"
36537+ }
36538+ },
36539+ "user_id": "@alice_1442:hs1",
36540+ "unsigned": {}
36541+ }
36542+ },
36543+ "@alice_1456:hs1": {
36544+ "ALICEDEVICE1456": {
36545+ "algorithms": [
36546+ "m.olm.v1.curve25519-aes-sha2",
36547+ "m.megolm.v1.aes-sha2"
36548+ ],
36549+ "device_id": "ALICEDEVICE1456",
36550+ "keys": {
36551+ "curve25519:ALICEDEVICE1456": "+aU/iVgLKvxNzQ02uHy2MtFrDIhFm7e9sqT9H/oXsHM",
36552+ "ed25519:ALICEDEVICE1456": "gXPtZbSjvTSVv2D85O0+4vzQ2Uj/LAslgWRKhq8YsRo"
36553+ },
36554+ "signatures": {
36555+ "@alice_1456:hs1": {
36556+ "ed25519:ALICEDEVICE1456": "tlhxreHGEeUBXRSyN43hkQ/CtFPBg/vnzGVf7YqVXeWtjmUlwE0ozXlAhUUtWfgxtAeecomf1bRm4d0yEU6/AQ"
36557+ }
36558+ },
36559+ "user_id": "@alice_1456:hs1",
36560+ "unsigned": {}
36561+ }
36562+ },
36563+ "@alice_1465:hs1": {
36564+ "ALICEDEVICE1465": {
36565+ "algorithms": [
36566+ "m.olm.v1.curve25519-aes-sha2",
36567+ "m.megolm.v1.aes-sha2"
36568+ ],
36569+ "device_id": "ALICEDEVICE1465",
36570+ "keys": {
36571+ "curve25519:ALICEDEVICE1465": "fkvN1EVXXlbAr3ZM+bDuDYkSHZRxZ/lq1XZlrlwnbCU",
36572+ "ed25519:ALICEDEVICE1465": "qrwNcY11/FPPAvvG7Evb1F6a5f3AS1hNRsBzY9xrGPk"
36573+ },
36574+ "signatures": {
36575+ "@alice_1465:hs1": {
36576+ "ed25519:ALICEDEVICE1465": "issdoi/apMde0RdQwu7qva2fIUIJURqkuRnjtn/U6APcAUj/HzrnpavMZZcDpN2xVCg0pjsJjKiiEgNnJCKHCg"
36577+ }
36578+ },
36579+ "user_id": "@alice_1465:hs1",
36580+ "unsigned": {}
36581+ }
36582+ },
36583+ "@alice_1468:hs1": {
36584+ "ALICEDEVICE1468": {
36585+ "algorithms": [
36586+ "m.olm.v1.curve25519-aes-sha2",
36587+ "m.megolm.v1.aes-sha2"
36588+ ],
36589+ "device_id": "ALICEDEVICE1468",
36590+ "keys": {
36591+ "curve25519:ALICEDEVICE1468": "hwbhLNpHu59rwuFfuWQ6lt+kNFWkgaDU1sRKz6+vwCc",
36592+ "ed25519:ALICEDEVICE1468": "8Ggb9P9m/pVJFTRM81ur0Z1T39rmiuz3QhqpMIWPUPo"
36593+ },
36594+ "signatures": {
36595+ "@alice_1468:hs1": {
36596+ "ed25519:ALICEDEVICE1468": "+K6XPraLEh+CboTQIIeEifWIRShHxYeNJPvvTSU7gQfBvZG6com3jkABQMHyixFp5tdEw+UNcqqQyE7LB/B4Bg"
36597+ }
36598+ },
36599+ "user_id": "@alice_1468:hs1",
36600+ "unsigned": {}
36601+ }
36602+ },
36603+ "@alice_1474:hs1": {
36604+ "ALICEDEVICE1474": {
36605+ "algorithms": [
36606+ "m.olm.v1.curve25519-aes-sha2",
36607+ "m.megolm.v1.aes-sha2"
36608+ ],
36609+ "device_id": "ALICEDEVICE1474",
36610+ "keys": {
36611+ "curve25519:ALICEDEVICE1474": "jWMCPfqjQS2ZcCWNq4h7p+KkEm2JmUuprFu3tdfG9yY",
36612+ "ed25519:ALICEDEVICE1474": "OENor2vs9iHAlSO70p1Zp+3Y/XuKubZdX5oLKB9q5BE"
36613+ },
36614+ "signatures": {
36615+ "@alice_1474:hs1": {
36616+ "ed25519:ALICEDEVICE1474": "Beao3j8CytIHXOb7q4TEnTeLxPo2O4yRjRseJW9obQR7Kjg3fAGWH4hTq9nMKxy7vfq6YrBQMe7D9zCmRd9EAA"
36617+ }
36618+ },
36619+ "user_id": "@alice_1474:hs1",
36620+ "unsigned": {}
36621+ }
36622+ },
36623+ "@alice_1478:hs1": {
36624+ "ALICEDEVICE1478": {
36625+ "algorithms": [
36626+ "m.olm.v1.curve25519-aes-sha2",
36627+ "m.megolm.v1.aes-sha2"
36628+ ],
36629+ "device_id": "ALICEDEVICE1478",
36630+ "keys": {
36631+ "curve25519:ALICEDEVICE1478": "HHo+tBOx3/K7U59FkkUx42Z/lCIb1u5rjWiqM+RmOC4",
36632+ "ed25519:ALICEDEVICE1478": "j8iBxWRzv1ANWjIXxwmUqrEPqnhSjBChVaSEkY+L5f8"
36633+ },
36634+ "signatures": {
36635+ "@alice_1478:hs1": {
36636+ "ed25519:ALICEDEVICE1478": "KRONBVzrvfPKK7NBmiQvi+WCkzIx48mtCoW+e2Dz7YvAH+yzfkUC/qBK9gvvOUO+F3ozNxBac60wg7k3zhcxBw"
36637+ }
36638+ },
36639+ "user_id": "@alice_1478:hs1",
36640+ "unsigned": {}
36641+ }
36642+ },
36643+ "@alice_1482:hs1": {
36644+ "ALICEDEVICE1482": {
36645+ "algorithms": [
36646+ "m.olm.v1.curve25519-aes-sha2",
36647+ "m.megolm.v1.aes-sha2"
36648+ ],
36649+ "device_id": "ALICEDEVICE1482",
36650+ "keys": {
36651+ "curve25519:ALICEDEVICE1482": "jW61RCoe0q+xnkeX5VGX+b5VXer0CR3MMA2YSx93fDY",
36652+ "ed25519:ALICEDEVICE1482": "aC4GvufqQ0brzEfEzvvc95YIbWMnYn6VvWkzOCvP74Y"
36653+ },
36654+ "signatures": {
36655+ "@alice_1482:hs1": {
36656+ "ed25519:ALICEDEVICE1482": "Qe6bni/EaMlKSabd16M3sTbasnPOEsHWN7ubyt1sBDSmMl0tZdLczGj+Q7cVm740v/tqquUzfGM/m+ArLAH4Dw"
36657+ }
36658+ },
36659+ "user_id": "@alice_1482:hs1",
36660+ "unsigned": {}
36661+ }
36662+ },
36663+ "@alice_1490:hs1": {
36664+ "ALICEDEVICE1490": {
36665+ "algorithms": [
36666+ "m.olm.v1.curve25519-aes-sha2",
36667+ "m.megolm.v1.aes-sha2"
36668+ ],
36669+ "device_id": "ALICEDEVICE1490",
36670+ "keys": {
36671+ "curve25519:ALICEDEVICE1490": "dYUr2mohaC/yPm575waCvnm6CZUCMdyDqx0PATAzzRw",
36672+ "ed25519:ALICEDEVICE1490": "Fh9suoialwc/EvdGeU7EzaBNoIoLaAb5TUxgFBQCoRE"
36673+ },
36674+ "signatures": {
36675+ "@alice_1490:hs1": {
36676+ "ed25519:ALICEDEVICE1490": "9muFcQcM4Klg79W5R6wcJ1gbEvyTSrwZEHac8UNPkOpFBcIQmESieBES4e28osB3tI23sIFVPTy3D8bHt6D/Bw"
36677+ }
36678+ },
36679+ "user_id": "@alice_1490:hs1",
36680+ "unsigned": {}
36681+ }
36682+ },
36683+ "@alice_1495:hs1": {
36684+ "ALICEDEVICE1495": {
36685+ "algorithms": [
36686+ "m.olm.v1.curve25519-aes-sha2",
36687+ "m.megolm.v1.aes-sha2"
36688+ ],
36689+ "device_id": "ALICEDEVICE1495",
36690+ "keys": {
36691+ "curve25519:ALICEDEVICE1495": "9PGqq6G5a2NMLkDa7SZ7pjcTotWCqaQBESEkgh5HEXA",
36692+ "ed25519:ALICEDEVICE1495": "AOvXmFobNq8x8FWZ5Ca4//svHsQ6dhNH4JHaymONU3g"
36693+ },
36694+ "signatures": {
36695+ "@alice_1495:hs1": {
36696+ "ed25519:ALICEDEVICE1495": "aDDCehw5k9J2N8yKmtMpmjTQh4eX2m9i/Kr+pahC9kq0WTm3epzbYEiG5xjzSxQ7PtEOuBIIIdvBZmgQno35DA"
36697+ }
36698+ },
36699+ "user_id": "@alice_1495:hs1",
36700+ "unsigned": {}
36701+ }
36702+ },
36703+ "@alice_150:hs1": {
36704+ "ALICEDEVICE150": {
36705+ "algorithms": [
36706+ "m.olm.v1.curve25519-aes-sha2",
36707+ "m.megolm.v1.aes-sha2"
36708+ ],
36709+ "device_id": "ALICEDEVICE150",
36710+ "keys": {
36711+ "curve25519:ALICEDEVICE150": "al6xAfxDmdLQ3DUSAKMdLgdZorbrslshNskEyVMtKS4",
36712+ "ed25519:ALICEDEVICE150": "wJ5H4qPqjIHhcZznOHtqhcZeinbTFQufVv/N822q3j4"
36713+ },
36714+ "signatures": {
36715+ "@alice_150:hs1": {
36716+ "ed25519:ALICEDEVICE150": "GyabrynX19DPQc3VZ4ozCgEpk13VyMbaznprjkdtAa50vU91gkcLx8lB8Y/+81LktzmcNizkz6zkFffLMs5uAw"
36717+ }
36718+ },
36719+ "user_id": "@alice_150:hs1",
36720+ "unsigned": {}
36721+ }
36722+ },
36723+ "@alice_1527:hs1": {
36724+ "ALICEDEVICE1527": {
36725+ "algorithms": [
36726+ "m.olm.v1.curve25519-aes-sha2",
36727+ "m.megolm.v1.aes-sha2"
36728+ ],
36729+ "device_id": "ALICEDEVICE1527",
36730+ "keys": {
36731+ "curve25519:ALICEDEVICE1527": "hFUtzynEE0YzwdSQkGzvqZ9uy2J202+TAEzGZvi5D3c",
36732+ "ed25519:ALICEDEVICE1527": "sdcV+/4oGhqMhiV7iXOZcZHDo5PBdjVuIYJxS9FaL8U"
36733+ },
36734+ "signatures": {
36735+ "@alice_1527:hs1": {
36736+ "ed25519:ALICEDEVICE1527": "rheGSW73qiQqPv/ub+scvOQUM5mlKl4cy9KvW2anhr9QB7pFKYDRc5CdL1bocRLFXtyqkKhZypOw68GggV/WDA"
36737+ }
36738+ },
36739+ "user_id": "@alice_1527:hs1",
36740+ "unsigned": {}
36741+ }
36742+ },
36743+ "@alice_1544:hs1": {
36744+ "ALICEDEVICE1544": {
36745+ "algorithms": [
36746+ "m.olm.v1.curve25519-aes-sha2",
36747+ "m.megolm.v1.aes-sha2"
36748+ ],
36749+ "device_id": "ALICEDEVICE1544",
36750+ "keys": {
36751+ "curve25519:ALICEDEVICE1544": "OZu7SGcZxkoDWPdGVelwGgPpRJ6HcHi6effp/8wHWhk",
36752+ "ed25519:ALICEDEVICE1544": "q4GhHcdo6Wr08IW9htZrlAwNi8UzHJjcQmMNdtH/iAc"
36753+ },
36754+ "signatures": {
36755+ "@alice_1544:hs1": {
36756+ "ed25519:ALICEDEVICE1544": "YbA9YeG7hMRR+vFWXuQV/Ul2FcnlAcVGpFt/6Biil3VOkUIERSYpbP4Wzt5lvj/rHP5tIy3+DE1vFvjDLDCrDQ"
36757+ }
36758+ },
36759+ "user_id": "@alice_1544:hs1",
36760+ "unsigned": {}
36761+ }
36762+ },
36763+ "@alice_1545:hs1": {
36764+ "ALICEDEVICE1545": {
36765+ "algorithms": [
36766+ "m.olm.v1.curve25519-aes-sha2",
36767+ "m.megolm.v1.aes-sha2"
36768+ ],
36769+ "device_id": "ALICEDEVICE1545",
36770+ "keys": {
36771+ "curve25519:ALICEDEVICE1545": "RFw5K6Jqi6AhRBp8NcpaXUOCasCInMdEqH5WZGL8Bg0",
36772+ "ed25519:ALICEDEVICE1545": "Ju6RIreePDxqS/WSCUyNzP61VpXXVwW9YtjWSU7IpWQ"
36773+ },
36774+ "signatures": {
36775+ "@alice_1545:hs1": {
36776+ "ed25519:ALICEDEVICE1545": "LBiL4/yllDtFXqf4MD+jG54n0i1Mc++yQjytArsAyUqnVVHrzwNEUwE8Kks7HqdnoT/4CaOUh05Vq3AALXL8DA"
36777+ }
36778+ },
36779+ "user_id": "@alice_1545:hs1",
36780+ "unsigned": {}
36781+ }
36782+ },
36783+ "@alice_1561:hs1": {
36784+ "ALICEDEVICE1561": {
36785+ "algorithms": [
36786+ "m.olm.v1.curve25519-aes-sha2",
36787+ "m.megolm.v1.aes-sha2"
36788+ ],
36789+ "device_id": "ALICEDEVICE1561",
36790+ "keys": {
36791+ "curve25519:ALICEDEVICE1561": "V0JE9xqvUyWZOgL2BxvUGJF46sDbzFi81VoDtVu93EE",
36792+ "ed25519:ALICEDEVICE1561": "njJuehCJgJEbnpGe98M0cDxl7l2N6v7VL91l9k67oLw"
36793+ },
36794+ "signatures": {
36795+ "@alice_1561:hs1": {
36796+ "ed25519:ALICEDEVICE1561": "WujF7rAhT48X9dX8ZJmWXLYl8yRpC2ex2Wzt80whoN+KhTB3XE7xg0OHOs/kPc5quEGJ/PXpGN6inP95fsKvAw"
36797+ }
36798+ },
36799+ "user_id": "@alice_1561:hs1",
36800+ "unsigned": {}
36801+ }
36802+ },
36803+ "@alice_1562:hs1": {
36804+ "ALICEDEVICE1562": {
36805+ "algorithms": [
36806+ "m.olm.v1.curve25519-aes-sha2",
36807+ "m.megolm.v1.aes-sha2"
36808+ ],
36809+ "device_id": "ALICEDEVICE1562",
36810+ "keys": {
36811+ "curve25519:ALICEDEVICE1562": "bgP2KYw4wMxPMLacSOTcZ4wkcTGyrhRNpLTlKopisw0",
36812+ "ed25519:ALICEDEVICE1562": "KfkpGcd/KIQ6mqy5TCdtymzCFVvVvYXObggHix0oR24"
36813+ },
36814+ "signatures": {
36815+ "@alice_1562:hs1": {
36816+ "ed25519:ALICEDEVICE1562": "bffICRzwX005RRlQbvGS49MxUjPmOwvVFjirEzptuWANf2zOuhlw7XAkHSDzy17hQRF9tDUXdanc6LoY0PkRBA"
36817+ }
36818+ },
36819+ "user_id": "@alice_1562:hs1",
36820+ "unsigned": {}
36821+ }
36822+ },
36823+ "@alice_1563:hs1": {
36824+ "ALICEDEVICE1563": {
36825+ "algorithms": [
36826+ "m.olm.v1.curve25519-aes-sha2",
36827+ "m.megolm.v1.aes-sha2"
36828+ ],
36829+ "device_id": "ALICEDEVICE1563",
36830+ "keys": {
36831+ "curve25519:ALICEDEVICE1563": "V4aEoJfSFp/8Uj9YAcUpM2NKu3dLGFukQEzX8ePcbRE",
36832+ "ed25519:ALICEDEVICE1563": "7Kl+wFBSge2lpW/ff3fxBTJ4devN/wuXsulLj17PmZM"
36833+ },
36834+ "signatures": {
36835+ "@alice_1563:hs1": {
36836+ "ed25519:ALICEDEVICE1563": "vjaIlmuUmA41GvvblackK4QnRHm4bc1OuhiqDf0zzrYAOUc0q50sXITt8NhI26k4ZENP1+jXpjSgP2Izdq3RDA"
36837+ }
36838+ },
36839+ "user_id": "@alice_1563:hs1",
36840+ "unsigned": {}
36841+ }
36842+ },
36843+ "@alice_1566:hs1": {
36844+ "ALICEDEVICE1566": {
36845+ "algorithms": [
36846+ "m.olm.v1.curve25519-aes-sha2",
36847+ "m.megolm.v1.aes-sha2"
36848+ ],
36849+ "device_id": "ALICEDEVICE1566",
36850+ "keys": {
36851+ "curve25519:ALICEDEVICE1566": "iRyhVnDwwfiHmwBFcCTeUMS2eO5kfnxpRQyO0iJiRAQ",
36852+ "ed25519:ALICEDEVICE1566": "W19mj4uW5/HJ548VTBPohDEyaaUFaHqc4unys3dRZZY"
36853+ },
36854+ "signatures": {
36855+ "@alice_1566:hs1": {
36856+ "ed25519:ALICEDEVICE1566": "UgJ6+zv8IgA3ZgzpkcpgSj30lxhtg414pDNgIUuDEggEjp7FIsKlHpEGJVTrCPMVwuqe4mH71fRvY/KdsZNHDg"
36857+ }
36858+ },
36859+ "user_id": "@alice_1566:hs1",
36860+ "unsigned": {}
36861+ }
36862+ },
36863+ "@alice_1572:hs1": {
36864+ "ALICEDEVICE1572": {
36865+ "algorithms": [
36866+ "m.olm.v1.curve25519-aes-sha2",
36867+ "m.megolm.v1.aes-sha2"
36868+ ],
36869+ "device_id": "ALICEDEVICE1572",
36870+ "keys": {
36871+ "curve25519:ALICEDEVICE1572": "XbGx8GgDcgar5tP0GTGtDePBu906QCGaQemn5+QeWGM",
36872+ "ed25519:ALICEDEVICE1572": "CK+WeledsP1xMVFFysmk2Vtnovc3o9u4bqxLMcQVLxk"
36873+ },
36874+ "signatures": {
36875+ "@alice_1572:hs1": {
36876+ "ed25519:ALICEDEVICE1572": "jQzwAOH119fpBwnGg4iKBlo94PrjR8gdsAG7Sry5J9nHNyHAzuKIiTJbXTTm2uUdFgDokOBBe1EOe4TqSk62Bw"
36877+ }
36878+ },
36879+ "user_id": "@alice_1572:hs1",
36880+ "unsigned": {}
36881+ }
36882+ },
36883+ "@alice_1576:hs1": {
36884+ "ALICEDEVICE1576": {
36885+ "algorithms": [
36886+ "m.olm.v1.curve25519-aes-sha2",
36887+ "m.megolm.v1.aes-sha2"
36888+ ],
36889+ "device_id": "ALICEDEVICE1576",
36890+ "keys": {
36891+ "curve25519:ALICEDEVICE1576": "Jw7S61rbKEZLXo//u6pIo1fqEYjs0AJyISMuVknhNCg",
36892+ "ed25519:ALICEDEVICE1576": "Bn4llbwv5XJJ6ItnpLuhEVBQ5fi2yPDX1ZpSN/lymcU"
36893+ },
36894+ "signatures": {
36895+ "@alice_1576:hs1": {
36896+ "ed25519:ALICEDEVICE1576": "hs9y4ZNZhTOlacNxbu7YcWrY2RjYHK7ut3ZZmed4O0etW87z3KOWV6OsoAIhvC7KFjKsiQO6y4AO0qlFCLy8Dw"
36897+ }
36898+ },
36899+ "user_id": "@alice_1576:hs1",
36900+ "unsigned": {}
36901+ }
36902+ },
36903+ "@alice_1578:hs1": {
36904+ "ALICEDEVICE1578": {
36905+ "algorithms": [
36906+ "m.olm.v1.curve25519-aes-sha2",
36907+ "m.megolm.v1.aes-sha2"
36908+ ],
36909+ "device_id": "ALICEDEVICE1578",
36910+ "keys": {
36911+ "curve25519:ALICEDEVICE1578": "kVmjSDH7woAwYStPi/Pr9s3tudxw3D7ijpvajJI1KVI",
36912+ "ed25519:ALICEDEVICE1578": "pizUpbrKkwMh01c7dUeTfYBi4+THLMY3WYGZ49/3ejA"
36913+ },
36914+ "signatures": {
36915+ "@alice_1578:hs1": {
36916+ "ed25519:ALICEDEVICE1578": "XPk5rnUof3NQIY0fdl6Ztx3OEzzv1tmm/JU4IThe1A0lbLW1c4Zyx+PI52uMr4irtyHndKc8oMMLIdTcRqkgBg"
36917+ }
36918+ },
36919+ "user_id": "@alice_1578:hs1",
36920+ "unsigned": {}
36921+ }
36922+ },
36923+ "@alice_1583:hs1": {
36924+ "ALICEDEVICE1583": {
36925+ "algorithms": [
36926+ "m.olm.v1.curve25519-aes-sha2",
36927+ "m.megolm.v1.aes-sha2"
36928+ ],
36929+ "device_id": "ALICEDEVICE1583",
36930+ "keys": {
36931+ "curve25519:ALICEDEVICE1583": "1egnQvzQLS2y1XDDjdygm0iJkZfRvriHy3QNaIl9P0Q",
36932+ "ed25519:ALICEDEVICE1583": "Uc14AlAGmEUOT93XVD03JedBJu9zZ6GDDVnO53cFy48"
36933+ },
36934+ "signatures": {
36935+ "@alice_1583:hs1": {
36936+ "ed25519:ALICEDEVICE1583": "W+hi1+DjjwNQIx/hlPDANful/fF2OyJbC73GHzg1ujtx0eZqgobUcfAq5w4/VPWe4AedYUqYCT/VGrNjoqX8Bg"
36937+ }
36938+ },
36939+ "user_id": "@alice_1583:hs1",
36940+ "unsigned": {}
36941+ }
36942+ },
36943+ "@alice_1590:hs1": {
36944+ "ALICEDEVICE1590": {
36945+ "algorithms": [
36946+ "m.olm.v1.curve25519-aes-sha2",
36947+ "m.megolm.v1.aes-sha2"
36948+ ],
36949+ "device_id": "ALICEDEVICE1590",
36950+ "keys": {
36951+ "curve25519:ALICEDEVICE1590": "+2t3jRh+Nre5aT0YpPMbMT4XupBr9lgYi7rGatv2GB8",
36952+ "ed25519:ALICEDEVICE1590": "DDaAtb0TDHocYHRmXXsMOk5SYWIHRfSOoyiVh9unK/c"
36953+ },
36954+ "signatures": {
36955+ "@alice_1590:hs1": {
36956+ "ed25519:ALICEDEVICE1590": "+mzFNDpEXoASK61BK5i1yzjrxbffl6Hk2bU83ITEfVQTJWDNzja1X+JB/WqosVbcdAOi/lWGRTAnzmwahKfSCA"
36957+ }
36958+ },
36959+ "user_id": "@alice_1590:hs1",
36960+ "unsigned": {}
36961+ }
36962+ },
36963+ "@alice_1599:hs1": {
36964+ "ALICEDEVICE1599": {
36965+ "algorithms": [
36966+ "m.olm.v1.curve25519-aes-sha2",
36967+ "m.megolm.v1.aes-sha2"
36968+ ],
36969+ "device_id": "ALICEDEVICE1599",
36970+ "keys": {
36971+ "curve25519:ALICEDEVICE1599": "5/6Xpf39JSFQljPf9eltcxWAZP/Ec5d2lrWkDr2+Hhw",
36972+ "ed25519:ALICEDEVICE1599": "26DXmjWX08ww6zXI3D68JyJsuewyBbaeFTivwlyTuAQ"
36973+ },
36974+ "signatures": {
36975+ "@alice_1599:hs1": {
36976+ "ed25519:ALICEDEVICE1599": "A0C3MfHgjhP3m0vHYy2t5uSJKsw3R8mhcJmDU4MqhBuDF1oeUmg4ifPPbI0YYMHXkKZwnWR1I0mNejC5oZPECw"
36977+ }
36978+ },
36979+ "user_id": "@alice_1599:hs1",
36980+ "unsigned": {}
36981+ }
36982+ },
36983+ "@alice_1608:hs1": {
36984+ "ALICEDEVICE1608": {
36985+ "algorithms": [
36986+ "m.olm.v1.curve25519-aes-sha2",
36987+ "m.megolm.v1.aes-sha2"
36988+ ],
36989+ "device_id": "ALICEDEVICE1608",
36990+ "keys": {
36991+ "curve25519:ALICEDEVICE1608": "+5Bf8e3nrDtpuLXUkwCHba2h4FjEh84KbUcFoh0v01Q",
36992+ "ed25519:ALICEDEVICE1608": "0tMQup5WdXpZ8TaEf24Tq271c9gOn014cE0/bRPylps"
36993+ },
36994+ "signatures": {
36995+ "@alice_1608:hs1": {
36996+ "ed25519:ALICEDEVICE1608": "YH6r4ywoBPw4KAEA8HGpzZLqV7sxgdWRihASc+YuKCbaP2IaiUjViUbLCbgJEWQkyrhVSAQ5jsGbA3PrQJQ9AQ"
36997+ }
36998+ },
36999+ "user_id": "@alice_1608:hs1",
37000+ "unsigned": {}
37001+ }
37002+ },
37003+ "@alice_1616:hs1": {
37004+ "ALICEDEVICE1616": {
37005+ "algorithms": [
37006+ "m.olm.v1.curve25519-aes-sha2",
37007+ "m.megolm.v1.aes-sha2"
37008+ ],
37009+ "device_id": "ALICEDEVICE1616",
37010+ "keys": {
37011+ "curve25519:ALICEDEVICE1616": "jXKXktuPSSRxOOcSOhtAharDRsZZ47POMC53nkN8VGc",
37012+ "ed25519:ALICEDEVICE1616": "QAWewk7RBigsuZ2mVJwM95ZVgmb6H3vyDiDv25iVcjU"
37013+ },
37014+ "signatures": {
37015+ "@alice_1616:hs1": {
37016+ "ed25519:ALICEDEVICE1616": "f+oY28w/3E+xZw3xN/x8lBSqb3JyxgGCXkZLSfkqs/oFx9UapKhyzPB17k6s16I+qgJ4cLRMypzd0XE1c+hlAA"
37017+ }
37018+ },
37019+ "user_id": "@alice_1616:hs1",
37020+ "unsigned": {}
37021+ }
37022+ },
37023+ "@alice_1619:hs1": {
37024+ "ALICEDEVICE1619": {
37025+ "algorithms": [
37026+ "m.olm.v1.curve25519-aes-sha2",
37027+ "m.megolm.v1.aes-sha2"
37028+ ],
37029+ "device_id": "ALICEDEVICE1619",
37030+ "keys": {
37031+ "curve25519:ALICEDEVICE1619": "2N9B4hfa6jsaGkm4nZCu0EE7gZx+P6m/PCRe574HZwo",
37032+ "ed25519:ALICEDEVICE1619": "SDT8T9hsYiNTwQAuyMznOA3dAppmxDVEOUrYx9swRMo"
37033+ },
37034+ "signatures": {
37035+ "@alice_1619:hs1": {
37036+ "ed25519:ALICEDEVICE1619": "gbac4FfWVYca/eT48pb4Ut/5i/JWOuP0E97bH03iffl+4AmvVQMBDQPbwnsT2xIRLBBVZ/5gsV98EQ1BD7IFAA"
37037+ }
37038+ },
37039+ "user_id": "@alice_1619:hs1",
37040+ "unsigned": {}
37041+ }
37042+ },
37043+ "@alice_1635:hs1": {
37044+ "ALICEDEVICE1635": {
37045+ "algorithms": [
37046+ "m.olm.v1.curve25519-aes-sha2",
37047+ "m.megolm.v1.aes-sha2"
37048+ ],
37049+ "device_id": "ALICEDEVICE1635",
37050+ "keys": {
37051+ "curve25519:ALICEDEVICE1635": "+AkWo4VIkkqkqrwqjhxiY/zZt/QYuG+40AE80dl+TAU",
37052+ "ed25519:ALICEDEVICE1635": "6p+hBlQ03T3N05SwN1FHT/Ax7rIEJrsKNaMRyT5/ddY"
37053+ },
37054+ "signatures": {
37055+ "@alice_1635:hs1": {
37056+ "ed25519:ALICEDEVICE1635": "Y1ShzdaXMXYxprd7aAsEcdE33UfPrAXvJsGa15WSOwiwbNZ3ywRs/togyl7ByGSanZ81H4IaL5vvcIh4l6t3Cw"
37057+ }
37058+ },
37059+ "user_id": "@alice_1635:hs1",
37060+ "unsigned": {}
37061+ }
37062+ },
37063+ "@alice_1640:hs1": {
37064+ "ALICEDEVICE1640": {
37065+ "algorithms": [
37066+ "m.olm.v1.curve25519-aes-sha2",
37067+ "m.megolm.v1.aes-sha2"
37068+ ],
37069+ "device_id": "ALICEDEVICE1640",
37070+ "keys": {
37071+ "curve25519:ALICEDEVICE1640": "HPkWqgldVYyMMeMzFj9sZBKbjLIeXjuRrxkOjg4DA2U",
37072+ "ed25519:ALICEDEVICE1640": "rmMABGNh+jHf4J+9She0nWvuPdVW4A0FAyMnF1tXT64"
37073+ },
37074+ "signatures": {
37075+ "@alice_1640:hs1": {
37076+ "ed25519:ALICEDEVICE1640": "uzdfs3lVYzth0XcHe8shrfl4RspDdmL3fngTc7lrCGG/AjUbnHPdT8Rn/ud7s84uiigMcY5hLcTRh6IHBpNUAg"
37077+ }
37078+ },
37079+ "user_id": "@alice_1640:hs1",
37080+ "unsigned": {}
37081+ }
37082+ },
37083+ "@alice_1645:hs1": {
37084+ "ALICEDEVICE1645": {
37085+ "algorithms": [
37086+ "m.olm.v1.curve25519-aes-sha2",
37087+ "m.megolm.v1.aes-sha2"
37088+ ],
37089+ "device_id": "ALICEDEVICE1645",
37090+ "keys": {
37091+ "curve25519:ALICEDEVICE1645": "FZDR7z7hJ69SvFVArWtvCUP+bcEqKn5cKRFKDGWaLQU",
37092+ "ed25519:ALICEDEVICE1645": "0TjmgLXBR83R6+Yy47BhZmK/YEnSTLOxTj1cTjv2Rg4"
37093+ },
37094+ "signatures": {
37095+ "@alice_1645:hs1": {
37096+ "ed25519:ALICEDEVICE1645": "geXGFW1bFQT79TMzytfJLLgov3mhXHYTUPg4WTrGl3c7w4LVEt6B6mhX0F5kEJvJ+WulBX9KFD7PB+sXD7xjDw"
37097+ }
37098+ },
37099+ "user_id": "@alice_1645:hs1",
37100+ "unsigned": {}
37101+ }
37102+ },
37103+ "@alice_1647:hs1": {
37104+ "ALICEDEVICE1647": {
37105+ "algorithms": [
37106+ "m.olm.v1.curve25519-aes-sha2",
37107+ "m.megolm.v1.aes-sha2"
37108+ ],
37109+ "device_id": "ALICEDEVICE1647",
37110+ "keys": {
37111+ "curve25519:ALICEDEVICE1647": "n+L6v4QiardW6jheFjN6sjlowH4wErTZGPj09AyeMlg",
37112+ "ed25519:ALICEDEVICE1647": "zdFKZeOhYKZ6fWkrYVsnVWbezh+YkzXhjye12ZIUOxk"
37113+ },
37114+ "signatures": {
37115+ "@alice_1647:hs1": {
37116+ "ed25519:ALICEDEVICE1647": "dLm9nPiRxYHNlkKVDSIh15DP2NqZKMaw6cG71OlfjCDl5HnhwF1abT3z0rFoNeIe9HwMe2tnTZIJ+k+MfIxMCg"
37117+ }
37118+ },
37119+ "user_id": "@alice_1647:hs1",
37120+ "unsigned": {}
37121+ }
37122+ },
37123+ "@alice_1649:hs1": {
37124+ "ALICEDEVICE1649": {
37125+ "algorithms": [
37126+ "m.olm.v1.curve25519-aes-sha2",
37127+ "m.megolm.v1.aes-sha2"
37128+ ],
37129+ "device_id": "ALICEDEVICE1649",
37130+ "keys": {
37131+ "curve25519:ALICEDEVICE1649": "Cp7omzN3yudRDjM6MdTQUWWPxRkAVtfDcj4afdvt1FM",
37132+ "ed25519:ALICEDEVICE1649": "OMpmJshDX/FamKXREQwQtDqyiKj1juVyu9frjBwTZmI"
37133+ },
37134+ "signatures": {
37135+ "@alice_1649:hs1": {
37136+ "ed25519:ALICEDEVICE1649": "96Tx15EQL6LJynY9FEadjQ1tbFUIjXjedXqsRYiIVecnuTT75wUUwdCsAaG4tmj56AQrcXH7qS5/EMNJL7dRAQ"
37137+ }
37138+ },
37139+ "user_id": "@alice_1649:hs1",
37140+ "unsigned": {}
37141+ }
37142+ },
37143+ "@alice_1659:hs1": {
37144+ "ALICEDEVICE1659": {
37145+ "algorithms": [
37146+ "m.olm.v1.curve25519-aes-sha2",
37147+ "m.megolm.v1.aes-sha2"
37148+ ],
37149+ "device_id": "ALICEDEVICE1659",
37150+ "keys": {
37151+ "curve25519:ALICEDEVICE1659": "r4Kh+XQEsjj3k7RFJQqMhF/pNcIL4N1pKmHtFbLT+Rk",
37152+ "ed25519:ALICEDEVICE1659": "LQ4ekHC1MqHWqHwBMpBQ/1P/rB/cQz4rtdypWiS+FCI"
37153+ },
37154+ "signatures": {
37155+ "@alice_1659:hs1": {
37156+ "ed25519:ALICEDEVICE1659": "YaA132Dba1u0zbcB8B9b/iWjvmIjMuc+QaNUlvjlJvd1mm833fjHM1GE6lptIiejuqFyuIq+vZXns3Gmt824Aw"
37157+ }
37158+ },
37159+ "user_id": "@alice_1659:hs1",
37160+ "unsigned": {}
37161+ }
37162+ },
37163+ "@alice_1661:hs1": {
37164+ "ALICEDEVICE1661": {
37165+ "algorithms": [
37166+ "m.olm.v1.curve25519-aes-sha2",
37167+ "m.megolm.v1.aes-sha2"
37168+ ],
37169+ "device_id": "ALICEDEVICE1661",
37170+ "keys": {
37171+ "curve25519:ALICEDEVICE1661": "g5S70m0eQM8SqKDfc8dCEzxyjmr/dZQYkBi+9VJ+dVo",
37172+ "ed25519:ALICEDEVICE1661": "fZltuW5WeZxddoDzUJsDZeQeBUM60uGF7TiUI4iffCw"
37173+ },
37174+ "signatures": {
37175+ "@alice_1661:hs1": {
37176+ "ed25519:ALICEDEVICE1661": "EWF1ytQDXU2FpVs1wSe1zXMUzd55ANB/Zgddr1n8KjyNeocx539orgh+7gNchCAm9sCIijxf2b78o+gIR33jCw"
37177+ }
37178+ },
37179+ "user_id": "@alice_1661:hs1",
37180+ "unsigned": {}
37181+ }
37182+ },
37183+ "@alice_1663:hs1": {
37184+ "ALICEDEVICE1663": {
37185+ "algorithms": [
37186+ "m.olm.v1.curve25519-aes-sha2",
37187+ "m.megolm.v1.aes-sha2"
37188+ ],
37189+ "device_id": "ALICEDEVICE1663",
37190+ "keys": {
37191+ "curve25519:ALICEDEVICE1663": "t97TGpQ9aPoOF8BhiZu6o9BO8Iljcr5Sqlfk/0Rx/2U",
37192+ "ed25519:ALICEDEVICE1663": "9e5LrQgVsCQOuc11ViljblwoMcZwalGe4WVx5hCMuCw"
37193+ },
37194+ "signatures": {
37195+ "@alice_1663:hs1": {
37196+ "ed25519:ALICEDEVICE1663": "kwxk0vk61lf8ASxn0NSx2Xjg7WPxOg4e93DYJkqvgyZo0RIeqQ/Hn6lsEhlB9OEFCs1S9I0O6HZv7LFBWIiCCw"
37197+ }
37198+ },
37199+ "user_id": "@alice_1663:hs1",
37200+ "unsigned": {}
37201+ }
37202+ },
37203+ "@alice_1671:hs1": {
37204+ "ALICEDEVICE1671": {
37205+ "algorithms": [
37206+ "m.olm.v1.curve25519-aes-sha2",
37207+ "m.megolm.v1.aes-sha2"
37208+ ],
37209+ "device_id": "ALICEDEVICE1671",
37210+ "keys": {
37211+ "curve25519:ALICEDEVICE1671": "3zup0EKK2rnFHK+0xO2XUPUBIH+JKl3NogBSrO2sz34",
37212+ "ed25519:ALICEDEVICE1671": "V2SAYz6O6JLQ6GV2Z7wnSFNs/GeecpgTGKrWaSXIf+w"
37213+ },
37214+ "signatures": {
37215+ "@alice_1671:hs1": {
37216+ "ed25519:ALICEDEVICE1671": "Yn+an1r/jvv2AH6OTpgx9MoSeoYKnsnBI+U+g1B4wXC2tudsP6y/Ay9pPPOpcXRKv7WsxKkcIyVDLMGHlizLCw"
37217+ }
37218+ },
37219+ "user_id": "@alice_1671:hs1",
37220+ "unsigned": {}
37221+ }
37222+ },
37223+ "@alice_1701:hs1": {
37224+ "ALICEDEVICE1701": {
37225+ "algorithms": [
37226+ "m.olm.v1.curve25519-aes-sha2",
37227+ "m.megolm.v1.aes-sha2"
37228+ ],
37229+ "device_id": "ALICEDEVICE1701",
37230+ "keys": {
37231+ "curve25519:ALICEDEVICE1701": "x9AfBco+zF8FHh8L5AhxawAeS/64SS9wB9PwtJ3AKCY",
37232+ "ed25519:ALICEDEVICE1701": "880B3niYi43BE8d1LmuLit1Ycp2o9r6upsncK2UzWns"
37233+ },
37234+ "signatures": {
37235+ "@alice_1701:hs1": {
37236+ "ed25519:ALICEDEVICE1701": "ArfbDCkCoHPeArKNqR3+SspQ4nLRI3MCN+d49hzC/bzblqqnarxIX539SH92WnMuhdH0sgQmmR3jLq/MZV+gAQ"
37237+ }
37238+ },
37239+ "user_id": "@alice_1701:hs1",
37240+ "unsigned": {}
37241+ }
37242+ },
37243+ "@alice_1704:hs1": {
37244+ "ALICEDEVICE1704": {
37245+ "algorithms": [
37246+ "m.olm.v1.curve25519-aes-sha2",
37247+ "m.megolm.v1.aes-sha2"
37248+ ],
37249+ "device_id": "ALICEDEVICE1704",
37250+ "keys": {
37251+ "curve25519:ALICEDEVICE1704": "LfWiIgpBp83nzsgebnL/pNvupQvIXHT+Ktx4Y/qQoSs",
37252+ "ed25519:ALICEDEVICE1704": "wDlqMs9oVeugQ0WUOF1wlHsjjnk+FGsFihLhnEYHDuU"
37253+ },
37254+ "signatures": {
37255+ "@alice_1704:hs1": {
37256+ "ed25519:ALICEDEVICE1704": "4MkuBxuMjfnKM6zwEStjqRyQHy2ZrhRcmERgZzxvQguzvXgE3lJITCPNQWqo/3YFbfFeVMegCVn2nfJfcQofBg"
37257+ }
37258+ },
37259+ "user_id": "@alice_1704:hs1",
37260+ "unsigned": {}
37261+ }
37262+ },
37263+ "@alice_1725:hs1": {
37264+ "ALICEDEVICE1725": {
37265+ "algorithms": [
37266+ "m.olm.v1.curve25519-aes-sha2",
37267+ "m.megolm.v1.aes-sha2"
37268+ ],
37269+ "device_id": "ALICEDEVICE1725",
37270+ "keys": {
37271+ "curve25519:ALICEDEVICE1725": "jxTeyHqMfHBozwlMJWOJv4wIekF712HbE0eUYadAPSA",
37272+ "ed25519:ALICEDEVICE1725": "4b/cQBLPVaOncku9KiL8KEoKXNWgktMv7+SdkEPHZKk"
37273+ },
37274+ "signatures": {
37275+ "@alice_1725:hs1": {
37276+ "ed25519:ALICEDEVICE1725": "mg88smekfsbCTynykhbbH8RDIM23XJa37Jw2MtWSrOfaOzvOJgXp1vOZdSgMjsrQixETjcQpUiB8ipaey30NDQ"
37277+ }
37278+ },
37279+ "user_id": "@alice_1725:hs1",
37280+ "unsigned": {}
37281+ }
37282+ },
37283+ "@alice_1728:hs1": {
37284+ "ALICEDEVICE1728": {
37285+ "algorithms": [
37286+ "m.olm.v1.curve25519-aes-sha2",
37287+ "m.megolm.v1.aes-sha2"
37288+ ],
37289+ "device_id": "ALICEDEVICE1728",
37290+ "keys": {
37291+ "curve25519:ALICEDEVICE1728": "ksws6C/SIwiMmok0Y91JNR3bpjKw9CMtOr+DztPLAjw",
37292+ "ed25519:ALICEDEVICE1728": "Vz64b4prH+s3VKh3g+X8LxHDEOutfEZ3AYkBeIsJEI4"
37293+ },
37294+ "signatures": {
37295+ "@alice_1728:hs1": {
37296+ "ed25519:ALICEDEVICE1728": "1pVgMVbGjnj2CsM0QX8w6Gkn/XdKY/E/9m8V344h2oGLvQysLoIkIeRygsKsaHGpCJrA68L13HbaH+t4sMPMBQ"
37297+ }
37298+ },
37299+ "user_id": "@alice_1728:hs1",
37300+ "unsigned": {}
37301+ }
37302+ },
37303+ "@alice_1743:hs1": {
37304+ "ALICEDEVICE1743": {
37305+ "algorithms": [
37306+ "m.olm.v1.curve25519-aes-sha2",
37307+ "m.megolm.v1.aes-sha2"
37308+ ],
37309+ "device_id": "ALICEDEVICE1743",
37310+ "keys": {
37311+ "curve25519:ALICEDEVICE1743": "a38UuBpAMPT6FqsMJXpZW7jo+qR59AqkYIwB6LMTBQo",
37312+ "ed25519:ALICEDEVICE1743": "QDjQ2GEq5jaLQimILsRjv5j92gkjDX/46MBzqmjWXoQ"
37313+ },
37314+ "signatures": {
37315+ "@alice_1743:hs1": {
37316+ "ed25519:ALICEDEVICE1743": "2ujqVAzne+yanGC1ZY7Ks0NvTUymifkQ7NmPPMQOf1YZclV9t0ErvOP34jV9v82LPSC08t/6mM0bBTLkUDrIAw"
37317+ }
37318+ },
37319+ "user_id": "@alice_1743:hs1",
37320+ "unsigned": {}
37321+ }
37322+ },
37323+ "@alice_1749:hs1": {
37324+ "ALICEDEVICE1749": {
37325+ "algorithms": [
37326+ "m.olm.v1.curve25519-aes-sha2",
37327+ "m.megolm.v1.aes-sha2"
37328+ ],
37329+ "device_id": "ALICEDEVICE1749",
37330+ "keys": {
37331+ "curve25519:ALICEDEVICE1749": "G8bBeu9YkHB2qBOZV40WrZ9kSuCi7CAdvBnL61NBFkw",
37332+ "ed25519:ALICEDEVICE1749": "nZXy+pWvXFQBWLs3JGqSGWWlJXZ0pLrc3pmsShbeVH0"
37333+ },
37334+ "signatures": {
37335+ "@alice_1749:hs1": {
37336+ "ed25519:ALICEDEVICE1749": "RwJN5JiD7WJja4ty8mUeNcdL2uyP2O/mq+Os9+w3gjP2RoV2i440k53XxvfJkQak1rX06fUIUf4mT//DXZgeAw"
37337+ }
37338+ },
37339+ "user_id": "@alice_1749:hs1",
37340+ "unsigned": {}
37341+ }
37342+ },
37343+ "@alice_174:hs1": {
37344+ "ALICEDEVICE174": {
37345+ "algorithms": [
37346+ "m.olm.v1.curve25519-aes-sha2",
37347+ "m.megolm.v1.aes-sha2"
37348+ ],
37349+ "device_id": "ALICEDEVICE174",
37350+ "keys": {
37351+ "curve25519:ALICEDEVICE174": "sYDwxNxk8fDPDpnlD+5Up3gURbWO2dWSYBgd17NmHFk",
37352+ "ed25519:ALICEDEVICE174": "JmEp+720XVvHYbIdUW63BJk50gnUtUS7uuhfNO2uqF4"
37353+ },
37354+ "signatures": {
37355+ "@alice_174:hs1": {
37356+ "ed25519:ALICEDEVICE174": "HGcT096SpWtNRGrpqmGrwKvXGechCpHKbapUDSknBrJ02wz9UrDS+Oqy2j4+zAlS0oZQbn+m/2zuwDJCi6oyCA"
37357+ }
37358+ },
37359+ "user_id": "@alice_174:hs1",
37360+ "unsigned": {}
37361+ }
37362+ },
37363+ "@alice_1760:hs1": {
37364+ "ALICEDEVICE1760": {
37365+ "algorithms": [
37366+ "m.olm.v1.curve25519-aes-sha2",
37367+ "m.megolm.v1.aes-sha2"
37368+ ],
37369+ "device_id": "ALICEDEVICE1760",
37370+ "keys": {
37371+ "curve25519:ALICEDEVICE1760": "feaRwp7gEDk+SktiExKv/QKQZ7LyqllapcUL/09TvDk",
37372+ "ed25519:ALICEDEVICE1760": "tU7qCpwlBsjgvgICo34jVEmdA8XK3MW1/fikPkUHgtg"
37373+ },
37374+ "signatures": {
37375+ "@alice_1760:hs1": {
37376+ "ed25519:ALICEDEVICE1760": "QeSQ2STI3dKjTVEMNsdDV2luQ9Vdd6803elxQDvT58FQt69g930ntWwzLJ4O0o9BnxQhSwSwHQBccLmVrMrOBQ"
37377+ }
37378+ },
37379+ "user_id": "@alice_1760:hs1",
37380+ "unsigned": {}
37381+ }
37382+ },
37383+ "@alice_1786:hs1": {
37384+ "ALICEDEVICE1786": {
37385+ "algorithms": [
37386+ "m.olm.v1.curve25519-aes-sha2",
37387+ "m.megolm.v1.aes-sha2"
37388+ ],
37389+ "device_id": "ALICEDEVICE1786",
37390+ "keys": {
37391+ "curve25519:ALICEDEVICE1786": "0rVtesiT3LFULUbGJp2TMReFeA0f9sdLmn2OOyW/8zE",
37392+ "ed25519:ALICEDEVICE1786": "hWcQ8nyEoglt9kqGLiSPJ0WKNcTErE9kffKx1KSc3Bk"
37393+ },
37394+ "signatures": {
37395+ "@alice_1786:hs1": {
37396+ "ed25519:ALICEDEVICE1786": "kUNFlXvtvS8LuW+E5lupm6iRnNIvbC5pWVbC/vf+JDx4wOrxcwOmVNbO/X+n6gEQTXpF7rw8ha/bpW8mRq9pDw"
37397+ }
37398+ },
37399+ "user_id": "@alice_1786:hs1",
37400+ "unsigned": {}
37401+ }
37402+ },
37403+ "@alice_1794:hs1": {
37404+ "ALICEDEVICE1794": {
37405+ "algorithms": [
37406+ "m.olm.v1.curve25519-aes-sha2",
37407+ "m.megolm.v1.aes-sha2"
37408+ ],
37409+ "device_id": "ALICEDEVICE1794",
37410+ "keys": {
37411+ "curve25519:ALICEDEVICE1794": "35crh3HV5z6pqeE1utpAgGK2xbdGQ7vTFg6OHDu7n1o",
37412+ "ed25519:ALICEDEVICE1794": "qenoNqoRw+oqOadFsB4njDmfPHemh1ecVrHU/9Mg6gA"
37413+ },
37414+ "signatures": {
37415+ "@alice_1794:hs1": {
37416+ "ed25519:ALICEDEVICE1794": "HQW4fInIm0j3nC74iE0qfAcPNP+SaiYoVZ3Er4d76/508ABUo9FxDxvc76HxwWtVsJfiRXglDt1WKgc+RNg4DA"
37417+ }
37418+ },
37419+ "user_id": "@alice_1794:hs1",
37420+ "unsigned": {}
37421+ }
37422+ },
37423+ "@alice_1799:hs1": {
37424+ "ALICEDEVICE1799": {
37425+ "algorithms": [
37426+ "m.olm.v1.curve25519-aes-sha2",
37427+ "m.megolm.v1.aes-sha2"
37428+ ],
37429+ "device_id": "ALICEDEVICE1799",
37430+ "keys": {
37431+ "curve25519:ALICEDEVICE1799": "Redj74nUdBtbwe7wkT/5Mvn1OEQCDjUZleSCN3ZeQ14",
37432+ "ed25519:ALICEDEVICE1799": "QK5UuGdZImXGqJDUtzMSvCO9CRPFi1TLeJ0BXkqguP4"
37433+ },
37434+ "signatures": {
37435+ "@alice_1799:hs1": {
37436+ "ed25519:ALICEDEVICE1799": "7aVJ+SSevuhQwRQiz8rVCh8N8X0SjjgDO+5E+9zaS0AXYxa1VmPysTdRDVMUZeHylOFXCK/xmJWbhCEOOf26Dg"
37437+ }
37438+ },
37439+ "user_id": "@alice_1799:hs1",
37440+ "unsigned": {}
37441+ }
37442+ },
37443+ "@alice_17:hs1": {
37444+ "ALICEDEVICE17": {
37445+ "algorithms": [
37446+ "m.olm.v1.curve25519-aes-sha2",
37447+ "m.megolm.v1.aes-sha2"
37448+ ],
37449+ "device_id": "ALICEDEVICE17",
37450+ "keys": {
37451+ "curve25519:ALICEDEVICE17": "vlq2+GQXKuBRHJGEUxnnoXs7hQF2S5wqofYkijOtQho",
37452+ "ed25519:ALICEDEVICE17": "t/PSNUYROTtkClXRPhqE2tSBOjB7HLFq2WPSg0pbthc"
37453+ },
37454+ "signatures": {
37455+ "@alice_17:hs1": {
37456+ "ed25519:ALICEDEVICE17": "+9JxB/iVMuhoTzhiBe1gbzB5WABcAiiDU4NVYl77V2Vx/+VHAwKmLYmrTQWJMM8fxm4Hq3qDDYJHFiYMTKX1DA"
37457+ }
37458+ },
37459+ "user_id": "@alice_17:hs1",
37460+ "unsigned": {}
37461+ }
37462+ },
37463+ "@alice_1801:hs1": {
37464+ "ALICEDEVICE1801": {
37465+ "algorithms": [
37466+ "m.olm.v1.curve25519-aes-sha2",
37467+ "m.megolm.v1.aes-sha2"
37468+ ],
37469+ "device_id": "ALICEDEVICE1801",
37470+ "keys": {
37471+ "curve25519:ALICEDEVICE1801": "4oNZhLPyzhcuaRA76CeVyDuIyMtlFSAB6TSZA2yarwU",
37472+ "ed25519:ALICEDEVICE1801": "I0uG8+p/6BKuJJN04yRqsJZHpsUCxW0PeaiFzkmhI+I"
37473+ },
37474+ "signatures": {
37475+ "@alice_1801:hs1": {
37476+ "ed25519:ALICEDEVICE1801": "zVY7n33Cn9nS5j8LT+xYwTulf1HANRWyMqpAlMDIGzSAj9CEkcx1zSfw9639V3DsqQxcoNv0TPtPy8q3NbwtCQ"
37477+ }
37478+ },
37479+ "user_id": "@alice_1801:hs1",
37480+ "unsigned": {}
37481+ }
37482+ },
37483+ "@alice_180:hs1": {
37484+ "ALICEDEVICE180": {
37485+ "algorithms": [
37486+ "m.olm.v1.curve25519-aes-sha2",
37487+ "m.megolm.v1.aes-sha2"
37488+ ],
37489+ "device_id": "ALICEDEVICE180",
37490+ "keys": {
37491+ "curve25519:ALICEDEVICE180": "o3XDn6Q4omSg0lrtVMZt261hDdvsPDN1IQT1IBdqhFM",
37492+ "ed25519:ALICEDEVICE180": "ZrGNz9fbToVY34trJRKpI4qV2PUxUR/jFIpEILynDZA"
37493+ },
37494+ "signatures": {
37495+ "@alice_180:hs1": {
37496+ "ed25519:ALICEDEVICE180": "s5PXPfvMZewjv98MttwG24b28IuZbUYL2erfuOsCCeHmWitr+hJsOWdbEyM3imQnLyEh7SNlGQ1hRj8Dn0TwCg"
37497+ }
37498+ },
37499+ "user_id": "@alice_180:hs1",
37500+ "unsigned": {}
37501+ }
37502+ },
37503+ "@alice_1824:hs1": {
37504+ "ALICEDEVICE1824": {
37505+ "algorithms": [
37506+ "m.olm.v1.curve25519-aes-sha2",
37507+ "m.megolm.v1.aes-sha2"
37508+ ],
37509+ "device_id": "ALICEDEVICE1824",
37510+ "keys": {
37511+ "curve25519:ALICEDEVICE1824": "Xq5Ih4x+LDG5o8cWlAbKZBPIt5WrH5hOpQX54tZoC2A",
37512+ "ed25519:ALICEDEVICE1824": "NlRX/qeWyJG5JC6h8WubsS75IQgxKfYO0M8zjDNyRGw"
37513+ },
37514+ "signatures": {
37515+ "@alice_1824:hs1": {
37516+ "ed25519:ALICEDEVICE1824": "3yApSgLDMKGociHfYQJHG4/FNJZnOh1Z1YDaWXL3whz/uPEL2DNtUsaLZjwXdrGTAJmXN4EQQpFRjVJ06xAZBQ"
37517+ }
37518+ },
37519+ "user_id": "@alice_1824:hs1",
37520+ "unsigned": {}
37521+ }
37522+ },
37523+ "@alice_182:hs1": {
37524+ "ALICEDEVICE182": {
37525+ "algorithms": [
37526+ "m.olm.v1.curve25519-aes-sha2",
37527+ "m.megolm.v1.aes-sha2"
37528+ ],
37529+ "device_id": "ALICEDEVICE182",
37530+ "keys": {
37531+ "curve25519:ALICEDEVICE182": "XLkQnQbxUQukXxClLl55gfF2xUA0wDnqx6xsYM5863I",
37532+ "ed25519:ALICEDEVICE182": "rRybx5xg/plJJMoWh14z1vwu2ceWmYNT0U4H12VyWmc"
37533+ },
37534+ "signatures": {
37535+ "@alice_182:hs1": {
37536+ "ed25519:ALICEDEVICE182": "WUViBaTAZgNwqmcEvfvD2/WaZEi72+pKbORDG13/AfYlPy8KcvY9hFEo6VbJcdvP9zcmoab8FACF9XeH7Y+aDA"
37537+ }
37538+ },
37539+ "user_id": "@alice_182:hs1",
37540+ "unsigned": {}
37541+ }
37542+ },
37543+ "@alice_1836:hs1": {
37544+ "ALICEDEVICE1836": {
37545+ "algorithms": [
37546+ "m.olm.v1.curve25519-aes-sha2",
37547+ "m.megolm.v1.aes-sha2"
37548+ ],
37549+ "device_id": "ALICEDEVICE1836",
37550+ "keys": {
37551+ "curve25519:ALICEDEVICE1836": "oWPBmJvDh4XGM2YOdPdaDUMffMoQbkBuU2rOumn89Qs",
37552+ "ed25519:ALICEDEVICE1836": "NnqLj+8+3n+ce32wyZM5R8tuekNhNVMEtAtf1fR7cag"
37553+ },
37554+ "signatures": {
37555+ "@alice_1836:hs1": {
37556+ "ed25519:ALICEDEVICE1836": "Z1qa2hsMVNAyAm33C0a9G8T1nxVeJml3kSiPMa4X52ffe8vhKD3ZEQ1+bYNWZkuJGFn2DY+9ESeG7wKiEixTDQ"
37557+ }
37558+ },
37559+ "user_id": "@alice_1836:hs1",
37560+ "unsigned": {}
37561+ }
37562+ },
37563+ "@alice_183:hs1": {
37564+ "ALICEDEVICE183": {
37565+ "algorithms": [
37566+ "m.olm.v1.curve25519-aes-sha2",
37567+ "m.megolm.v1.aes-sha2"
37568+ ],
37569+ "device_id": "ALICEDEVICE183",
37570+ "keys": {
37571+ "curve25519:ALICEDEVICE183": "aU2CseKfJBAjv+eBXkKxl58LUWHUHC38z+qby8cfK0g",
37572+ "ed25519:ALICEDEVICE183": "ly3FDyRhQALGkfONqQGUUn2ax7RHmTiSqAAQX/U4vA4"
37573+ },
37574+ "signatures": {
37575+ "@alice_183:hs1": {
37576+ "ed25519:ALICEDEVICE183": "Ujeo2/DtFAmuc6Nj92+NqsYT6/KgEKp+n122Q8DkFuCtGS3ELupsFMzr07S/1EDZpkurgBSZcMwt2XoWtiBFDw"
37577+ }
37578+ },
37579+ "user_id": "@alice_183:hs1",
37580+ "unsigned": {}
37581+ }
37582+ },
37583+ "@alice_1845:hs1": {
37584+ "ALICEDEVICE1845": {
37585+ "algorithms": [
37586+ "m.olm.v1.curve25519-aes-sha2",
37587+ "m.megolm.v1.aes-sha2"
37588+ ],
37589+ "device_id": "ALICEDEVICE1845",
37590+ "keys": {
37591+ "curve25519:ALICEDEVICE1845": "OYcq/y4Nmtcr+4Q8D0dvKuKBpN4sdpv2piKPkvXNoUs",
37592+ "ed25519:ALICEDEVICE1845": "k9Wqfg4pBt4ez7XnqjxEXHrH+A04pdl87GobGC7UdpM"
37593+ },
37594+ "signatures": {
37595+ "@alice_1845:hs1": {
37596+ "ed25519:ALICEDEVICE1845": "QQUODZ80nt+4OK9Qh60Rw2JK8MIJViKaDDMm9TGDt1RRXnJQMBJki9CKHuS6/c/ZBls35mDca7VXkG4w68ysBw"
37597+ }
37598+ },
37599+ "user_id": "@alice_1845:hs1",
37600+ "unsigned": {}
37601+ }
37602+ },
37603+ "@alice_1861:hs1": {
37604+ "ALICEDEVICE1861": {
37605+ "algorithms": [
37606+ "m.olm.v1.curve25519-aes-sha2",
37607+ "m.megolm.v1.aes-sha2"
37608+ ],
37609+ "device_id": "ALICEDEVICE1861",
37610+ "keys": {
37611+ "curve25519:ALICEDEVICE1861": "cMmJl5hJgXN3hXHRJuWp7+kME8xbKFq15IYg3a9yLnk",
37612+ "ed25519:ALICEDEVICE1861": "ocnzvvNMZD+wwW81MrT1hUtGJ5oKD4mAh/x/RDyyRAs"
37613+ },
37614+ "signatures": {
37615+ "@alice_1861:hs1": {
37616+ "ed25519:ALICEDEVICE1861": "Vy57OleJQkalan2BEh8i9A0SuyqDyechFULydCkYs/54yASXbBGEetIIFYxXf33d3ZGz4FVgp2h9Uh45ktNSCw"
37617+ }
37618+ },
37619+ "user_id": "@alice_1861:hs1",
37620+ "unsigned": {}
37621+ }
37622+ },
37623+ "@alice_1881:hs1": {
37624+ "ALICEDEVICE1881": {
37625+ "algorithms": [
37626+ "m.olm.v1.curve25519-aes-sha2",
37627+ "m.megolm.v1.aes-sha2"
37628+ ],
37629+ "device_id": "ALICEDEVICE1881",
37630+ "keys": {
37631+ "curve25519:ALICEDEVICE1881": "6ycG39wwElv2iaj6u88tZvfScA5RHtoCuoyumJvggj8",
37632+ "ed25519:ALICEDEVICE1881": "L1HF2afWnVIOhk7L6np6Q/EXdwuVy6mwBX/qx45hjgs"
37633+ },
37634+ "signatures": {
37635+ "@alice_1881:hs1": {
37636+ "ed25519:ALICEDEVICE1881": "vl+B3TRijtBKLD5Cp2DBkBMboi8gqWuNklaaK/lwMPmmaPckThKw3xLk8P6LIl0zUxnFQOhkF0ZoLJKVl6rABA"
37637+ }
37638+ },
37639+ "user_id": "@alice_1881:hs1",
37640+ "unsigned": {}
37641+ }
37642+ },
37643+ "@alice_18:hs1": {
37644+ "ALICEDEVICE18": {
37645+ "algorithms": [
37646+ "m.olm.v1.curve25519-aes-sha2",
37647+ "m.megolm.v1.aes-sha2"
37648+ ],
37649+ "device_id": "ALICEDEVICE18",
37650+ "keys": {
37651+ "curve25519:ALICEDEVICE18": "9seYthVOQYmYpN4901y5ZHr6GQddufLK1Lwz71O3Fnk",
37652+ "ed25519:ALICEDEVICE18": "URb9+uEWqCTiYeGG41qGS9CrZjygepuAqtRQ38ijCbc"
37653+ },
37654+ "signatures": {
37655+ "@alice_18:hs1": {
37656+ "ed25519:ALICEDEVICE18": "LW8Vt9W1zv16HU+K+n4P2UQmX9dr7yFXI0w9J9YUlDeN2fQ+Kgn2DJ063C74B1FtriDE3PMmEdEn4jsV7IGQAg"
37657+ }
37658+ },
37659+ "user_id": "@alice_18:hs1",
37660+ "unsigned": {}
37661+ }
37662+ },
37663+ "@alice_1900:hs1": {
37664+ "ALICEDEVICE1900": {
37665+ "algorithms": [
37666+ "m.olm.v1.curve25519-aes-sha2",
37667+ "m.megolm.v1.aes-sha2"
37668+ ],
37669+ "device_id": "ALICEDEVICE1900",
37670+ "keys": {
37671+ "curve25519:ALICEDEVICE1900": "l/BLL/Fey1gp+nbUHQtOgzi5b+d5Wk5v2b3Mpn1G4kc",
37672+ "ed25519:ALICEDEVICE1900": "wFfjMDG7pRSBrZ8Xg8JLO/TcEqnYaoPNSeTALvjufu0"
37673+ },
37674+ "signatures": {
37675+ "@alice_1900:hs1": {
37676+ "ed25519:ALICEDEVICE1900": "1tTU/xus6292DNOrtimaLY1FFBSY6u8YQkpUxp0ByYNJHXXhlbC2PIXf92k0decbIr/6NbSbn2xhD805JQE0Cw"
37677+ }
37678+ },
37679+ "user_id": "@alice_1900:hs1",
37680+ "unsigned": {}
37681+ }
37682+ },
37683+ "@alice_1908:hs1": {
37684+ "ALICEDEVICE1908": {
37685+ "algorithms": [
37686+ "m.olm.v1.curve25519-aes-sha2",
37687+ "m.megolm.v1.aes-sha2"
37688+ ],
37689+ "device_id": "ALICEDEVICE1908",
37690+ "keys": {
37691+ "curve25519:ALICEDEVICE1908": "vkW78yJbXFov4nkSxC9itN2IibkiCTrk5yTOq/htcmE",
37692+ "ed25519:ALICEDEVICE1908": "hGJeOCtNbrrvzlcGsEywlz+6qRyeEWb73zeJs++L7vU"
37693+ },
37694+ "signatures": {
37695+ "@alice_1908:hs1": {
37696+ "ed25519:ALICEDEVICE1908": "AGvGZHFlKqEI9VykzVAdHbtyuK2dl4Sr2CCl767Llzet41g09iFHJF05dkF5dS1+y/Ge9RcP/Ra6Rq2WkjvJCg"
37697+ }
37698+ },
37699+ "user_id": "@alice_1908:hs1",
37700+ "unsigned": {}
37701+ }
37702+ },
37703+ "@alice_1912:hs1": {
37704+ "ALICEDEVICE1912": {
37705+ "algorithms": [
37706+ "m.olm.v1.curve25519-aes-sha2",
37707+ "m.megolm.v1.aes-sha2"
37708+ ],
37709+ "device_id": "ALICEDEVICE1912",
37710+ "keys": {
37711+ "curve25519:ALICEDEVICE1912": "V9aL+rS9Yd3yZl8ncWNKG0LJ454sgpxnGSwihbREDgc",
37712+ "ed25519:ALICEDEVICE1912": "Z8TL02tKKnEPyc1Tcz5CzpFGgHp/tl4Jc5JRa+n6dxQ"
37713+ },
37714+ "signatures": {
37715+ "@alice_1912:hs1": {
37716+ "ed25519:ALICEDEVICE1912": "FoZ0v4kZ5Q7ETwQPo5WUdz1VVnVbOamkABrwB7y6P0ljPWr8UdK/zH97Gz3dhz6WQ5yQPhtBZp49htEkmAs4BQ"
37717+ }
37718+ },
37719+ "user_id": "@alice_1912:hs1",
37720+ "unsigned": {}
37721+ }
37722+ },
37723+ "@alice_1926:hs1": {
37724+ "ALICEDEVICE1926": {
37725+ "algorithms": [
37726+ "m.olm.v1.curve25519-aes-sha2",
37727+ "m.megolm.v1.aes-sha2"
37728+ ],
37729+ "device_id": "ALICEDEVICE1926",
37730+ "keys": {
37731+ "curve25519:ALICEDEVICE1926": "5L3h6fGgnGsf16v174Zb2a8JYs8+9SlXkt9imjzfUHQ",
37732+ "ed25519:ALICEDEVICE1926": "YqzYJt8F2Rof7V6A0KMToeW2sPRRepesZFTNiklAz1w"
37733+ },
37734+ "signatures": {
37735+ "@alice_1926:hs1": {
37736+ "ed25519:ALICEDEVICE1926": "8h+c1Ic2eZnKhIY6FqaUBu09BhlYlKVE5fgvcT5eFO0E8DSFJ0d8688XLpXer5rX8U19Ek2KLZnz8x25SXSzBg"
37737+ }
37738+ },
37739+ "user_id": "@alice_1926:hs1",
37740+ "unsigned": {}
37741+ }
37742+ },
37743+ "@alice_1932:hs1": {
37744+ "ALICEDEVICE1932": {
37745+ "algorithms": [
37746+ "m.olm.v1.curve25519-aes-sha2",
37747+ "m.megolm.v1.aes-sha2"
37748+ ],
37749+ "device_id": "ALICEDEVICE1932",
37750+ "keys": {
37751+ "curve25519:ALICEDEVICE1932": "W6PJL9IK87nGdJMgZedmjNtnUs7fLYm4dyGt9rAKvl8",
37752+ "ed25519:ALICEDEVICE1932": "9a4t0UtXPKzU2vEGgVT1qPDZhKQhtn5pISIx3L1Meew"
37753+ },
37754+ "signatures": {
37755+ "@alice_1932:hs1": {
37756+ "ed25519:ALICEDEVICE1932": "uXQYD5LPJyuH+VU61n7VcUepeRbFERxUpnHl35QG7B1mVvHuRJK4vR3jSJ8buHJijKZQolnn1YF11CDxWCZUAA"
37757+ }
37758+ },
37759+ "user_id": "@alice_1932:hs1",
37760+ "unsigned": {}
37761+ }
37762+ },
37763+ "@alice_1934:hs1": {
37764+ "ALICEDEVICE1934": {
37765+ "algorithms": [
37766+ "m.olm.v1.curve25519-aes-sha2",
37767+ "m.megolm.v1.aes-sha2"
37768+ ],
37769+ "device_id": "ALICEDEVICE1934",
37770+ "keys": {
37771+ "curve25519:ALICEDEVICE1934": "I4PW+ZkI+u28HomjbRQ0t+gbzT477xyXN9n/HlKMQ3c",
37772+ "ed25519:ALICEDEVICE1934": "X9y4G4jzWdfqvAOLfOor0J8D9pwucI53V+WVg7d4gw0"
37773+ },
37774+ "signatures": {
37775+ "@alice_1934:hs1": {
37776+ "ed25519:ALICEDEVICE1934": "hp3U7JERKkWZREzLBJjzwW40SHwutYwNAubeaooubtqABTtJAOFU/Qd3JbrnO345uAU5+xb0rOW5mKRscvBYCg"
37777+ }
37778+ },
37779+ "user_id": "@alice_1934:hs1",
37780+ "unsigned": {}
37781+ }
37782+ },
37783+ "@alice_1946:hs1": {
37784+ "ALICEDEVICE1946": {
37785+ "algorithms": [
37786+ "m.olm.v1.curve25519-aes-sha2",
37787+ "m.megolm.v1.aes-sha2"
37788+ ],
37789+ "device_id": "ALICEDEVICE1946",
37790+ "keys": {
37791+ "curve25519:ALICEDEVICE1946": "QEFoPY8glU1d/kQ6GdCV/zzRfeBfSv2X8+K5c35VcAk",
37792+ "ed25519:ALICEDEVICE1946": "ZnKE/SNRkz9pWKDJPABFeVa1dvnVdMRB26BRT/cV/fk"
37793+ },
37794+ "signatures": {
37795+ "@alice_1946:hs1": {
37796+ "ed25519:ALICEDEVICE1946": "ufnPhl3/8fXIidHI2W+UKoIsYQ1S5/nU//v8u2n3Auzww4IDnvFl/rm1Og6v7W16DCgPDSwMvYr8uNs+FDa+AA"
37797+ }
37798+ },
37799+ "user_id": "@alice_1946:hs1",
37800+ "unsigned": {}
37801+ }
37802+ },
37803+ "@alice_1951:hs1": {
37804+ "ALICEDEVICE1951": {
37805+ "algorithms": [
37806+ "m.olm.v1.curve25519-aes-sha2",
37807+ "m.megolm.v1.aes-sha2"
37808+ ],
37809+ "device_id": "ALICEDEVICE1951",
37810+ "keys": {
37811+ "curve25519:ALICEDEVICE1951": "EnGSNM+e15HKc9BNONxrqfVIidMrLBHdtEjto2UQWhg",
37812+ "ed25519:ALICEDEVICE1951": "m8RRdHM3rXqCJkonqP8eeFQrYFPkOecdmQq5SB6/ujI"
37813+ },
37814+ "signatures": {
37815+ "@alice_1951:hs1": {
37816+ "ed25519:ALICEDEVICE1951": "6sjrLvXolAHrumkNZOy03Z1mz5EHsCFE3BNHGyRFeKfrip4bHDoDgBGupuSmRZmG1wthD4jJj55cSCWqd1qvAQ"
37817+ }
37818+ },
37819+ "user_id": "@alice_1951:hs1",
37820+ "unsigned": {}
37821+ }
37822+ },
37823+ "@alice_1952:hs1": {
37824+ "ALICEDEVICE1952": {
37825+ "algorithms": [
37826+ "m.olm.v1.curve25519-aes-sha2",
37827+ "m.megolm.v1.aes-sha2"
37828+ ],
37829+ "device_id": "ALICEDEVICE1952",
37830+ "keys": {
37831+ "curve25519:ALICEDEVICE1952": "dMffubKY0uer2vIgMefLZto1LzgDzO4V4G02hmg/PG8",
37832+ "ed25519:ALICEDEVICE1952": "JeXuDHdmtjLlJwInnQecqNiFkiX1rmXIRdrzrOCc/cI"
37833+ },
37834+ "signatures": {
37835+ "@alice_1952:hs1": {
37836+ "ed25519:ALICEDEVICE1952": "+L6LSpC4hTFen4z9o6la7cYDgcc17IR8SKKbgzfOcPqfyMDu+OxTrZ5+twPyj6kVetEzQZ8/SiJddUspzZ/nBA"
37837+ }
37838+ },
37839+ "user_id": "@alice_1952:hs1",
37840+ "unsigned": {}
37841+ }
37842+ },
37843+ "@alice_1961:hs1": {
37844+ "ALICEDEVICE1961": {
37845+ "algorithms": [
37846+ "m.olm.v1.curve25519-aes-sha2",
37847+ "m.megolm.v1.aes-sha2"
37848+ ],
37849+ "device_id": "ALICEDEVICE1961",
37850+ "keys": {
37851+ "curve25519:ALICEDEVICE1961": "qUkgW0l2ds0DNa9JgKLPzIY4wJP8/JIFZ/UrxRtv1CU",
37852+ "ed25519:ALICEDEVICE1961": "UJmQSDLzlz9nUkvKkCJh33+v++uXJ/XcN9mqccXwYPs"
37853+ },
37854+ "signatures": {
37855+ "@alice_1961:hs1": {
37856+ "ed25519:ALICEDEVICE1961": "zwycTNS7Gq/lpcrWJCTgTKPU/eOwCv7kbfuwHYHNflbxr/7nKLIEW8Pz5yuGgr3wvwiujtxc5dv1Q+JrA8I9Aw"
37857+ }
37858+ },
37859+ "user_id": "@alice_1961:hs1",
37860+ "unsigned": {}
37861+ }
37862+ },
37863+ "@alice_1966:hs1": {
37864+ "ALICEDEVICE1966": {
37865+ "algorithms": [
37866+ "m.olm.v1.curve25519-aes-sha2",
37867+ "m.megolm.v1.aes-sha2"
37868+ ],
37869+ "device_id": "ALICEDEVICE1966",
37870+ "keys": {
37871+ "curve25519:ALICEDEVICE1966": "moQjXEYsUUqCWuY7xTCSfcWIrQZdOgWYpPG/kxqajRE",
37872+ "ed25519:ALICEDEVICE1966": "nkf2KWjP0eZaJrhaut+3DKQT51D1KXW+hdFHR6FaS6Q"
37873+ },
37874+ "signatures": {
37875+ "@alice_1966:hs1": {
37876+ "ed25519:ALICEDEVICE1966": "NFzIjIKMkPS17c7bCvvm2y+fBhM4ezoBbqVmvj6rSGmhRW4L7uI7BeIHLUhs+vxIHijTn4UOpjMWCJKmDIgeDA"
37877+ }
37878+ },
37879+ "user_id": "@alice_1966:hs1",
37880+ "unsigned": {}
37881+ }
37882+ },
37883+ "@alice_1967:hs1": {
37884+ "ALICEDEVICE1967": {
37885+ "algorithms": [
37886+ "m.olm.v1.curve25519-aes-sha2",
37887+ "m.megolm.v1.aes-sha2"
37888+ ],
37889+ "device_id": "ALICEDEVICE1967",
37890+ "keys": {
37891+ "curve25519:ALICEDEVICE1967": "q01SEAPOKXD9J+cupaMLzdCkFHfIOGEgBXnYpaS8N2o",
37892+ "ed25519:ALICEDEVICE1967": "TlxgxetoAS2LbZI3+CQWDE9lP4/HNq8ubBa1ifKesJo"
37893+ },
37894+ "signatures": {
37895+ "@alice_1967:hs1": {
37896+ "ed25519:ALICEDEVICE1967": "1ax6/5ezdPb27y0IWGlsl0/LcvMZSWFow+LTPdTfUvYN8XkkdK750y84YwnWZUizmcpAZGiOXsDJV9qIHNrDAQ"
37897+ }
37898+ },
37899+ "user_id": "@alice_1967:hs1",
37900+ "unsigned": {}
37901+ }
37902+ },
37903+ "@alice_196:hs1": {
37904+ "ALICEDEVICE196": {
37905+ "algorithms": [
37906+ "m.olm.v1.curve25519-aes-sha2",
37907+ "m.megolm.v1.aes-sha2"
37908+ ],
37909+ "device_id": "ALICEDEVICE196",
37910+ "keys": {
37911+ "curve25519:ALICEDEVICE196": "wnXlCN3F0sOEW/jXo6C7S7gYzw0lKLM/OwW0NjQfSDg",
37912+ "ed25519:ALICEDEVICE196": "ypYNZ/3GE86dBgBBeAGJ3n0GOAPcSF5wRavYhL5vkcA"
37913+ },
37914+ "signatures": {
37915+ "@alice_196:hs1": {
37916+ "ed25519:ALICEDEVICE196": "lECSCLUs1OJmG3Lhv/+N5BNDOOFSaKupeo5843I4hzR1Dgrak/9Hdog6whzyCv2CB4QeLTpQ2fHRI0amSYlJDA"
37917+ }
37918+ },
37919+ "user_id": "@alice_196:hs1",
37920+ "unsigned": {}
37921+ }
37922+ },
37923+ "@alice_1991:hs1": {
37924+ "ALICEDEVICE1991": {
37925+ "algorithms": [
37926+ "m.olm.v1.curve25519-aes-sha2",
37927+ "m.megolm.v1.aes-sha2"
37928+ ],
37929+ "device_id": "ALICEDEVICE1991",
37930+ "keys": {
37931+ "curve25519:ALICEDEVICE1991": "VNioOemaCSycH7TPfUaJb39Ry4dZYiy27GBBRQhoZjc",
37932+ "ed25519:ALICEDEVICE1991": "yQfvEZUEMb5zglCeSQOdCid4rE7iKvxlemjT4v0vB/g"
37933+ },
37934+ "signatures": {
37935+ "@alice_1991:hs1": {
37936+ "ed25519:ALICEDEVICE1991": "Ns5BMMmoo3zs5EBj5l5+2lySv1yZmSWDK1PrBHk3yk/2vLN4qBj/ZNw2L3cAaS14/i2cjQaSIq1A6XiqoMlGBA"
37937+ }
37938+ },
37939+ "user_id": "@alice_1991:hs1",
37940+ "unsigned": {}
37941+ }
37942+ },
37943+ "@alice_208:hs1": {
37944+ "ALICEDEVICE208": {
37945+ "algorithms": [
37946+ "m.olm.v1.curve25519-aes-sha2",
37947+ "m.megolm.v1.aes-sha2"
37948+ ],
37949+ "device_id": "ALICEDEVICE208",
37950+ "keys": {
37951+ "curve25519:ALICEDEVICE208": "tlh8HP6nLJESEDTx3I1Rzgczy/3Tzm+5VBpQ6niSv0g",
37952+ "ed25519:ALICEDEVICE208": "XLg33ThRpJdDm7oS7ICluBTz/KokQaScHfqrP3rKiKg"
37953+ },
37954+ "signatures": {
37955+ "@alice_208:hs1": {
37956+ "ed25519:ALICEDEVICE208": "gYdOzBmpU9fi1xiXU4WpAARH29o/xq9BbENOkPZYbkaiXF3Noa0M9dRmTvBNlTjs56hINssXUDp47r3sDKIKCQ"
37957+ }
37958+ },
37959+ "user_id": "@alice_208:hs1",
37960+ "unsigned": {}
37961+ }
37962+ },
37963+ "@alice_210:hs1": {
37964+ "ALICEDEVICE210": {
37965+ "algorithms": [
37966+ "m.olm.v1.curve25519-aes-sha2",
37967+ "m.megolm.v1.aes-sha2"
37968+ ],
37969+ "device_id": "ALICEDEVICE210",
37970+ "keys": {
37971+ "curve25519:ALICEDEVICE210": "BGSvYFlBLXxtP66DTaZ22AxhgdbnMvOTmh8pvuO63g4",
37972+ "ed25519:ALICEDEVICE210": "H5i4HnavLBGfYSeMPSsiWrGjPGmZPRZE2Jr20qy6h7U"
37973+ },
37974+ "signatures": {
37975+ "@alice_210:hs1": {
37976+ "ed25519:ALICEDEVICE210": "4bSQSimt11ne5FGdZDeEmEwd3gP5ZkSHgfCaNmT9mHuIDjfZ+cCArShtG09po8ucBIZwqs7QxSKaA2ve4UlMAQ"
37977+ }
37978+ },
37979+ "user_id": "@alice_210:hs1",
37980+ "unsigned": {}
37981+ }
37982+ },
37983+ "@alice_213:hs1": {
37984+ "ALICEDEVICE213": {
37985+ "algorithms": [
37986+ "m.olm.v1.curve25519-aes-sha2",
37987+ "m.megolm.v1.aes-sha2"
37988+ ],
37989+ "device_id": "ALICEDEVICE213",
37990+ "keys": {
37991+ "curve25519:ALICEDEVICE213": "vwSr/UwIlU3oZFIxcdELWbscrT3XAXYtJLjAhQEKR1c",
37992+ "ed25519:ALICEDEVICE213": "vK9zypvCcUDTTIgC2AUJAe93wAlGgethbby1gOwLk7E"
37993+ },
37994+ "signatures": {
37995+ "@alice_213:hs1": {
37996+ "ed25519:ALICEDEVICE213": "disQNFL60QjDjGLuPdKp5CAA6bsAPqF6bRFFmKB/Dpn2fvFBo0zsZSGEJOjeRXkITSVKNCs2xc3WGtphwnyWDQ"
37997+ }
37998+ },
37999+ "user_id": "@alice_213:hs1",
38000+ "unsigned": {}
38001+ }
38002+ },
38003+ "@alice_225:hs1": {
38004+ "ALICEDEVICE225": {
38005+ "algorithms": [
38006+ "m.olm.v1.curve25519-aes-sha2",
38007+ "m.megolm.v1.aes-sha2"
38008+ ],
38009+ "device_id": "ALICEDEVICE225",
38010+ "keys": {
38011+ "curve25519:ALICEDEVICE225": "v1vQAvJnJXLqQ/Qdi8Qa+WA7l0kiBJ3sEDLmB64X2B0",
38012+ "ed25519:ALICEDEVICE225": "SbC3rE4xpe5mUR2mb95n/APgkrWpdZrocfKeXPLMruY"
38013+ },
38014+ "signatures": {
38015+ "@alice_225:hs1": {
38016+ "ed25519:ALICEDEVICE225": "XREIn6bvDB0s65tXgc7Cq0nAGkaT6QJDSqycXUuiwtNT4V0Is+11vitwVXdQdw4diQWf4lIeR2SbAHm1KGdWDA"
38017+ }
38018+ },
38019+ "user_id": "@alice_225:hs1",
38020+ "unsigned": {}
38021+ }
38022+ },
38023+ "@alice_228:hs1": {
38024+ "ALICEDEVICE228": {
38025+ "algorithms": [
38026+ "m.olm.v1.curve25519-aes-sha2",
38027+ "m.megolm.v1.aes-sha2"
38028+ ],
38029+ "device_id": "ALICEDEVICE228",
38030+ "keys": {
38031+ "curve25519:ALICEDEVICE228": "+HYL6k1rfy0BmhobcUHXi/DCdZJmd3e448cAIZybtFE",
38032+ "ed25519:ALICEDEVICE228": "nVARswUbSLHIPaqw+7gIOiB5dwac1YxUpYNDP6rMPhI"
38033+ },
38034+ "signatures": {
38035+ "@alice_228:hs1": {
38036+ "ed25519:ALICEDEVICE228": "G6GeX7uESd//8lsooQfAniwh+q/CJ7Cy40jEhl4zLgq23UufPoSdLktCFyl7OQpTuXSOeD6L6+yumTth8pmtBg"
38037+ }
38038+ },
38039+ "user_id": "@alice_228:hs1",
38040+ "unsigned": {}
38041+ }
38042+ },
38043+ "@alice_230:hs1": {
38044+ "ALICEDEVICE230": {
38045+ "algorithms": [
38046+ "m.olm.v1.curve25519-aes-sha2",
38047+ "m.megolm.v1.aes-sha2"
38048+ ],
38049+ "device_id": "ALICEDEVICE230",
38050+ "keys": {
38051+ "curve25519:ALICEDEVICE230": "MM2WGaZ5i778MBRnxJlm5kiWePzX8g1p0u1r7ea2jXI",
38052+ "ed25519:ALICEDEVICE230": "ZwUIDnqgZxoalTkia3o0hjmjC+/cjhH3N5ZWzqsE4PI"
38053+ },
38054+ "signatures": {
38055+ "@alice_230:hs1": {
38056+ "ed25519:ALICEDEVICE230": "g6AVeB9yB0CstPxUEshu8anIhrxQyuLpZiMjKJz0xu2PRK4g9z8Mb2z5SLjaERZGe1Uu2hAs0Jno7ddCNnZTBQ"
38057+ }
38058+ },
38059+ "user_id": "@alice_230:hs1",
38060+ "unsigned": {}
38061+ }
38062+ },
38063+ "@alice_255:hs1": {
38064+ "ALICEDEVICE255": {
38065+ "algorithms": [
38066+ "m.olm.v1.curve25519-aes-sha2",
38067+ "m.megolm.v1.aes-sha2"
38068+ ],
38069+ "device_id": "ALICEDEVICE255",
38070+ "keys": {
38071+ "curve25519:ALICEDEVICE255": "hBwplJ70G208WOk9LEs6japyl/yZ9A/0waEAc09jaC4",
38072+ "ed25519:ALICEDEVICE255": "ALbbG77oW9GCw6xxeNshEnqoANbolAgYoo9ryx86388"
38073+ },
38074+ "signatures": {
38075+ "@alice_255:hs1": {
38076+ "ed25519:ALICEDEVICE255": "8lqBS3lyDfDRwa9MwDS98QEMbbpRmdVJMUpQc0HSwoLQSl8RriMBlq/+CYUa51Xcb9qC35uwHZVzHKmROhZeCg"
38077+ }
38078+ },
38079+ "user_id": "@alice_255:hs1",
38080+ "unsigned": {}
38081+ }
38082+ },
38083+ "@alice_260:hs1": {
38084+ "ALICEDEVICE260": {
38085+ "algorithms": [
38086+ "m.olm.v1.curve25519-aes-sha2",
38087+ "m.megolm.v1.aes-sha2"
38088+ ],
38089+ "device_id": "ALICEDEVICE260",
38090+ "keys": {
38091+ "curve25519:ALICEDEVICE260": "JeXNxgcYwUFl9XsTmzxXbaGdFCc+X6+kRVhOKWBukD8",
38092+ "ed25519:ALICEDEVICE260": "KqAOusxzZ2HKf7kVk9zjCfFu8yZDybg3AylnFFjqOXA"
38093+ },
38094+ "signatures": {
38095+ "@alice_260:hs1": {
38096+ "ed25519:ALICEDEVICE260": "mALisUMZjJTq+71R9pNBPQRAmE4/kVOR22YyNT74lBEO6iXb0lsAVH5u6YYIOZxy6dw04jj0aeNTDEDroydoBA"
38097+ }
38098+ },
38099+ "user_id": "@alice_260:hs1",
38100+ "unsigned": {}
38101+ }
38102+ },
38103+ "@alice_264:hs1": {
38104+ "ALICEDEVICE264": {
38105+ "algorithms": [
38106+ "m.olm.v1.curve25519-aes-sha2",
38107+ "m.megolm.v1.aes-sha2"
38108+ ],
38109+ "device_id": "ALICEDEVICE264",
38110+ "keys": {
38111+ "curve25519:ALICEDEVICE264": "KEubz0gQxKz6irXBekM2F5hm2y54KpvTuOhOimqVrFM",
38112+ "ed25519:ALICEDEVICE264": "vVLXSes43pneWNkDT5B+1bzuY/1cf4ya+zUVxUowR9A"
38113+ },
38114+ "signatures": {
38115+ "@alice_264:hs1": {
38116+ "ed25519:ALICEDEVICE264": "u1HukiIyceByKD+kquGzuL4pnEnseF1STbyEkBM8xHAfogn3TwkGhc8tTfvsVPPYyHj6zOZmyxjsEMcm98ZoCA"
38117+ }
38118+ },
38119+ "user_id": "@alice_264:hs1",
38120+ "unsigned": {}
38121+ }
38122+ },
38123+ "@alice_278:hs1": {
38124+ "ALICEDEVICE278": {
38125+ "algorithms": [
38126+ "m.olm.v1.curve25519-aes-sha2",
38127+ "m.megolm.v1.aes-sha2"
38128+ ],
38129+ "device_id": "ALICEDEVICE278",
38130+ "keys": {
38131+ "curve25519:ALICEDEVICE278": "CAyLX+sbx6gA2Yip53RD5wyTU1jPtPaGXol42BdNqEE",
38132+ "ed25519:ALICEDEVICE278": "xPGqTuWoSkcgwk8hzg7nFljm8kmtiahjWY87OogOOI4"
38133+ },
38134+ "signatures": {
38135+ "@alice_278:hs1": {
38136+ "ed25519:ALICEDEVICE278": "cion0GKHQkJklTsgTk9uYIvwDXWK4GUiTsL1U0LsHVHxPtCmzijfxVcsw84ods5rtkeZzY5fy7Ti5gOEcvhkBQ"
38137+ }
38138+ },
38139+ "user_id": "@alice_278:hs1",
38140+ "unsigned": {}
38141+ }
38142+ },
38143+ "@alice_285:hs1": {
38144+ "ALICEDEVICE285": {
38145+ "algorithms": [
38146+ "m.olm.v1.curve25519-aes-sha2",
38147+ "m.megolm.v1.aes-sha2"
38148+ ],
38149+ "device_id": "ALICEDEVICE285",
38150+ "keys": {
38151+ "curve25519:ALICEDEVICE285": "10HDw8iaB2w3PNWTJz/jWOmh4QN8XqKo6FhRRbLYNhU",
38152+ "ed25519:ALICEDEVICE285": "MbAg4+atKNb0uR/S5Xm+34+EnxbEsbDEiCFa7quZFgo"
38153+ },
38154+ "signatures": {
38155+ "@alice_285:hs1": {
38156+ "ed25519:ALICEDEVICE285": "zduYEhNMXELVxz66YSmtiwGLAoGiCsfHYjrESlxL3MpRW4LHmL/OKwuDUCokmZYXxYqi4deK826Er7m2KCmUDg"
38157+ }
38158+ },
38159+ "user_id": "@alice_285:hs1",
38160+ "unsigned": {}
38161+ }
38162+ },
38163+ "@alice_289:hs1": {
38164+ "ALICEDEVICE289": {
38165+ "algorithms": [
38166+ "m.olm.v1.curve25519-aes-sha2",
38167+ "m.megolm.v1.aes-sha2"
38168+ ],
38169+ "device_id": "ALICEDEVICE289",
38170+ "keys": {
38171+ "curve25519:ALICEDEVICE289": "oIIrw/KDjSQ7eU0UFO1ioyevynUGptT52R0ksDFSUCU",
38172+ "ed25519:ALICEDEVICE289": "Po3Hb9efH4HJ6HL8yk7N8fehQxm85Oic3uOAq/Mgb/A"
38173+ },
38174+ "signatures": {
38175+ "@alice_289:hs1": {
38176+ "ed25519:ALICEDEVICE289": "JeJg/LKFvXg+CQZOGNgbcjYNSj67HH8qnargp/zDrdW3WGBTbWzqCd/VmMwpXUhX+Nhpx+PPSXodsfoCpNAvBA"
38177+ }
38178+ },
38179+ "user_id": "@alice_289:hs1",
38180+ "unsigned": {}
38181+ }
38182+ },
38183+ "@alice_297:hs1": {
38184+ "ALICEDEVICE297": {
38185+ "algorithms": [
38186+ "m.olm.v1.curve25519-aes-sha2",
38187+ "m.megolm.v1.aes-sha2"
38188+ ],
38189+ "device_id": "ALICEDEVICE297",
38190+ "keys": {
38191+ "curve25519:ALICEDEVICE297": "eAwspjeLtAcWfGbno8n1uIZIh/6bDTWzOPM30TeGMRk",
38192+ "ed25519:ALICEDEVICE297": "+PADZVyGwnEebmj07aBUHsLqYoGcIwBmMESFv9XW4NE"
38193+ },
38194+ "signatures": {
38195+ "@alice_297:hs1": {
38196+ "ed25519:ALICEDEVICE297": "RfsXqfUiJoKPn1akw+wwSGHYgStnetaS3KB6JohuVJnf1qkuGA6mzAv/XctnL9Xe0n3KJcNoblDnTI3qnDelDQ"
38197+ }
38198+ },
38199+ "user_id": "@alice_297:hs1",
38200+ "unsigned": {}
38201+ }
38202+ },
38203+ "@alice_299:hs1": {
38204+ "ALICEDEVICE299": {
38205+ "algorithms": [
38206+ "m.olm.v1.curve25519-aes-sha2",
38207+ "m.megolm.v1.aes-sha2"
38208+ ],
38209+ "device_id": "ALICEDEVICE299",
38210+ "keys": {
38211+ "curve25519:ALICEDEVICE299": "RBlQ6wyDFTr+GZ6ARTGLRu5w5RTDDDwo+eZipRzMwAI",
38212+ "ed25519:ALICEDEVICE299": "PNpJF19hDIdnu1IUFwkTNgZBVIq/22tKQHfEQjmH4S8"
38213+ },
38214+ "signatures": {
38215+ "@alice_299:hs1": {
38216+ "ed25519:ALICEDEVICE299": "75KLZSGS+PCcD8ERzbhiqQAt0aoJiqgSs4JNOP3Ry4BZqhpChz+EYvWvvka/jNjf/yAAWKnMzei8CB0bxCZMDw"
38217+ }
38218+ },
38219+ "user_id": "@alice_299:hs1",
38220+ "unsigned": {}
38221+ }
38222+ },
38223+ "@alice_305:hs1": {
38224+ "ALICEDEVICE305": {
38225+ "algorithms": [
38226+ "m.olm.v1.curve25519-aes-sha2",
38227+ "m.megolm.v1.aes-sha2"
38228+ ],
38229+ "device_id": "ALICEDEVICE305",
38230+ "keys": {
38231+ "curve25519:ALICEDEVICE305": "KHC/SCx+yiYx4Zmo17IOhQPKjg8U7bDQvr8DM3sl5y4",
38232+ "ed25519:ALICEDEVICE305": "qCdI41QimbddtAdW62xX08IAahdyYUzz0Xmj0tWUms8"
38233+ },
38234+ "signatures": {
38235+ "@alice_305:hs1": {
38236+ "ed25519:ALICEDEVICE305": "0JMOy7YUa6H8zih8Owr+eFZdUCw9BF+jb3xiG3hwr0IrgyOu8jWRB70ZrtvejknHPod2ungKBRPPyiyDN5pNCg"
38237+ }
38238+ },
38239+ "user_id": "@alice_305:hs1",
38240+ "unsigned": {}
38241+ }
38242+ },
38243+ "@alice_314:hs1": {
38244+ "ALICEDEVICE314": {
38245+ "algorithms": [
38246+ "m.olm.v1.curve25519-aes-sha2",
38247+ "m.megolm.v1.aes-sha2"
38248+ ],
38249+ "device_id": "ALICEDEVICE314",
38250+ "keys": {
38251+ "curve25519:ALICEDEVICE314": "Ow+plLTse9EPRY8vITr6zIxYiT7Vp8xDV5JxZWOFll8",
38252+ "ed25519:ALICEDEVICE314": "UYtu7fUv3VoWCYpE9ZF1vXK5z+dPZ/4OYbY1I/ATkqI"
38253+ },
38254+ "signatures": {
38255+ "@alice_314:hs1": {
38256+ "ed25519:ALICEDEVICE314": "5l4IB+XjttZI4amABYt15Df9lOyMExhVL+ZHaWzIjA57v8pH4pmJvHd3p5KMYLfCc3FFGfOwE6srAXagFY2BDA"
38257+ }
38258+ },
38259+ "user_id": "@alice_314:hs1",
38260+ "unsigned": {}
38261+ }
38262+ },
38263+ "@alice_316:hs1": {
38264+ "ALICEDEVICE316": {
38265+ "algorithms": [
38266+ "m.olm.v1.curve25519-aes-sha2",
38267+ "m.megolm.v1.aes-sha2"
38268+ ],
38269+ "device_id": "ALICEDEVICE316",
38270+ "keys": {
38271+ "curve25519:ALICEDEVICE316": "V9SxVhEP1VPtbc1dP97zCXyv2uNp3ywckUw3rVV5AFU",
38272+ "ed25519:ALICEDEVICE316": "6yKFFhdQMoze2vuPgCu1hxtwDvkn/PBT6Ykunlog6U8"
38273+ },
38274+ "signatures": {
38275+ "@alice_316:hs1": {
38276+ "ed25519:ALICEDEVICE316": "hwbm0E+5i7H2NWD2iwxl3WjrUUPBPTjcg1EbCsaoFcRYKrHGzH5gP6UrnjBjTu73gFvfWlM/4HFn4MJ6mrrIAw"
38277+ }
38278+ },
38279+ "user_id": "@alice_316:hs1",
38280+ "unsigned": {}
38281+ }
38282+ },
38283+ "@alice_318:hs1": {
38284+ "ALICEDEVICE318": {
38285+ "algorithms": [
38286+ "m.olm.v1.curve25519-aes-sha2",
38287+ "m.megolm.v1.aes-sha2"
38288+ ],
38289+ "device_id": "ALICEDEVICE318",
38290+ "keys": {
38291+ "curve25519:ALICEDEVICE318": "4DlP3q4M1J7SXSqXXso7NCmFcUiLjWLJXz3J50IhtB0",
38292+ "ed25519:ALICEDEVICE318": "fHabL+LEBLX3t/OCFws8GxUTqJMEFkucdIUATQNDIB0"
38293+ },
38294+ "signatures": {
38295+ "@alice_318:hs1": {
38296+ "ed25519:ALICEDEVICE318": "Ux1TKm1Rje4nGGTgE6Ku70KzRfwoQ7r8rcoH6zpQryT6zr/5wkte7JpyKCwHI21rURPfvK7pAmvcomXAl5mhCQ"
38297+ }
38298+ },
38299+ "user_id": "@alice_318:hs1",
38300+ "unsigned": {}
38301+ }
38302+ },
38303+ "@alice_336:hs1": {
38304+ "ALICEDEVICE336": {
38305+ "algorithms": [
38306+ "m.olm.v1.curve25519-aes-sha2",
38307+ "m.megolm.v1.aes-sha2"
38308+ ],
38309+ "device_id": "ALICEDEVICE336",
38310+ "keys": {
38311+ "curve25519:ALICEDEVICE336": "9P1bHYOXbKqwh5aJ6aDKPycQLyBkw0WV0/4FS+kSDVg",
38312+ "ed25519:ALICEDEVICE336": "ny96zRauNzqYyjZNJEClnrOI3fgRKCP0vQRG+Par+bs"
38313+ },
38314+ "signatures": {
38315+ "@alice_336:hs1": {
38316+ "ed25519:ALICEDEVICE336": "bkExS3+rUpXqqKjCYkc5AQCDRXWrp0KEtLb6kGyXl1imWd3wTDVZcZAwoerYw0cHjptDxbFbLxkOxTzZfe6DCg"
38317+ }
38318+ },
38319+ "user_id": "@alice_336:hs1",
38320+ "unsigned": {}
38321+ }
38322+ },
38323+ "@alice_338:hs1": {
38324+ "ALICEDEVICE338": {
38325+ "algorithms": [
38326+ "m.olm.v1.curve25519-aes-sha2",
38327+ "m.megolm.v1.aes-sha2"
38328+ ],
38329+ "device_id": "ALICEDEVICE338",
38330+ "keys": {
38331+ "curve25519:ALICEDEVICE338": "tjinKrh0CvFkxMuJz5Z36ofFavgt1SeTmwEt+njEDxI",
38332+ "ed25519:ALICEDEVICE338": "GSucqmpdu5CLt7TpdfhLIuyZMDaHdqog0hs060fL2OU"
38333+ },
38334+ "signatures": {
38335+ "@alice_338:hs1": {
38336+ "ed25519:ALICEDEVICE338": "XvSi3SE6ChnS0jY7vgWa9ME6AO8SXdok3oCLU5ykidL1do+QQddK9iDm7ZLI8LtVqu/rC3fY5yMhT6eEkY62Cw"
38337+ }
38338+ },
38339+ "user_id": "@alice_338:hs1",
38340+ "unsigned": {}
38341+ }
38342+ },
38343+ "@alice_342:hs1": {
38344+ "ALICEDEVICE342": {
38345+ "algorithms": [
38346+ "m.olm.v1.curve25519-aes-sha2",
38347+ "m.megolm.v1.aes-sha2"
38348+ ],
38349+ "device_id": "ALICEDEVICE342",
38350+ "keys": {
38351+ "curve25519:ALICEDEVICE342": "5lbhbA6WaBzHdSGQ7fimTJapSlk0u/O2wNaAUZGdgTE",
38352+ "ed25519:ALICEDEVICE342": "WcXuOuqDimwSeeVsuWFQy0sq+s/RBMxG0XF7eUHjJjQ"
38353+ },
38354+ "signatures": {
38355+ "@alice_342:hs1": {
38356+ "ed25519:ALICEDEVICE342": "oNeTAfsOP2Ng4yGugpfFMrW6w9kEkRdSx7JsOwEY+pyvNrZ7M7ltSIhcEg6Z9FSni53xrD2SoUbHCnfn69YJBw"
38357+ }
38358+ },
38359+ "user_id": "@alice_342:hs1",
38360+ "unsigned": {}
38361+ }
38362+ },
38363+ "@alice_34:hs1": {
38364+ "ALICEDEVICE34": {
38365+ "algorithms": [
38366+ "m.olm.v1.curve25519-aes-sha2",
38367+ "m.megolm.v1.aes-sha2"
38368+ ],
38369+ "device_id": "ALICEDEVICE34",
38370+ "keys": {
38371+ "curve25519:ALICEDEVICE34": "CPaMWkNwtTOEAK6niHr8jOrYgJ6APOU3LbBAKEsKHAI",
38372+ "ed25519:ALICEDEVICE34": "BONIl9gw2BXcYuvPe99/KxE0G6XSS7GoYOc5YVVugIo"
38373+ },
38374+ "signatures": {
38375+ "@alice_34:hs1": {
38376+ "ed25519:ALICEDEVICE34": "uQv/1L28pmsGhC9vk6Nx4v2UglnWJo/VQHg5sfWV8YXtXSh+a3PruyxKu3vX42CBR+vzwKE9IuSzTS6txuQSDQ"
38377+ }
38378+ },
38379+ "user_id": "@alice_34:hs1",
38380+ "unsigned": {}
38381+ }
38382+ },
38383+ "@alice_350:hs1": {
38384+ "ALICEDEVICE350": {
38385+ "algorithms": [
38386+ "m.olm.v1.curve25519-aes-sha2",
38387+ "m.megolm.v1.aes-sha2"
38388+ ],
38389+ "device_id": "ALICEDEVICE350",
38390+ "keys": {
38391+ "curve25519:ALICEDEVICE350": "oupXKdEdQmA22k1biPlThSs13qciNt7K/ycvr5ly/lQ",
38392+ "ed25519:ALICEDEVICE350": "TsNe8joQd07fTjQbpqjGk7AiooSaY3V4/KDeh0t0Zkw"
38393+ },
38394+ "signatures": {
38395+ "@alice_350:hs1": {
38396+ "ed25519:ALICEDEVICE350": "oRZoUZxh8Ru1oHeAIP4+ayNgvATSHUH4/xonxrPDx28X1PYxxNzKEENWIMjf4t7VyB3BnlifYTotHpXEEpJqCQ"
38397+ }
38398+ },
38399+ "user_id": "@alice_350:hs1",
38400+ "unsigned": {}
38401+ }
38402+ },
38403+ "@alice_353:hs1": {
38404+ "ALICEDEVICE353": {
38405+ "algorithms": [
38406+ "m.olm.v1.curve25519-aes-sha2",
38407+ "m.megolm.v1.aes-sha2"
38408+ ],
38409+ "device_id": "ALICEDEVICE353",
38410+ "keys": {
38411+ "curve25519:ALICEDEVICE353": "WQwyKWCVC3GO6IweQcCvcBRPjsmhk1T5lQrMWJ40uxQ",
38412+ "ed25519:ALICEDEVICE353": "I5dLht0fLsjALWLpbrbQlycNAgEOvXdgJLr2cL9mDiY"
38413+ },
38414+ "signatures": {
38415+ "@alice_353:hs1": {
38416+ "ed25519:ALICEDEVICE353": "K8Z/XMPv2quNDhRxAMUWYegP6tkUGNT8N/fJQjYRgEHmqx867NF3Y/JQNtZE1GwyKkLt84dNH1lhf0G2wrH1AQ"
38417+ }
38418+ },
38419+ "user_id": "@alice_353:hs1",
38420+ "unsigned": {}
38421+ }
38422+ },
38423+ "@alice_380:hs1": {
38424+ "ALICEDEVICE380": {
38425+ "algorithms": [
38426+ "m.olm.v1.curve25519-aes-sha2",
38427+ "m.megolm.v1.aes-sha2"
38428+ ],
38429+ "device_id": "ALICEDEVICE380",
38430+ "keys": {
38431+ "curve25519:ALICEDEVICE380": "0gruiXwfarP2yLxrw6milfl2MjAFtFs5N0t0vnp8oiE",
38432+ "ed25519:ALICEDEVICE380": "3OcG8YVNNnY52k3v0raJkAYDCBFluDKJCvaJ8lJcIxk"
38433+ },
38434+ "signatures": {
38435+ "@alice_380:hs1": {
38436+ "ed25519:ALICEDEVICE380": "n8FGk2x7PkgqlMBlQQ/5Yd4CSeJlE1Udg1hQ5ZUtBsUHljW/+ItPtQpiw2ZHcq/dkRz+EG3KiBX27CgFftEZCA"
38437+ }
38438+ },
38439+ "user_id": "@alice_380:hs1",
38440+ "unsigned": {}
38441+ }
38442+ },
38443+ "@alice_385:hs1": {
38444+ "ALICEDEVICE385": {
38445+ "algorithms": [
38446+ "m.olm.v1.curve25519-aes-sha2",
38447+ "m.megolm.v1.aes-sha2"
38448+ ],
38449+ "device_id": "ALICEDEVICE385",
38450+ "keys": {
38451+ "curve25519:ALICEDEVICE385": "hTyLXKR+6rV6tq1n/qhOwCD/D6mWxSqFqY8QmvogUWU",
38452+ "ed25519:ALICEDEVICE385": "4xpjF5TNvn6NdQdTyyvhqJ0VtSTwIcuIjWsDwa+rrA0"
38453+ },
38454+ "signatures": {
38455+ "@alice_385:hs1": {
38456+ "ed25519:ALICEDEVICE385": "lvEPbYrfelAwrP9ugzaaz5swkna6dc7pOiu6iP+gkIOjt6uq8at52bpgw/Y4dnsZ/UGbfLJBWA06BPVqedCWCw"
38457+ }
38458+ },
38459+ "user_id": "@alice_385:hs1",
38460+ "unsigned": {}
38461+ }
38462+ },
38463+ "@alice_392:hs1": {
38464+ "ALICEDEVICE392": {
38465+ "algorithms": [
38466+ "m.olm.v1.curve25519-aes-sha2",
38467+ "m.megolm.v1.aes-sha2"
38468+ ],
38469+ "device_id": "ALICEDEVICE392",
38470+ "keys": {
38471+ "curve25519:ALICEDEVICE392": "hgP6L3s9WA4KuEWzKQhIMRuL5CV760urLIkAthcUqCI",
38472+ "ed25519:ALICEDEVICE392": "Vn7vt0WmL1zXtmkcA7TxeSSxewIBd69UMsViB8ZcNSM"
38473+ },
38474+ "signatures": {
38475+ "@alice_392:hs1": {
38476+ "ed25519:ALICEDEVICE392": "vooxJf9a/8zakewdMBDrkxugeFkwFFfhKW4e6tIXw5u2hH+0Xj1UUuqA4XWrOthwgCpU39ajcQDAKtDpybwgBg"
38477+ }
38478+ },
38479+ "user_id": "@alice_392:hs1",
38480+ "unsigned": {}
38481+ }
38482+ },
38483+ "@alice_397:hs1": {
38484+ "ALICEDEVICE397": {
38485+ "algorithms": [
38486+ "m.olm.v1.curve25519-aes-sha2",
38487+ "m.megolm.v1.aes-sha2"
38488+ ],
38489+ "device_id": "ALICEDEVICE397",
38490+ "keys": {
38491+ "curve25519:ALICEDEVICE397": "Fp90wV22Pwy0el27MubBvDUZnUrmdE9n4nZG+L4KaVY",
38492+ "ed25519:ALICEDEVICE397": "buZfy6UIz6/jb8lmL5CoSIjGJK4RmXw44mvQgKFREXw"
38493+ },
38494+ "signatures": {
38495+ "@alice_397:hs1": {
38496+ "ed25519:ALICEDEVICE397": "iasnS6ajv8d0NWjqh8SmE86V6d85aRcPM9xmNSX9+1OcZJoFYo73I1iD1f8sOXm7/lz5eECxPN48j5fT2Pb/Bg"
38497+ }
38498+ },
38499+ "user_id": "@alice_397:hs1",
38500+ "unsigned": {}
38501+ }
38502+ },
38503+ "@alice_41:hs1": {
38504+ "ALICEDEVICE41": {
38505+ "algorithms": [
38506+ "m.olm.v1.curve25519-aes-sha2",
38507+ "m.megolm.v1.aes-sha2"
38508+ ],
38509+ "device_id": "ALICEDEVICE41",
38510+ "keys": {
38511+ "curve25519:ALICEDEVICE41": "2/etlJ8yJwWMXV9Hs8qYGqvf4POJJVTc1o1zShCouB4",
38512+ "ed25519:ALICEDEVICE41": "aY0oOlp/O9Cu7HMLuCURWysHBbgwxVfc6q2ifYq6jnc"
38513+ },
38514+ "signatures": {
38515+ "@alice_41:hs1": {
38516+ "ed25519:ALICEDEVICE41": "koA5aQ/AtYB8f+8JYrg71gAefpvM31bQRYJmLXrLHtuXpo7xdDq8bfv4hp2XSJrx+8PfqsvYfxECinLW1qm8BQ"
38517+ }
38518+ },
38519+ "user_id": "@alice_41:hs1",
38520+ "unsigned": {}
38521+ }
38522+ },
38523+ "@alice_433:hs1": {
38524+ "ALICEDEVICE433": {
38525+ "algorithms": [
38526+ "m.olm.v1.curve25519-aes-sha2",
38527+ "m.megolm.v1.aes-sha2"
38528+ ],
38529+ "device_id": "ALICEDEVICE433",
38530+ "keys": {
38531+ "curve25519:ALICEDEVICE433": "A5GQxVXYol1sH6FxtfbyPDWa37yxBhZjvPqAjD+LZA0",
38532+ "ed25519:ALICEDEVICE433": "dDT0VfcfNWecFa6qVy+m/bJzg5UPjcJKTHNphBBAAY4"
38533+ },
38534+ "signatures": {
38535+ "@alice_433:hs1": {
38536+ "ed25519:ALICEDEVICE433": "UqKQGxSECvXuy/J//WEWU/DR0Nv2Il4u0Ifm0UFW6tts3JNVrw+6HwU2JXRZf5iJ0Mc1EFX/Z9pGaNwqadZOAw"
38537+ }
38538+ },
38539+ "user_id": "@alice_433:hs1",
38540+ "unsigned": {}
38541+ }
38542+ },
38543+ "@alice_434:hs1": {
38544+ "ALICEDEVICE434": {
38545+ "algorithms": [
38546+ "m.olm.v1.curve25519-aes-sha2",
38547+ "m.megolm.v1.aes-sha2"
38548+ ],
38549+ "device_id": "ALICEDEVICE434",
38550+ "keys": {
38551+ "curve25519:ALICEDEVICE434": "FbqxFU9v1JiFcgtG3tEdULlDRkM7uTb/az/Amxv5GHc",
38552+ "ed25519:ALICEDEVICE434": "Xlj4ZDYQRxjfVmjTgWkj04Jh8+HH1clrNrnLfXyimVI"
38553+ },
38554+ "signatures": {
38555+ "@alice_434:hs1": {
38556+ "ed25519:ALICEDEVICE434": "133ruaChpWXqUlFu3ovj7iHQqirK9QbuVavU7GrjU1bAA6t6A78wxGbgFCqQjxAh7xb0wgbfQKpLbTQU9ITVBA"
38557+ }
38558+ },
38559+ "user_id": "@alice_434:hs1",
38560+ "unsigned": {}
38561+ }
38562+ },
38563+ "@alice_437:hs1": {
38564+ "ALICEDEVICE437": {
38565+ "algorithms": [
38566+ "m.olm.v1.curve25519-aes-sha2",
38567+ "m.megolm.v1.aes-sha2"
38568+ ],
38569+ "device_id": "ALICEDEVICE437",
38570+ "keys": {
38571+ "curve25519:ALICEDEVICE437": "XLpavRO+bfu/utYTiTbBFJjU/LgIeVHFZcrrgmwdTkc",
38572+ "ed25519:ALICEDEVICE437": "KgXYkYR7xdNOlTPvxRbGUEbS/sP4n1ENY7unhTe19FY"
38573+ },
38574+ "signatures": {
38575+ "@alice_437:hs1": {
38576+ "ed25519:ALICEDEVICE437": "6TF1or2dXWpHtV6VRC9KPmCAlc2EK2HMeX7XHTwuyROZhMdaSKplY9381js5pNxJoPZBuaDXN9wgnnHM/QVNBg"
38577+ }
38578+ },
38579+ "user_id": "@alice_437:hs1",
38580+ "unsigned": {}
38581+ }
38582+ },
38583+ "@alice_442:hs1": {
38584+ "ALICEDEVICE442": {
38585+ "algorithms": [
38586+ "m.olm.v1.curve25519-aes-sha2",
38587+ "m.megolm.v1.aes-sha2"
38588+ ],
38589+ "device_id": "ALICEDEVICE442",
38590+ "keys": {
38591+ "curve25519:ALICEDEVICE442": "LfnuavFRWYVA3lqzdLZXNaCSlYKwZy1aGM4QrbMlHCo",
38592+ "ed25519:ALICEDEVICE442": "Au8HYnds8Rao9cMFEn0mthHc7oiEdq9pY1wippcqQhY"
38593+ },
38594+ "signatures": {
38595+ "@alice_442:hs1": {
38596+ "ed25519:ALICEDEVICE442": "gXYOTHTfP6pvBVDUvUTfciejUjFrilC5uBAaYvpSjOWaDBxst+JEa/UsG7n486El5dLCZVHXL5yDknksg3KLCw"
38597+ }
38598+ },
38599+ "user_id": "@alice_442:hs1",
38600+ "unsigned": {}
38601+ }
38602+ },
38603+ "@alice_446:hs1": {
38604+ "ALICEDEVICE446": {
38605+ "algorithms": [
38606+ "m.olm.v1.curve25519-aes-sha2",
38607+ "m.megolm.v1.aes-sha2"
38608+ ],
38609+ "device_id": "ALICEDEVICE446",
38610+ "keys": {
38611+ "curve25519:ALICEDEVICE446": "/XhAK8A4htWFsUTp8tGRN3fqqVU7erlZztevEySSPTs",
38612+ "ed25519:ALICEDEVICE446": "I3npdtDw3T60ct+TwsXFFHZBwg7Wi2O/kEUBuz//IqQ"
38613+ },
38614+ "signatures": {
38615+ "@alice_446:hs1": {
38616+ "ed25519:ALICEDEVICE446": "IdlLbCqpfhPskRXpXcDCYDYOxU+wtAPEMma+Z7h9eu8xzbTOkIO2SNJo/f2rH5VbVCZOFX0rVlwbRKyOjFeeDQ"
38617+ }
38618+ },
38619+ "user_id": "@alice_446:hs1",
38620+ "unsigned": {}
38621+ }
38622+ },
38623+ "@alice_447:hs1": {
38624+ "ALICEDEVICE447": {
38625+ "algorithms": [
38626+ "m.olm.v1.curve25519-aes-sha2",
38627+ "m.megolm.v1.aes-sha2"
38628+ ],
38629+ "device_id": "ALICEDEVICE447",
38630+ "keys": {
38631+ "curve25519:ALICEDEVICE447": "sXwrM9yY0qry3tOTmFWvLLnZ9d6eQoMUKmJRrk1FfSY",
38632+ "ed25519:ALICEDEVICE447": "Uh1SFfXnXldFi7eQTYloiTWdINqt1/JQDCAy/dze1kM"
38633+ },
38634+ "signatures": {
38635+ "@alice_447:hs1": {
38636+ "ed25519:ALICEDEVICE447": "QFE/cKaRVza85tyzPALeFEzXxze7kpkMWJpxvRT0586gte6ihruwBf2Ixc30vqpNo0NSDMsq0HtDfr8z8FRtAA"
38637+ }
38638+ },
38639+ "user_id": "@alice_447:hs1",
38640+ "unsigned": {}
38641+ }
38642+ },
38643+ "@alice_44:hs1": {
38644+ "ALICEDEVICE44": {
38645+ "algorithms": [
38646+ "m.olm.v1.curve25519-aes-sha2",
38647+ "m.megolm.v1.aes-sha2"
38648+ ],
38649+ "device_id": "ALICEDEVICE44",
38650+ "keys": {
38651+ "curve25519:ALICEDEVICE44": "1NYXKwM+Pv6uqZaWJUmp+iHziGNYL/Wa+SdI3oJ2P2A",
38652+ "ed25519:ALICEDEVICE44": "Fg+O3TKAuHVje+/ac6QzR5SYF1i1HQnQOo3PO7KFeyg"
38653+ },
38654+ "signatures": {
38655+ "@alice_44:hs1": {
38656+ "ed25519:ALICEDEVICE44": "d/SaYcWeNbjKR4ZWmD8G/AwE7Cn191oN7KSfxfCa5FPvIXvkAPUtXUNpVj4OkT3oGNpfkX/k6lgQbenQNDRMAg"
38657+ }
38658+ },
38659+ "user_id": "@alice_44:hs1",
38660+ "unsigned": {}
38661+ }
38662+ },
38663+ "@alice_455:hs1": {
38664+ "ALICEDEVICE455": {
38665+ "algorithms": [
38666+ "m.olm.v1.curve25519-aes-sha2",
38667+ "m.megolm.v1.aes-sha2"
38668+ ],
38669+ "device_id": "ALICEDEVICE455",
38670+ "keys": {
38671+ "curve25519:ALICEDEVICE455": "1HhM5m06JuL2whkLgPASNBiWg/eheEDqqOiMC2R/8gw",
38672+ "ed25519:ALICEDEVICE455": "h8IpLfZRs9bmH5jWUYDtTaZ4xvV7cG82ThqCTWObhJI"
38673+ },
38674+ "signatures": {
38675+ "@alice_455:hs1": {
38676+ "ed25519:ALICEDEVICE455": "za/BHOS/zLjWnKvmrocU6FBzTVY4Ie+nlijBPT7t/2p7MDJJASmqRmHJN7aL4yv0U3qTXro1hDNHWVgubVCnAg"
38677+ }
38678+ },
38679+ "user_id": "@alice_455:hs1",
38680+ "unsigned": {}
38681+ }
38682+ },
38683+ "@alice_463:hs1": {
38684+ "ALICEDEVICE463": {
38685+ "algorithms": [
38686+ "m.olm.v1.curve25519-aes-sha2",
38687+ "m.megolm.v1.aes-sha2"
38688+ ],
38689+ "device_id": "ALICEDEVICE463",
38690+ "keys": {
38691+ "curve25519:ALICEDEVICE463": "+No2TRAd7O86mukQ9yZfvSAzwZi2Jbo9y6hky/AErmw",
38692+ "ed25519:ALICEDEVICE463": "hlLU9RXoVDNjPwjrAF9HsjrvcqnzMu8NOsPCDB0c49E"
38693+ },
38694+ "signatures": {
38695+ "@alice_463:hs1": {
38696+ "ed25519:ALICEDEVICE463": "FwgHcr8GUcTEbOzbxocVCMgywX4pll2Lg4jHdpEFz41maCWCUPcsevPvEw6/L/lqWLOWQsSwNhfL4AnGeGM3CQ"
38697+ }
38698+ },
38699+ "user_id": "@alice_463:hs1",
38700+ "unsigned": {}
38701+ }
38702+ },
38703+ "@alice_479:hs1": {
38704+ "ALICEDEVICE479": {
38705+ "algorithms": [
38706+ "m.olm.v1.curve25519-aes-sha2",
38707+ "m.megolm.v1.aes-sha2"
38708+ ],
38709+ "device_id": "ALICEDEVICE479",
38710+ "keys": {
38711+ "curve25519:ALICEDEVICE479": "9EpPPda8xFzRWvB0iA9TTLqN9AQ25B7qPM785r1v0nI",
38712+ "ed25519:ALICEDEVICE479": "7RuTgPoGxnyRZLzeIok66JPAvQkqIW0E9Lf6eUw1q/w"
38713+ },
38714+ "signatures": {
38715+ "@alice_479:hs1": {
38716+ "ed25519:ALICEDEVICE479": "/lqAKfTtNwF7Fm/A+eOgkWPBG7OZAdYAXFMqgbweMpazVXzqVduosoqBFNlIr7AdAQrz4kuWEIRzJA6Puth/BQ"
38717+ }
38718+ },
38719+ "user_id": "@alice_479:hs1",
38720+ "unsigned": {}
38721+ }
38722+ },
38723+ "@alice_497:hs1": {
38724+ "ALICEDEVICE497": {
38725+ "algorithms": [
38726+ "m.olm.v1.curve25519-aes-sha2",
38727+ "m.megolm.v1.aes-sha2"
38728+ ],
38729+ "device_id": "ALICEDEVICE497",
38730+ "keys": {
38731+ "curve25519:ALICEDEVICE497": "vmffM8AT3RW4wRNt/GXOOgAOtGwC9ZUmGVkhL3ysbjw",
38732+ "ed25519:ALICEDEVICE497": "fz/RDes+uULgZy6oq8vktDzrnPCTKFE86s6apmwjn7s"
38733+ },
38734+ "signatures": {
38735+ "@alice_497:hs1": {
38736+ "ed25519:ALICEDEVICE497": "iGZh2Dv6+773B2EQMSd43VcZcBArZ6eosYmgqAvRkWtSl/OgydRXhY5nevD/RufnNsLhopemygT+27dQJhANCg"
38737+ }
38738+ },
38739+ "user_id": "@alice_497:hs1",
38740+ "unsigned": {}
38741+ }
38742+ },
38743+ "@alice_498:hs1": {
38744+ "ALICEDEVICE498": {
38745+ "algorithms": [
38746+ "m.olm.v1.curve25519-aes-sha2",
38747+ "m.megolm.v1.aes-sha2"
38748+ ],
38749+ "device_id": "ALICEDEVICE498",
38750+ "keys": {
38751+ "curve25519:ALICEDEVICE498": "wcENt8D6rsRt/5Hn+rh60nb7TPp5k7QE5szQPaTzVgM",
38752+ "ed25519:ALICEDEVICE498": "3eKMBxjKRiFan6NkzQQ9C6Ld06pTaE3W6SSlpO2C1yk"
38753+ },
38754+ "signatures": {
38755+ "@alice_498:hs1": {
38756+ "ed25519:ALICEDEVICE498": "lsmDU94Fgwzx6fqbCznymOrdzcCT2tfdCcRLxlLua9htGOLx5zcL49lgpdKCuAVc+3agmXDuuqwEx+xUPepFAg"
38757+ }
38758+ },
38759+ "user_id": "@alice_498:hs1",
38760+ "unsigned": {}
38761+ }
38762+ },
38763+ "@alice_500:hs1": {
38764+ "ALICEDEVICE500": {
38765+ "algorithms": [
38766+ "m.olm.v1.curve25519-aes-sha2",
38767+ "m.megolm.v1.aes-sha2"
38768+ ],
38769+ "device_id": "ALICEDEVICE500",
38770+ "keys": {
38771+ "curve25519:ALICEDEVICE500": "UBIUcq525vEZpmAZp+35z258r7LcVPMaGq5iy5+zMh4",
38772+ "ed25519:ALICEDEVICE500": "PSvbcHvDjQMe21Ye82Rn5IBo1ZY7hG0L6QMGrJlENcw"
38773+ },
38774+ "signatures": {
38775+ "@alice_500:hs1": {
38776+ "ed25519:ALICEDEVICE500": "QjhxPNpaW82UOVPHDqQ4rX0IDA7+CdlM6EAM7jJ4ldn7AB1ZhFLGt0LmhlAXrbCvAiA1XN459WBSDF5H4g2GDg"
38777+ }
38778+ },
38779+ "user_id": "@alice_500:hs1",
38780+ "unsigned": {}
38781+ }
38782+ },
38783+ "@alice_505:hs1": {
38784+ "ALICEDEVICE505": {
38785+ "algorithms": [
38786+ "m.olm.v1.curve25519-aes-sha2",
38787+ "m.megolm.v1.aes-sha2"
38788+ ],
38789+ "device_id": "ALICEDEVICE505",
38790+ "keys": {
38791+ "curve25519:ALICEDEVICE505": "dupQXFDb4HsHkwIeNNblR2tTwHFFAxzT1aVTpja5FFg",
38792+ "ed25519:ALICEDEVICE505": "KTJNK8hCa6I4yiw80iBcb5Tw3U5uwhtpRYMUGO7bTZk"
38793+ },
38794+ "signatures": {
38795+ "@alice_505:hs1": {
38796+ "ed25519:ALICEDEVICE505": "xDVZRrxYt/0+oqDbTT+KHinWccIHK9I07NowVJV47M5UkfSL2VZASXOIIfxKZRFgT4mmJS0ykpaZ5vNGycFKDA"
38797+ }
38798+ },
38799+ "user_id": "@alice_505:hs1",
38800+ "unsigned": {}
38801+ }
38802+ },
38803+ "@alice_508:hs1": {
38804+ "ALICEDEVICE508": {
38805+ "algorithms": [
38806+ "m.olm.v1.curve25519-aes-sha2",
38807+ "m.megolm.v1.aes-sha2"
38808+ ],
38809+ "device_id": "ALICEDEVICE508",
38810+ "keys": {
38811+ "curve25519:ALICEDEVICE508": "0ScQp9q2M1GFTiDE4ptHUFaUjK9LxCWzEhbGNOGUOQo",
38812+ "ed25519:ALICEDEVICE508": "GdGf+dWwU8xGMWUe3CXFu2SkIcIZ0xD8W1VMbYDUhEw"
38813+ },
38814+ "signatures": {
38815+ "@alice_508:hs1": {
38816+ "ed25519:ALICEDEVICE508": "Fzfsi7UYStyz3jGMMH9w9swM4u4d1Fhk/eV1465wc/cXnq7ReiE3RjGy2sd+GW/08RRti+Mj0xJVNvSPnZtJCg"
38817+ }
38818+ },
38819+ "user_id": "@alice_508:hs1",
38820+ "unsigned": {}
38821+ }
38822+ },
38823+ "@alice_517:hs1": {
38824+ "ALICEDEVICE517": {
38825+ "algorithms": [
38826+ "m.olm.v1.curve25519-aes-sha2",
38827+ "m.megolm.v1.aes-sha2"
38828+ ],
38829+ "device_id": "ALICEDEVICE517",
38830+ "keys": {
38831+ "curve25519:ALICEDEVICE517": "qXGkxSArRERdUhJ2BbuWBke9NIxyn2wRm7n7ocdCggo",
38832+ "ed25519:ALICEDEVICE517": "O+Bs7XZjpS43UuJxEV4YJC2tzLpmws/ASDZt2BM9Qcc"
38833+ },
38834+ "signatures": {
38835+ "@alice_517:hs1": {
38836+ "ed25519:ALICEDEVICE517": "6yORcXn3WikrQS5gt8kdddr19HChWZjOa2tNoc6nZhR6Dm15fAlC2m0tIZe7ISgDoiRZ4gIemoSplXMStirXCw"
38837+ }
38838+ },
38839+ "user_id": "@alice_517:hs1",
38840+ "unsigned": {}
38841+ }
38842+ },
38843+ "@alice_51:hs1": {
38844+ "ALICEDEVICE51": {
38845+ "algorithms": [
38846+ "m.olm.v1.curve25519-aes-sha2",
38847+ "m.megolm.v1.aes-sha2"
38848+ ],
38849+ "device_id": "ALICEDEVICE51",
38850+ "keys": {
38851+ "curve25519:ALICEDEVICE51": "fp01cqe/KUsHNLc51NfSHK0bDgqFzvKIrR5LPZboBjE",
38852+ "ed25519:ALICEDEVICE51": "bZzqIMlpMejSqjiJivL76Qtvdx40gel6MDE1g2ItbuU"
38853+ },
38854+ "signatures": {
38855+ "@alice_51:hs1": {
38856+ "ed25519:ALICEDEVICE51": "Vt47nxX/3bYYcMWYxg3+BTySjhxakg/KqnQXp5/vPS1UuZTS5lTZUd0kig1eSR5RJB7XJYEDnnlgw+XShTcpCw"
38857+ }
38858+ },
38859+ "user_id": "@alice_51:hs1",
38860+ "unsigned": {}
38861+ }
38862+ },
38863+ "@alice_525:hs1": {
38864+ "ALICEDEVICE525": {
38865+ "algorithms": [
38866+ "m.olm.v1.curve25519-aes-sha2",
38867+ "m.megolm.v1.aes-sha2"
38868+ ],
38869+ "device_id": "ALICEDEVICE525",
38870+ "keys": {
38871+ "curve25519:ALICEDEVICE525": "3LWAiD37iDL6B3u84JX9BezdzYeci/RLy9te0dzWLQ8",
38872+ "ed25519:ALICEDEVICE525": "RlB9SYiyhxdt4BacYf6FztJSdcs7NfdspB0DRMR31Y4"
38873+ },
38874+ "signatures": {
38875+ "@alice_525:hs1": {
38876+ "ed25519:ALICEDEVICE525": "n2eUE0UTdTy87tO4/jRWLbPZjOQLgIVDy/bhfKHNlH4BaTMLblGgLOzxS6JnBorUcr6O3uBMlv3n7cct/NQVCA"
38877+ }
38878+ },
38879+ "user_id": "@alice_525:hs1",
38880+ "unsigned": {}
38881+ }
38882+ },
38883+ "@alice_535:hs1": {
38884+ "ALICEDEVICE535": {
38885+ "algorithms": [
38886+ "m.olm.v1.curve25519-aes-sha2",
38887+ "m.megolm.v1.aes-sha2"
38888+ ],
38889+ "device_id": "ALICEDEVICE535",
38890+ "keys": {
38891+ "curve25519:ALICEDEVICE535": "qF6YwCHLZyUQoYBKlA2LcQVEWq4JsutLCgFEp+FMvFM",
38892+ "ed25519:ALICEDEVICE535": "P6grt+Sw2RfvEarkSeEkkp3Jopu0Rg/UCfMg3UyuCoM"
38893+ },
38894+ "signatures": {
38895+ "@alice_535:hs1": {
38896+ "ed25519:ALICEDEVICE535": "kaygbbG+JmK1UM2l8qgkXA1we0+ouWB9QtOi6LvVzgGs5lbS0JTTs3uYqeWny5RVpPB+4KstkS2G9WtOwgl0Cw"
38897+ }
38898+ },
38899+ "user_id": "@alice_535:hs1",
38900+ "unsigned": {}
38901+ }
38902+ },
38903+ "@alice_536:hs1": {
38904+ "ALICEDEVICE536": {
38905+ "algorithms": [
38906+ "m.olm.v1.curve25519-aes-sha2",
38907+ "m.megolm.v1.aes-sha2"
38908+ ],
38909+ "device_id": "ALICEDEVICE536",
38910+ "keys": {
38911+ "curve25519:ALICEDEVICE536": "H4RxnfMNfN5kPv/TE1A2DKnjy0gB/Jv7WuRqTfh7T0A",
38912+ "ed25519:ALICEDEVICE536": "Udxfq1cQcvafnZsV0iXyiwxBvl9ZLZaxquyEiuscZLo"
38913+ },
38914+ "signatures": {
38915+ "@alice_536:hs1": {
38916+ "ed25519:ALICEDEVICE536": "HEfOsnP36Jg6Lipry5M4h6IXRtfnY/bhSCKUeCmh4Ysn2DNo4xokf53VzOmPJWnvCy3TjHmZ3nJYXbKmxeGFAg"
38917+ }
38918+ },
38919+ "user_id": "@alice_536:hs1",
38920+ "unsigned": {}
38921+ }
38922+ },
38923+ "@alice_539:hs1": {
38924+ "ALICEDEVICE539": {
38925+ "algorithms": [
38926+ "m.olm.v1.curve25519-aes-sha2",
38927+ "m.megolm.v1.aes-sha2"
38928+ ],
38929+ "device_id": "ALICEDEVICE539",
38930+ "keys": {
38931+ "curve25519:ALICEDEVICE539": "8GuBz9Mw7wSjCkFnNyChghM+1K/vMEbb3P7jAQ8FsBY",
38932+ "ed25519:ALICEDEVICE539": "V49AoaV1Z4Sn21WXhqrA88PqHOyfolLYNhjbY/MhE+I"
38933+ },
38934+ "signatures": {
38935+ "@alice_539:hs1": {
38936+ "ed25519:ALICEDEVICE539": "a6Z6WFka5loqURtXbu4/dbtKqgs3fo3VyL1IR/YwNFTkaeIrj424geJJzT554MNvwp3nMs8/9/Cs4V4nFB5wBg"
38937+ }
38938+ },
38939+ "user_id": "@alice_539:hs1",
38940+ "unsigned": {}
38941+ }
38942+ },
38943+ "@alice_552:hs1": {
38944+ "ALICEDEVICE552": {
38945+ "algorithms": [
38946+ "m.olm.v1.curve25519-aes-sha2",
38947+ "m.megolm.v1.aes-sha2"
38948+ ],
38949+ "device_id": "ALICEDEVICE552",
38950+ "keys": {
38951+ "curve25519:ALICEDEVICE552": "dTMS7WmJQdhllNgVqg5JN4D5S564skxYb8X+1AmZihw",
38952+ "ed25519:ALICEDEVICE552": "WZ/j6vsGHoTl93glEr26xSR8XmNV6ugrRNyVKbm8lSc"
38953+ },
38954+ "signatures": {
38955+ "@alice_552:hs1": {
38956+ "ed25519:ALICEDEVICE552": "OQdOGggDDsLqHhqhpgWhvjQZPHmvkFkVDnBC8b9vFcftZFmEJXdG+dStVZ8YLLLi6Z6Lh77pSgz1ID6bEJvzCA"
38957+ }
38958+ },
38959+ "user_id": "@alice_552:hs1",
38960+ "unsigned": {}
38961+ }
38962+ },
38963+ "@alice_556:hs1": {
38964+ "ALICEDEVICE556": {
38965+ "algorithms": [
38966+ "m.olm.v1.curve25519-aes-sha2",
38967+ "m.megolm.v1.aes-sha2"
38968+ ],
38969+ "device_id": "ALICEDEVICE556",
38970+ "keys": {
38971+ "curve25519:ALICEDEVICE556": "f9J81kWjSA3O4pfVb52sJb7veQ3wBHVo6ORR1mvqJz4",
38972+ "ed25519:ALICEDEVICE556": "GWBm1HfY+MYOT9KVIvBc8JTynWLIc5Ckxn6yxYJojXQ"
38973+ },
38974+ "signatures": {
38975+ "@alice_556:hs1": {
38976+ "ed25519:ALICEDEVICE556": "ADOvVjgZW0NqN+CK/9k8/YngOsVi2ljCnLJgD4ixglEvPWWf6vttYuK5uf+VRaYfNuOVGqbk8gW1zaMPEJk5Ag"
38977+ }
38978+ },
38979+ "user_id": "@alice_556:hs1",
38980+ "unsigned": {}
38981+ }
38982+ },
38983+ "@alice_55:hs1": {
38984+ "ALICEDEVICE55": {
38985+ "algorithms": [
38986+ "m.olm.v1.curve25519-aes-sha2",
38987+ "m.megolm.v1.aes-sha2"
38988+ ],
38989+ "device_id": "ALICEDEVICE55",
38990+ "keys": {
38991+ "curve25519:ALICEDEVICE55": "Y6ixowsE+bzAVLRWAV+BtQksHGvNNqGw1KD/6e0LYzo",
38992+ "ed25519:ALICEDEVICE55": "N7g4041mogg2PeXL5jgmac7KPdKXakygjAmhGmgXKZk"
38993+ },
38994+ "signatures": {
38995+ "@alice_55:hs1": {
38996+ "ed25519:ALICEDEVICE55": "CeNPycITZuHa5g6okWhdy2aZFCn0t+agTGCCHkZK29cV+CnNnfSm6ivSyG+dqDc69daO729i4E1byvkcFGX+AA"
38997+ }
38998+ },
38999+ "user_id": "@alice_55:hs1",
39000+ "unsigned": {}
39001+ }
39002+ },
39003+ "@alice_566:hs1": {
39004+ "ALICEDEVICE566": {
39005+ "algorithms": [
39006+ "m.olm.v1.curve25519-aes-sha2",
39007+ "m.megolm.v1.aes-sha2"
39008+ ],
39009+ "device_id": "ALICEDEVICE566",
39010+ "keys": {
39011+ "curve25519:ALICEDEVICE566": "+1UpPhOAckU6RQsXqOB6PmQDOG9pG9vp+d8v+pltwjo",
39012+ "ed25519:ALICEDEVICE566": "vCw4lPc5gb8KFH4M80Iq+UEkt0mJX2L2T5xmIIyoXXw"
39013+ },
39014+ "signatures": {
39015+ "@alice_566:hs1": {
39016+ "ed25519:ALICEDEVICE566": "pbtEmdfN50JATdd6/Zwnj/xWnBWseEsK36+3PAU6jUufeHhgqZCn8kQAQxStsbTkg19snlN6OBQp0FAXwusRAQ"
39017+ }
39018+ },
39019+ "user_id": "@alice_566:hs1",
39020+ "unsigned": {}
39021+ }
39022+ },
39023+ "@alice_572:hs1": {
39024+ "ALICEDEVICE572": {
39025+ "algorithms": [
39026+ "m.olm.v1.curve25519-aes-sha2",
39027+ "m.megolm.v1.aes-sha2"
39028+ ],
39029+ "device_id": "ALICEDEVICE572",
39030+ "keys": {
39031+ "curve25519:ALICEDEVICE572": "XdivSKB0Fmk7j5kYD2oaPjqAMS94NFi8J9vSn2vlMTY",
39032+ "ed25519:ALICEDEVICE572": "GbTUrHc4hTDAt17uS3lKlY+gVOR/2YZICaB5yWYleoo"
39033+ },
39034+ "signatures": {
39035+ "@alice_572:hs1": {
39036+ "ed25519:ALICEDEVICE572": "LIvHi2quIkgP88L3Hx2jD+WD9rzw+CqMeXixZFUj4PdSo83Xhq5PmU38JyMU0RWuBuVMyQQp6giIjz0R1+9rCg"
39037+ }
39038+ },
39039+ "user_id": "@alice_572:hs1",
39040+ "unsigned": {}
39041+ }
39042+ },
39043+ "@alice_593:hs1": {
39044+ "ALICEDEVICE593": {
39045+ "algorithms": [
39046+ "m.olm.v1.curve25519-aes-sha2",
39047+ "m.megolm.v1.aes-sha2"
39048+ ],
39049+ "device_id": "ALICEDEVICE593",
39050+ "keys": {
39051+ "curve25519:ALICEDEVICE593": "Xxuyn5GFUnM2taLe6EUor95z8FiRsqh4oXDMsX8YqE8",
39052+ "ed25519:ALICEDEVICE593": "nZ5r6kVIfBVjtuXzLJey0YMRX7eV+HcinByvyF1I8Uc"
39053+ },
39054+ "signatures": {
39055+ "@alice_593:hs1": {
39056+ "ed25519:ALICEDEVICE593": "SJEpH21hXALQu2jqBNp1ykXO/6CUxD6rphgooCESTTi6u5AGSZvUv6SdN0vmygsKC7y1l2Bf/uSiKxBPk7hjAg"
39057+ }
39058+ },
39059+ "user_id": "@alice_593:hs1",
39060+ "unsigned": {}
39061+ }
39062+ },
39063+ "@alice_60:hs1": {
39064+ "ALICEDEVICE60": {
39065+ "algorithms": [
39066+ "m.olm.v1.curve25519-aes-sha2",
39067+ "m.megolm.v1.aes-sha2"
39068+ ],
39069+ "device_id": "ALICEDEVICE60",
39070+ "keys": {
39071+ "curve25519:ALICEDEVICE60": "VUxB/u+8Az9Z7eS3bXJRq/9FuKXPP1iXuopectH7ehM",
39072+ "ed25519:ALICEDEVICE60": "qsxN5VUpaUwijdc6GAPaq/lerqmBICGPRrkagN3jbLs"
39073+ },
39074+ "signatures": {
39075+ "@alice_60:hs1": {
39076+ "ed25519:ALICEDEVICE60": "Q3J0+gxT2FqF0mLDVLywV7OqS5xVCSXAATrbBBNIPQh29QmoW9AKYTWNbP6vLuh1mHhB0taZsgDOfGKkJPWQDg"
39077+ }
39078+ },
39079+ "user_id": "@alice_60:hs1",
39080+ "unsigned": {}
39081+ }
39082+ },
39083+ "@alice_64:hs1": {
39084+ "ALICEDEVICE64": {
39085+ "algorithms": [
39086+ "m.olm.v1.curve25519-aes-sha2",
39087+ "m.megolm.v1.aes-sha2"
39088+ ],
39089+ "device_id": "ALICEDEVICE64",
39090+ "keys": {
39091+ "curve25519:ALICEDEVICE64": "F2yziVU5OCQcnEmCbAhtctGxvvp668j9+KvsTWbsXSw",
39092+ "ed25519:ALICEDEVICE64": "fKP/KLiSx55/AZ0bfplMSs7IgDgTNFXBeXK+KXOHGng"
39093+ },
39094+ "signatures": {
39095+ "@alice_64:hs1": {
39096+ "ed25519:ALICEDEVICE64": "n/H5ikgnAkwGEt9XWLLHVZxBwxhvoYljzVyIIbIZbQbfFUeOD7ogVSzn0z//Y3IGSMizWFDpg4+E45Ey60ZGAw"
39097+ }
39098+ },
39099+ "user_id": "@alice_64:hs1",
39100+ "unsigned": {}
39101+ }
39102+ },
39103+ "@alice_652:hs1": {
39104+ "ALICEDEVICE652": {
39105+ "algorithms": [
39106+ "m.olm.v1.curve25519-aes-sha2",
39107+ "m.megolm.v1.aes-sha2"
39108+ ],
39109+ "device_id": "ALICEDEVICE652",
39110+ "keys": {
39111+ "curve25519:ALICEDEVICE652": "PvHpO/v9KwpiGA2hT7aZP0ukiqOTgjV9i9FrzDAD8wo",
39112+ "ed25519:ALICEDEVICE652": "88gdv7wZSpiRxQTLRf7qi6HKpD6MMIFJtYj7ph2SdcU"
39113+ },
39114+ "signatures": {
39115+ "@alice_652:hs1": {
39116+ "ed25519:ALICEDEVICE652": "YVFfQsiKjs8W3ag8HXowZrzdUe9aU2lI/09xEvVdhvD1Rx/+PLEwNwhH+k2OkHsnY4fSs+MBkyElc4UJpjlXBg"
39117+ }
39118+ },
39119+ "user_id": "@alice_652:hs1",
39120+ "unsigned": {}
39121+ }
39122+ },
39123+ "@alice_669:hs1": {
39124+ "ALICEDEVICE669": {
39125+ "algorithms": [
39126+ "m.olm.v1.curve25519-aes-sha2",
39127+ "m.megolm.v1.aes-sha2"
39128+ ],
39129+ "device_id": "ALICEDEVICE669",
39130+ "keys": {
39131+ "curve25519:ALICEDEVICE669": "M0Bo7FUpXIuYsiSHOPHsL5AWtFTcGmEh9GTpc2WkjGI",
39132+ "ed25519:ALICEDEVICE669": "+098JTxlXFAqwMfNoZkd777LvfGTtTmOYle1zpAga6A"
39133+ },
39134+ "signatures": {
39135+ "@alice_669:hs1": {
39136+ "ed25519:ALICEDEVICE669": "aUrgn06CUWahJSFM7GjNhmf+S+gNEQEtwQntP3vbHfWy7TwAK4byGgwYYUpheIGU4upEJNmgaelnIduVUs9AAw"
39137+ }
39138+ },
39139+ "user_id": "@alice_669:hs1",
39140+ "unsigned": {}
39141+ }
39142+ },
39143+ "@alice_674:hs1": {
39144+ "ALICEDEVICE674": {
39145+ "algorithms": [
39146+ "m.olm.v1.curve25519-aes-sha2",
39147+ "m.megolm.v1.aes-sha2"
39148+ ],
39149+ "device_id": "ALICEDEVICE674",
39150+ "keys": {
39151+ "curve25519:ALICEDEVICE674": "FS/ec5oGbgM68Gs26WFOaOzPG74sqJQGWhQVN+8iVTs",
39152+ "ed25519:ALICEDEVICE674": "/BDTEYc6fN79bNzO8Yj6lytwIo4ePvshu4+tKbmzC9g"
39153+ },
39154+ "signatures": {
39155+ "@alice_674:hs1": {
39156+ "ed25519:ALICEDEVICE674": "lrQKH2tPaaVTJxizbFjqxsMT6ET6YShg+iKkEDI4HCns0aEaqv9uwHIsUcMJtFZh7XNBfwGlG6vg4USP+ebtCw"
39157+ }
39158+ },
39159+ "user_id": "@alice_674:hs1",
39160+ "unsigned": {}
39161+ }
39162+ },
39163+ "@alice_678:hs1": {
39164+ "ALICEDEVICE678": {
39165+ "algorithms": [
39166+ "m.olm.v1.curve25519-aes-sha2",
39167+ "m.megolm.v1.aes-sha2"
39168+ ],
39169+ "device_id": "ALICEDEVICE678",
39170+ "keys": {
39171+ "curve25519:ALICEDEVICE678": "puUDFGLjdkORfB4ouvZV1PdbeC0tdW4UEpdKZCmTQjs",
39172+ "ed25519:ALICEDEVICE678": "snrQTxZuorLshHQxiZhnqk6Rt742kCi132JDOdWbVDk"
39173+ },
39174+ "signatures": {
39175+ "@alice_678:hs1": {
39176+ "ed25519:ALICEDEVICE678": "+63yxHG8Akjd/DUCuQxYYk2fj04Z9KDp079CTx3dL7D4TpZf7Bim8yX9L5YGvRnn/ATRshkY7oQg8gEMDMQQCA"
39177+ }
39178+ },
39179+ "user_id": "@alice_678:hs1",
39180+ "unsigned": {}
39181+ }
39182+ },
39183+ "@alice_680:hs1": {
39184+ "ALICEDEVICE680": {
39185+ "algorithms": [
39186+ "m.olm.v1.curve25519-aes-sha2",
39187+ "m.megolm.v1.aes-sha2"
39188+ ],
39189+ "device_id": "ALICEDEVICE680",
39190+ "keys": {
39191+ "curve25519:ALICEDEVICE680": "GJFl4iYWQ5rm8cCW0rYgSdM/Qs0RjX5M9CUQa0dxzw8",
39192+ "ed25519:ALICEDEVICE680": "Xqy0joBoydKElEVyZnx6d7QifeNYN/AdSCdcGB0zLC4"
39193+ },
39194+ "signatures": {
39195+ "@alice_680:hs1": {
39196+ "ed25519:ALICEDEVICE680": "SSnZFU3KasnEGoJtrzZ1v2m531KxXpvWsmCWry+JPYtTsZ/bGByAf83XrWojZAxK+O3GEVDdtMdCTcEj3vWsCw"
39197+ }
39198+ },
39199+ "user_id": "@alice_680:hs1",
39200+ "unsigned": {}
39201+ }
39202+ },
39203+ "@alice_696:hs1": {
39204+ "ALICEDEVICE696": {
39205+ "algorithms": [
39206+ "m.olm.v1.curve25519-aes-sha2",
39207+ "m.megolm.v1.aes-sha2"
39208+ ],
39209+ "device_id": "ALICEDEVICE696",
39210+ "keys": {
39211+ "curve25519:ALICEDEVICE696": "fJ/1FXZh1Ja6P39SUhCzW2ZgI3KcrOPq6MKyapNEPGY",
39212+ "ed25519:ALICEDEVICE696": "vA7syp1AS26+rXBEwWUwr5KnRn4Xv4mI/gfaEQMNAYE"
39213+ },
39214+ "signatures": {
39215+ "@alice_696:hs1": {
39216+ "ed25519:ALICEDEVICE696": "zcuqVmBqO+AGtpfSVTAUZcxmMquUq/r9N2DBRrgG56UOfrPCWACNiMNKEGSiNfFko+PLOXBG+esSKttLSfEzCQ"
39217+ }
39218+ },
39219+ "user_id": "@alice_696:hs1",
39220+ "unsigned": {}
39221+ }
39222+ },
39223+ "@alice_699:hs1": {
39224+ "ALICEDEVICE699": {
39225+ "algorithms": [
39226+ "m.olm.v1.curve25519-aes-sha2",
39227+ "m.megolm.v1.aes-sha2"
39228+ ],
39229+ "device_id": "ALICEDEVICE699",
39230+ "keys": {
39231+ "curve25519:ALICEDEVICE699": "/Zu5fhPQ3MlRKJ6dAEabuxnKop+HLuazoejYDU1pRVQ",
39232+ "ed25519:ALICEDEVICE699": "JA1rsGZVheP6hbSQ5+WkwnIgR1bz0EHIviWNGyi1asQ"
39233+ },
39234+ "signatures": {
39235+ "@alice_699:hs1": {
39236+ "ed25519:ALICEDEVICE699": "YnJ1j70kB4KmPiFxtgARiF8rD18q34LJt1e965zWLF/5BkwB34dgPr0dtQ4ckevu22uKN16TAaaa+tpBEpZZBA"
39237+ }
39238+ },
39239+ "user_id": "@alice_699:hs1",
39240+ "unsigned": {}
39241+ }
39242+ },
39243+ "@alice_700:hs1": {
39244+ "ALICEDEVICE700": {
39245+ "algorithms": [
39246+ "m.olm.v1.curve25519-aes-sha2",
39247+ "m.megolm.v1.aes-sha2"
39248+ ],
39249+ "device_id": "ALICEDEVICE700",
39250+ "keys": {
39251+ "curve25519:ALICEDEVICE700": "Rprg26sio+0M5cgwo/F/Y0AP/n+0pxw+LeGS2EGAWUs",
39252+ "ed25519:ALICEDEVICE700": "6XjT3cvLJ/ihhx6aw6DQMbXlXYyScNucyFNioiN6IQk"
39253+ },
39254+ "signatures": {
39255+ "@alice_700:hs1": {
39256+ "ed25519:ALICEDEVICE700": "TulSCXORK6wxYVPJmVIt4LbheDlR3R3RaPgT3u5tvJDe3dIr2Ex51wlEDlbBaTXHAcxHHu3NgRWcUc7HBQ8VDg"
39257+ }
39258+ },
39259+ "user_id": "@alice_700:hs1",
39260+ "unsigned": {}
39261+ }
39262+ },
39263+ "@alice_709:hs1": {
39264+ "ALICEDEVICE709": {
39265+ "algorithms": [
39266+ "m.olm.v1.curve25519-aes-sha2",
39267+ "m.megolm.v1.aes-sha2"
39268+ ],
39269+ "device_id": "ALICEDEVICE709",
39270+ "keys": {
39271+ "curve25519:ALICEDEVICE709": "oKiioH4j64MaYHseodyzhLQMzz5T41mKdKDNfxcvPHQ",
39272+ "ed25519:ALICEDEVICE709": "m6SlMRueY36kl/L47P+DEq4oLCUPv9gQ6ewBR47OrR4"
39273+ },
39274+ "signatures": {
39275+ "@alice_709:hs1": {
39276+ "ed25519:ALICEDEVICE709": "RFBZNAHD0h/8cajC9DOB6dcjVuclYWmc+2meEXe3AnT2uRUWr/jfspsRjbp7s9pfEkUXnJpbVxhlUtIMNXN9CQ"
39277+ }
39278+ },
39279+ "user_id": "@alice_709:hs1",
39280+ "unsigned": {}
39281+ }
39282+ },
39283+ "@alice_712:hs1": {
39284+ "ALICEDEVICE712": {
39285+ "algorithms": [
39286+ "m.olm.v1.curve25519-aes-sha2",
39287+ "m.megolm.v1.aes-sha2"
39288+ ],
39289+ "device_id": "ALICEDEVICE712",
39290+ "keys": {
39291+ "curve25519:ALICEDEVICE712": "9YnyXFv2Hzmq3AleNA4iYNh8MhLFXX/X6AjgLkyhgyg",
39292+ "ed25519:ALICEDEVICE712": "K47WEnHTmGsEAcwkp3PA9KFfrtkrq9vzg/RDvcwNN74"
39293+ },
39294+ "signatures": {
39295+ "@alice_712:hs1": {
39296+ "ed25519:ALICEDEVICE712": "TFknwq8UPUQhCFLIkuqYYCe6TPoMsN1NewaWRINx54CHzbOPOmfkDxZAbXSdfk/pjUEffLkniJm7Uc/QWZvlBg"
39297+ }
39298+ },
39299+ "user_id": "@alice_712:hs1",
39300+ "unsigned": {}
39301+ }
39302+ },
39303+ "@alice_719:hs1": {
39304+ "ALICEDEVICE719": {
39305+ "algorithms": [
39306+ "m.olm.v1.curve25519-aes-sha2",
39307+ "m.megolm.v1.aes-sha2"
39308+ ],
39309+ "device_id": "ALICEDEVICE719",
39310+ "keys": {
39311+ "curve25519:ALICEDEVICE719": "jYIDzC7tB4CjC37ARKUNAoEqvaGrc35OU8h4l//lBz8",
39312+ "ed25519:ALICEDEVICE719": "uz/9Mz9oZLm/RM81zhRjIKASLLJhXObS72BpGjg8mq8"
39313+ },
39314+ "signatures": {
39315+ "@alice_719:hs1": {
39316+ "ed25519:ALICEDEVICE719": "NDNn+GG05L9sgc1Wsdp7zUKERDNmge7R+cgB/g2NstNI8P6gmNxfthTBCkI9qimqgtzhNSx+pt6oTriz8k6PBw"
39317+ }
39318+ },
39319+ "user_id": "@alice_719:hs1",
39320+ "unsigned": {}
39321+ }
39322+ },
39323+ "@alice_723:hs1": {
39324+ "ALICEDEVICE723": {
39325+ "algorithms": [
39326+ "m.olm.v1.curve25519-aes-sha2",
39327+ "m.megolm.v1.aes-sha2"
39328+ ],
39329+ "device_id": "ALICEDEVICE723",
39330+ "keys": {
39331+ "curve25519:ALICEDEVICE723": "f9W220uxeea8I7/RUULP/mK53gYFJA/WwWr3DSzQuU4",
39332+ "ed25519:ALICEDEVICE723": "TpEWdVs44uVSTdY2h9EG71HFugPozNUHkNkNvhUG2EA"
39333+ },
39334+ "signatures": {
39335+ "@alice_723:hs1": {
39336+ "ed25519:ALICEDEVICE723": "i8UqCUPc+zbaD5NV4vW03zgZtiQ4eNayfhpZEDLoXtvBjnFWciLT38yZrbJ86ki8ZK6bvkccwsh/+AgV9HItAA"
39337+ }
39338+ },
39339+ "user_id": "@alice_723:hs1",
39340+ "unsigned": {}
39341+ }
39342+ },
39343+ "@alice_749:hs1": {
39344+ "ALICEDEVICE749": {
39345+ "algorithms": [
39346+ "m.olm.v1.curve25519-aes-sha2",
39347+ "m.megolm.v1.aes-sha2"
39348+ ],
39349+ "device_id": "ALICEDEVICE749",
39350+ "keys": {
39351+ "curve25519:ALICEDEVICE749": "Op+yCzI45PRXfUYZ3gTXd+QI+XWLrMwJVc5yyNUVLTU",
39352+ "ed25519:ALICEDEVICE749": "IzaGttaAhWCiOSzDwFWfHzoREj1MiHtV8ZlX78Gu6xY"
39353+ },
39354+ "signatures": {
39355+ "@alice_749:hs1": {
39356+ "ed25519:ALICEDEVICE749": "rQ9ZxbSrYDdCccME4OxoOswf1+HmKd2mqX1nm701sV5vHFfTq3sARECYapf+Kx8p2j4VjgZ/Sc1CjVT5J/s5AQ"
39357+ }
39358+ },
39359+ "user_id": "@alice_749:hs1",
39360+ "unsigned": {}
39361+ }
39362+ },
39363+ "@alice_751:hs1": {
39364+ "ALICEDEVICE751": {
39365+ "algorithms": [
39366+ "m.olm.v1.curve25519-aes-sha2",
39367+ "m.megolm.v1.aes-sha2"
39368+ ],
39369+ "device_id": "ALICEDEVICE751",
39370+ "keys": {
39371+ "curve25519:ALICEDEVICE751": "hc8xe5v1fz8k9ysND3/NYOulNoyY4ssXmVls7QAffj4",
39372+ "ed25519:ALICEDEVICE751": "bEtLfWXqbOahqaqTZG0kv/qo9eotPTp3HQMWlyojTMw"
39373+ },
39374+ "signatures": {
39375+ "@alice_751:hs1": {
39376+ "ed25519:ALICEDEVICE751": "AZsAtiX32jNFG96pAgm5uENaB4CqhZQWFYM5OKYbWG7b7mGVqf8fDms50+oz//0n7jCYadBAUdGEIyLZqlA1Aw"
39377+ }
39378+ },
39379+ "user_id": "@alice_751:hs1",
39380+ "unsigned": {}
39381+ }
39382+ },
39383+ "@alice_757:hs1": {
39384+ "ALICEDEVICE757": {
39385+ "algorithms": [
39386+ "m.olm.v1.curve25519-aes-sha2",
39387+ "m.megolm.v1.aes-sha2"
39388+ ],
39389+ "device_id": "ALICEDEVICE757",
39390+ "keys": {
39391+ "curve25519:ALICEDEVICE757": "qkTK4kphbbghQWKaWJiaTlew8NONatv2kAFHRgWVIzs",
39392+ "ed25519:ALICEDEVICE757": "W77jfAsVyxnCjNzavlqq6ZuzXPIiOt+ISxhSMpXUOM4"
39393+ },
39394+ "signatures": {
39395+ "@alice_757:hs1": {
39396+ "ed25519:ALICEDEVICE757": "s0zivzGYW5ehzfMOYvgIgjltB8cktdMknfDXis7ArY7gTtSqL+4cMjlBJ9VYwU3dCj+hiHmddSoiHxKIdrHjCQ"
39397+ }
39398+ },
39399+ "user_id": "@alice_757:hs1",
39400+ "unsigned": {}
39401+ }
39402+ },
39403+ "@alice_767:hs1": {
39404+ "ALICEDEVICE767": {
39405+ "algorithms": [
39406+ "m.olm.v1.curve25519-aes-sha2",
39407+ "m.megolm.v1.aes-sha2"
39408+ ],
39409+ "device_id": "ALICEDEVICE767",
39410+ "keys": {
39411+ "curve25519:ALICEDEVICE767": "HdzmTb1UBLgwrvyVA1kFv8ctwqFCLyEqA+9v27obB24",
39412+ "ed25519:ALICEDEVICE767": "+OJvRZSSjBQnbBLNFPtTDyCoRT/ssubf+7tqaoGZGaM"
39413+ },
39414+ "signatures": {
39415+ "@alice_767:hs1": {
39416+ "ed25519:ALICEDEVICE767": "4L+WhTeUlsqU5Xj8FHSkjtqPmKPSWSPkI2chqcV7MxDChwA1k0vOTp6c139CfeP9gHF6lfMD/fDsWp5iNLFaBg"
39417+ }
39418+ },
39419+ "user_id": "@alice_767:hs1",
39420+ "unsigned": {}
39421+ }
39422+ },
39423+ "@alice_770:hs1": {
39424+ "ALICEDEVICE770": {
39425+ "algorithms": [
39426+ "m.olm.v1.curve25519-aes-sha2",
39427+ "m.megolm.v1.aes-sha2"
39428+ ],
39429+ "device_id": "ALICEDEVICE770",
39430+ "keys": {
39431+ "curve25519:ALICEDEVICE770": "MlfyRW5SmnlK8pcxNwgdzDt/yWzjQnawIwzB9mmvVUc",
39432+ "ed25519:ALICEDEVICE770": "0IAjgWUcvB2AG2IhjDnhHXBVIepSSOM+ixuRnmu3Fc8"
39433+ },
39434+ "signatures": {
39435+ "@alice_770:hs1": {
39436+ "ed25519:ALICEDEVICE770": "s8oADYbOcDwuuvTnZa4MBpIKUuYnQJohcxiOt3IxBjl8xDH32UrlovIELauh7GRHGv6ot7p+9QXgm6hwFx3nAQ"
39437+ }
39438+ },
39439+ "user_id": "@alice_770:hs1",
39440+ "unsigned": {}
39441+ }
39442+ },
39443+ "@alice_772:hs1": {
39444+ "ALICEDEVICE772": {
39445+ "algorithms": [
39446+ "m.olm.v1.curve25519-aes-sha2",
39447+ "m.megolm.v1.aes-sha2"
39448+ ],
39449+ "device_id": "ALICEDEVICE772",
39450+ "keys": {
39451+ "curve25519:ALICEDEVICE772": "3A7Coi8j6itO3k7w+ODYAidxXhq2byktS/7uBq9Rs1o",
39452+ "ed25519:ALICEDEVICE772": "BwGM7qfnADteWcGQ3VMzh4vRjWCcnH2/CgH9qbAapHc"
39453+ },
39454+ "signatures": {
39455+ "@alice_772:hs1": {
39456+ "ed25519:ALICEDEVICE772": "qBSlGBu6UCjiVCSXjak8V62YoHO2hO59XvLT3h2uOF5gPjE7sNLiYNpnGRqj6FdRTw8+EZFUkwX1flACflaADw"
39457+ }
39458+ },
39459+ "user_id": "@alice_772:hs1",
39460+ "unsigned": {}
39461+ }
39462+ },
39463+ "@alice_778:hs1": {
39464+ "ALICEDEVICE778": {
39465+ "algorithms": [
39466+ "m.olm.v1.curve25519-aes-sha2",
39467+ "m.megolm.v1.aes-sha2"
39468+ ],
39469+ "device_id": "ALICEDEVICE778",
39470+ "keys": {
39471+ "curve25519:ALICEDEVICE778": "aMwBGOXZmLKPwHmqMgpN8oZIQ9w5R3X0FXUKhZoPTBY",
39472+ "ed25519:ALICEDEVICE778": "2RMeZ2Jm6oTqS3o8hKl61D/SuodNq7qm/PgyfhG4WRY"
39473+ },
39474+ "signatures": {
39475+ "@alice_778:hs1": {
39476+ "ed25519:ALICEDEVICE778": "3FWJV1Ks1AQvv5tAMZjJD+/UB2srFyKeglMxqjk0w1k9pvccRy7Z0QFbLbEuEug9D6YBqjOeMOzSKcrch6xzDA"
39477+ }
39478+ },
39479+ "user_id": "@alice_778:hs1",
39480+ "unsigned": {}
39481+ }
39482+ },
39483+ "@alice_783:hs1": {
39484+ "ALICEDEVICE783": {
39485+ "algorithms": [
39486+ "m.olm.v1.curve25519-aes-sha2",
39487+ "m.megolm.v1.aes-sha2"
39488+ ],
39489+ "device_id": "ALICEDEVICE783",
39490+ "keys": {
39491+ "curve25519:ALICEDEVICE783": "Pj6ai0yikdZSbcZv+8IvXkvR2RxDITHTCgo+nC/gviU",
39492+ "ed25519:ALICEDEVICE783": "vlgZZL5CmB56BaqqIyV9gmud2yHVgC5X3uIAUQxMH7I"
39493+ },
39494+ "signatures": {
39495+ "@alice_783:hs1": {
39496+ "ed25519:ALICEDEVICE783": "Z//6KYLudSTZxo77lZlRm1q7jEFZJ4hQWyzAkUzq9h9QyCA3Xbks1+gRYt1GTtkezJrGHjMRTbYwYvd/JNniAA"
39497+ }
39498+ },
39499+ "user_id": "@alice_783:hs1",
39500+ "unsigned": {}
39501+ }
39502+ },
39503+ "@alice_791:hs1": {
39504+ "ALICEDEVICE791": {
39505+ "algorithms": [
39506+ "m.olm.v1.curve25519-aes-sha2",
39507+ "m.megolm.v1.aes-sha2"
39508+ ],
39509+ "device_id": "ALICEDEVICE791",
39510+ "keys": {
39511+ "curve25519:ALICEDEVICE791": "VujKoYtP6cehHo33kMJd5GLw6IZ6egQEY/XAFOk/dRo",
39512+ "ed25519:ALICEDEVICE791": "6Wck9V8X3jQxuXCX+oeaiekd8Uc77KePjci3Au7rh9E"
39513+ },
39514+ "signatures": {
39515+ "@alice_791:hs1": {
39516+ "ed25519:ALICEDEVICE791": "Q5a50PCbUSufLpVQAmNyoLbEOUk8R6x3rR6LXttfLyYDJa+fguc2PzLlQ5Jyzw/dqtrvc150pNNMtY2Vuj7SAg"
39517+ }
39518+ },
39519+ "user_id": "@alice_791:hs1",
39520+ "unsigned": {}
39521+ }
39522+ },
39523+ "@alice_798:hs1": {
39524+ "ALICEDEVICE798": {
39525+ "algorithms": [
39526+ "m.olm.v1.curve25519-aes-sha2",
39527+ "m.megolm.v1.aes-sha2"
39528+ ],
39529+ "device_id": "ALICEDEVICE798",
39530+ "keys": {
39531+ "curve25519:ALICEDEVICE798": "67+EW/mD6RbbPFHcGVF8eStDesnWWa0cPhRH4N4kKy0",
39532+ "ed25519:ALICEDEVICE798": "AP7Wns6VrDoK6iiqWe2cyjSrxV8eknmTqQhVleqvjqg"
39533+ },
39534+ "signatures": {
39535+ "@alice_798:hs1": {
39536+ "ed25519:ALICEDEVICE798": "XMFLG3A21SJU6BzTCymBKzgu7pRGwQj9oubK312utJAbwtrrrOJZ7TBRMP1PhixjRSGvaTj4enlCnxDcLvuqDA"
39537+ }
39538+ },
39539+ "user_id": "@alice_798:hs1",
39540+ "unsigned": {}
39541+ }
39542+ },
39543+ "@alice_821:hs1": {
39544+ "ALICEDEVICE821": {
39545+ "algorithms": [
39546+ "m.olm.v1.curve25519-aes-sha2",
39547+ "m.megolm.v1.aes-sha2"
39548+ ],
39549+ "device_id": "ALICEDEVICE821",
39550+ "keys": {
39551+ "curve25519:ALICEDEVICE821": "Ndl/n344Jo2UHr4VNNIPEo0fHHnno5nWWvaWnZolbwM",
39552+ "ed25519:ALICEDEVICE821": "eG4NZlKuteTgnrAT/ilgRKH8K1lDF8DlCPN2ZwzvO0E"
39553+ },
39554+ "signatures": {
39555+ "@alice_821:hs1": {
39556+ "ed25519:ALICEDEVICE821": "dKogxB5KmgyJ3tUECB93VVAGbGgBeu5/+EHU2becq6phh0uuaK/twCZuU+l33oyznpW+I9DHAvDDrjBfeKkKCQ"
39557+ }
39558+ },
39559+ "user_id": "@alice_821:hs1",
39560+ "unsigned": {}
39561+ }
39562+ },
39563+ "@alice_823:hs1": {
39564+ "ALICEDEVICE823": {
39565+ "algorithms": [
39566+ "m.olm.v1.curve25519-aes-sha2",
39567+ "m.megolm.v1.aes-sha2"
39568+ ],
39569+ "device_id": "ALICEDEVICE823",
39570+ "keys": {
39571+ "curve25519:ALICEDEVICE823": "KMnoU0k2BCV7vrN7l/S7QnvRF45Kvx4fGjbG/KyvBkE",
39572+ "ed25519:ALICEDEVICE823": "C8giMD1u7HvdpmA+9epDRugCFNMMULnFv5oKokCoxv0"
39573+ },
39574+ "signatures": {
39575+ "@alice_823:hs1": {
39576+ "ed25519:ALICEDEVICE823": "B46QzvnualJ73cDHWIqCByCNBvtA6YWRPU0YCFybPG5sOGVUlPsLximwPh/a6K9/qP91UmrnRiqERmxjxqfFBg"
39577+ }
39578+ },
39579+ "user_id": "@alice_823:hs1",
39580+ "unsigned": {}
39581+ }
39582+ },
39583+ "@alice_824:hs1": {
39584+ "ALICEDEVICE824": {
39585+ "algorithms": [
39586+ "m.olm.v1.curve25519-aes-sha2",
39587+ "m.megolm.v1.aes-sha2"
39588+ ],
39589+ "device_id": "ALICEDEVICE824",
39590+ "keys": {
39591+ "curve25519:ALICEDEVICE824": "bGnf2ZGqnc9lUN2hjKal66JF5ZGVtJM7i/aQr+Nur1s",
39592+ "ed25519:ALICEDEVICE824": "5W2Ffpg+ILfRngn0Q88HNY1SbTBSGVyJ67voYCc//9Y"
39593+ },
39594+ "signatures": {
39595+ "@alice_824:hs1": {
39596+ "ed25519:ALICEDEVICE824": "nMnanEl7CGaQ32dhkzdv/+s1Xe5+1OAYz445O2Az9t8aqlSvxg8FUbrSmSD8Zj1uvyHZOQwm6u4eVeO1pP+dCw"
39597+ }
39598+ },
39599+ "user_id": "@alice_824:hs1",
39600+ "unsigned": {}
39601+ }
39602+ },
39603+ "@alice_82:hs1": {
39604+ "ALICEDEVICE82": {
39605+ "algorithms": [
39606+ "m.olm.v1.curve25519-aes-sha2",
39607+ "m.megolm.v1.aes-sha2"
39608+ ],
39609+ "device_id": "ALICEDEVICE82",
39610+ "keys": {
39611+ "curve25519:ALICEDEVICE82": "IRooQeOB6R2WisoalnOF7JPIzL27K2jnhl5IZbyOFAs",
39612+ "ed25519:ALICEDEVICE82": "a/1wqJHjYMpbMzcOH/+ApARG3VddOJgqibZgBT1u9Xs"
39613+ },
39614+ "signatures": {
39615+ "@alice_82:hs1": {
39616+ "ed25519:ALICEDEVICE82": "6NXJ4yCUOTtLABcYqxbPyyaLP7cEy3Jc7SG3CMGJkXnNN9Ozop8KkK2zf8lMkWJZRx7e6CNPwpC8oLN3EtbEBw"
39617+ }
39618+ },
39619+ "user_id": "@alice_82:hs1",
39620+ "unsigned": {}
39621+ }
39622+ },
39623+ "@alice_847:hs1": {
39624+ "ALICEDEVICE847": {
39625+ "algorithms": [
39626+ "m.olm.v1.curve25519-aes-sha2",
39627+ "m.megolm.v1.aes-sha2"
39628+ ],
39629+ "device_id": "ALICEDEVICE847",
39630+ "keys": {
39631+ "curve25519:ALICEDEVICE847": "jrueRpMn/7qFf/+cptJln/vhUJpQRZy3SaL0zvEgRQA",
39632+ "ed25519:ALICEDEVICE847": "jy6GSm/BxnDNFd4h+PvRwha+6HHk0qHrKUuW4/Hy+sU"
39633+ },
39634+ "signatures": {
39635+ "@alice_847:hs1": {
39636+ "ed25519:ALICEDEVICE847": "ltHXb+j9YSYSlFd7mOGvxppj5/Gb/L/SqzA3Ss7RjRDROG/l/I4eRcY5Ptgo8wLgFBeCNdbNxV4JfjB1wXsyAA"
39637+ }
39638+ },
39639+ "user_id": "@alice_847:hs1",
39640+ "unsigned": {}
39641+ }
39642+ },
39643+ "@alice_852:hs1": {
39644+ "ALICEDEVICE852": {
39645+ "algorithms": [
39646+ "m.olm.v1.curve25519-aes-sha2",
39647+ "m.megolm.v1.aes-sha2"
39648+ ],
39649+ "device_id": "ALICEDEVICE852",
39650+ "keys": {
39651+ "curve25519:ALICEDEVICE852": "GFnM5BPWECBoVquzuxyqhZHr6r53hBoj0CtNrY1SnDM",
39652+ "ed25519:ALICEDEVICE852": "X70n/A47nc4lEyKZazfDM8iSNzg8EsZbVBFQ/TvrlVU"
39653+ },
39654+ "signatures": {
39655+ "@alice_852:hs1": {
39656+ "ed25519:ALICEDEVICE852": "5VDJjyO5u4ia8gD/vLLSPU2VIz4cTelYBDZtE2cQ4umcYwhw7lN1uJxk5K0Og4sfz4i6KMIV5VKb0F61dtj9BA"
39657+ }
39658+ },
39659+ "user_id": "@alice_852:hs1",
39660+ "unsigned": {}
39661+ }
39662+ },
39663+ "@alice_864:hs1": {
39664+ "ALICEDEVICE864": {
39665+ "algorithms": [
39666+ "m.olm.v1.curve25519-aes-sha2",
39667+ "m.megolm.v1.aes-sha2"
39668+ ],
39669+ "device_id": "ALICEDEVICE864",
39670+ "keys": {
39671+ "curve25519:ALICEDEVICE864": "a4FQHPLmCbm6PHqi56zV2l5GaMrqt0D6KglT/2gGZlw",
39672+ "ed25519:ALICEDEVICE864": "7fq4W/RyzeFpmTEEtxz15jtME1tGYvLURT+ljvGHW5U"
39673+ },
39674+ "signatures": {
39675+ "@alice_864:hs1": {
39676+ "ed25519:ALICEDEVICE864": "iz73FLxtzIdHGOIQu4MS4jCHPqGK1p+Jzgeshr7y5cMXdouuCrSzMnIdsFKLxvB9eJ+bB0cxjTo36ZsDFjJ+Bw"
39677+ }
39678+ },
39679+ "user_id": "@alice_864:hs1",
39680+ "unsigned": {}
39681+ }
39682+ },
39683+ "@alice_865:hs1": {
39684+ "ALICEDEVICE865": {
39685+ "algorithms": [
39686+ "m.olm.v1.curve25519-aes-sha2",
39687+ "m.megolm.v1.aes-sha2"
39688+ ],
39689+ "device_id": "ALICEDEVICE865",
39690+ "keys": {
39691+ "curve25519:ALICEDEVICE865": "VSz62TcMPs53RnHZ3g5VUH2ba9HPsOqxObF6/PTwbXE",
39692+ "ed25519:ALICEDEVICE865": "QggE+vzwbovcOHVxAGR9n6Bp83+Kq4AnNcJPkPuF9Ic"
39693+ },
39694+ "signatures": {
39695+ "@alice_865:hs1": {
39696+ "ed25519:ALICEDEVICE865": "HpHt5EDre0pTZ6b5BiqSEOjmmiDwTvPjwWVK1fWrhyDu7BY84DPineiTDgMPzXAEdTHTrah41Re+2amXFRcXCw"
39697+ }
39698+ },
39699+ "user_id": "@alice_865:hs1",
39700+ "unsigned": {}
39701+ }
39702+ },
39703+ "@alice_86:hs1": {
39704+ "ALICEDEVICE86": {
39705+ "algorithms": [
39706+ "m.olm.v1.curve25519-aes-sha2",
39707+ "m.megolm.v1.aes-sha2"
39708+ ],
39709+ "device_id": "ALICEDEVICE86",
39710+ "keys": {
39711+ "curve25519:ALICEDEVICE86": "viokHwmS4sfgh1bA5o8ffTV/c0lGDj34OD7U/eUYrHI",
39712+ "ed25519:ALICEDEVICE86": "7UNSSxRo9EOuO24oNpLqix+yfym00f4av/hvT8msLL4"
39713+ },
39714+ "signatures": {
39715+ "@alice_86:hs1": {
39716+ "ed25519:ALICEDEVICE86": "wb44d0DhZ8Rn/9oiNf69hJPFrqAtox7Xr73BQbOwxNAYa9VulyTkpvQt1i+Qfmn9jnWh5shxWo03MXBNz8WtDA"
39717+ }
39718+ },
39719+ "user_id": "@alice_86:hs1",
39720+ "unsigned": {}
39721+ }
39722+ },
39723+ "@alice_886:hs1": {
39724+ "ALICEDEVICE886": {
39725+ "algorithms": [
39726+ "m.olm.v1.curve25519-aes-sha2",
39727+ "m.megolm.v1.aes-sha2"
39728+ ],
39729+ "device_id": "ALICEDEVICE886",
39730+ "keys": {
39731+ "curve25519:ALICEDEVICE886": "tH15Fg/k5NLsFoy6Poua+doGgMDv+H0qIdfwNZDffk0",
39732+ "ed25519:ALICEDEVICE886": "1S2d+4mNn+R9meeIFXL1rEI//RywMcpSf/7R9erlSbg"
39733+ },
39734+ "signatures": {
39735+ "@alice_886:hs1": {
39736+ "ed25519:ALICEDEVICE886": "Jh6vws5sRfIERUXORarokZqgJPqQ6vp8POSdbxHWWA6njbQCwgoobE/xukYFZ39hVlNME8JOJhj2FJOt2a97Dw"
39737+ }
39738+ },
39739+ "user_id": "@alice_886:hs1",
39740+ "unsigned": {}
39741+ }
39742+ },
39743+ "@alice_88:hs1": {
39744+ "ALICEDEVICE88": {
39745+ "algorithms": [
39746+ "m.olm.v1.curve25519-aes-sha2",
39747+ "m.megolm.v1.aes-sha2"
39748+ ],
39749+ "device_id": "ALICEDEVICE88",
39750+ "keys": {
39751+ "curve25519:ALICEDEVICE88": "XQROTMFRmt99xR75h4hKbnHVO3ylXgBMNZNmhE8aBgQ",
39752+ "ed25519:ALICEDEVICE88": "j0wAPzary0YNnfdTeeTXGIQ2WAs/yU6tJhds0rv6pEU"
39753+ },
39754+ "signatures": {
39755+ "@alice_88:hs1": {
39756+ "ed25519:ALICEDEVICE88": "RnwoCe96WwBOrDS6//H0nNODYb5PGm39KUcLtowUrY7khU7VYgOJk/cP2ig9AYHAdCJyTrmTgmANb7h8gOITBQ"
39757+ }
39758+ },
39759+ "user_id": "@alice_88:hs1",
39760+ "unsigned": {}
39761+ }
39762+ },
39763+ "@alice_905:hs1": {
39764+ "ALICEDEVICE905": {
39765+ "algorithms": [
39766+ "m.olm.v1.curve25519-aes-sha2",
39767+ "m.megolm.v1.aes-sha2"
39768+ ],
39769+ "device_id": "ALICEDEVICE905",
39770+ "keys": {
39771+ "curve25519:ALICEDEVICE905": "ze34OQak9EZikhKwTkbVYGpEvQpyKZgMLZx97WvXAmY",
39772+ "ed25519:ALICEDEVICE905": "IIecfXwqjdf9h99UrHOvd5KfZzRNZ1Pi3yViIyssQM0"
39773+ },
39774+ "signatures": {
39775+ "@alice_905:hs1": {
39776+ "ed25519:ALICEDEVICE905": "Gthuxj5eoVArxEapZVdIKxfmbyr0ONhUWGuFuAHF5KDhXy+FvhpjcF8ZqBu+puj4C4Gw2HMadwLE5sRBlcoeAg"
39777+ }
39778+ },
39779+ "user_id": "@alice_905:hs1",
39780+ "unsigned": {}
39781+ }
39782+ },
39783+ "@alice_906:hs1": {
39784+ "ALICEDEVICE906": {
39785+ "algorithms": [
39786+ "m.olm.v1.curve25519-aes-sha2",
39787+ "m.megolm.v1.aes-sha2"
39788+ ],
39789+ "device_id": "ALICEDEVICE906",
39790+ "keys": {
39791+ "curve25519:ALICEDEVICE906": "E4ghSL+5TDSnNE46sxfiJpw+X4x+3ysLq95z17DrLEE",
39792+ "ed25519:ALICEDEVICE906": "SmFe0o9eyVtVjRYfsBazfBD8woyEszh3sQRjoz2OEw4"
39793+ },
39794+ "signatures": {
39795+ "@alice_906:hs1": {
39796+ "ed25519:ALICEDEVICE906": "ewqjeaa5alu6A+tLd/W8gExoWFtXbJ2R9bhDsS0vynRa6ybtEUdM0KYVjPrUgyPAHOH3U2xOIVWlzPYWUFokDA"
39797+ }
39798+ },
39799+ "user_id": "@alice_906:hs1",
39800+ "unsigned": {}
39801+ }
39802+ },
39803+ "@alice_921:hs1": {
39804+ "ALICEDEVICE921": {
39805+ "algorithms": [
39806+ "m.olm.v1.curve25519-aes-sha2",
39807+ "m.megolm.v1.aes-sha2"
39808+ ],
39809+ "device_id": "ALICEDEVICE921",
39810+ "keys": {
39811+ "curve25519:ALICEDEVICE921": "WuOd4lX20tEkR6j1UAawWSGCawsqvh1FaF9BiTF5eyI",
39812+ "ed25519:ALICEDEVICE921": "L4SezbCMBd51qHl01fLJCBlZE4pBN0XVu4e1Hbq5lXg"
39813+ },
39814+ "signatures": {
39815+ "@alice_921:hs1": {
39816+ "ed25519:ALICEDEVICE921": "9swi+ZZwrDPHscemo5KxrE6LwUqTCLjrbgrhc2ziA9ZgX7Rie723x9mO7VQlfIua4OupIBtCBCKfEQuikr9/Bg"
39817+ }
39818+ },
39819+ "user_id": "@alice_921:hs1",
39820+ "unsigned": {}
39821+ }
39822+ },
39823+ "@alice_923:hs1": {
39824+ "ALICEDEVICE923": {
39825+ "algorithms": [
39826+ "m.olm.v1.curve25519-aes-sha2",
39827+ "m.megolm.v1.aes-sha2"
39828+ ],
39829+ "device_id": "ALICEDEVICE923",
39830+ "keys": {
39831+ "curve25519:ALICEDEVICE923": "Q9pUU0HQxN+LC13bUpVbSwSAB02lCQKoFC3Bgn06724",
39832+ "ed25519:ALICEDEVICE923": "FDZ6CTQ1u1kJQYLeFHU5MW31QYuhTRPfXJNMFUrwGwc"
39833+ },
39834+ "signatures": {
39835+ "@alice_923:hs1": {
39836+ "ed25519:ALICEDEVICE923": "pmsNLuqQYizcXTVfVKu/XCZVJw5ARccIkNQ4IMSMQcri/ubfAbNgAEznOZMlXQSIPX2OChZk0KgitXGHNSHQCQ"
39837+ }
39838+ },
39839+ "user_id": "@alice_923:hs1",
39840+ "unsigned": {}
39841+ }
39842+ },
39843+ "@alice_92:hs1": {
39844+ "ALICEDEVICE92": {
39845+ "algorithms": [
39846+ "m.olm.v1.curve25519-aes-sha2",
39847+ "m.megolm.v1.aes-sha2"
39848+ ],
39849+ "device_id": "ALICEDEVICE92",
39850+ "keys": {
39851+ "curve25519:ALICEDEVICE92": "hR44aMSh6JajiKKf7MijhufMhR28hfnONdZKsv25/TY",
39852+ "ed25519:ALICEDEVICE92": "DP35agDDp2fSMWegmtcTQ2+HOLoesrkp66Oa6GcJH+I"
39853+ },
39854+ "signatures": {
39855+ "@alice_92:hs1": {
39856+ "ed25519:ALICEDEVICE92": "dZbPDuLDepCqU1cwbMVA6iLFfy8aiwXUy6j8NbtiqC1M7FSpQn0iaw4+s9sjx6vZw9TcqysBuZctduHQFfzfCQ"
39857+ }
39858+ },
39859+ "user_id": "@alice_92:hs1",
39860+ "unsigned": {}
39861+ }
39862+ },
39863+ "@alice_936:hs1": {
39864+ "ALICEDEVICE936": {
39865+ "algorithms": [
39866+ "m.olm.v1.curve25519-aes-sha2",
39867+ "m.megolm.v1.aes-sha2"
39868+ ],
39869+ "device_id": "ALICEDEVICE936",
39870+ "keys": {
39871+ "curve25519:ALICEDEVICE936": "DbS2KigGRFOwKCtGUAYc3/p8L1+McYX+KnbJ73tjMGs",
39872+ "ed25519:ALICEDEVICE936": "rRyR3K9XEZsDVZzyymvBLGxlYdbNe2tS0d+0uLmrG9s"
39873+ },
39874+ "signatures": {
39875+ "@alice_936:hs1": {
39876+ "ed25519:ALICEDEVICE936": "/tcNLAJWjssEW4FFAk62VcZJjZazULs8+QFdMLtgz7swiuTkC/50VD2FUBkKoxeXKVLh0cLyd0jBZkV0ypuDBg"
39877+ }
39878+ },
39879+ "user_id": "@alice_936:hs1",
39880+ "unsigned": {}
39881+ }
39882+ },
39883+ "@alice_939:hs1": {
39884+ "ALICEDEVICE939": {
39885+ "algorithms": [
39886+ "m.olm.v1.curve25519-aes-sha2",
39887+ "m.megolm.v1.aes-sha2"
39888+ ],
39889+ "device_id": "ALICEDEVICE939",
39890+ "keys": {
39891+ "curve25519:ALICEDEVICE939": "V7wzGkNBs/nFhiMEVOsFE5BWu6xAHGcvI8MYHCpwGXI",
39892+ "ed25519:ALICEDEVICE939": "b14F6FaamFLmO0yd/0cAxiDh96ml1myjEx07/MVZcxQ"
39893+ },
39894+ "signatures": {
39895+ "@alice_939:hs1": {
39896+ "ed25519:ALICEDEVICE939": "sPQx9lx41JUwE7giZgxot5eWEI1QzZHBD82JML43KmrPcBkH3Gc2yhCg4f5tv3nV1V35xf4IV0ippB7gnjzSCA"
39897+ }
39898+ },
39899+ "user_id": "@alice_939:hs1",
39900+ "unsigned": {}
39901+ }
39902+ },
39903+ "@alice_93:hs1": {
39904+ "ALICEDEVICE93": {
39905+ "algorithms": [
39906+ "m.olm.v1.curve25519-aes-sha2",
39907+ "m.megolm.v1.aes-sha2"
39908+ ],
39909+ "device_id": "ALICEDEVICE93",
39910+ "keys": {
39911+ "curve25519:ALICEDEVICE93": "hjg21jCZYzXfXIJ4nHlqSy11TBIXvtfFRqZNGeJzbgQ",
39912+ "ed25519:ALICEDEVICE93": "4SHG3Z0qBDK3SReYcF5ttH7AMnIefI5tJewbmsJU42U"
39913+ },
39914+ "signatures": {
39915+ "@alice_93:hs1": {
39916+ "ed25519:ALICEDEVICE93": "Txzzq41l73PepT5kTtrnBO71I09/SOAOG1V25URihTNQUJPQSnfdFbBg2OFREgLbw1OfQQJpxfoYLb9pFX+wCg"
39917+ }
39918+ },
39919+ "user_id": "@alice_93:hs1",
39920+ "unsigned": {}
39921+ }
39922+ },
39923+ "@alice_940:hs1": {
39924+ "ALICEDEVICE940": {
39925+ "algorithms": [
39926+ "m.olm.v1.curve25519-aes-sha2",
39927+ "m.megolm.v1.aes-sha2"
39928+ ],
39929+ "device_id": "ALICEDEVICE940",
39930+ "keys": {
39931+ "curve25519:ALICEDEVICE940": "m+vMyG7mS+oLZYpvqMbA0hI1YFIDHr0y/TuHphoE6yU",
39932+ "ed25519:ALICEDEVICE940": "S40uUYFql3zPSvrdNwstE8Yd0QGlbEXxzOK4UP8aglo"
39933+ },
39934+ "signatures": {
39935+ "@alice_940:hs1": {
39936+ "ed25519:ALICEDEVICE940": "3WCOBFoSvPN400rhqRH1qWbmwayKd5BHYuBY8H4///vdO9Usow+cOMcLPD++H1QbqusRNYSojdfZzkB1NU/0DQ"
39937+ }
39938+ },
39939+ "user_id": "@alice_940:hs1",
39940+ "unsigned": {}
39941+ }
39942+ },
39943+ "@alice_951:hs1": {
39944+ "ALICEDEVICE951": {
39945+ "algorithms": [
39946+ "m.olm.v1.curve25519-aes-sha2",
39947+ "m.megolm.v1.aes-sha2"
39948+ ],
39949+ "device_id": "ALICEDEVICE951",
39950+ "keys": {
39951+ "curve25519:ALICEDEVICE951": "NFz9vZZAvipSTUrw72lxgJgVEigj5cmwHf6XH5BOLyU",
39952+ "ed25519:ALICEDEVICE951": "IvsXOx5IaHLuyKNqntPgd762ZlcFu/Xr2SdwNTSluhY"
39953+ },
39954+ "signatures": {
39955+ "@alice_951:hs1": {
39956+ "ed25519:ALICEDEVICE951": "J+kJ5CJD6Tf+ndaVB6szWTcO76RF00hisrK9JJrnl+5QJEq/mo984TTmQUOjcnh1QsGR6mPEERUtdJMTJr6IBA"
39957+ }
39958+ },
39959+ "user_id": "@alice_951:hs1",
39960+ "unsigned": {}
39961+ }
39962+ },
39963+ "@alice_956:hs1": {
39964+ "ALICEDEVICE956": {
39965+ "algorithms": [
39966+ "m.olm.v1.curve25519-aes-sha2",
39967+ "m.megolm.v1.aes-sha2"
39968+ ],
39969+ "device_id": "ALICEDEVICE956",
39970+ "keys": {
39971+ "curve25519:ALICEDEVICE956": "D/xWwi+KdbpKAcfOb1Cc5DPHgcUOlcWTwvO7N3KG7zA",
39972+ "ed25519:ALICEDEVICE956": "iJw3/sl9wVEISB1IPBRdm3q3IcJeRjXk9ucUS4xcc5U"
39973+ },
39974+ "signatures": {
39975+ "@alice_956:hs1": {
39976+ "ed25519:ALICEDEVICE956": "WXuQjywc1q7IJ2sBzbbd6+X9rnlBTTSsOaas+QBo7V4BKDx0tUwVrRepy/7h0p7PYLBL/u+Y8gUVYZwtQPmXCw"
39977+ }
39978+ },
39979+ "user_id": "@alice_956:hs1",
39980+ "unsigned": {}
39981+ }
39982+ },
39983+ "@alice_961:hs1": {
39984+ "ALICEDEVICE961": {
39985+ "algorithms": [
39986+ "m.olm.v1.curve25519-aes-sha2",
39987+ "m.megolm.v1.aes-sha2"
39988+ ],
39989+ "device_id": "ALICEDEVICE961",
39990+ "keys": {
39991+ "curve25519:ALICEDEVICE961": "XyXymxUju51s3XXsX5Hu4NDf/0N6CJ3KK/tWmxSX8EE",
39992+ "ed25519:ALICEDEVICE961": "auB/CXds6fU4PNYfTyPp/kYCJ9pOI1lMbaNKgLmvZV8"
39993+ },
39994+ "signatures": {
39995+ "@alice_961:hs1": {
39996+ "ed25519:ALICEDEVICE961": "Pp+JSwo4aI4nYJM9xIdFJrPsrBFA3DuT412Yq2T5Jojozt15U8xPFtNNSq5auxrIveMnkcJW/QANMKXjYk/hDA"
39997+ }
39998+ },
39999+ "user_id": "@alice_961:hs1",
40000+ "unsigned": {}
40001+ }
40002+ },
40003+ "@alice_990:hs1": {
40004+ "ALICEDEVICE990": {
40005+ "algorithms": [
40006+ "m.olm.v1.curve25519-aes-sha2",
40007+ "m.megolm.v1.aes-sha2"
40008+ ],
40009+ "device_id": "ALICEDEVICE990",
40010+ "keys": {
40011+ "curve25519:ALICEDEVICE990": "5ux0XUUhZ+/BW+YFVrXS22juTtJXfUdYoRu4/vmTN1M",
40012+ "ed25519:ALICEDEVICE990": "eBwZXDVr14fXA8stiN/b68TYXWWcm+i8tKV/Ec/REHs"
40013+ },
40014+ "signatures": {
40015+ "@alice_990:hs1": {
40016+ "ed25519:ALICEDEVICE990": "GPnH3huHe9kPAlXB29IGvkx8QeLYi97dGUt61nFyBbjJfERd0ka9L1ZXFKWbK71RW7W80PPVpg5KIWhcnu7PCQ"
40017+ }
40018+ },
40019+ "user_id": "@alice_990:hs1",
40020+ "unsigned": {}
40021+ }
40022+ },
40023+ "@alice_993:hs1": {
40024+ "ALICEDEVICE993": {
40025+ "algorithms": [
40026+ "m.olm.v1.curve25519-aes-sha2",
40027+ "m.megolm.v1.aes-sha2"
40028+ ],
40029+ "device_id": "ALICEDEVICE993",
40030+ "keys": {
40031+ "curve25519:ALICEDEVICE993": "vIFLqaqe+YQQoh7mFG9UIW0cVU8O5Gj+kqs+Vqtvgjc",
40032+ "ed25519:ALICEDEVICE993": "10rjU48ubyRupcxOAJ1XOr8XgIAS4tqSbdfeaK9xkCk"
40033+ },
40034+ "signatures": {
40035+ "@alice_993:hs1": {
40036+ "ed25519:ALICEDEVICE993": "ASJHqf+LXapTstDRDpT2YlOPZ9zMZlkBRxB9kBH84vm38M/wH+XZAXUj7QRk94uFCp4PjNBJ7aPiSHgesAX7AA"
40037+ }
40038+ },
40039+ "user_id": "@alice_993:hs1",
40040+ "unsigned": {}
40041+ }
40042+ },
40043+ "@alice_996:hs1": {
40044+ "ALICEDEVICE996": {
40045+ "algorithms": [
40046+ "m.olm.v1.curve25519-aes-sha2",
40047+ "m.megolm.v1.aes-sha2"
40048+ ],
40049+ "device_id": "ALICEDEVICE996",
40050+ "keys": {
40051+ "curve25519:ALICEDEVICE996": "LFQJ4cPrSa+3RlRw0CnSGU1b3olDhwRmXHvRaQA8zRs",
40052+ "ed25519:ALICEDEVICE996": "F02/MdaOAKprbSzfXwS1xo2BtqMajL2Tqhsvp0eF4PA"
40053+ },
40054+ "signatures": {
40055+ "@alice_996:hs1": {
40056+ "ed25519:ALICEDEVICE996": "stzPmXhjtOC/4cuFe14IkMgwBjou6qneeP2iVyl5s+gLUBuUEp5HJMfZ+n5xNyZMlHXWX+POBYZSzCnw8n62CA"
40057+ }
40058+ },
40059+ "user_id": "@alice_996:hs1",
40060+ "unsigned": {}
40061+ }
40062+ },
40063+ "@bob:hs1": {}
40064+ },
40065+ "failures": {},
40066+ "master_keys": {},
40067+ "self_signing_keys": {},
40068+ "user_signing_keys": {}
40069+}
Added file: benchmarks/benches/event_cache.rs+361 additions
@@ -0,0 +1,361 @@
1+use std::{pin::Pin, sync::Arc};
2+
3+use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
4+use matrix_sdk::{
5+ RoomInfo, RoomState, SqliteEventCacheStore, StateStore,
6+ cross_process_lock::CrossProcessLockConfig,
7+ store::StoreConfig,
8+ sync::{JoinedRoomUpdate, RoomUpdates},
9+ test_utils::client::MockClientBuilder,
10+};
11+use matrix_sdk_base::event_cache::store::{DynEventCacheStore, IntoEventCacheStore, MemoryStore};
12+use matrix_sdk_test::{ALICE, base64_sha256_hash, event_factory::EventFactory};
13+use ruma::{
14+ OwnedRoomId, RoomId,
15+ events::{relation::RelationType, room::message::RoomMessageEventContentWithoutRelation},
16+ room_id,
17+};
18+use tempfile::tempdir;
19+use tokio::runtime::Builder;
20+
21+type StoreBuilder = Box<dyn Fn() -> Pin<Box<dyn Future<Output = Arc<DynEventCacheStore>>>>>;
22+
23+fn handle_room_updates(c: &mut Criterion) {
24+ // Create a new asynchronous runtime.
25+ let runtime = Builder::new_multi_thread()
26+ .enable_time()
27+ .enable_io()
28+ .build()
29+ .expect("Failed to create an asynchronous runtime");
30+
31+ let mut group = c.benchmark_group("Event cache room updates");
32+ group.sample_size(10);
33+
34+ const NUM_EVENTS: usize = 1000;
35+
36+ for num_rooms in [1, 10, 100] {
37+ // Add some joined rooms, each with NUM_EVENTS in it, to the sync response.
38+ let mut room_updates = RoomUpdates::default();
39+
40+ let mut changes = matrix_sdk::StateChanges::default();
41+
42+ for i in 0..num_rooms {
43+ // Synapse's room IDs for rooms v1 to v11 have an 18 characters localpart.
44+ let raw_room_id = format!("!firstbatchroom{i:04}:example.com");
45+
46+ let room_id = if i % 10 == 9 {
47+ // Make 1 in 10 rooms use a room v12 ID, which is a base64 hash similar to an
48+ // event ID.
49+ RoomId::new_v2(&base64_sha256_hash(raw_room_id.as_bytes())).unwrap()
50+ } else {
51+ OwnedRoomId::try_from(raw_room_id).unwrap()
52+ };
53+ let event_factory = EventFactory::new().room(&room_id).sender(&ALICE);
54+
55+ let mut joined_room_update = JoinedRoomUpdate::default();
56+ for j in 0..NUM_EVENTS {
57+ let event = event_factory.text_msg(format!("Message {j}")).into();
58+ joined_room_update.timeline.events.push(event);
59+ }
60+ room_updates.joined.insert(room_id.clone(), joined_room_update);
61+
62+ changes.add_room(RoomInfo::new(&room_id, RoomState::Joined));
63+ }
64+
65+ // Declare new stores for this set of events.
66+ let temp_dir = Arc::new(tempdir().unwrap());
67+
68+ let store_builders: Vec<(_, StoreBuilder)> = vec![
69+ (
70+ "memory",
71+ Box::new(|| Box::pin(async { MemoryStore::default().into_event_cache_store() })),
72+ ),
73+ (
74+ "SQLite",
75+ Box::new(move || {
76+ let temp_dir = temp_dir.clone();
77+ Box::pin(async move {
78+ // Remove all the files in the temp_dir, to reset the event cache state.
79+ for entry in temp_dir.path().read_dir().unwrap() {
80+ let entry = entry.unwrap();
81+ let path = entry.path();
82+ if path.is_dir() {
83+ // If it's a directory, remove it recursively.
84+ std::fs::remove_dir_all(path).unwrap();
85+ } else {
86+ std::fs::remove_file(path).unwrap();
87+ }
88+ }
89+
90+ // Recreate a new store.
91+ SqliteEventCacheStore::open(temp_dir.path().join("bench"), None)
92+ .await
93+ .unwrap()
94+ .into_event_cache_store()
95+ })
96+ }),
97+ ),
98+ ];
99+
100+ let state_store = runtime.block_on(async {
101+ let state_store = matrix_sdk::MemoryStore::new();
102+ state_store.save_changes(&changes).await.unwrap();
103+ Arc::new(state_store)
104+ });
105+
106+ for (store_name, store_builder) in &store_builders {
107+ let client = runtime.block_on(async {
108+ let event_cache_store = store_builder().await;
109+
110+ let client = MockClientBuilder::new(None)
111+ .on_builder(|builder| {
112+ builder.store_config(
113+ StoreConfig::new(CrossProcessLockConfig::multi_process(
114+ "cross-process-store-locks-holder-name",
115+ ))
116+ .state_store(state_store.clone())
117+ .event_cache_store(event_cache_store.clone()),
118+ )
119+ })
120+ .build()
121+ .await;
122+
123+ client.event_cache().subscribe().unwrap();
124+
125+ client
126+ });
127+
128+ // Define a state store with all rooms known in it.
129+ // Define the throughput.
130+ group.throughput(Throughput::Elements(num_rooms));
131+
132+ // Bench the handling of room updates.
133+ group.bench_function(
134+ BenchmarkId::new(
135+ format!("Event cache room updates[{store_name}]"),
136+ format!("room count: {num_rooms}"),
137+ ),
138+ |bencher| {
139+ bencher.to_async(&runtime).iter(
140+ // The routine itself.
141+ || {
142+ let room_updates = room_updates.clone();
143+ let client = client.clone();
144+
145+ async move {
146+ client.event_cache().clear_all_rooms().await.unwrap();
147+
148+ client
149+ .event_cache()
150+ .handle_room_updates(room_updates.clone())
151+ .await
152+ .unwrap();
153+ }
154+ },
155+ )
156+ },
157+ );
158+ }
159+ }
160+
161+ group.finish()
162+}
163+
164+fn find_event_relations(c: &mut Criterion) {
165+ // Number of other events to saturate the DB, but that will not be affected by
166+ // the benchmark. A small multiple of this number will be added.
167+ // When running locally, run with more events than in Codespeed CI.
168+ #[cfg(feature = "codspeed")]
169+ const NUM_OTHER_EVENTS: usize = 100;
170+ #[cfg(not(feature = "codspeed"))]
171+ const NUM_OTHER_EVENTS: usize = 1000;
172+
173+ // Create a new asynchronous runtime.
174+ let runtime = Builder::new_multi_thread()
175+ .enable_time()
176+ .enable_io()
177+ .build()
178+ .expect("Failed to create an asynchronous runtime");
179+
180+ let mut group = c.benchmark_group("Event cache room updates");
181+ group.sample_size(10);
182+
183+ // Room v1-v11 ID.
184+ let room_id = room_id!("!initialtestingroom:ben.ch");
185+ // Room v12 ID.
186+ let other_room_id = room_id!("!ICMDdumUm6RRX_eWYY2wMb2w0CY0Z_5OvlY2gBR6ELc");
187+
188+ // Make the state store aware of the room, so that `client.get_room()` works
189+ // with it.
190+ let mut changes = matrix_sdk::StateChanges::default();
191+ changes.add_room(RoomInfo::new(room_id, RoomState::Joined));
192+ changes.add_room(RoomInfo::new(other_room_id, RoomState::Joined));
193+ let state_store = runtime.block_on(async {
194+ let state_store = matrix_sdk::MemoryStore::new();
195+ state_store.save_changes(&changes).await.unwrap();
196+ Arc::new(state_store)
197+ });
198+
199+ for num_related_events in [10, 100, 1000] {
200+ // Prefill the event cache store with one event and N related events.
201+ let mut room_updates = RoomUpdates::default();
202+
203+ let event_factory = EventFactory::new().room(room_id).sender(&ALICE);
204+
205+ let mut joined_room_update = JoinedRoomUpdate::default();
206+
207+ // Add the target event.
208+ let target_event = event_factory.text_msg("hello world").into_event();
209+ let target_event_id =
210+ { &target_event.event_id().expect("generated event has an event ID") };
211+ joined_room_update.timeline.events.push(target_event);
212+
213+ // Add the numerous edits.
214+ for i in 0..num_related_events {
215+ let event = event_factory
216+ .text_msg(format!("* edit {i}"))
217+ .edit(
218+ target_event_id,
219+ RoomMessageEventContentWithoutRelation::text_plain(format!("edit {i}")),
220+ )
221+ .into();
222+ joined_room_update.timeline.events.push(event);
223+ }
224+
225+ // Add other events, in the same room, without a relation.
226+ for i in 0..NUM_OTHER_EVENTS {
227+ let event = event_factory.text_msg(format!("unrelated message {i}")).into();
228+ joined_room_update.timeline.events.push(event);
229+ }
230+
231+ // Add other events, in the same room, related to other events.
232+ let other_target_event = event_factory.text_msg("hello world").into_event();
233+ let other_target_event_id =
234+ other_target_event.event_id().expect("generated event has an event ID");
235+ joined_room_update.timeline.events.push(other_target_event);
236+
237+ for _i in 0..NUM_OTHER_EVENTS {
238+ let event = event_factory.reaction(&other_target_event_id, "👍").into();
239+ joined_room_update.timeline.events.push(event);
240+ }
241+
242+ room_updates.joined.insert(room_id.to_owned(), joined_room_update);
243+
244+ // Add other events, in another room.
245+ let mut other_joined_room_update = JoinedRoomUpdate::default();
246+ let event_factory = event_factory.room(other_room_id);
247+ for i in 0..NUM_OTHER_EVENTS {
248+ let event = event_factory.text_msg(format!("hi {i}")).into();
249+ other_joined_room_update.timeline.events.push(event);
250+ }
251+ room_updates.joined.insert(other_room_id.to_owned(), other_joined_room_update);
252+
253+ changes.add_room(RoomInfo::new(room_id, RoomState::Joined));
254+
255+ // Declare new stores for this set of events.
256+ let temp_dir = Arc::new(tempdir().unwrap());
257+
258+ let stores = vec![
259+ ("memory", MemoryStore::default().into_event_cache_store()),
260+ (
261+ "SQLite",
262+ runtime.block_on(async {
263+ SqliteEventCacheStore::open(temp_dir.path().join("bench"), None)
264+ .await
265+ .unwrap()
266+ .into_event_cache_store()
267+ }),
268+ ),
269+ ];
270+
271+ for (store_name, event_cache_store) in stores {
272+ let (client, room_event_cache, _drop_handles) = runtime.block_on(async {
273+ let client = MockClientBuilder::new(None)
274+ .on_builder(|builder| {
275+ builder.store_config(
276+ StoreConfig::new(CrossProcessLockConfig::multi_process(
277+ "cross-process-store-locks-holder-name",
278+ ))
279+ .state_store(state_store.clone())
280+ .event_cache_store(event_cache_store),
281+ )
282+ })
283+ .build()
284+ .await;
285+
286+ client.event_cache().subscribe().unwrap();
287+
288+ // Sync the updates before starting the benchmark.
289+ let mut update_recv = client.event_cache().subscribe_to_room_generic_updates();
290+
291+ client.event_cache().handle_room_updates(room_updates.clone()).await.unwrap();
292+
293+ // Wait for the event cache to notify us of the room updates.
294+ let update = update_recv.recv().await.unwrap();
295+ assert!(update.room_id == room_id || update.room_id == other_room_id);
296+
297+ let update = update_recv.recv().await.unwrap();
298+ assert!(update.room_id == room_id || update.room_id == other_room_id);
299+
300+ let room = client.get_room(room_id).unwrap();
301+ let room_event_cache = room.event_cache().await.unwrap();
302+
303+ (client, room_event_cache.0, room_event_cache.1)
304+ });
305+
306+ // Define the throughput.
307+ group.throughput(Throughput::Elements(num_related_events));
308+
309+ for filter in [None, Some(vec![RelationType::Replacement])] {
310+ group.bench_function(
311+ BenchmarkId::new(
312+ format!("Event cache find_event_relations[{store_name}]"),
313+ format!(
314+ "{num_related_events} events, {} filter",
315+ if filter.is_some() { "edits" } else { "#no" },
316+ ),
317+ ),
318+ |bencher| {
319+ bencher.to_async(&runtime).iter_batched(
320+ // The setup.
321+ || (room_event_cache.clone(), filter.clone()),
322+ // The routine itself.
323+ |(room_event_cache, filter)| async move {
324+ let (target, relations) = room_event_cache
325+ .find_event_with_relations(target_event_id, filter)
326+ .await
327+ .unwrap()
328+ .unwrap();
329+ assert_eq!(target.event_id().unwrap(), *target_event_id);
330+ assert_eq!(relations.len(), num_related_events as usize);
331+ },
332+ criterion::BatchSize::PerIteration,
333+ )
334+ },
335+ );
336+ }
337+
338+ {
339+ let _guard = runtime.enter();
340+ drop(room_event_cache);
341+ drop(client);
342+ drop(_drop_handles);
343+ }
344+ }
345+ }
346+
347+ {
348+ let _guard = runtime.enter();
349+ drop(state_store);
350+ }
351+
352+ group.finish()
353+}
354+
355+criterion_group! {
356+ name = event_cache;
357+ config = Criterion::default();
358+ targets = handle_room_updates, find_event_relations,
359+}
360+
361+criterion_main!(event_cache);
Added file: benchmarks/benches/linked_chunk.rs+263 additions
@@ -0,0 +1,263 @@
1+use std::{sync::Arc, time::Duration};
2+
3+use criterion::{BatchSize, BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
4+use matrix_sdk::{
5+ SqliteEventCacheStore,
6+ linked_chunk::{LinkedChunk, LinkedChunkId, Update, lazy_loader},
7+};
8+use matrix_sdk_base::event_cache::{
9+ Event, Gap,
10+ store::{DEFAULT_CHUNK_CAPACITY, DynEventCacheStore, IntoEventCacheStore, MemoryStore},
11+};
12+use matrix_sdk_test::{ALICE, event_factory::EventFactory};
13+use ruma::room_id;
14+use tempfile::tempdir;
15+use tokio::runtime::Builder;
16+
17+#[derive(Clone, Debug)]
18+enum Operation {
19+ PushItemsBack(Vec<Event>),
20+ PushGapBack(Gap),
21+}
22+
23+#[cfg(not(feature = "codspeed"))]
24+const NUMBER_OF_EVENTS: &[u64] = &[10, 100, 1000, 10_000, 100_000];
25+#[cfg(feature = "codspeed")]
26+const NUMBER_OF_EVENTS: &[u64] = &[10, 100, 1000];
27+
28+fn writing(c: &mut Criterion) {
29+ // Create a new asynchronous runtime.
30+ let runtime = Builder::new_multi_thread()
31+ .enable_time()
32+ .enable_io()
33+ .build()
34+ .expect("Failed to create an asynchronous runtime");
35+
36+ let room_id = room_id!("!fabricandofitfaber:bar.baz");
37+ let linked_chunk_id = LinkedChunkId::Room(room_id);
38+ let event_factory = EventFactory::new().room(room_id).sender(&ALICE);
39+
40+ let mut group = c.benchmark_group("Linked chunk writing");
41+ group.sample_size(10).measurement_time(Duration::from_secs(30));
42+
43+ for &number_of_events in NUMBER_OF_EVENTS {
44+ let sqlite_temp_dir = tempdir().unwrap();
45+
46+ // Declare new stores for this set of events.
47+ let stores: [(&str, Option<Arc<DynEventCacheStore>>); 3] = [
48+ ("none", None),
49+ ("memory store", Some(MemoryStore::default().into_event_cache_store())),
50+ (
51+ "sqlite store",
52+ runtime.block_on(async {
53+ Some(
54+ SqliteEventCacheStore::open(sqlite_temp_dir.path().join("bench"), None)
55+ .await
56+ .unwrap()
57+ .into_event_cache_store(),
58+ )
59+ }),
60+ ),
61+ ];
62+
63+ for (store_name, store) in stores {
64+ // Create the operations we want to bench.
65+ let mut operations = Vec::new();
66+
67+ {
68+ let mut events = (0..number_of_events)
69+ .map(|nth| event_factory.text_msg(format!("foo {nth}")).into_event())
70+ .peekable();
71+
72+ let mut gap_nth = 0;
73+
74+ while events.peek().is_some() {
75+ {
76+ let events_to_push_back = events.by_ref().take(80).collect::<Vec<_>>();
77+
78+ if events_to_push_back.is_empty() {
79+ break;
80+ }
81+
82+ operations.push(Operation::PushItemsBack(events_to_push_back));
83+ }
84+
85+ {
86+ operations
87+ .push(Operation::PushGapBack(Gap { token: format!("gap{gap_nth}") }));
88+ gap_nth += 1;
89+ }
90+ }
91+ }
92+
93+ // Define the throughput.
94+ group.throughput(Throughput::Elements(number_of_events));
95+
96+ // Get a bencher.
97+ group.bench_with_input(
98+ BenchmarkId::new(format!("Linked chunk writing [{store_name}]"), number_of_events),
99+ &operations,
100+ |bencher, operations| {
101+ // Bench the routine.
102+ bencher.to_async(&runtime).iter_batched(
103+ || operations.clone(),
104+ |operations| async {
105+ // The routine to bench!
106+
107+ let mut linked_chunk = LinkedChunk::<DEFAULT_CHUNK_CAPACITY, Event, Gap>::new_with_update_history();
108+
109+ for operation in operations {
110+ match operation {
111+ Operation::PushItemsBack(events) => linked_chunk.push_items_back(events),
112+ Operation::PushGapBack(gap) => linked_chunk.push_gap_back(gap),
113+ }
114+ }
115+
116+ if let Some(store) = &store {
117+ let updates = linked_chunk.updates().unwrap().take();
118+ store.handle_linked_chunk_updates(linked_chunk_id, updates).await.unwrap();
119+ // Empty the store.
120+ store.handle_linked_chunk_updates(linked_chunk_id, vec![Update::Clear]).await.unwrap();
121+ }
122+
123+ },
124+ BatchSize::SmallInput
125+ )
126+ },
127+ );
128+
129+ {
130+ let _guard = runtime.enter();
131+ drop(store);
132+ }
133+ }
134+ }
135+
136+ group.finish()
137+}
138+
139+fn reading(c: &mut Criterion) {
140+ // Create a new asynchronous runtime.
141+ let runtime = Builder::new_multi_thread()
142+ .enable_time()
143+ .enable_io()
144+ .build()
145+ .expect("Failed to create an asynchronous runtime");
146+
147+ let room_id = room_id!("!fabricandofitfaber:bar.baz");
148+ let linked_chunk_id = LinkedChunkId::Room(room_id);
149+ let event_factory = EventFactory::new().room(room_id).sender(&ALICE);
150+
151+ let mut group = c.benchmark_group("Linked chunk reading");
152+ group.sample_size(10);
153+
154+ for &num_events in NUMBER_OF_EVENTS {
155+ let sqlite_temp_dir = tempdir().unwrap();
156+
157+ // Declare new stores for this set of events.
158+ let stores: [(&str, Arc<DynEventCacheStore>); 2] = [
159+ ("memory store", MemoryStore::default().into_event_cache_store()),
160+ (
161+ "sqlite store",
162+ runtime.block_on(async {
163+ SqliteEventCacheStore::open(sqlite_temp_dir.path().join("bench"), None)
164+ .await
165+ .unwrap()
166+ .into_event_cache_store()
167+ }),
168+ ),
169+ ];
170+
171+ for (store_name, store) in stores {
172+ // Store some events and gap chunks in the store.
173+ {
174+ let mut events = (0..num_events)
175+ .map(|nth| event_factory.text_msg(format!("foo {nth}")).into_event())
176+ .peekable();
177+
178+ let mut lc =
179+ LinkedChunk::<DEFAULT_CHUNK_CAPACITY, Event, Gap>::new_with_update_history();
180+ let mut num_gaps = 0;
181+
182+ while events.peek().is_some() {
183+ let events_chunk = events.by_ref().take(80).collect::<Vec<_>>();
184+
185+ if events_chunk.is_empty() {
186+ break;
187+ }
188+
189+ lc.push_items_back(events_chunk);
190+ lc.push_gap_back(Gap { token: format!("gap{num_gaps}") });
191+
192+ num_gaps += 1;
193+ }
194+
195+ // Now persist the updates to recreate this full linked chunk.
196+ let updates = lc.updates().unwrap().take();
197+ runtime
198+ .block_on(store.handle_linked_chunk_updates(linked_chunk_id, updates))
199+ .unwrap();
200+ }
201+
202+ // Define the throughput.
203+ group.throughput(Throughput::Elements(num_events));
204+
205+ // Bench the lazy loader.
206+ group.bench_function(
207+ BenchmarkId::new(format!("Linked chunk lazy loader[{store_name}]"), num_events),
208+ |bencher| {
209+ // Bench the routine.
210+ bencher.to_async(&runtime).iter(|| async {
211+ // Load the last chunk first,
212+ let (last_chunk, chunk_id_gen) =
213+ store.load_last_chunk(linked_chunk_id).await.unwrap();
214+
215+ let mut lc =
216+ lazy_loader::from_last_chunk::<128, _, _>(last_chunk, chunk_id_gen)
217+ .expect("no error when reconstructing the linked chunk")
218+ .expect("there is a linked chunk in the store");
219+
220+ // Then load until the start of the linked chunk.
221+ let mut cur_chunk_id = lc.chunks().next().unwrap().identifier();
222+ while let Some(prev) =
223+ store.load_previous_chunk(linked_chunk_id, cur_chunk_id).await.unwrap()
224+ {
225+ cur_chunk_id = prev.identifier;
226+ lazy_loader::insert_new_first_chunk(&mut lc, prev)
227+ .expect("no error when linking the previous lazy-loaded chunk");
228+ }
229+ })
230+ },
231+ );
232+
233+ // Bench the metadata loader.
234+ group.bench_function(
235+ BenchmarkId::new(format!("Linked chunk metadata loader[{store_name}]"), num_events),
236+ |bencher| {
237+ // Bench the routine.
238+ bencher.to_async(&runtime).iter(|| async {
239+ let _metadata = store
240+ .load_all_chunks_metadata(linked_chunk_id)
241+ .await
242+ .expect("metadata must load");
243+ })
244+ },
245+ );
246+
247+ {
248+ let _guard = runtime.enter();
249+ drop(store);
250+ }
251+ }
252+ }
253+
254+ group.finish()
255+}
256+
257+criterion_group! {
258+ name = event_cache;
259+ config = Criterion::default();
260+ targets = writing, reading,
261+}
262+
263+criterion_main!(event_cache);
Added file: benchmarks/benches/room_bench.rs+208 additions
@@ -0,0 +1,208 @@
1+use std::time::Duration;
2+
3+use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
4+use matrix_sdk::{
5+ cross_process_lock::CrossProcessLockConfig, store::RoomLoadSettings,
6+ test_utils::mocks::MatrixMockServer,
7+};
8+use matrix_sdk_base::{
9+ BaseClient, DmRoomDefinition, RoomInfo, RoomState, SessionMeta, StateChanges, StateStore,
10+ ThreadingSupport, store::StoreConfig,
11+};
12+use matrix_sdk_sqlite::SqliteStateStore;
13+use matrix_sdk_test::{JoinedRoomBuilder, base64_sha256_hash, event_factory::EventFactory};
14+use matrix_sdk_ui::timeline::{TimelineBuilder, TimelineFocus};
15+use ruma::{
16+ EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedUserId,
17+ api::client::membership::get_member_events,
18+ events::room::member::{MembershipState, RoomMemberEvent},
19+ mxc_uri, owned_device_id, owned_room_id, owned_user_id,
20+ serde::Raw,
21+};
22+use tokio::runtime::Builder;
23+use wiremock::{Request, ResponseTemplate};
24+
25+pub fn receive_all_members_benchmark(c: &mut Criterion) {
26+ const MEMBERS_IN_ROOM: usize = 100000;
27+
28+ let runtime = Builder::new_multi_thread().build().expect("Can't create runtime");
29+ let room_id = owned_room_id!("!homohominilupusest:example.com");
30+
31+ let f = EventFactory::new().room(&room_id);
32+ let mut member_events: Vec<Raw<RoomMemberEvent>> = Vec::with_capacity(MEMBERS_IN_ROOM);
33+ for i in 0..MEMBERS_IN_ROOM {
34+ let user_id = OwnedUserId::try_from(format!("@user_{i}:matrix.org")).unwrap();
35+ let event = f
36+ .member(&user_id)
37+ .membership(MembershipState::Join)
38+ .avatar_url(mxc_uri!("mxc://example.org/SEsfnsuifSDFSSEF"))
39+ .display_name("Alice Margatroid")
40+ .reason("Looking for support")
41+ .into_raw();
42+ member_events.push(event);
43+ }
44+
45+ // Create a fake list of changes, and a session to recover from.
46+ let mut changes = StateChanges::default();
47+ changes.add_room(RoomInfo::new(&room_id, RoomState::Joined));
48+ for member_event in member_events.iter() {
49+ let event = member_event.clone().cast();
50+ changes.add_state_event(&room_id, event.deserialize().unwrap(), event);
51+ }
52+
53+ // Sqlite
54+ let sqlite_dir = tempfile::tempdir().unwrap();
55+ let sqlite_store = runtime.block_on(SqliteStateStore::open(sqlite_dir.path(), None)).unwrap();
56+ runtime
57+ .block_on(sqlite_store.save_changes(&changes))
58+ .expect("initial filling of sqlite failed");
59+
60+ let base_client = BaseClient::new(
61+ StoreConfig::new(CrossProcessLockConfig::multi_process(
62+ "cross-process-store-locks-holder-name",
63+ ))
64+ .state_store(sqlite_store),
65+ ThreadingSupport::Disabled,
66+ DmRoomDefinition::default(),
67+ );
68+
69+ runtime
70+ .block_on(base_client.activate(
71+ SessionMeta {
72+ user_id: owned_user_id!("@somebody:example.com"),
73+ device_id: owned_device_id!("DEVICE_ID"),
74+ },
75+ RoomLoadSettings::default(),
76+ None,
77+ ))
78+ .expect("Could not set session meta");
79+
80+ base_client.get_or_create_room(&room_id, RoomState::Joined);
81+
82+ let request = get_member_events::v3::Request::new(room_id.clone());
83+ let response = get_member_events::v3::Response::new(member_events);
84+
85+ let count = MEMBERS_IN_ROOM;
86+ let name = format!("{count} members");
87+ let mut group = c.benchmark_group("Test");
88+ group.throughput(Throughput::Elements(count as u64));
89+ group.sample_size(50);
90+
91+ group.bench_function(BenchmarkId::new("Handle /members request [SQLite]", name), |b| {
92+ b.to_async(&runtime).iter(|| async {
93+ base_client.receive_all_members(&room_id, &request, &response).await.unwrap();
94+ });
95+ });
96+
97+ {
98+ let _guard = runtime.enter();
99+ drop(base_client);
100+ }
101+
102+ group.finish();
103+}
104+
105+pub fn load_pinned_events_benchmark(c: &mut Criterion) {
106+ const PINNED_EVENTS_COUNT: usize = 100;
107+
108+ let runtime = Builder::new_multi_thread().enable_all().build().expect("Can't create runtime");
109+ let room_id = owned_room_id!("!homohominilupusest:example.com");
110+ let sender_id = owned_user_id!("@sender:example.com");
111+
112+ let f = EventFactory::new().room(&room_id).sender(&sender_id);
113+
114+ let mut joined_room_builder =
115+ JoinedRoomBuilder::new(&room_id).add_state_event(f.room_encryption());
116+
117+ let pinned_event_ids: Vec<OwnedEventId> = (0..PINNED_EVENTS_COUNT)
118+ .map(|i| {
119+ EventId::new_v2_or_v3(&base64_sha256_hash(format!("${i}").as_bytes()))
120+ .expect("Invalid event id")
121+ })
122+ .collect();
123+ joined_room_builder =
124+ joined_room_builder.add_state_bulk(vec![f.room_pinned_events(pinned_event_ids).into()]);
125+
126+ let (server, client, room) = runtime.block_on(async move {
127+ let server = MatrixMockServer::new().await;
128+ let client = server.client_builder().build().await;
129+
130+ let room = server.sync_room(&client, joined_room_builder).await;
131+
132+ server
133+ .mock_room_event()
134+ .respond_with(move |r: &Request| {
135+ let segments: Vec<&str> = r.url.path_segments().expect("Invalid path").collect();
136+ let event_id_str = segments[6];
137+ let event_id = EventId::parse(event_id_str).expect("Invalid event id in response");
138+ let event = f
139+ .text_msg(format!("Message {event_id_str}"))
140+ .event_id(&event_id)
141+ .server_ts(MilliSecondsSinceUnixEpoch::now())
142+ .into_raw_sync();
143+ ResponseTemplate::new(200)
144+ .set_delay(Duration::from_millis(50))
145+ .set_body_json(event.json())
146+ })
147+ .mount()
148+ .await;
149+
150+ client.event_cache().subscribe().unwrap();
151+
152+ (server, client, room)
153+ });
154+
155+ let pinned_event_ids = room.pinned_event_ids().unwrap_or_default();
156+ assert!(!pinned_event_ids.is_empty());
157+ assert_eq!(pinned_event_ids.len(), PINNED_EVENTS_COUNT);
158+
159+ let count = PINNED_EVENTS_COUNT;
160+ let name = format!("{count} pinned events");
161+ let mut group = c.benchmark_group("Load pinned events");
162+ group.throughput(Throughput::Elements(count as u64));
163+ group.sample_size(10);
164+
165+ group.bench_function(BenchmarkId::new("Load pinned events [memory]", name), |b| {
166+ b.to_async(&runtime).iter(|| async {
167+ let pinned_event_ids = room.pinned_event_ids().unwrap_or_default();
168+ assert!(!pinned_event_ids.is_empty());
169+ assert_eq!(pinned_event_ids.len(), PINNED_EVENTS_COUNT);
170+
171+ // Reset cache so it always loads the events from the mocked endpoint
172+ client
173+ .event_cache_store()
174+ .lock()
175+ .await
176+ .unwrap()
177+ .as_clean()
178+ .unwrap()
179+ .clear_all_linked_chunks()
180+ .await
181+ .unwrap();
182+
183+ let timeline = TimelineBuilder::new(&room)
184+ .with_focus(TimelineFocus::PinnedEvents)
185+ .build()
186+ .await
187+ .expect("Could not create timeline");
188+
189+ let (items, _) = timeline.subscribe().await;
190+ assert_eq!(items.len(), PINNED_EVENTS_COUNT + 1);
191+ timeline.clear().await;
192+ });
193+ });
194+
195+ {
196+ let _guard = runtime.enter();
197+ drop(server);
198+ }
199+
200+ group.finish();
201+}
202+
203+criterion_group! {
204+ name = room;
205+ config = Criterion::default();
206+ targets = receive_all_members_benchmark, load_pinned_events_benchmark,
207+}
208+criterion_main!(room);
Added file: benchmarks/benches/room_list.rs+101 additions
@@ -0,0 +1,101 @@
1+use assert_matches::assert_matches;
2+use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
3+use futures_util::pin_mut;
4+use matrix_sdk::{stream::StreamExt, test_utils::mocks::MatrixMockServer};
5+use matrix_sdk_test::{JoinedRoomBuilder, base64_sha256_hash, event_factory::EventFactory};
6+use matrix_sdk_ui::{
7+ RoomListService, eyeball_im::VectorDiff, room_list_service::filters::new_filter_non_left,
8+};
9+use rand::{distr::Uniform, prelude::Distribution};
10+use ruma::{OwnedRoomId, RoomId, owned_user_id};
11+use tokio::runtime::Builder;
12+
13+/// Benchmark the time it takes to create a room list.
14+pub fn create(c: &mut Criterion) {
15+ const NUMBER_OF_ROOMS: usize = 1000;
16+ const NUMBER_OF_EVENTS_PER_ROOM: usize = 1000;
17+
18+ let runtime = Builder::new_multi_thread().enable_all().build().expect("Can't create runtime");
19+
20+ let (server, client) = runtime.block_on(async {
21+ let server = MatrixMockServer::new().await;
22+ let client = server.client_builder().build().await;
23+ client.event_cache().subscribe().unwrap();
24+
25+ (server, client)
26+ });
27+
28+ let sender_id = owned_user_id!("@mnt_io:matrix.org");
29+ let mut rand = rand::rng();
30+ let server_ts_range = Uniform::try_from(100..1000).unwrap();
31+
32+ for room_nth in 0..NUMBER_OF_ROOMS {
33+ // Synapse's room IDs for rooms v1 to v11 have an 18 characters localpart.
34+ let raw_room_id = format!("!arsgratiaartis{room_nth:04}:example.com");
35+
36+ let room_id = if room_nth % 10 == 9 {
37+ // Make 1 in 10 rooms use a room v12 ID, which is a base64 hash similar to an
38+ // event ID.
39+ RoomId::new_v2(&base64_sha256_hash(raw_room_id.as_bytes())).unwrap()
40+ } else {
41+ OwnedRoomId::try_from(raw_room_id).unwrap()
42+ };
43+
44+ let first_server_ts = server_ts_range.sample(&mut rand);
45+ let event_factory = EventFactory::new().room(&room_id).server_ts(first_server_ts);
46+
47+ let events = (0..NUMBER_OF_EVENTS_PER_ROOM)
48+ .map(|event_nth| {
49+ event_factory
50+ .text_msg(format!("a {room_nth}_{event_nth}"))
51+ .sender(&sender_id)
52+ .into_raw_sync()
53+ })
54+ .collect::<Vec<_>>();
55+
56+ let _room = runtime.block_on(async {
57+ server
58+ .sync_room(&client, JoinedRoomBuilder::new(&room_id).add_timeline_bulk(events))
59+ .await
60+ });
61+ }
62+
63+ let mut group = c.benchmark_group("RoomList");
64+ group.throughput(Throughput::Elements(NUMBER_OF_ROOMS.try_into().unwrap()));
65+
66+ group.bench_function(
67+ BenchmarkId::new(
68+ "Create",
69+ format!("{NUMBER_OF_ROOMS} rooms × {NUMBER_OF_EVENTS_PER_ROOM} events"),
70+ ),
71+ |bencher| {
72+ bencher.to_async(&runtime).iter(|| async {
73+ let room_list_service = RoomListService::new(client.clone())
74+ .await
75+ .expect("build the room list service");
76+ let room_list = room_list_service.all_rooms().await.expect("fetch `all_rooms`");
77+ let (entries_stream, entries_controller) =
78+ room_list.entries_with_dynamic_adapters(20);
79+
80+ // Setting the filter will trigger the entries stream computation.
81+ entries_controller.set_filter(Box::new(new_filter_non_left()));
82+
83+ pin_mut!(entries_stream);
84+ let update = entries_stream.next().await.expect("receiving the reset update");
85+ assert_eq!(update.len(), 1);
86+ assert_matches!(&update[0], VectorDiff::Reset { values } => {
87+ assert_eq!(values.len(), 20);
88+ });
89+ });
90+ },
91+ );
92+
93+ group.finish();
94+}
95+
96+criterion_group! {
97+ name = room_list;
98+ config = Criterion::default();
99+ targets = create
100+}
101+criterion_main!(room_list);
Added file: benchmarks/benches/store_bench.rs+139 additions
@@ -0,0 +1,139 @@
1+use std::sync::Arc;
2+
3+use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
4+use matrix_sdk::{
5+ Client, RoomInfo, RoomState, SessionTokens, StateChanges,
6+ authentication::matrix::MatrixSession, config::StoreConfig,
7+ cross_process_lock::CrossProcessLockConfig,
8+};
9+use matrix_sdk_base::{SessionMeta, StateStore as _, store::MemoryStore};
10+use matrix_sdk_sqlite::SqliteStateStore;
11+use matrix_sdk_test::base64_sha256_hash;
12+use ruma::{OwnedRoomId, RoomId, owned_device_id, owned_user_id};
13+use tokio::runtime::Builder;
14+
15+/// Number of joined rooms in the benchmark.
16+const NUM_JOINED_ROOMS: usize = 10000;
17+
18+/// Number of stripped rooms in the benchmark.
19+const NUM_STRIPPED_JOINED_ROOMS: usize = 10000;
20+
21+pub fn restore_session(c: &mut Criterion) {
22+ let runtime = Builder::new_multi_thread().enable_time().build().expect("Can't create runtime");
23+
24+ // Create a fake list of changes, and a session to recover from.
25+ let mut changes = StateChanges::default();
26+
27+ for i in 0..NUM_JOINED_ROOMS {
28+ // Synapse's room IDs for rooms v1 to v11 have an 18 characters localpart.
29+ let raw_room_id = format!("!joinedchamber{i:05}:example.com");
30+
31+ let room_id = if i % 20 == 19 {
32+ // Make 1 in 20 rooms use a room v12 ID, which is a base64 hash similar to an
33+ // event ID.
34+ RoomId::new_v2(&base64_sha256_hash(raw_room_id.as_bytes())).unwrap()
35+ } else {
36+ OwnedRoomId::try_from(raw_room_id).unwrap()
37+ };
38+ changes.add_room(RoomInfo::new(&room_id, RoomState::Joined));
39+ }
40+
41+ for i in 0..NUM_STRIPPED_JOINED_ROOMS {
42+ // Synapse's room IDs for rooms v1 to v11 have an 18 characters localpart.
43+ let raw_room_id = format!("!strippedlodge{i:05}:example.com");
44+
45+ let room_id = if i % 20 == 19 {
46+ // Make 1 in 20 rooms use a room v12 ID, which is a base64 hash similar to an
47+ // event ID.
48+ RoomId::new_v2(&base64_sha256_hash(raw_room_id.as_bytes())).unwrap()
49+ } else {
50+ OwnedRoomId::try_from(raw_room_id).unwrap()
51+ };
52+ changes.add_room(RoomInfo::new(&room_id, RoomState::Invited));
53+ }
54+
55+ let session = MatrixSession {
56+ meta: SessionMeta {
57+ user_id: owned_user_id!("@somebody:example.com"),
58+ device_id: owned_device_id!("DEVICE_ID"),
59+ },
60+ tokens: SessionTokens { access_token: "OHEY".to_owned(), refresh_token: None },
61+ };
62+
63+ // Start the benchmark.
64+
65+ let mut group = c.benchmark_group("Client reload");
66+ group.throughput(Throughput::Elements(100));
67+
68+ // Memory
69+ let mem_store = Arc::new(MemoryStore::new());
70+ runtime.block_on(mem_store.save_changes(&changes)).expect("initial filling of mem failed");
71+
72+ group.bench_with_input("Restore session [memory store]", &mem_store, |b, store| {
73+ b.to_async(&runtime).iter(|| async {
74+ let client = Client::builder()
75+ .homeserver_url("https://matrix.example.com")
76+ .store_config(
77+ StoreConfig::new(CrossProcessLockConfig::multi_process(
78+ "cross-process-store-locks-holder-name",
79+ ))
80+ .state_store(store.clone()),
81+ )
82+ .build()
83+ .await
84+ .expect("Can't build client");
85+ client.restore_session(session.clone()).await.expect("couldn't restore session");
86+ })
87+ });
88+
89+ for encryption_password in [None, Some("hunter2")] {
90+ let encrypted_suffix = if encryption_password.is_some() { "encrypted" } else { "clear" };
91+
92+ // Sqlite
93+ let sqlite_dir = tempfile::tempdir().unwrap();
94+ let sqlite_store = runtime
95+ .block_on(SqliteStateStore::open(sqlite_dir.path(), encryption_password))
96+ .unwrap();
97+ runtime
98+ .block_on(sqlite_store.save_changes(&changes))
99+ .expect("initial filling of sqlite failed");
100+
101+ group.bench_with_input(
102+ BenchmarkId::new("Restore session [SQLite]", encrypted_suffix),
103+ &sqlite_store,
104+ |b, store| {
105+ b.to_async(&runtime).iter(|| async {
106+ let client = Client::builder()
107+ .homeserver_url("https://matrix.example.com")
108+ .store_config(
109+ StoreConfig::new(CrossProcessLockConfig::multi_process(
110+ "cross-process-store-locks-holder-name",
111+ ))
112+ .state_store(store.clone()),
113+ )
114+ .build()
115+ .await
116+ .expect("Can't build client");
117+ client
118+ .restore_session(session.clone())
119+ .await
120+ .expect("couldn't restore session");
121+ })
122+ },
123+ );
124+
125+ {
126+ let _guard = runtime.enter();
127+ drop(sqlite_store);
128+ }
129+ }
130+
131+ group.finish()
132+}
133+
134+criterion_group! {
135+ name = benches;
136+ config = Criterion::default();
137+ targets = restore_session
138+}
139+criterion_main!(benches);
Added file: benchmarks/benches/timeline.rs+123 additions
@@ -0,0 +1,123 @@
1+use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
2+use matrix_sdk::test_utils::mocks::MatrixMockServer;
3+use matrix_sdk_test::{JoinedRoomBuilder, event_factory::EventFactory};
4+use matrix_sdk_ui::timeline::{TimelineBuilder, TimelineReadReceiptTracking};
5+use ruma::{
6+ OwnedEventId, events::room::message::RoomMessageEventContentWithoutRelation, owned_room_id,
7+ owned_user_id,
8+};
9+use tokio::runtime::Builder;
10+
11+/// Benchmark the time it takes to create a timeline (with read receipt
12+/// support), when there are many initial events at rest in the event cache.
13+///
14+/// `NUM_EVENTS` is the number of events that will be stored initially in the
15+/// event cache. It will be a mix of messages, reactions, edits and redactions,
16+/// so there are some aggregations to take into account by the timeline as well.
17+pub fn create_timeline_with_initial_events(c: &mut Criterion) {
18+ const NUM_EVENTS: usize = 10000;
19+
20+ let runtime = Builder::new_multi_thread().enable_all().build().expect("Can't create runtime");
21+ let room_id = owned_room_id!("!fortesfortunajuvat:example.com");
22+
23+ let sender_id = owned_user_id!("@sender:example.com");
24+ let other_sender_id = owned_user_id!("@other_sender:example.com");
25+ let another_sender_id = owned_user_id!("@another_sender:example.com");
26+
27+ let f = EventFactory::new().room(&room_id);
28+
29+ let mut events = Vec::new();
30+ for i in 0..NUM_EVENTS {
31+ let sender = match i % 3 {
32+ 0 => &sender_id,
33+ 1 => &other_sender_id,
34+ 2 => &another_sender_id,
35+ _ => unreachable!("math genius over here"),
36+ };
37+
38+ let j = i % 10;
39+ if j < 6 {
40+ // Messages.
41+ events.push(f.text_msg(format!("Message {i}")).sender(sender).into_raw_sync());
42+ } else if j < 8 {
43+ // Reactions.
44+ let prev_event_id = events[i - 2]
45+ .get_field::<OwnedEventId>("event_id")
46+ .expect("invalid event ID")
47+ .expect("missing event ID");
48+ events.push(f.reaction(&prev_event_id, "👍").sender(sender).into_raw_sync());
49+ } else if j == 8 {
50+ // Edit.
51+ // Note: (i-3)%3 is the same as i%3 -> same sender!
52+ let prev_event_id = events[i - 3]
53+ .get_field::<OwnedEventId>("event_id")
54+ .expect("invalid event ID")
55+ .expect("missing event ID");
56+ events.push(
57+ f.text_msg(format!("* Message {}v2", i - 3))
58+ .edit(
59+ &prev_event_id,
60+ RoomMessageEventContentWithoutRelation::text_plain(format!(
61+ "Message {}v2",
62+ i - 3
63+ )),
64+ )
65+ .sender(sender)
66+ .into_raw_sync(),
67+ );
68+ } else if j == 9 {
69+ // Redaction.
70+ // Note: (i-6)%3 is the same as i%6 -> same sender!
71+ let prev_event_id = events[i - 6]
72+ .get_field::<OwnedEventId>("event_id")
73+ .expect("invalid event ID")
74+ .expect("missing event ID");
75+ events.push(f.redaction(&prev_event_id).sender(sender).into_raw_sync());
76+ }
77+ }
78+
79+ let builder = JoinedRoomBuilder::new(&room_id)
80+ .add_state_event(f.room_encryption().sender(&sender_id))
81+ .add_timeline_bulk(events);
82+
83+ let room = runtime.block_on(async move {
84+ let server = MatrixMockServer::new().await;
85+ let client = server.client_builder().build().await;
86+
87+ client.event_cache().subscribe().unwrap();
88+
89+ let room = server.sync_room(&client, builder).await;
90+ drop(server);
91+
92+ room
93+ });
94+
95+ let mut group = c.benchmark_group("Create a timeline");
96+ group.throughput(Throughput::Elements(NUM_EVENTS as _));
97+ group.sample_size(10);
98+
99+ group.bench_function(
100+ BenchmarkId::new("Create a timeline with initial events", format!("{NUM_EVENTS} events")),
101+ |b| {
102+ b.to_async(&runtime).iter(|| async {
103+ let timeline = TimelineBuilder::new(&room)
104+ .track_read_marker_and_receipts(TimelineReadReceiptTracking::AllEvents)
105+ .build()
106+ .await
107+ .expect("Could not create timeline");
108+
109+ let (items, _) = timeline.subscribe().await;
110+ assert_eq!(items.len(), 20);
111+ });
112+ },
113+ );
114+
115+ group.finish();
116+}
117+
118+criterion_group! {
119+ name = room;
120+ config = Criterion::default();
121+ targets = create_timeline_with_initial_events
122+}
123+criterion_main!(room);
Added file: bindings/CONTRIBUTING.md+79 additions
@@ -0,0 +1,79 @@
1+## Introduction
2+
3+**matrix-rust-sdk** leverages [UniFFI](https://mozilla.github.io/uniffi-rs/) to
4+generate bindings for host languages (eg. Swift and Kotlin).
5+
6+Rust code related with bindings live in the
7+[matrix-rust-sdk/bindings](https://github.com/matrix-org/matrix-rust-sdk/tree/main/bindings)
8+folder.
9+
10+Developers can expose Rust code to UniFFI using two different approaches:
11+
12+- Using an `.udl` file. When a crate has one, you find it under the `src` folder
13+ ([an example is here](https://github.com/matrix-org/matrix-rust-sdk/blob/main/bindings/matrix-sdk-ffi/src/api.udl)).
14+- Add UniFFI directivies as Rust attributes. In this case Rust source files
15+ (`.rs`) contain attributes related to UniFFI (e.g. `#[uniffi::export]`).
16+ Attributes are preferred, where applicable.
17+
18+## Expose Rust definitions to UniFFI
19+
20+### Check if the API is already on UniFFI
21+
22+First of all check if the Rust definition you are looking for exists on UniFFI
23+already. Most of exposed matrix definitions are collected in the crate
24+[matrix-sdk-ffi](https://github.com/matrix-org/matrix-rust-sdk/tree/main/bindings/matrix-sdk-ffi).
25+This crate contains mainly small Rust wrappers around the actual Rust SDK (e.g.
26+the crate
27+[matrix-sdk](https://github.com/matrix-org/matrix-rust-sdk/tree/main/crates/matrix-sdk))
28+
29+If the Rust definition is on UniFFI already, you either:
30+
31+- find it in a `.udl` file like
32+ [matrix-sdk-ffi/src/api.udl](https://github.com/matrix-org/matrix-rust-sdk/blob/main/bindings/matrix-sdk-ffi/src/api.udl)
33+- see it marked with a proper UniFFI Rust attribute like this
34+ `#[uniffi::export]`
35+
36+### Adding a missing matrix API
37+
38+1. Unless you want to contribute on the crypto side, you probably need to add
39+ some code in the
40+ [matrix-sdk-ffi](https://github.com/matrix-org/matrix-rust-sdk/tree/main/bindings/matrix-sdk-ffi)
41+ crate. After you find the crate you need to understand which file is best to
42+ contain the new Rust definition. When exposing new matrix API often (but not
43+ always) you need to touch the file
44+ [client.rs](https://github.com/matrix-org/matrix-rust-sdk/blob/main/bindings/matrix-sdk-ffi/src/client.rs)
45+
46+2. Identify the API to expose in the target Rust crate (typically in
47+ [matrix-sdk](https://github.com/matrix-org/matrix-rust-sdk/tree/main/crates/matrix-sdk).
48+ If you can’t find it, you probably need to touch the actual Rust SDK as well.
49+ In this case you typically just need to write some code around
50+ [ruma](https://github.com/ruma/ruma) (a Rust SDK’s dependency) which already
51+ implements most of the matrix protocol
52+
53+3. After you got (by finding or writing) the required Rust code, you need to
54+ expose to UniFFI. To do that just write a small Rust wrapper in the related
55+ UniFFI crate (most of the time is **matrix-sdk-ffi**) you found on step 1.
56+
57+4. When your new (wrapping) Rust definition is ready, remember to expose it to
58+ UniFFI.
59+It’s best to do it using UniFFI Rust attributes (e.g. `#[uniffi::export]`).
60+Otherwise add the new definition in the crate’s `.udl` file. For the
61+**matrix-sdk-ffi** crate the definition file is
62+[api.udl](https://github.com/matrix-org/matrix-rust-sdk/blob/main/bindings/matrix-sdk-ffi/src/api.udl).
63+**Remember**: the language inside a `.udl` file isn’t Rust. To
64+[learn more about how map Rust into UDL read here](https://mozilla.github.io/uniffi-rs/udl_file_spec.html)
65+
66+## FAQ
67+
68+**Q**: I wrote my Rust code and exposed it to UniFFI. How can I check if the
69+compiler is happy?\
70+**A**: Run `cargo build` in the crate you touched (e.g. matrix-sdk-ffi). The
71+compiler will complain if the Rust code and/or the `.udl` is wrong.
72+
73+**Q**: The compiler is happy with my code but the CI is failing on GitHub. How
74+can I fix it?\
75+**A**: The CI may fail for different reasons, you need to have a look on the
76+failing GitHub workflow. One common reason though is that the linter
77+([Clippy](https://github.com/rust-lang/rust-clippy)) isn’t happy with your code.
78+If this is the case, you can run `cargo clippy` in the crate you touched to see
79+what’s wrong and fix it accordingly.
Added file: bindings/README.md+30 additions
@@ -0,0 +1,30 @@
1+# Matrix Rust SDK bindings
2+
3+In this directory, one can find bindings to the Rust SDK that are
4+maintained by the owners of the Matrix Rust SDK project.
5+
6+- [`apple`] or `matrix-rust-components-swift`, Swift bindings of the
7+ [`matrix-sdk`] crate via [`matrix-sdk-ffi`],
8+- [`matrix-sdk-crypto-ffi`], UniFFI (Kotlin, Swift, Python, Ruby) bindings of
9+ the [`matrix-sdk-crypto`] crate,
10+- [`matrix-sdk-ffi`], UniFFI bindings of the [`matrix-sdk`] crate.
11+
12+There are also external bindings in other repositories:
13+
14+- [`matrix-sdk-crypto-wasm`], JavaScript / WebAssembly bindings of the
15+ [`matrix-sdk-crypto`] crate,
16+- [`matrix-sdk-crypto-nodejs`], Node.js bindings of the
17+ [`matrix-sdk-crypto`] crate
18+
19+[`apple`]: ./apple
20+[`matrix-sdk-crypto-ffi`]: ./matrix-sdk-crypto-ffi
21+[`matrix-sdk-crypto`]: ../crates/matrix-sdk-crypto
22+[`matrix-sdk-ffi`]: ./matrix-sdk-ffi
23+[`matrix-sdk`]: ../crates/matrix-sdk
24+
25+[`matrix-sdk-crypto-wasm`]: https://github.com/matrix-org/matrix-rust-sdk-crypto-wasm
26+[`matrix-sdk-crypto-nodejs`]: https://github.com/matrix-org/matrix-rust-sdk-crypto-nodejs
27+
28+## Contributing
29+
30+To contribute read this [guide](./CONTRIBUTING.md).
Added file: bindings/apple/Debug-Empty-Package.swift+8 additions
@@ -0,0 +1,8 @@
1+// swift-tools-version:5.6
2+
3+// A package manifest for local development. This file will be copied
4+// into the root of the repo when generating an XCFramework.
5+
6+import PackageDescription
7+
8+let package = Package()
Added file: bindings/apple/Debug-Package.swift+25 additions
@@ -0,0 +1,25 @@
1+// swift-tools-version:5.7
2+
3+// A package manifest for local development. This file will be copied
4+// into the root of the repo when generating an XCFramework.
5+
6+import PackageDescription
7+
8+let package = Package(
9+ name: "MatrixRustSDK",
10+ platforms: [
11+ .iOS(.v16),
12+ .macOS(.v12)
13+ ],
14+ products: [
15+ .library(name: "MatrixRustSDK",
16+ type: .dynamic,
17+ targets: ["MatrixRustSDK"]),
18+ ],
19+ targets: [
20+ .binaryTarget(name: "MatrixSDKFFI", path: "bindings/apple/generated/MatrixSDKFFI.xcframework"),
21+ .target(name: "MatrixRustSDK",
22+ dependencies: [.target(name: "MatrixSDKFFI")],
23+ path: "bindings/apple/generated/swift")
24+ ]
25+)
Added file: bindings/apple/MatrixSDKCrypto-Local.podspec+21 additions
@@ -0,0 +1,21 @@
1+# Podspec file for local-development only, which points to local version of generated framework instead of github release
2+# To use this, the file needs to be copied to the root of `matrix-rust-sdk` in order to have access to the source files.`
3+Pod::Spec.new do |s|
4+
5+ s.name = "MatrixSDKCrypto"
6+ s.version = "0.4.1"
7+ s.summary = "Uniffi based bindings for the Rust SDK crypto crate."
8+ s.homepage = "https://github.com/matrix-org/matrix-rust-sdk"
9+ s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
10+ s.author = { "matrix.org" => "support@matrix.org" }
11+
12+ s.ios.deployment_target = "13.0"
13+ s.osx.deployment_target = "10.15"
14+
15+ s.swift_versions = ['5.1', '5.2']
16+
17+ s.source = { :git => "Not Published", :tag => "Cocoapods/#{s.name}/#{s.version}" }
18+ s.vendored_frameworks = "generated/MatrixSDKCryptoFFI.xcframework"
19+ s.source_files = "generated/Sources/**/*.{swift}"
20+ s.resources = ["bindings/matrix-sdk-crypto-ffi/src/**/*.rs", "crates/matrix-sdk-crypto/src/**/*.rs"]
21+end
Added file: bindings/apple/MatrixSDKCrypto.podspec+19 additions
@@ -0,0 +1,19 @@
1+Pod::Spec.new do |s|
2+
3+ s.name = "MatrixSDKCrypto"
4+ s.version = "0.4.1" # Version is only incremented manually and locally before pushing to CocoaPods
5+ s.summary = "Uniffi based bindings for the Rust SDK crypto crate."
6+ s.homepage = "https://github.com/matrix-org/matrix-rust-sdk"
7+ s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
8+ s.author = { "matrix.org" => "support@matrix.org" }
9+
10+ s.ios.deployment_target = "13.0"
11+ s.osx.deployment_target = "10.15"
12+
13+ s.swift_versions = ['5.1', '5.2']
14+
15+ s.source = { :http => "https://github.com/matrix-org/matrix-rust-sdk/releases/download/matrix-sdk-crypto-ffi-#{s.version}/MatrixSDKCryptoFFI.zip" }
16+ s.vendored_frameworks = "MatrixSDKCryptoFFI.xcframework"
17+ s.source_files = "Sources/**/*.{swift}"
18+
19+end
Added file: bindings/apple/Package.swift+33 additions
@@ -0,0 +1,33 @@
1+// swift-tools-version: 5.7
2+// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+import PackageDescription
5+
6+let package = Package(
7+ name: "MatrixRustSDK",
8+ platforms: [
9+ .iOS(.v16),
10+ .macOS(.v12)
11+ ],
12+ products: [
13+ .library(name: "MatrixRustSDK",
14+ targets: ["MatrixRustSDK"]),
15+ ],
16+ targets: [
17+ .target(name: "MatrixRustSDK",
18+ path: "generated/swift",
19+ swiftSettings: [
20+ .unsafeFlags(["-I", "./generated/matrix_sdk_ffi"])
21+ ]),
22+ .testTarget(name: "MatrixRustSDKTests",
23+ dependencies: ["MatrixRustSDK"],
24+ swiftSettings: [
25+ .unsafeFlags(["-I", "./generated/matrix_sdk_ffi"])
26+ ],
27+ linkerSettings: [
28+ .linkedLibrary("matrix_sdk_ffi", .when(platforms: [.macOS])),
29+ .linkedLibrary("matrix_sdk_ffiFFI", .when(platforms: [.linux])),
30+ .unsafeFlags(["-L./generated/matrix_sdk_ffi"])
31+ ])
32+ ]
33+)
Added file: bindings/apple/README.md+115 additions
@@ -0,0 +1,115 @@
1+# Apple platforms support
2+
3+This project and build script demonstrate how to create an XCFramework that can
4+be imported into an Xcode project and run on Apple platforms. It can compile and
5+bundle an [entire SDK](#Building-the-SDK), or only a smaller
6+[Crypto module](#Building-only-the-Crypto-SDK) that provides end-to-end
7+encryption for clients that already depend on an SDK (e.g.
8+[Matrix iOS SDK](https://github.com/matrix-org/matrix-ios-sdk))
9+
10+## Building
11+
12+### Prerequisites for building universal frameworks
13+
14+- the Rust toolchain
15+- Apple targets (e.g.
16+ `rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios aarch64-apple-darwin x86_64-apple-darwin`) <!-- rumdl-disable-line MD013 -->
17+- `xcodebuild` command line tool from
18+ [Apple](https://developer.apple.com/library/archive/technotes/tn2339/_index.html)
19+- `lipo` for creating the fat static libs
20+
21+### Building the SDK
22+
23+```text
24+cargo xtask swift build-framework
25+```
26+
27+The `build-framework` task will go through all the steps required to generate a
28+fully usable `.xcframework`:
29+
30+1. compile `matrix-sdk-ffi` libraries for iOS, the iOS simulator and macOS under
31+ `/target`. Some targets are not part of the standard library and they will be
32+ built using the nightly toolchain.
33+2. `lipo` together the libraries for the same platform under `/generated`
34+3. run `uniffi` and generate the C header, module map and swift files
35+4. `xcodebuild` an `xcframework` from the fat static libs and the original iOS
36+ one, and add the header and module map to it under
37+ `generated/MatrixSDKFFI.xcframework`
38+5. cleanup and delete the generated files except the .xcframework and the swift
39+ sources (that aren't part of the framework)
40+
41+For development purposes, it will additionally generate a `Package.swift` file
42+in the root of the repo that can be used to add the framework to your project
43+and enable debugging through the use of
44+[rust-xcode-plugin](https://github.com/BrainiumLLC/rust-xcode-plugin) (make sure
45+to run the task with the argument `--profile=reldbg`).
46+
47+When building the SDK for release you should pass the `--release` argument to
48+the task, which will strip away any symbols and optimise the created binary.
49+
50+### Building only the crypto SDK
51+
52+```text
53+build_crypto_xcframework.sh
54+```
55+
56+The `build_crypto_xcframework.sh` script will go through all the steps required
57+to generate a fully usable `.xcframework`:
58+
59+1. compile `matrix-sdk-crypto-ffi` libraries for iOS and the iOS simulator under
60+ `/target`
61+2. `lipo` together the libraries for the same platform under `/generated`
62+3. run `uniffi` and generate the C header, module map and swift files
63+4. `xcodebuild` an `xcframework` from the fat static libs and the original iOS
64+ one, and add the header and module map to it under
65+ `generated/MatrixSDKCryptoFFI.xcframework`
66+5. cleanup and delete the generated files except the .xcframework and the swift
67+ sources (that aren't part of the framework)
68+
69+### Building & testing the Swift package
70+
71+The `Package.swift` file in this directory provides a simple example on how to
72+integrate everything together but also a place to run unit and integration tests
73+from.
74+
75+It's pre-configured to link to the generated static lib and .swift files so
76+successfully running `cargo xtask swift build-library` first is necessary for it
77+to compile. Afterwards you can execute the tests with `swift test`. Note that
78+for the moment this only works on macOS but we're planning to add Linux support
79+in the future.
80+
81+## Distribution
82+
83+The generated framework and Swift code can be distributed and integrated
84+directly but in order to make things simpler we bundle them together as a
85+[Swift package](https://github.com/matrix-org/matrix-rust-components-swift/) in
86+the case of SDK, and as a CocoaPods podspec in the case of Crypto SDK.
87+
88+### Publishing `MatrixSDKCrypto`
89+
90+1. Navigate into `bindings/apple` and run
91+ [`build_crypto_xcframework.sh`](#building-only-the-crypto-sdk) script which
92+ generates a .zip file with the framework in `./generated` folder
93+
94+ Note that whilst you can run this command from any git branch, if you want to
95+ make a public release, ensure you are building from latest `main`
96+
97+2. Tag the commit you just used to build the release and push the tag to GitHub
98+
99+ Use `matrix-sdk-crypto-ffi-<major>.<minor>.<patch>` tag name
100+
101+3. Create a new
102+ [GitHub release](https://github.com/matrix-org/matrix-rust-sdk/releases)
103+ using this tag (see
104+ [example](https://github.com/matrix-org/matrix-rust-sdk/releases/tag/matrix-sdk-crypto-ffi-0.3.4))
105+4. Upload the previously generated .zip file to this release
106+5. Increment the version in
107+ [`MatrixSDKCrypto.podspec`](./MatrixSDKCrypto.podspec)
108+
109+ Note that this is not automated and is a local-only change. To determine the
110+ most recent published version, run
111+ `pod repo update && pod search MatrixSDKCrypto` or check git tags via
112+ `git tag | grep matrix-sdk-crypto-ffi`
113+
114+6. Push new Podspec version to Cocoapods via
115+ `pod trunk push MatrixSDKCrypto.podspec --allow-warnings`
Added file: bindings/apple/Tests/MatrixRustSDKTests/ClientTests.swift+51 additions
@@ -0,0 +1,51 @@
1+import XCTest
2+@testable import MatrixRustSDK
3+
4+final class ClientTests: XCTestCase {
5+ func testBuildingWithHomeserverURL() async {
6+ do {
7+ _ = try await ClientBuilder()
8+ .homeserverUrl(url: "https://localhost:8008")
9+ .build()
10+ } catch {
11+ XCTFail("The client should build successfully when given a homeserver.")
12+ }
13+ }
14+
15+ func testBuildingWithHomeserverURLAndUserAgent() async {
16+ do {
17+ _ = try await ClientBuilder()
18+ .homeserverUrl(url: "https://localhost:8008")
19+ .userAgent(userAgent: "golden-eye/007")
20+ .build()
21+ } catch {
22+ XCTFail("The client should build successfully when given a homeserver and user agent.")
23+ }
24+ }
25+
26+ func testBuildingWithInvalidUsername() async {
27+ do {
28+ _ = try await ClientBuilder()
29+ .username(username: "@test:invalid")
30+ .build()
31+
32+ XCTFail("The client should not build when given an invalid username.")
33+ } catch ClientBuildError.ServerUnreachable(let message) {
34+ XCTAssertTrue(message.contains(".well-known"), "The client should fail to do the well-known lookup.")
35+ } catch {
36+ XCTFail("Not expecting any other kind of exception")
37+ }
38+ }
39+
40+ // MARK: - Private
41+
42+ static private var basePath: String {
43+ guard let url = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {
44+ fatalError("Should always be able to retrieve the caches directory")
45+ }
46+
47+ try? FileManager.default.createDirectory(at: url, withIntermediateDirectories: false, attributes: nil)
48+
49+ return url.path
50+ }
51+}
Added file: bindings/apple/build_crypto_xcframework.sh+134 additions
@@ -0,0 +1,134 @@
1+#!/usr/bin/env bash
2+set -eEu
3+
4+helpFunction() {
5+ echo ""
6+ echo "Usage: $0 -only_ios"
7+ echo -e "\t-i Option to build only for iOS. Default will build for all targets."
8+ exit 1
9+}
10+
11+only_ios='false'
12+
13+while getopts ':i' 'opt'; do
14+ case ${opt} in
15+ 'i') only_ios='true' ;;
16+ ?) helpFunction ;;
17+ esac
18+done
19+
20+cd "$(dirname "$0")"
21+
22+# Path to the repo root
23+SRC_ROOT=../..
24+
25+TARGET_DIR="${SRC_ROOT}/target"
26+
27+GENERATED_DIR="${SRC_ROOT}/generated"
28+if [ -d "${GENERATED_DIR}" ]; then rm -rf "${GENERATED_DIR}"; fi
29+mkdir -p ${GENERATED_DIR}/{macos,simulator}
30+
31+REL_FLAG="--release"
32+REL_TYPE_DIR="release"
33+
34+TARGET_CRATE=matrix-sdk-crypto-ffi
35+
36+# Build static libs for all the different architectures
37+
38+# Required by olm-sys crate
39+export IOS_SDK_PATH=`xcrun --show-sdk-path --sdk iphoneos`
40+
41+if ${only_ios}; then
42+ # iOS
43+ echo -e "Building only for iOS"
44+ cargo build -p ${TARGET_CRATE} ${REL_FLAG} --target "aarch64-apple-ios"
45+else
46+ # iOS
47+ echo -e "Building for iOS [1/5]"
48+ cargo build -p ${TARGET_CRATE} ${REL_FLAG} --target "aarch64-apple-ios"
49+
50+ # MacOS
51+ echo -e "\nBuilding for macOS (Apple Silicon) [2/5]"
52+ cargo build -p ${TARGET_CRATE} ${REL_FLAG} --target "aarch64-apple-darwin"
53+ echo -e "\nBuilding for macOS (Intel) [3/5]"
54+ cargo build -p ${TARGET_CRATE} ${REL_FLAG} --target "x86_64-apple-darwin"
55+
56+ # iOS Simulator
57+ echo -e "\nBuilding for iOS Simulator (Apple Silicon) [4/5]"
58+ cargo build -p ${TARGET_CRATE} ${REL_FLAG} --target "aarch64-apple-ios-sim"
59+ echo -e "\nBuilding for iOS Simulator (Intel) [5/5]"
60+ cargo build -p ${TARGET_CRATE} ${REL_FLAG} --target "x86_64-apple-ios"
61+fi
62+
63+echo -e "\nCreating XCFramework"
64+# Lipo together the libraries for the same platform
65+
66+if ! ${only_ios}; then
67+ echo "Lipo together the libraries for the same platform"
68+ # MacOS
69+ lipo -create \
70+ "${TARGET_DIR}/x86_64-apple-darwin/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
71+ "${TARGET_DIR}/aarch64-apple-darwin/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
72+ -output "${GENERATED_DIR}/macos/libmatrix_sdk_crypto_ffi.a"
73+
74+ # iOS Simulator
75+ lipo -create \
76+ "${TARGET_DIR}/x86_64-apple-ios/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
77+ "${TARGET_DIR}/aarch64-apple-ios-sim/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
78+ -output "${GENERATED_DIR}/simulator/libmatrix_sdk_crypto_ffi.a"
79+fi
80+
81+# Generate uniffi files
82+cd ../matrix-sdk-crypto-ffi && cargo run --bin matrix_sdk_crypto_ffi generate \
83+ --language swift \
84+ --library "${TARGET_DIR}/aarch64-apple-ios/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
85+ --out-dir ${GENERATED_DIR}
86+
87+# Move headers to the right place
88+HEADERS_DIR=${GENERATED_DIR}/headers
89+mkdir -p ${HEADERS_DIR}
90+mv ${GENERATED_DIR}/*.h ${HEADERS_DIR}
91+
92+# Rename and merge the modulemap files into a single file to the right place
93+for f in ${GENERATED_DIR}/*.modulemap
94+do
95+ cat $f; echo;
96+done > ${HEADERS_DIR}/module.modulemap
97+rm ${GENERATED_DIR}/*.modulemap
98+
99+# Move source files to the right place
100+SWIFT_DIR="${GENERATED_DIR}/Sources"
101+mkdir -p ${SWIFT_DIR}
102+mv ${GENERATED_DIR}/*.swift ${SWIFT_DIR}
103+
104+# Build the xcframework
105+
106+if [ -d "${GENERATED_DIR}/MatrixSDKCryptoFFI.xcframework" ]; then rm -rf "${GENERATED_DIR}/MatrixSDKCryptoFFI.xcframework"; fi
107+if ${only_ios}; then
108+ xcodebuild -create-xcframework \
109+ -library "${TARGET_DIR}/aarch64-apple-ios/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
110+ -headers ${HEADERS_DIR} \
111+ -output "${GENERATED_DIR}/MatrixSDKCryptoFFI.xcframework"
112+else
113+ xcodebuild -create-xcframework \
114+ -library "${TARGET_DIR}/aarch64-apple-ios/${REL_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" \
115+ -headers ${HEADERS_DIR} \
116+ -library "${GENERATED_DIR}/macos/libmatrix_sdk_crypto_ffi.a" \
117+ -headers ${HEADERS_DIR} \
118+ -library "${GENERATED_DIR}/simulator/libmatrix_sdk_crypto_ffi.a" \
119+ -headers ${HEADERS_DIR} \
120+ -output "${GENERATED_DIR}/MatrixSDKCryptoFFI.xcframework"
121+fi
122+
123+# Cleanup
124+if [ -d "${GENERATED_DIR}/macos" ]; then rm -rf "${GENERATED_DIR}/macos"; fi
125+if [ -d "${GENERATED_DIR}/simulator" ]; then rm -rf "${GENERATED_DIR}/simulator"; fi
126+if [ -d ${HEADERS_DIR} ]; then rm -rf ${HEADERS_DIR}; fi
127+
128+# Zip up framework, sources and LICENSE, ready to be uploaded to GitHub Releases and used by MatrixSDKCrypto.podspec
129+cp ${SRC_ROOT}/LICENSE $GENERATED_DIR
130+cd $GENERATED_DIR
131+zip -r MatrixSDKCryptoFFI.zip MatrixSDKCryptoFFI.xcframework Sources LICENSE
132+rm LICENSE
133+
134+echo "XCFramework is ready 🚀"
Added file: bindings/matrix-sdk-crypto-ffi/Cargo.toml+78 additions
@@ -0,0 +1,78 @@
1+[package]
2+name = "matrix-sdk-crypto-ffi"
3+version = "0.1.0"
4+authors = ["Damir Jelić <poljar@termina.org.uk>"]
5+edition = "2024"
6+rust-version.workspace = true
7+description = "Uniffi based bindings for the Rust SDK crypto crate"
8+repository = "https://github.com/matrix-org/matrix-rust-sdk"
9+license = "Apache-2.0"
10+publish = false
11+
12+[package.metadata.release]
13+release = false
14+
15+[lib]
16+crate-type = ["cdylib", "staticlib"]
17+
18+[[bin]]
19+name = "matrix_sdk_crypto_ffi"
20+path = "uniffi-bindgen.rs"
21+
22+[features]
23+default = ["bundled-sqlite"]
24+bundled-sqlite = ["matrix-sdk-sqlite/bundled"]
25+
26+# Enable experimental support for encrypting state events; see
27+# https://github.com/matrix-org/matrix-rust-sdk/issues/5397.
28+experimental-encrypted-state-events = [
29+ "matrix-sdk-crypto/experimental-encrypted-state-events",
30+]
31+
32+[dependencies]
33+anyhow.workspace = true
34+futures-util.workspace = true
35+hmac.workspace = true
36+http.workspace = true
37+matrix-sdk-common = { workspace = true, features = ["uniffi"] }
38+matrix-sdk-ffi-macros.workspace = true
39+pbkdf2.workspace = true
40+rand.workspace = true
41+ruma.workspace = true
42+serde.workspace = true
43+serde_json.workspace = true
44+sha2.workspace = true
45+thiserror.workspace = true
46+tracing-subscriber = { workspace = true, features = ["env-filter"] }
47+# keep in sync with uniffi dependency in matrix-sdk-ffi, and uniffi_bindgen in ffi CI job
48+uniffi = { workspace = true, features = ["cli"] }
49+vodozemac.workspace = true
50+zeroize = { workspace = true, features = ["zeroize_derive"] }
51+
52+[dependencies.js_int]
53+version = "0.2.2"
54+default-features = false
55+features = ["lax_deserialize"]
56+
57+[dependencies.matrix-sdk-crypto]
58+workspace = true
59+features = ["qrcode", "automatic-room-key-forwarding", "uniffi"]
60+
61+[dependencies.matrix-sdk-sqlite]
62+workspace = true
63+features = ["crypto-store"]
64+
65+[dependencies.tokio]
66+workspace = true
67+features = ["rt-multi-thread"]
68+
69+[build-dependencies]
70+uniffi = { workspace = true, default-features = false, features = ["build"] }
71+vergen-gitcl = { workspace = true, default-features = false, features = ["build"] }
72+
73+[dev-dependencies]
74+assert_matches2.workspace = true
75+tempfile.workspace = true
76+
77+[lints]
78+workspace = true
Added file: bindings/matrix-sdk-crypto-ffi/README.md+99 additions
@@ -0,0 +1,99 @@
1+# Uniffi based bindings for the Rust SDK crypto crate
2+
3+This crate contains Uniffi based bindings for the `matrix-sdk-crypto` crate. The
4+README mainly describes how to build and integrate the bindings into a Kotlin
5+based Android project, but the Android specific bits can be skipped if you are
6+targeting an x86 Linux project.
7+
8+To build and distribute bindings for iOS projects, see a
9+[dedicated page](../apple/README.md)
10+
11+## Prerequisites
12+
13+### Rust
14+
15+To build the bindings [Rust] will be needed it can be either installed using an
16+OS specific package manager or directly with the provided
17+[installer](https://rustup.rs/).
18+
19+### Android NDK
20+
21+The Android NDK will be required as well, it can be installed either through
22+Android Studio or directly using an
23+[installer](https://developer.android.com/ndk/downloads).
24+
25+### Configuring Rust for cross compilation
26+
27+First we'll need to install the Rust target for our desired Android
28+architecture, for example:
29+
30+```text
31+# rustup target add aarch64-linux-android
32+```
33+
34+This will add support to cross-compile for the aarch64-linux-android target,
35+Rust supports many different [targets], you'll have to make sure to pick the
36+right one for your device or emulator.
37+
38+After this is done, we'll have to configure [Cargo] to use the correct linker
39+for our target, by providing the Cargo setting of
40+[target.<triple>.linker](https://doc.rust-lang.org/cargo/reference/config.html#targettriplelinker)
41+with a value of the path to an appropriate linker in your NDK installation.
42+
43+This may be set through an environment variable:
44+
45+```text
46+$ export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="<path-to-ndk-installation>/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang"
47+```
48+
49+Alternatively, it may be set in the `.cargo/config.toml` file in the current
50+directory, any parent directory, or your home directory:
51+
52+```text
53+[target.aarch64-linux-android]
54+linker = "<path-to-ndk-installation>/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang"
55+```
56+
57+## Building
58+
59+To enable cross compilation for `olm-sys` which builds our `libolm` C library
60+we'll need to set the `ANDROID_NDK` environment variable to the location of our
61+Android NDK installation.
62+
63+```text
64+$ export ANDROID_NDK=$HOME/Android/Sdk/ndk/<some-installed-version>
65+```
66+
67+Also, include the NDK tools directory in your `PATH`:
68+
69+```text
70+$ export PATH="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"
71+```
72+
73+### Building for a target
74+
75+The bindings can built for the `aarch64` target with:
76+
77+```text
78+$ cargo build --target aarch64-linux-android
79+```
80+
81+After that, a dynamic library can be found in the
82+`target/aarch64-linux-android/debug` directory, under the repository root
83+directory. The library will be called `libmatrix_sdk_crypto_ffi.so` and needs to
84+be renamed and copied into the `jniLibs` directory of your Android project, for
85+Element Android:
86+
87+```text
88+$ cp ../../target/aarch64-linux-android/debug/libmatrix_sdk_crypto_ffi.so \
89+ /home/example/matrix-sdk-android/src/main/jniLibs/aarch64/libuniffi_olm.so
90+```
91+
92+## License
93+
94+[Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0)
95+
96+[Rust]: https://www.rust-lang.org/
97+[installer]: https://rustup.rs/
98+[targets]: https://doc.rust-lang.org/nightly/rustc/platform-support.html
99+[Cargo]: https://doc.rust-lang.org/cargo/
Added file: bindings/matrix-sdk-crypto-ffi/build.rs+72 additions
@@ -0,0 +1,72 @@
1+use std::{
2+ env,
3+ error::Error,
4+ path::{Path, PathBuf},
5+ process::Command,
6+};
7+
8+use vergen_gitcl::{Emitter, GitclBuilder};
9+
10+/// Adds a temporary workaround for an issue with the Rust compiler and Android
11+/// in x86_64 devices: https://github.com/rust-lang/rust/issues/109717.
12+/// The workaround is based on: https://github.com/mozilla/application-services/pull/5442
13+///
14+/// TODO: I think this is obsolete with cargo-ndk 4.0.0:
15+/// https://github.com/bbqsrc/cargo-ndk/commit/03c738653f935416580803b82fc6ad72c10dbebc
16+///
17+/// IMPORTANT: if you modify this, make sure to modify
18+/// [../matrix-sdk-ffi/build.rs] too!
19+fn setup_x86_64_android_workaround() {
20+ let target_os = env::var("CARGO_CFG_TARGET_OS").expect("CARGO_CFG_TARGET_OS not set");
21+ let target_arch = env::var("CARGO_CFG_TARGET_ARCH").expect("CARGO_CFG_TARGET_ARCH not set");
22+ if target_arch == "x86_64" && target_os == "android" {
23+ // Configure rust to statically link against the `libclang_rt.builtins` supplied
24+ // with clang.
25+
26+ // cargo-ndk sets CC_x86_64-linux-android to the path to `clang`, within the
27+ // Android NDK.
28+ let clang_path = PathBuf::from(
29+ env::var("CC_x86_64-linux-android").expect("CC_x86_64-linux-android not set"),
30+ );
31+
32+ // clang_path should now look something like
33+ // `.../sdk/ndk/28.0.12674087/toolchains/llvm/prebuilt/linux-x86_64/bin/clang`.
34+ // We strip `/bin/clang` from the end to get the toolchain path.
35+ let toolchain_path = clang_path
36+ .ancestors()
37+ .nth(2)
38+ .expect("could not find NDK toolchain path")
39+ .to_str()
40+ .expect("NDK toolchain path is not valid UTF-8");
41+
42+ let clang_version = get_clang_major_version(&clang_path);
43+
44+ println!("cargo:rustc-link-search={toolchain_path}/lib/clang/{clang_version}/lib/linux/");
45+ println!("cargo:rustc-link-lib=static=clang_rt.builtins-x86_64-android");
46+
47+ // Ensure we re-run this build script if the location of the toolchain changes.
48+ println!("cargo:rerun-if-env-changed=CC_x86_64-linux-android");
49+ }
50+}
51+
52+/// Run the clang binary at `clang_path`, and return its major version number
53+fn get_clang_major_version(clang_path: &Path) -> String {
54+ let clang_output =
55+ Command::new(clang_path).arg("-dumpversion").output().expect("failed to start clang");
56+
57+ if !clang_output.status.success() {
58+ panic!("failed to run clang: {}", String::from_utf8_lossy(&clang_output.stderr));
59+ }
60+
61+ let clang_version = String::from_utf8(clang_output.stdout).expect("clang output is not utf8");
62+ clang_version.split('.').next().expect("could not parse clang output").to_owned()
63+}
64+
65+fn main() -> Result<(), Box<dyn Error>> {
66+ setup_x86_64_android_workaround();
67+
68+ let git_config = GitclBuilder::default().sha(true).describe(true, false, None).build()?;
69+ Emitter::default().add_instructions(&git_config)?.emit()?;
70+
71+ Ok(())
72+}
Added file: bindings/matrix-sdk-crypto-ffi/src/backup_recovery_key.rs+229 additions
@@ -0,0 +1,229 @@
1+use std::{collections::HashMap, iter, ops::DerefMut, sync::Arc};
2+
3+use hmac::Hmac;
4+use matrix_sdk_crypto::{
5+ backups::DecryptionError,
6+ store::{CryptoStoreError as InnerStoreError, types::BackupDecryptionKey},
7+};
8+use pbkdf2::pbkdf2;
9+use rand::{RngExt, distr::Alphanumeric, rng};
10+use sha2::Sha512;
11+use thiserror::Error;
12+use zeroize::Zeroize;
13+
14+/// The private part of the backup key, the one used for recovery.
15+#[derive(uniffi::Object)]
16+pub struct BackupRecoveryKey {
17+ pub(crate) inner: BackupDecryptionKey,
18+ pub(crate) passphrase_info: Option<PassphraseInfo>,
19+}
20+
21+/// Error type for the decryption of backed up room keys.
22+#[derive(Debug, Error, uniffi::Error)]
23+#[uniffi(flat_error)]
24+pub enum PkDecryptionError {
25+ /// An internal libolm error happened during decryption.
26+ #[error("Error decryption a PkMessage {0}")]
27+ Olm(#[from] DecryptionError),
28+}
29+
30+/// Error type for the decoding and storing of the backup key.
31+#[derive(Debug, Error, uniffi::Error)]
32+#[uniffi(flat_error)]
33+pub enum DecodeError {
34+ /// An error happened while decoding the recovery key.
35+ #[error(transparent)]
36+ Decode(#[from] matrix_sdk_crypto::backups::DecodeError),
37+ /// An error happened in the storage layer while trying to save the
38+ /// decoded recovery key.
39+ #[error(transparent)]
40+ CryptoStore(#[from] InnerStoreError),
41+}
42+
43+/// Struct containing info about the way the backup key got derived from a
44+/// passphrase.
45+#[derive(Debug, Clone, uniffi::Record)]
46+pub struct PassphraseInfo {
47+ /// The salt that was used during key derivation.
48+ pub private_key_salt: String,
49+ /// The number of PBKDF rounds that were used for key derivation.
50+ pub private_key_iterations: i32,
51+}
52+
53+/// The public part of the backup key.
54+#[derive(uniffi::Record)]
55+pub struct MegolmV1BackupKey {
56+ /// The actual base64 encoded public key.
57+ pub public_key: String,
58+ /// Signatures that have signed our backup key.
59+ pub signatures: HashMap<String, HashMap<String, String>>,
60+ /// The passphrase info, if the key was derived from one.
61+ pub passphrase_info: Option<PassphraseInfo>,
62+ /// Get the full name of the backup algorithm this backup key supports.
63+ pub backup_algorithm: String,
64+}
65+
66+impl BackupRecoveryKey {
67+ const KEY_SIZE: usize = 32;
68+ const SALT_SIZE: usize = 32;
69+ const PBKDF_ROUNDS: i32 = 500_000;
70+}
71+
72+#[matrix_sdk_ffi_macros::export]
73+impl BackupRecoveryKey {
74+ /// Create a new random [`BackupRecoveryKey`].
75+ #[allow(clippy::new_without_default)]
76+ #[uniffi::constructor]
77+ pub fn new() -> Arc<Self> {
78+ Arc::new(Self { inner: BackupDecryptionKey::new(), passphrase_info: None })
79+ }
80+
81+ /// Try to create a [`BackupRecoveryKey`] from a base 64 encoded string.
82+ #[uniffi::constructor]
83+ pub fn from_base64(key: String) -> Result<Arc<Self>, DecodeError> {
84+ Ok(Arc::new(Self { inner: BackupDecryptionKey::from_base64(&key)?, passphrase_info: None }))
85+ }
86+
87+ /// Try to create a [`BackupRecoveryKey`] from a base 58 encoded string.
88+ #[uniffi::constructor]
89+ pub fn from_base58(key: String) -> Result<Arc<Self>, DecodeError> {
90+ Ok(Arc::new(Self { inner: BackupDecryptionKey::from_base58(&key)?, passphrase_info: None }))
91+ }
92+
93+ /// Create a new [`BackupRecoveryKey`] from the given passphrase.
94+ #[uniffi::constructor]
95+ pub fn new_from_passphrase(passphrase: String) -> Arc<Self> {
96+ let mut rng = rng();
97+ let salt: String = iter::repeat(())
98+ .map(|()| rng.sample(Alphanumeric))
99+ .map(char::from)
100+ .take(Self::SALT_SIZE)
101+ .collect();
102+
103+ Self::from_passphrase(passphrase, salt, Self::PBKDF_ROUNDS)
104+ }
105+
106+ /// Restore a [`BackupRecoveryKey`] from the given passphrase.
107+ #[uniffi::constructor]
108+ pub fn from_passphrase(passphrase: String, salt: String, rounds: i32) -> Arc<Self> {
109+ let mut key = Box::new([0u8; Self::KEY_SIZE]);
110+ let rounds = rounds as u32;
111+
112+ pbkdf2::<Hmac<Sha512>>(passphrase.as_bytes(), salt.as_bytes(), rounds, key.deref_mut())
113+ .expect(
114+ "We should be able to expand a passphrase of any length due to \
115+ HMAC being able to be initialized with any input size",
116+ );
117+
118+ let backup_decryption_key = BackupDecryptionKey::from_bytes(&key);
119+
120+ key.zeroize();
121+
122+ Arc::new(Self {
123+ inner: backup_decryption_key,
124+ passphrase_info: Some(PassphraseInfo {
125+ private_key_salt: salt,
126+ private_key_iterations: rounds as i32,
127+ }),
128+ })
129+ }
130+
131+ /// Convert the recovery key to a base 58 encoded string.
132+ pub fn to_base58(&self) -> String {
133+ self.inner.to_base58()
134+ }
135+
136+ /// Convert the recovery key to a base 64 encoded string.
137+ pub fn to_base64(&self) -> String {
138+ self.inner.to_base64()
139+ }
140+
141+ /// Get the public part of the backup key.
142+ pub fn megolm_v1_public_key(&self) -> MegolmV1BackupKey {
143+ let public_key = self.inner.megolm_v1_public_key();
144+
145+ let signatures: HashMap<String, HashMap<String, String>> = public_key
146+ .signatures()
147+ .into_iter()
148+ .map(|(k, v)| {
149+ (
150+ k.to_string(),
151+ v.into_iter()
152+ .map(|(k, v)| {
153+ (
154+ k.to_string(),
155+ match v {
156+ Ok(s) => s.to_base64(),
157+ Err(s) => s.source,
158+ },
159+ )
160+ })
161+ .collect(),
162+ )
163+ })
164+ .collect();
165+
166+ MegolmV1BackupKey {
167+ public_key: public_key.to_base64(),
168+ signatures,
169+ passphrase_info: self.passphrase_info.clone(),
170+ backup_algorithm: public_key.backup_algorithm().to_owned(),
171+ }
172+ }
173+
174+ /// Try to decrypt a message that was encrypted using the public part of the
175+ /// backup key.
176+ pub fn decrypt_v1(
177+ &self,
178+ ephemeral_key: String,
179+ mac: String,
180+ ciphertext: String,
181+ ) -> Result<String, PkDecryptionError> {
182+ self.inner.decrypt_v1(&ephemeral_key, &mac, &ciphertext).map_err(|e| e.into())
183+ }
184+}
185+
186+#[cfg(test)]
187+mod tests {
188+ use ruma::api::client::backup::KeyBackupData;
189+ use serde_json::json;
190+
191+ use super::BackupRecoveryKey;
192+
193+ #[test]
194+ fn test_decrypt_key() {
195+ let recovery_key = BackupRecoveryKey::from_base64(
196+ "Ha9cklU/9NqFo9WKdVfGzmqUL/9wlkdxfEitbSIPVXw".to_owned(),
197+ )
198+ .unwrap();
199+
200+ let data = json!({
201+ "first_message_index": 0,
202+ "forwarded_count": 0,
203+ "is_verified": false,
204+ "session_data": {
205+ "ephemeral": "HlLi76oV6wxHz3PCqE/bxJi6yF1HnYz5Dq3T+d/KpRw",
206+ "ciphertext": "MuM8E3Yc6TSAvhVGb77rQ++jE6p9dRepx63/3YPD2wACKAppkZHeFrnTH6wJ/HSyrmzo\
207+ 7HfwqVl6tKNpfooSTHqUf6x1LHz+h4B/Id5ITO1WYt16AaI40LOnZqTkJZCfSPuE2oxa\
208+ lwEHnCS3biWybutcnrBFPR3LMtaeHvvkb+k3ny9l5ZpsU9G7vCm3XoeYkWfLekWXvDhb\
209+ qWrylXD0+CNUuaQJ/S527TzLd4XKctqVjjO/cCH7q+9utt9WJAfK8LGaWT/mZ3AeWjf5\
210+ kiqOpKKf5Cn4n5SSil5p/pvGYmjnURvZSEeQIzHgvunIBEPtzK/MYEPOXe/P5achNGlC\
211+ x+5N19Ftyp9TFaTFlTWCTi0mpD7ePfCNISrwpozAz9HZc0OhA8+1aSc7rhYFIeAYXFU3\
212+ 26NuFIFHI5pvpSxjzPQlOA+mavIKmiRAtjlLw11IVKTxgrdT4N8lXeMr4ndCSmvIkAzF\
213+ Mo1uZA4fzjiAdQJE4/2WeXFNNpvdfoYmX8Zl9CAYjpSO5HvpwkAbk4/iLEH3hDfCVUwD\
214+ fMh05PdGLnxeRpiEFWSMSsJNp+OWAA+5JsF41BoRGrxoXXT+VKqlUDONd+O296Psu8Q+\
215+ d8/S618",
216+ "mac": "GtMrurhDTwo"
217+ }
218+ });
219+
220+ let key_backup_data: KeyBackupData = serde_json::from_value(data).unwrap();
221+ let ephemeral = key_backup_data.session_data.ephemeral.encode();
222+ let ciphertext = key_backup_data.session_data.ciphertext.encode();
223+ let mac = key_backup_data.session_data.mac.encode();
224+
225+ let _ = recovery_key
226+ .decrypt_v1(ephemeral, mac, ciphertext)
227+ .expect("The backed up key should be decrypted successfully");
228+ }
229+}
Added file: bindings/matrix-sdk-crypto-ffi/src/dehydrated_devices.rs+256 additions
@@ -0,0 +1,256 @@
1+use std::{mem::ManuallyDrop, sync::Arc};
2+
3+use matrix_sdk_common::executor::Handle;
4+use matrix_sdk_crypto::{
5+ DecryptionSettings,
6+ dehydrated_devices::{
7+ DehydratedDevice as InnerDehydratedDevice, DehydratedDevices as InnerDehydratedDevices,
8+ RehydratedDevice as InnerRehydratedDevice,
9+ },
10+ store::types::DehydratedDeviceKey as InnerDehydratedDeviceKey,
11+};
12+use ruma::{OwnedDeviceId, api::client::dehydrated_device, events::AnyToDeviceEvent, serde::Raw};
13+use serde_json::json;
14+
15+use crate::{CryptoStoreError, DehydratedDeviceKey};
16+
17+#[derive(Debug, thiserror::Error, uniffi::Error)]
18+#[uniffi(flat_error)]
19+pub enum DehydrationError {
20+ #[error(transparent)]
21+ Pickle(#[from] matrix_sdk_crypto::vodozemac::DehydratedDeviceError),
22+ #[error(transparent)]
23+ LegacyPickle(#[from] matrix_sdk_crypto::vodozemac::LibolmPickleError),
24+ #[error(transparent)]
25+ MissingSigningKey(#[from] matrix_sdk_crypto::SignatureError),
26+ #[error(transparent)]
27+ Json(#[from] serde_json::Error),
28+ #[error(transparent)]
29+ Store(#[from] matrix_sdk_crypto::CryptoStoreError),
30+ #[error("The pickle key has an invalid length, expected 32 bytes, got {0}")]
31+ PickleKeyLength(usize),
32+}
33+
34+impl From<matrix_sdk_crypto::dehydrated_devices::DehydrationError> for DehydrationError {
35+ fn from(value: matrix_sdk_crypto::dehydrated_devices::DehydrationError) -> Self {
36+ match value {
37+ matrix_sdk_crypto::dehydrated_devices::DehydrationError::Json(e) => Self::Json(e),
38+ matrix_sdk_crypto::dehydrated_devices::DehydrationError::Pickle(e) => Self::Pickle(e),
39+ matrix_sdk_crypto::dehydrated_devices::DehydrationError::LegacyPickle(e) => {
40+ Self::LegacyPickle(e)
41+ }
42+ matrix_sdk_crypto::dehydrated_devices::DehydrationError::MissingSigningKey(e) => {
43+ Self::MissingSigningKey(e)
44+ }
45+ matrix_sdk_crypto::dehydrated_devices::DehydrationError::Store(e) => Self::Store(e),
46+ matrix_sdk_crypto::dehydrated_devices::DehydrationError::PickleKeyLength(l) => {
47+ Self::PickleKeyLength(l)
48+ }
49+ }
50+ }
51+}
52+
53+#[derive(uniffi::Object)]
54+pub struct DehydratedDevices {
55+ pub(crate) runtime: Handle,
56+ pub(crate) inner: ManuallyDrop<InnerDehydratedDevices>,
57+}
58+
59+impl Drop for DehydratedDevices {
60+ fn drop(&mut self) {
61+ // See the drop implementation for the `crate::OlmMachine` for an explanation.
62+ let _guard = self.runtime.enter();
63+ unsafe {
64+ ManuallyDrop::drop(&mut self.inner);
65+ }
66+ }
67+}
68+
69+#[matrix_sdk_ffi_macros::export]
70+impl DehydratedDevices {
71+ pub fn create(&self) -> Result<Arc<DehydratedDevice>, DehydrationError> {
72+ let inner = self.runtime.block_on(self.inner.create())?;
73+
74+ Ok(Arc::new(DehydratedDevice {
75+ inner: ManuallyDrop::new(inner),
76+ runtime: self.runtime.to_owned(),
77+ }))
78+ }
79+
80+ pub fn rehydrate(
81+ &self,
82+ pickle_key: &DehydratedDeviceKey,
83+ device_id: String,
84+ device_data: String,
85+ ) -> Result<Arc<RehydratedDevice>, DehydrationError> {
86+ let device_data: Raw<_> = serde_json::from_str(&device_data)?;
87+ let device_id: OwnedDeviceId = device_id.into();
88+
89+ let key = InnerDehydratedDeviceKey::from_slice(&pickle_key.inner)?;
90+
91+ let ret = RehydratedDevice {
92+ runtime: self.runtime.to_owned(),
93+ inner: ManuallyDrop::new(self.runtime.block_on(self.inner.rehydrate(
94+ &key,
95+ &device_id,
96+ device_data,
97+ ))?),
98+ }
99+ .into();
100+
101+ Ok(ret)
102+ }
103+
104+ /// Get the cached dehydrated device pickle key if any.
105+ ///
106+ /// None if the key was not previously cached (via
107+ /// [`Self::save_dehydrated_device_pickle_key`]).
108+ ///
109+ /// Should be used to periodically rotate the dehydrated device to avoid
110+ /// OTK exhaustion and accumulation of to_device messages.
111+ pub fn get_dehydrated_device_key(
112+ &self,
113+ ) -> Result<Option<crate::DehydratedDeviceKey>, CryptoStoreError> {
114+ Ok(self
115+ .runtime
116+ .block_on(self.inner.get_dehydrated_device_pickle_key())?
117+ .map(crate::DehydratedDeviceKey::from))
118+ }
119+
120+ /// Store the dehydrated device pickle key in the crypto store.
121+ ///
122+ /// This is useful if the client wants to periodically rotate dehydrated
123+ /// devices to avoid OTK exhaustion and accumulated to_device problems.
124+ pub fn save_dehydrated_device_key(
125+ &self,
126+ pickle_key: &crate::DehydratedDeviceKey,
127+ ) -> Result<(), CryptoStoreError> {
128+ let pickle_key = InnerDehydratedDeviceKey::from_slice(&pickle_key.inner)?;
129+ Ok(self.runtime.block_on(self.inner.save_dehydrated_device_pickle_key(&pickle_key))?)
130+ }
131+
132+ /// Deletes the previously stored dehydrated device pickle key.
133+ pub fn delete_dehydrated_device_key(&self) -> Result<(), CryptoStoreError> {
134+ Ok(self.runtime.block_on(self.inner.delete_dehydrated_device_pickle_key())?)
135+ }
136+}
137+
138+#[derive(uniffi::Object)]
139+pub struct RehydratedDevice {
140+ inner: ManuallyDrop<InnerRehydratedDevice>,
141+ runtime: Handle,
142+}
143+
144+impl Drop for RehydratedDevice {
145+ fn drop(&mut self) {
146+ // See the drop implementation for the `crate::OlmMachine` for an explanation.
147+ let _guard = self.runtime.enter();
148+ unsafe {
149+ ManuallyDrop::drop(&mut self.inner);
150+ }
151+ }
152+}
153+
154+#[matrix_sdk_ffi_macros::export]
155+impl RehydratedDevice {
156+ pub fn receive_events(
157+ &self,
158+ events: String,
159+ decryption_settings: &DecryptionSettings,
160+ ) -> Result<(), crate::CryptoStoreError> {
161+ let events: Vec<Raw<AnyToDeviceEvent>> = serde_json::from_str(&events)?;
162+ self.runtime.block_on(self.inner.receive_events(events, decryption_settings))?;
163+
164+ Ok(())
165+ }
166+}
167+
168+#[derive(uniffi::Object)]
169+pub struct DehydratedDevice {
170+ pub(crate) runtime: Handle,
171+ pub(crate) inner: ManuallyDrop<InnerDehydratedDevice>,
172+}
173+
174+impl Drop for DehydratedDevice {
175+ fn drop(&mut self) {
176+ // See the drop implementation for the `crate::OlmMachine` for an explanation.
177+ let _guard = self.runtime.enter();
178+ unsafe {
179+ ManuallyDrop::drop(&mut self.inner);
180+ }
181+ }
182+}
183+
184+#[matrix_sdk_ffi_macros::export]
185+impl DehydratedDevice {
186+ pub fn keys_for_upload(
187+ &self,
188+ device_display_name: String,
189+ pickle_key: &DehydratedDeviceKey,
190+ ) -> Result<UploadDehydratedDeviceRequest, DehydrationError> {
191+ let key = InnerDehydratedDeviceKey::from_slice(&pickle_key.inner)?;
192+
193+ let request =
194+ self.runtime.block_on(self.inner.keys_for_upload(device_display_name, &key))?;
195+
196+ Ok(request.into())
197+ }
198+}
199+
200+#[derive(Debug, uniffi::Record)]
201+pub struct UploadDehydratedDeviceRequest {
202+ /// The serialized JSON body of the request.
203+ body: String,
204+}
205+
206+impl From<dehydrated_device::put_dehydrated_device::unstable::Request>
207+ for UploadDehydratedDeviceRequest
208+{
209+ fn from(value: dehydrated_device::put_dehydrated_device::unstable::Request) -> Self {
210+ let body = json!({
211+ "device_id": value.device_id,
212+ "device_data": value.device_data,
213+ "initial_device_display_name": value.initial_device_display_name,
214+ "device_keys": value.device_keys,
215+ "one_time_keys": value.one_time_keys,
216+ "fallback_keys": value.fallback_keys,
217+ });
218+
219+ let body = serde_json::to_string(&body)
220+ .expect("We should be able to serialize the PUT dehydrated devices request body");
221+
222+ Self { body }
223+ }
224+}
225+
226+#[cfg(test)]
227+mod tests {
228+ use crate::{DehydratedDeviceKey, dehydrated_devices::DehydrationError};
229+
230+ #[test]
231+ fn test_creating_dehydrated_key() {
232+ let dehydrated_device_key = DehydratedDeviceKey::new();
233+ let base_64 = dehydrated_device_key.to_base64();
234+ let inner_bytes = dehydrated_device_key.inner;
235+
236+ let copy = DehydratedDeviceKey::from_slice(&inner_bytes).unwrap();
237+
238+ assert_eq!(base_64, copy.to_base64());
239+ }
240+
241+ #[test]
242+ fn test_creating_dehydrated_key_failure() {
243+ let bytes = [0u8; 24];
244+
245+ let pickle_key = DehydratedDeviceKey::from_slice(&bytes);
246+
247+ assert!(pickle_key.is_err());
248+
249+ match pickle_key {
250+ Err(DehydrationError::PickleKeyLength(pickle_key_length)) => {
251+ assert_eq!(bytes.len(), pickle_key_length);
252+ }
253+ _ => panic!("Should have failed!"),
254+ }
255+ }
256+}
Added file: bindings/matrix-sdk-crypto-ffi/src/device.rs+50 additions
@@ -0,0 +1,50 @@
1+use std::collections::HashMap;
2+
3+use matrix_sdk_crypto::Device as InnerDevice;
4+
5+/// An E2EE capable Matrix device.
6+#[derive(uniffi::Record)]
7+pub struct Device {
8+ /// The device owner.
9+ pub user_id: String,
10+ /// The unique ID of the device.
11+ pub device_id: String,
12+ /// The published public identity keys of the devices
13+ ///
14+ /// A map from the key type (e.g. curve25519) to the base64 encoded key.
15+ pub keys: HashMap<String, String>,
16+ /// The supported algorithms of the device.
17+ pub algorithms: Vec<String>,
18+ /// The human readable name of the device.
19+ pub display_name: Option<String>,
20+ /// A flag indicating if the device has been blocked, blocked devices don't
21+ /// receive any room keys from us.
22+ pub is_blocked: bool,
23+ /// Is the device locally trusted
24+ pub locally_trusted: bool,
25+ /// Is our cross signing identity trusted and does the identity trust the
26+ /// device.
27+ pub cross_signing_trusted: bool,
28+ /// The first time this device was seen in local timestamp, milliseconds
29+ /// since epoch.
30+ pub first_time_seen_ts: u64,
31+ /// Whether or not the device is a dehydrated device.
32+ pub dehydrated: bool,
33+}
34+
35+impl From<InnerDevice> for Device {
36+ fn from(d: InnerDevice) -> Self {
37+ Device {
38+ user_id: d.user_id().to_string(),
39+ device_id: d.device_id().to_string(),
40+ keys: d.keys().iter().map(|(k, v)| (k.to_string(), v.to_base64())).collect(),
41+ algorithms: d.algorithms().iter().map(|a| a.to_string()).collect(),
42+ display_name: d.display_name().map(|d| d.to_owned()),
43+ is_blocked: d.is_blacklisted(),
44+ locally_trusted: d.is_locally_trusted(),
45+ cross_signing_trusted: d.is_cross_signing_trusted(),
46+ first_time_seen_ts: d.first_time_seen_ts().0.into(),
47+ dehydrated: d.is_dehydrated(),
48+ }
49+ }
50+}
Added file: bindings/matrix-sdk-crypto-ffi/src/error.rs+172 additions
@@ -0,0 +1,172 @@
1+#![allow(missing_docs)]
2+
3+use matrix_sdk_crypto::{
4+ KeyExportError, MegolmError, OlmError, SecretImportError as RustSecretImportError,
5+ SignatureError as InnerSignatureError,
6+ store::{CryptoStoreError as InnerStoreError, DehydrationError as InnerDehydrationError},
7+};
8+use matrix_sdk_sqlite::OpenStoreError;
9+use ruma::{IdParseError, OwnedUserId};
10+
11+#[derive(Debug, thiserror::Error, uniffi::Error)]
12+#[uniffi(flat_error)]
13+pub enum KeyImportError {
14+ #[error(transparent)]
15+ Export(#[from] KeyExportError),
16+ #[error(transparent)]
17+ CryptoStore(#[from] InnerStoreError),
18+ #[error(transparent)]
19+ Json(#[from] serde_json::Error),
20+}
21+
22+#[derive(Debug, thiserror::Error, uniffi::Error)]
23+#[uniffi(flat_error)]
24+pub enum SecretImportError {
25+ #[error(transparent)]
26+ CryptoStore(#[from] InnerStoreError),
27+ #[error(transparent)]
28+ Import(#[from] RustSecretImportError),
29+}
30+
31+#[derive(Debug, thiserror::Error, uniffi::Error)]
32+#[uniffi(flat_error)]
33+pub enum SignatureError {
34+ #[error(transparent)]
35+ Signature(#[from] InnerSignatureError),
36+ #[error(transparent)]
37+ Identifier(#[from] IdParseError),
38+ #[error(transparent)]
39+ CryptoStore(#[from] InnerStoreError),
40+ #[error("Unknown device {0} {1}")]
41+ UnknownDevice(OwnedUserId, String),
42+ #[error("Unknown user identity {0}")]
43+ UnknownUserIdentity(String),
44+}
45+
46+#[derive(Debug, thiserror::Error, uniffi::Error)]
47+#[uniffi(flat_error)]
48+pub enum CryptoStoreError {
49+ #[error("Failed to open the store")]
50+ OpenStore(#[from] OpenStoreError),
51+ #[error(transparent)]
52+ CryptoStore(#[from] InnerStoreError),
53+ #[error(transparent)]
54+ OlmError(#[from] OlmError),
55+ #[error(transparent)]
56+ Serialization(#[from] serde_json::Error),
57+ #[error("The given string is not a valid user ID: source {0}, error {1}")]
58+ InvalidUserId(String, IdParseError),
59+ #[error(transparent)]
60+ Identifier(#[from] IdParseError),
61+ #[error(transparent)]
62+ DehydrationError(#[from] InnerDehydrationError),
63+}
64+
65+#[derive(Debug, thiserror::Error, uniffi::Error)]
66+pub enum DecryptionError {
67+ #[error("serialization error: {error}")]
68+ Serialization { error: String },
69+ #[error("identifier parsing error: {error}")]
70+ Identifier { error: String },
71+ #[error("megolm error: {error}")]
72+ Megolm { error: String },
73+ #[error("missing room key: {error}")]
74+ MissingRoomKey { error: String, withheld_code: Option<String> },
75+ #[error("store error: {error}")]
76+ Store { error: String },
77+}
78+
79+/// Error describing what went wrong when exporting a [`SecretsBundle`].
80+///
81+/// The [`SecretsBundle`] can only be exported if we have all cross-signing
82+/// private keys in the store.
83+#[derive(Debug, thiserror::Error, uniffi::Error)]
84+pub enum SecretsBundleExportError {
85+ /// The store itself had an error.
86+ #[error(transparent)]
87+ CryptoStore(CryptoStoreError),
88+ /// We're missing one or more cross-signing keys.
89+ #[error("The store doesn't contain all the cross-signing keys")]
90+ MissingCrossSigningKeys,
91+ /// We have a backup key stored, but we don't know the version of the
92+ /// backup.
93+ #[error("The store contains a backup key, but no backup version")]
94+ MissingBackupVersion,
95+ #[error("serialization error: {error}")]
96+ Serialization { error: String },
97+}
98+
99+impl From<matrix_sdk_crypto::store::SecretsBundleExportError> for SecretsBundleExportError {
100+ fn from(value: matrix_sdk_crypto::store::SecretsBundleExportError) -> Self {
101+ match value {
102+ matrix_sdk_crypto::store::SecretsBundleExportError::Store(e) => {
103+ Self::CryptoStore(e.into())
104+ }
105+ matrix_sdk_crypto::store::SecretsBundleExportError::MissingCrossSigningKey(_)
106+ | matrix_sdk_crypto::store::SecretsBundleExportError::MissingCrossSigningKeys => {
107+ Self::MissingCrossSigningKeys
108+ }
109+ matrix_sdk_crypto::store::SecretsBundleExportError::MissingBackupVersion => {
110+ Self::MissingBackupVersion
111+ }
112+ }
113+ }
114+}
115+
116+impl From<serde_json::Error> for SecretsBundleExportError {
117+ fn from(err: serde_json::Error) -> Self {
118+ Self::Serialization { error: err.to_string() }
119+ }
120+}
121+
122+impl From<MegolmError> for DecryptionError {
123+ fn from(value: MegolmError) -> Self {
124+ match &value {
125+ MegolmError::MissingRoomKey(withheld_code) => Self::MissingRoomKey {
126+ error: value.to_string(),
127+ withheld_code: withheld_code.as_ref().map(|w| w.as_str().to_owned()),
128+ },
129+ _ => Self::Megolm { error: value.to_string() },
130+ }
131+ }
132+}
133+
134+impl From<serde_json::Error> for DecryptionError {
135+ fn from(err: serde_json::Error) -> Self {
136+ Self::Serialization { error: err.to_string() }
137+ }
138+}
139+
140+impl From<IdParseError> for DecryptionError {
141+ fn from(err: IdParseError) -> Self {
142+ Self::Identifier { error: err.to_string() }
143+ }
144+}
145+
146+impl From<InnerStoreError> for DecryptionError {
147+ fn from(err: InnerStoreError) -> Self {
148+ Self::Store { error: err.to_string() }
149+ }
150+}
151+
152+#[cfg(test)]
153+mod tests {
154+ use assert_matches2::assert_let;
155+ use matrix_sdk_crypto::MegolmError;
156+
157+ use super::DecryptionError;
158+
159+ #[test]
160+ fn test_withheld_error_mapping() {
161+ use matrix_sdk_common::deserialized_responses::WithheldCode;
162+
163+ let inner_error = MegolmError::MissingRoomKey(Some(WithheldCode::Unverified));
164+
165+ let binding_error: DecryptionError = inner_error.into();
166+
167+ assert_let!(
168+ DecryptionError::MissingRoomKey { error: _, withheld_code: Some(code) } = binding_error
169+ );
170+ assert_eq!("m.unverified", code)
171+ }
172+}
Added file: bindings/matrix-sdk-crypto-ffi/src/lib.rs+1219 additions
@@ -0,0 +1,1219 @@
1+//! Uniffi based bindings for the `matrix-sdk-crypto` crate.
2+//!
3+//! This crate can be used to introduce E2EE support into an existing Matrix
4+//! client or client library in any of the language targets Uniffi supports.
5+
6+#![warn(missing_docs)]
7+#![allow(unused_qualifications)]
8+
9+mod backup_recovery_key;
10+mod dehydrated_devices;
11+mod device;
12+mod error;
13+mod logger;
14+mod machine;
15+mod responses;
16+mod users;
17+mod verification;
18+
19+use std::{
20+ collections::{BTreeMap, HashMap},
21+ sync::Arc,
22+ time::Duration,
23+};
24+
25+use anyhow::Context as _;
26+pub use backup_recovery_key::{
27+ BackupRecoveryKey, DecodeError, MegolmV1BackupKey, PassphraseInfo, PkDecryptionError,
28+};
29+pub use device::Device;
30+pub use error::{
31+ CryptoStoreError, DecryptionError, KeyImportError, SecretImportError, SignatureError,
32+};
33+use js_int::UInt;
34+pub use logger::{Logger, set_logger};
35+pub use machine::{KeyRequestPair, OlmMachine, SignatureVerification};
36+use matrix_sdk_common::deserialized_responses::{ShieldState as RustShieldState, ShieldStateCode};
37+use matrix_sdk_crypto::{
38+ CollectStrategy, EncryptionSettings as RustEncryptionSettings,
39+ olm::{IdentityKeys, InboundGroupSession, SenderData, Session},
40+ store::{
41+ CryptoStore,
42+ types::{
43+ Changes, DehydratedDeviceKey as InnerDehydratedDeviceKey, PendingChanges,
44+ RoomSettings as RustRoomSettings,
45+ },
46+ },
47+ types::{
48+ DeviceKey, DeviceKeys, EventEncryptionAlgorithm as RustEventEncryptionAlgorithm, SigningKey,
49+ },
50+};
51+use matrix_sdk_sqlite::SqliteCryptoStore;
52+pub use responses::{
53+ BootstrapCrossSigningResult, DeviceLists, KeysImportResult, OutgoingVerificationRequest,
54+ Request, RequestType, SignatureUploadRequest, UploadSigningKeysRequest,
55+};
56+use ruma::{
57+ DeviceKeyAlgorithm, DeviceKeyId, MilliSecondsSinceUnixEpoch, OwnedDeviceId, OwnedUserId,
58+ RoomId, SecondsSinceUnixEpoch, UserId,
59+ events::room::history_visibility::HistoryVisibility as RustHistoryVisibility,
60+};
61+use serde::{Deserialize, Serialize};
62+use tokio::runtime::Runtime;
63+pub use users::UserIdentity;
64+pub use verification::{
65+ CancelInfo, ConfirmVerificationResult, QrCode, QrCodeListener, QrCodeState,
66+ RequestVerificationResult, Sas, SasListener, SasState, ScanResult, StartSasResult,
67+ Verification, VerificationRequest, VerificationRequestListener, VerificationRequestState,
68+};
69+use vodozemac::{Curve25519PublicKey, Ed25519PublicKey};
70+
71+use crate::dehydrated_devices::DehydrationError;
72+
73+/// Struct collecting data that is important to migrate to the rust-sdk
74+#[derive(Deserialize, Serialize, uniffi::Record)]
75+pub struct MigrationData {
76+ /// The pickled version of the Olm Account
77+ account: PickledAccount,
78+ /// The list of pickleds Olm Sessions.
79+ sessions: Vec<PickledSession>,
80+ /// The list of Megolm inbound group sessions.
81+ inbound_group_sessions: Vec<PickledInboundGroupSession>,
82+ /// The Olm pickle key that was used to pickle all the Olm objects.
83+ pickle_key: Vec<u8>,
84+ /// The backup version that is currently active.
85+ backup_version: Option<String>,
86+ // The backup recovery key, as a base58 encoded string.
87+ backup_recovery_key: Option<String>,
88+ /// The private cross signing keys.
89+ cross_signing: CrossSigningKeyExport,
90+ /// The list of users that the Rust SDK should track.
91+ tracked_users: Vec<String>,
92+ /// Map of room settings
93+ room_settings: HashMap<String, RoomSettings>,
94+}
95+
96+/// Struct collecting data that is important to migrate sessions to the rust-sdk
97+#[derive(uniffi::Record)]
98+pub struct SessionMigrationData {
99+ /// The user id that the data belongs to.
100+ user_id: String,
101+ /// The device id that the data belongs to.
102+ device_id: String,
103+ /// The Curve25519 public key of the Account that owns this data.
104+ curve25519_key: String,
105+ /// The Ed25519 public key of the Account that owns this data.
106+ ed25519_key: String,
107+ /// The list of pickleds Olm Sessions.
108+ sessions: Vec<PickledSession>,
109+ /// The list of pickled Megolm inbound group sessions.
110+ inbound_group_sessions: Vec<PickledInboundGroupSession>,
111+ /// The Olm pickle key that was used to pickle all the Olm objects.
112+ pickle_key: Vec<u8>,
113+}
114+
115+/// A pickled version of an `Account`.
116+///
117+/// Holds all the information that needs to be stored in a database to restore
118+/// an account.
119+#[derive(Debug, Deserialize, Serialize, uniffi::Record)]
120+pub struct PickledAccount {
121+ /// The user id of the account owner.
122+ pub user_id: String,
123+ /// The device ID of the account owner.
124+ pub device_id: String,
125+ /// The pickled version of the Olm account.
126+ pub pickle: String,
127+ /// Was the account shared.
128+ pub shared: bool,
129+ /// The number of uploaded one-time keys we have on the server.
130+ pub uploaded_signed_key_count: i64,
131+}
132+
133+/// A pickled version of a `Session`.
134+///
135+/// Holds all the information that needs to be stored in a database to restore
136+/// a Session.
137+#[derive(Debug, Deserialize, Serialize, uniffi::Record)]
138+pub struct PickledSession {
139+ /// The pickle string holding the Olm Session.
140+ pub pickle: String,
141+ /// The curve25519 key of the other user that we share this session with.
142+ pub sender_key: String,
143+ /// Was the session created using a fallback key.
144+ pub created_using_fallback_key: bool,
145+ /// Unix timestamp (in seconds) when the session was created.
146+ pub creation_time: u64,
147+ /// Unix timestamp (in seconds) when the session was last used.
148+ pub last_use_time: u64,
149+}
150+
151+/// A pickled version of an `InboundGroupSession`.
152+///
153+/// Holds all the information that needs to be stored in a database to restore
154+/// an InboundGroupSession.
155+#[derive(Debug, Deserialize, Serialize, uniffi::Record)]
156+pub struct PickledInboundGroupSession {
157+ /// The pickle string holding the InboundGroupSession.
158+ pub pickle: String,
159+ /// The public curve25519 key of the account that sent us the session
160+ pub sender_key: String,
161+ /// The public ed25519 key of the account that sent us the session.
162+ pub signing_key: HashMap<String, String>,
163+ /// The id of the room that the session is used in.
164+ pub room_id: String,
165+ /// The list of claimed ed25519 that forwarded us this key. Will be empty if
166+ /// we directly received this session.
167+ pub forwarding_chains: Vec<String>,
168+ /// Flag remembering if the session was directly sent to us by the sender
169+ /// or if it was imported.
170+ pub imported: bool,
171+ /// Flag remembering if the session has been backed up.
172+ pub backed_up: bool,
173+}
174+
175+/// Error type for the migration process.
176+#[derive(Debug, thiserror::Error, uniffi::Error)]
177+pub enum MigrationError {
178+ /// Generic catch all error variant.
179+ #[error("error migrating database: {error_message}")]
180+ Generic {
181+ /// The error message
182+ error_message: String,
183+ },
184+}
185+
186+impl From<anyhow::Error> for MigrationError {
187+ fn from(e: anyhow::Error) -> MigrationError {
188+ MigrationError::Generic { error_message: e.to_string() }
189+ }
190+}
191+
192+/// Migrate a libolm based setup to a vodozemac based setup stored in a SQLite
193+/// store.
194+///
195+/// # Arguments
196+///
197+/// * `data` - The data that should be migrated over to the SQLite store.
198+///
199+/// * `path` - The path where the SQLite store should be created.
200+///
201+/// * `passphrase` - The passphrase that should be used to encrypt the data at
202+/// rest in the SQLite store. **Warning**, if no passphrase is given, the
203+/// store and all its data will remain unencrypted.
204+///
205+/// * `progress_listener` - A callback that can be used to introspect the
206+/// progress of the migration.
207+#[matrix_sdk_ffi_macros::export]
208+pub fn migrate(
209+ data: MigrationData,
210+ path: String,
211+ passphrase: Option<String>,
212+ progress_listener: Box<dyn ProgressListener>,
213+) -> Result<(), MigrationError> {
214+ let runtime = Runtime::new().context("initializing tokio runtime")?;
215+ runtime.block_on(async move {
216+ migrate_data(data, &path, passphrase, progress_listener).await?;
217+ Ok(())
218+ })
219+}
220+
221+async fn migrate_data(
222+ mut data: MigrationData,
223+ path: &str,
224+ passphrase: Option<String>,
225+ progress_listener: Box<dyn ProgressListener>,
226+) -> anyhow::Result<()> {
227+ use matrix_sdk_crypto::{olm::PrivateCrossSigningIdentity, store::types::BackupDecryptionKey};
228+ use vodozemac::olm::Account;
229+ use zeroize::Zeroize;
230+
231+ // The total steps here include all the sessions/inbound group sessions and
232+ // additionally some static number of steps:
233+ //
234+ // 1. opening the store
235+ // 2. the Account
236+ // 3. the cross signing keys
237+ // 4. the tracked users
238+ // 5. the final save operation
239+ let total_steps = 5 + data.sessions.len() + data.inbound_group_sessions.len();
240+ let mut processed_steps = 0;
241+ let listener = |progress: usize, total: usize| {
242+ progress_listener.on_progress(progress as i32, total as i32)
243+ };
244+
245+ let store = SqliteCryptoStore::open(path, passphrase.as_deref()).await?;
246+
247+ processed_steps += 1;
248+ listener(processed_steps, total_steps);
249+
250+ let user_id = parse_user_id(&data.account.user_id)?;
251+ let device_id: OwnedDeviceId = data.account.device_id.into();
252+
253+ let account = Account::from_libolm_pickle(&data.account.pickle, &data.pickle_key)?;
254+ let pickle = account.pickle();
255+ let identity_keys = Arc::new(account.identity_keys());
256+ let pickled_account = matrix_sdk_crypto::olm::PickledAccount {
257+ user_id: parse_user_id(&data.account.user_id)?,
258+ device_id: device_id.clone(),
259+ pickle,
260+ dehydrated: false, // dehydrated devices are never involved in migration
261+ shared: data.account.shared,
262+ uploaded_signed_key_count: data.account.uploaded_signed_key_count as u64,
263+ creation_local_time: MilliSecondsSinceUnixEpoch::now(),
264+ fallback_key_creation_timestamp: Some(MilliSecondsSinceUnixEpoch::now()),
265+ };
266+ let account = matrix_sdk_crypto::olm::Account::from_pickle(pickled_account)?;
267+
268+ processed_steps += 1;
269+ listener(processed_steps, total_steps);
270+
271+ let (sessions, inbound_group_sessions) = collect_sessions(
272+ processed_steps,
273+ total_steps,
274+ &listener,
275+ &data.pickle_key,
276+ user_id.clone(),
277+ device_id,
278+ identity_keys,
279+ data.sessions,
280+ data.inbound_group_sessions,
281+ )?;
282+
283+ let backup_decryption_key = data
284+ .backup_recovery_key
285+ .map(|k| BackupDecryptionKey::from_base58(k.as_str()))
286+ .transpose()?;
287+
288+ let cross_signing = PrivateCrossSigningIdentity::empty((*user_id).into());
289+ cross_signing
290+ .import_secrets_unchecked(
291+ data.cross_signing.master_key.as_deref(),
292+ data.cross_signing.self_signing_key.as_deref(),
293+ data.cross_signing.user_signing_key.as_deref(),
294+ )
295+ .await?;
296+
297+ data.cross_signing.master_key.zeroize();
298+ data.cross_signing.self_signing_key.zeroize();
299+ data.cross_signing.user_signing_key.zeroize();
300+
301+ processed_steps += 1;
302+ listener(processed_steps, total_steps);
303+
304+ let tracked_users: Vec<_> = data
305+ .tracked_users
306+ .into_iter()
307+ .filter_map(|s| parse_user_id(&s).ok().map(|u| (u, true)))
308+ .collect();
309+
310+ let tracked_users: Vec<_> = tracked_users.iter().map(|(u, d)| (&**u, *d)).collect();
311+ store.save_tracked_users(tracked_users.as_slice()).await?;
312+
313+ processed_steps += 1;
314+ listener(processed_steps, total_steps);
315+
316+ let mut room_settings = HashMap::new();
317+ for (room_id, settings) in data.room_settings {
318+ let room_id = RoomId::parse(room_id)?;
319+ room_settings.insert(room_id, settings.into());
320+ }
321+
322+ store.save_pending_changes(PendingChanges { account: Some(account) }).await?;
323+
324+ let changes = Changes {
325+ private_identity: Some(cross_signing),
326+ sessions,
327+ inbound_group_sessions,
328+ backup_decryption_key,
329+ backup_version: data.backup_version,
330+ room_settings,
331+ ..Default::default()
332+ };
333+
334+ save_changes(processed_steps, total_steps, &listener, changes, &store).await
335+}
336+
337+async fn save_changes(
338+ mut processed_steps: usize,
339+ total_steps: usize,
340+ listener: &dyn Fn(usize, usize),
341+ changes: Changes,
342+ store: &SqliteCryptoStore,
343+) -> anyhow::Result<()> {
344+ store.save_changes(changes).await?;
345+
346+ processed_steps += 1;
347+ listener(processed_steps, total_steps);
348+
349+ Ok(())
350+}
351+
352+/// Migrate sessions and group sessions of a libolm based setup to a vodozemac
353+/// based setup stored in a SQLite store.
354+///
355+/// This method allows you to migrate a subset of the data, it should only be
356+/// used after the [`migrate()`] method has been already used.
357+///
358+/// # Arguments
359+///
360+/// * `data` - The data that should be migrated over to the SQLite store.
361+///
362+/// * `path` - The path where the SQLite store should be created.
363+///
364+/// * `passphrase` - The passphrase that should be used to encrypt the data at
365+/// rest in the SQLite store. **Warning**, if no passphrase is given, the
366+/// store and all its data will remain unencrypted.
367+///
368+/// * `progress_listener` - A callback that can be used to introspect the
369+/// progress of the migration.
370+#[matrix_sdk_ffi_macros::export]
371+pub fn migrate_sessions(
372+ data: SessionMigrationData,
373+ path: String,
374+ passphrase: Option<String>,
375+ progress_listener: Box<dyn ProgressListener>,
376+) -> Result<(), MigrationError> {
377+ let runtime = Runtime::new().context("initializing tokio runtime")?;
378+ runtime.block_on(migrate_session_data(data, &path, passphrase, progress_listener))?;
379+ Ok(())
380+}
381+
382+async fn migrate_session_data(
383+ data: SessionMigrationData,
384+ path: &str,
385+ passphrase: Option<String>,
386+ progress_listener: Box<dyn ProgressListener>,
387+) -> anyhow::Result<()> {
388+ let store = SqliteCryptoStore::open(path, passphrase.as_deref()).await?;
389+
390+ let listener = |progress: usize, total: usize| {
391+ progress_listener.on_progress(progress as i32, total as i32)
392+ };
393+
394+ let total_steps = 1 + data.sessions.len() + data.inbound_group_sessions.len();
395+ let processed_steps = 0;
396+
397+ let user_id = UserId::parse(data.user_id)?;
398+ let device_id: OwnedDeviceId = data.device_id.into();
399+
400+ let identity_keys = IdentityKeys {
401+ ed25519: Ed25519PublicKey::from_base64(&data.ed25519_key)?,
402+ curve25519: Curve25519PublicKey::from_base64(&data.curve25519_key)?,
403+ }
404+ .into();
405+
406+ let (sessions, inbound_group_sessions) = collect_sessions(
407+ processed_steps,
408+ total_steps,
409+ &listener,
410+ &data.pickle_key,
411+ user_id,
412+ device_id,
413+ identity_keys,
414+ data.sessions,
415+ data.inbound_group_sessions,
416+ )?;
417+
418+ let changes = Changes { sessions, inbound_group_sessions, ..Default::default() };
419+ save_changes(processed_steps, total_steps, &listener, changes, &store).await
420+}
421+
422+#[allow(clippy::too_many_arguments)]
423+fn collect_sessions(
424+ mut processed_steps: usize,
425+ total_steps: usize,
426+ listener: &dyn Fn(usize, usize),
427+ pickle_key: &[u8],
428+ user_id: OwnedUserId,
429+ device_id: OwnedDeviceId,
430+ identity_keys: Arc<IdentityKeys>,
431+ session_pickles: Vec<PickledSession>,
432+ group_session_pickles: Vec<PickledInboundGroupSession>,
433+) -> anyhow::Result<(Vec<Session>, Vec<InboundGroupSession>)> {
434+ let mut sessions = Vec::new();
435+
436+ // Create a DeviceKeys struct with enough information to get a working
437+ // Session, but we will won't actually use the Sessions (and we'll clear
438+ // the session cache after migration) so we don't need to worry about
439+ // signatures.
440+ let device_keys = DeviceKeys::new(
441+ user_id,
442+ device_id.clone(),
443+ Default::default(),
444+ BTreeMap::from([
445+ (
446+ DeviceKeyId::from_parts(DeviceKeyAlgorithm::Ed25519, &device_id),
447+ DeviceKey::Ed25519(identity_keys.ed25519),
448+ ),
449+ (
450+ DeviceKeyId::from_parts(DeviceKeyAlgorithm::Curve25519, &device_id),
451+ DeviceKey::Curve25519(identity_keys.curve25519),
452+ ),
453+ ]),
454+ Default::default(),
455+ );
456+
457+ for session_pickle in session_pickles {
458+ let pickle =
459+ vodozemac::olm::Session::from_libolm_pickle(&session_pickle.pickle, pickle_key)?
460+ .pickle();
461+
462+ let creation_time = SecondsSinceUnixEpoch(
463+ UInt::new(session_pickle.creation_time).context("invalid creation timestamp")?,
464+ );
465+ let last_use_time = SecondsSinceUnixEpoch(
466+ UInt::new(session_pickle.last_use_time).context("invalid last use timestamp")?,
467+ );
468+
469+ let pickle = matrix_sdk_crypto::olm::PickledSession {
470+ pickle,
471+ sender_key: Curve25519PublicKey::from_base64(&session_pickle.sender_key)?,
472+ created_using_fallback_key: session_pickle.created_using_fallback_key,
473+ creation_time,
474+ last_use_time,
475+ };
476+
477+ let session = Session::from_pickle(device_keys.clone(), pickle)?;
478+
479+ sessions.push(session);
480+ processed_steps += 1;
481+ listener(processed_steps, total_steps);
482+ }
483+
484+ let mut inbound_group_sessions = Vec::new();
485+
486+ for session in group_session_pickles {
487+ let pickle = vodozemac::megolm::InboundGroupSession::from_libolm_pickle(
488+ &session.pickle,
489+ pickle_key,
490+ )?
491+ .pickle();
492+
493+ let sender_key = Curve25519PublicKey::from_base64(&session.sender_key)?;
494+
495+ let pickle = matrix_sdk_crypto::olm::PickledInboundGroupSession {
496+ pickle,
497+ sender_key,
498+ signing_key: session
499+ .signing_key
500+ .into_iter()
501+ .map(|(k, v)| {
502+ let algorithm = DeviceKeyAlgorithm::from(k);
503+ let key = SigningKey::from_parts(&algorithm, v)?;
504+
505+ Ok((algorithm, key))
506+ })
507+ .collect::<anyhow::Result<_>>()?,
508+ sender_data: SenderData::legacy(),
509+ forwarder_data: None,
510+ room_id: RoomId::parse(session.room_id)?,
511+ imported: session.imported,
512+ backed_up: session.backed_up,
513+ history_visibility: None,
514+ shared_history: false,
515+ algorithm: RustEventEncryptionAlgorithm::MegolmV1AesSha2,
516+ };
517+
518+ let session = matrix_sdk_crypto::olm::InboundGroupSession::from_pickle(pickle)?;
519+
520+ inbound_group_sessions.push(session);
521+ processed_steps += 1;
522+ listener(processed_steps, total_steps);
523+ }
524+
525+ Ok((sessions, inbound_group_sessions))
526+}
527+
528+/// Migrate room settings, including room algorithm and whether to block
529+/// untrusted devices from legacy store to Sqlite store.
530+///
531+/// Note that this method should only be used if a client has already migrated
532+/// account data via [migrate](#method.migrate) method, which did not include
533+/// room settings. For a brand new migration, the [migrate](#method.migrate)
534+/// method will take care of room settings automatically, if provided.
535+///
536+/// # Arguments
537+///
538+/// * `room_settings` - Map of room settings
539+///
540+/// * `path` - The path where the Sqlite store should be created.
541+///
542+/// * `passphrase` - The passphrase that should be used to encrypt the data at
543+/// rest in the Sqlite store. **Warning**, if no passphrase is given, the
544+/// store and all its data will remain unencrypted.
545+#[matrix_sdk_ffi_macros::export]
546+pub fn migrate_room_settings(
547+ room_settings: HashMap<String, RoomSettings>,
548+ path: String,
549+ passphrase: Option<String>,
550+) -> Result<(), MigrationError> {
551+ let runtime = Runtime::new().context("initializing tokio runtime")?;
552+ runtime.block_on(async move {
553+ let store = SqliteCryptoStore::open(path, passphrase.as_deref())
554+ .await
555+ .context("opening sqlite crypto store")?;
556+
557+ let mut rust_settings = HashMap::new();
558+ for (room_id, settings) in room_settings {
559+ let room_id = RoomId::parse(room_id).context("parsing room ID")?;
560+ rust_settings.insert(room_id, settings.into());
561+ }
562+
563+ let changes = Changes { room_settings: rust_settings, ..Default::default() };
564+ store.save_changes(changes).await.context("saving changes")?;
565+
566+ Ok(())
567+ })
568+}
569+
570+/// Callback that will be passed over the FFI to report progress
571+#[matrix_sdk_ffi_macros::export(callback_interface)]
572+pub trait ProgressListener {
573+ /// The callback that should be called on the Rust side
574+ ///
575+ /// # Arguments
576+ ///
577+ /// * `progress` - The current number of items that have been handled
578+ ///
579+ /// * `total` - The total number of items that will be handled
580+ fn on_progress(&self, progress: i32, total: i32);
581+}
582+
583+impl<T: Fn(i32, i32)> ProgressListener for T {
584+ fn on_progress(&self, progress: i32, total: i32) {
585+ self(progress, total)
586+ }
587+}
588+
589+/// An encryption algorithm to be used to encrypt messages sent to a room.
590+#[derive(Debug, Deserialize, Serialize, PartialEq, uniffi::Enum)]
591+pub enum EventEncryptionAlgorithm {
592+ /// Olm version 1 using Curve25519, AES-256, and SHA-256.
593+ OlmV1Curve25519AesSha2,
594+ /// Megolm version 1 using AES-256 and SHA-256.
595+ MegolmV1AesSha2,
596+}
597+
598+impl From<EventEncryptionAlgorithm> for RustEventEncryptionAlgorithm {
599+ fn from(a: EventEncryptionAlgorithm) -> Self {
600+ match a {
601+ EventEncryptionAlgorithm::OlmV1Curve25519AesSha2 => Self::OlmV1Curve25519AesSha2,
602+ EventEncryptionAlgorithm::MegolmV1AesSha2 => Self::MegolmV1AesSha2,
603+ }
604+ }
605+}
606+
607+impl TryFrom<RustEventEncryptionAlgorithm> for EventEncryptionAlgorithm {
608+ type Error = serde_json::Error;
609+
610+ fn try_from(value: RustEventEncryptionAlgorithm) -> Result<Self, Self::Error> {
611+ match value {
612+ RustEventEncryptionAlgorithm::OlmV1Curve25519AesSha2 => {
613+ Ok(Self::OlmV1Curve25519AesSha2)
614+ }
615+ RustEventEncryptionAlgorithm::MegolmV1AesSha2 => Ok(Self::MegolmV1AesSha2),
616+ _ => Err(serde::de::Error::custom(format!("Unsupported algorithm {value}"))),
617+ }
618+ }
619+}
620+
621+/// Who can see a room's history.
622+#[derive(uniffi::Enum)]
623+pub enum HistoryVisibility {
624+ /// Previous events are accessible to newly joined members from the point
625+ /// they were invited onwards.
626+ ///
627+ /// Events stop being accessible when the member's state changes to
628+ /// something other than *invite* or *join*.
629+ Invited,
630+
631+ /// Previous events are accessible to newly joined members from the point
632+ /// they joined the room onwards.
633+ /// Events stop being accessible when the member's state changes to
634+ /// something other than *join*.
635+ Joined,
636+
637+ /// Previous events are always accessible to newly joined members.
638+ ///
639+ /// All events in the room are accessible, even those sent when the member
640+ /// was not a part of the room.
641+ Shared,
642+
643+ /// All events while this is the `HistoryVisibility` value may be shared by
644+ /// any participating homeserver with anyone, regardless of whether they
645+ /// have ever joined the room.
646+ WorldReadable,
647+}
648+
649+impl From<HistoryVisibility> for RustHistoryVisibility {
650+ fn from(h: HistoryVisibility) -> Self {
651+ match h {
652+ HistoryVisibility::Invited => Self::Invited,
653+ HistoryVisibility::Joined => Self::Joined,
654+ HistoryVisibility::Shared => Self::Shared,
655+ HistoryVisibility::WorldReadable => Self::Shared,
656+ }
657+ }
658+}
659+
660+/// Settings that should be used when a room key is shared.
661+///
662+/// These settings control which algorithm the room key should use, how long a
663+/// room key should be used and some other important information that determines
664+/// the lifetime of a room key.
665+#[derive(uniffi::Record)]
666+pub struct EncryptionSettings {
667+ /// The encryption algorithm that should be used in the room.
668+ pub algorithm: EventEncryptionAlgorithm,
669+ /// Whether state event encryption is enabled.
670+ #[cfg(feature = "experimental-encrypted-state-events")]
671+ pub encrypt_state_events: bool,
672+ /// How long can the room key be used before it should be rotated. Time in
673+ /// seconds.
674+ pub rotation_period: u64,
675+ /// How many messages should be sent before the room key should be rotated.
676+ pub rotation_period_msgs: u64,
677+ /// The current history visibility of the room. The visibility will be
678+ /// tracked by the room key and the key will be rotated if the visibility
679+ /// changes.
680+ pub history_visibility: HistoryVisibility,
681+ /// Should untrusted devices receive the room key, or should they be
682+ /// excluded from the conversation.
683+ pub only_allow_trusted_devices: bool,
684+ /// Should fail to send when a verified user has unverified devices, or when
685+ /// a previously verified user replaces their identity.
686+ pub error_on_verified_user_problem: bool,
687+}
688+
689+impl From<EncryptionSettings> for RustEncryptionSettings {
690+ fn from(v: EncryptionSettings) -> Self {
691+ let sharing_strategy = if v.only_allow_trusted_devices {
692+ CollectStrategy::OnlyTrustedDevices
693+ } else if v.error_on_verified_user_problem {
694+ CollectStrategy::ErrorOnVerifiedUserProblem
695+ } else {
696+ CollectStrategy::AllDevices
697+ };
698+
699+ RustEncryptionSettings {
700+ algorithm: v.algorithm.into(),
701+ #[cfg(feature = "experimental-encrypted-state-events")]
702+ encrypt_state_events: false,
703+ rotation_period: Duration::from_secs(v.rotation_period),
704+ rotation_period_msgs: v.rotation_period_msgs,
705+ history_visibility: v.history_visibility.into(),
706+ sharing_strategy,
707+ }
708+ }
709+}
710+
711+/// An event that was successfully decrypted.
712+#[derive(uniffi::Record)]
713+pub struct DecryptedEvent {
714+ /// The decrypted version of the event.
715+ pub clear_event: String,
716+ /// The claimed curve25519 key of the sender.
717+ pub sender_curve25519_key: String,
718+ /// The claimed ed25519 key of the sender.
719+ pub claimed_ed25519_key: Option<String>,
720+ /// The curve25519 chain of the senders that forwarded the Megolm decryption
721+ /// key to us. Is empty if the key came directly from the sender of the
722+ /// event.
723+ pub forwarding_curve25519_chain: Vec<String>,
724+ /// The shield state (color and message to display to user) for the event,
725+ /// representing the event's authenticity. Computed from the properties of
726+ /// the sender user identity and their Olm device.
727+ ///
728+ /// Note that this is computed at time of decryption, so the value reflects
729+ /// the computed event authenticity at that time. Authenticity-related
730+ /// properties can change later on, such as when a user identity is
731+ /// subsequently verified or a device is deleted.
732+ pub shield_state: ShieldState,
733+}
734+
735+/// Take a look at [`matrix_sdk_common::deserialized_responses::ShieldState`]
736+/// for more info.
737+#[allow(missing_docs)]
738+#[derive(uniffi::Enum)]
739+pub enum ShieldColor {
740+ Red,
741+ Grey,
742+ None,
743+}
744+
745+/// Take a look at [`matrix_sdk_common::deserialized_responses::ShieldState`]
746+/// for more info.
747+#[derive(uniffi::Record)]
748+#[allow(missing_docs)]
749+pub struct ShieldState {
750+ color: ShieldColor,
751+ code: Option<ShieldStateCode>,
752+ message: Option<String>,
753+}
754+
755+impl From<RustShieldState> for ShieldState {
756+ fn from(value: RustShieldState) -> Self {
757+ match value {
758+ RustShieldState::Red { code, message } => Self {
759+ color: ShieldColor::Red,
760+ code: Some(code),
761+ message: Some(message.to_owned()),
762+ },
763+ RustShieldState::Grey { code, message } => Self {
764+ color: ShieldColor::Grey,
765+ code: Some(code),
766+ message: Some(message.to_owned()),
767+ },
768+ RustShieldState::None => Self { color: ShieldColor::None, code: None, message: None },
769+ }
770+ }
771+}
772+
773+/// Struct representing the state of our private cross signing keys, it shows
774+/// which private cross signing keys we have locally stored.
775+#[derive(Debug, Clone, uniffi::Record)]
776+pub struct CrossSigningStatus {
777+ /// Do we have the master key.
778+ pub has_master: bool,
779+ /// Do we have the self signing key, this one is necessary to sign our own
780+ /// devices.
781+ pub has_self_signing: bool,
782+ /// Do we have the user signing key, this one is necessary to sign other
783+ /// users.
784+ pub has_user_signing: bool,
785+}
786+
787+/// A struct containing private cross signing keys that can be backed up or
788+/// uploaded to the secret store.
789+#[derive(Deserialize, Serialize, uniffi::Record)]
790+pub struct CrossSigningKeyExport {
791+ /// The seed of the master key encoded as unpadded base64.
792+ pub master_key: Option<String>,
793+ /// The seed of the self signing key encoded as unpadded base64.
794+ pub self_signing_key: Option<String>,
795+ /// The seed of the user signing key encoded as unpadded base64.
796+ pub user_signing_key: Option<String>,
797+}
798+
799+/// Struct holding the number of room keys we have.
800+#[derive(uniffi::Record)]
801+pub struct RoomKeyCounts {
802+ /// The total number of room keys.
803+ pub total: i64,
804+ /// The number of backed up room keys.
805+ pub backed_up: i64,
806+}
807+
808+/// Backup keys and information we load from the store.
809+#[derive(uniffi::Object)]
810+pub struct BackupKeys {
811+ /// The recovery key as a base64 encoded string.
812+ recovery_key: Arc<BackupRecoveryKey>,
813+ /// The version that is used with the recovery key.
814+ backup_version: String,
815+}
816+
817+#[matrix_sdk_ffi_macros::export]
818+impl BackupKeys {
819+ /// Get the recovery key that we're holding on to.
820+ pub fn recovery_key(&self) -> Arc<BackupRecoveryKey> {
821+ self.recovery_key.clone()
822+ }
823+
824+ /// Get the backups version that we're holding on to.
825+ pub fn backup_version(&self) -> String {
826+ self.backup_version.to_owned()
827+ }
828+}
829+
830+impl TryFrom<matrix_sdk_crypto::store::types::BackupKeys> for BackupKeys {
831+ type Error = ();
832+
833+ fn try_from(keys: matrix_sdk_crypto::store::types::BackupKeys) -> Result<Self, Self::Error> {
834+ Ok(Self {
835+ recovery_key: BackupRecoveryKey {
836+ inner: keys.decryption_key.ok_or(())?,
837+ passphrase_info: None,
838+ }
839+ .into(),
840+ backup_version: keys.backup_version.ok_or(())?,
841+ })
842+ }
843+}
844+
845+/// Dehydrated device key
846+#[derive(uniffi::Record, Clone)]
847+pub struct DehydratedDeviceKey {
848+ pub(crate) inner: Vec<u8>,
849+}
850+
851+impl DehydratedDeviceKey {
852+ /// Generates a new random pickle key.
853+ #[allow(clippy::new_without_default)]
854+ pub fn new() -> Self {
855+ InnerDehydratedDeviceKey::new().into()
856+ }
857+
858+ /// Creates a new dehydration pickle key from the given slice.
859+ ///
860+ /// Fail if the slice length is not 32.
861+ pub fn from_slice(slice: &[u8]) -> Result<Self, DehydrationError> {
862+ let inner = InnerDehydratedDeviceKey::from_slice(slice)?;
863+ Ok(inner.into())
864+ }
865+
866+ /// Export the [`DehydratedDeviceKey`] as a base64 encoded string.
867+ pub fn to_base64(&self) -> String {
868+ let inner = InnerDehydratedDeviceKey::from_slice(&self.inner).unwrap();
869+ inner.to_base64()
870+ }
871+}
872+impl From<InnerDehydratedDeviceKey> for DehydratedDeviceKey {
873+ fn from(pickle_key: InnerDehydratedDeviceKey) -> Self {
874+ DehydratedDeviceKey { inner: pickle_key.into() }
875+ }
876+}
877+
878+impl From<matrix_sdk_crypto::store::types::RoomKeyCounts> for RoomKeyCounts {
879+ fn from(count: matrix_sdk_crypto::store::types::RoomKeyCounts) -> Self {
880+ Self { total: count.total as i64, backed_up: count.backed_up as i64 }
881+ }
882+}
883+
884+impl From<matrix_sdk_crypto::CrossSigningKeyExport> for CrossSigningKeyExport {
885+ fn from(e: matrix_sdk_crypto::CrossSigningKeyExport) -> Self {
886+ Self {
887+ master_key: e.master_key.clone(),
888+ self_signing_key: e.self_signing_key.clone(),
889+ user_signing_key: e.user_signing_key.clone(),
890+ }
891+ }
892+}
893+
894+impl From<CrossSigningKeyExport> for matrix_sdk_crypto::CrossSigningKeyExport {
895+ fn from(e: CrossSigningKeyExport) -> Self {
896+ matrix_sdk_crypto::CrossSigningKeyExport {
897+ master_key: e.master_key,
898+ self_signing_key: e.self_signing_key,
899+ user_signing_key: e.user_signing_key,
900+ }
901+ }
902+}
903+
904+impl From<matrix_sdk_crypto::CrossSigningStatus> for CrossSigningStatus {
905+ fn from(s: matrix_sdk_crypto::CrossSigningStatus) -> Self {
906+ Self {
907+ has_master: s.has_master,
908+ has_self_signing: s.has_self_signing,
909+ has_user_signing: s.has_user_signing,
910+ }
911+ }
912+}
913+
914+/// Room encryption settings which are modified by state events or user options
915+#[derive(Debug, PartialEq, Deserialize, Serialize, uniffi::Record)]
916+pub struct RoomSettings {
917+ /// The encryption algorithm that should be used in the room.
918+ pub algorithm: EventEncryptionAlgorithm,
919+ /// Whether state event encryption is enabled.
920+ #[cfg(feature = "experimental-encrypted-state-events")]
921+ #[serde(default)]
922+ pub encrypt_state_events: bool,
923+ /// Should untrusted devices receive the room key, or should they be
924+ /// excluded from the conversation.
925+ pub only_allow_trusted_devices: bool,
926+}
927+
928+impl TryFrom<RustRoomSettings> for RoomSettings {
929+ type Error = serde_json::Error;
930+
931+ fn try_from(value: RustRoomSettings) -> Result<Self, Self::Error> {
932+ let algorithm = value.algorithm.try_into()?;
933+ Ok(Self {
934+ algorithm,
935+ #[cfg(feature = "experimental-encrypted-state-events")]
936+ encrypt_state_events: value.encrypt_state_events,
937+ only_allow_trusted_devices: value.only_allow_trusted_devices,
938+ })
939+ }
940+}
941+
942+impl From<RoomSettings> for RustRoomSettings {
943+ fn from(value: RoomSettings) -> Self {
944+ Self {
945+ algorithm: value.algorithm.into(),
946+ only_allow_trusted_devices: value.only_allow_trusted_devices,
947+ ..RustRoomSettings::default()
948+ }
949+ }
950+}
951+
952+fn parse_user_id(user_id: &str) -> Result<OwnedUserId, CryptoStoreError> {
953+ ruma::UserId::parse(user_id).map_err(|e| CryptoStoreError::InvalidUserId(user_id.to_owned(), e))
954+}
955+
956+#[matrix_sdk_ffi_macros::export]
957+fn version_info() -> VersionInfo {
958+ VersionInfo {
959+ version: matrix_sdk_crypto::VERSION.to_owned(),
960+ vodozemac_version: matrix_sdk_crypto::vodozemac::VERSION.to_owned(),
961+ git_description: env!("VERGEN_GIT_DESCRIBE").to_owned(),
962+ git_sha: env!("VERGEN_GIT_SHA").to_owned(),
963+ }
964+}
965+
966+/// Build-time information about important crates that are used.
967+#[derive(uniffi::Record)]
968+pub struct VersionInfo {
969+ /// The version of the matrix-sdk-crypto crate.
970+ pub version: String,
971+ /// The version of the vodozemac crate.
972+ pub vodozemac_version: String,
973+ /// The Git commit hash of the crate's source tree at build time.
974+ pub git_sha: String,
975+ /// The build-time output of the `git describe` command of the source tree
976+ /// of crate.
977+ pub git_description: String,
978+}
979+
980+#[matrix_sdk_ffi_macros::export]
981+fn version() -> String {
982+ matrix_sdk_crypto::VERSION.to_owned()
983+}
984+
985+#[matrix_sdk_ffi_macros::export]
986+fn vodozemac_version() -> String {
987+ vodozemac::VERSION.to_owned()
988+}
989+
990+/// The encryption component of PkEncryption support.
991+///
992+/// This struct can be created using a [`Curve25519PublicKey`] corresponding to
993+/// a `PkDecryption` object, allowing messages to be encrypted for the
994+/// associated decryption object.
995+#[derive(uniffi::Object)]
996+pub struct PkEncryption {
997+ inner: matrix_sdk_crypto::vodozemac::pk_encryption::PkEncryption,
998+}
999+
1000+#[matrix_sdk_ffi_macros::export]
1001+impl PkEncryption {
1002+ /// Create a new [`PkEncryption`] object from a `Curve25519PublicKey`
1003+ /// encoded as Base64.
1004+ ///
1005+ /// The public key should come from an existing `PkDecryption` object.
1006+ /// Returns a `DecodeError` if the Curve25519 key could not be decoded
1007+ /// correctly.
1008+ #[uniffi::constructor]
1009+ pub fn from_base64(key: &str) -> Result<Arc<Self>, DecodeError> {
1010+ let key = vodozemac::Curve25519PublicKey::from_base64(key)
1011+ .map_err(matrix_sdk_crypto::backups::DecodeError::PublicKey)?;
1012+ let inner = vodozemac::pk_encryption::PkEncryption::from_key(key);
1013+
1014+ Ok(Self { inner }.into())
1015+ }
1016+
1017+ /// Encrypt a message using this [`PkEncryption`] object.
1018+ pub fn encrypt(&self, plaintext: &str) -> Option<PkMessage> {
1019+ use vodozemac::base64_encode;
1020+
1021+ let message = self.inner.encrypt(plaintext.as_ref()).ok()?;
1022+
1023+ let vodozemac::pk_encryption::Message { ciphertext, mac, ephemeral_key } = message;
1024+
1025+ Some(PkMessage {
1026+ ciphertext: base64_encode(ciphertext),
1027+ mac: base64_encode(mac),
1028+ ephemeral_key: ephemeral_key.to_base64(),
1029+ })
1030+ }
1031+}
1032+
1033+/// A message that was encrypted using a [`PkEncryption`] object.
1034+#[derive(uniffi::Record)]
1035+pub struct PkMessage {
1036+ /// The ciphertext of the message.
1037+ pub ciphertext: String,
1038+ /// The message authentication code of the message.
1039+ ///
1040+ /// *Warning*: This does not authenticate the ciphertext.
1041+ pub mac: String,
1042+ /// The ephemeral Curve25519 key of the message which was used to derive the
1043+ /// individual message key.
1044+ pub ephemeral_key: String,
1045+}
1046+
1047+uniffi::setup_scaffolding!();
1048+
1049+#[cfg(test)]
1050+mod tests {
1051+ use anyhow::Result;
1052+ use serde_json::{Value, json};
1053+ use tempfile::tempdir;
1054+
1055+ use super::MigrationData;
1056+ use crate::{EventEncryptionAlgorithm, OlmMachine, RoomSettings, migrate};
1057+
1058+ #[test]
1059+ fn android_migration() -> Result<()> {
1060+ let data: Value = json!({
1061+ "account":{
1062+ "user_id":"@ganfra146:matrix.org",
1063+ "device_id":"DEWRCMENGS",
1064+ "pickle":"FFGTGho89T3Xgd56l+EedOPV37s09RR8aYnS9305qPKF66LG+ly29YpCibjJOvkwm0dZwN9A2bOH/z7WscriqwZn/p0GE6YSNwLzffCy5iROzYzpYzFe0HtiyJmCQWCezvLc5lHV8YsfD00C1pKGX2R9M1wwp3/n4/3VjtTyPsdnmtwAPu4WdcPSkisCaQ3a6JaSKqv8zYzUjnpzgcpXHvPUR5d5+TzXgrVz3BeCOe8NEOWIW6xYUxFtGteYP0BczOkkJ22t7Css0tSMSrYgCll4zZUGNrd6D9b/z7KwcDnb978epsZ16DcZ/aaTxPdM5uDIkHgF/qHWerfxcaqsqs4EQfJdSgOTeqhjHBw1k0uWF2bByJLK+n7sGkYXEAuTzc4+0XvSFvu3Qp+1bHZuT7QejngRZzyxznORyBxd8la3/JjeJlehSK80OL7zSmohoYZD59S6i3tFWfopjQThJ0/eIyVOhEN/c3tfIcVr3lFEQeokgpCRNOVldhPcQWq994NHaL7jtb6yhUqT1gShY4zYayFL/VRz6nBSXXYwzrC9jho67knqXSri3lIKYevP9aOi384IvzbkinQdumc804dYwiCbs5hZppfEnfhfgiDDm+kVrJ9WaPRF4SySCTlS8jdGmBeL2CfCQ5IcZ5nK6X7tZM3tmtYwva0RuQiTNltp3XTfbMa0EoaEBximv25165hFTpzrWgoszBTpZPfgsMuWENWBcIX4AcLSk0CJ0qzPDeUwvmRcFStstGYV4drs5u5HEqovFSI48CoHPSEZfwwERCI4c/0efZ0CVEfnm8VcMv3AbnAfedD7v3QNdVwWOEhz/fGR76BQi2WjZP4MWvYRJ/vsLO5hcVWUvaJGQs5kANUFZMWuJQeJv3DmkV9kKKXnyfFUerlQ4Uk/5tp2mXiG+adHjuRp/Eeh5V/biCcIaX3rNuIY6MJaPz6SOwlFe79MMBaNwaS3j4Kh/Aq9BRw0QXdjO4CqMI4p2xCE1N5QTPdeaRTHTZ3r7mLkHX3FpZMxitc8vDl9L2FRoSOMMh/sRD1boBCkjrsty9rvTUGYY3li05jBuTXnYMjA4zj79dC9TGo4g+/wi+h537EhtP5+170LwqnIzfHt8yfjbsMMC7iwLpC1C57sTwxpMkNo3nQEvZOfqCxjq+ihiGuL9iN5lSstu9/C4qP2tQll86ASXf1axxRZQlUB0hlLHbEW6/7O7xOU6FTs4yXAZC04souRkggmfhDzZ9kQmN/zRTbqlATFI7l9/0VGxwLOVnCMUhgiDX5yL8CYK9I4ENMLf5zOuO6P3GbYISjEoHC7fUOzQ6OwGgLyI0wCEVdSJzQcdKh+W15VV+eDjhE/qEJHQWx024hTQFTKYHlDn95+lMmRI9BJLP1HU2JW6onVWsTsE5zSYu9jLj739EKfV4gS/pWzoQDRa7a9ZG6+m+RrwyJhCso3gkUekDNobhFlDX6YeH+Btj91N0uS3F9qr8lbo491s/z2fNV42zT4NYObzgrAYDQAV/2WYF8tXtxLV/Jzk8AMmyr/cfNaT2dXxVJKWq+nN2BYHBmg9CCWPJ2aB/1WWIcHfcDOlngtH991gP6246f/DEaVC/Ayxz7bPtSH5tlZ4Xbpc2P4BYxaRp/yxhhQ2C9H2I/PTt3mnNNgky/t8PZrN3W5+eiSVE9sONF8G3mYsa4XFqM+KxfbPUqsrEnrRBmvmJ250hpTPkFcIF775RvvRRKALXdlTKs+S4HKDW7KoP0Dm9+r4RlO0UHpWND9w0WSMItvWQyo0VViXJgZfBjYtWDoO0Ud+Kc7PLWNX6RUKY7RlDjXadJTC4adH6CN3UBC/ouqqfTrYvPOkyd2oKf4RLjEVcFAUIftFbLy+WBcWv8072nnAFJIlm3CxGq++80TyjqFR45P+qfIJavxQNIt5zhHPfMgHjX27OA3+l7rHDxqfMLBPxhtARwlyF+qx1IJiSWbmlHkdz2ylD9unoLSpf+DmmFvvgTj+3EEP4bY2jA/t91XFeG3uaTQSy3ryDvhbX21U7G2HGOEl9rCkmz+hG0YRB/6KxZZ0eMIDr7OWfpPEuHV8oYwDNYbsT9zCGsR1hHxBJtdo60b36mjMemtf761DhJ/oQZ4eU738yzx1hvVS3aCJsfyp70H5u+pUjgrA565uG2lEMNLu4T4NFVw0UdrVudyrhmT8P7vF4v+mR4pp+OzRbLf8AtZrKmHlMqRst+/wOHUHug/Tpz6EwZPDWGiQyFyPUkjHWW7ACouegBFOWFabsk+zCDhyxoSNrSMCtdB1L+qK72jRPGOvXk8p/1kBOIJfAjaK1ZWz8hTc30hOSWYxkRP296zPHiQF0ibNYSPNZ9tNxgq9nV/cEQ68TsNr3SULfDr0TSjCPf4AfmJ0k1k5xphSYv/TtGIbjg/9yGVFqclg4Y/6rrfkApbx36PQEBNxLiRsZ4hGpCfVU6h0jOekk8TV6CAguXVX/G31UqsAEa4sOD2g10Ir+5JD7bdd3JE/999kHGdiCqc0DNcgSqWYbq2QYwrN/mb+mMUbiQSNMcc34kK1n+7dGxppnt7YN7UsJqBWJdH0Lw1Epxi11ViTeVma9bqioJYXi6N5exdpZTT7KmcGYFsoTqO958EX6AppgcML7N9oP3TO8qSgCpV3Bbbemq4bvjV43aM6Rdx17pC4GZo0jjU97p4K8jE4PvgoHlYkuPwSJDOSAdnYPh+Inq/vCk48UfIlup0ATJFVUXD7uf84v9roZSwZPXZ5j/88+MkHBIJwPv8cugmz5uN2EuBW5IScMuEqG7Cmk72SU3/QA39G79S0Gpw7iPhTos5LXxhfvohGcnSaNEvfNeecQf7fpVciTdHwuvcgqJizUKpSFg2P+LDBiO44mJD15RNAaT37Rrj5P06YITO4PDj+FMdc6gx+JQUFbcSRhScE/0gfsVm0P1BYIH5q0k/QDgEVoerf/n19lITTzPib1F2OHP4hyF3BEq1pd9NwuPhhsVVqTVTK5MzFwFIOH7cwJyY7aBykmsWBavdb2J7UA5wjKqMHl1auUGPlNL+lZjqG4tw05bchtFAF+PGWQXJhJCtRSkkzTOCrLRyYyyI9mWYEjoc23cGLanlIs7WA1Nd0Jz+5RSNlf9Gtnd65yQp/W1eqY6yzURPHUUa7FrynyORmjaR9adT9utSQkXy8++IeDNzhMtFr+SqQ/gKECLe0GeuyTs6E5bImUtqpN+xopBXnEeq8wp+bvLf76d98qPE5ibTRwlsSyCE4c1Y7vrJrlc15Yc2R9ciIuKUS8rUKLSdGBFe/TD4R3cPhCKAnnRLGWnJiPPgxoTVwHVZMISdsAjNaWblBmiAOzFcu7443d3PCLyXVcfR9xgvW51HTumo91t5Qyx4HIXGoZxayZYFm2hrhSlieUqLnDL2j2gYgGU5NGoQl4OnEY2QqobpRUF4xJ4HhLzYbLrBeXmTDPvj0MasC3kKsRlm/HrsRRWZ2iPSMw9601tLvDfyjG53ddPISiVNnkdXcaAN5np7dwipdBOC1s4a0sEmKakNbkkDb8LsGBNte/g6UYs5yYaKr0bnXlDjMCznHQa7pypBjE7S55T3UeRpwo3IvZ1tfIGdb+z9RIA/PDvUksxJ3Xq3lqtZzkZJF5aeedfIOekGS/G0LiCSYsELgRceH5veknHqoGoL6xi4Q6/VjmfpZVXT19bDcTNtaR9Dlaq4LDjpQl9rl5C3O/X1hgADvJUuINCiLrD114sLY1DG/TDXE0sp+TK7utnjLAoHuAuj+6anY5vN66CSbwyUNmvo+m8li/AMkRYdtSDoPWkV7Y1ixMBPcua0Llwn2HSKKwnCjvhDIDIIVwbWwb1s6b9cztH81WF5RWUgFujewPvTElM1Sy10y7BcZohKw28uLRFVsKunc9yX2PiQoTSB4PHBHRA4U5dEQV3GHQJ93nee7VT3oeQPMVebWhuhOhi34Z33LQajzpCF3OjIbJb0tOPP6L6N/ODqkNsYViI3kgCnkNhexadOuGFWIqen2Q8iv2uOZWbPirt0YEeKZIk2dpND07L8Q3OsoQCk2rjpnw9LuFrjgu7gN9gFyPq25HJRBn7PM/lS60DF+xVkJq94PwN+CiZWC43SVcBGx65DFZIs/N78MZCUzZbFlsS7FsIrDJt878cp9eZdq/Ai4LZhL8QYHpVUrQxRxZGSqooA755N6nOxw66JkA1VPnjECCMgoNNtWox0JzhMe8PBdh2ZliXf8yQ6/eTvsG6FD84F+49pc7m0L99pfWHb9ClyO3KRHscp/MOIC1MJmqoB4dNxV20U+z8/lSTIvcmM8DiaAZj/yxlst90drlGydlyPjQzYd/XtIYcO5gHoeD1KUCZRapE5dkyk5vh97WZJn/JkR8hsslU3D6x3rNGwJbQVRu0IiA3PpeAQNZBNAJHHfv8IzIYxPhMJdYq0YqLIGSUYu87D04cDOxJY7hgawYs+ExOWb7XkbpuRoITQd8zpwVDFlSCS+wFO+qah3Vn8RBTc6cXHO5xRWfUNj+NrEtPdVmax+9EXqXtHQyFpxaauvL96RH+mGwpKHOk3aisXbZ6gLE2mF4egGjjJOIJdHyb2ZR+kj+4GIvkoBwipDgUfr4UBXY8pvFxQOxRgtI4LgOY9Z1Aco7Mwp6qi1KoMFJW8d+gJwsgM3cMsyEeYH1n/mdpJW6VDbIWzOHkP5n+OKKNm2vJTkQFFwF9eOtGy9fNBtS4qo4jvOUJnnAPsrPbGMbBYd1dMC3daHLEwvIKCAVBn7q1Z2c4zAD5eEoY0EwZj/j8x8lGQ8TswFT81ZotW7ZBDai/YtV8mkGfuaWJRI5yHc/bV7GWLF+yrMji/jicBF5jy2UoqwxseqjgTut49FRgBH3h1qwnfYbXD3FvQljyAAgBCiZV726pFRG+sZv0FjDbq0iCKILVSEUDZgmQ",
1065+ "shared":true,
1066+ "uploaded_signed_key_count":50
1067+ },
1068+ "sessions":[
1069+ {
1070+ "pickle":"cryZlFaQv0hwWe6tTgv75RExFKGnC8tMHBXJYMHOw4s+SdrKUYAMUdGcYD7QukrPklEOy7fJho9YGK/jV04QdA8JABiOfD+ngJTR4V8eZdmDuG08+Q5EL79V81hQwU2fKndP0y/9nAXPUIADYq0Zrg4EsOnXz7aE+hAeBAm0IBog1s8RYUvynZ15uwjbd/OTLP+gpqpX33DwVg2leiBkQetiUSpOpZCuQ8CcZwIA0MoGCqvaT7h76VHX9JxJx+2fCMhsJMx1nhd99WJH1W9ge5CtdbC4KUP92OSxIrPOnMrNcOPJPp/paZP+HFNQ3PDL+z8pGKXmCnrXGSbd7iPHurPYESrVkBzr",
1071+ "sender_key":"WJ6Ce7U67a6jqkHYHd8o0+5H4bqdi9hInZdk0+swuXs",
1072+ "created_using_fallback_key":false,
1073+ "creation_time": 1649425011424u64,
1074+ "last_use_time": 1649425011424u64
1075+ },
1076+ {
1077+ "pickle":"cryZlFaQv0hwWe6tTgv75RExFKGnC8tMHBXJYMHOw4t2W/lowyrV6SXVZp+uG59im0AAfNSKjhjZuiOpQlX7MS+AOJkCNvyujJ2g3KSjLZ94IkoHxkBDHLWSjwaLPu40rfOzJPDpm0XZsR6bQrsxKOmXLGEw2qw5jOTouzMVL2gvuuTix97nSYSU8j3XvTMRUoh0AF/tUpRLcvEFZeGrdUYmTMlyTv4na+FVUalUZ+jrk8t1/sM99JNq3SY1IBSjrBq/0rCOHieiippz0sw2fe2b87id4rqj1g3R9w2MWTWEdOz3ugjMGYF1YDBQZA1tJZ/hmgppk2AU2xKQXE2X3DgSC6fC66D4",
1078+ "sender_key":"RzRROfmHNlBfzxnNCUYBfn/5oZNQ11XYjDg59hS+mV0",
1079+ "created_using_fallback_key":false,
1080+ "creation_time": 1649425011503u64,
1081+ "last_use_time": 1649425011503u64
1082+ },
1083+ {
1084+ "pickle":"cryZlFaQv0hwWe6tTgv75RExFKGnC8tMHBXJYMHOw4titbL3SS12PYHpcBPJc6hXnOnZXqrjtjYOD545fck+3utEo8cqqwWubc9tsvxGW3tOWPttLBdAW30Vn8V1M8ebqVCNVWEAb1GKjV4ni8xG7G9SlEcCjLjnF4lJpddSZkqVMFoN0ITr9aSz/eJwXpc3HLreUFXwc8LuQp7krQ4Vt1e5EE/klduqsdurZf5V14RHsmWz2lKjt7nVgtIz/dhtF5F/sGJdg8kCGaHIMSbGAPuPPpa4/Laicb/5otrYt4pg4W4KdFpSGJIcvUQNjXaOZMx3cu/RPJIOyNhx7whG1QiYAUBqAJvr",
1085+ "sender_key":"IXSZugAHig1v8MowE1jxi2wDDDfuZBeJynHlegJVwUc",
1086+ "created_using_fallback_key":false,
1087+ "creation_time": 1649425011566u64,
1088+ "last_use_time": 1649425011566u64
1089+ },
1090+ {
1091+ "pickle":"SmkDiFZjNukiarQ7XHQo25FILHsuhNOnxy56cMSQU/Y71jaGbJes4YrvN4Dfy4RSONfejEDXDkbW2JudlHHRP/rWEmnfJiGbK6ArbrG2puqIZgOecPnOUgPfCisr49p1Gmf36dPaO5lm/ZSrngfSoxahoeJJE/CcJN98sYM15XytRk2LBwc+CyYDqr4V1qxfsBt6tzJ4+tsAZeRdD0UtipQgysgH56o8N7nKTCkaZz5lfpYCl3FEgwXpLJ0MGQvtQmbORFvOLqR1jZ/EbmNGKiqDDIYsqG0sf78ii1jqfpLDBXLuYDccsg",
1092+ "sender_key":"EB9SC4jVAydKhM6/GcwMc9biKwVNywqW3TerNTrtb1M",
1093+ "created_using_fallback_key":false,
1094+ "creation_time": 1649542063182u64,
1095+ "last_use_time": 1649542063182u64
1096+ }
1097+ ],
1098+ "inbound_group_sessions":[
1099+ {
1100+ "pickle":"KoA0sxDNQ7lz0vylU9zlmar0VCVQRMCfRrIfTh1bdMhlAgy8/D2ToT+oKRaKy1HiW6H862bzdpgxprlseSjmip9OfLbIuyd2YZcEinwc2666oEI/hpk4oTlE61uE1M+ThfdFf41yGCmaAP7mhjwF234ZrZ6i/F/qx42TLQ8Unc30wDJaJgyheO5eW85SD/0g0cdg2WnEKrx2/wl7Vg/YijT3JMDZ+OsdfJfSZtxBNjlG+PQ/9D31qb1eHfaovc8vFZh5QLfAFg/5rBrF1PhRsC7xOAZbUNdrTbvypNfMM4mznf84C2SzZRSMeAfg5v/YticM3Keg4eHuEj1WO9DrmRXYl6b/pITdf1xuk5euVT0pyxJpXmq41AoAZKAo1l94HGy1LG1RpruD1uQPhiponh5PGHSOf43Q",
1101+ "sender_key":"vJfH7wiYmGos3C8U1XcJ//YWSmkueAYqrmUA6/ukfAM",
1102+ "signing_key":{
1103+ "ed25519":"JGgPQRuYj3ScMdPS+A0P+k/1qS9Hr3qeKXLscI+hS78"
1104+ },
1105+ "room_id":"!AZkqtjvtwPAuyNOXEt:matrix.org",
1106+ "forwarding_chains":[
1107+ ],
1108+ "imported":true,
1109+ "backed_up":true
1110+ },
1111+ {
1112+ "pickle":"9RF6GBu9CvjZZx2hxIlw2gMdKs36LFhXhLTHAPrLSjT2OTbeE/jK263+iiFdSpF7Cblp/lXzljPKJN6sL8JGzoT7ssYh56nI0kKsp7/y88z+tTOH/5NYYTmZzHYw6yy4Cmaxh0pdHDs+RQpSSIe9jhF/EJJna5jcKYXxDY52m8H4LECQzVuDlYfblCr9zoYWhQrVhiRDGy7eLhk4X6Rp0Yoek4YUKcCQArDfZ/Vf43qfHUpOJgRpm5Oyj42HA/j4xZBb5U0Fmo6YHRPt0/KuWrDfpgJSGiN0zza7641IfADg8f3WdhlPAWMyri7k4vOZMBjlwFNcMpc0wM2TaTmbi2zqXEKZy9Oh/eJqBapFx0oNWaQ1VQ++iXxGUbZhwy7x2vd6UkqUTwYeym+aP23ee3TCtnNWN0aC",
1113+ "sender_key":"EB9SC4jVAydKhM6/GcwMc9biKwVNywqW3TerNTrtb1M",
1114+ "signing_key":{
1115+ "ed25519":"1NXa5GyJ+p2ruAClEque+TL1VktrBzMW4dZFNfNGrvc"
1116+ },
1117+ "room_id":"!CWLUCoEWXSFyTCOtfL:matrix.org",
1118+ "forwarding_chains":[],
1119+ "imported":true,
1120+ "backed_up":true
1121+ }
1122+ ],
1123+ "pickle_key": [17, 36, 120, 74, 95, 78, 56, 36, 62, 123, 5, 105, 74,
1124+ 111, 70, 48, 51, 101, 66, 86, 116, 14, 114, 85, 85,
1125+ 92, 44, 71, 89, 99, 55, 74],
1126+ "backup_version":"3",
1127+ "backup_recovery_key":"EsTHScmRV5oT1WBhe2mj2Gn3odeYantZ4NEk7L51p6L8hrmB",
1128+ "cross_signing":{
1129+ "master_key":"trnK/dBv/M2x2zZt8lnORHQqmFHWvjYE6rdlAONRUPY",
1130+ "self_signing_key":"SJhsj9jXC4hxhqS/1B3RZ65zWMHuF+1fUjWHrzVRh6w",
1131+ "user_signing_key":"LPYrV11T9Prm4ZIUxrq2a8Y/F64R1+NaGNyo6GlXjGg"
1132+ },
1133+ "tracked_users":[
1134+ "@ganfra146:matrix.org",
1135+ "@this-is-me:matrix.org",
1136+ "@Amandine:matrix.org",
1137+ "@ganfra:matrix.org",
1138+ "NotAUser%ID"
1139+ ],
1140+ "room_settings": {
1141+ "!AZkqtjvtwPAuyNOXEt:matrix.org": {
1142+ "algorithm": "OlmV1Curve25519AesSha2",
1143+ "only_allow_trusted_devices": true
1144+ },
1145+ "!CWLUCoEWXSFyTCOtfL:matrix.org": {
1146+ "algorithm": "MegolmV1AesSha2",
1147+ "only_allow_trusted_devices": false
1148+ },
1149+ }
1150+ });
1151+
1152+ let migration_data: MigrationData = serde_json::from_value(data)?;
1153+
1154+ let dir = tempdir()?;
1155+ let path = dir
1156+ .path()
1157+ .to_str()
1158+ .expect("Creating a string from the tempdir path should not fail")
1159+ .to_owned();
1160+
1161+ migrate(migration_data, path.clone(), None, Box::new(|_, _| {}))?;
1162+
1163+ let machine = OlmMachine::new(
1164+ "@ganfra146:matrix.org".to_owned(),
1165+ "DEWRCMENGS".to_owned(),
1166+ path,
1167+ None,
1168+ )?;
1169+
1170+ assert_eq!(
1171+ machine.identity_keys()["ed25519"],
1172+ "JGgPQRuYj3ScMdPS+A0P+k/1qS9Hr3qeKXLscI+hS78"
1173+ );
1174+
1175+ let room_keys =
1176+ machine.runtime.block_on(machine.inner.store().export_room_keys(|_| true))?;
1177+ assert_eq!(room_keys.len(), 2);
1178+
1179+ let cross_signing_status = machine.cross_signing_status();
1180+ assert!(cross_signing_status.has_master);
1181+ assert!(cross_signing_status.has_user_signing);
1182+ assert!(cross_signing_status.has_self_signing);
1183+
1184+ let backup_keys = machine.get_backup_keys()?;
1185+ assert!(backup_keys.is_some());
1186+
1187+ let settings1 = machine.get_room_settings("!AZkqtjvtwPAuyNOXEt:matrix.org".into())?;
1188+ assert_eq!(
1189+ Some(RoomSettings {
1190+ algorithm: EventEncryptionAlgorithm::OlmV1Curve25519AesSha2,
1191+ #[cfg(feature = "experimental-encrypted-state-events")]
1192+ encrypt_state_events: false,
1193+ only_allow_trusted_devices: true
1194+ }),
1195+ settings1
1196+ );
1197+
1198+ let settings2 = machine.get_room_settings("!CWLUCoEWXSFyTCOtfL:matrix.org".into())?;
1199+ assert_eq!(
1200+ Some(RoomSettings {
1201+ algorithm: EventEncryptionAlgorithm::MegolmV1AesSha2,
1202+ #[cfg(feature = "experimental-encrypted-state-events")]
1203+ encrypt_state_events: false,
1204+ only_allow_trusted_devices: false
1205+ }),
1206+ settings2
1207+ );
1208+
1209+ let settings3 = machine.get_room_settings("!XYZ:matrix.org".into())?;
1210+ assert!(settings3.is_none());
1211+
1212+ assert!(machine.is_user_tracked("@ganfra146:matrix.org".into()).unwrap());
1213+ assert!(machine.is_user_tracked("@Amandine:matrix.org".into()).unwrap());
1214+ assert!(machine.is_user_tracked("@this-is-me:matrix.org".into()).unwrap());
1215+ assert!(machine.is_user_tracked("@ganfra:matrix.org".into()).unwrap());
1216+
1217+ Ok(())
1218+ }
1219+}
Added file: bindings/matrix-sdk-crypto-ffi/src/logger.rs+63 additions
@@ -0,0 +1,63 @@
1+use std::{
2+ io::{Result, Write},
3+ sync::{Arc, Mutex},
4+};
5+
6+use tracing_subscriber::{EnvFilter, fmt::MakeWriter};
7+
8+/// Trait that can be used to forward Rust logs over FFI to a language specific
9+/// logger.
10+#[matrix_sdk_ffi_macros::export(callback_interface)]
11+pub trait Logger: Send {
12+ /// Called every time the Rust side wants to post a log line.
13+ fn log(&self, log_line: String);
14+ // TODO add support for different log levels, do this by adding more methods
15+ // to the trait.
16+}
17+
18+impl Write for LoggerWrapper {
19+ fn write(&mut self, buf: &[u8]) -> Result<usize> {
20+ let data = String::from_utf8_lossy(buf).to_string();
21+ self.inner.lock().unwrap().log(data);
22+
23+ Ok(buf.len())
24+ }
25+
26+ fn flush(&mut self) -> Result<()> {
27+ Ok(())
28+ }
29+}
30+
31+impl MakeWriter<'_> for LoggerWrapper {
32+ type Writer = LoggerWrapper;
33+
34+ fn make_writer(&self) -> Self::Writer {
35+ self.clone()
36+ }
37+}
38+
39+#[derive(Clone)]
40+pub struct LoggerWrapper {
41+ inner: Arc<Mutex<Box<dyn Logger>>>,
42+}
43+
44+/// Set the logger that should be used to forward Rust logs over FFI.
45+#[matrix_sdk_ffi_macros::export]
46+pub fn set_logger(logger: Box<dyn Logger>) {
47+ let logger = LoggerWrapper { inner: Arc::new(Mutex::new(logger)) };
48+
49+ let filter = EnvFilter::from_default_env()
50+ .add_directive(
51+ "matrix_sdk_crypto=trace".parse().expect("Can't parse logging filter directive"),
52+ )
53+ .add_directive(
54+ "matrix_sdk_sqlite=debug".parse().expect("Can't parse logging filter directive"),
55+ );
56+
57+ let _ = tracing_subscriber::fmt()
58+ .with_writer(logger)
59+ .with_env_filter(filter)
60+ .with_ansi(false)
61+ .without_time()
62+ .try_init();
63+}
Added file: bindings/matrix-sdk-crypto-ffi/src/machine.rs+1620 additions
@@ -0,0 +1,1620 @@
1+use std::{
2+ collections::{BTreeMap, HashMap},
3+ io::Cursor,
4+ mem::ManuallyDrop,
5+ ops::Deref,
6+ sync::Arc,
7+ time::Duration,
8+};
9+
10+use js_int::UInt;
11+use matrix_sdk_common::deserialized_responses::AlgorithmInfo;
12+use matrix_sdk_crypto::{
13+ CollectStrategy, DecryptionSettings, LocalTrust, OlmMachine as InnerMachine,
14+ UserIdentity as SdkUserIdentity,
15+ backups::{
16+ MegolmV1BackupKey as RustBackupKey, SignatureState,
17+ SignatureVerification as RustSignatureCheckResult,
18+ },
19+ decrypt_room_key_export, encrypt_room_key_export,
20+ olm::ExportedRoomKey,
21+ store::types::{BackupDecryptionKey, Changes},
22+ types::requests::ToDeviceRequest,
23+};
24+use ruma::{
25+ DeviceKeyAlgorithm, EventId, OneTimeKeyAlgorithm, OwnedTransactionId, OwnedUserId, RoomId,
26+ UserId,
27+ api::{
28+ IncomingResponse,
29+ client::{
30+ backup::add_backup_keys::v3::Response as KeysBackupResponse,
31+ keys::{
32+ claim_keys::v3::Response as KeysClaimResponse,
33+ get_keys::v3::Response as KeysQueryResponse,
34+ upload_keys::v3::Response as KeysUploadResponse,
35+ upload_signatures::v3::Response as SignatureUploadResponse,
36+ },
37+ message::send_message_event::v3::Response as RoomMessageResponse,
38+ sync::sync_events::{DeviceLists as RumaDeviceLists, v3::ToDevice},
39+ to_device::send_event_to_device::v3::Response as ToDeviceResponse,
40+ },
41+ },
42+ events::{
43+ AnyMessageLikeEvent, AnySyncMessageLikeEvent, AnyTimelineEvent, MessageLikeEvent,
44+ key::verification::VerificationMethod, room::message::MessageType,
45+ },
46+ serde::Raw,
47+ to_device::DeviceIdOrAllDevices,
48+};
49+use serde::{Deserialize, Serialize};
50+use serde_json::{Value, value::RawValue};
51+use tokio::runtime::Runtime;
52+use zeroize::Zeroize;
53+
54+use crate::{
55+ BackupKeys, BackupRecoveryKey, BootstrapCrossSigningResult, CrossSigningKeyExport,
56+ CrossSigningStatus, DecodeError, DecryptedEvent, Device, DeviceLists, EncryptionSettings,
57+ EventEncryptionAlgorithm, KeyImportError, KeysImportResult, MegolmV1BackupKey,
58+ ProgressListener, Request, RequestType, RequestVerificationResult, RoomKeyCounts, RoomSettings,
59+ Sas, SignatureUploadRequest, StartSasResult, UserIdentity, Verification, VerificationRequest,
60+ dehydrated_devices::DehydratedDevices,
61+ error::{
62+ CryptoStoreError, DecryptionError, SecretImportError, SecretsBundleExportError,
63+ SignatureError,
64+ },
65+ parse_user_id,
66+ responses::{OwnedResponse, response_from_string},
67+};
68+
69+/// The return value for the [`OlmMachine::receive_sync_changes()`] method.
70+///
71+/// Will contain various information about the `/sync` changes the
72+/// [`OlmMachine`] processed.
73+#[derive(uniffi::Record)]
74+pub struct SyncChangesResult {
75+ /// The, now possibly decrypted, to-device events the [`OlmMachine`]
76+ /// received, decrypted, and processed.
77+ to_device_events: Vec<String>,
78+
79+ /// Information about the room keys that were extracted out of the to-device
80+ /// events.
81+ room_key_infos: Vec<RoomKeyInfo>,
82+}
83+
84+/// Information on a room key that has been received or imported.
85+#[derive(uniffi::Record)]
86+pub struct RoomKeyInfo {
87+ /// The [messaging algorithm] that this key is used for. Will be one of the
88+ /// `m.megolm.*` algorithms.
89+ ///
90+ /// [messaging algorithm]: https://spec.matrix.org/v1.6/client-server-api/#messaging-algorithms
91+ pub algorithm: String,
92+
93+ /// The room where the key is used.
94+ pub room_id: String,
95+
96+ /// The Curve25519 key of the device which initiated the session originally.
97+ pub sender_key: String,
98+
99+ /// The ID of the session that the key is for.
100+ pub session_id: String,
101+}
102+
103+impl From<matrix_sdk_crypto::store::types::RoomKeyInfo> for RoomKeyInfo {
104+ fn from(value: matrix_sdk_crypto::store::types::RoomKeyInfo) -> Self {
105+ Self {
106+ algorithm: value.algorithm.to_string(),
107+ room_id: value.room_id.to_string(),
108+ sender_key: value.sender_key.to_base64(),
109+ session_id: value.session_id,
110+ }
111+ }
112+}
113+
114+/// A high level state machine that handles E2EE for Matrix.
115+#[derive(uniffi::Object)]
116+pub struct OlmMachine {
117+ pub(crate) inner: ManuallyDrop<InnerMachine>,
118+ pub(crate) runtime: Runtime,
119+}
120+
121+impl Drop for OlmMachine {
122+ fn drop(&mut self) {
123+ // Dropping the inner OlmMachine must happen within a tokio context
124+ // because deadpool drops sqlite connections in the DB pool on tokio's
125+ // blocking threadpool to avoid blocking async worker threads.
126+ let _guard = self.runtime.enter();
127+ // SAFETY: self.inner is never used again, which is the only requirement
128+ // for ManuallyDrop::drop to be used safely.
129+ unsafe {
130+ ManuallyDrop::drop(&mut self.inner);
131+ }
132+ }
133+}
134+
135+/// A pair of outgoing room key requests, both of those are sendToDevice
136+/// requests.
137+#[derive(uniffi::Record)]
138+pub struct KeyRequestPair {
139+ /// The optional cancellation, this is None if no previous key request was
140+ /// sent out for this key, thus it doesn't need to be cancelled.
141+ pub cancellation: Option<Request>,
142+ /// The actual key request.
143+ pub key_request: Request,
144+}
145+
146+/// The result of a signature verification of a signed JSON object.
147+#[derive(Clone, Debug, PartialEq, Eq, uniffi::Record)]
148+pub struct SignatureVerification {
149+ /// The result of the signature verification using the public key of our own
150+ /// device.
151+ pub device_signature: SignatureState,
152+ /// The result of the signature verification using the public key of our own
153+ /// user identity.
154+ pub user_identity_signature: SignatureState,
155+ /// The result of the signature verification using public keys of other
156+ /// devices we own.
157+ pub other_devices_signatures: HashMap<String, SignatureState>,
158+ /// Is the signed JSON object trusted.
159+ ///
160+ /// This flag tells us if the result has a valid signature from any of the
161+ /// following:
162+ ///
163+ /// * Our own device
164+ /// * Our own user identity, provided the identity is trusted as well
165+ /// * Any of our own devices, provided the device is trusted as well
166+ pub trusted: bool,
167+}
168+
169+impl From<RustSignatureCheckResult> for SignatureVerification {
170+ fn from(r: RustSignatureCheckResult) -> Self {
171+ let trusted = r.trusted();
172+
173+ Self {
174+ device_signature: r.device_signature,
175+ user_identity_signature: r.user_identity_signature,
176+ other_devices_signatures: r
177+ .other_signatures
178+ .into_iter()
179+ .map(|(k, v)| (k.to_string(), v))
180+ .collect(),
181+ trusted,
182+ }
183+ }
184+}
185+
186+#[matrix_sdk_ffi_macros::export]
187+impl OlmMachine {
188+ /// Create a new `OlmMachine`
189+ ///
190+ /// # Arguments
191+ ///
192+ /// * `user_id` - The unique ID of the user that owns this machine.
193+ ///
194+ /// * `device_id` - The unique ID of the device that owns this machine.
195+ ///
196+ /// * `path` - The path where the state of the machine should be persisted.
197+ ///
198+ /// * `passphrase` - The passphrase that should be used to encrypt the data
199+ /// at rest in the crypto store. **Warning**, if no passphrase is given,
200+ /// the store and all its data will remain unencrypted.
201+ #[uniffi::constructor]
202+ pub fn new(
203+ user_id: String,
204+ device_id: String,
205+ path: String,
206+ mut passphrase: Option<String>,
207+ ) -> Result<Arc<Self>, CryptoStoreError> {
208+ let user_id = parse_user_id(&user_id)?;
209+ let device_id = device_id.as_str().into();
210+ let runtime = Runtime::new().expect("Couldn't create a tokio runtime");
211+
212+ let store = runtime
213+ .block_on(matrix_sdk_sqlite::SqliteCryptoStore::open(path, passphrase.as_deref()))?;
214+
215+ passphrase.zeroize();
216+
217+ let inner = runtime.block_on(InnerMachine::with_store(
218+ &user_id,
219+ device_id,
220+ Arc::new(store),
221+ None,
222+ ))?;
223+
224+ Ok(Arc::new(OlmMachine { inner: ManuallyDrop::new(inner), runtime }))
225+ }
226+
227+ /// Get the user ID of the owner of this `OlmMachine`.
228+ pub fn user_id(&self) -> String {
229+ self.inner.user_id().to_string()
230+ }
231+
232+ /// Get the device ID of the device of this `OlmMachine`.
233+ pub fn device_id(&self) -> String {
234+ self.inner.device_id().to_string()
235+ }
236+
237+ /// Get our own identity keys.
238+ pub fn identity_keys(&self) -> HashMap<String, String> {
239+ let identity_keys = self.inner.identity_keys();
240+ let curve_key = identity_keys.curve25519.to_base64();
241+ let ed25519_key = identity_keys.ed25519.to_base64();
242+
243+ HashMap::from([("ed25519".to_owned(), ed25519_key), ("curve25519".to_owned(), curve_key)])
244+ }
245+
246+ /// Get the status of the private cross signing keys.
247+ ///
248+ /// This can be used to check which private cross signing keys we have
249+ /// stored locally.
250+ pub fn cross_signing_status(&self) -> CrossSigningStatus {
251+ self.runtime.block_on(self.inner.cross_signing_status()).into()
252+ }
253+
254+ /// Get a cross signing user identity for the given user ID.
255+ ///
256+ /// # Arguments
257+ ///
258+ /// * `user_id` - The unique id of the user that the identity belongs to
259+ ///
260+ /// * `timeout` - The time in seconds we should wait before returning if the
261+ /// user's device list has been marked as stale. Passing a 0 as the
262+ /// timeout means that we won't wait at all. **Note**, this assumes that
263+ /// the requests from [`OlmMachine::outgoing_requests`] are being
264+ /// processed and sent out. Namely, this waits for a `/keys/query`
265+ /// response to be received.
266+ pub fn get_identity(
267+ &self,
268+ user_id: String,
269+ timeout: u32,
270+ ) -> Result<Option<UserIdentity>, CryptoStoreError> {
271+ let user_id = parse_user_id(&user_id)?;
272+
273+ let timeout = if timeout == 0 { None } else { Some(Duration::from_secs(timeout.into())) };
274+
275+ Ok(
276+ if let Some(identity) =
277+ self.runtime.block_on(self.inner.get_identity(&user_id, timeout))?
278+ {
279+ Some(self.runtime.block_on(UserIdentity::from_rust(identity))?)
280+ } else {
281+ None
282+ },
283+ )
284+ }
285+
286+ /// Check if a user identity is considered to be verified by us.
287+ pub fn is_identity_verified(&self, user_id: String) -> Result<bool, CryptoStoreError> {
288+ let user_id = parse_user_id(&user_id)?;
289+
290+ Ok(
291+ if let Some(identity) =
292+ self.runtime.block_on(self.inner.get_identity(&user_id, None))?
293+ {
294+ identity.is_verified()
295+ } else {
296+ false
297+ },
298+ )
299+ }
300+
301+ /// Manually the user with the given user ID.
302+ ///
303+ /// This method will attempt to sign the user identity using either our
304+ /// private cross signing key, for other user identities, or our device keys
305+ /// for our own user identity.
306+ ///
307+ /// This method can fail if we don't have the private part of our
308+ /// user-signing key.
309+ ///
310+ /// Returns a request that needs to be sent out for the user identity to be
311+ /// marked as verified.
312+ pub fn verify_identity(
313+ &self,
314+ user_id: String,
315+ ) -> Result<SignatureUploadRequest, SignatureError> {
316+ let user_id = UserId::parse(user_id)?;
317+
318+ let user_identity = self.runtime.block_on(self.inner.get_identity(&user_id, None))?;
319+
320+ if let Some(user_identity) = user_identity {
321+ Ok(match user_identity {
322+ SdkUserIdentity::Own(i) => self.runtime.block_on(i.verify())?,
323+ SdkUserIdentity::Other(i) => self.runtime.block_on(i.verify())?,
324+ }
325+ .into())
326+ } else {
327+ Err(SignatureError::UnknownUserIdentity(user_id.to_string()))
328+ }
329+ }
330+
331+ /// Get a `Device` from the store.
332+ ///
333+ /// # Arguments
334+ ///
335+ /// * `user_id` - The id of the device owner.
336+ ///
337+ /// * `device_id` - The id of the device itself.
338+ ///
339+ /// * `timeout` - The time in seconds we should wait before returning if the
340+ /// user's device list has been marked as stale. Passing a 0 as the
341+ /// timeout means that we won't wait at all. **Note**, this assumes that
342+ /// the requests from [`OlmMachine::outgoing_requests`] are being
343+ /// processed and sent out. Namely, this waits for a `/keys/query`
344+ /// response to be received.
345+ pub fn get_device(
346+ &self,
347+ user_id: String,
348+ device_id: String,
349+ timeout: u32,
350+ ) -> Result<Option<Device>, CryptoStoreError> {
351+ let user_id = parse_user_id(&user_id)?;
352+
353+ let timeout = if timeout == 0 { None } else { Some(Duration::from_secs(timeout.into())) };
354+
355+ Ok(self
356+ .runtime
357+ .block_on(self.inner.get_device(&user_id, device_id.as_str().into(), timeout))?
358+ .map(|d| d.into()))
359+ }
360+
361+ /// Manually verify the device of the given user with the given device ID.
362+ ///
363+ /// This method will attempt to sign the device using our private cross
364+ /// signing key.
365+ ///
366+ /// This method will always fail if the device belongs to someone else, we
367+ /// can only sign our own devices.
368+ ///
369+ /// It can also fail if we don't have the private part of our self-signing
370+ /// key.
371+ ///
372+ /// Returns a request that needs to be sent out for the device to be marked
373+ /// as verified.
374+ pub fn verify_device(
375+ &self,
376+ user_id: String,
377+ device_id: String,
378+ ) -> Result<SignatureUploadRequest, SignatureError> {
379+ let user_id = UserId::parse(user_id)?;
380+ let device = self.runtime.block_on(self.inner.get_device(
381+ &user_id,
382+ device_id.as_str().into(),
383+ None,
384+ ))?;
385+
386+ if let Some(device) = device {
387+ Ok(self.runtime.block_on(device.verify())?.into())
388+ } else {
389+ Err(SignatureError::UnknownDevice(user_id, device_id))
390+ }
391+ }
392+
393+ /// Set local trust state for the device of the given user without creating
394+ /// or uploading any signatures if verified
395+ pub fn set_local_trust(
396+ &self,
397+ user_id: String,
398+ device_id: String,
399+ trust_state: LocalTrust,
400+ ) -> Result<(), CryptoStoreError> {
401+ let user_id = parse_user_id(&user_id)?;
402+
403+ let device = self.runtime.block_on(self.inner.get_device(
404+ &user_id,
405+ device_id.as_str().into(),
406+ None,
407+ ))?;
408+
409+ if let Some(device) = device {
410+ self.runtime.block_on(device.set_local_trust(trust_state))?;
411+ }
412+
413+ Ok(())
414+ }
415+
416+ /// Get all devices of an user.
417+ ///
418+ /// # Arguments
419+ ///
420+ /// * `user_id` - The id of the device owner.
421+ ///
422+ /// * `timeout` - The time in seconds we should wait before returning if the
423+ /// user's device list has been marked as stale. Passing a 0 as the
424+ /// timeout means that we won't wait at all. **Note**, this assumes that
425+ /// the requests from [`OlmMachine::outgoing_requests`] are being
426+ /// processed and sent out. Namely, this waits for a `/keys/query`
427+ /// response to be received.
428+ pub fn get_user_devices(
429+ &self,
430+ user_id: String,
431+ timeout: u32,
432+ ) -> Result<Vec<Device>, CryptoStoreError> {
433+ let user_id = parse_user_id(&user_id)?;
434+
435+ let timeout = if timeout == 0 { None } else { Some(Duration::from_secs(timeout.into())) };
436+ Ok(self
437+ .runtime
438+ .block_on(self.inner.get_user_devices(&user_id, timeout))?
439+ .devices()
440+ .map(|d| d.into())
441+ .collect())
442+ }
443+
444+ /// Get the list of outgoing requests that need to be sent to the
445+ /// homeserver.
446+ ///
447+ /// After the request was sent out and a successful response was received
448+ /// the response body should be passed back to the state machine using the
449+ /// [mark_request_as_sent()](Self::mark_request_as_sent) method.
450+ ///
451+ /// **Note**: This method call should be locked per call.
452+ pub fn outgoing_requests(&self) -> Result<Vec<Request>, CryptoStoreError> {
453+ Ok(self
454+ .runtime
455+ .block_on(self.inner.outgoing_requests())?
456+ .into_iter()
457+ .map(|r| r.into())
458+ .collect())
459+ }
460+
461+ /// Mark a request that was sent to the server as sent.
462+ ///
463+ /// # Arguments
464+ ///
465+ /// * `request_id` - The unique ID of the request that was sent out. This
466+ /// needs to be an UUID.
467+ ///
468+ /// * `request_type` - The type of the request that was sent out.
469+ ///
470+ /// * `response_body` - The body of the response that was received.
471+ pub fn mark_request_as_sent(
472+ &self,
473+ request_id: String,
474+ request_type: RequestType,
475+ response_body: String,
476+ ) -> Result<(), CryptoStoreError> {
477+ let id: OwnedTransactionId = request_id.into();
478+
479+ let response = response_from_string(&response_body);
480+
481+ let response: OwnedResponse = match request_type {
482+ RequestType::KeysUpload => {
483+ KeysUploadResponse::try_from_http_response(response).map(Into::into)
484+ }
485+ RequestType::KeysQuery => {
486+ KeysQueryResponse::try_from_http_response(response).map(Into::into)
487+ }
488+ RequestType::ToDevice => {
489+ ToDeviceResponse::try_from_http_response(response).map(Into::into)
490+ }
491+ RequestType::KeysClaim => {
492+ KeysClaimResponse::try_from_http_response(response).map(Into::into)
493+ }
494+ RequestType::SignatureUpload => {
495+ SignatureUploadResponse::try_from_http_response(response).map(Into::into)
496+ }
497+ RequestType::KeysBackup => {
498+ KeysBackupResponse::try_from_http_response(response).map(Into::into)
499+ }
500+ RequestType::RoomMessage => {
501+ RoomMessageResponse::try_from_http_response(response).map(Into::into)
502+ }
503+ }
504+ .expect("Can't convert json string to response");
505+
506+ self.runtime.block_on(self.inner.mark_request_as_sent(&id, &response))?;
507+
508+ Ok(())
509+ }
510+
511+ /// Let the state machine know about E2EE related sync changes that we
512+ /// received from the server.
513+ ///
514+ /// This needs to be called after every sync, ideally before processing
515+ /// any other sync changes.
516+ ///
517+ /// # Arguments
518+ ///
519+ /// * `events` - A serialized array of to-device events we received in the
520+ /// current sync response.
521+ ///
522+ /// * `device_changes` - The list of devices that have changed in some way
523+ /// since the previous sync.
524+ ///
525+ /// * `key_counts` - The map of uploaded one-time key types and counts.
526+ pub fn receive_sync_changes(
527+ &self,
528+ events: String,
529+ device_changes: DeviceLists,
530+ key_counts: HashMap<String, i32>,
531+ unused_fallback_keys: Option<Vec<String>>,
532+ next_batch_token: String,
533+ decryption_settings: &DecryptionSettings,
534+ ) -> Result<SyncChangesResult, CryptoStoreError> {
535+ let to_device: ToDevice = serde_json::from_str(&events)?;
536+ let device_changes: RumaDeviceLists = device_changes.into();
537+ let key_counts: BTreeMap<OneTimeKeyAlgorithm, UInt> = key_counts
538+ .into_iter()
539+ .map(|(k, v)| {
540+ (
541+ OneTimeKeyAlgorithm::from(k),
542+ v.clamp(0, i32::MAX)
543+ .try_into()
544+ .expect("Couldn't convert key counts into an UInt"),
545+ )
546+ })
547+ .collect();
548+
549+ let unused_fallback_keys: Option<Vec<OneTimeKeyAlgorithm>> =
550+ unused_fallback_keys.map(|u| u.into_iter().map(OneTimeKeyAlgorithm::from).collect());
551+
552+ let (to_device_events, room_key_infos) =
553+ self.runtime.block_on(self.inner.receive_sync_changes(
554+ matrix_sdk_crypto::EncryptionSyncChanges {
555+ to_device_events: to_device.events,
556+ changed_devices: &device_changes,
557+ one_time_keys_counts: &key_counts,
558+ unused_fallback_keys: unused_fallback_keys.as_deref(),
559+ next_batch_token: Some(next_batch_token),
560+ },
561+ decryption_settings,
562+ ))?;
563+
564+ let to_device_events = to_device_events
565+ .into_iter()
566+ .map(|event| event.to_raw().json().get().to_owned())
567+ .collect();
568+ let room_key_infos = room_key_infos.into_iter().map(|info| info.into()).collect();
569+
570+ Ok(SyncChangesResult { to_device_events, room_key_infos })
571+ }
572+
573+ /// Add the given list of users to be tracked, triggering a key query
574+ /// request for them.
575+ ///
576+ /// The OlmMachine maintains a list of users whose devices we are keeping
577+ /// track of: these are known as "tracked users". These must be users
578+ /// that we share a room with, so that the server sends us updates for
579+ /// their device lists.
580+ ///
581+ /// *Note*: Only users that aren't already tracked will be considered for an
582+ /// update. It's safe to call this with already tracked users, it won't
583+ /// result in excessive `/keys/query` requests.
584+ ///
585+ /// # Arguments
586+ ///
587+ /// `users` - The users that should be queued up for a key query.
588+ pub fn update_tracked_users(&self, users: Vec<String>) -> Result<(), CryptoStoreError> {
589+ let users: Vec<OwnedUserId> =
590+ users.into_iter().filter_map(|u| UserId::parse(u).ok()).collect();
591+
592+ self.runtime.block_on(self.inner.update_tracked_users(users.iter().map(Deref::deref)))?;
593+
594+ Ok(())
595+ }
596+
597+ /// Check if the given user is considered to be tracked.
598+ ///
599+ /// A user can be marked for tracking using the
600+ /// [`OlmMachine::update_tracked_users()`] method.
601+ pub fn is_user_tracked(&self, user_id: String) -> Result<bool, CryptoStoreError> {
602+ let user_id = parse_user_id(&user_id)?;
603+ Ok(self.runtime.block_on(self.inner.tracked_users())?.contains(&user_id))
604+ }
605+
606+ /// Generate one-time key claiming requests for all the users we are missing
607+ /// sessions for.
608+ ///
609+ /// After the request was sent out and a successful response was received
610+ /// the response body should be passed back to the state machine using the
611+ /// [mark_request_as_sent()](Self::mark_request_as_sent) method.
612+ ///
613+ /// This method should be called every time before a call to
614+ /// [`share_room_key()`](Self::share_room_key) is made.
615+ ///
616+ /// # Arguments
617+ ///
618+ /// * `users` - The list of users for which we would like to establish 1:1
619+ /// Olm sessions for.
620+ pub fn get_missing_sessions(
621+ &self,
622+ users: Vec<String>,
623+ ) -> Result<Option<Request>, CryptoStoreError> {
624+ let users: Vec<OwnedUserId> =
625+ users.into_iter().filter_map(|u| UserId::parse(u).ok()).collect();
626+
627+ Ok(self
628+ .runtime
629+ .block_on(self.inner.get_missing_sessions(users.iter().map(Deref::deref)))?
630+ .map(|r| r.into()))
631+ }
632+
633+ /// Get the stored room settings, such as the encryption algorithm or
634+ /// whether to encrypt only for trusted devices.
635+ ///
636+ /// These settings can be modified via
637+ /// [set_room_algorithm()](Self::set_room_algorithm) and
638+ /// [set_room_only_allow_trusted_devices()](Self::set_room_only_allow_trusted_devices)
639+ /// methods.
640+ pub fn get_room_settings(
641+ &self,
642+ room_id: String,
643+ ) -> Result<Option<RoomSettings>, CryptoStoreError> {
644+ let room_id = RoomId::parse(room_id)?;
645+ let settings = self
646+ .runtime
647+ .block_on(self.inner.store().get_room_settings(&room_id))?
648+ .map(|v| v.try_into())
649+ .transpose()?;
650+ Ok(settings)
651+ }
652+
653+ /// Set the room algorithm used for encrypting messages to one of the
654+ /// available variants
655+ pub fn set_room_algorithm(
656+ &self,
657+ room_id: String,
658+ algorithm: EventEncryptionAlgorithm,
659+ ) -> Result<(), CryptoStoreError> {
660+ let room_id = RoomId::parse(room_id)?;
661+ self.runtime.block_on(async move {
662+ let mut settings =
663+ self.inner.store().get_room_settings(&room_id).await?.unwrap_or_default();
664+ settings.algorithm = algorithm.into();
665+ self.inner
666+ .store()
667+ .save_changes(Changes {
668+ room_settings: HashMap::from([(room_id, settings)]),
669+ ..Default::default()
670+ })
671+ .await?;
672+ Ok(())
673+ })
674+ }
675+
676+ /// Set flag whether this room should encrypt messages for untrusted
677+ /// devices, or whether they should be excluded from the conversation.
678+ ///
679+ /// Note that per-room setting may be overridden by a global
680+ /// [set_only_allow_trusted_devices()](Self::set_only_allow_trusted_devices)
681+ /// method.
682+ pub fn set_room_only_allow_trusted_devices(
683+ &self,
684+ room_id: String,
685+ only_allow_trusted_devices: bool,
686+ ) -> Result<(), CryptoStoreError> {
687+ let room_id = RoomId::parse(room_id)?;
688+ self.runtime.block_on(async move {
689+ let mut settings =
690+ self.inner.store().get_room_settings(&room_id).await?.unwrap_or_default();
691+ settings.only_allow_trusted_devices = only_allow_trusted_devices;
692+ self.inner
693+ .store()
694+ .save_changes(Changes {
695+ room_settings: HashMap::from([(room_id, settings)]),
696+ ..Default::default()
697+ })
698+ .await?;
699+ Ok(())
700+ })
701+ }
702+
703+ /// Check whether there is a global flag to only encrypt messages for
704+ /// trusted devices or for everyone.
705+ ///
706+ /// Note that if the global flag is false, individual rooms may still be
707+ /// encrypting only for trusted devices, depending on the per-room
708+ /// `only_allow_trusted_devices` flag.
709+ pub fn get_only_allow_trusted_devices(&self) -> Result<bool, CryptoStoreError> {
710+ let block = self.runtime.block_on(self.inner.store().get_only_allow_trusted_devices())?;
711+ Ok(block)
712+ }
713+
714+ /// Set global flag whether to encrypt messages for untrusted devices, or
715+ /// whether they should be excluded from the conversation.
716+ ///
717+ /// Note that if enabled, it will override any per-room settings.
718+ pub fn set_only_allow_trusted_devices(
719+ &self,
720+ only_allow_trusted_devices: bool,
721+ ) -> Result<(), CryptoStoreError> {
722+ self.runtime.block_on(
723+ self.inner.store().set_only_allow_trusted_devices(only_allow_trusted_devices),
724+ )?;
725+ Ok(())
726+ }
727+
728+ /// Share a room key with the given list of users for the given room.
729+ ///
730+ /// After the request was sent out and a successful response was received
731+ /// the response body should be passed back to the state machine using the
732+ /// [mark_request_as_sent()](Self::mark_request_as_sent) method.
733+ ///
734+ /// This method should be called every time before a call to
735+ /// [`encrypt()`](Self::encrypt) with the given `room_id` is made.
736+ ///
737+ /// # Arguments
738+ ///
739+ /// * `room_id` - The unique id of the room, note that this doesn't strictly
740+ /// need to be a Matrix room, it just needs to be an unique identifier for
741+ /// the group that will participate in the conversation.
742+ ///
743+ /// * `users` - The list of users which are considered to be members of the
744+ /// room and should receive the room key.
745+ ///
746+ /// * `settings` - The settings that should be used for the room key.
747+ pub fn share_room_key(
748+ &self,
749+ room_id: String,
750+ users: Vec<String>,
751+ settings: EncryptionSettings,
752+ ) -> Result<Vec<Request>, CryptoStoreError> {
753+ let users: Vec<OwnedUserId> =
754+ users.into_iter().filter_map(|u| UserId::parse(u).ok()).collect();
755+
756+ let room_id = RoomId::parse(room_id)?;
757+ let requests = self.runtime.block_on(self.inner.share_room_key(
758+ &room_id,
759+ users.iter().map(Deref::deref),
760+ settings,
761+ ))?;
762+
763+ Ok(requests.into_iter().map(|r| r.as_ref().into()).collect())
764+ }
765+
766+ /// Encrypt the given event with the given type and content for the given
767+ /// room.
768+ ///
769+ /// **Note**: A room key needs to be shared with the group of users that are
770+ /// members in the given room. If this is not done this method will panic.
771+ ///
772+ /// The usual flow to encrypt an event using this state machine is as
773+ /// follows:
774+ ///
775+ /// 1. Get the one-time key claim request to establish 1:1 Olm sessions for
776+ /// the room members of the room we wish to participate in. This is done
777+ /// using the [`get_missing_sessions()`](Self::get_missing_sessions)
778+ /// method. This method call should be locked per call.
779+ ///
780+ /// 2. Share a room key with all the room members using the
781+ /// [`share_room_key()`](Self::share_room_key). This method call should
782+ /// be locked per room.
783+ ///
784+ /// 3. Encrypt the event using this method.
785+ ///
786+ /// 4. Send the encrypted event to the server.
787+ ///
788+ /// After the room key is shared steps 1 and 2 will become noops, unless
789+ /// there's some changes in the room membership or in the list of devices a
790+ /// member has.
791+ ///
792+ /// # Arguments
793+ ///
794+ /// * `room_id` - The unique id of the room where the event will be sent to.
795+ ///
796+ /// * `even_type` - The type of the event.
797+ ///
798+ /// * `content` - The serialized content of the event.
799+ pub fn encrypt(
800+ &self,
801+ room_id: String,
802+ event_type: String,
803+ content: String,
804+ ) -> Result<String, CryptoStoreError> {
805+ let room_id = RoomId::parse(room_id)?;
806+ let content = serde_json::from_str(&content)?;
807+
808+ let result = self
809+ .runtime
810+ .block_on(self.inner.encrypt_room_event_raw(&room_id, &event_type, &content))
811+ .expect("Encrypting an event produced an error");
812+
813+ Ok(serde_json::to_string(&result.content)?)
814+ }
815+
816+ /// Encrypt the given event with the given type and content for the given
817+ /// device. This method is used to send an event to a specific device.
818+ ///
819+ /// # Arguments
820+ ///
821+ /// * `user_id` - The ID of the user who owns the target device.
822+ /// * `device_id` - The ID of the device to which the message will be sent.
823+ /// * `event_type` - The event type.
824+ /// * `content` - The serialized content of the event.
825+ ///
826+ /// # Returns
827+ /// A `Result` containing the request to be sent out if the encryption was
828+ /// successful. If the device is not found, the result will be `Ok(None)`.
829+ ///
830+ /// The caller should ensure that there is an olm session (see
831+ /// `get_missing_sessions`) with the target device before calling this
832+ /// method.
833+ pub fn create_encrypted_to_device_request(
834+ &self,
835+ user_id: String,
836+ device_id: String,
837+ event_type: String,
838+ content: String,
839+ share_strategy: CollectStrategy,
840+ ) -> Result<Option<Request>, CryptoStoreError> {
841+ let user_id = parse_user_id(&user_id)?;
842+ let device_id = device_id.as_str().into();
843+ let content = serde_json::from_str(&content)?;
844+
845+ let device = self.runtime.block_on(self.inner.get_device(&user_id, device_id, None))?;
846+
847+ if let Some(device) = device {
848+ let encrypted_content = self.runtime.block_on(device.encrypt_event_raw(
849+ &event_type,
850+ &content,
851+ share_strategy,
852+ ))?;
853+
854+ let request = ToDeviceRequest::new(
855+ user_id.as_ref(),
856+ DeviceIdOrAllDevices::DeviceId(device_id.to_owned()),
857+ "m.room.encrypted",
858+ encrypted_content.cast(),
859+ );
860+
861+ Ok(Some(request.into()))
862+ } else {
863+ Ok(None)
864+ }
865+ }
866+
867+ /// Decrypt the given event that was sent in the given room.
868+ ///
869+ /// # Arguments
870+ ///
871+ /// * `event` - The serialized encrypted version of the event.
872+ ///
873+ /// * `room_id` - The unique id of the room where the event was sent to.
874+ ///
875+ /// * `handle_verification_events` - if the supplied event is a verification
876+ /// event, use it to update the verification state. **Note**: it is
877+ /// recommended to avoid setting this flag to true and use the explicit
878+ /// [`OlmMachine::receive_verification_event`] method instead:
879+ /// verification events sometimes need preparation before we can handle
880+ /// them: see the documentation for
881+ /// [`OlmMachine::receive_verification_event`].
882+ ///
883+ /// * `strict_shields` - If `true`, messages will be decorated with strict
884+ /// warnings (use `false` to match legacy behaviour where unsafe keys have
885+ /// lower severity warnings and unverified identities are not decorated).
886+ ///
887+ /// * `decryption_settings` - The setting for decrypting messages.
888+ pub fn decrypt_room_event(
889+ &self,
890+ event: String,
891+ room_id: String,
892+ handle_verification_events: bool,
893+ strict_shields: bool,
894+ decryption_settings: DecryptionSettings,
895+ ) -> Result<DecryptedEvent, DecryptionError> {
896+ // Element Android wants only the content and the type and will create a
897+ // decrypted event with those two itself, this struct makes sure we
898+ // throw away all the other fields.
899+ #[derive(Deserialize, Serialize)]
900+ struct Event<'a> {
901+ #[serde(rename = "type")]
902+ event_type: String,
903+ #[serde(borrow)]
904+ content: &'a RawValue,
905+ }
906+
907+ let event: Raw<_> = serde_json::from_str(&event)?;
908+ let room_id = RoomId::parse(room_id)?;
909+
910+ let decrypted = self.runtime.block_on(self.inner.decrypt_room_event(
911+ &event,
912+ &room_id,
913+ &decryption_settings,
914+ ))?;
915+
916+ if handle_verification_events
917+ && let Ok(AnyTimelineEvent::MessageLike(e)) = decrypted.event.deserialize()
918+ {
919+ match &e {
920+ AnyMessageLikeEvent::RoomMessage(MessageLikeEvent::Original(original_event)) => {
921+ if let MessageType::VerificationRequest(_) = &original_event.content.msgtype {
922+ self.runtime.block_on(self.inner.receive_verification_event(&e))?;
923+ }
924+ }
925+ _ if e.event_type().to_string().starts_with("m.key.verification") => {
926+ self.runtime.block_on(self.inner.receive_verification_event(&e))?;
927+ }
928+ _ => (),
929+ }
930+ }
931+
932+ let encryption_info = decrypted.encryption_info;
933+
934+ let event_json: Event<'_> = serde_json::from_str(decrypted.event.json().get())?;
935+
936+ Ok(match &encryption_info.algorithm_info {
937+ AlgorithmInfo::MegolmV1AesSha2 {
938+ curve25519_key,
939+ sender_claimed_keys,
940+ session_id: _,
941+ } => DecryptedEvent {
942+ clear_event: serde_json::to_string(&event_json)?,
943+ sender_curve25519_key: curve25519_key.to_owned(),
944+ claimed_ed25519_key: sender_claimed_keys.get(&DeviceKeyAlgorithm::Ed25519).cloned(),
945+ forwarding_curve25519_chain: vec![],
946+ shield_state: if strict_shields {
947+ encryption_info.verification_state.to_shield_state_strict().into()
948+ } else {
949+ encryption_info.verification_state.to_shield_state_lax().into()
950+ },
951+ },
952+ AlgorithmInfo::OlmV1Curve25519AesSha2 { .. } => {
953+ // cannot happen because `decrypt_room_event` would have fail to decrypt olm for
954+ // a room (EventError::UnsupportedAlgorithm)
955+ panic!("Unsupported olm algorithm in room")
956+ }
957+ })
958+ }
959+
960+ /// Request or re-request a room key that was used to encrypt the given
961+ /// event.
962+ ///
963+ /// # Arguments
964+ ///
965+ /// * `event` - The undecryptable event that we would wish to request a room
966+ /// key for.
967+ ///
968+ /// * `room_id` - The id of the room the event was sent to.
969+ pub fn request_room_key(
970+ &self,
971+ event: String,
972+ room_id: String,
973+ ) -> Result<KeyRequestPair, DecryptionError> {
974+ let event: Raw<_> = serde_json::from_str(&event)?;
975+ let room_id = RoomId::parse(room_id)?;
976+
977+ let (cancel, request) =
978+ self.runtime.block_on(self.inner.request_room_key(&event, &room_id))?;
979+
980+ let cancellation = cancel.map(|r| r.into());
981+ let key_request = request.into();
982+
983+ Ok(KeyRequestPair { cancellation, key_request })
984+ }
985+
986+ /// Export all of our room keys.
987+ ///
988+ /// # Arguments
989+ ///
990+ /// * `passphrase` - The passphrase that should be used to encrypt the key
991+ /// export.
992+ ///
993+ /// * `rounds` - The number of rounds that should be used when expanding the
994+ /// passphrase into an key.
995+ pub fn export_room_keys(
996+ &self,
997+ passphrase: String,
998+ rounds: i32,
999+ ) -> Result<String, CryptoStoreError> {
1000+ let keys = self.runtime.block_on(self.inner.store().export_room_keys(|_| true))?;
1001+
1002+ let encrypted = encrypt_room_key_export(&keys, &passphrase, rounds as u32)
1003+ .map_err(CryptoStoreError::Serialization)?;
1004+
1005+ Ok(encrypted)
1006+ }
1007+
1008+ /// Import room keys from the given serialized key export.
1009+ ///
1010+ /// # Arguments
1011+ ///
1012+ /// * `keys` - The serialized version of the key export.
1013+ ///
1014+ /// * `passphrase` - The passphrase that was used to encrypt the key export.
1015+ ///
1016+ /// * `progress_listener` - A callback that can be used to introspect the
1017+ /// progress of the key import.
1018+ pub fn import_room_keys(
1019+ &self,
1020+ keys: String,
1021+ passphrase: String,
1022+ progress_listener: Box<dyn ProgressListener>,
1023+ ) -> Result<KeysImportResult, KeyImportError> {
1024+ let keys = Cursor::new(keys);
1025+ let keys = decrypt_room_key_export(keys, &passphrase)?;
1026+ self.import_room_keys_helper(keys, None, progress_listener)
1027+ }
1028+
1029+ /// Import room keys from the given serialized unencrypted key export.
1030+ ///
1031+ /// This method is the same as [`OlmMachine::import_room_keys`] but the
1032+ /// decryption step is skipped and should be performed by the caller. This
1033+ /// should be used if the room keys are coming from the server-side backup,
1034+ /// the method will mark all imported room keys as backed up.
1035+ ///
1036+ /// **Note**: This has been deprecated. Use
1037+ /// [`OlmMachine::import_room_keys_from_backup`] instead.
1038+ ///
1039+ /// # Arguments
1040+ ///
1041+ /// * `keys` - The serialized version of the unencrypted key export.
1042+ ///
1043+ /// * `progress_listener` - A callback that can be used to introspect the
1044+ /// progress of the key import.
1045+ pub fn import_decrypted_room_keys(
1046+ &self,
1047+ keys: String,
1048+ progress_listener: Box<dyn ProgressListener>,
1049+ ) -> Result<KeysImportResult, KeyImportError> {
1050+ // Assume that the keys came from the current backup version.
1051+ let backup_version = self.runtime.block_on(self.inner.backup_machine().backup_version());
1052+ let keys: Vec<Value> = serde_json::from_str(&keys)?;
1053+ let keys = keys.into_iter().map(serde_json::from_value).filter_map(|k| k.ok()).collect();
1054+ self.import_room_keys_helper(keys, backup_version.as_deref(), progress_listener)
1055+ }
1056+
1057+ /// Import room keys from the given serialized unencrypted key export.
1058+ ///
1059+ /// This method is the same as [`OlmMachine::import_room_keys`] but the
1060+ /// decryption step is skipped and should be performed by the caller. This
1061+ /// should be used if the room keys are coming from the server-side backup.
1062+ /// The method will mark all imported room keys as backed up.
1063+ ///
1064+ /// # Arguments
1065+ ///
1066+ /// * `keys` - The serialized version of the unencrypted key export.
1067+ ///
1068+ /// * `backup_version` - The version of the backup that these keys came
1069+ /// from.
1070+ ///
1071+ /// * `progress_listener` - A callback that can be used to introspect the
1072+ /// progress of the key import.
1073+ pub fn import_room_keys_from_backup(
1074+ &self,
1075+ keys: String,
1076+ backup_version: String,
1077+ progress_listener: Box<dyn ProgressListener>,
1078+ ) -> Result<KeysImportResult, KeyImportError> {
1079+ let keys: Vec<Value> = serde_json::from_str(&keys)?;
1080+ let keys = keys.into_iter().map(serde_json::from_value).filter_map(|k| k.ok()).collect();
1081+ self.import_room_keys_helper(keys, Some(&backup_version), progress_listener)
1082+ }
1083+
1084+ /// Discard the currently active room key for the given room if there is
1085+ /// one.
1086+ pub fn discard_room_key(&self, room_id: String) -> Result<(), CryptoStoreError> {
1087+ let room_id = RoomId::parse(room_id)?;
1088+
1089+ self.runtime.block_on(self.inner.discard_room_key(&room_id))?;
1090+
1091+ Ok(())
1092+ }
1093+
1094+ /// Receive an unencrypted verification event.
1095+ ///
1096+ /// This method can be used to pass verification events that are happening
1097+ /// in unencrypted rooms to the `OlmMachine`.
1098+ ///
1099+ /// **Note**: This has been deprecated.
1100+ pub fn receive_unencrypted_verification_event(
1101+ &self,
1102+ event: String,
1103+ room_id: String,
1104+ ) -> Result<(), CryptoStoreError> {
1105+ self.receive_verification_event(event, room_id)
1106+ }
1107+
1108+ /// Receive a verification event.
1109+ ///
1110+ /// This method can be used to pass verification events that are happening
1111+ /// in rooms to the `OlmMachine`. The event should be in the decrypted form.
1112+ ///
1113+ /// **Note**: If the supplied event is an `m.room.message` event with
1114+ /// `msgtype: m.key.verification.request`, then the device information for
1115+ /// the sending user must be up-to-date before calling this method
1116+ /// (otherwise, the request will be ignored). It is hard to guarantee this
1117+ /// is the case, but you can maximize your chances by explicitly making a
1118+ /// request to /keys/query for the user's device info, and processing the
1119+ /// response with [`OlmMachine::mark_request_as_sent`].
1120+ pub fn receive_verification_event(
1121+ &self,
1122+ event: String,
1123+ room_id: String,
1124+ ) -> Result<(), CryptoStoreError> {
1125+ let room_id = RoomId::parse(room_id)?;
1126+ let event: AnySyncMessageLikeEvent = serde_json::from_str(&event)?;
1127+
1128+ let event = event.into_full_event(room_id);
1129+
1130+ self.runtime.block_on(self.inner.receive_verification_event(&event))?;
1131+
1132+ Ok(())
1133+ }
1134+
1135+ /// Get all the verification requests that we share with the given user.
1136+ ///
1137+ /// # Arguments
1138+ ///
1139+ /// * `user_id` - The ID of the user for which we would like to fetch the
1140+ /// verification requests.
1141+ pub fn get_verification_requests(&self, user_id: String) -> Vec<Arc<VerificationRequest>> {
1142+ let Ok(user_id) = UserId::parse(user_id) else {
1143+ return vec![];
1144+ };
1145+
1146+ self.inner
1147+ .get_verification_requests(&user_id)
1148+ .into_iter()
1149+ .map(|v| {
1150+ VerificationRequest { inner: v, runtime: self.runtime.handle().to_owned() }.into()
1151+ })
1152+ .collect()
1153+ }
1154+
1155+ /// Get a verification requests that we share with the given user with the
1156+ /// given flow id.
1157+ ///
1158+ /// # Arguments
1159+ ///
1160+ /// * `user_id` - The ID of the user for which we would like to fetch the
1161+ /// verification requests.
1162+ ///
1163+ /// * `flow_id` - The ID that uniquely identifies the verification flow.
1164+ pub fn get_verification_request(
1165+ &self,
1166+ user_id: String,
1167+ flow_id: String,
1168+ ) -> Option<Arc<VerificationRequest>> {
1169+ let user_id = UserId::parse(user_id).ok()?;
1170+
1171+ self.inner.get_verification_request(&user_id, flow_id).map(|v| {
1172+ VerificationRequest { inner: v, runtime: self.runtime.handle().to_owned() }.into()
1173+ })
1174+ }
1175+
1176+ /// Get an m.key.verification.request content for the given user.
1177+ ///
1178+ /// # Arguments
1179+ ///
1180+ /// * `user_id` - The ID of the user which we would like to request to
1181+ /// verify.
1182+ ///
1183+ /// * `methods` - The list of verification methods we want to advertise to
1184+ /// support.
1185+ pub fn verification_request_content(
1186+ &self,
1187+ user_id: String,
1188+ methods: Vec<String>,
1189+ ) -> Result<Option<String>, CryptoStoreError> {
1190+ let user_id = parse_user_id(&user_id)?;
1191+
1192+ let identity = self.runtime.block_on(self.inner.get_identity(&user_id, None))?;
1193+
1194+ let methods = methods.into_iter().map(VerificationMethod::from).collect();
1195+
1196+ Ok(if let Some(identity) = identity.and_then(|i| i.other()) {
1197+ let content = identity.verification_request_content(Some(methods));
1198+ Some(serde_json::to_string(&content)?)
1199+ } else {
1200+ None
1201+ })
1202+ }
1203+
1204+ /// Request a verification flow to begin with the given user in the given
1205+ /// room.
1206+ ///
1207+ /// # Arguments
1208+ ///
1209+ /// * `user_id` - The ID of the user which we would like to request to
1210+ /// verify.
1211+ ///
1212+ /// * `room_id` - The ID of the room that represents a DM with the given
1213+ /// user.
1214+ ///
1215+ /// * `event_id` - The event ID of the `m.key.verification.request` event
1216+ /// that we sent out to request the verification to begin. The content for
1217+ /// this request can be created using the [verification_request_content()]
1218+ /// method.
1219+ ///
1220+ /// * `methods` - The list of verification methods we advertised as
1221+ /// supported in the `m.key.verification.request` event.
1222+ ///
1223+ /// [verification_request_content()]: Self::verification_request_content
1224+ pub fn request_verification(
1225+ &self,
1226+ user_id: String,
1227+ room_id: String,
1228+ event_id: String,
1229+ methods: Vec<String>,
1230+ ) -> Result<Option<Arc<VerificationRequest>>, CryptoStoreError> {
1231+ let user_id = parse_user_id(&user_id)?;
1232+ let event_id = EventId::parse(event_id)?;
1233+ let room_id = RoomId::parse(room_id)?;
1234+
1235+ let identity = self.runtime.block_on(self.inner.get_identity(&user_id, None))?;
1236+
1237+ let methods = methods.into_iter().map(VerificationMethod::from).collect();
1238+
1239+ Ok(if let Some(identity) = identity.and_then(|i| i.other()) {
1240+ let request = identity.request_verification(&room_id, &event_id, Some(methods));
1241+
1242+ Some(
1243+ VerificationRequest { inner: request, runtime: self.runtime.handle().to_owned() }
1244+ .into(),
1245+ )
1246+ } else {
1247+ None
1248+ })
1249+ }
1250+
1251+ /// Request a verification flow to begin with the given user's device.
1252+ ///
1253+ /// # Arguments
1254+ ///
1255+ /// * `user_id` - The ID of the user which we would like to request to
1256+ /// verify.
1257+ ///
1258+ /// * `device_id` - The ID of the device that we wish to verify.
1259+ ///
1260+ /// * `methods` - The list of verification methods we advertised as
1261+ /// supported in the `m.key.verification.request` event.
1262+ pub fn request_verification_with_device(
1263+ &self,
1264+ user_id: String,
1265+ device_id: String,
1266+ methods: Vec<String>,
1267+ ) -> Result<Option<RequestVerificationResult>, CryptoStoreError> {
1268+ let user_id = parse_user_id(&user_id)?;
1269+ let device_id = device_id.as_str().into();
1270+
1271+ let methods = methods.into_iter().map(VerificationMethod::from).collect();
1272+
1273+ Ok(
1274+ if let Some(device) =
1275+ self.runtime.block_on(self.inner.get_device(&user_id, device_id, None))?
1276+ {
1277+ let (verification, request) = device.request_verification_with_methods(methods);
1278+
1279+ Some(RequestVerificationResult {
1280+ verification: VerificationRequest {
1281+ inner: verification,
1282+ runtime: self.runtime.handle().to_owned(),
1283+ }
1284+ .into(),
1285+ request: request.into(),
1286+ })
1287+ } else {
1288+ None
1289+ },
1290+ )
1291+ }
1292+
1293+ /// Request a verification flow to begin with our other devices.
1294+ ///
1295+ /// # Arguments
1296+ ///
1297+ /// `methods` - The list of verification methods we want to advertise to
1298+ /// support.
1299+ pub fn request_self_verification(
1300+ &self,
1301+ methods: Vec<String>,
1302+ ) -> Result<Option<RequestVerificationResult>, CryptoStoreError> {
1303+ let identity =
1304+ self.runtime.block_on(self.inner.get_identity(self.inner.user_id(), None))?;
1305+
1306+ let methods = methods.into_iter().map(VerificationMethod::from).collect();
1307+
1308+ Ok(if let Some(identity) = identity.and_then(|i| i.own()) {
1309+ let (verification, request) =
1310+ self.runtime.block_on(identity.request_verification_with_methods(methods))?;
1311+ Some(RequestVerificationResult {
1312+ verification: VerificationRequest {
1313+ inner: verification,
1314+ runtime: self.runtime.handle().to_owned(),
1315+ }
1316+ .into(),
1317+ request: request.into(),
1318+ })
1319+ } else {
1320+ None
1321+ })
1322+ }
1323+
1324+ /// Get a verification flow object for the given user with the given flow
1325+ /// id.
1326+ ///
1327+ /// # Arguments
1328+ ///
1329+ /// * `user_id` - The ID of the user for which we would like to fetch the
1330+ /// verification.
1331+ ///
1332+ /// * `flow_id` - The ID that uniquely identifies the verification flow.
1333+ pub fn get_verification(&self, user_id: String, flow_id: String) -> Option<Arc<Verification>> {
1334+ let user_id = UserId::parse(user_id).ok()?;
1335+
1336+ self.inner
1337+ .get_verification(&user_id, &flow_id)
1338+ .map(|v| Verification { inner: v, runtime: self.runtime.handle().to_owned() }.into())
1339+ }
1340+
1341+ /// Start short auth string verification with a device without going
1342+ /// through a verification request first.
1343+ ///
1344+ /// **Note**: This has been largely deprecated and the
1345+ /// [request_verification_with_device()] method should be used instead.
1346+ ///
1347+ /// # Arguments
1348+ ///
1349+ /// * `user_id` - The ID of the user for which we would like to start the
1350+ /// SAS verification.
1351+ ///
1352+ /// * `device_id` - The ID of device we would like to verify.
1353+ ///
1354+ /// [request_verification_with_device()]: Self::request_verification_with_device
1355+ pub fn start_sas_with_device(
1356+ &self,
1357+ user_id: String,
1358+ device_id: String,
1359+ ) -> Result<Option<StartSasResult>, CryptoStoreError> {
1360+ let user_id = parse_user_id(&user_id)?;
1361+ let device_id = device_id.as_str().into();
1362+
1363+ Ok(
1364+ if let Some(device) =
1365+ self.runtime.block_on(self.inner.get_device(&user_id, device_id, None))?
1366+ {
1367+ let (sas, request) = self.runtime.block_on(device.start_verification())?;
1368+
1369+ Some(StartSasResult {
1370+ sas: Sas { inner: Box::new(sas), runtime: self.runtime.handle().to_owned() }
1371+ .into(),
1372+ request: request.into(),
1373+ })
1374+ } else {
1375+ None
1376+ },
1377+ )
1378+ }
1379+
1380+ /// Create a new private cross signing identity and create a request to
1381+ /// upload the public part of it to the server.
1382+ pub fn bootstrap_cross_signing(&self) -> Result<BootstrapCrossSigningResult, CryptoStoreError> {
1383+ Ok(self.runtime.block_on(self.inner.bootstrap_cross_signing(true))?.into())
1384+ }
1385+
1386+ /// Export all our private cross signing keys.
1387+ ///
1388+ /// The export will contain the seed for the ed25519 keys as a base64
1389+ /// encoded string.
1390+ ///
1391+ /// This method returns `None` if we don't have any private cross signing
1392+ /// keys.
1393+ pub fn export_cross_signing_keys(
1394+ &self,
1395+ ) -> Result<Option<CrossSigningKeyExport>, CryptoStoreError> {
1396+ Ok(self.runtime.block_on(self.inner.export_cross_signing_keys())?.map(|e| e.into()))
1397+ }
1398+
1399+ /// Import our private cross signing keys.
1400+ ///
1401+ /// The export needs to contain the seed for the ed25519 keys as a base64
1402+ /// encoded string.
1403+ pub fn import_cross_signing_keys(
1404+ &self,
1405+ export: CrossSigningKeyExport,
1406+ ) -> Result<(), SecretImportError> {
1407+ self.runtime.block_on(self.inner.import_cross_signing_keys(export.into()))?;
1408+
1409+ Ok(())
1410+ }
1411+
1412+ /// Export all the secrets we have in the store into a serialized
1413+ /// SecretsBundle.
1414+ ///
1415+ /// This method will export all the private cross-signing keys and, if
1416+ /// available, the private part of a backup key and its accompanying
1417+ /// version.
1418+ ///
1419+ /// The method will fail if we don't have all three private cross-signing
1420+ /// keys available.
1421+ ///
1422+ /// **Warning**: Only export this and share it with a trusted recipient,
1423+ /// i.e. if an existing device is sharing this with a new device.
1424+ pub fn export_secrets_bundle(&self) -> Result<String, SecretsBundleExportError> {
1425+ let bundle = self.runtime.block_on(self.inner.store().export_secrets_bundle())?;
1426+
1427+ Ok(serde_json::to_string(&bundle)?)
1428+ }
1429+
1430+ /// Request missing local secrets from our devices (cross signing private
1431+ /// keys, megolm backup). This will ask the sdk to create outgoing
1432+ /// request to get the missing secrets.
1433+ ///
1434+ /// The requests will be processed as soon as `outgoing_requests()` is
1435+ /// called to process them.
1436+ pub fn query_missing_secrets_from_other_sessions(&self) -> Result<bool, CryptoStoreError> {
1437+ Ok(self.runtime.block_on(self.inner.query_missing_secrets_from_other_sessions())?)
1438+ }
1439+
1440+ /// Activate the given backup key to be used with the given backup version.
1441+ ///
1442+ /// **Warning**: The caller needs to make sure that the given `BackupKey` is
1443+ /// trusted, otherwise we might be encrypting room keys that a malicious
1444+ /// party could decrypt.
1445+ ///
1446+ /// The [`OlmMachine::verify_backup`] method can be used to so.
1447+ pub fn enable_backup_v1(
1448+ &self,
1449+ key: MegolmV1BackupKey,
1450+ version: String,
1451+ ) -> Result<(), DecodeError> {
1452+ let backup_key = RustBackupKey::from_base64(&key.public_key)?;
1453+ backup_key.set_version(version);
1454+
1455+ self.runtime.block_on(self.inner.backup_machine().enable_backup_v1(backup_key))?;
1456+
1457+ Ok(())
1458+ }
1459+
1460+ /// Are we able to encrypt room keys.
1461+ ///
1462+ /// This returns true if we have an active `BackupKey` and backup version
1463+ /// registered with the state machine.
1464+ pub fn backup_enabled(&self) -> bool {
1465+ self.runtime.block_on(self.inner.backup_machine().enabled())
1466+ }
1467+
1468+ /// Disable and reset our backup state.
1469+ ///
1470+ /// This will remove any pending backup request, remove the backup key and
1471+ /// reset the backup state of each room key we have.
1472+ pub fn disable_backup(&self) -> Result<(), CryptoStoreError> {
1473+ Ok(self.runtime.block_on(self.inner.backup_machine().disable_backup())?)
1474+ }
1475+
1476+ /// Encrypt a batch of room keys and return a request that needs to be sent
1477+ /// out to backup the room keys.
1478+ pub fn backup_room_keys(&self) -> Result<Option<Request>, CryptoStoreError> {
1479+ let request = self.runtime.block_on(self.inner.backup_machine().backup())?;
1480+
1481+ let request = request.map(|r| r.into());
1482+
1483+ Ok(request)
1484+ }
1485+
1486+ /// Get the number of backed up room keys and the total number of room keys.
1487+ pub fn room_key_counts(&self) -> Result<RoomKeyCounts, CryptoStoreError> {
1488+ Ok(self.runtime.block_on(self.inner.backup_machine().room_key_counts())?.into())
1489+ }
1490+
1491+ /// Store the recovery key in the crypto store.
1492+ ///
1493+ /// This is useful if the client wants to support gossiping of the backup
1494+ /// key.
1495+ pub fn save_recovery_key(
1496+ &self,
1497+ key: Option<Arc<BackupRecoveryKey>>,
1498+ version: Option<String>,
1499+ ) -> Result<(), CryptoStoreError> {
1500+ let key = key.map(|k| {
1501+ // We need to clone here due to FFI limitations but RecoveryKey does
1502+ // not want to expose clone since it's private key material.
1503+ let mut encoded = k.to_base64();
1504+ let key = BackupDecryptionKey::from_base64(&encoded)
1505+ .expect("Encoding and decoding from base64 should always work");
1506+ encoded.zeroize();
1507+ key
1508+ });
1509+ Ok(self.runtime.block_on(self.inner.backup_machine().save_decryption_key(key, version))?)
1510+ }
1511+
1512+ /// Get the backup keys we have saved in our crypto store.
1513+ pub fn get_backup_keys(&self) -> Result<Option<Arc<BackupKeys>>, CryptoStoreError> {
1514+ Ok(self
1515+ .runtime
1516+ .block_on(self.inner.backup_machine().get_backup_keys())?
1517+ .try_into()
1518+ .ok()
1519+ .map(Arc::new))
1520+ }
1521+
1522+ /// Sign the given message using our device key and if available cross
1523+ /// signing master key.
1524+ pub fn sign(
1525+ &self,
1526+ message: String,
1527+ ) -> Result<HashMap<String, HashMap<String, String>>, CryptoStoreError> {
1528+ Ok(self
1529+ .runtime
1530+ .block_on(self.inner.sign(&message))?
1531+ .into_iter()
1532+ .map(|(k, v)| {
1533+ (
1534+ k.to_string(),
1535+ v.into_iter()
1536+ .map(|(k, v)| {
1537+ (
1538+ k.to_string(),
1539+ match v {
1540+ Ok(s) => s.to_base64(),
1541+ Err(i) => i.source,
1542+ },
1543+ )
1544+ })
1545+ .collect(),
1546+ )
1547+ })
1548+ .collect())
1549+ }
1550+
1551+ /// Check if the given backup has been verified by us or by another of our
1552+ /// devices that we trust.
1553+ ///
1554+ /// The `backup_info` should be a JSON encoded object with the following
1555+ /// format:
1556+ ///
1557+ /// ```json
1558+ /// {
1559+ /// "algorithm": "m.megolm_backup.v1.curve25519-aes-sha2",
1560+ /// "auth_data": {
1561+ /// "public_key":"XjhWTCjW7l59pbfx9tlCBQolfnIQWARoKOzjTOPSlWM",
1562+ /// "signatures": {}
1563+ /// }
1564+ /// }
1565+ /// ```
1566+ pub fn verify_backup(
1567+ &self,
1568+ backup_info: String,
1569+ ) -> Result<SignatureVerification, CryptoStoreError> {
1570+ let backup_info = serde_json::from_str(&backup_info)?;
1571+
1572+ Ok(self
1573+ .runtime
1574+ .block_on(self.inner.backup_machine().verify_backup(backup_info, false))?
1575+ .into())
1576+ }
1577+
1578+ /// Manage dehydrated devices.
1579+ pub fn dehydrated_devices(&self) -> Arc<DehydratedDevices> {
1580+ DehydratedDevices {
1581+ inner: ManuallyDrop::new(self.inner.dehydrated_devices()),
1582+ runtime: self.runtime.handle().to_owned(),
1583+ }
1584+ .into()
1585+ }
1586+}
1587+
1588+impl OlmMachine {
1589+ fn import_room_keys_helper(
1590+ &self,
1591+ keys: Vec<ExportedRoomKey>,
1592+ from_backup_version: Option<&str>,
1593+ progress_listener: Box<dyn ProgressListener>,
1594+ ) -> Result<KeysImportResult, KeyImportError> {
1595+ let listener = |progress: usize, total: usize| {
1596+ progress_listener.on_progress(progress as i32, total as i32)
1597+ };
1598+
1599+ let result = self.runtime.block_on(self.inner.store().import_room_keys(
1600+ keys,
1601+ from_backup_version,
1602+ listener,
1603+ ))?;
1604+
1605+ Ok(KeysImportResult {
1606+ imported: result.imported_count as i64,
1607+ total: result.total_count as i64,
1608+ keys: result
1609+ .keys
1610+ .into_iter()
1611+ .map(|(r, m)| {
1612+ (
1613+ r.to_string(),
1614+ m.into_iter().map(|(s, k)| (s, k.into_iter().collect())).collect(),
1615+ )
1616+ })
1617+ .collect(),
1618+ })
1619+ }
1620+}
Added file: bindings/matrix-sdk-crypto-ffi/src/responses.rs+356 additions
@@ -0,0 +1,356 @@
1+#![allow(missing_docs)]
2+
3+use std::collections::HashMap;
4+
5+use http::Response;
6+use matrix_sdk_crypto::{
7+ CrossSigningBootstrapRequests,
8+ types::requests::{
9+ AnyIncomingResponse, KeysBackupRequest, OutgoingRequest,
10+ OutgoingVerificationRequest as SdkVerificationRequest, RoomMessageRequest, ToDeviceRequest,
11+ UploadSigningKeysRequest as RustUploadSigningKeysRequest,
12+ },
13+};
14+use ruma::{
15+ OwnedTransactionId, UserId,
16+ api::client::{
17+ backup::add_backup_keys::v3::Response as KeysBackupResponse,
18+ keys::{
19+ claim_keys::v3::{Request as KeysClaimRequest, Response as KeysClaimResponse},
20+ get_keys::v3::Response as KeysQueryResponse,
21+ upload_keys::v3::Response as KeysUploadResponse,
22+ upload_signatures::v3::{
23+ Request as RustSignatureUploadRequest, Response as SignatureUploadResponse,
24+ },
25+ },
26+ message::send_message_event::v3::Response as RoomMessageResponse,
27+ sync::sync_events::DeviceLists as RumaDeviceLists,
28+ to_device::send_event_to_device::v3::Response as ToDeviceResponse,
29+ },
30+ assign,
31+ events::MessageLikeEventContent,
32+};
33+use serde_json::json;
34+
35+#[derive(uniffi::Record)]
36+pub struct SignatureUploadRequest {
37+ pub body: String,
38+}
39+
40+impl From<RustSignatureUploadRequest> for SignatureUploadRequest {
41+ fn from(r: RustSignatureUploadRequest) -> Self {
42+ Self {
43+ body: serde_json::to_string(&r.signed_keys)
44+ .expect("Can't serialize signature upload request"),
45+ }
46+ }
47+}
48+
49+#[derive(uniffi::Record)]
50+pub struct UploadSigningKeysRequest {
51+ pub master_key: String,
52+ pub self_signing_key: String,
53+ pub user_signing_key: String,
54+}
55+
56+impl From<RustUploadSigningKeysRequest> for UploadSigningKeysRequest {
57+ fn from(r: RustUploadSigningKeysRequest) -> Self {
58+ Self {
59+ master_key: serde_json::to_string(
60+ &r.master_key.expect("Request didn't contain a master key"),
61+ )
62+ .expect("Can't serialize cross signing master key"),
63+ self_signing_key: serde_json::to_string(
64+ &r.self_signing_key.expect("Request didn't contain a self-signing key"),
65+ )
66+ .expect("Can't serialize cross signing self-signing key"),
67+ user_signing_key: serde_json::to_string(
68+ &r.user_signing_key.expect("Request didn't contain a user-signing key"),
69+ )
70+ .expect("Can't serialize cross signing user-signing key"),
71+ }
72+ }
73+}
74+
75+#[derive(uniffi::Record)]
76+pub struct BootstrapCrossSigningResult {
77+ /// Optional request to upload some device keys alongside.
78+ ///
79+ /// Must be sent first if present, and marked with `mark_request_as_sent`.
80+ pub upload_keys_request: Option<Request>,
81+ /// Request to upload the signing keys. Must be sent second.
82+ pub upload_signing_keys_request: UploadSigningKeysRequest,
83+ /// Request to upload the keys signatures, including for the signing keys
84+ /// and optionally for the device keys. Must be sent last.
85+ pub upload_signature_request: SignatureUploadRequest,
86+}
87+
88+impl From<CrossSigningBootstrapRequests> for BootstrapCrossSigningResult {
89+ fn from(requests: CrossSigningBootstrapRequests) -> Self {
90+ Self {
91+ upload_signing_keys_request: requests.upload_signing_keys_req.into(),
92+ upload_keys_request: requests.upload_keys_req.map(Request::from),
93+ upload_signature_request: requests.upload_signatures_req.into(),
94+ }
95+ }
96+}
97+
98+#[derive(uniffi::Enum)]
99+pub enum OutgoingVerificationRequest {
100+ ToDevice { request_id: String, event_type: String, body: String },
101+ InRoom { request_id: String, room_id: String, event_type: String, content: String },
102+}
103+
104+impl From<SdkVerificationRequest> for OutgoingVerificationRequest {
105+ fn from(r: SdkVerificationRequest) -> Self {
106+ match r {
107+ SdkVerificationRequest::ToDevice(r) => r.into(),
108+ SdkVerificationRequest::InRoom(r) => Self::InRoom {
109+ request_id: r.txn_id.to_string(),
110+ room_id: r.room_id.to_string(),
111+ content: serde_json::to_string(&r.content)
112+ .expect("Can't serialize message content"),
113+ event_type: r.content.event_type().to_string(),
114+ },
115+ }
116+ }
117+}
118+
119+impl From<ToDeviceRequest> for OutgoingVerificationRequest {
120+ fn from(r: ToDeviceRequest) -> Self {
121+ Self::ToDevice {
122+ request_id: r.txn_id.to_string(),
123+ event_type: r.event_type.to_string(),
124+ body: serde_json::to_string(&r.messages).expect("Can't serialize to-device body"),
125+ }
126+ }
127+}
128+
129+#[derive(Debug, uniffi::Enum)]
130+pub enum Request {
131+ ToDevice { request_id: String, event_type: String, body: String },
132+ KeysUpload { request_id: String, body: String },
133+ KeysQuery { request_id: String, users: Vec<String> },
134+ KeysClaim { request_id: String, one_time_keys: HashMap<String, HashMap<String, String>> },
135+ KeysBackup { request_id: String, version: String, rooms: String },
136+ RoomMessage { request_id: String, room_id: String, event_type: String, content: String },
137+ SignatureUpload { request_id: String, body: String },
138+}
139+
140+impl From<OutgoingRequest> for Request {
141+ fn from(r: OutgoingRequest) -> Self {
142+ use matrix_sdk_crypto::types::requests::AnyOutgoingRequest::*;
143+
144+ match r.request() {
145+ KeysUpload(u) => {
146+ let body = json!({
147+ "device_keys": u.device_keys,
148+ "one_time_keys": u.one_time_keys,
149+ "fallback_keys": u.fallback_keys,
150+ });
151+
152+ Request::KeysUpload {
153+ request_id: r.request_id().to_string(),
154+ body: serde_json::to_string(&body)
155+ .expect("Can't serialize `/keys/upload` request"),
156+ }
157+ }
158+ KeysQuery(k) => {
159+ let users: Vec<String> = k.device_keys.keys().map(|u| u.to_string()).collect();
160+ Request::KeysQuery { request_id: r.request_id().to_string(), users }
161+ }
162+ ToDeviceRequest(t) => Request::from(t),
163+ SignatureUpload(t) => Request::SignatureUpload {
164+ request_id: r.request_id().to_string(),
165+ body: serde_json::to_string(&t.signed_keys)
166+ .expect("Can't serialize signature upload request"),
167+ },
168+ RoomMessage(r) => Request::from(r),
169+ KeysClaim(c) => (r.request_id().to_owned(), c.clone()).into(),
170+ }
171+ }
172+}
173+
174+impl From<ToDeviceRequest> for Request {
175+ fn from(r: ToDeviceRequest) -> Self {
176+ Request::ToDevice {
177+ request_id: r.txn_id.to_string(),
178+ event_type: r.event_type.to_string(),
179+ body: serde_json::to_string(&r.messages).expect("Can't serialize to-device body"),
180+ }
181+ }
182+}
183+
184+impl From<(OwnedTransactionId, KeysClaimRequest)> for Request {
185+ fn from(request_tuple: (OwnedTransactionId, KeysClaimRequest)) -> Self {
186+ let (request_id, request) = request_tuple;
187+
188+ Request::KeysClaim {
189+ request_id: request_id.to_string(),
190+ one_time_keys: request
191+ .one_time_keys
192+ .into_iter()
193+ .map(|(u, d)| {
194+ (
195+ u.to_string(),
196+ d.into_iter().map(|(k, v)| (k.to_string(), v.to_string())).collect(),
197+ )
198+ })
199+ .collect(),
200+ }
201+ }
202+}
203+
204+impl From<(OwnedTransactionId, KeysBackupRequest)> for Request {
205+ fn from(request_tuple: (OwnedTransactionId, KeysBackupRequest)) -> Self {
206+ let (request_id, request) = request_tuple;
207+
208+ Request::KeysBackup {
209+ request_id: request_id.to_string(),
210+ version: request.version.to_owned(),
211+ rooms: serde_json::to_string(&request.rooms)
212+ .expect("Can't serialize keys backup request"),
213+ }
214+ }
215+}
216+
217+impl From<&ToDeviceRequest> for Request {
218+ fn from(r: &ToDeviceRequest) -> Self {
219+ Request::ToDevice {
220+ request_id: r.txn_id.to_string(),
221+ event_type: r.event_type.to_string(),
222+ body: serde_json::to_string(&r.messages).expect("Can't serialize to-device body"),
223+ }
224+ }
225+}
226+
227+impl From<&Box<RoomMessageRequest>> for Request {
228+ fn from(r: &Box<RoomMessageRequest>) -> Self {
229+ Self::RoomMessage {
230+ request_id: r.txn_id.to_string(),
231+ room_id: r.room_id.to_string(),
232+ event_type: r.content.event_type().to_string(),
233+ content: serde_json::to_string(&r.content).expect("Can't serialize message content"),
234+ }
235+ }
236+}
237+
238+pub(crate) fn response_from_string(body: &str) -> Response<Vec<u8>> {
239+ Response::builder()
240+ .status(200)
241+ .body(body.as_bytes().to_vec())
242+ .expect("Can't create HTTP response")
243+}
244+
245+#[derive(uniffi::Enum)]
246+pub enum RequestType {
247+ KeysQuery,
248+ KeysClaim,
249+ KeysUpload,
250+ ToDevice,
251+ SignatureUpload,
252+ KeysBackup,
253+ RoomMessage,
254+}
255+
256+#[derive(uniffi::Record)]
257+pub struct DeviceLists {
258+ pub changed: Vec<String>,
259+ pub left: Vec<String>,
260+}
261+
262+impl From<DeviceLists> for RumaDeviceLists {
263+ fn from(d: DeviceLists) -> Self {
264+ assign!(RumaDeviceLists::new(), {
265+ changed: d
266+ .changed
267+ .into_iter()
268+ .filter_map(|u| UserId::parse(u).ok())
269+ .collect(),
270+ left: d
271+ .left
272+ .into_iter()
273+ .filter_map(|u| UserId::parse(u).ok())
274+ .collect(),
275+ })
276+ }
277+}
278+
279+#[derive(uniffi::Record)]
280+pub struct KeysImportResult {
281+ /// The number of room keys that were imported.
282+ pub imported: i64,
283+ /// The total number of room keys that were found in the export.
284+ pub total: i64,
285+ /// The map of keys that were imported.
286+ ///
287+ /// It's a map from room id to a map of the sender key to a list of session
288+ /// ids.
289+ pub keys: HashMap<String, HashMap<String, Vec<String>>>,
290+}
291+
292+pub(crate) enum OwnedResponse {
293+ KeysClaim(KeysClaimResponse),
294+ KeysUpload(KeysUploadResponse),
295+ KeysQuery(KeysQueryResponse),
296+ ToDevice(ToDeviceResponse),
297+ SignatureUpload(SignatureUploadResponse),
298+ KeysBackup(KeysBackupResponse),
299+ RoomMessage(RoomMessageResponse),
300+}
301+
302+impl From<KeysClaimResponse> for OwnedResponse {
303+ fn from(response: KeysClaimResponse) -> Self {
304+ OwnedResponse::KeysClaim(response)
305+ }
306+}
307+
308+impl From<KeysQueryResponse> for OwnedResponse {
309+ fn from(response: KeysQueryResponse) -> Self {
310+ OwnedResponse::KeysQuery(response)
311+ }
312+}
313+
314+impl From<KeysUploadResponse> for OwnedResponse {
315+ fn from(response: KeysUploadResponse) -> Self {
316+ OwnedResponse::KeysUpload(response)
317+ }
318+}
319+
320+impl From<ToDeviceResponse> for OwnedResponse {
321+ fn from(response: ToDeviceResponse) -> Self {
322+ OwnedResponse::ToDevice(response)
323+ }
324+}
325+
326+impl From<SignatureUploadResponse> for OwnedResponse {
327+ fn from(response: SignatureUploadResponse) -> Self {
328+ Self::SignatureUpload(response)
329+ }
330+}
331+
332+impl From<KeysBackupResponse> for OwnedResponse {
333+ fn from(r: KeysBackupResponse) -> Self {
334+ Self::KeysBackup(r)
335+ }
336+}
337+
338+impl From<RoomMessageResponse> for OwnedResponse {
339+ fn from(response: RoomMessageResponse) -> Self {
340+ OwnedResponse::RoomMessage(response)
341+ }
342+}
343+
344+impl<'a> From<&'a OwnedResponse> for AnyIncomingResponse<'a> {
345+ fn from(r: &'a OwnedResponse) -> Self {
346+ match r {
347+ OwnedResponse::KeysClaim(r) => AnyIncomingResponse::KeysClaim(r),
348+ OwnedResponse::KeysQuery(r) => AnyIncomingResponse::KeysQuery(r),
349+ OwnedResponse::KeysUpload(r) => AnyIncomingResponse::KeysUpload(r),
350+ OwnedResponse::ToDevice(r) => AnyIncomingResponse::ToDevice(r),
351+ OwnedResponse::SignatureUpload(r) => AnyIncomingResponse::SignatureUpload(r),
352+ OwnedResponse::KeysBackup(r) => AnyIncomingResponse::KeysBackup(r),
353+ OwnedResponse::RoomMessage(r) => AnyIncomingResponse::RoomMessage(r),
354+ }
355+ }
356+}
Added file: bindings/matrix-sdk-crypto-ffi/src/users.rs+67 additions
@@ -0,0 +1,67 @@
1+use matrix_sdk_crypto::{UserIdentity as SdkUserIdentity, types::CrossSigningKey};
2+
3+use crate::CryptoStoreError;
4+
5+/// Enum representing cross signing identity of our own user or some other
6+/// user.
7+#[derive(uniffi::Enum)]
8+pub enum UserIdentity {
9+ /// Our own user identity.
10+ Own {
11+ /// The unique id of our own user.
12+ user_id: String,
13+ /// Does our own user identity trust our own device.
14+ trusts_our_own_device: bool,
15+ /// The public master key of our identity.
16+ master_key: String,
17+ /// The public user-signing key of our identity.
18+ user_signing_key: String,
19+ /// The public self-signing key of our identity.
20+ self_signing_key: String,
21+ /// True if this identity was verified at some point but is not anymore.
22+ has_verification_violation: bool,
23+ },
24+ /// The user identity of other users.
25+ Other {
26+ /// The unique id of the user.
27+ user_id: String,
28+ /// The public master key of the identity.
29+ master_key: String,
30+ /// The public self-signing key of our identity.
31+ self_signing_key: String,
32+ /// True if this identity was verified at some point but is not anymore.
33+ has_verification_violation: bool,
34+ },
35+}
36+
37+impl UserIdentity {
38+ pub(crate) async fn from_rust(i: SdkUserIdentity) -> Result<Self, CryptoStoreError> {
39+ Ok(match i {
40+ SdkUserIdentity::Own(i) => {
41+ let master: CrossSigningKey = i.master_key().as_ref().to_owned();
42+ let user_signing: CrossSigningKey = i.user_signing_key().as_ref().to_owned();
43+ let self_signing: CrossSigningKey = i.self_signing_key().as_ref().to_owned();
44+
45+ UserIdentity::Own {
46+ user_id: i.user_id().to_string(),
47+ trusts_our_own_device: i.trusts_our_own_device().await?,
48+ master_key: serde_json::to_string(&master)?,
49+ user_signing_key: serde_json::to_string(&user_signing)?,
50+ self_signing_key: serde_json::to_string(&self_signing)?,
51+ has_verification_violation: i.has_verification_violation(),
52+ }
53+ }
54+ SdkUserIdentity::Other(i) => {
55+ let master: CrossSigningKey = i.master_key().as_ref().to_owned();
56+ let self_signing: CrossSigningKey = i.self_signing_key().as_ref().to_owned();
57+
58+ UserIdentity::Other {
59+ user_id: i.user_id().to_string(),
60+ master_key: serde_json::to_string(&master)?,
61+ self_signing_key: serde_json::to_string(&self_signing)?,
62+ has_verification_violation: i.has_verification_violation(),
63+ }
64+ }
65+ })
66+ }
67+}
Added file: bindings/matrix-sdk-crypto-ffi/src/verification.rs+624 additions
@@ -0,0 +1,807 @@
1+use std::sync::Arc;
2+
3+use futures_util::{Stream, StreamExt};
4+use matrix_sdk_common::executor::Handle;
5+use matrix_sdk_crypto::{
6+ CancelInfo as RustCancelInfo, QrVerification as InnerQr, QrVerificationState, Sas as InnerSas,
7+ SasState as RustSasState, Verification as InnerVerification,
8+ VerificationRequest as InnerVerificationRequest,
9+ VerificationRequestState as RustVerificationRequestState,
10+ matrix_sdk_qrcode::QrVerificationData,
11+};
12+use ruma::events::key::verification::VerificationMethod;
13+use vodozemac::{base64_decode, base64_encode};
14+
15+use crate::{CryptoStoreError, OutgoingVerificationRequest, SignatureUploadRequest};
16+
17+/// Listener that will be passed over the FFI to report changes to a SAS
18+/// verification.
19+#[matrix_sdk_ffi_macros::export(callback_interface)]
20+pub trait SasListener: Send {
21+ /// The callback that should be called on the Rust side
22+ ///
23+ /// # Arguments
24+ ///
25+ /// * `state` - The current state of the SAS verification.
26+ fn on_change(&self, state: SasState);
27+}
28+
29+/// An Enum describing the state the SAS verification is in.
30+#[derive(uniffi::Enum)]
31+pub enum SasState {
32+ /// The verification has been created, the protocols that should be used
33+ /// have been proposed to the other party.
34+ Created,
35+ /// The verification has been started, the other party proposed the
36+ /// protocols that should be used and that can be accepted.
37+ Started,
38+ /// The verification has been accepted and both sides agreed to a set of
39+ /// protocols that will be used for the verification process.
40+ Accepted,
41+ /// The public keys have been exchanged and the short auth string can be
42+ /// presented to the user.
43+ KeysExchanged {
44+ /// The emojis that represent the short auth string, will be `None` if
45+ /// the emoji SAS method wasn't one of accepted protocols.
46+ emojis: Option<Vec<i32>>,
47+ /// The list of decimals that represent the short auth string.
48+ decimals: Vec<i32>,
49+ },
50+ /// The verification process has been confirmed from our side, we're waiting
51+ /// for the other side to confirm as well.
52+ Confirmed,
53+ /// The verification process has been successfully concluded.
54+ Done,
55+ /// The verification process has been cancelled.
56+ Cancelled {
57+ /// Information about the reason of the cancellation.
58+ cancel_info: CancelInfo,
59+ },
60+}
61+
62+impl From<RustSasState> for SasState {
63+ fn from(s: RustSasState) -> Self {
64+ match s {
65+ RustSasState::Created { .. } => Self::Created,
66+ RustSasState::Started { .. } => Self::Started,
67+ RustSasState::Accepted { .. } => Self::Accepted,
68+ RustSasState::KeysExchanged { emojis, decimals } => Self::KeysExchanged {
69+ emojis: emojis.map(|e| e.indices.map(|i| i as i32).to_vec()),
70+ decimals: [decimals.0.into(), decimals.1.into(), decimals.2.into()].to_vec(),
71+ },
72+ RustSasState::Confirmed => Self::Confirmed,
73+ RustSasState::Done { .. } => Self::Done,
74+ RustSasState::Cancelled(c) => Self::Cancelled { cancel_info: c.into() },
75+ }
76+ }
77+}
78+
79+/// Enum representing the different verification flows we support.
80+#[derive(uniffi::Object)]
81+pub struct Verification {
82+ pub(crate) inner: InnerVerification,
83+ pub(crate) runtime: Handle,
84+}
85+
86+#[matrix_sdk_ffi_macros::export]
87+impl Verification {
88+ /// Try to represent the `Verification` as an `Sas` verification object,
89+ /// returns `None` if the verification is not a `Sas` verification.
90+ pub fn as_sas(&self) -> Option<Arc<Sas>> {
91+ if let InnerVerification::SasV1(sas) = &self.inner {
92+ Some(Sas { inner: sas.clone(), runtime: self.runtime.to_owned() }.into())
93+ } else {
94+ None
95+ }
96+ }
97+
98+ /// Try to represent the `Verification` as an `QrCode` verification object,
99+ /// returns `None` if the verification is not a `QrCode` verification.
100+ pub fn as_qr(&self) -> Option<Arc<QrCode>> {
101+ if let InnerVerification::QrV1(qr) = &self.inner {
102+ Some(QrCode { inner: qr.clone(), runtime: self.runtime.to_owned() }.into())
103+ } else {
104+ None
105+ }
106+ }
107+}
108+
109+/// The `m.sas.v1` verification flow.
110+#[derive(uniffi::Object)]
111+pub struct Sas {
112+ pub(crate) inner: Box<InnerSas>,
113+ pub(crate) runtime: Handle,
114+}
115+
116+#[matrix_sdk_ffi_macros::export]
117+impl Sas {
118+ /// Get the user id of the other side.
119+ pub fn other_user_id(&self) -> String {
120+ self.inner.other_user_id().to_string()
121+ }
122+
123+ /// Get the device ID of the other side.
124+ pub fn other_device_id(&self) -> String {
125+ self.inner.other_device_id().to_string()
126+ }
127+
128+ /// Get the unique ID that identifies this SAS verification flow.
129+ pub fn flow_id(&self) -> String {
130+ self.inner.flow_id().as_str().to_owned()
131+ }
132+
133+ /// Get the room id if the verification is happening inside a room.
134+ pub fn room_id(&self) -> Option<String> {
135+ self.inner.room_id().map(|r| r.to_string())
136+ }
137+
138+ /// Is the SAS flow done.
139+ pub fn is_done(&self) -> bool {
140+ self.inner.is_done()
141+ }
142+
143+ /// Did we initiate the verification flow.
144+ pub fn we_started(&self) -> bool {
145+ self.inner.we_started()
146+ }
147+
148+ /// Accept that we're going forward with the short auth string verification.
149+ pub fn accept(&self) -> Option<OutgoingVerificationRequest> {
150+ self.inner.accept().map(|r| r.into())
151+ }
152+
153+ /// Confirm a verification was successful.
154+ ///
155+ /// This method should be called if a short auth string should be confirmed
156+ /// as matching.
157+ pub fn confirm(&self) -> Result<Option<ConfirmVerificationResult>, CryptoStoreError> {
158+ let (requests, signature_request) = self.runtime.block_on(self.inner.confirm())?;
159+
160+ let requests = requests.into_iter().map(|r| r.into()).collect();
161+
162+ Ok(Some(ConfirmVerificationResult {
163+ requests,
164+ signature_request: signature_request.map(|s| s.into()),
165+ }))
166+ }
167+
168+ /// Cancel the SAS verification using the given cancel code.
169+ ///
170+ /// # Arguments
171+ ///
172+ /// * `cancel_code` - The error code for why the verification was cancelled,
173+ /// manual cancellatio usually happens with `m.user` cancel code. The full
174+ /// list of cancel codes can be found in the [spec]
175+ ///
176+ /// [spec]: https://spec.matrix.org/unstable/client-server-api/#mkeyverificationcancel
177+ pub fn cancel(&self, cancel_code: String) -> Option<OutgoingVerificationRequest> {
178+ self.inner.cancel_with_code(cancel_code.into()).map(|r| r.into())
179+ }
180+
181+ /// Get a list of emoji indices of the emoji representation of the short
182+ /// auth string.
183+ ///
184+ /// *Note*: A SAS verification needs to be started and in the presentable
185+ /// state for this to return the list of emoji indices, otherwise returns
186+ /// `None`.
187+ pub fn get_emoji_indices(&self) -> Option<Vec<i32>> {
188+ self.inner.emoji_index().map(|v| v.iter().map(|i| (*i).into()).collect())
189+ }
190+
191+ /// Get the decimal representation of the short auth string.
192+ ///
193+ /// *Note*: A SAS verification needs to be started and in the presentable
194+ /// state for this to return the list of decimals, otherwise returns
195+ /// `None`.
196+ pub fn get_decimals(&self) -> Option<Vec<i32>> {
197+ self.inner.decimals().map(|v| [v.0.into(), v.1.into(), v.2.into()].to_vec())
198+ }
199+
200+ /// Set a listener for changes in the SAS verification process.
201+ ///
202+ /// The given callback will be called whenever the state changes.
203+ ///
204+ /// This method can be used to react to changes in the state of the
205+ /// verification process, or rather the method can be used to handle
206+ /// each step of the verification process.
207+ ///
208+ /// This method will spawn a tokio task on the Rust side, once we reach the
209+ /// Done or Cancelled state, the task will stop listening for changes.
210+ ///
211+ /// # Flowchart
212+ ///
213+ /// The flow of the verification process is pictured below. Please note
214+ /// that the process can be cancelled at each step of the process.
215+ /// Either side can cancel the process.
216+ ///
217+ /// ```text
218+ /// ┌───────┐
219+ /// │Started│
220+ /// └───┬───┘
221+ /// │
222+ /// ┌────⌄───┐
223+ /// │Accepted│
224+ /// └────┬───┘
225+ /// │
226+ /// ┌───────⌄──────┐
227+ /// │Keys Exchanged│
228+ /// └───────┬──────┘
229+ /// │
230+ /// ________⌄________
231+ /// ╱ ╲ ┌─────────┐
232+ /// ╱ Does the short ╲______│Cancelled│
233+ /// ╲ auth string match ╱ no └─────────┘
234+ /// ╲_________________╱
235+ /// │yes
236+ /// │
237+ /// ┌────⌄────┐
238+ /// │Confirmed│
239+ /// └────┬────┘
240+ /// │
241+ /// ┌───⌄───┐
242+ /// │ Done │
243+ /// └───────┘
244+ /// ```
245+ pub fn set_changes_listener(&self, listener: Box<dyn SasListener>) {
246+ let stream = self.inner.changes();
247+
248+ self.runtime.spawn(Self::changes_listener(stream, listener));
249+ }
250+
251+ /// Get the current state of the SAS verification process.
252+ pub fn state(&self) -> SasState {
253+ self.inner.state().into()
254+ }
255+}
256+
257+impl Sas {
258+ async fn changes_listener(
259+ mut stream: impl Stream<Item = RustSasState> + std::marker::Unpin,
260+ listener: Box<dyn SasListener>,
261+ ) {
262+ while let Some(state) = stream.next().await {
263+ // If we receive a done or a cancelled state we're at the end of our road, we
264+ // break out of the loop to deallocate the stream and finish the
265+ // task.
266+ let should_break =
267+ matches!(state, RustSasState::Done { .. } | RustSasState::Cancelled { .. });
268+
269+ listener.on_change(state.into());
270+
271+ if should_break {
272+ break;
273+ }
274+ }
275+ }
276+}
277+
278+/// Listener that will be passed over the FFI to report changes to a QrCode
279+/// verification.
280+#[matrix_sdk_ffi_macros::export(callback_interface)]
281+pub trait QrCodeListener: Send {
282+ /// The callback that should be called on the Rust side
283+ ///
284+ /// # Arguments
285+ ///
286+ /// * `state` - The current state of the QrCode verification.
287+ fn on_change(&self, state: QrCodeState);
288+}
289+
290+/// An Enum describing the state the QrCode verification is in.
291+#[derive(uniffi::Enum)]
292+pub enum QrCodeState {
293+ /// The QR verification has been started.
294+ Started,
295+ /// The QR verification has been scanned by the other side.
296+ Scanned,
297+ /// The scanning of the QR code has been confirmed by us.
298+ Confirmed,
299+ /// We have successfully scanned the QR code and are able to send a
300+ /// reciprocation event.
301+ Reciprocated,
302+ /// The verification process has been successfully concluded.
303+ Done,
304+ /// The verification process has been cancelled.
305+ Cancelled {
306+ /// Information about the reason of the cancellation.
307+ cancel_info: CancelInfo,
308+ },
309+}
310+
311+impl From<QrVerificationState> for QrCodeState {
312+ fn from(value: QrVerificationState) -> Self {
313+ match value {
314+ QrVerificationState::Started => Self::Started,
315+ QrVerificationState::Scanned => Self::Scanned,
316+ QrVerificationState::Confirmed => Self::Confirmed,
317+ QrVerificationState::Reciprocated => Self::Reciprocated,
318+ QrVerificationState::Done { .. } => Self::Done,
319+ QrVerificationState::Cancelled(c) => Self::Cancelled { cancel_info: c.into() },
320+ }
321+ }
322+}
323+
324+/// The `m.qr_code.scan.v1`, `m.qr_code.show.v1`, and `m.reciprocate.v1`
325+/// verification flow.
326+#[derive(uniffi::Object)]
327+pub struct QrCode {
328+ pub(crate) inner: Box<InnerQr>,
329+ pub(crate) runtime: Handle,
330+}
331+
332+#[matrix_sdk_ffi_macros::export]
333+impl QrCode {
334+ /// Get the user id of the other side.
335+ pub fn other_user_id(&self) -> String {
336+ self.inner.other_user_id().to_string()
337+ }
338+
339+ /// Get the device ID of the other side.
340+ pub fn other_device_id(&self) -> String {
341+ self.inner.other_device_id().to_string()
342+ }
343+
344+ /// Get the unique ID that identifies this QR code verification flow.
345+ pub fn flow_id(&self) -> String {
346+ self.inner.flow_id().as_str().to_owned()
347+ }
348+
349+ /// Get the room id if the verification is happening inside a room.
350+ pub fn room_id(&self) -> Option<String> {
351+ self.inner.room_id().map(|r| r.to_string())
352+ }
353+
354+ /// Is the QR code verification done.
355+ pub fn is_done(&self) -> bool {
356+ self.inner.is_done()
357+ }
358+
359+ /// Has the verification flow been cancelled.
360+ pub fn is_cancelled(&self) -> bool {
361+ self.inner.is_cancelled()
362+ }
363+
364+ /// Did we initiate the verification flow.
365+ pub fn we_started(&self) -> bool {
366+ self.inner.we_started()
367+ }
368+
369+ /// Get the CancelInfo of this QR code verification object.
370+ ///
371+ /// Will be `None` if the flow has not been cancelled.
372+ pub fn cancel_info(&self) -> Option<CancelInfo> {
373+ self.inner.cancel_info().map(|c| c.into())
374+ }
375+
376+ /// Has the QR verification been scanned by the other side.
377+ ///
378+ /// When the verification object is in this state it's required that the
379+ /// user confirms that the other side has scanned the QR code.
380+ pub fn has_been_scanned(&self) -> bool {
381+ self.inner.has_been_scanned()
382+ }
383+
384+ /// Have we successfully scanned the QR code and are able to send a
385+ /// reciprocation event.
386+ pub fn reciprocated(&self) -> bool {
387+ self.inner.reciprocated()
388+ }
389+
390+ /// Cancel the QR code verification using the given cancel code.
391+ ///
392+ /// # Arguments
393+ ///
394+ /// * `cancel_code` - The error code for why the verification was cancelled,
395+ /// manual cancellatio usually happens with `m.user` cancel code. The full
396+ /// list of cancel codes can be found in the [spec]
397+ ///
398+ /// [spec]: https://spec.matrix.org/unstable/client-server-api/#mkeyverificationcancel
399+ pub fn cancel(&self, cancel_code: String) -> Option<OutgoingVerificationRequest> {
400+ self.inner.cancel_with_code(cancel_code.into()).map(|r| r.into())
401+ }
402+
403+ /// Confirm a verification was successful.
404+ ///
405+ /// This method should be called if we want to confirm that the other side
406+ /// has scanned our QR code.
407+ pub fn confirm(&self) -> Option<ConfirmVerificationResult> {
408+ self.inner.confirm_scanning().map(|r| ConfirmVerificationResult {
409+ requests: vec![r.into()],
410+ signature_request: None,
411+ })
412+ }
413+
414+ /// Generate data that should be encoded as a QR code.
415+ ///
416+ /// This method should be called right before a QR code should be displayed,
417+ /// the returned data is base64 encoded (without padding) and needs to be
418+ /// decoded on the other side before it can be put through a QR code
419+ /// generator.
420+ pub fn generate_qr_code(&self) -> Option<String> {
421+ self.inner.to_bytes().map(base64_encode).ok()
422+ }
423+
424+ /// Set a listener for changes in the QrCode verification process.
425+ ///
426+ /// The given callback will be called whenever the state changes.
427+ pub fn set_changes_listener(&self, listener: Box<dyn QrCodeListener>) {
428+ let stream = self.inner.changes();
429+
430+ self.runtime.spawn(Self::changes_listener(stream, listener));
431+ }
432+
433+ /// Get the current state of the QrCode verification process.
434+ pub fn state(&self) -> QrCodeState {
435+ self.inner.state().into()
436+ }
437+}
438+
439+impl QrCode {
440+ async fn changes_listener(
441+ mut stream: impl Stream<Item = QrVerificationState> + std::marker::Unpin,
442+ listener: Box<dyn QrCodeListener>,
443+ ) {
444+ while let Some(state) = stream.next().await {
445+ // If we receive a done or a cancelled state we're at the end of our road, we
446+ // break out of the loop to deallocate the stream and finish the
447+ // task.
448+ let should_break = matches!(
449+ state,
450+ QrVerificationState::Done { .. } | QrVerificationState::Cancelled { .. }
451+ );
452+
453+ listener.on_change(state.into());
454+
455+ if should_break {
456+ break;
457+ }
458+ }
459+ }
460+}
461+
462+/// Information on why a verification flow has been cancelled and by whom.
463+#[derive(uniffi::Record)]
464+pub struct CancelInfo {
465+ /// The textual representation of the cancel reason
466+ pub reason: String,
467+ /// The code describing the cancel reason
468+ pub cancel_code: String,
469+ /// Was the verification flow cancelled by us
470+ pub cancelled_by_us: bool,
471+}
472+
473+impl From<RustCancelInfo> for CancelInfo {
474+ fn from(c: RustCancelInfo) -> Self {
475+ Self {
476+ reason: c.reason().to_owned(),
477+ cancel_code: c.cancel_code().to_string(),
478+ cancelled_by_us: c.cancelled_by_us(),
479+ }
480+ }
481+}
482+
483+/// A result type for starting SAS verifications.
484+#[derive(uniffi::Record)]
485+pub struct StartSasResult {
486+ /// The SAS verification object that got created.
487+ pub sas: Arc<Sas>,
488+ /// The request that needs to be sent out to notify the other side that a
489+ /// SAS verification should start.
490+ pub request: OutgoingVerificationRequest,
491+}
492+
493+/// A result type for scanning QR codes.
494+#[derive(uniffi::Record)]
495+pub struct ScanResult {
496+ /// The QR code verification object that got created.
497+ pub qr: Arc<QrCode>,
498+ /// The request that needs to be sent out to notify the other side that a
499+ /// QR code verification should start.
500+ pub request: OutgoingVerificationRequest,
501+}
502+
503+/// A result type for requesting verifications.
504+#[derive(uniffi::Record)]
505+pub struct RequestVerificationResult {
506+ /// The verification request object that got created.
507+ pub verification: Arc<VerificationRequest>,
508+ /// The request that needs to be sent out to notify the other side that
509+ /// we're requesting verification to begin.
510+ pub request: OutgoingVerificationRequest,
511+}
512+
513+/// A result type for confirming verifications.
514+#[derive(uniffi::Record)]
515+pub struct ConfirmVerificationResult {
516+ /// The requests that needs to be sent out to notify the other side that we
517+ /// confirmed the verification.
518+ pub requests: Vec<OutgoingVerificationRequest>,
519+ /// A request that will upload signatures of the verified device or user, if
520+ /// the verification is completed and we're able to sign devices or users
521+ pub signature_request: Option<SignatureUploadRequest>,
522+}
523+
524+/// Listener that will be passed over the FFI to report changes to a
525+/// verification request.
526+#[matrix_sdk_ffi_macros::export(callback_interface)]
527+pub trait VerificationRequestListener: Send {
528+ /// The callback that should be called on the Rust side
529+ ///
530+ /// # Arguments
531+ ///
532+ /// * `state` - The current state of the verification request.
533+ fn on_change(&self, state: VerificationRequestState);
534+}
535+
536+/// An Enum describing the state the QrCode verification is in.
537+#[derive(uniffi::Enum)]
538+pub enum VerificationRequestState {
539+ /// The verification request was sent
540+ Requested,
541+ /// The verification request is ready to start a verification flow.
542+ Ready {
543+ /// The verification methods supported by the other side.
544+ their_methods: Vec<String>,
545+
546+ /// The verification methods supported by the us.
547+ our_methods: Vec<String>,
548+ },
549+ /// The verification flow that was started with this request has finished.
550+ Done,
551+ /// The verification process has been cancelled.
552+ Cancelled {
553+ /// Information about the reason of the cancellation.
554+ cancel_info: CancelInfo,
555+ },
556+}
557+
558+/// The verificatoin request object which then can transition into some concrete
559+/// verification method
560+#[derive(uniffi::Object)]
561+pub struct VerificationRequest {
562+ pub(crate) inner: InnerVerificationRequest,
563+ pub(crate) runtime: Handle,
564+}
565+
566+#[matrix_sdk_ffi_macros::export]
567+impl VerificationRequest {
568+ /// The id of the other user that is participating in this verification
569+ /// request.
570+ pub fn other_user_id(&self) -> String {
571+ self.inner.other_user().to_string()
572+ }
573+
574+ /// The id of the other device that is participating in this verification.
575+ pub fn other_device_id(&self) -> Option<String> {
576+ self.inner.other_device_id().map(|d| d.to_string())
577+ }
578+
579+ /// Get the unique ID of this verification request
580+ pub fn flow_id(&self) -> String {
581+ self.inner.flow_id().as_str().to_owned()
582+ }
583+
584+ /// Get the room id if the verification is happening inside a room.
585+ pub fn room_id(&self) -> Option<String> {
586+ self.inner.room_id().map(|r| r.to_string())
587+ }
588+
589+ /// Has the verification flow that was started with this request finished.
590+ pub fn is_done(&self) -> bool {
591+ self.inner.is_done()
592+ }
593+
594+ /// Is the verification request ready to start a verification flow.
595+ pub fn is_ready(&self) -> bool {
596+ self.inner.is_ready()
597+ }
598+
599+ /// Did we initiate the verification request
600+ pub fn we_started(&self) -> bool {
601+ self.inner.we_started()
602+ }
603+
604+ /// Has the verification request been answered by another device.
605+ pub fn is_passive(&self) -> bool {
606+ self.inner.is_passive()
607+ }
608+
609+ /// Has the verification flow that been cancelled.
610+ pub fn is_cancelled(&self) -> bool {
611+ self.inner.is_cancelled()
612+ }
613+
614+ /// Get info about the cancellation if the verification request has been
615+ /// cancelled.
616+ pub fn cancel_info(&self) -> Option<CancelInfo> {
617+ self.inner.cancel_info().map(|v| v.into())
618+ }
619+
620+ /// Get the supported verification methods of the other side.
621+ ///
622+ /// Will be present only if the other side requested the verification or if
623+ /// we're in the ready state.
624+ pub fn their_supported_methods(&self) -> Opti

Diff truncated at the full-view safety limit.