@unwanted/matrix-sdk-mini 34.12.0-1 → 34.12.0-3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (636) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/@types/event.d.ts +0 -19
  3. package/lib/@types/event.d.ts.map +1 -1
  4. package/lib/@types/event.js.map +1 -1
  5. package/lib/@types/global.d.js +0 -2
  6. package/lib/@types/global.d.js.map +1 -1
  7. package/lib/browser-index.d.ts.map +1 -1
  8. package/lib/browser-index.js +0 -11
  9. package/lib/browser-index.js.map +1 -1
  10. package/lib/client.d.ts +2 -1224
  11. package/lib/client.d.ts.map +1 -1
  12. package/lib/client.js +345 -2826
  13. package/lib/client.js.map +1 -1
  14. package/lib/embedded.d.ts +0 -22
  15. package/lib/embedded.d.ts.map +1 -1
  16. package/lib/embedded.js +24 -167
  17. package/lib/embedded.js.map +1 -1
  18. package/lib/event-mapper.d.ts.map +1 -1
  19. package/lib/event-mapper.js +0 -4
  20. package/lib/event-mapper.js.map +1 -1
  21. package/lib/matrix.d.ts +0 -25
  22. package/lib/matrix.d.ts.map +1 -1
  23. package/lib/matrix.js +1 -30
  24. package/lib/matrix.js.map +1 -1
  25. package/lib/models/MSC3089Branch.d.ts.map +1 -1
  26. package/lib/models/MSC3089Branch.js +0 -3
  27. package/lib/models/MSC3089Branch.js.map +1 -1
  28. package/lib/models/event.d.ts +0 -94
  29. package/lib/models/event.d.ts.map +1 -1
  30. package/lib/models/event.js +0 -274
  31. package/lib/models/event.js.map +1 -1
  32. package/lib/models/poll.d.ts.map +1 -1
  33. package/lib/models/poll.js +1 -5
  34. package/lib/models/poll.js.map +1 -1
  35. package/lib/models/relations-container.d.ts.map +1 -1
  36. package/lib/models/relations-container.js +1 -7
  37. package/lib/models/relations-container.js.map +1 -1
  38. package/lib/models/relations.d.ts +0 -1
  39. package/lib/models/relations.d.ts.map +1 -1
  40. package/lib/models/relations.js +0 -8
  41. package/lib/models/relations.js.map +1 -1
  42. package/lib/models/room-state.d.ts.map +1 -1
  43. package/lib/models/room-state.js +10 -26
  44. package/lib/models/room-state.js.map +1 -1
  45. package/lib/models/room.d.ts +0 -18
  46. package/lib/models/room.d.ts.map +1 -1
  47. package/lib/models/room.js +94 -148
  48. package/lib/models/room.js.map +1 -1
  49. package/lib/models/thread.d.ts.map +1 -1
  50. package/lib/models/thread.js +0 -1
  51. package/lib/models/thread.js.map +1 -1
  52. package/lib/sliding-sync-sdk.d.ts +2 -3
  53. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  54. package/lib/sliding-sync-sdk.js +41 -90
  55. package/lib/sliding-sync-sdk.js.map +1 -1
  56. package/lib/sync.d.ts +0 -12
  57. package/lib/sync.d.ts.map +1 -1
  58. package/lib/sync.js +1 -73
  59. package/lib/sync.js.map +1 -1
  60. package/lib/testing.d.ts +0 -48
  61. package/lib/testing.d.ts.map +1 -1
  62. package/lib/testing.js +0 -105
  63. package/lib/testing.js.map +1 -1
  64. package/package.json +1 -3
  65. package/src/@types/event.ts +2 -36
  66. package/src/@types/global.d.ts +0 -3
  67. package/src/browser-index.ts +0 -11
  68. package/src/client.ts +52 -2876
  69. package/src/embedded.ts +3 -132
  70. package/src/event-mapper.ts +0 -4
  71. package/src/matrix.ts +0 -41
  72. package/src/models/MSC3089Branch.ts +0 -3
  73. package/src/models/event.ts +0 -289
  74. package/src/models/poll.ts +0 -6
  75. package/src/models/relations-container.ts +1 -8
  76. package/src/models/relations.ts +0 -8
  77. package/src/models/room-state.ts +2 -8
  78. package/src/models/room.ts +0 -62
  79. package/src/models/thread.ts +0 -1
  80. package/src/sliding-sync-sdk.ts +2 -72
  81. package/src/sync.ts +1 -98
  82. package/src/testing.ts +0 -108
  83. package/lib/@types/crypto.d.ts +0 -47
  84. package/lib/@types/crypto.d.ts.map +0 -1
  85. package/lib/@types/crypto.js +0 -1
  86. package/lib/@types/crypto.js.map +0 -1
  87. package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
  88. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
  89. package/lib/common-crypto/CryptoBackend.d.ts +0 -240
  90. package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
  91. package/lib/common-crypto/CryptoBackend.js +0 -73
  92. package/lib/common-crypto/CryptoBackend.js.map +0 -1
  93. package/lib/common-crypto/key-passphrase.d.ts +0 -14
  94. package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
  95. package/lib/common-crypto/key-passphrase.js +0 -33
  96. package/lib/common-crypto/key-passphrase.js.map +0 -1
  97. package/lib/crypto/CrossSigning.d.ts +0 -184
  98. package/lib/crypto/CrossSigning.d.ts.map +0 -1
  99. package/lib/crypto/CrossSigning.js +0 -718
  100. package/lib/crypto/CrossSigning.js.map +0 -1
  101. package/lib/crypto/DeviceList.d.ts +0 -216
  102. package/lib/crypto/DeviceList.d.ts.map +0 -1
  103. package/lib/crypto/DeviceList.js +0 -892
  104. package/lib/crypto/DeviceList.js.map +0 -1
  105. package/lib/crypto/EncryptionSetup.d.ts +0 -152
  106. package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
  107. package/lib/crypto/EncryptionSetup.js +0 -356
  108. package/lib/crypto/EncryptionSetup.js.map +0 -1
  109. package/lib/crypto/OlmDevice.d.ts +0 -457
  110. package/lib/crypto/OlmDevice.d.ts.map +0 -1
  111. package/lib/crypto/OlmDevice.js +0 -1241
  112. package/lib/crypto/OlmDevice.js.map +0 -1
  113. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
  114. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
  115. package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
  116. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
  117. package/lib/crypto/RoomList.d.ts +0 -26
  118. package/lib/crypto/RoomList.d.ts.map +0 -1
  119. package/lib/crypto/RoomList.js +0 -71
  120. package/lib/crypto/RoomList.js.map +0 -1
  121. package/lib/crypto/SecretSharing.d.ts +0 -24
  122. package/lib/crypto/SecretSharing.d.ts.map +0 -1
  123. package/lib/crypto/SecretSharing.js +0 -194
  124. package/lib/crypto/SecretSharing.js.map +0 -1
  125. package/lib/crypto/SecretStorage.d.ts +0 -55
  126. package/lib/crypto/SecretStorage.d.ts.map +0 -1
  127. package/lib/crypto/SecretStorage.js +0 -118
  128. package/lib/crypto/SecretStorage.js.map +0 -1
  129. package/lib/crypto/aes.d.ts +0 -6
  130. package/lib/crypto/aes.d.ts.map +0 -1
  131. package/lib/crypto/aes.js +0 -24
  132. package/lib/crypto/aes.js.map +0 -1
  133. package/lib/crypto/algorithms/base.d.ts +0 -156
  134. package/lib/crypto/algorithms/base.d.ts.map +0 -1
  135. package/lib/crypto/algorithms/base.js +0 -187
  136. package/lib/crypto/algorithms/base.js.map +0 -1
  137. package/lib/crypto/algorithms/index.d.ts +0 -4
  138. package/lib/crypto/algorithms/index.d.ts.map +0 -1
  139. package/lib/crypto/algorithms/index.js +0 -20
  140. package/lib/crypto/algorithms/index.js.map +0 -1
  141. package/lib/crypto/algorithms/megolm.d.ts +0 -385
  142. package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
  143. package/lib/crypto/algorithms/megolm.js +0 -1822
  144. package/lib/crypto/algorithms/megolm.js.map +0 -1
  145. package/lib/crypto/algorithms/olm.d.ts +0 -5
  146. package/lib/crypto/algorithms/olm.d.ts.map +0 -1
  147. package/lib/crypto/algorithms/olm.js +0 -299
  148. package/lib/crypto/algorithms/olm.js.map +0 -1
  149. package/lib/crypto/api.d.ts +0 -32
  150. package/lib/crypto/api.d.ts.map +0 -1
  151. package/lib/crypto/api.js +0 -22
  152. package/lib/crypto/api.js.map +0 -1
  153. package/lib/crypto/backup.d.ts +0 -227
  154. package/lib/crypto/backup.d.ts.map +0 -1
  155. package/lib/crypto/backup.js +0 -824
  156. package/lib/crypto/backup.js.map +0 -1
  157. package/lib/crypto/crypto.d.ts +0 -3
  158. package/lib/crypto/crypto.d.ts.map +0 -1
  159. package/lib/crypto/crypto.js +0 -19
  160. package/lib/crypto/crypto.js.map +0 -1
  161. package/lib/crypto/dehydration.d.ts +0 -34
  162. package/lib/crypto/dehydration.d.ts.map +0 -1
  163. package/lib/crypto/dehydration.js +0 -252
  164. package/lib/crypto/dehydration.js.map +0 -1
  165. package/lib/crypto/device-converter.d.ts +0 -9
  166. package/lib/crypto/device-converter.d.ts.map +0 -1
  167. package/lib/crypto/device-converter.js +0 -42
  168. package/lib/crypto/device-converter.js.map +0 -1
  169. package/lib/crypto/deviceinfo.d.ts +0 -99
  170. package/lib/crypto/deviceinfo.d.ts.map +0 -1
  171. package/lib/crypto/deviceinfo.js +0 -148
  172. package/lib/crypto/deviceinfo.js.map +0 -1
  173. package/lib/crypto/index.d.ts +0 -1209
  174. package/lib/crypto/index.d.ts.map +0 -1
  175. package/lib/crypto/index.js +0 -4097
  176. package/lib/crypto/index.js.map +0 -1
  177. package/lib/crypto/key_passphrase.d.ts +0 -14
  178. package/lib/crypto/key_passphrase.d.ts.map +0 -1
  179. package/lib/crypto/key_passphrase.js +0 -44
  180. package/lib/crypto/key_passphrase.js.map +0 -1
  181. package/lib/crypto/keybackup.d.ts +0 -18
  182. package/lib/crypto/keybackup.d.ts.map +0 -1
  183. package/lib/crypto/keybackup.js +0 -1
  184. package/lib/crypto/keybackup.js.map +0 -1
  185. package/lib/crypto/olmlib.d.ts +0 -129
  186. package/lib/crypto/olmlib.d.ts.map +0 -1
  187. package/lib/crypto/olmlib.js +0 -492
  188. package/lib/crypto/olmlib.js.map +0 -1
  189. package/lib/crypto/recoverykey.d.ts +0 -2
  190. package/lib/crypto/recoverykey.d.ts.map +0 -1
  191. package/lib/crypto/recoverykey.js +0 -19
  192. package/lib/crypto/recoverykey.js.map +0 -1
  193. package/lib/crypto/store/base.d.ts +0 -252
  194. package/lib/crypto/store/base.d.ts.map +0 -1
  195. package/lib/crypto/store/base.js +0 -64
  196. package/lib/crypto/store/base.js.map +0 -1
  197. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
  198. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
  199. package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
  200. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
  201. package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
  202. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
  203. package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
  204. package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
  205. package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
  206. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
  207. package/lib/crypto/store/localStorage-crypto-store.js +0 -531
  208. package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
  209. package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
  210. package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
  211. package/lib/crypto/store/memory-crypto-store.js +0 -622
  212. package/lib/crypto/store/memory-crypto-store.js.map +0 -1
  213. package/lib/crypto/verification/Base.d.ts +0 -105
  214. package/lib/crypto/verification/Base.d.ts.map +0 -1
  215. package/lib/crypto/verification/Base.js +0 -372
  216. package/lib/crypto/verification/Base.js.map +0 -1
  217. package/lib/crypto/verification/Error.d.ts +0 -35
  218. package/lib/crypto/verification/Error.d.ts.map +0 -1
  219. package/lib/crypto/verification/Error.js +0 -86
  220. package/lib/crypto/verification/Error.js.map +0 -1
  221. package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
  222. package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
  223. package/lib/crypto/verification/IllegalMethod.js +0 -43
  224. package/lib/crypto/verification/IllegalMethod.js.map +0 -1
  225. package/lib/crypto/verification/QRCode.d.ts +0 -51
  226. package/lib/crypto/verification/QRCode.d.ts.map +0 -1
  227. package/lib/crypto/verification/QRCode.js +0 -277
  228. package/lib/crypto/verification/QRCode.js.map +0 -1
  229. package/lib/crypto/verification/SAS.d.ts +0 -27
  230. package/lib/crypto/verification/SAS.d.ts.map +0 -1
  231. package/lib/crypto/verification/SAS.js +0 -485
  232. package/lib/crypto/verification/SAS.js.map +0 -1
  233. package/lib/crypto/verification/SASDecimal.d.ts +0 -8
  234. package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
  235. package/lib/crypto/verification/SASDecimal.js +0 -34
  236. package/lib/crypto/verification/SASDecimal.js.map +0 -1
  237. package/lib/crypto/verification/request/Channel.d.ts +0 -18
  238. package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
  239. package/lib/crypto/verification/request/Channel.js +0 -1
  240. package/lib/crypto/verification/request/Channel.js.map +0 -1
  241. package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
  242. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
  243. package/lib/crypto/verification/request/InRoomChannel.js +0 -351
  244. package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
  245. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
  246. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
  247. package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
  248. package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
  249. package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
  250. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
  251. package/lib/crypto/verification/request/VerificationRequest.js +0 -937
  252. package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
  253. package/lib/crypto-api/CryptoEvent.d.ts +0 -69
  254. package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
  255. package/lib/crypto-api/CryptoEvent.js +0 -33
  256. package/lib/crypto-api/CryptoEvent.js.map +0 -1
  257. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
  258. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
  259. package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
  260. package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
  261. package/lib/crypto-api/index.d.ts +0 -978
  262. package/lib/crypto-api/index.d.ts.map +0 -1
  263. package/lib/crypto-api/index.js +0 -304
  264. package/lib/crypto-api/index.js.map +0 -1
  265. package/lib/crypto-api/key-passphrase.d.ts +0 -11
  266. package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
  267. package/lib/crypto-api/key-passphrase.js +0 -51
  268. package/lib/crypto-api/key-passphrase.js.map +0 -1
  269. package/lib/crypto-api/keybackup.d.ts +0 -88
  270. package/lib/crypto-api/keybackup.d.ts.map +0 -1
  271. package/lib/crypto-api/keybackup.js +0 -1
  272. package/lib/crypto-api/keybackup.js.map +0 -1
  273. package/lib/crypto-api/recovery-key.d.ts +0 -11
  274. package/lib/crypto-api/recovery-key.d.ts.map +0 -1
  275. package/lib/crypto-api/recovery-key.js +0 -65
  276. package/lib/crypto-api/recovery-key.js.map +0 -1
  277. package/lib/crypto-api/verification.d.ts +0 -344
  278. package/lib/crypto-api/verification.d.ts.map +0 -1
  279. package/lib/crypto-api/verification.js +0 -91
  280. package/lib/crypto-api/verification.js.map +0 -1
  281. package/lib/matrixrtc/CallMembership.d.ts +0 -66
  282. package/lib/matrixrtc/CallMembership.d.ts.map +0 -1
  283. package/lib/matrixrtc/CallMembership.js +0 -197
  284. package/lib/matrixrtc/CallMembership.js.map +0 -1
  285. package/lib/matrixrtc/LivekitFocus.d.ts +0 -16
  286. package/lib/matrixrtc/LivekitFocus.d.ts.map +0 -1
  287. package/lib/matrixrtc/LivekitFocus.js +0 -20
  288. package/lib/matrixrtc/LivekitFocus.js.map +0 -1
  289. package/lib/matrixrtc/MatrixRTCSession.d.ts +0 -295
  290. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +0 -1
  291. package/lib/matrixrtc/MatrixRTCSession.js +0 -1043
  292. package/lib/matrixrtc/MatrixRTCSession.js.map +0 -1
  293. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +0 -40
  294. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +0 -1
  295. package/lib/matrixrtc/MatrixRTCSessionManager.js +0 -146
  296. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +0 -1
  297. package/lib/matrixrtc/focus.d.ts +0 -10
  298. package/lib/matrixrtc/focus.d.ts.map +0 -1
  299. package/lib/matrixrtc/focus.js +0 -1
  300. package/lib/matrixrtc/focus.js.map +0 -1
  301. package/lib/matrixrtc/index.d.ts +0 -7
  302. package/lib/matrixrtc/index.d.ts.map +0 -1
  303. package/lib/matrixrtc/index.js +0 -21
  304. package/lib/matrixrtc/index.js.map +0 -1
  305. package/lib/matrixrtc/types.d.ts +0 -19
  306. package/lib/matrixrtc/types.d.ts.map +0 -1
  307. package/lib/matrixrtc/types.js +0 -1
  308. package/lib/matrixrtc/types.js.map +0 -1
  309. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
  310. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
  311. package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
  312. package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
  313. package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
  314. package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
  315. package/lib/rendezvous/RendezvousChannel.js +0 -1
  316. package/lib/rendezvous/RendezvousChannel.js.map +0 -1
  317. package/lib/rendezvous/RendezvousCode.d.ts +0 -9
  318. package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
  319. package/lib/rendezvous/RendezvousCode.js +0 -1
  320. package/lib/rendezvous/RendezvousCode.js.map +0 -1
  321. package/lib/rendezvous/RendezvousError.d.ts +0 -6
  322. package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
  323. package/lib/rendezvous/RendezvousError.js +0 -23
  324. package/lib/rendezvous/RendezvousError.js.map +0 -1
  325. package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
  326. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
  327. package/lib/rendezvous/RendezvousFailureReason.js +0 -38
  328. package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
  329. package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
  330. package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
  331. package/lib/rendezvous/RendezvousIntent.js +0 -22
  332. package/lib/rendezvous/RendezvousIntent.js.map +0 -1
  333. package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
  334. package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
  335. package/lib/rendezvous/RendezvousTransport.js +0 -1
  336. package/lib/rendezvous/RendezvousTransport.js.map +0 -1
  337. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
  338. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
  339. package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
  340. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
  341. package/lib/rendezvous/channels/index.d.ts +0 -2
  342. package/lib/rendezvous/channels/index.d.ts.map +0 -1
  343. package/lib/rendezvous/channels/index.js +0 -18
  344. package/lib/rendezvous/channels/index.js.map +0 -1
  345. package/lib/rendezvous/index.d.ts +0 -10
  346. package/lib/rendezvous/index.d.ts.map +0 -1
  347. package/lib/rendezvous/index.js +0 -23
  348. package/lib/rendezvous/index.js.map +0 -1
  349. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
  350. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
  351. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
  352. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
  353. package/lib/rendezvous/transports/index.d.ts +0 -2
  354. package/lib/rendezvous/transports/index.d.ts.map +0 -1
  355. package/lib/rendezvous/transports/index.js +0 -18
  356. package/lib/rendezvous/transports/index.js.map +0 -1
  357. package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
  358. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
  359. package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
  360. package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
  361. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
  362. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
  363. package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
  364. package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
  365. package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
  366. package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
  367. package/lib/rust-crypto/KeyClaimManager.js +0 -82
  368. package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
  369. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
  370. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
  371. package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
  372. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
  373. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
  374. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
  375. package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
  376. package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
  377. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
  378. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
  379. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
  380. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
  381. package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
  382. package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
  383. package/lib/rust-crypto/RoomEncryptor.js +0 -299
  384. package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
  385. package/lib/rust-crypto/backup.d.ts +0 -254
  386. package/lib/rust-crypto/backup.d.ts.map +0 -1
  387. package/lib/rust-crypto/backup.js +0 -837
  388. package/lib/rust-crypto/backup.js.map +0 -1
  389. package/lib/rust-crypto/constants.d.ts +0 -3
  390. package/lib/rust-crypto/constants.d.ts.map +0 -1
  391. package/lib/rust-crypto/constants.js +0 -19
  392. package/lib/rust-crypto/constants.js.map +0 -1
  393. package/lib/rust-crypto/device-converter.d.ts +0 -28
  394. package/lib/rust-crypto/device-converter.d.ts.map +0 -1
  395. package/lib/rust-crypto/device-converter.js +0 -123
  396. package/lib/rust-crypto/device-converter.js.map +0 -1
  397. package/lib/rust-crypto/index.d.ts +0 -61
  398. package/lib/rust-crypto/index.d.ts.map +0 -1
  399. package/lib/rust-crypto/index.js +0 -152
  400. package/lib/rust-crypto/index.js.map +0 -1
  401. package/lib/rust-crypto/libolm_migration.d.ts +0 -81
  402. package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
  403. package/lib/rust-crypto/libolm_migration.js +0 -459
  404. package/lib/rust-crypto/libolm_migration.js.map +0 -1
  405. package/lib/rust-crypto/rust-crypto.d.ts +0 -556
  406. package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
  407. package/lib/rust-crypto/rust-crypto.js +0 -2016
  408. package/lib/rust-crypto/rust-crypto.js.map +0 -1
  409. package/lib/rust-crypto/secret-storage.d.ts +0 -22
  410. package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
  411. package/lib/rust-crypto/secret-storage.js +0 -63
  412. package/lib/rust-crypto/secret-storage.js.map +0 -1
  413. package/lib/rust-crypto/verification.d.ts +0 -319
  414. package/lib/rust-crypto/verification.d.ts.map +0 -1
  415. package/lib/rust-crypto/verification.js +0 -816
  416. package/lib/rust-crypto/verification.js.map +0 -1
  417. package/lib/secret-storage.d.ts +0 -370
  418. package/lib/secret-storage.d.ts.map +0 -1
  419. package/lib/secret-storage.js +0 -466
  420. package/lib/secret-storage.js.map +0 -1
  421. package/lib/webrtc/audioContext.d.ts +0 -15
  422. package/lib/webrtc/audioContext.d.ts.map +0 -1
  423. package/lib/webrtc/audioContext.js +0 -46
  424. package/lib/webrtc/audioContext.js.map +0 -1
  425. package/lib/webrtc/call.d.ts +0 -560
  426. package/lib/webrtc/call.d.ts.map +0 -1
  427. package/lib/webrtc/call.js +0 -2541
  428. package/lib/webrtc/call.js.map +0 -1
  429. package/lib/webrtc/callEventHandler.d.ts +0 -37
  430. package/lib/webrtc/callEventHandler.d.ts.map +0 -1
  431. package/lib/webrtc/callEventHandler.js +0 -344
  432. package/lib/webrtc/callEventHandler.js.map +0 -1
  433. package/lib/webrtc/callEventTypes.d.ts +0 -73
  434. package/lib/webrtc/callEventTypes.d.ts.map +0 -1
  435. package/lib/webrtc/callEventTypes.js +0 -13
  436. package/lib/webrtc/callEventTypes.js.map +0 -1
  437. package/lib/webrtc/callFeed.d.ts +0 -128
  438. package/lib/webrtc/callFeed.d.ts.map +0 -1
  439. package/lib/webrtc/callFeed.js +0 -289
  440. package/lib/webrtc/callFeed.js.map +0 -1
  441. package/lib/webrtc/groupCall.d.ts +0 -323
  442. package/lib/webrtc/groupCall.d.ts.map +0 -1
  443. package/lib/webrtc/groupCall.js +0 -1337
  444. package/lib/webrtc/groupCall.js.map +0 -1
  445. package/lib/webrtc/groupCallEventHandler.d.ts +0 -31
  446. package/lib/webrtc/groupCallEventHandler.d.ts.map +0 -1
  447. package/lib/webrtc/groupCallEventHandler.js +0 -178
  448. package/lib/webrtc/groupCallEventHandler.js.map +0 -1
  449. package/lib/webrtc/mediaHandler.d.ts +0 -89
  450. package/lib/webrtc/mediaHandler.d.ts.map +0 -1
  451. package/lib/webrtc/mediaHandler.js +0 -437
  452. package/lib/webrtc/mediaHandler.js.map +0 -1
  453. package/lib/webrtc/stats/callFeedStatsReporter.d.ts +0 -8
  454. package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +0 -1
  455. package/lib/webrtc/stats/callFeedStatsReporter.js +0 -82
  456. package/lib/webrtc/stats/callFeedStatsReporter.js.map +0 -1
  457. package/lib/webrtc/stats/callStatsReportGatherer.d.ts +0 -25
  458. package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +0 -1
  459. package/lib/webrtc/stats/callStatsReportGatherer.js +0 -199
  460. package/lib/webrtc/stats/callStatsReportGatherer.js.map +0 -1
  461. package/lib/webrtc/stats/callStatsReportSummary.d.ts +0 -17
  462. package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +0 -1
  463. package/lib/webrtc/stats/callStatsReportSummary.js +0 -1
  464. package/lib/webrtc/stats/callStatsReportSummary.js.map +0 -1
  465. package/lib/webrtc/stats/connectionStats.d.ts +0 -28
  466. package/lib/webrtc/stats/connectionStats.d.ts.map +0 -1
  467. package/lib/webrtc/stats/connectionStats.js +0 -26
  468. package/lib/webrtc/stats/connectionStats.js.map +0 -1
  469. package/lib/webrtc/stats/connectionStatsBuilder.d.ts +0 -5
  470. package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +0 -1
  471. package/lib/webrtc/stats/connectionStatsBuilder.js +0 -27
  472. package/lib/webrtc/stats/connectionStatsBuilder.js.map +0 -1
  473. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +0 -7
  474. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +0 -1
  475. package/lib/webrtc/stats/connectionStatsReportBuilder.js +0 -121
  476. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +0 -1
  477. package/lib/webrtc/stats/groupCallStats.d.ts +0 -22
  478. package/lib/webrtc/stats/groupCallStats.d.ts.map +0 -1
  479. package/lib/webrtc/stats/groupCallStats.js +0 -78
  480. package/lib/webrtc/stats/groupCallStats.js.map +0 -1
  481. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +0 -10
  482. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +0 -1
  483. package/lib/webrtc/stats/media/mediaSsrcHandler.js +0 -57
  484. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +0 -1
  485. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +0 -12
  486. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +0 -1
  487. package/lib/webrtc/stats/media/mediaTrackHandler.js +0 -62
  488. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +0 -1
  489. package/lib/webrtc/stats/media/mediaTrackStats.d.ts +0 -86
  490. package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +0 -1
  491. package/lib/webrtc/stats/media/mediaTrackStats.js +0 -142
  492. package/lib/webrtc/stats/media/mediaTrackStats.js.map +0 -1
  493. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +0 -22
  494. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +0 -1
  495. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +0 -76
  496. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +0 -1
  497. package/lib/webrtc/stats/statsReport.d.ts +0 -99
  498. package/lib/webrtc/stats/statsReport.d.ts.map +0 -1
  499. package/lib/webrtc/stats/statsReport.js +0 -32
  500. package/lib/webrtc/stats/statsReport.js.map +0 -1
  501. package/lib/webrtc/stats/statsReportEmitter.d.ts +0 -15
  502. package/lib/webrtc/stats/statsReportEmitter.d.ts.map +0 -1
  503. package/lib/webrtc/stats/statsReportEmitter.js +0 -33
  504. package/lib/webrtc/stats/statsReportEmitter.js.map +0 -1
  505. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +0 -16
  506. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +0 -1
  507. package/lib/webrtc/stats/summaryStatsReportGatherer.js +0 -116
  508. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +0 -1
  509. package/lib/webrtc/stats/trackStatsBuilder.d.ts +0 -19
  510. package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +0 -1
  511. package/lib/webrtc/stats/trackStatsBuilder.js +0 -168
  512. package/lib/webrtc/stats/trackStatsBuilder.js.map +0 -1
  513. package/lib/webrtc/stats/transportStats.d.ts +0 -11
  514. package/lib/webrtc/stats/transportStats.d.ts.map +0 -1
  515. package/lib/webrtc/stats/transportStats.js +0 -1
  516. package/lib/webrtc/stats/transportStats.js.map +0 -1
  517. package/lib/webrtc/stats/transportStatsBuilder.d.ts +0 -5
  518. package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +0 -1
  519. package/lib/webrtc/stats/transportStatsBuilder.js +0 -34
  520. package/lib/webrtc/stats/transportStatsBuilder.js.map +0 -1
  521. package/lib/webrtc/stats/valueFormatter.d.ts +0 -4
  522. package/lib/webrtc/stats/valueFormatter.d.ts.map +0 -1
  523. package/lib/webrtc/stats/valueFormatter.js +0 -25
  524. package/lib/webrtc/stats/valueFormatter.js.map +0 -1
  525. package/src/@types/crypto.ts +0 -73
  526. package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
  527. package/src/common-crypto/CryptoBackend.ts +0 -302
  528. package/src/common-crypto/README.md +0 -4
  529. package/src/common-crypto/key-passphrase.ts +0 -43
  530. package/src/crypto/CrossSigning.ts +0 -773
  531. package/src/crypto/DeviceList.ts +0 -989
  532. package/src/crypto/EncryptionSetup.ts +0 -351
  533. package/src/crypto/OlmDevice.ts +0 -1500
  534. package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
  535. package/src/crypto/RoomList.ts +0 -70
  536. package/src/crypto/SecretSharing.ts +0 -240
  537. package/src/crypto/SecretStorage.ts +0 -136
  538. package/src/crypto/aes.ts +0 -23
  539. package/src/crypto/algorithms/base.ts +0 -236
  540. package/src/crypto/algorithms/index.ts +0 -20
  541. package/src/crypto/algorithms/megolm.ts +0 -2216
  542. package/src/crypto/algorithms/olm.ts +0 -381
  543. package/src/crypto/api.ts +0 -70
  544. package/src/crypto/backup.ts +0 -922
  545. package/src/crypto/crypto.ts +0 -18
  546. package/src/crypto/dehydration.ts +0 -272
  547. package/src/crypto/device-converter.ts +0 -45
  548. package/src/crypto/deviceinfo.ts +0 -158
  549. package/src/crypto/index.ts +0 -4414
  550. package/src/crypto/key_passphrase.ts +0 -42
  551. package/src/crypto/keybackup.ts +0 -47
  552. package/src/crypto/olmlib.ts +0 -539
  553. package/src/crypto/recoverykey.ts +0 -18
  554. package/src/crypto/store/base.ts +0 -348
  555. package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
  556. package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
  557. package/src/crypto/store/localStorage-crypto-store.ts +0 -579
  558. package/src/crypto/store/memory-crypto-store.ts +0 -680
  559. package/src/crypto/verification/Base.ts +0 -409
  560. package/src/crypto/verification/Error.ts +0 -76
  561. package/src/crypto/verification/IllegalMethod.ts +0 -50
  562. package/src/crypto/verification/QRCode.ts +0 -310
  563. package/src/crypto/verification/SAS.ts +0 -494
  564. package/src/crypto/verification/SASDecimal.ts +0 -37
  565. package/src/crypto/verification/request/Channel.ts +0 -34
  566. package/src/crypto/verification/request/InRoomChannel.ts +0 -371
  567. package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
  568. package/src/crypto/verification/request/VerificationRequest.ts +0 -976
  569. package/src/crypto-api/CryptoEvent.ts +0 -93
  570. package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
  571. package/src/crypto-api/index.ts +0 -1175
  572. package/src/crypto-api/key-passphrase.ts +0 -58
  573. package/src/crypto-api/keybackup.ts +0 -115
  574. package/src/crypto-api/recovery-key.ts +0 -69
  575. package/src/crypto-api/verification.ts +0 -408
  576. package/src/matrixrtc/CallMembership.ts +0 -247
  577. package/src/matrixrtc/LivekitFocus.ts +0 -39
  578. package/src/matrixrtc/MatrixRTCSession.ts +0 -1319
  579. package/src/matrixrtc/MatrixRTCSessionManager.ts +0 -166
  580. package/src/matrixrtc/focus.ts +0 -25
  581. package/src/matrixrtc/index.ts +0 -22
  582. package/src/matrixrtc/types.ts +0 -36
  583. package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
  584. package/src/rendezvous/RendezvousChannel.ts +0 -48
  585. package/src/rendezvous/RendezvousCode.ts +0 -25
  586. package/src/rendezvous/RendezvousError.ts +0 -26
  587. package/src/rendezvous/RendezvousFailureReason.ts +0 -49
  588. package/src/rendezvous/RendezvousIntent.ts +0 -20
  589. package/src/rendezvous/RendezvousTransport.ts +0 -58
  590. package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
  591. package/src/rendezvous/channels/index.ts +0 -17
  592. package/src/rendezvous/index.ts +0 -25
  593. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
  594. package/src/rendezvous/transports/index.ts +0 -17
  595. package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
  596. package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
  597. package/src/rust-crypto/KeyClaimManager.ts +0 -86
  598. package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
  599. package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
  600. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
  601. package/src/rust-crypto/RoomEncryptor.ts +0 -352
  602. package/src/rust-crypto/backup.ts +0 -881
  603. package/src/rust-crypto/constants.ts +0 -18
  604. package/src/rust-crypto/device-converter.ts +0 -128
  605. package/src/rust-crypto/index.ts +0 -237
  606. package/src/rust-crypto/libolm_migration.ts +0 -530
  607. package/src/rust-crypto/rust-crypto.ts +0 -2205
  608. package/src/rust-crypto/secret-storage.ts +0 -60
  609. package/src/rust-crypto/verification.ts +0 -830
  610. package/src/secret-storage.ts +0 -693
  611. package/src/webrtc/audioContext.ts +0 -44
  612. package/src/webrtc/call.ts +0 -3074
  613. package/src/webrtc/callEventHandler.ts +0 -425
  614. package/src/webrtc/callEventTypes.ts +0 -93
  615. package/src/webrtc/callFeed.ts +0 -364
  616. package/src/webrtc/groupCall.ts +0 -1735
  617. package/src/webrtc/groupCallEventHandler.ts +0 -234
  618. package/src/webrtc/mediaHandler.ts +0 -484
  619. package/src/webrtc/stats/callFeedStatsReporter.ts +0 -94
  620. package/src/webrtc/stats/callStatsReportGatherer.ts +0 -219
  621. package/src/webrtc/stats/callStatsReportSummary.ts +0 -30
  622. package/src/webrtc/stats/connectionStats.ts +0 -47
  623. package/src/webrtc/stats/connectionStatsBuilder.ts +0 -28
  624. package/src/webrtc/stats/connectionStatsReportBuilder.ts +0 -140
  625. package/src/webrtc/stats/groupCallStats.ts +0 -93
  626. package/src/webrtc/stats/media/mediaSsrcHandler.ts +0 -57
  627. package/src/webrtc/stats/media/mediaTrackHandler.ts +0 -76
  628. package/src/webrtc/stats/media/mediaTrackStats.ts +0 -176
  629. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +0 -90
  630. package/src/webrtc/stats/statsReport.ts +0 -133
  631. package/src/webrtc/stats/statsReportEmitter.ts +0 -49
  632. package/src/webrtc/stats/summaryStatsReportGatherer.ts +0 -148
  633. package/src/webrtc/stats/trackStatsBuilder.ts +0 -207
  634. package/src/webrtc/stats/transportStats.ts +0 -26
  635. package/src/webrtc/stats/transportStatsBuilder.ts +0 -48
  636. package/src/webrtc/stats/valueFormatter.ts +0 -27
@@ -1,531 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- /*
3
- Copyright 2017 - 2021 The Matrix.org Foundation C.I.C.
4
-
5
- Licensed under the Apache License, Version 2.0 (the "License");
6
- you may not use this file except in compliance with the License.
7
- You may obtain a copy of the License at
8
-
9
- http://www.apache.org/licenses/LICENSE-2.0
10
-
11
- Unless required by applicable law or agreed to in writing, software
12
- distributed under the License is distributed on an "AS IS" BASIS,
13
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- See the License for the specific language governing permissions and
15
- limitations under the License.
16
- */
17
-
18
- import { logger } from "../../logger.js";
19
- import { MemoryCryptoStore } from "./memory-crypto-store.js";
20
- import { MigrationState, SESSION_BATCH_SIZE } from "./base.js";
21
- import { safeSet } from "../../utils.js";
22
- /**
23
- * Internal module. Partial localStorage backed storage for e2e.
24
- * This is not a full crypto store, just the in-memory store with
25
- * some things backed by localStorage. It exists because indexedDB
26
- * is broken in Firefox private mode or set to, "will not remember
27
- * history".
28
- */
29
-
30
- var E2E_PREFIX = "crypto.";
31
- var KEY_END_TO_END_MIGRATION_STATE = E2E_PREFIX + "migration";
32
- var KEY_END_TO_END_ACCOUNT = E2E_PREFIX + "account";
33
- var KEY_CROSS_SIGNING_KEYS = E2E_PREFIX + "cross_signing_keys";
34
- var KEY_NOTIFIED_ERROR_DEVICES = E2E_PREFIX + "notified_error_devices";
35
- var KEY_DEVICE_DATA = E2E_PREFIX + "device_data";
36
- var KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + "inboundgroupsessions/";
37
- var KEY_INBOUND_SESSION_WITHHELD_PREFIX = E2E_PREFIX + "inboundgroupsessions.withheld/";
38
- var KEY_ROOMS_PREFIX = E2E_PREFIX + "rooms/";
39
- var KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + "sessionsneedingbackup";
40
- function keyEndToEndSessions(deviceKey) {
41
- return E2E_PREFIX + "sessions/" + deviceKey;
42
- }
43
- function keyEndToEndSessionProblems(deviceKey) {
44
- return E2E_PREFIX + "session.problems/" + deviceKey;
45
- }
46
- function keyEndToEndInboundGroupSession(senderKey, sessionId) {
47
- return KEY_INBOUND_SESSION_PREFIX + senderKey + "/" + sessionId;
48
- }
49
- function keyEndToEndInboundGroupSessionWithheld(senderKey, sessionId) {
50
- return KEY_INBOUND_SESSION_WITHHELD_PREFIX + senderKey + "/" + sessionId;
51
- }
52
- function keyEndToEndRoomsPrefix(roomId) {
53
- return KEY_ROOMS_PREFIX + roomId;
54
- }
55
- export class LocalStorageCryptoStore extends MemoryCryptoStore {
56
- static exists(store) {
57
- var length = store.length;
58
- for (var i = 0; i < length; i++) {
59
- var _store$key;
60
- if ((_store$key = store.key(i)) !== null && _store$key !== void 0 && _store$key.startsWith(E2E_PREFIX)) {
61
- return true;
62
- }
63
- }
64
- return false;
65
- }
66
- constructor(store) {
67
- super();
68
- this.store = store;
69
- }
70
-
71
- /**
72
- * Returns true if this CryptoStore has ever been initialised (ie, it might contain data).
73
- *
74
- * Implementation of {@link CryptoStore.containsData}.
75
- *
76
- * @internal
77
- */
78
- containsData() {
79
- var _this = this;
80
- return _asyncToGenerator(function* () {
81
- return LocalStorageCryptoStore.exists(_this.store);
82
- })();
83
- }
84
-
85
- /**
86
- * Get data on how much of the libolm to Rust Crypto migration has been done.
87
- *
88
- * Implementation of {@link CryptoStore.getMigrationState}.
89
- *
90
- * @internal
91
- */
92
- getMigrationState() {
93
- var _this2 = this;
94
- return _asyncToGenerator(function* () {
95
- var _getJsonItem;
96
- return (_getJsonItem = getJsonItem(_this2.store, KEY_END_TO_END_MIGRATION_STATE)) !== null && _getJsonItem !== void 0 ? _getJsonItem : MigrationState.NOT_STARTED;
97
- })();
98
- }
99
-
100
- /**
101
- * Set data on how much of the libolm to Rust Crypto migration has been done.
102
- *
103
- * Implementation of {@link CryptoStore.setMigrationState}.
104
- *
105
- * @internal
106
- */
107
- setMigrationState(migrationState) {
108
- var _this3 = this;
109
- return _asyncToGenerator(function* () {
110
- setJsonItem(_this3.store, KEY_END_TO_END_MIGRATION_STATE, migrationState);
111
- })();
112
- }
113
-
114
- // Olm Sessions
115
-
116
- countEndToEndSessions(txn, func) {
117
- var count = 0;
118
- for (var i = 0; i < this.store.length; ++i) {
119
- var key = this.store.key(i);
120
- if (key !== null && key !== void 0 && key.startsWith(keyEndToEndSessions(""))) {
121
- var sessions = getJsonItem(this.store, key);
122
- count += Object.keys(sessions !== null && sessions !== void 0 ? sessions : {}).length;
123
- }
124
- }
125
- func(count);
126
- }
127
-
128
- // eslint-disable-next-line @typescript-eslint/naming-convention
129
- _getEndToEndSessions(deviceKey) {
130
- var sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey));
131
- var fixedSessions = {};
132
-
133
- // fix up any old sessions to be objects rather than just the base64 pickle
134
- for (var [sid, val] of Object.entries(sessions || {})) {
135
- if (typeof val === "string") {
136
- fixedSessions[sid] = {
137
- session: val
138
- };
139
- } else {
140
- fixedSessions[sid] = val;
141
- }
142
- }
143
- return fixedSessions;
144
- }
145
- getEndToEndSession(deviceKey, sessionId, txn, func) {
146
- var sessions = this._getEndToEndSessions(deviceKey);
147
- func(sessions[sessionId] || {});
148
- }
149
- getEndToEndSessions(deviceKey, txn, func) {
150
- func(this._getEndToEndSessions(deviceKey) || {});
151
- }
152
- getAllEndToEndSessions(txn, func) {
153
- for (var i = 0; i < this.store.length; ++i) {
154
- var _this$store$key;
155
- if ((_this$store$key = this.store.key(i)) !== null && _this$store$key !== void 0 && _this$store$key.startsWith(keyEndToEndSessions(""))) {
156
- var deviceKey = this.store.key(i).split("/")[1];
157
- for (var sess of Object.values(this._getEndToEndSessions(deviceKey))) {
158
- func(sess);
159
- }
160
- }
161
- }
162
- }
163
- storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {
164
- var sessions = this._getEndToEndSessions(deviceKey) || {};
165
- sessions[sessionId] = sessionInfo;
166
- setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);
167
- }
168
- storeEndToEndSessionProblem(deviceKey, type, fixed) {
169
- var _this4 = this;
170
- return _asyncToGenerator(function* () {
171
- var key = keyEndToEndSessionProblems(deviceKey);
172
- var problems = getJsonItem(_this4.store, key) || [];
173
- problems.push({
174
- type,
175
- fixed,
176
- time: Date.now()
177
- });
178
- problems.sort((a, b) => {
179
- return a.time - b.time;
180
- });
181
- setJsonItem(_this4.store, key, problems);
182
- })();
183
- }
184
- getEndToEndSessionProblem(deviceKey, timestamp) {
185
- var _this5 = this;
186
- return _asyncToGenerator(function* () {
187
- var key = keyEndToEndSessionProblems(deviceKey);
188
- var problems = getJsonItem(_this5.store, key) || [];
189
- if (!problems.length) {
190
- return null;
191
- }
192
- var lastProblem = problems[problems.length - 1];
193
- for (var problem of problems) {
194
- if (problem.time > timestamp) {
195
- return Object.assign({}, problem, {
196
- fixed: lastProblem.fixed
197
- });
198
- }
199
- }
200
- if (lastProblem.fixed) {
201
- return null;
202
- } else {
203
- return lastProblem;
204
- }
205
- })();
206
- }
207
- filterOutNotifiedErrorDevices(devices) {
208
- var _this6 = this;
209
- return _asyncToGenerator(function* () {
210
- var notifiedErrorDevices = getJsonItem(_this6.store, KEY_NOTIFIED_ERROR_DEVICES) || {};
211
- var ret = [];
212
- for (var device of devices) {
213
- var {
214
- userId,
215
- deviceInfo
216
- } = device;
217
- if (userId in notifiedErrorDevices) {
218
- if (!(deviceInfo.deviceId in notifiedErrorDevices[userId])) {
219
- ret.push(device);
220
- safeSet(notifiedErrorDevices[userId], deviceInfo.deviceId, true);
221
- }
222
- } else {
223
- ret.push(device);
224
- safeSet(notifiedErrorDevices, userId, {
225
- [deviceInfo.deviceId]: true
226
- });
227
- }
228
- }
229
- setJsonItem(_this6.store, KEY_NOTIFIED_ERROR_DEVICES, notifiedErrorDevices);
230
- return ret;
231
- })();
232
- }
233
-
234
- /**
235
- * Fetch a batch of Olm sessions from the database.
236
- *
237
- * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}.
238
- *
239
- * @internal
240
- */
241
- getEndToEndSessionsBatch() {
242
- var _this7 = this;
243
- return _asyncToGenerator(function* () {
244
- var result = [];
245
- for (var i = 0; i < _this7.store.length; ++i) {
246
- var _this7$store$key;
247
- if ((_this7$store$key = _this7.store.key(i)) !== null && _this7$store$key !== void 0 && _this7$store$key.startsWith(keyEndToEndSessions(""))) {
248
- var deviceKey = _this7.store.key(i).split("/")[1];
249
- for (var session of Object.values(_this7._getEndToEndSessions(deviceKey))) {
250
- result.push(session);
251
- if (result.length >= SESSION_BATCH_SIZE) {
252
- return result;
253
- }
254
- }
255
- }
256
- }
257
- if (result.length === 0) {
258
- // No sessions left.
259
- return null;
260
- }
261
-
262
- // There are fewer sessions than the batch size; return the final batch of sessions.
263
- return result;
264
- })();
265
- }
266
-
267
- /**
268
- * Delete a batch of Olm sessions from the database.
269
- *
270
- * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}.
271
- *
272
- * @internal
273
- */
274
- deleteEndToEndSessionsBatch(sessions) {
275
- var _this8 = this;
276
- return _asyncToGenerator(function* () {
277
- for (var {
278
- deviceKey,
279
- sessionId
280
- } of sessions) {
281
- var deviceSessions = _this8._getEndToEndSessions(deviceKey) || {};
282
- delete deviceSessions[sessionId];
283
- if (Object.keys(deviceSessions).length === 0) {
284
- // No more sessions for this device.
285
- _this8.store.removeItem(keyEndToEndSessions(deviceKey));
286
- } else {
287
- setJsonItem(_this8.store, keyEndToEndSessions(deviceKey), deviceSessions);
288
- }
289
- }
290
- })();
291
- }
292
-
293
- // Inbound Group Sessions
294
-
295
- getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {
296
- func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)), getJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId)));
297
- }
298
- getAllEndToEndInboundGroupSessions(txn, func) {
299
- for (var i = 0; i < this.store.length; ++i) {
300
- var key = this.store.key(i);
301
- if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {
302
- // we can't use split, as the components we are trying to split out
303
- // might themselves contain '/' characters. We rely on the
304
- // senderKey being a (32-byte) curve25519 key, base64-encoded
305
- // (hence 43 characters long).
306
-
307
- func({
308
- senderKey: key.slice(KEY_INBOUND_SESSION_PREFIX.length, KEY_INBOUND_SESSION_PREFIX.length + 43),
309
- sessionId: key.slice(KEY_INBOUND_SESSION_PREFIX.length + 44),
310
- sessionData: getJsonItem(this.store, key)
311
- });
312
- }
313
- }
314
- func(null);
315
- }
316
- addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {
317
- var existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));
318
- if (!existing) {
319
- this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);
320
- }
321
- }
322
- storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {
323
- setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);
324
- }
325
- storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) {
326
- setJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId), sessionData);
327
- }
328
-
329
- /**
330
- * Count the number of Megolm sessions in the database.
331
- *
332
- * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}.
333
- *
334
- * @internal
335
- */
336
- countEndToEndInboundGroupSessions() {
337
- var _this9 = this;
338
- return _asyncToGenerator(function* () {
339
- var count = 0;
340
- for (var i = 0; i < _this9.store.length; ++i) {
341
- var key = _this9.store.key(i);
342
- if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {
343
- count += 1;
344
- }
345
- }
346
- return count;
347
- })();
348
- }
349
-
350
- /**
351
- * Fetch a batch of Megolm sessions from the database.
352
- *
353
- * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}.
354
- *
355
- * @internal
356
- */
357
- getEndToEndInboundGroupSessionsBatch() {
358
- var _this10 = this;
359
- return _asyncToGenerator(function* () {
360
- var sessionsNeedingBackup = getJsonItem(_this10.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
361
- var result = [];
362
- for (var i = 0; i < _this10.store.length; ++i) {
363
- var key = _this10.store.key(i);
364
- if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {
365
- var key2 = key.slice(KEY_INBOUND_SESSION_PREFIX.length);
366
-
367
- // we can't use split, as the components we are trying to split out
368
- // might themselves contain '/' characters. We rely on the
369
- // senderKey being a (32-byte) curve25519 key, base64-encoded
370
- // (hence 43 characters long).
371
-
372
- result.push({
373
- senderKey: key2.slice(0, 43),
374
- sessionId: key2.slice(44),
375
- sessionData: getJsonItem(_this10.store, key),
376
- needsBackup: key2 in sessionsNeedingBackup
377
- });
378
- if (result.length >= SESSION_BATCH_SIZE) {
379
- return result;
380
- }
381
- }
382
- }
383
- if (result.length === 0) {
384
- // No sessions left.
385
- return null;
386
- }
387
-
388
- // There are fewer sessions than the batch size; return the final batch of sessions.
389
- return result;
390
- })();
391
- }
392
-
393
- /**
394
- * Delete a batch of Megolm sessions from the database.
395
- *
396
- * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}.
397
- *
398
- * @internal
399
- */
400
- deleteEndToEndInboundGroupSessionsBatch(sessions) {
401
- var _this11 = this;
402
- return _asyncToGenerator(function* () {
403
- for (var {
404
- senderKey,
405
- sessionId
406
- } of sessions) {
407
- var k = keyEndToEndInboundGroupSession(senderKey, sessionId);
408
- _this11.store.removeItem(k);
409
- }
410
- })();
411
- }
412
- getEndToEndDeviceData(txn, func) {
413
- func(getJsonItem(this.store, KEY_DEVICE_DATA));
414
- }
415
- storeEndToEndDeviceData(deviceData, txn) {
416
- setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);
417
- }
418
- storeEndToEndRoom(roomId, roomInfo, txn) {
419
- setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);
420
- }
421
- getEndToEndRooms(txn, func) {
422
- var result = {};
423
- var prefix = keyEndToEndRoomsPrefix("");
424
- for (var i = 0; i < this.store.length; ++i) {
425
- var key = this.store.key(i);
426
- if (key !== null && key !== void 0 && key.startsWith(prefix)) {
427
- var roomId = key.slice(prefix.length);
428
- result[roomId] = getJsonItem(this.store, key);
429
- }
430
- }
431
- func(result);
432
- }
433
- getSessionsNeedingBackup(limit) {
434
- var _this12 = this;
435
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
436
- var sessions = [];
437
- var _loop = function _loop() {
438
- if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) {
439
- // see getAllEndToEndInboundGroupSessions for the magic number explanations
440
- var senderKey = session.slice(0, 43);
441
- var sessionId = session.slice(44);
442
- _this12.getEndToEndInboundGroupSession(senderKey, sessionId, null, sessionData => {
443
- sessions.push({
444
- senderKey: senderKey,
445
- sessionId: sessionId,
446
- sessionData: sessionData
447
- });
448
- });
449
- if (limit && sessions.length >= limit) {
450
- return 1; // break
451
- }
452
- }
453
- };
454
- for (var session in sessionsNeedingBackup) {
455
- if (_loop()) break;
456
- }
457
- return Promise.resolve(sessions);
458
- }
459
- countSessionsNeedingBackup() {
460
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
461
- return Promise.resolve(Object.keys(sessionsNeedingBackup).length);
462
- }
463
- unmarkSessionsNeedingBackup(sessions) {
464
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
465
- for (var session of sessions) {
466
- delete sessionsNeedingBackup[session.senderKey + "/" + session.sessionId];
467
- }
468
- setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);
469
- return Promise.resolve();
470
- }
471
- markSessionsNeedingBackup(sessions) {
472
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
473
- for (var session of sessions) {
474
- sessionsNeedingBackup[session.senderKey + "/" + session.sessionId] = true;
475
- }
476
- setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);
477
- return Promise.resolve();
478
- }
479
-
480
- /**
481
- * Delete all data from this store.
482
- *
483
- * @returns Promise which resolves when the store has been cleared.
484
- */
485
- deleteAllData() {
486
- this.store.removeItem(KEY_END_TO_END_ACCOUNT);
487
- return Promise.resolve();
488
- }
489
-
490
- // Olm account
491
-
492
- getAccount(txn, func) {
493
- var accountPickle = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT);
494
- func(accountPickle);
495
- }
496
- storeAccount(txn, accountPickle) {
497
- setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, accountPickle);
498
- }
499
- getCrossSigningKeys(txn, func) {
500
- var keys = getJsonItem(this.store, KEY_CROSS_SIGNING_KEYS);
501
- func(keys);
502
- }
503
- getSecretStorePrivateKey(txn, func, type) {
504
- var key = getJsonItem(this.store, E2E_PREFIX + "ssss_cache.".concat(type));
505
- func(key);
506
- }
507
- storeCrossSigningKeys(txn, keys) {
508
- setJsonItem(this.store, KEY_CROSS_SIGNING_KEYS, keys);
509
- }
510
- storeSecretStorePrivateKey(txn, type, key) {
511
- setJsonItem(this.store, E2E_PREFIX + "ssss_cache.".concat(type), key);
512
- }
513
- doTxn(mode, stores, func) {
514
- return Promise.resolve(func(null));
515
- }
516
- }
517
- function getJsonItem(store, key) {
518
- try {
519
- // if the key is absent, store.getItem() returns null, and
520
- // JSON.parse(null) === null, so this returns null.
521
- return JSON.parse(store.getItem(key));
522
- } catch (e) {
523
- logger.log("Error: Failed to get key %s: %s", key, e.message);
524
- logger.log(e.stack);
525
- }
526
- return null;
527
- }
528
- function setJsonItem(store, key, val) {
529
- store.setItem(key, JSON.stringify(val));
530
- }
531
- //# sourceMappingURL=localStorage-crypto-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"localStorage-crypto-store.js","names":["logger","MemoryCryptoStore","MigrationState","SESSION_BATCH_SIZE","safeSet","E2E_PREFIX","KEY_END_TO_END_MIGRATION_STATE","KEY_END_TO_END_ACCOUNT","KEY_CROSS_SIGNING_KEYS","KEY_NOTIFIED_ERROR_DEVICES","KEY_DEVICE_DATA","KEY_INBOUND_SESSION_PREFIX","KEY_INBOUND_SESSION_WITHHELD_PREFIX","KEY_ROOMS_PREFIX","KEY_SESSIONS_NEEDING_BACKUP","keyEndToEndSessions","deviceKey","keyEndToEndSessionProblems","keyEndToEndInboundGroupSession","senderKey","sessionId","keyEndToEndInboundGroupSessionWithheld","keyEndToEndRoomsPrefix","roomId","LocalStorageCryptoStore","exists","store","length","i","_store$key","key","startsWith","constructor","containsData","_this","_asyncToGenerator","getMigrationState","_this2","_getJsonItem","getJsonItem","NOT_STARTED","setMigrationState","migrationState","_this3","setJsonItem","countEndToEndSessions","txn","func","count","sessions","Object","keys","_getEndToEndSessions","fixedSessions","sid","val","entries","session","getEndToEndSession","getEndToEndSessions","getAllEndToEndSessions","_this$store$key","split","sess","values","storeEndToEndSession","sessionInfo","storeEndToEndSessionProblem","type","fixed","_this4","problems","push","time","Date","now","sort","a","b","getEndToEndSessionProblem","timestamp","_this5","lastProblem","problem","assign","filterOutNotifiedErrorDevices","devices","_this6","notifiedErrorDevices","ret","device","userId","deviceInfo","deviceId","getEndToEndSessionsBatch","_this7","result","_this7$store$key","deleteEndToEndSessionsBatch","_this8","deviceSessions","removeItem","getEndToEndInboundGroupSession","senderCurve25519Key","getAllEndToEndInboundGroupSessions","slice","sessionData","addEndToEndInboundGroupSession","existing","storeEndToEndInboundGroupSession","storeEndToEndInboundGroupSessionWithheld","countEndToEndInboundGroupSessions","_this9","getEndToEndInboundGroupSessionsBatch","_this10","sessionsNeedingBackup","key2","needsBackup","deleteEndToEndInboundGroupSessionsBatch","_this11","k","getEndToEndDeviceData","storeEndToEndDeviceData","deviceData","storeEndToEndRoom","roomInfo","getEndToEndRooms","prefix","getSessionsNeedingBackup","limit","_this12","_loop","prototype","hasOwnProperty","call","Promise","resolve","countSessionsNeedingBackup","unmarkSessionsNeedingBackup","markSessionsNeedingBackup","deleteAllData","getAccount","accountPickle","storeAccount","getCrossSigningKeys","getSecretStorePrivateKey","concat","storeCrossSigningKeys","storeSecretStorePrivateKey","doTxn","mode","stores","JSON","parse","getItem","e","log","message","stack","setItem","stringify"],"sources":["../../../src/crypto/store/localStorage-crypto-store.ts"],"sourcesContent":["/*\nCopyright 2017 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { logger } from \"../../logger.ts\";\nimport { MemoryCryptoStore } from \"./memory-crypto-store.ts\";\nimport {\n CryptoStore,\n IDeviceData,\n IProblem,\n ISession,\n SessionExtended,\n ISessionInfo,\n IWithheld,\n MigrationState,\n Mode,\n SecretStorePrivateKeys,\n SESSION_BATCH_SIZE,\n} from \"./base.ts\";\nimport { IOlmDevice } from \"../algorithms/megolm.ts\";\nimport { IRoomEncryption } from \"../RoomList.ts\";\nimport { InboundGroupSessionData } from \"../OlmDevice.ts\";\nimport { safeSet } from \"../../utils.ts\";\nimport { CrossSigningKeyInfo } from \"../../crypto-api/index.ts\";\n\n/**\n * Internal module. Partial localStorage backed storage for e2e.\n * This is not a full crypto store, just the in-memory store with\n * some things backed by localStorage. It exists because indexedDB\n * is broken in Firefox private mode or set to, \"will not remember\n * history\".\n */\n\nconst E2E_PREFIX = \"crypto.\";\nconst KEY_END_TO_END_MIGRATION_STATE = E2E_PREFIX + \"migration\";\nconst KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nconst KEY_CROSS_SIGNING_KEYS = E2E_PREFIX + \"cross_signing_keys\";\nconst KEY_NOTIFIED_ERROR_DEVICES = E2E_PREFIX + \"notified_error_devices\";\nconst KEY_DEVICE_DATA = E2E_PREFIX + \"device_data\";\nconst KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + \"inboundgroupsessions/\";\nconst KEY_INBOUND_SESSION_WITHHELD_PREFIX = E2E_PREFIX + \"inboundgroupsessions.withheld/\";\nconst KEY_ROOMS_PREFIX = E2E_PREFIX + \"rooms/\";\nconst KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + \"sessionsneedingbackup\";\n\nfunction keyEndToEndSessions(deviceKey: string): string {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndSessionProblems(deviceKey: string): string {\n return E2E_PREFIX + \"session.problems/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey: string, sessionId: string): string {\n return KEY_INBOUND_SESSION_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndInboundGroupSessionWithheld(senderKey: string, sessionId: string): string {\n return KEY_INBOUND_SESSION_WITHHELD_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoomsPrefix(roomId: string): string {\n return KEY_ROOMS_PREFIX + roomId;\n}\n\nexport class LocalStorageCryptoStore extends MemoryCryptoStore implements CryptoStore {\n public static exists(store: Storage): boolean {\n const length = store.length;\n for (let i = 0; i < length; i++) {\n if (store.key(i)?.startsWith(E2E_PREFIX)) {\n return true;\n }\n }\n return false;\n }\n\n public constructor(private readonly store: Storage) {\n super();\n }\n\n /**\n * Returns true if this CryptoStore has ever been initialised (ie, it might contain data).\n *\n * Implementation of {@link CryptoStore.containsData}.\n *\n * @internal\n */\n public async containsData(): Promise<boolean> {\n return LocalStorageCryptoStore.exists(this.store);\n }\n\n /**\n * Get data on how much of the libolm to Rust Crypto migration has been done.\n *\n * Implementation of {@link CryptoStore.getMigrationState}.\n *\n * @internal\n */\n public async getMigrationState(): Promise<MigrationState> {\n return getJsonItem(this.store, KEY_END_TO_END_MIGRATION_STATE) ?? MigrationState.NOT_STARTED;\n }\n\n /**\n * Set data on how much of the libolm to Rust Crypto migration has been done.\n *\n * Implementation of {@link CryptoStore.setMigrationState}.\n *\n * @internal\n */\n public async setMigrationState(migrationState: MigrationState): Promise<void> {\n setJsonItem(this.store, KEY_END_TO_END_MIGRATION_STATE, migrationState);\n }\n\n // Olm Sessions\n\n public countEndToEndSessions(txn: unknown, func: (count: number) => void): void {\n let count = 0;\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(keyEndToEndSessions(\"\"))) {\n const sessions = getJsonItem(this.store, key);\n count += Object.keys(sessions ?? {}).length;\n }\n }\n func(count);\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _getEndToEndSessions(deviceKey: string): Record<string, ISessionInfo> {\n const sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n const fixedSessions: Record<string, ISessionInfo> = {};\n\n // fix up any old sessions to be objects rather than just the base64 pickle\n for (const [sid, val] of Object.entries(sessions || {})) {\n if (typeof val === \"string\") {\n fixedSessions[sid] = {\n session: val,\n };\n } else {\n fixedSessions[sid] = val;\n }\n }\n\n return fixedSessions;\n }\n\n public getEndToEndSession(\n deviceKey: string,\n sessionId: string,\n txn: unknown,\n func: (session: ISessionInfo) => void,\n ): void {\n const sessions = this._getEndToEndSessions(deviceKey);\n func(sessions[sessionId] || {});\n }\n\n public getEndToEndSessions(\n deviceKey: string,\n txn: unknown,\n func: (sessions: { [sessionId: string]: ISessionInfo }) => void,\n ): void {\n func(this._getEndToEndSessions(deviceKey) || {});\n }\n\n public getAllEndToEndSessions(txn: unknown, func: (session: ISessionInfo) => void): void {\n for (let i = 0; i < this.store.length; ++i) {\n if (this.store.key(i)?.startsWith(keyEndToEndSessions(\"\"))) {\n const deviceKey = this.store.key(i)!.split(\"/\")[1];\n for (const sess of Object.values(this._getEndToEndSessions(deviceKey))) {\n func(sess);\n }\n }\n }\n }\n\n public storeEndToEndSession(deviceKey: string, sessionId: string, sessionInfo: ISessionInfo, txn: unknown): void {\n const sessions = this._getEndToEndSessions(deviceKey) || {};\n sessions[sessionId] = sessionInfo;\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);\n }\n\n public async storeEndToEndSessionProblem(deviceKey: string, type: string, fixed: boolean): Promise<void> {\n const key = keyEndToEndSessionProblems(deviceKey);\n const problems = getJsonItem<IProblem[]>(this.store, key) || [];\n problems.push({ type, fixed, time: Date.now() });\n problems.sort((a, b) => {\n return a.time - b.time;\n });\n setJsonItem(this.store, key, problems);\n }\n\n public async getEndToEndSessionProblem(deviceKey: string, timestamp: number): Promise<IProblem | null> {\n const key = keyEndToEndSessionProblems(deviceKey);\n const problems = getJsonItem<IProblem[]>(this.store, key) || [];\n if (!problems.length) {\n return null;\n }\n const lastProblem = problems[problems.length - 1];\n for (const problem of problems) {\n if (problem.time > timestamp) {\n return Object.assign({}, problem, { fixed: lastProblem.fixed });\n }\n }\n if (lastProblem.fixed) {\n return null;\n } else {\n return lastProblem;\n }\n }\n\n public async filterOutNotifiedErrorDevices(devices: IOlmDevice[]): Promise<IOlmDevice[]> {\n const notifiedErrorDevices =\n getJsonItem<MemoryCryptoStore[\"notifiedErrorDevices\"]>(this.store, KEY_NOTIFIED_ERROR_DEVICES) || {};\n const ret: IOlmDevice[] = [];\n\n for (const device of devices) {\n const { userId, deviceInfo } = device;\n if (userId in notifiedErrorDevices) {\n if (!(deviceInfo.deviceId in notifiedErrorDevices[userId])) {\n ret.push(device);\n safeSet(notifiedErrorDevices[userId], deviceInfo.deviceId, true);\n }\n } else {\n ret.push(device);\n safeSet(notifiedErrorDevices, userId, { [deviceInfo.deviceId]: true });\n }\n }\n\n setJsonItem(this.store, KEY_NOTIFIED_ERROR_DEVICES, notifiedErrorDevices);\n\n return ret;\n }\n\n /**\n * Fetch a batch of Olm sessions from the database.\n *\n * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}.\n *\n * @internal\n */\n public async getEndToEndSessionsBatch(): Promise<null | ISessionInfo[]> {\n const result: ISessionInfo[] = [];\n for (let i = 0; i < this.store.length; ++i) {\n if (this.store.key(i)?.startsWith(keyEndToEndSessions(\"\"))) {\n const deviceKey = this.store.key(i)!.split(\"/\")[1];\n for (const session of Object.values(this._getEndToEndSessions(deviceKey))) {\n result.push(session);\n if (result.length >= SESSION_BATCH_SIZE) {\n return result;\n }\n }\n }\n }\n\n if (result.length === 0) {\n // No sessions left.\n return null;\n }\n\n // There are fewer sessions than the batch size; return the final batch of sessions.\n return result;\n }\n\n /**\n * Delete a batch of Olm sessions from the database.\n *\n * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}.\n *\n * @internal\n */\n public async deleteEndToEndSessionsBatch(sessions: { deviceKey: string; sessionId: string }[]): Promise<void> {\n for (const { deviceKey, sessionId } of sessions) {\n const deviceSessions = this._getEndToEndSessions(deviceKey) || {};\n delete deviceSessions[sessionId];\n if (Object.keys(deviceSessions).length === 0) {\n // No more sessions for this device.\n this.store.removeItem(keyEndToEndSessions(deviceKey));\n } else {\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), deviceSessions);\n }\n }\n }\n\n // Inbound Group Sessions\n\n public getEndToEndInboundGroupSession(\n senderCurve25519Key: string,\n sessionId: string,\n txn: unknown,\n func: (groupSession: InboundGroupSessionData | null, groupSessionWithheld: IWithheld | null) => void,\n ): void {\n func(\n getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)),\n getJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId)),\n );\n }\n\n public getAllEndToEndInboundGroupSessions(txn: unknown, func: (session: ISession | null) => void): void {\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.slice(KEY_INBOUND_SESSION_PREFIX.length, KEY_INBOUND_SESSION_PREFIX.length + 43),\n sessionId: key.slice(KEY_INBOUND_SESSION_PREFIX.length + 44),\n sessionData: getJsonItem(this.store, key)!,\n });\n }\n }\n func(null);\n }\n\n public addEndToEndInboundGroupSession(\n senderCurve25519Key: string,\n sessionId: string,\n sessionData: InboundGroupSessionData,\n txn: unknown,\n ): void {\n const existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));\n if (!existing) {\n this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n }\n\n public storeEndToEndInboundGroupSession(\n senderCurve25519Key: string,\n sessionId: string,\n sessionData: InboundGroupSessionData,\n txn: unknown,\n ): void {\n setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);\n }\n\n public storeEndToEndInboundGroupSessionWithheld(\n senderCurve25519Key: string,\n sessionId: string,\n sessionData: IWithheld,\n txn: unknown,\n ): void {\n setJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId), sessionData);\n }\n\n /**\n * Count the number of Megolm sessions in the database.\n *\n * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}.\n *\n * @internal\n */\n public async countEndToEndInboundGroupSessions(): Promise<number> {\n let count = 0;\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n count += 1;\n }\n }\n return count;\n }\n\n /**\n * Fetch a batch of Megolm sessions from the database.\n *\n * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}.\n *\n * @internal\n */\n public async getEndToEndInboundGroupSessionsBatch(): Promise<SessionExtended[] | null> {\n const sessionsNeedingBackup = getJsonItem<string[]>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n const result: SessionExtended[] = [];\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n const key2 = key.slice(KEY_INBOUND_SESSION_PREFIX.length);\n\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n result.push({\n senderKey: key2.slice(0, 43),\n sessionId: key2.slice(44),\n sessionData: getJsonItem(this.store, key)!,\n needsBackup: key2 in sessionsNeedingBackup,\n });\n\n if (result.length >= SESSION_BATCH_SIZE) {\n return result;\n }\n }\n }\n\n if (result.length === 0) {\n // No sessions left.\n return null;\n }\n\n // There are fewer sessions than the batch size; return the final batch of sessions.\n return result;\n }\n\n /**\n * Delete a batch of Megolm sessions from the database.\n *\n * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}.\n *\n * @internal\n */\n public async deleteEndToEndInboundGroupSessionsBatch(\n sessions: { senderKey: string; sessionId: string }[],\n ): Promise<void> {\n for (const { senderKey, sessionId } of sessions) {\n const k = keyEndToEndInboundGroupSession(senderKey, sessionId);\n this.store.removeItem(k);\n }\n }\n\n public getEndToEndDeviceData(txn: unknown, func: (deviceData: IDeviceData | null) => void): void {\n func(getJsonItem(this.store, KEY_DEVICE_DATA));\n }\n\n public storeEndToEndDeviceData(deviceData: IDeviceData, txn: unknown): void {\n setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);\n }\n\n public storeEndToEndRoom(roomId: string, roomInfo: IRoomEncryption, txn: unknown): void {\n setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);\n }\n\n public getEndToEndRooms(txn: unknown, func: (rooms: Record<string, IRoomEncryption>) => void): void {\n const result: Record<string, IRoomEncryption> = {};\n const prefix = keyEndToEndRoomsPrefix(\"\");\n\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(prefix)) {\n const roomId = key.slice(prefix.length);\n result[roomId] = getJsonItem(this.store, key)!;\n }\n }\n func(result);\n }\n\n public getSessionsNeedingBackup(limit: number): Promise<ISession[]> {\n const sessionsNeedingBackup = getJsonItem<string[]>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n const sessions: ISession[] = [];\n\n for (const session in sessionsNeedingBackup) {\n if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) {\n // see getAllEndToEndInboundGroupSessions for the magic number explanations\n const senderKey = session.slice(0, 43);\n const sessionId = session.slice(44);\n this.getEndToEndInboundGroupSession(senderKey, sessionId, null, (sessionData) => {\n sessions.push({\n senderKey: senderKey,\n sessionId: sessionId,\n sessionData: sessionData!,\n });\n });\n if (limit && sessions.length >= limit) {\n break;\n }\n }\n }\n return Promise.resolve(sessions);\n }\n\n public countSessionsNeedingBackup(): Promise<number> {\n const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n return Promise.resolve(Object.keys(sessionsNeedingBackup).length);\n }\n\n public unmarkSessionsNeedingBackup(sessions: ISession[]): Promise<void> {\n const sessionsNeedingBackup =\n getJsonItem<{\n [senderKeySessionId: string]: string;\n }>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n for (const session of sessions) {\n delete sessionsNeedingBackup[session.senderKey + \"/\" + session.sessionId];\n }\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return Promise.resolve();\n }\n\n public markSessionsNeedingBackup(sessions: ISession[]): Promise<void> {\n const sessionsNeedingBackup =\n getJsonItem<{\n [senderKeySessionId: string]: boolean;\n }>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n for (const session of sessions) {\n sessionsNeedingBackup[session.senderKey + \"/\" + session.sessionId] = true;\n }\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return Promise.resolve();\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns Promise which resolves when the store has been cleared.\n */\n public deleteAllData(): Promise<void> {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n return Promise.resolve();\n }\n\n // Olm account\n\n public getAccount(txn: unknown, func: (accountPickle: string | null) => void): void {\n const accountPickle = getJsonItem<string>(this.store, KEY_END_TO_END_ACCOUNT);\n func(accountPickle);\n }\n\n public storeAccount(txn: unknown, accountPickle: string): void {\n setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, accountPickle);\n }\n\n public getCrossSigningKeys(txn: unknown, func: (keys: Record<string, CrossSigningKeyInfo> | null) => void): void {\n const keys = getJsonItem<Record<string, CrossSigningKeyInfo>>(this.store, KEY_CROSS_SIGNING_KEYS);\n func(keys);\n }\n\n public getSecretStorePrivateKey<K extends keyof SecretStorePrivateKeys>(\n txn: unknown,\n func: (key: SecretStorePrivateKeys[K] | null) => void,\n type: K,\n ): void {\n const key = getJsonItem<SecretStorePrivateKeys[K]>(this.store, E2E_PREFIX + `ssss_cache.${type}`);\n func(key);\n }\n\n public storeCrossSigningKeys(txn: unknown, keys: Record<string, CrossSigningKeyInfo>): void {\n setJsonItem(this.store, KEY_CROSS_SIGNING_KEYS, keys);\n }\n\n public storeSecretStorePrivateKey<K extends keyof SecretStorePrivateKeys>(\n txn: unknown,\n type: K,\n key: SecretStorePrivateKeys[K],\n ): void {\n setJsonItem(this.store, E2E_PREFIX + `ssss_cache.${type}`, key);\n }\n\n public doTxn<T>(mode: Mode, stores: Iterable<string>, func: (txn: unknown) => T): Promise<T> {\n return Promise.resolve(func(null));\n }\n}\n\nfunction getJsonItem<T>(store: Storage, key: string): T | null {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key)!);\n } catch (e) {\n logger.log(\"Error: Failed to get key %s: %s\", key, (<Error>e).message);\n logger.log((<Error>e).stack);\n }\n return null;\n}\n\nfunction setJsonItem<T>(store: Storage, key: string, val: T): void {\n store.setItem(key, JSON.stringify(val));\n}\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,iBAAiB;AACxC,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAQIC,cAAc,EAGdC,kBAAkB,QACf,WAAW;AAIlB,SAASC,OAAO,QAAQ,gBAAgB;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,UAAU,GAAG,SAAS;AAC5B,IAAMC,8BAA8B,GAAGD,UAAU,GAAG,WAAW;AAC/D,IAAME,sBAAsB,GAAGF,UAAU,GAAG,SAAS;AACrD,IAAMG,sBAAsB,GAAGH,UAAU,GAAG,oBAAoB;AAChE,IAAMI,0BAA0B,GAAGJ,UAAU,GAAG,wBAAwB;AACxE,IAAMK,eAAe,GAAGL,UAAU,GAAG,aAAa;AAClD,IAAMM,0BAA0B,GAAGN,UAAU,GAAG,uBAAuB;AACvE,IAAMO,mCAAmC,GAAGP,UAAU,GAAG,gCAAgC;AACzF,IAAMQ,gBAAgB,GAAGR,UAAU,GAAG,QAAQ;AAC9C,IAAMS,2BAA2B,GAAGT,UAAU,GAAG,uBAAuB;AAExE,SAASU,mBAAmBA,CAACC,SAAiB,EAAU;EACpD,OAAOX,UAAU,GAAG,WAAW,GAAGW,SAAS;AAC/C;AAEA,SAASC,0BAA0BA,CAACD,SAAiB,EAAU;EAC3D,OAAOX,UAAU,GAAG,mBAAmB,GAAGW,SAAS;AACvD;AAEA,SAASE,8BAA8BA,CAACC,SAAiB,EAAEC,SAAiB,EAAU;EAClF,OAAOT,0BAA0B,GAAGQ,SAAS,GAAG,GAAG,GAAGC,SAAS;AACnE;AAEA,SAASC,sCAAsCA,CAACF,SAAiB,EAAEC,SAAiB,EAAU;EAC1F,OAAOR,mCAAmC,GAAGO,SAAS,GAAG,GAAG,GAAGC,SAAS;AAC5E;AAEA,SAASE,sBAAsBA,CAACC,MAAc,EAAU;EACpD,OAAOV,gBAAgB,GAAGU,MAAM;AACpC;AAEA,OAAO,MAAMC,uBAAuB,SAASvB,iBAAiB,CAAwB;EAClF,OAAcwB,MAAMA,CAACC,KAAc,EAAW;IAC1C,IAAMC,MAAM,GAAGD,KAAK,CAACC,MAAM;IAC3B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,EAAE,EAAE;MAAA,IAAAC,UAAA;MAC7B,KAAAA,UAAA,GAAIH,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC,cAAAC,UAAA,eAAZA,UAAA,CAAcE,UAAU,CAAC1B,UAAU,CAAC,EAAE;QACtC,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEO2B,WAAWA,CAAkBN,KAAc,EAAE;IAChD,KAAK,CAAC,CAAC;IAAC,KADwBA,KAAc,GAAdA,KAAc;EAElD;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBO,YAAYA,CAAA,EAAqB;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MAC1C,OAAOX,uBAAuB,CAACC,MAAM,CAACS,KAAI,CAACR,KAAK,CAAC;IAAC;EACtD;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBU,iBAAiBA,CAAA,EAA4B;IAAA,IAAAC,MAAA;IAAA,OAAAF,iBAAA;MAAA,IAAAG,YAAA;MACtD,QAAAA,YAAA,GAAOC,WAAW,CAACF,MAAI,CAACX,KAAK,EAAEpB,8BAA8B,CAAC,cAAAgC,YAAA,cAAAA,YAAA,GAAIpC,cAAc,CAACsC,WAAW;IAAC;EACjG;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBC,iBAAiBA,CAACC,cAA8B,EAAiB;IAAA,IAAAC,MAAA;IAAA,OAAAR,iBAAA;MAC1ES,WAAW,CAACD,MAAI,CAACjB,KAAK,EAAEpB,8BAA8B,EAAEoC,cAAc,CAAC;IAAC;EAC5E;;EAEA;;EAEOG,qBAAqBA,CAACC,GAAY,EAAEC,IAA6B,EAAQ;IAC5E,IAAIC,KAAK,GAAG,CAAC;IACb,KAAK,IAAIpB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACF,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;MACxC,IAAME,GAAG,GAAG,IAAI,CAACJ,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC;MAC7B,IAAIE,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,UAAU,CAAChB,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE;QAC1C,IAAMkC,QAAQ,GAAGV,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEI,GAAG,CAAC;QAC7CkB,KAAK,IAAIE,MAAM,CAACC,IAAI,CAACF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,CAAC,CAAC,CAAC,CAACtB,MAAM;MAC/C;IACJ;IACAoB,IAAI,CAACC,KAAK,CAAC;EACf;;EAEA;EACQI,oBAAoBA,CAACpC,SAAiB,EAAgC;IAC1E,IAAMiC,QAAQ,GAAGV,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEX,mBAAmB,CAACC,SAAS,CAAC,CAAC;IACxE,IAAMqC,aAA2C,GAAG,CAAC,CAAC;;IAEtD;IACA,KAAK,IAAM,CAACC,GAAG,EAAEC,GAAG,CAAC,IAAIL,MAAM,CAACM,OAAO,CAACP,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;MACrD,IAAI,OAAOM,GAAG,KAAK,QAAQ,EAAE;QACzBF,aAAa,CAACC,GAAG,CAAC,GAAG;UACjBG,OAAO,EAAEF;QACb,CAAC;MACL,CAAC,MAAM;QACHF,aAAa,CAACC,GAAG,CAAC,GAAGC,GAAG;MAC5B;IACJ;IAEA,OAAOF,aAAa;EACxB;EAEOK,kBAAkBA,CACrB1C,SAAiB,EACjBI,SAAiB,EACjB0B,GAAY,EACZC,IAAqC,EACjC;IACJ,IAAME,QAAQ,GAAG,IAAI,CAACG,oBAAoB,CAACpC,SAAS,CAAC;IACrD+B,IAAI,CAACE,QAAQ,CAAC7B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EACnC;EAEOuC,mBAAmBA,CACtB3C,SAAiB,EACjB8B,GAAY,EACZC,IAA+D,EAC3D;IACJA,IAAI,CAAC,IAAI,CAACK,oBAAoB,CAACpC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EACpD;EAEO4C,sBAAsBA,CAACd,GAAY,EAAEC,IAAqC,EAAQ;IACrF,KAAK,IAAInB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACF,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;MAAA,IAAAiC,eAAA;MACxC,KAAAA,eAAA,GAAI,IAAI,CAACnC,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC,cAAAiC,eAAA,eAAjBA,eAAA,CAAmB9B,UAAU,CAAChB,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE;QACxD,IAAMC,SAAS,GAAG,IAAI,CAACU,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC,CAAEkC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,IAAMC,IAAI,IAAIb,MAAM,CAACc,MAAM,CAAC,IAAI,CAACZ,oBAAoB,CAACpC,SAAS,CAAC,CAAC,EAAE;UACpE+B,IAAI,CAACgB,IAAI,CAAC;QACd;MACJ;IACJ;EACJ;EAEOE,oBAAoBA,CAACjD,SAAiB,EAAEI,SAAiB,EAAE8C,WAAyB,EAAEpB,GAAY,EAAQ;IAC7G,IAAMG,QAAQ,GAAG,IAAI,CAACG,oBAAoB,CAACpC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3DiC,QAAQ,CAAC7B,SAAS,CAAC,GAAG8C,WAAW;IACjCtB,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEX,mBAAmB,CAACC,SAAS,CAAC,EAAEiC,QAAQ,CAAC;EACrE;EAEakB,2BAA2BA,CAACnD,SAAiB,EAAEoD,IAAY,EAAEC,KAAc,EAAiB;IAAA,IAAAC,MAAA;IAAA,OAAAnC,iBAAA;MACrG,IAAML,GAAG,GAAGb,0BAA0B,CAACD,SAAS,CAAC;MACjD,IAAMuD,QAAQ,GAAGhC,WAAW,CAAa+B,MAAI,CAAC5C,KAAK,EAAEI,GAAG,CAAC,IAAI,EAAE;MAC/DyC,QAAQ,CAACC,IAAI,CAAC;QAAEJ,IAAI;QAAEC,KAAK;QAAEI,IAAI,EAAEC,IAAI,CAACC,GAAG,CAAC;MAAE,CAAC,CAAC;MAChDJ,QAAQ,CAACK,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;QACpB,OAAOD,CAAC,CAACJ,IAAI,GAAGK,CAAC,CAACL,IAAI;MAC1B,CAAC,CAAC;MACF7B,WAAW,CAAC0B,MAAI,CAAC5C,KAAK,EAAEI,GAAG,EAAEyC,QAAQ,CAAC;IAAC;EAC3C;EAEaQ,yBAAyBA,CAAC/D,SAAiB,EAAEgE,SAAiB,EAA4B;IAAA,IAAAC,MAAA;IAAA,OAAA9C,iBAAA;MACnG,IAAML,GAAG,GAAGb,0BAA0B,CAACD,SAAS,CAAC;MACjD,IAAMuD,QAAQ,GAAGhC,WAAW,CAAa0C,MAAI,CAACvD,KAAK,EAAEI,GAAG,CAAC,IAAI,EAAE;MAC/D,IAAI,CAACyC,QAAQ,CAAC5C,MAAM,EAAE;QAClB,OAAO,IAAI;MACf;MACA,IAAMuD,WAAW,GAAGX,QAAQ,CAACA,QAAQ,CAAC5C,MAAM,GAAG,CAAC,CAAC;MACjD,KAAK,IAAMwD,OAAO,IAAIZ,QAAQ,EAAE;QAC5B,IAAIY,OAAO,CAACV,IAAI,GAAGO,SAAS,EAAE;UAC1B,OAAO9B,MAAM,CAACkC,MAAM,CAAC,CAAC,CAAC,EAAED,OAAO,EAAE;YAAEd,KAAK,EAAEa,WAAW,CAACb;UAAM,CAAC,CAAC;QACnE;MACJ;MACA,IAAIa,WAAW,CAACb,KAAK,EAAE;QACnB,OAAO,IAAI;MACf,CAAC,MAAM;QACH,OAAOa,WAAW;MACtB;IAAC;EACL;EAEaG,6BAA6BA,CAACC,OAAqB,EAAyB;IAAA,IAAAC,MAAA;IAAA,OAAApD,iBAAA;MACrF,IAAMqD,oBAAoB,GACtBjD,WAAW,CAA4CgD,MAAI,CAAC7D,KAAK,EAAEjB,0BAA0B,CAAC,IAAI,CAAC,CAAC;MACxG,IAAMgF,GAAiB,GAAG,EAAE;MAE5B,KAAK,IAAMC,MAAM,IAAIJ,OAAO,EAAE;QAC1B,IAAM;UAAEK,MAAM;UAAEC;QAAW,CAAC,GAAGF,MAAM;QACrC,IAAIC,MAAM,IAAIH,oBAAoB,EAAE;UAChC,IAAI,EAAEI,UAAU,CAACC,QAAQ,IAAIL,oBAAoB,CAACG,MAAM,CAAC,CAAC,EAAE;YACxDF,GAAG,CAACjB,IAAI,CAACkB,MAAM,CAAC;YAChBtF,OAAO,CAACoF,oBAAoB,CAACG,MAAM,CAAC,EAAEC,UAAU,CAACC,QAAQ,EAAE,IAAI,CAAC;UACpE;QACJ,CAAC,MAAM;UACHJ,GAAG,CAACjB,IAAI,CAACkB,MAAM,CAAC;UAChBtF,OAAO,CAACoF,oBAAoB,EAAEG,MAAM,EAAE;YAAE,CAACC,UAAU,CAACC,QAAQ,GAAG;UAAK,CAAC,CAAC;QAC1E;MACJ;MAEAjD,WAAW,CAAC2C,MAAI,CAAC7D,KAAK,EAAEjB,0BAA0B,EAAE+E,oBAAoB,CAAC;MAEzE,OAAOC,GAAG;IAAC;EACf;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBK,wBAAwBA,CAAA,EAAmC;IAAA,IAAAC,MAAA;IAAA,OAAA5D,iBAAA;MACpE,IAAM6D,MAAsB,GAAG,EAAE;MACjC,KAAK,IAAIpE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmE,MAAI,CAACrE,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;QAAA,IAAAqE,gBAAA;QACxC,KAAAA,gBAAA,GAAIF,MAAI,CAACrE,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC,cAAAqE,gBAAA,eAAjBA,gBAAA,CAAmBlE,UAAU,CAAChB,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE;UACxD,IAAMC,SAAS,GAAG+E,MAAI,CAACrE,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC,CAAEkC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAClD,KAAK,IAAML,OAAO,IAAIP,MAAM,CAACc,MAAM,CAAC+B,MAAI,CAAC3C,oBAAoB,CAACpC,SAAS,CAAC,CAAC,EAAE;YACvEgF,MAAM,CAACxB,IAAI,CAACf,OAAO,CAAC;YACpB,IAAIuC,MAAM,CAACrE,MAAM,IAAIxB,kBAAkB,EAAE;cACrC,OAAO6F,MAAM;YACjB;UACJ;QACJ;MACJ;MAEA,IAAIA,MAAM,CAACrE,MAAM,KAAK,CAAC,EAAE;QACrB;QACA,OAAO,IAAI;MACf;;MAEA;MACA,OAAOqE,MAAM;IAAC;EAClB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBE,2BAA2BA,CAACjD,QAAoD,EAAiB;IAAA,IAAAkD,MAAA;IAAA,OAAAhE,iBAAA;MAC1G,KAAK,IAAM;QAAEnB,SAAS;QAAEI;MAAU,CAAC,IAAI6B,QAAQ,EAAE;QAC7C,IAAMmD,cAAc,GAAGD,MAAI,CAAC/C,oBAAoB,CAACpC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjE,OAAOoF,cAAc,CAAChF,SAAS,CAAC;QAChC,IAAI8B,MAAM,CAACC,IAAI,CAACiD,cAAc,CAAC,CAACzE,MAAM,KAAK,CAAC,EAAE;UAC1C;UACAwE,MAAI,CAACzE,KAAK,CAAC2E,UAAU,CAACtF,mBAAmB,CAACC,SAAS,CAAC,CAAC;QACzD,CAAC,MAAM;UACH4B,WAAW,CAACuD,MAAI,CAACzE,KAAK,EAAEX,mBAAmB,CAACC,SAAS,CAAC,EAAEoF,cAAc,CAAC;QAC3E;MACJ;IAAC;EACL;;EAEA;;EAEOE,8BAA8BA,CACjCC,mBAA2B,EAC3BnF,SAAiB,EACjB0B,GAAY,EACZC,IAAoG,EAChG;IACJA,IAAI,CACAR,WAAW,CAAC,IAAI,CAACb,KAAK,EAAER,8BAA8B,CAACqF,mBAAmB,EAAEnF,SAAS,CAAC,CAAC,EACvFmB,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEL,sCAAsC,CAACkF,mBAAmB,EAAEnF,SAAS,CAAC,CAClG,CAAC;EACL;EAEOoF,kCAAkCA,CAAC1D,GAAY,EAAEC,IAAwC,EAAQ;IACpG,KAAK,IAAInB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACF,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;MACxC,IAAME,GAAG,GAAG,IAAI,CAACJ,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC;MAC7B,IAAIE,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,UAAU,CAACpB,0BAA0B,CAAC,EAAE;QAC7C;QACA;QACA;QACA;;QAEAoC,IAAI,CAAC;UACD5B,SAAS,EAAEW,GAAG,CAAC2E,KAAK,CAAC9F,0BAA0B,CAACgB,MAAM,EAAEhB,0BAA0B,CAACgB,MAAM,GAAG,EAAE,CAAC;UAC/FP,SAAS,EAAEU,GAAG,CAAC2E,KAAK,CAAC9F,0BAA0B,CAACgB,MAAM,GAAG,EAAE,CAAC;UAC5D+E,WAAW,EAAEnE,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEI,GAAG;QAC5C,CAAC,CAAC;MACN;IACJ;IACAiB,IAAI,CAAC,IAAI,CAAC;EACd;EAEO4D,8BAA8BA,CACjCJ,mBAA2B,EAC3BnF,SAAiB,EACjBsF,WAAoC,EACpC5D,GAAY,EACR;IACJ,IAAM8D,QAAQ,GAAGrE,WAAW,CAAC,IAAI,CAACb,KAAK,EAAER,8BAA8B,CAACqF,mBAAmB,EAAEnF,SAAS,CAAC,CAAC;IACxG,IAAI,CAACwF,QAAQ,EAAE;MACX,IAAI,CAACC,gCAAgC,CAACN,mBAAmB,EAAEnF,SAAS,EAAEsF,WAAW,EAAE5D,GAAG,CAAC;IAC3F;EACJ;EAEO+D,gCAAgCA,CACnCN,mBAA2B,EAC3BnF,SAAiB,EACjBsF,WAAoC,EACpC5D,GAAY,EACR;IACJF,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAER,8BAA8B,CAACqF,mBAAmB,EAAEnF,SAAS,CAAC,EAAEsF,WAAW,CAAC;EACxG;EAEOI,wCAAwCA,CAC3CP,mBAA2B,EAC3BnF,SAAiB,EACjBsF,WAAsB,EACtB5D,GAAY,EACR;IACJF,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEL,sCAAsC,CAACkF,mBAAmB,EAAEnF,SAAS,CAAC,EAAEsF,WAAW,CAAC;EAChH;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBK,iCAAiCA,CAAA,EAAoB;IAAA,IAAAC,MAAA;IAAA,OAAA7E,iBAAA;MAC9D,IAAIa,KAAK,GAAG,CAAC;MACb,KAAK,IAAIpB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoF,MAAI,CAACtF,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;QACxC,IAAME,GAAG,GAAGkF,MAAI,CAACtF,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC;QAC7B,IAAIE,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,UAAU,CAACpB,0BAA0B,CAAC,EAAE;UAC7CqC,KAAK,IAAI,CAAC;QACd;MACJ;MACA,OAAOA,KAAK;IAAC;EACjB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBiE,oCAAoCA,CAAA,EAAsC;IAAA,IAAAC,OAAA;IAAA,OAAA/E,iBAAA;MACnF,IAAMgF,qBAAqB,GAAG5E,WAAW,CAAW2E,OAAI,CAACxF,KAAK,EAAEZ,2BAA2B,CAAC,IAAI,CAAC,CAAC;MAClG,IAAMkF,MAAyB,GAAG,EAAE;MACpC,KAAK,IAAIpE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsF,OAAI,CAACxF,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;QACxC,IAAME,GAAG,GAAGoF,OAAI,CAACxF,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC;QAC7B,IAAIE,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,UAAU,CAACpB,0BAA0B,CAAC,EAAE;UAC7C,IAAMyG,IAAI,GAAGtF,GAAG,CAAC2E,KAAK,CAAC9F,0BAA0B,CAACgB,MAAM,CAAC;;UAEzD;UACA;UACA;UACA;;UAEAqE,MAAM,CAACxB,IAAI,CAAC;YACRrD,SAAS,EAAEiG,IAAI,CAACX,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5BrF,SAAS,EAAEgG,IAAI,CAACX,KAAK,CAAC,EAAE,CAAC;YACzBC,WAAW,EAAEnE,WAAW,CAAC2E,OAAI,CAACxF,KAAK,EAAEI,GAAG,CAAE;YAC1CuF,WAAW,EAAED,IAAI,IAAID;UACzB,CAAC,CAAC;UAEF,IAAInB,MAAM,CAACrE,MAAM,IAAIxB,kBAAkB,EAAE;YACrC,OAAO6F,MAAM;UACjB;QACJ;MACJ;MAEA,IAAIA,MAAM,CAACrE,MAAM,KAAK,CAAC,EAAE;QACrB;QACA,OAAO,IAAI;MACf;;MAEA;MACA,OAAOqE,MAAM;IAAC;EAClB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACiBsB,uCAAuCA,CAChDrE,QAAoD,EACvC;IAAA,IAAAsE,OAAA;IAAA,OAAApF,iBAAA;MACb,KAAK,IAAM;QAAEhB,SAAS;QAAEC;MAAU,CAAC,IAAI6B,QAAQ,EAAE;QAC7C,IAAMuE,CAAC,GAAGtG,8BAA8B,CAACC,SAAS,EAAEC,SAAS,CAAC;QAC9DmG,OAAI,CAAC7F,KAAK,CAAC2E,UAAU,CAACmB,CAAC,CAAC;MAC5B;IAAC;EACL;EAEOC,qBAAqBA,CAAC3E,GAAY,EAAEC,IAA8C,EAAQ;IAC7FA,IAAI,CAACR,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEhB,eAAe,CAAC,CAAC;EAClD;EAEOgH,uBAAuBA,CAACC,UAAuB,EAAE7E,GAAY,EAAQ;IACxEF,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEhB,eAAe,EAAEiH,UAAU,CAAC;EACxD;EAEOC,iBAAiBA,CAACrG,MAAc,EAAEsG,QAAyB,EAAE/E,GAAY,EAAQ;IACpFF,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEJ,sBAAsB,CAACC,MAAM,CAAC,EAAEsG,QAAQ,CAAC;EACrE;EAEOC,gBAAgBA,CAAChF,GAAY,EAAEC,IAAsD,EAAQ;IAChG,IAAMiD,MAAuC,GAAG,CAAC,CAAC;IAClD,IAAM+B,MAAM,GAAGzG,sBAAsB,CAAC,EAAE,CAAC;IAEzC,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACF,KAAK,CAACC,MAAM,EAAE,EAAEC,CAAC,EAAE;MACxC,IAAME,GAAG,GAAG,IAAI,CAACJ,KAAK,CAACI,GAAG,CAACF,CAAC,CAAC;MAC7B,IAAIE,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,UAAU,CAACgG,MAAM,CAAC,EAAE;QACzB,IAAMxG,MAAM,GAAGO,GAAG,CAAC2E,KAAK,CAACsB,MAAM,CAACpG,MAAM,CAAC;QACvCqE,MAAM,CAACzE,MAAM,CAAC,GAAGgB,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEI,GAAG,CAAE;MAClD;IACJ;IACAiB,IAAI,CAACiD,MAAM,CAAC;EAChB;EAEOgC,wBAAwBA,CAACC,KAAa,EAAuB;IAAA,IAAAC,OAAA;IAChE,IAAMf,qBAAqB,GAAG5E,WAAW,CAAW,IAAI,CAACb,KAAK,EAAEZ,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAClG,IAAMmC,QAAoB,GAAG,EAAE;IAAC,IAAAkF,KAAA,YAAAA,MAAA,EAEa;MACzC,IAAIjF,MAAM,CAACkF,SAAS,CAACC,cAAc,CAACC,IAAI,CAACnB,qBAAqB,EAAE1D,OAAO,CAAC,EAAE;QACtE;QACA,IAAMtC,SAAS,GAAGsC,OAAO,CAACgD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACtC,IAAMrF,SAAS,GAAGqC,OAAO,CAACgD,KAAK,CAAC,EAAE,CAAC;QACnCyB,OAAI,CAAC5B,8BAA8B,CAACnF,SAAS,EAAEC,SAAS,EAAE,IAAI,EAAGsF,WAAW,IAAK;UAC7EzD,QAAQ,CAACuB,IAAI,CAAC;YACVrD,SAAS,EAAEA,SAAS;YACpBC,SAAS,EAAEA,SAAS;YACpBsF,WAAW,EAAEA;UACjB,CAAC,CAAC;QACN,CAAC,CAAC;QACF,IAAIuB,KAAK,IAAIhF,QAAQ,CAACtB,MAAM,IAAIsG,KAAK,EAAE;UAAA;QAEvC;MACJ;IACJ,CAAC;IAhBD,KAAK,IAAMxE,OAAO,IAAI0D,qBAAqB;MAAA,IAAAgB,KAAA,IAa/B;IAAM;IAIlB,OAAOI,OAAO,CAACC,OAAO,CAACvF,QAAQ,CAAC;EACpC;EAEOwF,0BAA0BA,CAAA,EAAoB;IACjD,IAAMtB,qBAAqB,GAAG5E,WAAW,CAAC,IAAI,CAACb,KAAK,EAAEZ,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACxF,OAAOyH,OAAO,CAACC,OAAO,CAACtF,MAAM,CAACC,IAAI,CAACgE,qBAAqB,CAAC,CAACxF,MAAM,CAAC;EACrE;EAEO+G,2BAA2BA,CAACzF,QAAoB,EAAiB;IACpE,IAAMkE,qBAAqB,GACvB5E,WAAW,CAER,IAAI,CAACb,KAAK,EAAEZ,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,IAAM2C,OAAO,IAAIR,QAAQ,EAAE;MAC5B,OAAOkE,qBAAqB,CAAC1D,OAAO,CAACtC,SAAS,GAAG,GAAG,GAAGsC,OAAO,CAACrC,SAAS,CAAC;IAC7E;IACAwB,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEZ,2BAA2B,EAAEqG,qBAAqB,CAAC;IAC3E,OAAOoB,OAAO,CAACC,OAAO,CAAC,CAAC;EAC5B;EAEOG,yBAAyBA,CAAC1F,QAAoB,EAAiB;IAClE,IAAMkE,qBAAqB,GACvB5E,WAAW,CAER,IAAI,CAACb,KAAK,EAAEZ,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,IAAM2C,OAAO,IAAIR,QAAQ,EAAE;MAC5BkE,qBAAqB,CAAC1D,OAAO,CAACtC,SAAS,GAAG,GAAG,GAAGsC,OAAO,CAACrC,SAAS,CAAC,GAAG,IAAI;IAC7E;IACAwB,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEZ,2BAA2B,EAAEqG,qBAAqB,CAAC;IAC3E,OAAOoB,OAAO,CAACC,OAAO,CAAC,CAAC;EAC5B;;EAEA;AACJ;AACA;AACA;AACA;EACWI,aAAaA,CAAA,EAAkB;IAClC,IAAI,CAAClH,KAAK,CAAC2E,UAAU,CAAC9F,sBAAsB,CAAC;IAC7C,OAAOgI,OAAO,CAACC,OAAO,CAAC,CAAC;EAC5B;;EAEA;;EAEOK,UAAUA,CAAC/F,GAAY,EAAEC,IAA4C,EAAQ;IAChF,IAAM+F,aAAa,GAAGvG,WAAW,CAAS,IAAI,CAACb,KAAK,EAAEnB,sBAAsB,CAAC;IAC7EwC,IAAI,CAAC+F,aAAa,CAAC;EACvB;EAEOC,YAAYA,CAACjG,GAAY,EAAEgG,aAAqB,EAAQ;IAC3DlG,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAEnB,sBAAsB,EAAEuI,aAAa,CAAC;EAClE;EAEOE,mBAAmBA,CAAClG,GAAY,EAAEC,IAAgE,EAAQ;IAC7G,IAAMI,IAAI,GAAGZ,WAAW,CAAsC,IAAI,CAACb,KAAK,EAAElB,sBAAsB,CAAC;IACjGuC,IAAI,CAACI,IAAI,CAAC;EACd;EAEO8F,wBAAwBA,CAC3BnG,GAAY,EACZC,IAAqD,EACrDqB,IAAO,EACH;IACJ,IAAMtC,GAAG,GAAGS,WAAW,CAA4B,IAAI,CAACb,KAAK,EAAErB,UAAU,iBAAA6I,MAAA,CAAiB9E,IAAI,CAAE,CAAC;IACjGrB,IAAI,CAACjB,GAAG,CAAC;EACb;EAEOqH,qBAAqBA,CAACrG,GAAY,EAAEK,IAAyC,EAAQ;IACxFP,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAElB,sBAAsB,EAAE2C,IAAI,CAAC;EACzD;EAEOiG,0BAA0BA,CAC7BtG,GAAY,EACZsB,IAAO,EACPtC,GAA8B,EAC1B;IACJc,WAAW,CAAC,IAAI,CAAClB,KAAK,EAAErB,UAAU,iBAAA6I,MAAA,CAAiB9E,IAAI,CAAE,EAAEtC,GAAG,CAAC;EACnE;EAEOuH,KAAKA,CAAIC,IAAU,EAAEC,MAAwB,EAAExG,IAAyB,EAAc;IACzF,OAAOwF,OAAO,CAACC,OAAO,CAACzF,IAAI,CAAC,IAAI,CAAC,CAAC;EACtC;AACJ;AAEA,SAASR,WAAWA,CAAIb,KAAc,EAAEI,GAAW,EAAY;EAC3D,IAAI;IACA;IACA;IACA,OAAO0H,IAAI,CAACC,KAAK,CAAC/H,KAAK,CAACgI,OAAO,CAAC5H,GAAG,CAAE,CAAC;EAC1C,CAAC,CAAC,OAAO6H,CAAC,EAAE;IACR3J,MAAM,CAAC4J,GAAG,CAAC,iCAAiC,EAAE9H,GAAG,EAAU6H,CAAC,CAAEE,OAAO,CAAC;IACtE7J,MAAM,CAAC4J,GAAG,CAASD,CAAC,CAAEG,KAAK,CAAC;EAChC;EACA,OAAO,IAAI;AACf;AAEA,SAASlH,WAAWA,CAAIlB,KAAc,EAAEI,GAAW,EAAEyB,GAAM,EAAQ;EAC/D7B,KAAK,CAACqI,OAAO,CAACjI,GAAG,EAAE0H,IAAI,CAACQ,SAAS,CAACzG,GAAG,CAAC,CAAC;AAC3C","ignoreList":[]}