/*! For license information please see index-ByQHsvE1.js.LICENSE.txt */ const __vite__mapDeps=(e,t=__vite__mapDeps,n=t.f||(t.f=["./index-B4IlN3R9.js","./matrix-sdk-crypto-wasm-DlvlUyhf.js","./polyfill-force-wev_Xmqs.js","./index-BKNzwlAH.js","./polyfill-force-BA4WuRQ3.js"]))=>e.map(e=>n[e]);try{let e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e9bc1e26-15e9-424f-91e1-3bbb394349a2",e._sentryDebugIdIdentifier="sentry-dbid-e9bc1e26-15e9-424f-91e1-3bbb394349a2")}catch{}function Vge(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{}).SENTRY_RELEASE={id:"embedded-v0.16.0"};!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const n of e)if("childList"===n.type)for(const e of n.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();var jot=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ic(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Fot(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){var n=!1;try{n=this instanceof e}catch{}return n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}),n}var vF,yF,lk={exports:{}},l0={};function qge(){if(vF)return l0;vF=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(t,n,r){var i=null;if(void 0!==r&&(i=""+r),void 0!==n.key&&(i=""+n.key),"key"in n)for(var o in r={},n)"key"!==o&&(r[o]=n[o]);else r=n;return n=r.ref,{$$typeof:e,type:t,key:i,ref:void 0!==n?n:null,props:r}}return l0.Fragment=t,l0.jsx=n,l0.jsxs=n,l0}function Gge(){return yF||(yF=1,lk.exports=qge()),lk.exports}var w=Gge();function bF(e,t,n,r,i,o,s){try{var a=e[o](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,i)}function H(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(e){bF(o,r,i,s,a,"next",e)}function a(e){bF(o,r,i,s,a,"throw",e)}s(void 0)})}}function ib(e){return(ib="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Kge(e,t){if("object"!=ib(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=ib(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function zge(e){var t=Kge(e,"string");return"symbol"==ib(t)?t:t+""}function L(e,t,n){return(t=zge(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Wge="l",Yge="rn",Xge={0:"O",1:"l","֭":"֖","֮":"֘","֨":"֙","֤":"֚","᪴":"ۛ","⃛":"ۛ","ؙ":"̓","ࣳ":"̓","̓":"̓","̕":"̓","ُ":"̓","ٝ":"̔","֜":"́","֝":"́","ؘ":"́","݇":"́","́":"́","॔":"́","َ":"́","̀":"̀","॓":"̀","̌":"̆","꙼":"̆","٘":"̆","ٚ":"̆","ͮ":"̆","ۨ":"̆̇","̐":"̆̇","ँ":"̆̇","ঁ":"̆̇","ઁ":"̆̇","ଁ":"̆̇","ఀ":"̆̇","ಁ":"̆̇","ഁ":"̆̇","𑒿":"̆̇","᳐":"̂","̑":"̂","ٛ":"̂","߮":"̂","꛰":"̂","֯":"̊","۟":"̊","៓":"̊","゚":"̊","ْ":"̊","ஂ":"̊","ံ":"̊","ំ":"̊","𑌀":"̊","ํ":"̊","ໍ":"̊","ͦ":"̊","ⷪ":"̊","࣫":"̈","߳":"̈","ً":"̋","ࣰ":"̋","͂":"̃","ٓ":"̃","ׄ":"̇","۬":"̇","݀":"̇","࣪":"̇","݁":"̇","͘":"̇","ֹ":"̇","ֺ":"̇","ׂ":"̇","ׁ":"̇","߭":"̇","ं":"̇","ਂ":"̇","ં":"̇","்":"̇","̷":"̸","᪷":"̨","̢":"̨","ͅ":"̨","᳒":"̄","̅":"̄","ٙ":"̄","߫":"̄","꛱":"̄","᳚":"̎","ٗ":"̒","͗":"͐","ࣿ":"͐","ࣸ":"͐","ऀ":"͒","᳭":"̖","᳜":"̩","ٖ":"̩","᳕":"̫","͇":"̳","ࣹ":"͔","ࣺ":"͕",゛:"゙",゜:"゚","̶":"̵","〬":"̉","ׅ":"̣","࣭":"̣","᳝":"̣","ִ":"̣","ٜ":"̣","़":"̣","়":"̣","਼":"̣","઼":"̣","଼":"̣","𑇊":"̣","𑓃":"̣","𐨺":"̣","࣮":"̤","᳞":"̤","༷":"̥","〭":"̥","̧":"̦","̡":"̦","̹":"̦","᳙":"̭","᳘":"̮","॒":"̱","̠":"̱","ࣱ":"ٌ","ࣨ":"ٌ","ࣥ":"ٌ",ﱞ:"ﹲّ","ࣲ":"ٍ",ﱟ:"ﹴّ",ﳲ:"ﹷّ",ﱠ:"ﹶّ",ﳳ:"ﹹّ",ﱡ:"ﹸّ","ؚ":"ِ","̗":"ِ",ﳴ:"ﹻّ",ﱢ:"ﹺّ",ﱣ:"ﹼٰ","ٟ":"ٕ","̍":"ٰ","݂":"ܼ","ਃ":"ঃ","ః":"ঃ","ಃ":"ঃ","ഃ":"ঃ","ඃ":"ঃ","း":"ঃ","𑓁":"ঃ","់":"่","່":"่","້":"้","໊":"๊","໋":"๋","꙯":"⃩","\u2028":" ","\u2029":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" ",ߺ:"_","﹍":"_","﹎":"_","﹏":"_","‐":"-","‑":"-","‒":"-","–":"-","﹘":"-","۔":"-","⁃":"-","˗":"-","−":"-","➖":"-",Ⲻ:"-","⨩":"-̓","⸚":"-̈","﬩":"-̇","∸":"-̇","⨪":"-̣","꓾":"-.","~":"〜","؍":",","٫":",","‚":",","¸":",",ꓹ:",","⸲":"،","٬":"،",";":";","⸵":"؛","ः":":","ઃ":":",":":":","։":":","܃":":","܄":":","᛬":":","︰":":","᠃":":","᠉":":","⁚":":","׃":":","˸":":","꞉":":","∶":":",ː:":",ꓽ:":","⩴":"::=","⧴":":→","!":"!",ǃ:"!",ⵑ:"!","‼":"!!","⁉":"!?",ʔ:"?",Ɂ:"?",ॽ:"?",Ꭾ:"?",ꛫ:"?","⁈":"?!","⁇":"??","⸮":"؟","𝅭":".","․":".","܁":".","܂":".","꘎":".","𐩐":".","٠":".","۰":".",ꓸ:".",ꓻ:".,","‥":"..",ꓺ:"..","…":"...","꛴":"꛳꛳","・":"·","・":"·","᛫":"·","·":"·","⸱":"·","𐄁":"·","•":"·","‧":"·","∙":"·","⋅":"·",ꞏ:"·",ᐧ:"·","⋯":"···",ⵈ:"···",ᑄ:"·<","⋗":"·>",ᐷ:"·>",ᑀ:"·>",ᔯ:"·4",ᑾ:"·b",ᒀ:"·ḃ",ᑺ:"·d",ᒘ:"·J",ᒶ:"·L",ᑶ:"·P",ᑗ:"·U",ᐺ:"·V",ᐼ:"·Ʌ",ᒮ:"·Γ",ᐎ:"·Δ",ᑙ:"·Ո",ᐌ:"·ᐁ",ᐐ:"·ᐄ",ᐒ:"·ᐅ",ᐔ:"·ᐆ",ᐗ:"·ᐊ",ᐙ:"·ᐋ",ᐾ:"·ᐲ",ᑂ:"·ᐴ",ᑆ:"·ᐹ",ᑛ:"·ᑏ",ᑔ:"·ᑐ",ᑝ:"·ᑐ",ᑟ:"·ᑑ",ᑡ:"·ᑕ",ᑣ:"·ᑖ",ᑴ:"·ᑫ",ᑸ:"·ᑮ",ᑼ:"·ᑰ",ᒒ:"·ᒉ",ᒔ:"·ᒋ",ᒖ:"·ᒌ",ᒚ:"·ᒎ",ᒜ:"·ᒐ",ᒞ:"·ᒑ",ᒬ:"·ᒣ",ᒰ:"·ᒦ",ᒲ:"·ᒧ",ᒴ:"·ᒨ",ᒸ:"·ᒫ",ᓉ:"·ᓀ",ᣆ:"·ᓂ",ᣈ:"·ᓃ",ᣊ:"·ᓄ",ᣌ:"·ᓅ",ᓋ:"·ᓇ",ᓍ:"·ᓈ",ᓜ:"·ᓓ",ᓞ:"·ᓕ",ᓠ:"·ᓖ",ᓢ:"·ᓗ",ᓤ:"·ᓘ",ᓦ:"·ᓚ",ᓨ:"·ᓛ",ᓶ:"·ᓭ",ᓸ:"·ᓯ",ᓺ:"·ᓰ",ᓼ:"·ᓱ",ᓾ:"·ᓲ",ᔀ:"·ᓴ",ᔂ:"·ᓵ",ᔗ:"·ᔐ",ᔙ:"·ᔑ",ᔛ:"·ᔒ",ᔝ:"·ᔓ",ᔟ:"·ᔔ",ᔡ:"·ᔕ",ᔣ:"·ᔖ",ᔱ:"·ᔨ",ᔳ:"·ᔩ",ᔵ:"·ᔪ",ᔷ:"·ᔫ",ᔹ:"·ᔭ",ᔻ:"·ᔮ",ᣎ:"·ᕃ",ᣏ:"·ᕆ",ᣐ:"·ᕇ",ᣑ:"·ᕈ",ᣒ:"·ᕉ",ᣓ:"·ᕋ",ᕎ:"·ᕌ",ᕛ:"·ᕚ",ᕨ:"·ᕧ",ᢳ:"·ᢱ",ᢶ:"·ᢴ",ᢹ:"·ᢸ",ᣂ:"·ᣀ","꠰":"।","॥":"।।","᰼":"᰻᰻","။":"၊၊","᪩":"᪨᪨","᪫":"᪪᪨","᭟":"᭞᭞","𐩗":"𐩖𐩖","𑑌":"𑑋𑑋","𑙂":"𑙁𑙁","𑱂":"𑱁𑱁","᱿":"᱾᱾","՝":"'","'":"'","‘":"'","’":"'","‛":"'","′":"'","‵":"'","՚":"'","׳":"'","`":"'","`":"'","`":"'","´":"'","΄":"'","´":"'","᾽":"'","᾿":"'","῾":"'",ʹ:"'",ʹ:"'",ˈ:"'",ˊ:"'",ˋ:"'","˴":"'",ʻ:"'",ʽ:"'",ʼ:"'",ʾ:"'",ꞌ:"'",י:"'",ߴ:"'",ߵ:"'",ᑊ:"'",ᛌ:"'","𖽑":"'","𖽒":"'","᳓":"''",'"':"''",""":"''","“":"''","”":"''","‟":"''","″":"''","‶":"''","〃":"''","״":"''","˝":"''",ʺ:"''","˶":"''",ˮ:"''",ײ:"''","‴":"'''","‷":"'''","⁗":"''''",Ɓ:"'B",Ɗ:"'D",ʼn:"'n",Ƥ:"'P",Ƭ:"'T",Ƴ:"'Y","[":"(","❨":"(","❲":"(","〔":"(","﴾":"(","⸨":"((","㈠":"(ー)","⑵":"(2)","⒇":"(2O)","⑶":"(3)","⑷":"(4)","⑸":"(5)","⑹":"(6)","⑺":"(7)","⑻":"(8)","⑼":"(9)","⒜":"(a)","🄐":"(A)","⒝":"(b)","🄑":"(B)","⒞":"(c)","🄒":"(C)","⒟":"(d)","🄓":"(D)","⒠":"(e)","🄔":"(E)","⒡":"(f)","🄕":"(F)","⒢":"(g)","🄖":"(G)","⒣":"(h)","🄗":"(H)","⒤":"(i)","⒥":"(j)","🄙":"(J)","⒦":"(k)","🄚":"(K)","⑴":"(l)","🄘":"(l)","⒧":"(l)","🄛":"(L)","⑿":"(l2)","⒀":"(l3)","⒁":"(l4)","⒂":"(l5)","⒃":"(l6)","⒄":"(l7)","⒅":"(l8)","⒆":"(l9)","⑾":"(ll)","⑽":"(lO)","🄜":"(M)","⒩":"(n)","🄝":"(N)","⒪":"(o)","🄞":"(O)","⒫":"(p)","🄟":"(P)","⒬":"(q)","🄠":"(Q)","⒭":"(r)","🄡":"(R)","⒨":"(rn)","⒮":"(s)","🄢":"(S)","🄪":"(S)","⒯":"(t)","🄣":"(T)","⒰":"(u)","🄤":"(U)","⒱":"(v)","🄥":"(V)","⒲":"(w)","🄦":"(W)","⒳":"(x)","🄧":"(X)","⒴":"(y)","🄨":"(Y)","⒵":"(z)","🄩":"(Z)","㈀":"(ᄀ)","㈎":"(가)","㈁":"(ᄂ)","㈏":"(나)","㈂":"(ᄃ)","㈐":"(다)","㈃":"(ᄅ)","㈑":"(라)","㈄":"(ᄆ)","㈒":"(마)","㈅":"(ᄇ)","㈓":"(바)","㈆":"(ᄉ)","㈔":"(사)","㈇":"(ᄋ)","㈕":"(아)","㈝":"(오전)","㈞":"(오후)","㈈":"(ᄌ)","㈖":"(자)","㈜":"(주)","㈉":"(ᄎ)","㈗":"(차)","㈊":"(ᄏ)","㈘":"(카)","㈋":"(ᄐ)","㈙":"(타)","㈌":"(ᄑ)","㈚":"(파)","㈍":"(ᄒ)","㈛":"(하)","㈦":"(七)","㈢":"(三)","🉁":"(三)","㈨":"(九)","㈡":"(二)","🉂":"(二)","㈤":"(五)","㈹":"(代)","㈽":"(企)","㉁":"(休)","㈧":"(八)","㈥":"(六)","㈸":"(労)","🉇":"(勝)","㈩":"(十)","㈿":"(協)","㈴":"(名)","㈺":"(呼)","㈣":"(四)","㈯":"(土)","㈻":"(学)","🉃":"(安)","🉅":"(打)","🉈":"(敗)","㈰":"(日)","㈪":"(月)","㈲":"(有)","㈭":"(木)","🉀":"(本)","㈱":"(株)","㈬":"(水)","㈫":"(火)","🉄":"(点)","㈵":"(特)","🉆":"(盗)","㈼":"(監)","㈳":"(社)","㈷":"(祝)","㉀":"(祭)","㉂":"(自)","㉃":"(至)","㈶":"(財)","㈾":"(資)","㈮":"(金)","]":")","❩":")","❳":")","〕":")","﴿":")","⸩":"))","❴":"{","𝄔":"{","❵":"}","〚":"⟦","〛":"⟧","⟨":"❬","〈":"❬","〈":"❬","㇛":"❬",く:"❬",𡿨:"❬","⟩":"❭","〉":"❭","〉":"❭","^":"︿","⸿":"¶","⁎":"*","٭":"*","∗":"*",𐌟:"*","᜵":"/","⁁":"/","∕":"/","⁄":"/","╱":"/","⟋":"/","⧸":"/","𝈺":"/","㇓":"/",〳:"/",Ⳇ:"/",ノ:"/",丿:"/","⼃":"/","⧶":"/̄","⫽":"//","⫻":"///","\":"\\","﹨":"\\","∖":"\\","⟍":"\\","⧵":"\\","⧹":"\\","𝈏":"\\","𝈻":"\\","㇔":"\\",丶:"\\","⼂":"\\","⳹":"\\\\","⑊":"\\\\","⟈":"\\ᑕ",ꝸ:"&","૰":"॰","𑂻":"॰","𑇇":"॰","⚬":"॰","𑇛":"꣼","៙":"๏","៕":"๚","៚":"๛","༌":"་","༎":"།།","˄":"^",ˆ:"^","꙾":"ˇ","˘":"ˇ","‾":"ˉ","﹉":"ˉ","﹊":"ˉ","﹋":"ˉ","﹌":"ˉ","¯":"ˉ"," ̄":"ˉ","▔":"ˉ",ъ:"ˉb",ꙑ:"ˉbi","͵":"ˏ","˻":"˪","꜖":"˪","꜔":"˫","。":"˳","⸰":"°","˚":"°","∘":"°","○":"°","◦":"°","⍜":"°̲","⍤":"°̈","℃":"°C","℉":"°F","௵":"௳","༛":"༚༚","༟":"༚༝","࿎":"༝༚","༞":"༝༝","Ⓒ":"©","Ⓡ":"®","Ⓟ":"℗","𝈛":"⅄","⯬":"↞","⯭":"↟","⯮":"↠","⯯":"↡","↵":"↲","⥥":"⇃⇂","⥯":"⇃ᛚ","𝛛":"∂","𝜕":"∂","𝝏":"∂","𝞉":"∂","𝟃":"∂","𞣌":"∂","𞣍":"∂̵",ð:"∂̵","⌀":"∅","𝛁":"∇","𝛻":"∇","𝜵":"∇","𝝯":"∇","𝞩":"∇",𑢨:"∇","⍢":"∇̈","⍫":"∇̴","█":"∎","■":"∎","⨿":"∐","᛭":"+","➕":"+",𐊛:"+","⨣":"+̂","⨢":"+̊","⨤":"+̃","∔":"+̇","⨥":"+̣","⨦":"+̰","⨧":"+₂","➗":"÷","‹":"<","❮":"<","˂":"<","𝈶":"<",ᐸ:"<",ᚲ:"<","⋖":"<·",Ⲵ:"<·",ᑅ:"<·","≪":"<<","⋘":"<<<","᐀":"=","⹀":"=","゠":"=","꓿":"=","≚":"=̆","≙":"=̂","≗":"=̊","≐":"=̇","≑":"=̣̇","⩮":"=⃰","⩵":"==","⩶":"===","≞":"=ͫ","›":">","❯":">","˃":">","𝈷":">",ᐳ:">",𖼿:">",ᑁ:">·","⪥":"><","≫":">>","⨠":">>","⋙":">>>","⁓":"~","˜":"~","῀":"~","∼":"~","⍨":"~̈","⸞":"~̇","⩪":"~̇","⸟":"~̣","𞣈":"∠","⋀":"∧","∯":"∮∮","∰":"∮∮∮","⸫":"∴","⸪":"∵","⸬":"∷","𑇞":"≈","♎":"≏","🝞":"≏","≣":"≡","⨃":"⊍","⨄":"⊎","𝈸":"⊏","𝈹":"⊐","⨅":"⊓","⨆":"⊔","⨂":"⊗","⍟":"⊛","🝱":"⊠","🝕":"⊡","◁":"⊲","▷":"⊳","⍣":"⋆̈","︴":"⌇","◠":"⌒","⨽":"⌙","⌥":"⌤","⧇":"⌻","◎":"⌾","⦾":"⌾","⧅":"⍂","⦰":"⍉","⏃":"⍋","⏂":"⍎","⏁":"⍕","⏆":"⍭","☸":"⎈","︵":"⏜","︶":"⏝","︷":"⏞","︸":"⏟","︹":"⏠","︺":"⏡","▱":"⏥","⏼":"⏻","︱":"│","|":"│","┃":"│","┏":"┌","┣":"├","▐":"▌","▗":"▖","▝":"▘","☐":"□","■":"▪","▸":"▶","►":"▶","⳩":"☧","🜊":"☩","🌒":"☽","🌙":"☽","⏾":"☾","🌘":"☾","⧙":"⦚","🜺":"⧟","⨾":"⨟","𐆠":"⳨","♩":"𝅘𝅥","♪":"𝅘𝅥𝅮","⓪":"🄍","↺":"🄎","˙":"ॱ",ൎ:"ॱ","-":"ー","—":"ー","―":"ー","─":"ー","━":"ー","㇐":"ー",ꟷ:"ー",ᅳ:"ー",ㅡ:"ー",一:"ー","⼀":"ー",ᆖ:"ーー",ힹ:"ーᅡ",ힺ:"ーᅥ",ힻ:"ーᅥ丨",ힼ:"ーᅩ",ᆕ:"ーᅮ",ᅴ:"ー丨",ㅢ:"ー丨",ᆗ:"ー丨ᅮ","🄏":"$⃠","₤":"£","〒":"₸","〶":"₸","᭜":"᭐","꧆":"꧐","𑓑":"১","೧":"౧",ၥ:"၁","①":"➀","⑩":"➉","⏨":"₁₀","𝟐":"2","𝟚":"2","𝟤":"2","𝟮":"2","𝟸":"2","🯲":"2",Ꝛ:"2",Ƨ:"2",Ϩ:"2",Ꙅ:"2",ᒿ:"2",ꛯ:"2",ꧏ:"٢","۲":"٢","૨":"२","𑓒":"২","೨":"౨","②":"➁",ƻ:"2̵","🄃":"2,","⒉":"2.","㏵":"22日","㍮":"22点","㏶":"23日","㍯":"23点","㏷":"24日","㍰":"24点","㏸":"25日","㏹":"26日","㏺":"27日","㏻":"28日","㏼":"29日","㏴":"2l日","㍭":"2l点","⒛":"2O.","㏳":"2O日","㍬":"2O点","෩":"෨ා","෯":"෨ී","㏡":"2日","㋁":"2月","㍚":"2点","𝈆":"3","𝟑":"3","𝟛":"3","𝟥":"3","𝟯":"3","𝟹":"3","🯳":"3",Ɜ:"3",Ȝ:"3",Ʒ:"3",Ꝫ:"3",Ⳍ:"3",З:"3",Ӡ:"3",𖼻:"3",𑣊:"3","۳":"٣","𞣉":"٣","૩":"३","③":"➂",Ҙ:"3̦","🄄":"3,","⒊":"3.","㏾":"3l日","㏽":"3O日","㏢":"3日","㋂":"3月","㍛":"3点","𝟒":"4","𝟜":"4","𝟦":"4","𝟰":"4","𝟺":"4","🯴":"4",Ꮞ:"4",𑢯:"4","۴":"٤","૪":"४","④":"➃","🄅":"4,","⒋":"4.",ᔰ:"4·","㏣":"4日","㋃":"4月","㍜":"4点","𝟓":"5","𝟝":"5","𝟧":"5","𝟱":"5","𝟻":"5","🯵":"5",Ƽ:"5",𑢻:"5","⑤":"➄","🄆":"5,","⒌":"5.","㏤":"5日","㋄":"5月","㍝":"5点","𝟔":"6","𝟞":"6","𝟨":"6","𝟲":"6","𝟼":"6","🯶":"6",Ⳓ:"6",б:"6",Ꮾ:"6",𑣕:"6","۶":"٦","𑓖":"৬","⑥":"➅","🄇":"6,","⒍":"6.","㏥":"6日","㋅":"6月","㍞":"6点","𝈒":"7","𝟕":"7","𝟟":"7","𝟩":"7","𝟳":"7","𝟽":"7","🯷":"7","𐓒":"7",𑣆:"7","⑦":"➆","🄈":"7,","⒎":"7.","㏦":"7日","㋆":"7月","㍟":"7点","ଃ":"8","৪":"8","੪":"8","𞣋":"8","𝟖":"8","𝟠":"8","𝟪":"8","𝟴":"8","𝟾":"8","🯸":"8",ȣ:"8",Ȣ:"8",𐌚:"8","૮":"८","⑧":"➇","🄉":"8,","⒏":"8.","㏧":"8日","㋇":"8月","㍠":"8点","੧":"9","୨":"9","৭":"9","൭":"9","𝟗":"9","𝟡":"9","𝟫":"9","𝟵":"9","𝟿":"9","🯹":"9",Ꝯ:"9",Ⳋ:"9",𑣌:"9",𑢬:"9",𑣖:"9","१":"٩","𑣤":"٩","۹":"٩","೯":"౯","⑨":"➈","🄊":"9,","⒐":"9.","㏨":"9日","㋈":"9月","㍡":"9点","⍺":"a",a:"a",𝐚:"a",𝑎:"a",𝒂:"a",𝒶:"a",𝓪:"a",𝔞:"a",𝕒:"a",𝖆:"a",𝖺:"a",𝗮:"a",𝘢:"a",𝙖:"a",𝚊:"a",ɑ:"a",α:"a",𝛂:"a",𝛼:"a",𝜶:"a",𝝰:"a",𝞪:"a",а:"a","ⷶ":"ͣ",A:"A",𝐀:"A",𝐴:"A",𝑨:"A",𝒜:"A",𝓐:"A",𝔄:"A",𝔸:"A",𝕬:"A",𝖠:"A",𝗔:"A",𝘈:"A",𝘼:"A",𝙰:"A",Α:"A",𝚨:"A",𝛢:"A",𝜜:"A",𝝖:"A",𝞐:"A",А:"A",Ꭺ:"A",ᗅ:"A",ꓮ:"A",𖽀:"A",𐊠:"A","⍶":"a̲",ǎ:"ă",Ǎ:"Ă",ȧ:"å",Ȧ:"Å",ẚ:"ả","℀":"a/c","℁":"a/s",ꜳ:"aa",Ꜳ:"AA",æ:"ae",ӕ:"ae",Æ:"AE",Ӕ:"AE",ꜵ:"ao",Ꜵ:"AO","🜇":"AR",ꜷ:"au",Ꜷ:"AU",ꜹ:"av",ꜻ:"av",Ꜹ:"AV",Ꜻ:"AV",ꜽ:"ay",Ꜽ:"AY",ꭺ:"ᴀ","∀":"Ɐ","𝈗":"Ɐ",ᗄ:"Ɐ",ꓯ:"Ɐ",𐐟:"Ɒ",𝐛:"b",𝑏:"b",𝒃:"b",𝒷:"b",𝓫:"b",𝔟:"b",𝕓:"b",𝖇:"b",𝖻:"b",𝗯:"b",𝘣:"b",𝙗:"b",𝚋:"b",Ƅ:"b",Ь:"b",Ꮟ:"b",ᑲ:"b",ᖯ:"b",B:"B",ℬ:"B",𝐁:"B",𝐵:"B",𝑩:"B",𝓑:"B",𝔅:"B",𝔹:"B",𝕭:"B",𝖡:"B",𝗕:"B",𝘉:"B",𝘽:"B",𝙱:"B",Ꞵ:"B",Β:"B",𝚩:"B",𝛣:"B",𝜝:"B",𝝗:"B",𝞑:"B",В:"B",Ᏼ:"B",ᗷ:"B",ꓐ:"B",𐊂:"B",𐊡:"B",𐌁:"B",ɓ:"b̔",ᑳ:"ḃ",ƃ:"b̄",Ƃ:"b̄",Б:"b̄",ƀ:"b̵",ҍ:"b̵",Ҍ:"b̵",ѣ:"b̵",Ѣ:"b̵",ᑿ:"b·",ᒁ:"ḃ·",ᒈ:"b'",Ы:"bl",в:"ʙ",ᏼ:"ʙ",c:"c",ⅽ:"c",𝐜:"c",𝑐:"c",𝒄:"c",𝒸:"c",𝓬:"c",𝔠:"c",𝕔:"c",𝖈:"c",𝖼:"c",𝗰:"c",𝘤:"c",𝙘:"c",𝚌:"c",ᴄ:"c",ϲ:"c",ⲥ:"c",с:"c",ꮯ:"c",𐐽:"c","ⷭ":"ͨ","🝌":"C","𑣲":"C","𑣩":"C",C:"C",Ⅽ:"C",ℂ:"C",ℭ:"C",𝐂:"C",𝐶:"C",𝑪:"C",𝒞:"C",𝓒:"C",𝕮:"C",𝖢:"C",𝗖:"C",𝘊:"C",𝘾:"C",𝙲:"C",Ϲ:"C",Ⲥ:"C",С:"C",Ꮯ:"C",ꓚ:"C",𐊢:"C",𐌂:"C",𐐕:"C",𐔜:"C","¢":"c̸",ȼ:"c̸","₡":"C⃫","🅮":"C⃠",ç:"c̦",ҫ:"c̦",Ç:"C̦",Ҫ:"C̦",Ƈ:"C'","℅":"c/o","℆":"c/u","🅭":"㏄\t⃝","⋴":"ꞓ",ɛ:"ꞓ",ε:"ꞓ",ϵ:"ꞓ",𝛆:"ꞓ",𝛜:"ꞓ",𝜀:"ꞓ",𝜖:"ꞓ",𝜺:"ꞓ",𝝐:"ꞓ",𝝴:"ꞓ",𝞊:"ꞓ",𝞮:"ꞓ",𝟄:"ꞓ",ⲉ:"ꞓ",є:"ꞓ",ԑ:"ꞓ",ꮛ:"ꞓ",𑣎:"ꞓ",𐐩:"ꞓ","€":"Ꞓ",Ⲉ:"Ꞓ",Є:"Ꞓ","⍷":"ꞓ̲",ͽ:"ꜿ",Ͽ:"Ꜿ",ⅾ:"d",ⅆ:"d",𝐝:"d",𝑑:"d",𝒅:"d",𝒹:"d",𝓭:"d",𝔡:"d",𝕕:"d",𝖉:"d",𝖽:"d",𝗱:"d",𝘥:"d",𝙙:"d",𝚍:"d",ԁ:"d",Ꮷ:"d",ᑯ:"d",ꓒ:"d",Ⅾ:"D",ⅅ:"D",𝐃:"D",𝐷:"D",𝑫:"D",𝒟:"D",𝓓:"D",𝔇:"D",𝔻:"D",𝕯:"D",𝖣:"D",𝗗:"D",𝘋:"D",𝘿:"D",𝙳:"D",Ꭰ:"D",ᗞ:"D",ᗪ:"D",ꓓ:"D",ɗ:"d̔",ɖ:"d̨",ƌ:"d̄",đ:"d̵",Đ:"D̵",Ð:"D̵",Ɖ:"D̵","₫":"ḏ̵",ꝺ:"Ꝺ",ᑻ:"d·",ᒇ:"d'",ʤ:"dȝ",dz:"dz",ʣ:"dz",Dz:"Dz",DZ:"DZ",dž:"dž",Dž:"Dž",DŽ:"DŽ",ʥ:"dʑ",ꭰ:"ᴅ","⸹":"ẟ",δ:"ẟ",𝛅:"ẟ",𝛿:"ẟ",𝜹:"ẟ",𝝳:"ẟ",𝞭:"ẟ",ծ:"ẟ",ᕷ:"ẟ",℮:"e",e:"e",ℯ:"e",ⅇ:"e",𝐞:"e",𝑒:"e",𝒆:"e",𝓮:"e",𝔢:"e",𝕖:"e",𝖊:"e",𝖾:"e",𝗲:"e",𝘦:"e",𝙚:"e",𝚎:"e",ꬲ:"e",е:"e",ҽ:"e","ⷷ":"ͤ","⋿":"E",E:"E",ℰ:"E",𝐄:"E",𝐸:"E",𝑬:"E",𝓔:"E",𝔈:"E",𝔼:"E",𝕰:"E",𝖤:"E",𝗘:"E",𝘌:"E",𝙀:"E",𝙴:"E",Ε:"E",𝚬:"E",𝛦:"E",𝜠:"E",𝝚:"E",𝞔:"E",Е:"E",ⴹ:"E",Ꭼ:"E",ꓰ:"E",𑢦:"E",𑢮:"E",𐊆:"E",ě:"ĕ",Ě:"Ĕ",ɇ:"e̸",Ɇ:"E̸",ҿ:"ę",ꭼ:"ᴇ",ə:"ǝ",ә:"ǝ","∃":"Ǝ",ⴺ:"Ǝ",ꓱ:"Ǝ",ɚ:"ǝ˞",ᴔ:"ǝo",ꭁ:"ǝo̸",ꭂ:"ǝo̵",Ә:"Ə","𝈡":"Ɛ",ℇ:"Ɛ",Ԑ:"Ɛ",Ꮛ:"Ɛ",𖼭:"Ɛ",𐐁:"Ɛ",ᶟ:"ᵋ",ᴈ:"ɜ",з:"ɜ",ҙ:"ɜ̦",𐑂:"ɞ",ꞝ:"ʚ",𐐪:"ʚ",𝐟:"f",𝑓:"f",𝒇:"f",𝒻:"f",𝓯:"f",𝔣:"f",𝕗:"f",𝖋:"f",𝖿:"f",𝗳:"f",𝘧:"f",𝙛:"f",𝚏:"f",ꬵ:"f",ꞙ:"f",ſ:"f",ẝ:"f",ք:"f","𝈓":"F",ℱ:"F",𝐅:"F",𝐹:"F",𝑭:"F",𝓕:"F",𝔉:"F",𝔽:"F",𝕱:"F",𝖥:"F",𝗙:"F",𝘍:"F",𝙁:"F",𝙵:"F",Ꞙ:"F",Ϝ:"F",𝟊:"F",ᖴ:"F",ꓝ:"F",𑣂:"F",𑢢:"F",𐊇:"F",𐊥:"F",𐔥:"F",ƒ:"f̦",Ƒ:"F̦",ᵮ:"f̴","℻":"FAX",ff:"ff",ffi:"ffi",ffl:"ffl",fi:"fi",fl:"fl",ʩ:"fŋ",ᖵ:"Ⅎ",ꓞ:"Ⅎ","𝈰":"ꟻ",ᖷ:"ꟻ",g:"g",ℊ:"g",𝐠:"g",𝑔:"g",𝒈:"g",𝓰:"g",𝔤:"g",𝕘:"g",𝖌:"g",𝗀:"g",𝗴:"g",𝘨:"g",𝙜:"g",𝚐:"g",ɡ:"g",ᶃ:"g",ƍ:"g",ց:"g",𝐆:"G",𝐺:"G",𝑮:"G",𝒢:"G",𝓖:"G",𝔊:"G",𝔾:"G",𝕲:"G",𝖦:"G",𝗚:"G",𝘎:"G",𝙂:"G",𝙶:"G",Ԍ:"G",Ꮐ:"G",Ᏻ:"G",ꓖ:"G",ᶢ:"ᵍ",ɠ:"g̔",ǧ:"ğ",Ǧ:"Ğ",ǵ:"ģ",ǥ:"g̵",Ǥ:"G̵",Ɠ:"G'",ԍ:"ɢ",ꮐ:"ɢ",ᏻ:"ɢ",h:"h",ℎ:"h",𝐡:"h",𝒉:"h",𝒽:"h",𝓱:"h",𝔥:"h",𝕙:"h",𝖍:"h",𝗁:"h",𝗵:"h",𝘩:"h",𝙝:"h",𝚑:"h",һ:"h",հ:"h",Ꮒ:"h",H:"H",ℋ:"H",ℌ:"H",ℍ:"H",𝐇:"H",𝐻:"H",𝑯:"H",𝓗:"H",𝕳:"H",𝖧:"H",𝗛:"H",𝘏:"H",𝙃:"H",𝙷:"H",Η:"H",𝚮:"H",𝛨:"H",𝜢:"H",𝝜:"H",𝞖:"H",Ⲏ:"H",Н:"H",Ꮋ:"H",ᕼ:"H",ꓧ:"H",𐋏:"H",ᵸ:"ᴴ",ɦ:"h̔",ꚕ:"h̔",Ᏺ:"h̔",Ⱨ:"H̩",Ң:"H̩",ħ:"h̵",ℏ:"h̵",ћ:"h̵",Ħ:"H̵",Ӊ:"H̦",Ӈ:"H̦",н:"ʜ",ꮋ:"ʜ",ң:"ʜ̩",ӊ:"ʜ̦",ӈ:"ʜ̦",Ԋ:"Ƕ",ꮀ:"ⱶ",Ͱ:"Ⱶ",Ꭸ:"Ⱶ",Ꮀ:"Ⱶ",ꚱ:"Ⱶ",ꞕ:"ꜧ","˛":"i","⍳":"i",i:"i",ⅰ:"i",ℹ:"i",ⅈ:"i",𝐢:"i",𝑖:"i",𝒊:"i",𝒾:"i",𝓲:"i",𝔦:"i",𝕚:"i",𝖎:"i",𝗂:"i",𝗶:"i",𝘪:"i",𝙞:"i",𝚒:"i",ı:"i",𝚤:"i",ɪ:"i",ɩ:"i",ι:"i",ι:"i",ͺ:"i",𝛊:"i",𝜄:"i",𝜾:"i",𝝸:"i",𝞲:"i",і:"i",ꙇ:"i",ӏ:"i",ꭵ:"i",Ꭵ:"i",𑣃:"i","ⓛ":"Ⓘ","⍸":"i̲",ǐ:"ĭ",Ǐ:"Ĭ",ɨ:"i̵",ᵻ:"i̵",ᵼ:"i̵",ⅱ:"ii",ⅲ:"iii",ij:"ij",ⅳ:"iv",ⅸ:"ix",j:"j",ⅉ:"j",𝐣:"j",𝑗:"j",𝒋:"j",𝒿:"j",𝓳:"j",𝔧:"j",𝕛:"j",𝖏:"j",𝗃:"j",𝗷:"j",𝘫:"j",𝙟:"j",𝚓:"j",ϳ:"j",ј:"j",J:"J",𝐉:"J",𝐽:"J",𝑱:"J",𝒥:"J",𝓙:"J",𝔍:"J",𝕁:"J",𝕵:"J",𝖩:"J",𝗝:"J",𝘑:"J",𝙅:"J",𝙹:"J",Ʝ:"J",Ϳ:"J",Ј:"J",Ꭻ:"J",ᒍ:"J",ꓙ:"J",ɉ:"j̵",Ɉ:"J̵",ᒙ:"J·",𝚥:"ȷ",յ:"ȷ",ꭻ:"ᴊ",𝐤:"k",𝑘:"k",𝒌:"k",𝓀:"k",𝓴:"k",𝔨:"k",𝕜:"k",𝖐:"k",𝗄:"k",𝗸:"k",𝘬:"k",𝙠:"k",𝚔:"k",K:"K",K:"K",𝐊:"K",𝐾:"K",𝑲:"K",𝒦:"K",𝓚:"K",𝔎:"K",𝕂:"K",𝕶:"K",𝖪:"K",𝗞:"K",𝘒:"K",𝙆:"K",𝙺:"K",Κ:"K",𝚱:"K",𝛫:"K",𝜥:"K",𝝟:"K",𝞙:"K",Ⲕ:"K",К:"K",Ꮶ:"K",ᛕ:"K",ꓗ:"K",𐔘:"K",ƙ:"k̔",Ⱪ:"K̩",Қ:"K̩","₭":"K̵",Ꝁ:"K̵",Ҟ:"K̵",Ƙ:"K'","׀":"l","|":"l","∣":"l","⏽":"l","│":"l","١":"l","۱":"l","𐌠":"l","𞣇":"l","𝟏":"l","𝟙":"l","𝟣":"l","𝟭":"l","𝟷":"l","🯱":"l",I:"l",I:"l",Ⅰ:"l",ℐ:"l",ℑ:"l",𝐈:"l",𝐼:"l",𝑰:"l",𝓘:"l",𝕀:"l",𝕴:"l",𝖨:"l",𝗜:"l",𝘐:"l",𝙄:"l",𝙸:"l",Ɩ:"l",l:"l",ⅼ:"l",ℓ:"l",𝐥:"l",𝑙:"l",𝒍:"l",𝓁:"l",𝓵:"l",𝔩:"l",𝕝:"l",𝖑:"l",𝗅:"l",𝗹:"l",𝘭:"l",𝙡:"l",𝚕:"l",ǀ:"l",Ι:"l",𝚰:"l",𝛪:"l",𝜤:"l",𝝞:"l",𝞘:"l",Ⲓ:"l",І:"l",Ӏ:"l",ו:"l",ן:"l",ا:"l",𞸀:"l",𞺀:"l",ﺎ:"l",ﺍ:"l",ߊ:"l",ⵏ:"l",ᛁ:"l",ꓲ:"l",𖼨:"l",𐊊:"l",𐌉:"l","𝈪":"L",Ⅼ:"L",ℒ:"L",𝐋:"L",𝐿:"L",𝑳:"L",𝓛:"L",𝔏:"L",𝕃:"L",𝕷:"L",𝖫:"L",𝗟:"L",𝘓:"L",𝙇:"L",𝙻:"L",Ⳑ:"L",Ꮮ:"L",ᒪ:"L",ꓡ:"L",𖼖:"L",𑢣:"L",𑢲:"L",𐐛:"L",𐔦:"L",ﴼ:"l̋",ﴽ:"l̋",ł:"l̸",Ł:"L̸",ɭ:"l̨",Ɨ:"l̵",ƚ:"l̵",ɫ:"l̴",إ:"lٕ",ﺈ:"lٕ",ﺇ:"lٕ",ٳ:"lٕ",ŀ:"l·",Ŀ:"l·",ᒷ:"l·","🄂":"l,","⒈":"l.",ױ:"l'","⒓":"l2.","㏫":"l2日","㋋":"l2月","㍤":"l2点","⒔":"l3.","㏬":"l3日","㍥":"l3点","⒕":"l4.","㏭":"l4日","㍦":"l4点","⒖":"l5.","㏮":"l5日","㍧":"l5点","⒗":"l6.","㏯":"l6日","㍨":"l6点","⒘":"l7.","㏰":"l7日","㍩":"l7点","⒙":"l8.","㏱":"l8日","㍪":"l8点","⒚":"l9.","㏲":"l9日","㍫":"l9点",lj:"lj",IJ:"lJ",Lj:"Lj",LJ:"LJ","‖":"ll","∥":"ll",Ⅱ:"ll",ǁ:"ll",װ:"ll","𐆙":"l̵l̵","⒒":"ll.",Ⅲ:"lll","𐆘":"l̵l̵S̵","㏪":"ll日","㋊":"ll月","㍣":"ll点",Ю:"lO","⒑":"lO.","㏩":"lO日","㋉":"lO月","㍢":"lO点",ʪ:"ls","₶":"lt",Ⅳ:"lV",Ⅸ:"lX",ɮ:"lȝ",ʫ:"lz",أ:"lٴ",ﺄ:"lٴ",ﺃ:"lٴ",ٲ:"lٴ",ٵ:"lٴ",ﷳ:"lكبر",ﷲ:"lللّٰo","㏠":"l日","㋀":"l月","㍙":"l点",ⳑ:"ʟ",ꮮ:"ʟ",𐑃:"ʟ",M:"M",Ⅿ:"M",ℳ:"M",𝐌:"M",𝑀:"M",𝑴:"M",𝓜:"M",𝔐:"M",𝕄:"M",𝕸:"M",𝖬:"M",𝗠:"M",𝘔:"M",𝙈:"M",𝙼:"M",Μ:"M",𝚳:"M",𝛭:"M",𝜧:"M",𝝡:"M",𝞛:"M",Ϻ:"M",Ⲙ:"M",М:"M",Ꮇ:"M",ᗰ:"M",ᛖ:"M",ꓟ:"M",𐊰:"M",𐌑:"M",Ӎ:"M̦","🝫":"MB","ⷨ":"ᷟ",𝐧:"n",𝑛:"n",𝒏:"n",𝓃:"n",𝓷:"n",𝔫:"n",𝕟:"n",𝖓:"n",𝗇:"n",𝗻:"n",𝘯:"n",𝙣:"n",𝚗:"n",ո:"n",ռ:"n",N:"N",ℕ:"N",𝐍:"N",𝑁:"N",𝑵:"N",𝒩:"N",𝓝:"N",𝔑:"N",𝕹:"N",𝖭:"N",𝗡:"N",𝘕:"N",𝙉:"N",𝙽:"N",Ν:"N",𝚴:"N",𝛮:"N",𝜨:"N",𝝢:"N",𝞜:"N",Ⲛ:"N",ꓠ:"N",𐔓:"N","𐆎":"N̊",ɳ:"n̨",ƞ:"n̩",η:"n̩",𝛈:"n̩",𝜂:"n̩",𝜼:"n̩",𝝶:"n̩",𝞰:"n̩",Ɲ:"N̦",ᵰ:"n̴",nj:"nj",Nj:"Nj",NJ:"NJ","№":"No",ͷ:"ᴎ",и:"ᴎ",𐑍:"ᴎ",ņ:"ɲ","ం":"o","ಂ":"o","ം":"o","ං":"o","०":"o","੦":"o","૦":"o","௦":"o","౦":"o","೦":"o","൦":"o","๐":"o","໐":"o","၀":"o","٥":"o","۵":"o",o:"o",ℴ:"o",𝐨:"o",𝑜:"o",𝒐:"o",𝓸:"o",𝔬:"o",𝕠:"o",𝖔:"o",𝗈:"o",𝗼:"o",𝘰:"o",𝙤:"o",𝚘:"o",ᴏ:"o",ᴑ:"o",ꬽ:"o",ο:"o",𝛐:"o",𝜊:"o",𝝄:"o",𝝾:"o",𝞸:"o",σ:"o",𝛔:"o",𝜎:"o",𝝈:"o",𝞂:"o",𝞼:"o",ⲟ:"o",о:"o",ჿ:"o",օ:"o",ס:"o",ه:"o",𞸤:"o",𞹤:"o",𞺄:"o",ﻫ:"o",ﻬ:"o",ﻪ:"o",ﻩ:"o",ھ:"o",ﮬ:"o",ﮭ:"o",ﮫ:"o",ﮪ:"o",ہ:"o",ﮨ:"o",ﮩ:"o",ﮧ:"o",ﮦ:"o",ە:"o",ഠ:"o",ဝ:"o","𐓪":"o",𑣈:"o",𑣗:"o",𐐬:"o","߀":"O","০":"O","୦":"O",〇:"O","𑓐":"O","𑣠":"O","𝟎":"O","𝟘":"O","𝟢":"O","𝟬":"O","𝟶":"O","🯰":"O",O:"O",𝐎:"O",𝑂:"O",𝑶:"O",𝒪:"O",𝓞:"O",𝔒:"O",𝕆:"O",𝕺:"O",𝖮:"O",𝗢:"O",𝘖:"O",𝙊:"O",𝙾:"O",Ο:"O",𝚶:"O",𝛰:"O",𝜪:"O",𝝤:"O",𝞞:"O",Ⲟ:"O",О:"O",Օ:"O",ⵔ:"O",ዐ:"O",ଠ:"O","𐓂":"O",ꓳ:"O",𑢵:"O",𐊒:"O",𐊫:"O",𐐄:"O",𐔖:"O","⁰":"º",ᵒ:"º",ǒ:"ŏ",Ǒ:"Ŏ",ۿ:"ô",Ő:"Ö",ø:"o̸",ꬾ:"o̸",Ø:"O̸",ⵁ:"O̸",Ǿ:"Ó̸",ɵ:"o̵",ꝋ:"o̵",ө:"o̵",ѳ:"o̵",ꮎ:"o̵",ꮻ:"o̵","⊖":"O̵","⊝":"O̵","⍬":"O̵","𝈚":"O̵","🜔":"O̵",Ɵ:"O̵",Ꝋ:"O̵",θ:"O̵",ϑ:"O̵",𝛉:"O̵",𝛝:"O̵",𝜃:"O̵",𝜗:"O̵",𝜽:"O̵",𝝑:"O̵",𝝷:"O̵",𝞋:"O̵",𝞱:"O̵",𝟅:"O̵",Θ:"O̵",ϴ:"O̵",𝚯:"O̵",𝚹:"O̵",𝛩:"O̵",𝛳:"O̵",𝜣:"O̵",𝜭:"O̵",𝝝:"O̵",𝝧:"O̵",𝞗:"O̵",𝞡:"O̵",Ө:"O̵",Ѳ:"O̵",ⴱ:"O̵",Ꮎ:"O̵",Ꮻ:"O̵",ꭴ:"ơ",ﳙ:"oٰ","🄁":"O,","🄀":"O.",ơ:"o'",Ơ:"O'",Ꭴ:"O'","%":"º/₀","٪":"º/₀","⁒":"º/₀","‰":"º/₀₀","؉":"º/₀₀","‱":"º/₀₀₀","؊":"º/₀₀₀",œ:"oe",Œ:"OE",ɶ:"oᴇ","∞":"oo",ꝏ:"oo",ꚙ:"oo",Ꝏ:"OO",Ꚙ:"OO",ﳗ:"oج",ﱑ:"oج",ﳘ:"oم",ﱒ:"oم",ﶓ:"oمج",ﶔ:"oمم",ﱓ:"oى",ﱔ:"oى",ൟ:"oരo",တ:"oာ","㍘":"O点",ↄ:"ɔ",ᴐ:"ɔ",ͻ:"ɔ",𐑋:"ɔ",Ↄ:"Ɔ",Ͻ:"Ɔ",ꓛ:"Ɔ",𐐣:"Ɔ",ꬿ:"ɔ̸",ꭢ:"ɔe",𐐿:"ɷ","⍴":"p",p:"p",𝐩:"p",𝑝:"p",𝒑:"p",𝓅:"p",𝓹:"p",𝔭:"p",𝕡:"p",𝖕:"p",𝗉:"p",𝗽:"p",𝘱:"p",𝙥:"p",𝚙:"p",ρ:"p",ϱ:"p",𝛒:"p",𝛠:"p",𝜌:"p",𝜚:"p",𝝆:"p",𝝔:"p",𝞀:"p",𝞎:"p",𝞺:"p",𝟈:"p",ⲣ:"p",р:"p",P:"P",ℙ:"P",𝐏:"P",𝑃:"P",𝑷:"P",𝒫:"P",𝓟:"P",𝔓:"P",𝕻:"P",𝖯:"P",𝗣:"P",𝘗:"P",𝙋:"P",𝙿:"P",Ρ:"P",𝚸:"P",𝛲:"P",𝜬:"P",𝝦:"P",𝞠:"P",Ⲣ:"P",Р:"P",Ꮲ:"P",ᑭ:"P",ꓑ:"P",𐊕:"P",ƥ:"p̔",ᵽ:"p̵",ᑷ:"p·",ᒆ:"P'",ᴩ:"ᴘ",ꮲ:"ᴘ",φ:"ɸ",ϕ:"ɸ",𝛗:"ɸ",𝛟:"ɸ",𝜑:"ɸ",𝜙:"ɸ",𝝋:"ɸ",𝝓:"ɸ",𝞅:"ɸ",𝞍:"ɸ",𝞿:"ɸ",𝟇:"ɸ",ⲫ:"ɸ",ф:"ɸ",𝐪:"q",𝑞:"q",𝒒:"q",𝓆:"q",𝓺:"q",𝔮:"q",𝕢:"q",𝖖:"q",𝗊:"q",𝗾:"q",𝘲:"q",𝙦:"q",𝚚:"q",ԛ:"q",գ:"q",զ:"q",ℚ:"Q",𝐐:"Q",𝑄:"Q",𝑸:"Q",𝒬:"Q",𝓠:"Q",𝔔:"Q",𝕼:"Q",𝖰:"Q",𝗤:"Q",𝘘:"Q",𝙌:"Q",𝚀:"Q",ⵕ:"Q",ʠ:"q̔","🜀":"QE",ᶐ:"ɋ",ᴋ:"ĸ",κ:"ĸ",ϰ:"ĸ",𝛋:"ĸ",𝛞:"ĸ",𝜅:"ĸ",𝜘:"ĸ",𝜿:"ĸ",𝝒:"ĸ",𝝹:"ĸ",𝞌:"ĸ",𝞳:"ĸ",𝟆:"ĸ",ⲕ:"ĸ",к:"ĸ",ꮶ:"ĸ",қ:"ĸ̩",ҟ:"ĸ̵",𝐫:"r",𝑟:"r",𝒓:"r",𝓇:"r",𝓻:"r",𝔯:"r",𝕣:"r",𝖗:"r",𝗋:"r",𝗿:"r",𝘳:"r",𝙧:"r",𝚛:"r",ꭇ:"r",ꭈ:"r",ᴦ:"r",ⲅ:"r",г:"r",ꮁ:"r","𝈖":"R",ℛ:"R",ℜ:"R",ℝ:"R",𝐑:"R",𝑅:"R",𝑹:"R",𝓡:"R",𝕽:"R",𝖱:"R",𝗥:"R",𝘙:"R",𝙍:"R",𝚁:"R",Ʀ:"R",Ꭱ:"R",Ꮢ:"R","𐒴":"R",ᖇ:"R",ꓣ:"R",𖼵:"R",ɽ:"r̨",ɼ:"r̩",ɍ:"r̵",ғ:"r̵",ᵲ:"r̴",ґ:"r'","𑣣":"rn",m:Yge,ⅿ:"rn",𝐦:"rn",𝑚:"rn",𝒎:"rn",𝓂:"rn",𝓶:"rn",𝔪:"rn",𝕞:"rn",𝖒:"rn",𝗆:"rn",𝗺:"rn",𝘮:"rn",𝙢:"rn",𝚖:"rn",𑜀:"rn","₥":"rn̸",ɱ:"rn̦",ᵯ:"rn̴","₨":"Rs",ꭱ:"ʀ",ꮢ:"ʀ",я:"ᴙ",ᵳ:"ɾ̴","℩":"ɿ",s:"s",𝐬:"s",𝑠:"s",𝒔:"s",𝓈:"s",𝓼:"s",𝔰:"s",𝕤:"s",𝖘:"s",𝗌:"s",𝘀:"s",𝘴:"s",𝙨:"s",𝚜:"s",ꜱ:"s",ƽ:"s",ѕ:"s",ꮪ:"s",𑣁:"s",𐑈:"s",S:"S",𝐒:"S",𝑆:"S",𝑺:"S",𝒮:"S",𝓢:"S",𝔖:"S",𝕊:"S",𝕾:"S",𝖲:"S",𝗦:"S",𝘚:"S",𝙎:"S",𝚂:"S",Ѕ:"S",Տ:"S",Ꮥ:"S",Ꮪ:"S",ꓢ:"S",𖼺:"S",𐊖:"S",𐐠:"S",ʂ:"s̨",ᵴ:"s̴",ꞵ:"ß",β:"ß",ϐ:"ß",𝛃:"ß",𝛽:"ß",𝜷:"ß",𝝱:"ß",𝞫:"ß",Ᏸ:"ß","🝜":"sss",st:"st","∫":"ʃ",ꭍ:"ʃ","∑":"Ʃ","⅀":"Ʃ",Σ:"Ʃ",𝚺:"Ʃ",𝛴:"Ʃ",𝜮:"Ʃ",𝝨:"Ʃ",𝞢:"Ʃ",ⵉ:"Ʃ","∬":"ʃʃ","∭":"ʃʃʃ","⨌":"ʃʃʃʃ",𝐭:"t",𝑡:"t",𝒕:"t",𝓉:"t",𝓽:"t",𝔱:"t",𝕥:"t",𝖙:"t",𝗍:"t",𝘁:"t",𝘵:"t",𝙩:"t",𝚝:"t","⊤":"T","⟙":"T","🝨":"T",T:"T",𝐓:"T",𝑇:"T",𝑻:"T",𝒯:"T",𝓣:"T",𝔗:"T",𝕋:"T",𝕿:"T",𝖳:"T",𝗧:"T",𝘛:"T",𝙏:"T",𝚃:"T",Τ:"T",𝚻:"T",𝛵:"T",𝜯:"T",𝝩:"T",𝞣:"T",Ⲧ:"T",Т:"T",Ꭲ:"T",ꓔ:"T",𖼊:"T",𑢼:"T",𐊗:"T",𐊱:"T",𐌕:"T",ƭ:"t̔","⍡":"T̈",Ⱦ:"T̸",Ț:"Ţ",Ʈ:"T̨",Ҭ:"T̩","₮":"T⃫",ŧ:"t̵",Ŧ:"T̵",ᵵ:"t̴",Ⴀ:"Ꞇ",Ꜩ:"T3",ʨ:"tɕ","℡":"TEL",ꝷ:"tf",ʦ:"ts",ʧ:"tʃ",ꜩ:"tȝ",τ:"ᴛ",𝛕:"ᴛ",𝜏:"ᴛ",𝝉:"ᴛ",𝞃:"ᴛ",𝞽:"ᴛ",т:"ᴛ",ꭲ:"ᴛ",ҭ:"ᴛ̩",ţ:"ƫ",ț:"ƫ",Ꮏ:"ƫ",𝐮:"u",𝑢:"u",𝒖:"u",𝓊:"u",𝓾:"u",𝔲:"u",𝕦:"u",𝖚:"u",𝗎:"u",𝘂:"u",𝘶:"u",𝙪:"u",𝚞:"u",ꞟ:"u",ᴜ:"u",ꭎ:"u",ꭒ:"u",ʋ:"u",υ:"u",𝛖:"u",𝜐:"u",𝝊:"u",𝞄:"u",𝞾:"u",ս:"u","𐓶":"u",𑣘:"u","∪":"U","⋃":"U",𝐔:"U",𝑈:"U",𝑼:"U",𝒰:"U",𝓤:"U",𝔘:"U",𝕌:"U",𝖀:"U",𝖴:"U",𝗨:"U",𝘜:"U",𝙐:"U",𝚄:"U",Ս:"U",ሀ:"U","𐓎":"U",ᑌ:"U",ꓴ:"U",𖽂:"U",𑢸:"U",ǔ:"ŭ",Ǔ:"Ŭ",ᵾ:"u̵",ꮜ:"u̵",Ʉ:"U̵",Ꮜ:"U̵",ᑘ:"U·",ᑧ:"U'",ᵫ:"ue",ꭣ:"uo",ṃ:"ꭑ",պ:"ɰ",ሣ:"ɰ","℧":"Ʊ",ᘮ:"Ʊ",ᘴ:"Ʊ",ᵿ:"ʊ̵","∨":"v","⋁":"v",v:"v",ⅴ:"v",𝐯:"v",𝑣:"v",𝒗:"v",𝓋:"v",𝓿:"v",𝔳:"v",𝕧:"v",𝖛:"v",𝗏:"v",𝘃:"v",𝘷:"v",𝙫:"v",𝚟:"v",ᴠ:"v",ν:"v",𝛎:"v",𝜈:"v",𝝂:"v",𝝼:"v",𝞶:"v",ѵ:"v",ט:"v",𑜆:"v",ꮩ:"v",𑣀:"v","𝈍":"V","٧":"V","۷":"V",Ⅴ:"V",𝐕:"V",𝑉:"V",𝑽:"V",𝒱:"V",𝓥:"V",𝔙:"V",𝕍:"V",𝖁:"V",𝖵:"V",𝗩:"V",𝘝:"V",𝙑:"V",𝚅:"V",Ѵ:"V",ⴸ:"V",Ꮩ:"V",ᐯ:"V",ꛟ:"V",ꓦ:"V",𖼈:"V",𑢠:"V",𐔝:"V","𐆗":"V̵",ᐻ:"V·","🝬":"VB",ⅵ:"vi",ⅶ:"vii",ⅷ:"viii",Ⅵ:"Vl",Ⅶ:"Vll",Ⅷ:"Vlll","🜈":"Vᷤ",ᴧ:"ʌ","𐓘":"ʌ","٨":"Ʌ","۸":"Ʌ",Λ:"Ʌ",𝚲:"Ʌ",𝛬:"Ʌ",𝜦:"Ʌ",𝝠:"Ʌ",𝞚:"Ʌ",Л:"Ʌ",ⴷ:"Ʌ","𐒰":"Ʌ",ᐱ:"Ʌ",ꛎ:"Ʌ",ꓥ:"Ʌ",𖼽:"Ʌ",𐊍:"Ʌ",Ӆ:"Ʌ̦",ᐽ:"Ʌ·",ɯ:"w",𝐰:"w",𝑤:"w",𝒘:"w",𝓌:"w",𝔀:"w",𝔴:"w",𝕨:"w",𝖜:"w",𝗐:"w",𝘄:"w",𝘸:"w",𝙬:"w",𝚠:"w",ᴡ:"w",ѡ:"w",ԝ:"w",ա:"w",𑜊:"w",𑜎:"w",𑜏:"w",ꮃ:"w","𑣯":"W","𑣦":"W",𝐖:"W",𝑊:"W",𝑾:"W",𝒲:"W",𝓦:"W",𝔚:"W",𝕎:"W",𝖂:"W",𝖶:"W",𝗪:"W",𝘞:"W",𝙒:"W",𝚆:"W",Ԝ:"W",Ꮃ:"W",Ꮤ:"W",ꓪ:"W",ѽ:"w҆҇",𑓅:"ẇ","₩":"W̵",ꝡ:"w̦",ᴍ:"ʍ",м:"ʍ",ꮇ:"ʍ",ӎ:"ʍ̦","᙮":"x","×":"x","⤫":"x","⤬":"x","⨯":"x",x:"x",ⅹ:"x",𝐱:"x",𝑥:"x",𝒙:"x",𝓍:"x",𝔁:"x",𝔵:"x",𝕩:"x",𝖝:"x",𝗑:"x",𝘅:"x",𝘹:"x",𝙭:"x",𝚡:"x",х:"x",ᕁ:"x",ᕽ:"x","ⷯ":"ͯ","᙭":"X","╳":"X","𐌢":"X","𑣬":"X",X:"X",Ⅹ:"X",𝐗:"X",𝑋:"X",𝑿:"X",𝒳:"X",𝓧:"X",𝔛:"X",𝕏:"X",𝖃:"X",𝖷:"X",𝗫:"X",𝘟:"X",𝙓:"X",𝚇:"X",Ꭓ:"X",Χ:"X",𝚾:"X",𝛸:"X",𝜲:"X",𝝬:"X",𝞦:"X",Ⲭ:"X",Х:"X",ⵝ:"X",ᚷ:"X",ꓫ:"X",𐊐:"X",𐊴:"X",𐌗:"X",𐔧:"X","⨰":"ẋ",Ҳ:"X̩","𐆖":"X̵",ⅺ:"xi",ⅻ:"xii",Ⅺ:"Xl",Ⅻ:"Xll",ɣ:"y",ᶌ:"y",y:"y",𝐲:"y",𝑦:"y",𝒚:"y",𝓎:"y",𝔂:"y",𝔶:"y",𝕪:"y",𝖞:"y",𝗒:"y",𝘆:"y",𝘺:"y",𝙮:"y",𝚢:"y",ʏ:"y",ỿ:"y",ꭚ:"y",γ:"y",ℽ:"y",𝛄:"y",𝛾:"y",𝜸:"y",𝝲:"y",𝞬:"y",у:"y",ү:"y",ყ:"y",𑣜:"y",Y:"Y",𝐘:"Y",𝑌:"Y",𝒀:"Y",𝒴:"Y",𝓨:"Y",𝔜:"Y",𝕐:"Y",𝖄:"Y",𝖸:"Y",𝗬:"Y",𝘠:"Y",𝙔:"Y",𝚈:"Y",Υ:"Y",ϒ:"Y",𝚼:"Y",𝛶:"Y",𝜰:"Y",𝝪:"Y",𝞤:"Y",Ⲩ:"Y",У:"Y",Ү:"Y",Ꭹ:"Y",Ꮍ:"Y",ꓬ:"Y",𖽃:"Y",𑢤:"Y",𐊲:"Y",ƴ:"y̔",ɏ:"y̵",ұ:"y̵","¥":"Y̵",Ɏ:"Y̵",Ұ:"Y̵",ʒ:"ȝ",ꝫ:"ȝ",ⳍ:"ȝ",ӡ:"ȝ",ჳ:"ȝ",𝐳:"z",𝑧:"z",𝒛:"z",𝓏:"z",𝔃:"z",𝔷:"z",𝕫:"z",𝖟:"z",𝗓:"z",𝘇:"z",𝘻:"z",𝙯:"z",𝚣:"z",ᴢ:"z",ꮓ:"z",𑣄:"z","𐋵":"Z","𑣥":"Z",Z:"Z",ℤ:"Z",ℨ:"Z",𝐙:"Z",𝑍:"Z",𝒁:"Z",𝒵:"Z",𝓩:"Z",𝖅:"Z",𝖹:"Z",𝗭:"Z",𝘡:"Z",𝙕:"Z",𝚉:"Z",Ζ:"Z",𝚭:"Z",𝛧:"Z",𝜡:"Z",𝝛:"Z",𝞕:"Z",Ꮓ:"Z",ꓜ:"Z",𑢩:"Z",ʐ:"z̨",ƶ:"z̵",Ƶ:"Z̵",ȥ:"z̦",Ȥ:"Z̦",ᵶ:"z̴",ƿ:"þ",ϸ:"þ",Ϸ:"Þ","𐓄":"Þ","⁹":"ꝰ",ᴤ:"ƨ",ϩ:"ƨ",ꙅ:"ƨ",ь:"ƅ",ꮟ:"ƅ",ы:"ƅi",ꭾ:"ɂ",ˤ:"ˁ",ꛍ:"ʡ","⊙":"ʘ","☉":"ʘ","⨀":"ʘ",Ꙩ:"ʘ",ⵙ:"ʘ","𐓃":"ʘ",ℾ:"Γ",𝚪:"Γ",𝛤:"Γ",𝜞:"Γ",𝝘:"Γ",𝞒:"Γ",Ⲅ:"Γ",Г:"Γ",Ꮁ:"Γ",ᒥ:"Γ",𖼇:"Γ",Ғ:"Γ̵",ᒯ:"Γ·",Ґ:"Γ'","∆":"Δ","△":"Δ","🜂":"Δ",𝚫:"Δ",𝛥:"Δ",𝜟:"Δ",𝝙:"Δ",𝞓:"Δ",Ⲇ:"Δ",ⵠ:"Δ",ᐃ:"Δ",𖼚:"Δ",𐊅:"Δ",𐊣:"Δ","⍙":"Δ̲",ᐏ:"Δ·",ᐬ:"Δᐠ",𝟋:"ϝ",𝛇:"ζ",𝜁:"ζ",𝜻:"ζ",𝝵:"ζ",𝞯:"ζ",ⳤ:"ϗ",𝛌:"λ",𝜆:"λ",𝝀:"λ",𝝺:"λ",𝞴:"λ",Ⲗ:"λ","𐓛":"λ",µ:"μ",𝛍:"μ",𝜇:"μ",𝝁:"μ",𝝻:"μ",𝞵:"μ",𝛏:"ξ",𝜉:"ξ",𝝃:"ξ",𝝽:"ξ",𝞷:"ξ",𝚵:"Ξ",𝛯:"Ξ",𝜩:"Ξ",𝝣:"Ξ",𝞝:"Ξ",ϖ:"π",ℼ:"π",𝛑:"π",𝛡:"π",𝜋:"π",𝜛:"π",𝝅:"π",𝝕:"π",𝝿:"π",𝞏:"π",𝞹:"π",𝟉:"π",ᴨ:"π",п:"π","∏":"Π",ℿ:"Π",𝚷:"Π",𝛱:"Π",𝜫:"Π",𝝥:"Π",𝞟:"Π",Ⲡ:"Π",П:"Π",ꛛ:"Π",𐊭:"Ϙ",𐌒:"Ϙ",ϛ:"ς",𝛓:"ς",𝜍:"ς",𝝇:"ς",𝞁:"ς",𝞻:"ς",𝚽:"Φ",𝛷:"Φ",𝜱:"Φ",𝝫:"Φ",𝞥:"Φ",Ⲫ:"Φ",Ф:"Φ",Փ:"Φ",ቀ:"Φ",ᛰ:"Φ",𐊳:"Φ",ꭓ:"χ",ꭕ:"χ",𝛘:"χ",𝜒:"χ",𝝌:"χ",𝞆:"χ",𝟀:"χ",ⲭ:"χ",𝛙:"ψ",𝜓:"ψ",𝝍:"ψ",𝞇:"ψ",𝟁:"ψ",ѱ:"ψ","𐓹":"ψ",𝚿:"Ψ",𝛹:"Ψ",𝜳:"Ψ",𝝭:"Ψ",𝞧:"Ψ",Ⲯ:"Ψ",Ѱ:"Ψ","𐓑":"Ψ",ᛘ:"Ψ",𐊵:"Ψ","⍵":"ω",ꞷ:"ω",𝛚:"ω",𝜔:"ω",𝝎:"ω",𝞈:"ω",𝟂:"ω",ⲱ:"ω",ꙍ:"ω",Ω:"Ω",𝛀:"Ω",𝛺:"Ω",𝜴:"Ω",𝝮:"Ω",𝞨:"Ω",ᘯ:"Ω",ᘵ:"Ω",𐊶:"Ω","⍹":"ω̲",ώ:"ῴ","☰":"Ⲷ",Ⳝ:"Ϭ",җ:"ж̩",Җ:"Ж̩","𝈋":"И",Ͷ:"И",ꚡ:"И",𐐥:"И",Й:"Ѝ",Ҋ:"Ѝ̦",ѝ:"й",ҋ:"й̦","𐒼":"Ӄ",ᴫ:"л",ӆ:"л̦",ꭠ:"љ","𐓫":"ꙩ","ᷮ":"ⷬ","𐓍":"Ћ","𝈂":"Ӿ","𝈢":"Ѡ",Ꮗ:"Ѡ",ᗯ:"Ѡ",Ѽ:"Ѡ҆҇",ᣭ:"Ѡ·",Ꞷ:"Ꙍ",ӌ:"ҷ",Ӌ:"Ҷ",Ҿ:"Ҽ̨",ⲽ:"ш",Ⲽ:"Ш",Ꙑ:"Ъl","℈":"Э","🜁":"Ꙙ",𖼜:"Ꙙ",ꦒ:"ⰿ",և:"եւ",ኔ:"ձ",ﬔ:"մե",ﬕ:"մի",ﬗ:"մխ",ﬓ:"մն","∩":"Ո","⋂":"Ո","𝉅":"Ո",በ:"Ո",ᑎ:"Ո",ꓵ:"Ո",ᑚ:"Ո·",ᑨ:"Ո'",ﬖ:"վն","₽":"Ք","˓":"ՙ",ʿ:"ՙ",ℵ:"א",ﬡ:"א",אָ:"אַ",אּ:"אַ",ﭏ:"אל",ℶ:"ב",ℷ:"ג",ℸ:"ד",ﬢ:"ד",ﬣ:"ה",יּ:"יִ",ﬤ:"כ",ﬥ:"ל",ﬦ:"ם",ﬠ:"ע",ﬧ:"ר",שׂ:"שׁ",שּ:"שׁ",שּׂ:"שּׁ",ﬨ:"ת",ﺀ:"ء","۽":"ء͈",ﺂ:"آ",ﺁ:"آ",ﭑ:"ٱ",ﭐ:"ٱ",𞸁:"ب",𞸡:"ب",𞹡:"ب",𞺁:"ب",𞺡:"ب",ﺑ:"ب",ﺒ:"ب",ﺐ:"ب",ﺏ:"ب",ݑ:"بۛ","ࢶ":"بۢ",ࢡ:"بٔ",ﲠ:"بo",ﳢ:"بo",ﲜ:"بج",ﰅ:"بج",ﲝ:"بح",ﰆ:"بح",ﷂ:"بحى",ﲞ:"بخ",ﰇ:"بخ",ﳒ:"بخ",ﱋ:"بخ",ﶞ:"بخى",ﱪ:"بر",ﱫ:"بز",ﲟ:"بم",ﳡ:"بم",ﱬ:"بم",ﰈ:"بم",ﱭ:"بن",ﱮ:"بى",ﰉ:"بى",ﱯ:"بى",ﰊ:"بى",ﭔ:"ٻ",ﭕ:"ٻ",ﭓ:"ٻ",ﭒ:"ٻ",ې:"ٻ",ﯦ:"ٻ",ﯧ:"ٻ",ﯥ:"ٻ",ﯤ:"ٻ",ﭜ:"ڀ",ﭝ:"ڀ",ﭛ:"ڀ",ﭚ:"ڀ",ࢩ:"ݔ",ݧ:"ݔ","⍥":"ة",ö:"ة",ﺔ:"ة",ﺓ:"ة",ۃ:"ة",𞸕:"ت",𞸵:"ت",𞹵:"ت",𞺕:"ت",𞺵:"ت",ﺗ:"ت",ﺘ:"ت",ﺖ:"ت",ﺕ:"ت",ﲥ:"تo",ﳤ:"تo",ﲡ:"تج",ﰋ:"تج",ﵐ:"تجم",ﶠ:"تجى",ﶟ:"تجى",ﲢ:"تح",ﰌ:"تح",ﵒ:"تحج",ﵑ:"تحج",ﵓ:"تحم",ﲣ:"تخ",ﰍ:"تخ",ﵔ:"تخم",ﶢ:"تخى",ﶡ:"تخى",ﱰ:"تر",ﱱ:"تز",ﲤ:"تم",ﳣ:"تم",ﱲ:"تم",ﰎ:"تم",ﵕ:"تمج",ﵖ:"تمح",ﵗ:"تمخ",ﶤ:"تمى",ﶣ:"تمى",ﱳ:"تن",ﱴ:"تى",ﰏ:"تى",ﱵ:"تى",ﰐ:"تى",ﭠ:"ٺ",ﭡ:"ٺ",ﭟ:"ٺ",ﭞ:"ٺ",ﭤ:"ٿ",ﭥ:"ٿ",ﭣ:"ٿ",ﭢ:"ٿ",𞸂:"ج",𞸢:"ج",𞹂:"ج",𞹢:"ج",𞺂:"ج",𞺢:"ج",ﺟ:"ج",ﺠ:"ج",ﺞ:"ج",ﺝ:"ج",ﲧ:"جح",ﰕ:"جح",ﶦ:"جحى",ﶾ:"جحى",ﷻ:"جل جلlلo",ﲨ:"جم",ﰖ:"جم",ﵙ:"جمح",ﵘ:"جمح",ﶧ:"جمى",ﶥ:"جمى",ﴝ:"جى",ﴁ:"جى",ﴞ:"جى",ﴂ:"جى",ﭸ:"ڃ",ﭹ:"ڃ",ﭷ:"ڃ",ﭶ:"ڃ",ﭴ:"ڄ",ﭵ:"ڄ",ﭳ:"ڄ",ﭲ:"ڄ",ﭼ:"چ",ﭽ:"چ",ﭻ:"چ",ﭺ:"چ",ﮀ:"ڇ",ﮁ:"ڇ",ﭿ:"ڇ",ﭾ:"ڇ",𞸇:"ح",𞸧:"ح",𞹇:"ح",𞹧:"ح",𞺇:"ح",𞺧:"ح",ﺣ:"ح",ﺤ:"ح",ﺢ:"ح",ﺡ:"ح",څ:"حۛ",ځ:"حٔ",ݲ:"حٔ",ﲩ:"حج",ﰗ:"حج",ﶿ:"حجى",ﲪ:"حم",ﰘ:"حم",ﵛ:"حمى",ﵚ:"حمى",ﴛ:"حى",ﳿ:"حى",ﴜ:"حى",ﴀ:"حى",𞸗:"خ",𞸷:"خ",𞹗:"خ",𞹷:"خ",𞺗:"خ",𞺷:"خ",ﺧ:"خ",ﺨ:"خ",ﺦ:"خ",ﺥ:"خ",ﲫ:"خج",ﰙ:"خج",ﰚ:"خح",ﲬ:"خم",ﰛ:"خم",ﴟ:"خى",ﴃ:"خى",ﴠ:"خى",ﴄ:"خى","𐋡":"د",𞸃:"د",𞺃:"د",𞺣:"د",ﺪ:"د",ﺩ:"د",ڈ:"دؕ",ﮉ:"دؕ",ﮈ:"دؕ",ڎ:"دۛ",ﮇ:"دۛ",ﮆ:"دۛ",ۮ:"د̂",ࢮ:"د̤̣",𞸘:"ذ",𞺘:"ذ",𞺸:"ذ",ﺬ:"ذ",ﺫ:"ذ",ﱛ:"ذٰ",ڋ:"ڊؕ",ﮅ:"ڌ",ﮄ:"ڌ",ﮃ:"ڍ",ﮂ:"ڍ",𞸓:"ر",𞺓:"ر",𞺳:"ر",ﺮ:"ر",ﺭ:"ر",ڑ:"رؕ",ﮍ:"رؕ",ﮌ:"رؕ",ژ:"رۛ",ﮋ:"رۛ",ﮊ:"رۛ",ڒ:"ر̆","ࢹ":"ر̆̇",ۯ:"ر̂",ݬ:"رٔ",ﱜ:"رٰ",ﷶ:"رسول","﷼":"رىlل",𞸆:"ز",𞺆:"ز",𞺦:"ز",ﺰ:"ز",ﺯ:"ز",ࢲ:"ز̂",ݱ:"ڗؕ",𞸎:"س",𞸮:"س",𞹎:"س",𞹮:"س",𞺎:"س",𞺮:"س",ﺳ:"س",ﺴ:"س",ﺲ:"س",ﺱ:"س",ش:"سۛ",𞸔:"سۛ",𞸴:"سۛ",𞹔:"سۛ",𞹴:"سۛ",𞺔:"سۛ",𞺴:"سۛ",ﺷ:"سۛ",ﺸ:"سۛ",ﺶ:"سۛ",ﺵ:"سۛ",ݾ:"س̂",ﴱ:"سo",ﳨ:"سo",ﴲ:"سۛo",ﳪ:"سۛo",ﲭ:"سج",ﴴ:"سج",ﰜ:"سج",ﴭ:"سۛج",ﴷ:"سۛج",ﴥ:"سۛج",ﴉ:"سۛج",ﵝ:"سجح",ﵞ:"سجى",ﵩ:"سۛجى",ﲮ:"سح",ﴵ:"سح",ﰝ:"سح",ﴮ:"سۛح",ﴸ:"سۛح",ﴦ:"سۛح",ﴊ:"سۛح",ﵜ:"سحج",ﵨ:"سۛحم",ﵧ:"سۛحم",ﶪ:"سۛحى",ﲯ:"سخ",ﴶ:"سخ",ﰞ:"سخ",ﴯ:"سۛخ",ﴹ:"سۛخ",ﴧ:"سۛخ",ﴋ:"سۛخ",ﶨ:"سخى",ﷆ:"سخى",ﴪ:"سر",ﴎ:"سر",ﴩ:"سۛر",ﴍ:"سۛر",ﲰ:"سم",ﳧ:"سم",ﰟ:"سم",ﴰ:"سۛم",ﳩ:"سۛم",ﴨ:"سۛم",ﴌ:"سۛم",ﵡ:"سمج",ﵠ:"سمح",ﵟ:"سمح",ﵫ:"سۛمخ",ﵪ:"سۛمخ",ﵣ:"سمم",ﵢ:"سمم",ﵭ:"سۛمم",ﵬ:"سۛمم",ﴗ:"سى",ﳻ:"سى",ﴘ:"سى",ﳼ:"سى",ﴙ:"سۛى",ﳽ:"سۛى",ﴚ:"سۛى",ﳾ:"سۛى","𐋲":"ص",𞸑:"ص",𞸱:"ص",𞹑:"ص",𞹱:"ص",𞺑:"ص",𞺱:"ص",ﺻ:"ص",ﺼ:"ص",ﺺ:"ص",ﺹ:"ص",ڞ:"صۛ",ࢯ:"ص̤̣",ﲱ:"صح",ﰠ:"صح",ﵥ:"صحح",ﵤ:"صحح",ﶩ:"صحى",ﲲ:"صخ",ﴫ:"صر",ﴏ:"صر",ﷵ:"صلعم",ﷹ:"صلى",ﷰ:"صلى",ﷺ:"صلى lللo علىo وسلم",ﲳ:"صم",ﰡ:"صم",ﷅ:"صمم",ﵦ:"صمم",ﴡ:"صى",ﴅ:"صى",ﴢ:"صى",ﴆ:"صى",𞸙:"ض",𞸹:"ض",𞹙:"ض",𞹹:"ض",𞺙:"ض",𞺹:"ض",ﺿ:"ض",ﻀ:"ض",ﺾ:"ض",ﺽ:"ض",ﲴ:"ضج",ﰢ:"ضج",ﲵ:"ضح",ﰣ:"ضح",ﵮ:"ضحى",ﶫ:"ضحى",ﲶ:"ضخ",ﰤ:"ضخ",ﵰ:"ضخم",ﵯ:"ضخم",ﴬ:"ضر",ﴐ:"ضر",ﲷ:"ضم",ﰥ:"ضم",ﴣ:"ضى",ﴇ:"ضى",ﴤ:"ضى",ﴈ:"ضى","𐋨":"ط",𞸈:"ط",𞹨:"ط",𞺈:"ط",𞺨:"ط",ﻃ:"ط",ﻄ:"ط",ﻂ:"ط",ﻁ:"ط",ڟ:"طۛ",ﲸ:"طح",ﰦ:"طح",ﴳ:"طم",ﴺ:"طم",ﰧ:"طم",ﵲ:"طمح",ﵱ:"طمح",ﵳ:"طمم",ﵴ:"طمى",ﴑ:"طى",ﳵ:"طى",ﴒ:"طى",ﳶ:"طى",𞸚:"ظ",𞹺:"ظ",𞺚:"ظ",𞺺:"ظ",ﻇ:"ظ",ﻈ:"ظ",ﻆ:"ظ",ﻅ:"ظ",ﲹ:"ظم",ﴻ:"ظم",ﰨ:"ظم","؏":"ع",𞸏:"ع",𞸯:"ع",𞹏:"ع",𞹯:"ع",𞺏:"ع",𞺯:"ع",ﻋ:"ع",ﻌ:"ع",ﻊ:"ع",ﻉ:"ع",ﲺ:"عج",ﰩ:"عج",ﷄ:"عجم",ﵵ:"عجم",ﷷ:"علىo",ﲻ:"عم",ﰪ:"عم",ﵷ:"عمم",ﵶ:"عمم",ﵸ:"عمى",ﶶ:"عمى",ﴓ:"عى",ﳷ:"عى",ﴔ:"عى",ﳸ:"عى",𞸛:"غ",𞸻:"غ",𞹛:"غ",𞹻:"غ",𞺛:"غ",𞺻:"غ",ﻏ:"غ",ﻐ:"غ",ﻎ:"غ",ﻍ:"غ",ﲼ:"غج",ﰫ:"غج",ﲽ:"غم",ﰬ:"غم",ﵹ:"غمم",ﵻ:"غمى",ﵺ:"غمى",ﴕ:"غى",ﳹ:"غى",ﴖ:"غى",ﳺ:"غى",𞸐:"ف",𞸰:"ف",𞹰:"ف",𞺐:"ف",𞺰:"ف",ﻓ:"ف",ﻔ:"ف",ﻒ:"ف",ﻑ:"ف",ڧ:"ف",ﲾ:"فج",ﰭ:"فج",ﲿ:"فح",ﰮ:"فح",ﳀ:"فخ",ﰯ:"فخ",ﵽ:"فخم",ﵼ:"فخم",ﳁ:"فم",ﰰ:"فم",ﷁ:"فمى",ﱼ:"فى",ﰱ:"فى",ﱽ:"فى",ﰲ:"فى",𞸞:"ڡ",𞹾:"ڡ","ࢻ":"ڡ",ٯ:"ڡ",𞸟:"ڡ",𞹟:"ڡ","ࢼ":"ڡ",ڤ:"ڡۛ",ﭬ:"ڡۛ",ﭭ:"ڡۛ",ﭫ:"ڡۛ",ﭪ:"ڡۛ",ڨ:"ڡۛ",ࢤ:"ڢۛ",ﭰ:"ڦ",ﭱ:"ڦ",ﭯ:"ڦ",ﭮ:"ڦ",𞸒:"ق",𞸲:"ق",𞹒:"ق",𞹲:"ق",𞺒:"ق",𞺲:"ق",ﻗ:"ق",ﻘ:"ق",ﻖ:"ق",ﻕ:"ق",ﳂ:"قح",ﰳ:"قح",ﷱ:"قلى",ﳃ:"قم",ﰴ:"قم",ﶴ:"قمح",ﵾ:"قمح",ﵿ:"قمم",ﶲ:"قمى",ﱾ:"قى",ﰵ:"قى",ﱿ:"قى",ﰶ:"قى",𞸊:"ك",𞸪:"ك",𞹪:"ك",ﻛ:"ك",ﻜ:"ك",ﻚ:"ك",ﻙ:"ك",ک:"ك",ﮐ:"ك",ﮑ:"ك",ﮏ:"ك",ﮎ:"ك",ڪ:"ك",ڭ:"كۛ",ﯕ:"كۛ",ﯖ:"كۛ",ﯔ:"كۛ",ﯓ:"كۛ",ݣ:"كۛ",ﲀ:"كl",ﰷ:"كl",ﳄ:"كج",ﰸ:"كج",ﳅ:"كح",ﰹ:"كح",ﳆ:"كخ",ﰺ:"كخ",ﳇ:"كل",ﳫ:"كل",ﲁ:"كل",ﰻ:"كل",ﳈ:"كم",ﳬ:"كم",ﲂ:"كم",ﰼ:"كم",ﷃ:"كمم",ﶻ:"كمم",ﶷ:"كمى",ﲃ:"كى",ﰽ:"كى",ﲄ:"كى",ﰾ:"كى",ݢ:"ڬ",ﮔ:"گ",ﮕ:"گ",ﮓ:"گ",ﮒ:"گ",ࢰ:"گ",ڴ:"گۛ",ﮜ:"ڱ",ﮝ:"ڱ",ﮛ:"ڱ",ﮚ:"ڱ",ﮘ:"ڳ",ﮙ:"ڳ",ﮗ:"ڳ",ﮖ:"ڳ",𞸋:"ل",𞸫:"ل",𞹋:"ل",𞺋:"ل",𞺫:"ل",ﻟ:"ل",ﻠ:"ل",ﻞ:"ل",ﻝ:"ل",ڷ:"لۛ",ڵ:"ل̆",ﻼ:"لl",ﻻ:"لl",ﻺ:"لlٕ",ﻹ:"لlٕ",ﻸ:"لlٴ",ﻷ:"لlٴ",ﳍ:"لo",ﻶ:"لآ",ﻵ:"لآ",ﳉ:"لج",ﰿ:"لج",ﶃ:"لجج",ﶄ:"لجج",ﶺ:"لجم",ﶼ:"لجم",ﶬ:"لجى",ﳊ:"لح",ﱀ:"لح",ﶵ:"لحم",ﶀ:"لحم",ﶂ:"لحى",ﶁ:"لحى",ﳋ:"لخ",ﱁ:"لخ",ﶆ:"لخم",ﶅ:"لخم",ﳌ:"لم",ﳭ:"لم",ﲅ:"لم",ﱂ:"لم",ﶈ:"لمح",ﶇ:"لمح",ﶭ:"لمى",ﲆ:"لى",ﱃ:"لى",ﲇ:"لى",ﱄ:"لى",𞸌:"م",𞸬:"م",𞹬:"م",𞺌:"م",𞺬:"م",ﻣ:"م",ﻤ:"م",ﻢ:"م",ﻡ:"م",ࢧ:"مۛ","۾":"م͈",ﲈ:"مl",ﳎ:"مج",ﱅ:"مج",ﶌ:"مجح",ﶒ:"مجخ",ﶍ:"مجم",ﷀ:"مجى",ﳏ:"مح",ﱆ:"مح",ﶉ:"محج",ﶊ:"محم",ﷴ:"محمد",ﶋ:"محى",ﳐ:"مخ",ﱇ:"مخ",ﶎ:"مخج",ﶏ:"مخم",ﶹ:"مخى",ﳑ:"مم",ﲉ:"مم",ﱈ:"مم",ﶱ:"ممى",ﱉ:"مى",ﱊ:"مى",𞸍:"ن",𞸭:"ن",𞹍:"ن",𞹭:"ن",𞺍:"ن",𞺭:"ن",ﻧ:"ن",ﻨ:"ن",ﻦ:"ن",ﻥ:"ن",ݨ:"نؕ",ݩ:"ن̆",ﳖ:"نo",ﳯ:"نo",ﶸ:"نجح",ﶽ:"نجح",ﶘ:"نجم",ﶗ:"نجم",ﶙ:"نجى",ﷇ:"نجى",ﳓ:"نح",ﱌ:"نح",ﶕ:"نحم",ﶖ:"نحى",ﶳ:"نحى",ﳔ:"نخ",ﱍ:"نخ",ﲊ:"نر",ﲋ:"نز",ﳕ:"نم",ﳮ:"نم",ﲌ:"نم",ﱎ:"نم",ﶛ:"نمى",ﶚ:"نمى",ﲍ:"نن",ﲎ:"نى",ﱏ:"نى",ﲏ:"نى",ﱐ:"نى",ۂ:"ۀ",ﮥ:"ۀ",ﮤ:"ۀ","𐋤":"و",𞸅:"و",𞺅:"و",𞺥:"و",ﻮ:"و",ﻭ:"و",ࢱ:"و",ۋ:"وۛ",ﯟ:"وۛ",ﯞ:"وۛ",ۇ:"و̓",ﯘ:"و̓",ﯗ:"و̓",ۆ:"و̆",ﯚ:"و̆",ﯙ:"و̆",ۉ:"و̂",ﯣ:"و̂",ﯢ:"و̂",ۈ:"وٰ",ﯜ:"وٰ",ﯛ:"وٰ",ؤ:"وٴ",ﺆ:"وٴ",ﺅ:"وٴ",ٶ:"وٴ",ٷ:"و̓ٴ",ﯝ:"و̓ٴ",ﷸ:"وسلم",ﯡ:"ۅ",ﯠ:"ۅ",ٮ:"ى",𞸜:"ى",𞹼:"ى",ں:"ى",𞸝:"ى",𞹝:"ى",ﮟ:"ى",ﮞ:"ى","ࢽ":"ى",ﯨ:"ى",ﯩ:"ى",ﻰ:"ى",ﻯ:"ى",ي:"ى",𞸉:"ى",𞸩:"ى",𞹉:"ى",𞹩:"ى",𞺉:"ى",𞺩:"ى",ﻳ:"ى",ﻴ:"ى",ﻲ:"ى",ﻱ:"ى",ی:"ى",ﯾ:"ى",ﯿ:"ى",ﯽ:"ى",ﯼ:"ى",ے:"ى",ﮯ:"ى",ﮮ:"ى",ٹ:"ىؕ",ﭨ:"ىؕ",ﭩ:"ىؕ",ﭧ:"ىؕ",ﭦ:"ىؕ",ڻ:"ىؕ",ﮢ:"ىؕ",ﮣ:"ىؕ",ﮡ:"ىؕ",ﮠ:"ىؕ",پ:"ىۛ",ﭘ:"ىۛ",ﭙ:"ىۛ",ﭗ:"ىۛ",ﭖ:"ىۛ",ث:"ىۛ",𞸖:"ىۛ",𞸶:"ىۛ",𞹶:"ىۛ",𞺖:"ىۛ",𞺶:"ىۛ",ﺛ:"ىۛ",ﺜ:"ىۛ",ﺚ:"ىۛ",ﺙ:"ىۛ",ڽ:"ىۛ",ۑ:"ىۛ",ؿ:"ىۛ","ࢷ":"ىۛۢ",ݖ:"ى̆",ێ:"ى̆","ࢺ":"ى̆̇",ؽ:"ى̂",ࢨ:"ىٔ",ﲐ:"ىٰ",ﱝ:"ىٰ",ﳞ:"ىo",ﳱ:"ىo",ﳦ:"ىۛo",ئ:"ىٴ",ﺋ:"ىٴ",ﺌ:"ىٴ",ﺊ:"ىٴ",ﺉ:"ىٴ",ٸ:"ىٴ",ﯫ:"ىٴl",ﯪ:"ىٴl",ﲛ:"ىٴo",ﳠ:"ىٴo",ﯭ:"ىٴo",ﯬ:"ىٴo",ﯸ:"ىٴٻ",ﯷ:"ىٴٻ",ﯶ:"ىٴٻ",ﲗ:"ىٴج",ﰀ:"ىٴج",ﲘ:"ىٴح",ﰁ:"ىٴح",ﲙ:"ىٴخ",ﱤ:"ىٴر",ﱥ:"ىٴز",ﲚ:"ىٴم",ﳟ:"ىٴم",ﱦ:"ىٴم",ﰂ:"ىٴم",ﱧ:"ىٴن",ﯯ:"ىٴو",ﯮ:"ىٴو",ﯱ:"ىٴو̓",ﯰ:"ىٴو̓",ﯳ:"ىٴو̆",ﯲ:"ىٴو̆",ﯵ:"ىٴوٰ",ﯴ:"ىٴوٰ",ﯻ:"ىٴى",ﯺ:"ىٴى",ﱨ:"ىٴى",ﯹ:"ىٴى",ﰃ:"ىٴى",ﱩ:"ىٴى",ﰄ:"ىٴى",ﳚ:"ىج",ﱕ:"ىج",ﰑ:"ىۛج",ﶯ:"ىجى",ﳛ:"ىح",ﱖ:"ىح",ﶮ:"ىحى",ﳜ:"ىخ",ﱗ:"ىخ",ﲑ:"ىر",ﱶ:"ىۛر",ﲒ:"ىز",ﱷ:"ىۛز",ﳝ:"ىم",ﳰ:"ىم",ﲓ:"ىم",ﱘ:"ىم",ﲦ:"ىۛم",ﳥ:"ىۛم",ﱸ:"ىۛم",ﰒ:"ىۛم",ﶝ:"ىمم",ﶜ:"ىمم",ﶰ:"ىمى",ﲔ:"ىن",ﱹ:"ىۛن",ﲕ:"ىى",ﱙ:"ىى",ﲖ:"ىى",ﱚ:"ىى",ﱺ:"ىۛى",ﰓ:"ىۛى",ﱻ:"ىۛى",ﰔ:"ىۛى",ﮱ:"ۓ",ﮰ:"ۓ",𐊸:"ⵀ","⁞":"ⵂ","⸽":"ⵂ","⦙":"ⵂ","︙":"ⵗ","⁝":"ⵗ","⋮":"ⵗ",Մ:"ሆ",Ռ:"ቡ",Ի:"ኮ",Պ:"ጣ",आ:"अा",ऒ:"अाॆ",ओ:"अाे",औ:"अाै",ऄ:"अॆ",ऑ:"अॉ",ऍ:"एॅ",ऎ:"एॆ",ऐ:"एे",ई:"र्इ",ઽ:"ऽ",𑇜:"ꣻ","𑇋":"ऺ","ુ":"ु","ૂ":"ू","ੋ":"ॆ","੍":"्","્":"्",আ:"অা",ৠ:"ঋৃ",ৡ:"ঋৃ",𑒒:"ঘ",𑒔:"চ",𑒖:"জ",𑒘:"ঞ",𑒙:"ট",𑒛:"ড",𑒪:"ণ",𑒞:"ত",𑒟:"থ",𑒠:"দ",𑒡:"ধ",𑒢:"ন",𑒣:"প",𑒩:"ব",𑒧:"ম",𑒨:"য",𑒫:"র",𑒝:"ল",𑒭:"ষ",𑒮:"স",𑓄:"ঽ","𑒰":"া","𑒱":"ি","𑒹":"ে","𑒼":"ো","𑒾":"ৌ","𑓂":"্","𑒽":"ৗ",ਉ:"ੳੁ",ਊ:"ੳੂ",ਆ:"ਅਾ",ਐ:"ਅੈ",ਔ:"ਅੌ",ਇ:"ੲਿ",ਈ:"ੲੀ",ਏ:"ੲੇ",આ:"અા",ઑ:"અાૅ",ઓ:"અાે",ઔ:"અાૈ",ઍ:"અૅ",એ:"અે",ઐ:"અૈ",ଆ:"ଅା","௮":"அ",ர:"ஈ","ா":"ஈ","௫":"ஈு","௨":"உ",ഉ:"உ",ஊ:"உள",ഊ:"உൗ","௭":"எ","௷":"எவ",ஜ:"ஐ",ജ:"ஐ","௧":"க","௪":"ச","௬":"சு","௲":"சூ",ഺ:"டி",ണ:"ண","௺":"நீ","௴":"மீ","௰":"ய",ഴ:"ழ","ௗ":"ள","ை":"ன",ശ:"ஶ","௸":"ஷ","ി":"ி","ീ":"ி","ொ":"ெஈ","ௌ":"ெள","ோ":"ேஈ",ಅ:"అ",ಆ:"ఆ",ಇ:"ఇ",ౠ:"ఋా",ౡ:"ఌా",ಒ:"ఒ",ఔ:"ఒౌ",ಔ:"ఒౌ",ఓ:"ఒౕ",ಓ:"ఒౕ",ಜ:"జ",ಞ:"ఞ",ఢ:"డ̣",ಣ:"ణ",థ:"ధּ",భ:"బ̣",ಯ:"య",ఠ:"రּ",ಱ:"ఱ",ಲ:"ల",ష:"వ̣",హ:"వా",మ:"వు","ూ":"ుా","ౄ":"ృా",ೡ:"ಌಾ",ഈ:"ഇൗ",ഐ:"എെ",ഓ:"ഒാ",ഔ:"ഒൗ",ൡ:"ഞ","൫":"ദ്ര","൹":"നു",ഌ:"നു",ങ:"നു","൯":"ന്",ൻ:"ന്","൬":"ന്ന","൚":"ന്മ",റ:"ര","൪":"ര്",ർ:"ര്","൮":"വ്ര","൶":"ഹ്മ","ൂ":"ു","ൃ":"ു","ൈ":"െെ","෪":"ජ","෫":"ද","𑐓":"𑐴𑑂𑐒","𑐙":"𑐴𑑂𑐘","𑐤":"𑐴𑑂𑐣","𑐪":"𑐴𑑂𑐩","𑐭":"𑐴𑑂𑐬","𑐯":"𑐴𑑂𑐮",𑗘:"𑖂",𑗙:"𑖂",𑗚:"𑖃",𑗛:"𑖄","𑗜":"𑖲","𑗝":"𑖳",ฃ:"ข",ด:"ค",ต:"ค",ม:"ฆ",ຈ:"จ",ซ:"ช",ฏ:"ฎ",ท:"ฑ",ບ:"บ",ປ:"ป",ຝ:"ฝ",ພ:"พ",ຟ:"ฟ",ฦ:"ภ",ຍ:"ย","។":"ฯ",ๅ:"า",ำ:"̊า","ិ":"ิ","ី":"ี","ឹ":"ึ","ឺ":"ื","ຸ":"ุ","ູ":"ู",แ:"เเ",ໜ:"ຫນ",ໝ:"ຫມ",ຳ:"̊າ","༂":"འུྂཿ","༃":"འུྂ༔",ཪ:"ར",ༀ:"ཨོཾ","ཷ":"ྲཱྀ","ཹ":"ླཱྀ","𑲲":"𑲪",ႁ:"ဂှ",က:"ဂာ",ၰ:"ဃှ",ၦ:"ပှ",ဟ:"ပာ",ၯ:"ပာှ",ၾ:"ၽှ",ဩ:"သြ",ဪ:"သြော်","႞":"ႃ̊",ឣ:"អ","᧐":"ᦞ","᧑":"ᦱ","᪀":"ᩅ","᪐":"ᩅ","꩓":"ꨁ","꩖":"ꨣ","᭒":"ᬍ","᭓":"ᬑ","᭘":"ᬨ",ꦣ:"ꦝ",ᢖ:"ᡜ",ᡕ:"ᠵ",ῶ:"Ꮿ",ᐍ:"ᐁ·",ᐫ:"ᐁᐠ",ᐑ:"ᐄ·",ᐓ:"ᐅ·",ᐭ:"ᐅᐠ",ᐕ:"ᐆ·",ᐘ:"ᐊ·",ᐮ:"ᐊᐠ",ᐚ:"ᐋ·",ᣝ:"ᐞᣟ",ᓑ:"ᐡ",ᕀ:"ᐩ",ᐿ:"ᐲ·",ᑃ:"ᐴ·","⍩":"ᐵ",ᑇ:"ᐹ·",ᑜ:"ᑏ·","⸧":"ᑐ","⊃":"ᑐ",ᑞ:"ᑐ·",ᑩ:"ᑐ'","⟉":"ᑐ/","⫗":"ᑐᑕ",ᑠ:"ᑑ·","⸦":"ᑕ","⊂":"ᑕ",ᑢ:"ᑕ·",ᑪ:"ᑕ'",ᑤ:"ᑖ·",ᑵ:"ᑫ·",ᒅ:"ᑫ'",ᑹ:"ᑮ·",ᑽ:"ᑰ·",ᘃ:"ᒉ",ᒓ:"ᒉ·",ᒕ:"ᒋ·",ᒗ:"ᒌ·",ᒛ:"ᒎ·",ᘂ:"ᒐ",ᒝ:"ᒐ·",ᒟ:"ᒑ·",ᒭ:"ᒣ·",ᒱ:"ᒦ·",ᒳ:"ᒧ·",ᒵ:"ᒨ·",ᒹ:"ᒫ·",ᓊ:"ᓀ·",ᣇ:"ᓂ·",ᣉ:"ᓃ·",ᣋ:"ᓄ·",ᣍ:"ᓅ·",ᓌ:"ᓇ·",ᓎ:"ᓈ·",ᘄ:"ᓓ",ᓝ:"ᓓ·",ᓟ:"ᓕ·",ᓡ:"ᓖ·",ᓣ:"ᓗ·",ᓥ:"ᓘ·",ᘇ:"ᓚ",ᓧ:"ᓚ·",ᓩ:"ᓛ·",ᓷ:"ᓭ·",ᓹ:"ᓯ·",ᓻ:"ᓰ·",ᓽ:"ᓱ·",ᓿ:"ᓲ·",ᔁ:"ᓴ·",ᔃ:"ᓵ·",ᔌ:"ᔋ<",ᔎ:"ᔋb",ᔍ:"ᔋᑕ",ᔏ:"ᔋᒐ",ᔘ:"ᔐ·",ᔚ:"ᔑ·",ᔜ:"ᔒ·",ᔞ:"ᔓ·",ᔠ:"ᔔ·",ᔢ:"ᔕ·",ᔤ:"ᔖ·",ᔲ:"ᔨ·",ᔴ:"ᔩ·",ᔶ:"ᔪ·",ᔸ:"ᔫ·",ᔺ:"ᔭ·",ᔼ:"ᔮ·",ᘢ:"ᕃ",ᣠ:"ᕃ·",ᘣ:"ᕆ",ᘤ:"ᕊ",ᕏ:"ᕌ·",ᖃ:"ᕐb",ᖄ:"ᕐḃ",ᖁ:"ᕐd",ᕿ:"ᕐP",ᙯ:"ᕐᑫ",ᕾ:"ᕐᑬ",ᖀ:"ᕐᑮ",ᖂ:"ᕐᑰ",ᖅ:"ᕐᒃ",ᕜ:"ᕚ·",ᣣ:"ᕞ·",ᣤ:"ᕦ·",ᕩ:"ᕧ·",ᣥ:"ᕫ·",ᣨ:"ᖆ·",ᖑ:"ᖕJ",ᙰ:"ᖕᒉ",ᖎ:"ᖕᒊ",ᖏ:"ᖕᒋ",ᖐ:"ᖕᒌ",ᖒ:"ᖕᒎ",ᖓ:"ᖕᒐ",ᖔ:"ᖕᒑ",ᙳ:"ᖖJ",ᙱ:"ᖖᒋ",ᙲ:"ᖖᒌ",ᙴ:"ᖖᒎ",ᙵ:"ᖖᒐ",ᙶ:"ᖖᒑ",ᣪ:"ᖗ·",ᙷ:"ᖧ·",ᙸ:"ᖨ·",ᙹ:"ᖩ·",ᙺ:"ᖪ·",ᙻ:"ᖫ·",ᙼ:"ᖬ·",ᙽ:"ᖭ·","⪫":"ᗒ","⪪":"ᗕ",ꓷ:"ᗡ",ᣰ:"ᗴ·",ᣲ:"ᘛ·",ᶻ:"ᙆ",ꓭ:"ᙠ",ᶺ:"ᣔ",ᴾ:"ᣖ",ᣜ:"ᣟᐞ",ˡ:"ᣳ",ʳ:"ᣴ",ˢ:"ᣵ",ᣛ:"ᣵ",ꚰ:"ᚹ",ᛡ:"ᚼ","⍿":"ᚽ",ᛂ:"ᚽ","𝈿":"ᛋ","↑":"ᛏ","↿":"ᛐ","⥮":"ᛐ⇂","⥣":"ᛐᛚ",ⵣ:"ᛯ","↾":"ᛚ","⨡":"ᛚ","⋄":"ᛜ","◇":"ᛜ","◊":"ᛜ","♢":"ᛜ","🝔":"ᛜ",𑢷:"ᛜ",𐊔:"ᛜ","⍚":"ᛜ̲","⋈":"ᛞ","⨝":"ᛞ","𐓐":"ᛦ","↕":"ᛨ","𐳼":"𐲂","𐳺":"𐲥",ㄱ:"ᄀ",ᆨ:"ᄀ",ᄁ:"ᄀᄀ",ㄲ:"ᄀᄀ",ᆩ:"ᄀᄀ",ᇺ:"ᄀᄂ",ᅚ:"ᄀᄃ",ᇃ:"ᄀᄅ",ᇻ:"ᄀᄇ",ᆪ:"ᄀᄉ",ㄳ:"ᄀᄉ",ᇄ:"ᄀᄉᄀ",ᇼ:"ᄀᄎ",ᇽ:"ᄀᄏ",ᇾ:"ᄀᄒ",ㄴ:"ᄂ",ᆫ:"ᄂ",ᄓ:"ᄂᄀ",ᇅ:"ᄂᄀ",ᄔ:"ᄂᄂ",ㅥ:"ᄂᄂ",ᇿ:"ᄂᄂ",ᄕ:"ᄂᄃ",ㅦ:"ᄂᄃ",ᇆ:"ᄂᄃ",ퟋ:"ᄂᄅ",ᄖ:"ᄂᄇ",ᅛ:"ᄂᄉ",ᇇ:"ᄂᄉ",ㅧ:"ᄂᄉ",ᅜ:"ᄂᄌ",ᆬ:"ᄂᄌ",ㄵ:"ᄂᄌ",ퟌ:"ᄂᄎ",ᇉ:"ᄂᄐ",ᅝ:"ᄂᄒ",ᆭ:"ᄂᄒ",ㄶ:"ᄂᄒ",ᇈ:"ᄂᅀ",ㅨ:"ᄂᅀ",ㄷ:"ᄃ",ᆮ:"ᄃ",ᄗ:"ᄃᄀ",ᇊ:"ᄃᄀ",ᄄ:"ᄃᄃ",ㄸ:"ᄃᄃ",ퟍ:"ᄃᄃ",ퟎ:"ᄃᄃᄇ",ᅞ:"ᄃᄅ",ᇋ:"ᄃᄅ",ꥠ:"ᄃᄆ",ꥡ:"ᄃᄇ",ퟏ:"ᄃᄇ",ꥢ:"ᄃᄉ",ퟐ:"ᄃᄉ",ퟑ:"ᄃᄉᄀ",ꥣ:"ᄃᄌ",ퟒ:"ᄃᄌ",ퟓ:"ᄃᄎ",ퟔ:"ᄃᄐ",ㄹ:"ᄅ",ᆯ:"ᄅ",ꥤ:"ᄅᄀ",ᆰ:"ᄅᄀ",ㄺ:"ᄅᄀ",ꥥ:"ᄅᄀᄀ",ퟕ:"ᄅᄀᄀ",ᇌ:"ᄅᄀᄉ",ㅩ:"ᄅᄀᄉ",ퟖ:"ᄅᄀᄒ",ᄘ:"ᄅᄂ",ᇍ:"ᄅᄂ",ꥦ:"ᄅᄃ",ᇎ:"ᄅᄃ",ㅪ:"ᄅᄃ",ꥧ:"ᄅᄃᄃ",ᇏ:"ᄅᄃᄒ",ᄙ:"ᄅᄅ",ᇐ:"ᄅᄅ",ퟗ:"ᄅᄅᄏ",ꥨ:"ᄅᄆ",ᆱ:"ᄅᄆ",ㄻ:"ᄅᄆ",ᇑ:"ᄅᄆᄀ",ᇒ:"ᄅᄆᄉ",ퟘ:"ᄅᄆᄒ",ꥩ:"ᄅᄇ",ᆲ:"ᄅᄇ",ㄼ:"ᄅᄇ",ퟙ:"ᄅᄇᄃ",ꥪ:"ᄅᄇᄇ",ᇓ:"ᄅᄇᄉ",ㅫ:"ᄅᄇᄉ",ꥫ:"ᄅᄇᄋ",ᇕ:"ᄅᄇᄋ",ퟚ:"ᄅᄇᄑ",ᇔ:"ᄅᄇᄒ",ꥬ:"ᄅᄉ",ᆳ:"ᄅᄉ",ㄽ:"ᄅᄉ",ᇖ:"ᄅᄉᄉ",ᄛ:"ᄅᄋ",ퟝ:"ᄅᄋ",ꥭ:"ᄅᄌ",ꥮ:"ᄅᄏ",ᇘ:"ᄅᄏ",ᆴ:"ᄅᄐ",ㄾ:"ᄅᄐ",ᆵ:"ᄅᄑ",ㄿ:"ᄅᄑ",ᄚ:"ᄅᄒ",ㅀ:"ᄅᄒ",ᄻ:"ᄅᄒ",ᆶ:"ᄅᄒ",ퟲ:"ᄅᄒ",ᇗ:"ᄅᅀ",ㅬ:"ᄅᅀ",ퟛ:"ᄅᅌ",ᇙ:"ᄅᅙ",ㅭ:"ᄅᅙ",ퟜ:"ᄅᅙᄒ",ㅁ:"ᄆ",ᆷ:"ᄆ",ꥯ:"ᄆᄀ",ᇚ:"ᄆᄀ",ퟞ:"ᄆᄂ",ퟟ:"ᄆᄂᄂ",ꥰ:"ᄆᄃ",ᇛ:"ᄆᄅ",ퟠ:"ᄆᄆ",ᄜ:"ᄆᄇ",ㅮ:"ᄆᄇ",ᇜ:"ᄆᄇ",ퟡ:"ᄆᄇᄉ",ꥱ:"ᄆᄉ",ᇝ:"ᄆᄉ",ㅯ:"ᄆᄉ",ᇞ:"ᄆᄉᄉ",ᄝ:"ᄆᄋ",ㅱ:"ᄆᄋ",ᇢ:"ᄆᄋ",ퟢ:"ᄆᄌ",ᇠ:"ᄆᄎ",ᇡ:"ᄆᄒ",ᇟ:"ᄆᅀ",ㅰ:"ᄆᅀ",ㅂ:"ᄇ",ᆸ:"ᄇ",ᄞ:"ᄇᄀ",ㅲ:"ᄇᄀ",ᄟ:"ᄇᄂ",ᄠ:"ᄇᄃ",ㅳ:"ᄇᄃ",ퟣ:"ᄇᄃ",ᇣ:"ᄇᄅ",ퟤ:"ᄇᄅᄑ",ퟥ:"ᄇᄆ",ᄈ:"ᄇᄇ",ㅃ:"ᄇᄇ",ퟦ:"ᄇᄇ",ᄬ:"ᄇᄇᄋ",ㅹ:"ᄇᄇᄋ",ᄡ:"ᄇᄉ",ㅄ:"ᄇᄉ",ᆹ:"ᄇᄉ",ᄢ:"ᄇᄉᄀ",ㅴ:"ᄇᄉᄀ",ᄣ:"ᄇᄉᄃ",ㅵ:"ᄇᄉᄃ",ퟧ:"ᄇᄉᄃ",ᄤ:"ᄇᄉᄇ",ᄥ:"ᄇᄉᄉ",ᄦ:"ᄇᄉᄌ",ꥲ:"ᄇᄉᄐ",ᄫ:"ᄇᄋ",ㅸ:"ᄇᄋ",ᇦ:"ᄇᄋ",ᄧ:"ᄇᄌ",ㅶ:"ᄇᄌ",ퟨ:"ᄇᄌ",ᄨ:"ᄇᄎ",ퟩ:"ᄇᄎ",ꥳ:"ᄇᄏ",ᄩ:"ᄇᄐ",ㅷ:"ᄇᄐ",ᄪ:"ᄇᄑ",ᇤ:"ᄇᄑ",ꥴ:"ᄇᄒ",ᇥ:"ᄇᄒ",ㅅ:"ᄉ",ᆺ:"ᄉ",ᄭ:"ᄉᄀ",ㅺ:"ᄉᄀ",ᇧ:"ᄉᄀ",ᄮ:"ᄉᄂ",ㅻ:"ᄉᄂ",ᄯ:"ᄉᄃ",ㅼ:"ᄉᄃ",ᇨ:"ᄉᄃ",ᄰ:"ᄉᄅ",ᇩ:"ᄉᄅ",ᄱ:"ᄉᄆ",ퟪ:"ᄉᄆ",ᄲ:"ᄉᄇ",ㅽ:"ᄉᄇ",ᇪ:"ᄉᄇ",ᄳ:"ᄉᄇᄀ",ퟫ:"ᄉᄇᄋ",ᄊ:"ᄉᄉ",ㅆ:"ᄉᄉ",ᆻ:"ᄉᄉ",ퟬ:"ᄉᄉᄀ",ퟭ:"ᄉᄉᄃ",ꥵ:"ᄉᄉᄇ",ᄴ:"ᄉᄉᄉ",ᄵ:"ᄉᄋ",ᄶ:"ᄉᄌ",ㅾ:"ᄉᄌ",ퟯ:"ᄉᄌ",ᄷ:"ᄉᄎ",ퟰ:"ᄉᄎ",ᄸ:"ᄉᄏ",ᄹ:"ᄉᄐ",ퟱ:"ᄉᄐ",ᄺ:"ᄉᄑ",ퟮ:"ᄉᅀ",ㅇ:"ᄋ",ᆼ:"ᄋ",ᅁ:"ᄋᄀ",ᇬ:"ᄋᄀ",ᇭ:"ᄋᄀᄀ",ᅂ:"ᄋᄃ",ꥶ:"ᄋᄅ",ᅃ:"ᄋᄆ",ᅄ:"ᄋᄇ",ᅅ:"ᄋᄉ",ᇱ:"ᄋᄉ",ㆂ:"ᄋᄉ",ᅇ:"ᄋᄋ",ㆀ:"ᄋᄋ",ᇮ:"ᄋᄋ",ᅈ:"ᄋᄌ",ᅉ:"ᄋᄎ",ᇯ:"ᄋᄏ",ᅊ:"ᄋᄐ",ᅋ:"ᄋᄑ",ꥷ:"ᄋᄒ",ᅆ:"ᄋᅀ",ᇲ:"ᄋᅀ",ㆃ:"ᄋᅀ",ㅈ:"ᄌ",ᆽ:"ᄌ",ퟷ:"ᄌᄇ",ퟸ:"ᄌᄇᄇ",ᅍ:"ᄌᄋ",ᄍ:"ᄌᄌ",ㅉ:"ᄌᄌ",ퟹ:"ᄌᄌ",ꥸ:"ᄌᄌᄒ",ㅊ:"ᄎ",ᆾ:"ᄎ",ᅒ:"ᄎᄏ",ᅓ:"ᄎᄒ",ㅋ:"ᄏ",ᆿ:"ᄏ",ㅌ:"ᄐ",ᇀ:"ᄐ",ꥹ:"ᄐᄐ",ㅍ:"ᄑ",ᇁ:"ᄑ",ᅖ:"ᄑᄇ",ᇳ:"ᄑᄇ",ퟺ:"ᄑᄉ",ᅗ:"ᄑᄋ",ㆄ:"ᄑᄋ",ᇴ:"ᄑᄋ",ퟻ:"ᄑᄐ",ꥺ:"ᄑᄒ",ㅎ:"ᄒ",ᇂ:"ᄒ",ᇵ:"ᄒᄂ",ᇶ:"ᄒᄅ",ᇷ:"ᄒᄆ",ᇸ:"ᄒᄇ",ꥻ:"ᄒᄉ",ᅘ:"ᄒᄒ",ㆅ:"ᄒᄒ",ᄽ:"ᄼᄼ",ᄿ:"ᄾᄾ",ㅿ:"ᅀ",ᇫ:"ᅀ",ퟳ:"ᅀᄇ",ퟴ:"ᅀᄇᄋ",ㆁ:"ᅌ",ᇰ:"ᅌ",ퟵ:"ᅌᄆ",ퟶ:"ᅌᄒ",ᅏ:"ᅎᅎ",ᅑ:"ᅐᅐ",ㆆ:"ᅙ",ᇹ:"ᅙ",ꥼ:"ᅙᅙ",ㅤ:"ᅠ",ㅏ:"ᅡ",ᆣ:"ᅡー",ᅶ:"ᅡᅩ",ᅷ:"ᅡᅮ",ᅢ:"ᅡ丨",ㅐ:"ᅡ丨",ㅑ:"ᅣ",ᅸ:"ᅣᅩ",ᅹ:"ᅣᅭ",ᆤ:"ᅣᅮ",ᅤ:"ᅣ丨",ㅒ:"ᅣ丨",ㅓ:"ᅥ",ᅼ:"ᅥー",ᅺ:"ᅥᅩ",ᅻ:"ᅥᅮ",ᅦ:"ᅥ丨",ㅔ:"ᅥ丨",ㅕ:"ᅧ",ᆥ:"ᅧᅣ",ᅽ:"ᅧᅩ",ᅾ:"ᅧᅮ",ᅨ:"ᅧ丨",ㅖ:"ᅧ丨",ㅗ:"ᅩ",ᅪ:"ᅩᅡ",ㅘ:"ᅩᅡ",ᅫ:"ᅩᅡ丨",ㅙ:"ᅩᅡ丨",ᆦ:"ᅩᅣ",ᆧ:"ᅩᅣ丨",ᅿ:"ᅩᅥ",ᆀ:"ᅩᅥ丨",ힰ:"ᅩᅧ",ᆁ:"ᅩᅧ丨",ᆂ:"ᅩᅩ",ힱ:"ᅩᅩ丨",ᆃ:"ᅩᅮ",ᅬ:"ᅩ丨",ㅚ:"ᅩ丨",ㅛ:"ᅭ",ힲ:"ᅭᅡ",ힳ:"ᅭᅡ丨",ᆄ:"ᅭᅣ",ㆇ:"ᅭᅣ",ᆆ:"ᅭᅣ",ᆅ:"ᅭᅣ丨",ㆈ:"ᅭᅣ丨",ힴ:"ᅭᅥ",ᆇ:"ᅭᅩ",ᆈ:"ᅭ丨",ㆉ:"ᅭ丨",ㅜ:"ᅮ",ᆉ:"ᅮᅡ",ᆊ:"ᅮᅡ丨",ᅯ:"ᅮᅥ",ㅝ:"ᅮᅥ",ᆋ:"ᅮᅥー",ᅰ:"ᅮᅥ丨",ㅞ:"ᅮᅥ丨",ힵ:"ᅮᅧ",ᆌ:"ᅮᅧ丨",ᆍ:"ᅮᅮ",ᅱ:"ᅮ丨",ㅟ:"ᅮ丨",ힶ:"ᅮ丨丨",ㅠ:"ᅲ",ᆎ:"ᅲᅡ",ힷ:"ᅲᅡ丨",ᆏ:"ᅲᅥ",ᆐ:"ᅲᅥ丨",ᆑ:"ᅲᅧ",ㆊ:"ᅲᅧ",ᆒ:"ᅲᅧ丨",ㆋ:"ᅲᅧ丨",ힸ:"ᅲᅩ",ᆓ:"ᅲᅮ",ᆔ:"ᅲ丨",ㆌ:"ᅲ丨",ㆍ:"ᆞ",ퟅ:"ᆞᅡ",ᆟ:"ᆞᅥ",ퟆ:"ᆞᅥ丨",ᆠ:"ᆞᅮ",ᆢ:"ᆞᆞ",ᆡ:"ᆞ丨",ㆎ:"ᆞ丨",ヘ:"へ","⍁":"〼","⧄":"〼","꒞":"ꁊ","꒬":"ꁐ","꒜":"ꃀ","꒨":"ꄲ","꒿":"ꉙ","꒾":"ꊱ","꒔":"ꋍ","꓀":"ꎫ","꓂":"ꎵ","꒺":"ꎿ","꒰":"ꏂ","꒧":"ꑘ","⊥":"ꓕ","⟂":"ꓕ","𝈜":"ꓕ",Ʇ:"ꓕ",Ꞟ:"ꓤ","⅁":"ꓨ","⅂":"ꓶ","𝈕":"ꓶ","𝈫":"ꓶ",𖼦:"ꓶ",𐐑:"ꓶ","⅃":"𖼀",𑫦:"𑫥𑫯",𑫨:"𑫥𑫥",𑫩:"𑫥𑫥𑫯",𑫪:"𑫥𑫥𑫰",𑫧:"𑫥𑫰",𑫴:"𑫳𑫯",𑫶:"𑫳𑫳",𑫷:"𑫳𑫳𑫯",𑫸:"𑫳𑫳𑫰",𑫵:"𑫳𑫰",𑫬:"𑫫𑫯",𑫭:"𑫫𑫫",𑫮:"𑫫𑫫𑫯","⊕":"𐊨","⨁":"𐊨","🜨":"𐊨",Ꚛ:"𐊨","▽":"𐊼","𝈔":"𐊼","🜄":"𐊼","⧖":"𐋀",ꞛ:"𐐺",Ꞛ:"𐐒","𐒠":"𐒆",𐏑:"𐎂",𐏓:"𐎓",𒀸:"𐎚","☥":"𐦞",𓋹:"𐦞",〹:"卄",不:"不",丽:"丽",並:"並","⎜":"丨","⎟":"丨","⎢":"丨","⎥":"丨","⎪":"丨","⎮":"丨","㇑":"丨",ᅵ:"丨",ㅣ:"丨","⼁":"丨",ᆜ:"丨ー",ᆘ:"丨ᅡ",ᆙ:"丨ᅣ",ힽ:"丨ᅣᅩ",ힾ:"丨ᅣ丨",ힿ:"丨ᅧ",ퟀ:"丨ᅧ丨",ᆚ:"丨ᅩ",ퟁ:"丨ᅩ丨",ퟂ:"丨ᅭ",ᆛ:"丨ᅮ",ퟃ:"丨ᅲ",ᆝ:"丨ᆞ",ퟄ:"丨丨",串:"串",丸:"丸",丹:"丹",乁:"乁","㇠":"乙","⼄":"乙","㇟":"乚","⺃":"乚","㇖":"乛","⺂":"乛","⻲":"亀",亂:"亂","㇚":"亅","⼅":"亅",了:"了",ニ:"二","⼆":"二",𠄢:"𠄢","⼇":"亠",亮:"亮","⼈":"人",イ:"亻","⺅":"亻",什:"什",仌:"仌",令:"令",你:"你",倂:"併",倂:"併",侀:"侀",來:"來",例:"例",侮:"侮",侮:"侮",侻:"侻",便:"便",值:"値",倫:"倫",偺:"偺",備:"備",像:"像",僚:"僚",僧:"僧",僧:"僧",㒞:"㒞","⼉":"儿",兀:"兀","⺎":"兀",充:"充",免:"免",免:"免",兔:"兔",兤:"兤","⼊":"入",內:"內",全:"全",兩:"兩",ハ:"八","⼋":"八",六:"六",具:"具",𠔜:"𠔜",𠔥:"𠔥",冀:"冀",㒹:"㒹","⼌":"冂",再:"再",𠕋:"𠕋",冒:"冒",冕:"冕",㒻:"㒻",最:"最","⼍":"冖",冗:"冗",冤:"冤","⼎":"冫",冬:"冬",况:"况",况:"况",冷:"冷",凉:"凉",凌:"凌",凜:"凜",凞:"凞","⼏":"几",𠘺:"𠘺",凵:"凵","⼐":"凵","⼑":"刀","⺉":"刂",刃:"刃",切:"切",切:"切",列:"列",利:"利",㓟:"㓟",刺:"刺",刻:"刻",剆:"剆",割:"割",剷:"剷",劉:"劉",𠠄:"𠠄",カ:"力",力:"力","⼒":"力",劣:"劣",㔕:"㔕",劳:"劳",勇:"勇",勇:"勇",勉:"勉",勉:"勉",勒:"勒",勞:"勞",勤:"勤",勤:"勤",勵:"勵","⼓":"勹",勺:"勺",勺:"勺",包:"包",匆:"匆",𠣞:"𠣞","⼔":"匕",北:"北",北:"北","⼕":"匚","⼖":"匸",匿:"匿","⼗":"十",〸:"十",〺:"卅",卉:"卉","࿖":"卍","࿕":"卐",卑:"卑",卑:"卑",博:"博",ト:"卜","⼘":"卜","⼙":"卩","⺋":"㔾",即:"即",卵:"卵",卽:"卽",卿:"卿",卿:"卿",卿:"卿","⼚":"厂",𠨬:"𠨬","⼛":"厶",參:"參","⼜":"又",及:"及",叟:"叟",𠭣:"𠭣",ロ:"口","⼝":"口",囗:"口","⼞":"口",句:"句",叫:"叫",叱:"叱",吆:"吆",吏:"吏",吝:"吝",吸:"吸",呂:"呂",呈:"呈",周:"周",咞:"咞",咢:"咢",咽:"咽",䎛:"㖈",哶:"哶",唐:"唐",啓:"啓",啟:"啓",啕:"啕",啣:"啣",善:"善",善:"善",喇:"喇",喙:"喙",喙:"喙",喝:"喝",喝:"喝",喫:"喫",喳:"喳",嗀:"嗀",嗂:"嗂",嗢:"嗢",嘆:"嘆",嘆:"嘆",噑:"噑",噴:"噴",器:"器",囹:"囹",圖:"圖",圗:"圗","⼟":"土",士:"土","⼠":"土",型:"型",城:"城",㦳:"㘽",埴:"埴",堍:"堍",報:"報",堲:"堲",塀:"塀",塚:"塚",塚:"塚",塞:"塞",填:"塡",壿:"墫",墬:"墬",墳:"墳",壘:"壘",壟:"壟",𡓤:"𡓤",壮:"壮",売:"売",壷:"壷","⼡":"夂",夆:"夆","⼢":"夊",タ:"夕","⼣":"夕",多:"多",夢:"夢","⼤":"大",奄:"奄",奈:"奈",契:"契",奔:"奔",奢:"奢",女:"女","⼥":"女",𡚨:"𡚨",𡛪:"𡛪",姘:"姘",姬:"姬",娛:"娛",娧:"娧",婢:"婢",婦:"婦",嬀:"媯",㛮:"㛮",㛼:"㛼",媵:"媵",嬈:"嬈",嬨:"嬨",嬾:"嬾",嬾:"嬾","⼦":"子","⼧":"宀",宅:"宅",𡧈:"𡧈",寃:"寃",寘:"寘",寧:"寧",寧:"寧",寧:"寧",寮:"寮",寳:"寳",𡬘:"𡬘","⼨":"寸",寿:"寿",将:"将","⼩":"小",尢:"尢","⺐":"尢","⼪":"尢","⺏":"尣",㞁:"㞁","⼫":"尸",尿:"尿",屠:"屠",屢:"屢",層:"層",履:"履",屮:"屮",屮:"屮","⼬":"屮",𡴋:"𡴋","⼭":"山",峀:"峀",岍:"岍",𡷤:"𡷤",𡷦:"𡷦",崙:"崙",嵃:"嵃",嵐:"嵐",嵫:"嵫",嵮:"嵮",嵼:"嵼",嶲:"嶲",嶺:"嶺","⼮":"巛",巢:"巢",エ:"工","⼯":"工","⼰":"己","⺒":"巳",㠯:"㠯",巽:"巽","⼱":"巾",帲:"帡",帨:"帨",帽:"帽",幩:"幩",㡢:"㡢",𢆃:"𢆃","⼲":"干",年:"年",𢆟:"𢆟","⺓":"幺","⼳":"幺","⼴":"广",度:"度",㡼:"㡼",庰:"庰",庳:"庳",庶:"庶",廊:"廊",廊:"廊",廉:"廉",廒:"廒",廓:"廓",廙:"廙",廬:"廬","⼵":"廴",廾:"廾","⼶":"廾",𢌱:"𢌱",𢌱:"𢌱",弄:"弄","⼷":"弋","⼸":"弓",弢:"弢",弢:"弢","⼹":"彐","⺔":"彑",当:"当",㣇:"㣇","⼺":"彡",形:"形",彩:"彩",彫:"彫","⼻":"彳",律:"律",㣣:"㣣",徚:"徚",復:"復",徭:"徭","⼼":"心","⺖":"忄","⺗":"㣺",忍:"忍",志:"志",念:"念",忹:"忹",怒:"怒",怜:"怜",恵:"恵",㤜:"㤜",㤺:"㤺",悁:"悁",悔:"悔",悔:"悔",惇:"惇",惘:"惘",惡:"惡",𢛔:"𢛔",愈:"愈",慨:"慨",慄:"慄",慈:"慈",慌:"慌",慌:"慌",慎:"慎",慎:"慎",慠:"慠",慺:"慺",憎:"憎",憎:"憎",憎:"憎",憐:"憐",憤:"憤",憯:"憯",憲:"憲",𢡄:"𢡄",𢡊:"𢡊",懞:"懞",懲:"懲",懲:"懲",懲:"懲",懶:"懶",懶:"懶",戀:"戀","⼽":"戈",成:"成",戛:"戛",戮:"戮",戴:"戴","⼾":"戶",戸:"戶","⼿":"手","⺘":"扌",扝:"扝",抱:"抱",拉:"拉",拏:"拏",拓:"拓",拔:"拔",拼:"拼",拾:"拾",𢬌:"𢬌",挽:"挽",捐:"捐",捨:"捨",捻:"捻",掃:"掃",掠:"掠",掩:"掩",揄:"揄",揤:"揤",摒:"摒",𢯱:"𢯱",搜:"搜",搢:"搢",揅:"揅",摩:"摩",摷:"摷",摾:"摾",㨮:"㨮",搉:"㩁",撚:"撚",撝:"撝",擄:"擄",㩬:"㩬","⽀":"支","⽁":"攴","⺙":"攵",敏:"敏",敏:"敏",敖:"敖",敬:"敬",數:"數",𣀊:"𣀊","⽂":"文","⻫":"斉","⽃":"斗",料:"料","⽄":"斤","⽅":"方",旅:"旅","⽆":"无","⺛":"旡",既:"既",旣:"旣","⽇":"日",易:"易",曶:"㫚",㫤:"㫤",晉:"晉",晩:"晚",晴:"晴",晴:"晴",暑:"暑",暑:"暑",暈:"暈",㬈:"㬈",暜:"暜",暴:"暴",曆:"曆",㬙:"㬙",𣊸:"𣊸","⽈":"曰",更:"更",書:"書","⽉":"月",𣍟:"𣍟",肦:"朌",胐:"朏",胊:"朐",脁:"朓",胶:"㬵",朗:"朗",朗:"朗",朗:"朗",脧:"朘",望:"望",望:"望",幐:"㬺",䐠:"㬻",𣎓:"𣎓",膧:"朣",𣎜:"𣎜","⽊":"木",李:"李",杓:"杓",杖:"杖",杞:"杞",𣏃:"𣏃",柿:"杮",杻:"杻",枅:"枅",林:"林",㭉:"㭉",𣏕:"𣏕",柳:"柳",柺:"柺",栗:"栗",栟:"栟",桒:"桒",𣑭:"𣑭",梁:"梁",梅:"梅",梅:"梅",梎:"梎",梨:"梨",椔:"椔",楂:"楂",㮝:"㮝",㮝:"㮝",槩:"㮣",樧:"榝",榣:"榣",槪:"槪",樂:"樂",樂:"樂",樂:"樂",樓:"樓",𣚣:"𣚣",檨:"檨",櫓:"櫓",櫛:"櫛",欄:"欄",㰘:"㰘","⽋":"欠",次:"次",𣢧:"𣢧",歔:"歔",㱎:"㱎","⽌":"止","⻭":"歯",歲:"歲",歷:"歷",歹:"歹","⽍":"歹","⺞":"歺",殟:"殟",殮:"殮","⽎":"殳",殺:"殺",殺:"殺",殺:"殺",殻:"殻",𣪍:"𣪍","⽏":"毋","⺟":"母",𣫺:"𣫺","⽐":"比","⽑":"毛","⽒":"氏","⺠":"民","⽓":"气","⽔":"水","⺡":"氵","⺢":"氺",汎:"汎",汧:"汧",沈:"沈",沿:"沿",泌:"泌",泍:"泍",泥:"泥",𣲼:"𣲼",洛:"洛",洞:"洞",洴:"洴",派:"派",流:"流",流:"流",流:"流",洖:"洖",浩:"浩",浪:"浪",海:"海",海:"海",浸:"浸",涅:"涅",𣴞:"𣴞",淋:"淋",淚:"淚",淪:"淪",淹:"淹",渚:"渚",港:"港",湮:"湮",潙:"溈",滋:"滋",滋:"滋",溜:"溜",溺:"溺",滇:"滇",滑:"滑",滛:"滛",㴳:"㴳",漏:"漏",漢:"漢",漢:"漢",漣:"漣",𣻑:"𣻑",潮:"潮",𣽞:"𣽞",𣾎:"𣾎",濆:"濆",濫:"濫",濾:"濾",瀛:"瀛",瀞:"瀞",瀞:"瀞",瀹:"瀹",灊:"灊",㶖:"㶖","⽕":"火","⺣":"灬",灰:"灰",灷:"灷",災:"災",炙:"炙",炭:"炭",烈:"烈",烙:"烙",煮:"煮",煮:"煮",𤉣:"𤉣",煅:"煅",煉:"煉",𤋮:"𤋮",熜:"熜",燎:"燎",燐:"燐",𤎫:"𤎫",爐:"爐",爛:"爛",爨:"爨","⽖":"爪",爫:"爫","⺤":"爫",爵:"爵",爵:"爵","⽗":"父","⽘":"爻","⺦":"丬","⽙":"爿","⽚":"片",牐:"牐","⽛":"牙",𤘈:"𤘈","⽜":"牛",牢:"牢",犀:"犀",犕:"犕","⽝":"犬","⺨":"犭",犯:"犯",狀:"狀",𤜵:"𤜵",狼:"狼",猪:"猪",猪:"猪",𤠔:"𤠔",獵:"獵",獺:"獺","⽞":"玄",率:"率",率:"率","⽟":"玉",王:"王",㺬:"㺬",玥:"玥",玲:"玲",㺸:"㺸",㺸:"㺸",珞:"珞",琉:"琉",理:"理",琢:"琢",瑇:"瑇",瑜:"瑜",瑩:"瑩",瑱:"瑱",瑱:"瑱",璅:"璅",璉:"璉",璘:"璘",瓊:"瓊","⽠":"瓜","⽡":"瓦",㼛:"㼛",甆:"甆","⽢":"甘","⽣":"生",甤:"甤","⽤":"用","⽥":"田",画:"画",甾:"甾",𤰶:"𤰶",留:"留",略:"略",異:"異",異:"異",𤲒:"𤲒","⽦":"疋","⽧":"疒",痢:"痢",瘐:"瘐",瘟:"瘟",瘝:"瘝",療:"療",癩:"癩","⽨":"癶","⽩":"白",𤾡:"𤾡",𤾸:"𤾸","⽪":"皮","⽫":"皿",𥁄:"𥁄",㿼:"㿼",益:"益",益:"益",盛:"盛",盧:"盧",䀈:"䀈","⽬":"目",直:"直",直:"直",𥃲:"𥃲",𥃳:"𥃳",省:"省",䀘:"䀘",𥄙:"𥄙",眞:"眞",真:"真",真:"真",𥄳:"𥄳",着:"着",睊:"睊",睊:"睊",鿃:"䀹",䀹:"䀹",䀹:"䀹",晣:"䀿",䁆:"䁆",瞋:"瞋",𥉉:"𥉉",瞧:"瞧","⽭":"矛","⽮":"矢","⽯":"石",䂖:"䂖",𥐝:"𥐝",硏:"研",硎:"硎",硫:"硫",碌:"碌",碌:"碌",碑:"碑",磊:"磊",磌:"磌",磌:"磌",磻:"磻",䃣:"䃣",礪:"礪","⽰":"示","⺭":"礻",礼:"礼",社:"社",祈:"祈",祉:"祉",𥘦:"𥘦",祐:"祐",祖:"祖",祖:"祖",祝:"祝",神:"神",祥:"祥",視:"視",視:"視",祿:"祿",𥚚:"𥚚",禍:"禍",禎:"禎",福:"福",福:"福",𥛅:"𥛅",禮:"禮","⽱":"禸","⽲":"禾",秊:"秊",䄯:"䄯",秫:"秫",稜:"稜",穊:"穊",穀:"穀",穀:"穀",穏:"穏","⽳":"穴",突:"突",𥥼:"𥥼",窱:"窱",立:"立","⽴":"立","⻯":"竜",𥪧:"𥪧",𥪧:"𥪧",竮:"竮","⽵":"竹",笠:"笠",節:"節",節:"節",䈂:"䈂",𥮫:"𥮫",篆:"篆",䈧:"䈧",築:"築",𥲀:"𥲀",𥳐:"𥳐",簾:"簾",籠:"籠","⽶":"米",类:"类",粒:"粒",精:"精",糒:"糒",糖:"糖",糨:"糨",䊠:"䊠",糣:"糣",糧:"糧","⽷":"糸","⺯":"糹",𥾆:"𥾆",紀:"紀",紐:"紐",索:"索",累:"累",絶:"絕",絣:"絣",絛:"絛",綠:"綠",綾:"綾",緇:"緇",練:"練",練:"練",練:"練",縂:"縂",䌁:"䌁",縉:"縉",縷:"縷",繁:"繁",繅:"繅",𦇚:"𦇚",䌴:"䌴","⽸":"缶",𦈨:"𦈨",缾:"缾",𦉇:"𦉇","⽹":"网","⺫":"罒","⺲":"罒","⺱":"罓",䍙:"䍙",署:"署",𦋙:"𦋙",罹:"罹",罺:"罺",羅:"羅",𦌾:"𦌾","⽺":"羊",羕:"羕",羚:"羚",羽:"羽","⽻":"羽",翺:"翺",老:"老","⽼":"老","⺹":"耂",者:"者",者:"者",者:"者","⽽":"而",𦓚:"𦓚","⽾":"耒",𦔣:"𦔣","⽿":"耳",聆:"聆",聠:"聠",𦖨:"𦖨",聯:"聯",聰:"聰",聾:"聾","⾀":"聿","⺺":"肀","⾁":"肉",肋:"肋",肭:"肭",育:"育",䏕:"䏕",䏙:"䏙",腁:"胼",脃:"脃",脾:"脾",䐋:"䐋",朡:"朡",𦞧:"𦞧",𦞵:"𦞵",朦:"䑃",臘:"臘","⾂":"臣",臨:"臨","⾃":"自",臭:"臭","⾄":"至","⾅":"臼",舁:"舁",舁:"舁",舄:"舄","⾆":"舌",舘:"舘","⾇":"舛","⾈":"舟",䑫:"䑫","⾉":"艮",良:"良","⾊":"色","⾋":"艸",艹:"艹",艹:"艹","⺾":"艹","⺿":"艹","⻀":"艹",芋:"芋",芑:"芑",芝:"芝",花:"花",芳:"芳",芽:"芽",若:"若",若:"若",苦:"苦",𦬼:"𦬼",茶:"茶",荒:"荒",荣:"荣",茝:"茝",茣:"茣",莽:"莽",荓:"荓",菉:"菉",菊:"菊",菌:"菌",菜:"菜",菧:"菧",華:"華",菱:"菱",著:"著",著:"著",𦰶:"𦰶",莭:"莭",落:"落",葉:"葉",蔿:"蒍",𦳕:"𦳕",𦵫:"𦵫",蓮:"蓮",蓱:"蓱",蓳:"蓳",蓼:"蓼",蔖:"蔖",䔫:"䔫",蕤:"蕤",𦼬:"𦼬",藍:"藍",䕝:"䕝",𦾱:"𦾱",䕡:"䕡",藺:"藺",蘆:"蘆",䕫:"䕫",蘒:"蘒",蘭:"蘭",𧃒:"𧃒",虁:"蘷",蘿:"蘿","⾌":"虍","⻁":"虎",虐:"虐",虜:"虜",虜:"虜",虧:"虧",虩:"虩","⾍":"虫",蚩:"蚩",蚈:"蚈",蛢:"蛢",蜎:"蜎",蜨:"蜨",蝫:"蝫",蟡:"蟡",蝹:"蝹",蝹:"蝹",螆:"螆",䗗:"䗗",𧏊:"𧏊",螺:"螺",蠁:"蠁",䗹:"䗹",蠟:"蠟","⾎":"血",行:"行","⾏":"行",衠:"衠",衣:"衣","⾐":"衣","⻂":"衤",裂:"裂",𧙧:"𧙧",裏:"裏",裗:"裗",裞:"裞",裡:"裡",裸:"裸",裺:"裺",䘵:"䘵",褐:"褐",襁:"襁",襤:"襤","⾑":"襾","⻄":"西","⻃":"覀",覆:"覆",見:"見","⾒":"見",𧢮:"𧢮","⻅":"见","⾓":"角","⾔":"言",𧥦:"𧥦",詽:"訮",訞:"䚶",䚾:"䚾",䛇:"䛇",誠:"誠",說:"說",說:"說",調:"調",請:"請",諒:"諒",論:"論",諭:"諭",諭:"諭",諸:"諸",諸:"諸",諾:"諾",諾:"諾",謁:"謁",謁:"謁",謹:"謹",謹:"謹",識:"識",讀:"讀",讏:"讆",變:"變",變:"變","⻈":"讠","⾕":"谷","⾖":"豆",豈:"豈",豕:"豕","⾗":"豕",豣:"豜","⾘":"豸",𧲨:"𧲨","⾙":"貝",貫:"貫",賁:"賁",賂:"賂",賈:"賈",賓:"賓",贈:"贈",贈:"贈",贛:"贛","⻉":"贝","⾚":"赤","⾛":"走",起:"起",趆:"赿",𧻓:"𧻓",𧼯:"𧼯","⾜":"足",跋:"跋",趼:"趼",跺:"跥",路:"路",跰:"跰",躛:"躗","⾝":"身",車:"車","⾞":"車",軔:"軔",輧:"軿",輦:"輦",輪:"輪",輸:"輸",輸:"輸",輻:"輻",轢:"轢","⻋":"车","⾟":"辛",辞:"辞",辰:"辰","⾠":"辰","⾡":"辵",辶:"辶","⻌":"辶","⻍":"辶",巡:"巡",連:"連",逸:"逸",逸:"逸",遲:"遲",遼:"遼",𨗒:"𨗒",𨗭:"𨗭",邏:"邏","⾢":"邑",邔:"邔",郎:"郎",郞:"郎",郞:"郎",郱:"郱",都:"都",𨜮:"𨜮",鄑:"鄑",鄛:"鄛","⾣":"酉",酪:"酪",醙:"醙",醴:"醴","⾤":"釆",里:"里","⾥":"里",量:"量",金:"金","⾦":"金",鈴:"鈴",鈸:"鈸",鉶:"鉶",鋗:"鋗",鋘:"鋘",鉼:"鉼",錄:"錄",鍊:"鍊",鎮:"鎭",鏹:"鏹",鐕:"鐕",𨯺:"𨯺","⻐":"钅","⻑":"長","⾧":"長","⻒":"镸","⻓":"长","⾨":"門",開:"開",䦕:"䦕",閭:"閭",閷:"閷",𨵷:"𨵷","⻔":"门","⾩":"阜","⻏":"阝","⻖":"阝",阮:"阮",陋:"陋",降:"降",陵:"陵",陸:"陸",陼:"陼",隆:"隆",隣:"隣",䧦:"䧦","⾪":"隶",隷:"隷",隸:"隷",隸:"隷","⾫":"隹",雃:"雃",離:"離",難:"難",難:"難","⾬":"雨",零:"零",雷:"雷",霣:"霣",𩅅:"𩅅",露:"露",靈:"靈","⾭":"靑","⻘":"青",靖:"靖",靖:"靖",𩇟:"𩇟","⾮":"非","⾯":"面",𩈚:"𩈚","⾰":"革",䩮:"䩮",䩶:"䩶","⾱":"韋",韛:"韛",韠:"韠","⻙":"韦","⾲":"韭",𩐊:"𩐊","⾳":"音",響:"響",響:"響","⾴":"頁",䪲:"䪲",頋:"頋",頋:"頋",頋:"頋",領:"領",頩:"頩",𩒖:"𩒖",頻:"頻",頻:"頻",類:"類","⻚":"页","⾵":"風",𩖶:"𩖶","⻛":"风","⾶":"飛","⻜":"飞","⻝":"食","⾷":"食","⻟":"飠",飢:"飢",飯:"飯",飼:"飼",䬳:"䬳",館:"館",餩:"餩","⻠":"饣","⾸":"首","⾹":"香",馧:"馧","⾺":"馬",駂:"駂",駱:"駱",駾:"駾",驪:"驪","⻢":"马","⾻":"骨",䯎:"䯎","⾼":"高","⾽":"髟",𩬰:"𩬰",鬒:"鬒",鬒:"鬒","⾾":"鬥","⾿":"鬯","⿀":"鬲","⿁":"鬼","⻤":"鬼","⿂":"魚",魯:"魯",鱀:"鱀",鱗:"鱗","⻥":"鱼","⿃":"鳥",鳽:"鳽",䳎:"䳎",鵧:"鵧",䳭:"䳭",𪃎:"𪃎",鶴:"鶴",𪄅:"𪄅",䳸:"䳸",鷺:"鷺",𪈎:"𪈎",鸞:"鸞",鹃:"鹂","⿄":"鹵",鹿:"鹿","⿅":"鹿",𪊑:"𪊑",麗:"麗",麟:"麟","⿆":"麥","⻨":"麦",麻:"麻","⿇":"麻",𪎒:"𪎒","⿈":"黃","⻩":"黄","⿉":"黍",黎:"黎",䵖:"䵖","⿊":"黑",黒:"黑",墨:"墨",黹:"黹","⿋":"黹","⿌":"黽",鼅:"鼅",黾:"黾","⿍":"鼎",鼏:"鼏","⿎":"鼓",鼖:"鼖","⿏":"鼠",鼻:"鼻","⿐":"鼻",齃:"齃","⿑":"齊","⻬":"齐","⿒":"齒",𪘀:"𪘀","⻮":"齿",龍:"龍","⿓":"龍",龎:"龎","⻰":"龙",龜:"龜",龜:"龜",龜:"龜","⿔":"龜","⻳":"龟","⿕":"龠"};var uk,_F;function Jge(){if(_F)return uk;_F=1;var e=Xge;var t=RegExp(Object.keys(e).map(function(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}).join("|"),"g");function n(t){return e[t]}return uk=function(e){return e.replace(t,n)}}var Qge=Jge();const Zge=ic(Qge);var fk,SF,wF,hk,EF,CF,u0={exports:{}},dk={};function eve(){if(SF)return fk;function e(e,t){"boolean"==typeof t&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}return SF=1,fk=e,e.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)},e.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null},e.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=(new Date).getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(e),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var n=this._timeouts.shift();if(void 0===n){if(!this._cachedTimeouts)return!1;this._errors.splice(0,this._errors.length-1),n=this._cachedTimeouts.slice(-1)}var r=this;return this._timer=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n),this._options.unref&&this._timer.unref(),!0},e.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=(new Date).getTime(),this._fn(this._attempts)},e.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},e.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},e.prototype.start=e.prototype.try,e.prototype.errors=function(){return this._errors},e.prototype.attempts=function(){return this._attempts},e.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,n=0,r=0;r=n&&(t=i,n=s)}return t},fk}function tve(){return wF||(wF=1,e=dk,t=eve(),e.operation=function(n){var r=e.timeouts(n);return new t(r,{forever:n&&(n.forever||n.retries===1/0),unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var r=[],i=0;inew Promise((o,s)=>{i={onFailedAttempt:()=>{},retries:10,...i};const a=e.operation(i);a.attempt(async e=>{try{o(await r(e))}catch(r){if(!(r instanceof Error))return void s(new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`));if(r instanceof n)a.stop(),s(r.originalError);else if(r instanceof TypeError&&!(e=>t.includes(e))(r.message))a.stop(),s(r);else{((e,t,n)=>{const r=n.retries-(t-1);e.attemptNumber=t,e.retriesLeft=r})(r,e,i);try{await i.onFailedAttempt(r)}catch(e){return void s(e)}a.retry(r)||s(a.mainError())}}})});return u0.exports=r,u0.exports.default=r,u0.exports.AbortError=n,u0.exports}var OX=rve();const MX=ic(OX);let i_=class{constructor(e,t){if(this.stable=e,this.unstable=t,!this.unstable&&!this.stable)throw new Error("One of stable or unstable values must be supplied")}get name(){return this.stable?this.stable:this.unstable}get altName(){return this.stable?this.unstable:null}get names(){var e=[this.name],t=this.altName;return t&&e.push(t),e}matches(e){return this.name===e||this.altName===e}findIn(e){var t=void 0;return this.name&&(t=e?.[this.name]),!t&&this.altName&&(t=e?.[this.altName]),t}includedIn(e){var t=!1;return this.name&&(t=e.includes(this.name)),!t&&this.altName&&(t=e.includes(this.altName)),t}};class F3 extends i_{constructor(){super(...arguments),L(this,"preferUnstable",!1)}setPreferUnstable(e){this.preferUnstable=e}get name(){return this.stable&&!this.preferUnstable?this.stable:this.unstable}}class xr extends i_{constructor(e,t){if(super(e,t),!this.unstable)throw new Error("Unstable value must be supplied")}get name(){return this.unstable}get altName(){return this.stable}}var Jg=function(e){return e.Self="m.self",e.Pin="m.pin",e}({}),s_=new xr("m.asset","org.matrix.msc3488.asset"),kf=new xr("m.ts","org.matrix.msc3488.ts"),o_=new xr("m.location","org.matrix.msc3488.location"),os=function(e){return e.Read="m.read",e.FullyRead="m.fully_read",e.ReadPrivate="m.read.private",e}({}),a_="main";function TF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function RF(e){for(var t=1;t{n.append(e,String(t))}):n.append(e,String(o)))};for(var[i,o]of Object.entries(e))r(i);return n}function IF(e,t,n){var r=RF(RF({},n),{},{[t]:n[e]});return delete r[e],r}function Ae(e,t){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];null!=r&&(e=e.replace(n,encodeURIComponent(r)))}return e}function JE(e,t,n){var r;if(n){for(r=e.length-1;r>=0;r--)if(t(e[r],r,e))return e.splice(r,1),!0}else for(r=0;r$w(e[0],t[0])),t}function kF(e){return"number"==typeof e&&isFinite(e)}function Xd(e){return"string"==typeof e?Zge(e.normalize("NFD").replace(sve,"")):""}function QE(e){return"string"==typeof e?e.replace(/[\u202d-\u202e]/g,""):""}function ive(e){return Xd(e.toLowerCase()).replace(/[\\'!"#$%&()*+,\-./:;<=>?@[\]^_`{|}~\u2000-\u206f\u2e00-\u2e7f]/g,"").toLowerCase()}var sve=/[\u2000-\u200F\u202A-\u202F\u0300-\u036F\uFEFF\u061C\u2800\u2062-\u2063\s]/g;function NX(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function UX(e){return NX(e).replace(/\\\*/g,".*").replace(/\?/g,".")}function gk(e){return null!=e&&e.endsWith("/")?e.slice(0,-1):e}function vp(e,t){return new Promise(n=>{setTimeout(n,e,t)})}function Hot(e,t,n){return U5.apply(this,arguments)}function U5(){return(U5=H(function*(e,t,n){var r=Date.now();try{return yield n()}finally{var i=Date.now();e.debug("[Perf]: ".concat(t," took ").concat(i-r,"ms"))}})).apply(this,arguments)}function ove(e,t,n){var r=Date.now();try{return n()}finally{var i=Date.now();e.debug("[Perf]: ".concat(t," took ").concat(i-r,"ms"))}}function jX(e){return null==e}function ig(e,t){return j5.apply(this,arguments)}function j5(){return(j5=H(function*(e,t){for(var n of e)yield t(yield n)})).apply(this,arguments)}function Tm(e){return Promise.resolve(e())}function ave(e){return MX(t=>e(t),{forever:!0,factor:2,minTimeout:3e3,maxTimeout:15e3})}var uf=(()=>{for(var e="",t=32;t<=126;t++)e+=String.fromCharCode(t);return e})();function xF(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:uf;return e.padEnd(t,n[0])}function sb(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:uf,r=BigInt(n.length);if(e<=r)return null!==(t=n[Number(e)-1])&&void 0!==t?t:"";var i=e/r,o=Number(e%r)-1;return o<0&&(i-=BigInt(Math.abs(o)),o=Number(r)-1),sb(i,n)+n[o]}function ZE(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:uf,n=BigInt(t.length),r=BigInt(0),i=e.length-1,o=BigInt(0);i>=0;i--,o++){var s=e.charCodeAt(i)-t.charCodeAt(0);r+=BigInt(1+s)*n**o}return r}function cve(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:uf,r=Math.max(e.length,t.length),i=ZE(xF(e,r,n),n),o=ZE(xF(t,r,n),n),s=(i+o)/BigInt(2);return s===i||s==o?sb(s,n)+n[0]:sb(s,n)}function d0(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:uf;return sb(ZE(e,t)+BigInt(1),t)}function AF(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:uf;return sb(ZE(e,t)-BigInt(1),t)}function $w(e,t){return et?1:0}function FX(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var[r,i]of Object.entries(t))e[r]instanceof Object&&i?FX(e[r],i):null==i&&n||eC(e,r,i);return e}function PF(e){var t;return null!==(t=kf.findIn(e.getContent()))&&void 0!==t?t:-1}function lve(e,t){return PF(t)-PF(e)}function L7(e){return[os.Read,os.ReadPrivate].includes(e)}function LF(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(e,t)=>e===t;if(e.size!==t.size)return!1;for(var[r,i]of e){var o=t.get(r);if(void 0===o||!n(i,o))return!1}return!0}function $X(e){return e instanceof Map?xh(e):Array.isArray(e)?e.map(e=>$X(e)):e}function xh(e){var t=new Map;for(var[n,r]of e)t.set(n,$X(r));return Object.fromEntries(t.entries())}function _y(e){return"__proto__"===e||"prototype"===e||"constructor"===e}function eC(e,t,n){if(_y(t))throw new Error("Trying to modify prototype or constructor");e[t]=n}function Ha(e){return!(_y(e.room_id)||_y(e.sender)||_y(e.event_id))}class pu extends Map{constructor(e){super(),this.createDefault=e}getOrCreate(e){return this.has(e)||this.set(e,this.createDefault()),this.get(e)}}var F5="migrationState",Qg=function(e){return e[e.NOT_STARTED=0]="NOT_STARTED",e[e.INITIAL_DATA_MIGRATED=1]="INITIAL_DATA_MIGRATED",e[e.OLM_SESSIONS_MIGRATED=2]="OLM_SESSIONS_MIGRATED",e[e.MEGOLM_SESSIONS_MIGRATED=3]="MEGOLM_SESSIONS_MIGRATED",e[e.ROOM_SETTINGS_MIGRATED=4]="ROOM_SETTINGS_MIGRATED",e[e.INITIAL_OWN_KEY_QUERY_DONE=5]="INITIAL_OWN_KEY_QUERY_DONE",e}({}),Zg=50;function OF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function MF(e){for(var t=1;t=Zg)return t;return 0===t.length?null:t})()}deleteEndToEndSessionsBatch(e){var t=this;return H(function*(){for(var{deviceKey:n,sessionId:r}of e){var i=t.sessions[n]||{};delete i[r],0===Object.keys(i).length&&delete t.sessions[n]}})()}getEndToEndInboundGroupSession(e,t,n,r){var i=g2(e,t);r(this.inboundGroupSessions[i]||null,this.inboundGroupSessionsWithheld[i]||null)}storeEndToEndInboundGroupSession(e,t,n,r){var i=g2(e,t);this.inboundGroupSessions[i]=n}countEndToEndInboundGroupSessions(){var e=this;return H(function*(){return Object.keys(e.inboundGroupSessions).length})()}getEndToEndInboundGroupSessionsBatch(){var e=this;return H(function*(){var t=[];for(var[n,r]of Object.entries(e.inboundGroupSessions))if(t.push(MF(MF({},uve(n)),{},{sessionData:r,needsBackup:n in e.sessionsNeedingBackup})),t.length>=Zg)return t;return 0===t.length?null:t})()}deleteEndToEndInboundGroupSessionsBatch(e){var t=this;return H(function*(){for(var{senderKey:n,sessionId:r}of e){var i=g2(n,r);delete t.inboundGroupSessions[i]}})()}getEndToEndRooms(e,t){t(this.rooms)}markSessionsNeedingBackup(e){for(var t of e){var n=g2(t.senderKey,t.sessionId);this.sessionsNeedingBackup[n]=!0}return Promise.resolve()}doTxn(e,t,n){return Promise.resolve(n(null))}}var dve=/^(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(?:\[[\dA-Fa-f:.]{2,45}])|(?:[A-Za-z\d\-.]{1,255}))(?::\d{1,5})?$/;function fve(e){var t=dve.exec(e);return t?.[0]===e}var hve=/^[\w-]+$/;function pve(e){var t=hve.exec(e);return t?.[0]===e}function H3(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=arguments.length>6?arguments[6]:void 0,a=arguments.length>7?arguments[7]:void 0;if("string"!=typeof t||!t)return"";if(!t.startsWith("mxc://"))return o?t:"";var[c,l,...u]=t.slice(6).split("/");if(u.length>0||!fve(c)||!pve(l))return"";a&&(s=!0);var d,h=!!n||!!r||!!i?"thumbnail":"download";d=a?"/_matrix/client/v1/media/".concat(h):"/_matrix/media/v3/".concat(h);var p=new URL("".concat(d,"/").concat(c,"/").concat(l),e);return n&&p.searchParams.set("width",Math.round(n).toString()),r&&p.searchParams.set("height",Math.round(r).toString()),i&&p.searchParams.set("method",i),"boolean"==typeof s&&p.searchParams.set("allow_redirect",JSON.stringify(s)),p.href}var DF,Hw={exports:{}},mve=Hw.exports;function gve(){return DF||(DF=1,t=mve,n=function(){var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"],i={},o=null;function s(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch{return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function c(){for(var n=this.getLevel(),i=0;i=0&&t<=d.levels.SILENT)return t;throw new TypeError("log.setLevel() called with invalid level: "+e)}"string"==typeof e?h+=":"+e:"symbol"==typeof e&&(h=void 0),d.name=e,d.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},d.methodFactory=n||u,d.getLevel=function(){return l??a??s},d.setLevel=function(e,n){return l=f(e),!1!==n&&function(e){var n=(r[e]||"silent").toUpperCase();if(typeof window!==t&&h){try{return void(window.localStorage[h]=n)}catch{}try{window.document.cookie=encodeURIComponent(h)+"="+n+";"}catch{}}}(l),c.call(d)},d.setDefaultLevel=function(e){a=f(e),p()||d.setLevel(e,!1)},d.resetLevel=function(){l=null,function(){if(typeof window!==t&&h){try{window.localStorage.removeItem(h)}catch{}try{window.document.cookie=encodeURIComponent(h)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}(),c.call(d)},d.enableAll=function(e){d.setLevel(d.levels.TRACE,e)},d.disableAll=function(e){d.setLevel(d.levels.SILENT,e)},d.rebuild=function(){if(o!==d&&(s=f(o.getLevel())),c.call(d),o===d)for(var e in i)i[e].rebuild()},s=f(o?o.getLevel():"WARN");var m=p();null!=m&&(l=f(m)),c.call(d)}(o=new d).getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=i[e];return t||(t=i[e]=new d(e,o.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return o.noConflict=function(){return typeof window!==t&&window.log===o&&(window.log=h),o},o.getLoggers=function(){return i},o.default=o,o},(e=Hw).exports?e.exports=n():t.log=n()),Hw.exports;var e,t,n}var vve=gve();const $5=ic(vve);var yve="matrix";function HX(e){var t=yve+(void 0===e?"":"-".concat(e)),n=$5.getLogger(t);return void 0===n.getChild&&(n.prefix=e,n.getChild=t=>{var r=HX((e??"")+t);return r.methodFactory=n.methodFactory,r.rebuild(),r},n.setLevel($5.levels.DEBUG,!1)),n}$5.methodFactory=function(e,t,n){return function(){for(var t=arguments.length,n=new Array(t),r=0;r1?n-1:0),i=1;i0&&c.length>i&&!c.warned){c.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+c.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=c.length,function(e){console&&console.warn&&console.warn(e)}(l)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function u(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=l.bind(r);return i.listener=n,r.wrapFn=i,i}function d(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var l=c.length,u=p(c,l);for(r=0;r=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},i.prototype.listeners=function(e){return d(this,e,!0)},i.prototype.rawListeners=function(e){return d(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},i.prototype.listenerCount=h,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]},v2.exports}var B3=bve();const BX=ic(B3);var VX=function(e){return e.NewListener="newListener",e.RemoveListener="removeListener",e.Error="error",e}({});class Ln extends B3.EventEmitter{addListener(e,t){return super.addListener(e,t)}emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?r-1:0),o=1;oe(...i))).then(()=>s.length>0)})()}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}off(e,t){return super.off(e,t)}on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}prependListener(e,t){return super.prependListener(e,t)}prependOnceListener(e,t){return super.prependOnceListener(e,t)}removeAllListeners(e){return void 0===e?super.removeAllListeners():super.removeAllListeners(e)}removeListener(e,t){return super.removeListener(e,t)}rawListeners(e){return super.rawListeners(e)}}var Z=function(e){return e.RoomCanonicalAlias="m.room.canonical_alias",e.RoomCreate="m.room.create",e.RoomJoinRules="m.room.join_rules",e.RoomMember="m.room.member",e.RoomThirdPartyInvite="m.room.third_party_invite",e.RoomPowerLevels="m.room.power_levels",e.RoomName="m.room.name",e.RoomTopic="m.room.topic",e.RoomAvatar="m.room.avatar",e.RoomPinnedEvents="m.room.pinned_events",e.RoomEncryption="m.room.encryption",e.RoomHistoryVisibility="m.room.history_visibility",e.RoomGuestAccess="m.room.guest_access",e.RoomServerAcl="m.room.server_acl",e.RoomTombstone="m.room.tombstone",e.RoomPredecessor="org.matrix.msc3946.room_predecessor",e.PolicyRuleUser="m.policy.rule.user",e.PolicyRuleRoom="m.policy.rule.room",e.PolicyRuleServer="m.policy.rule.server",e.SpaceChild="m.space.child",e.SpaceParent="m.space.parent",e.RoomRedaction="m.room.redaction",e.RoomMessage="m.room.message",e.RoomMessageEncrypted="m.room.encrypted",e.Sticker="m.sticker",e.CallInvite="m.call.invite",e.CallCandidates="m.call.candidates",e.CallAnswer="m.call.answer",e.CallHangup="m.call.hangup",e.CallReject="m.call.reject",e.CallSelectAnswer="m.call.select_answer",e.CallNegotiate="m.call.negotiate",e.CallSDPStreamMetadataChanged="m.call.sdp_stream_metadata_changed",e.CallSDPStreamMetadataChangedPrefix="org.matrix.call.sdp_stream_metadata_changed",e.CallReplaces="m.call.replaces",e.CallAssertedIdentity="m.call.asserted_identity",e.CallAssertedIdentityPrefix="org.matrix.call.asserted_identity",e.CallEncryptionKeysPrefix="io.element.call.encryption_keys",e.KeyVerificationRequest="m.key.verification.request",e.KeyVerificationStart="m.key.verification.start",e.KeyVerificationCancel="m.key.verification.cancel",e.KeyVerificationMac="m.key.verification.mac",e.KeyVerificationDone="m.key.verification.done",e.KeyVerificationKey="m.key.verification.key",e.KeyVerificationAccept="m.key.verification.accept",e.KeyVerificationReady="m.key.verification.ready",e.RoomMessageFeedback="m.room.message.feedback",e.Reaction="m.reaction",e.PollStart="org.matrix.msc3381.poll.start",e.Typing="m.typing",e.Receipt="m.receipt",e.Presence="m.presence",e.FullyRead="m.fully_read",e.Tag="m.tag",e.SpaceOrder="org.matrix.msc3230.space_order",e.PushRules="m.push_rules",e.Direct="m.direct",e.IgnoredUserList="m.ignored_user_list",e.RoomKey="m.room_key",e.RoomKeyRequest="m.room_key_request",e.ForwardedRoomKey="m.forwarded_room_key",e.Dummy="m.dummy",e.SecretRequest="m.secret.request",e.SecretSend="m.secret.send",e.GroupCallPrefix="org.matrix.msc3401.call",e.GroupCallMemberPrefix="org.matrix.msc3401.call.member",e.CallNotify="org.matrix.msc4075.call.notify",e.RTCNotification="org.matrix.msc4075.rtc.notification",e.RTCDecline="org.matrix.msc4310.rtc.decline",e}({}),bn=function(e){return e.Annotation="m.annotation",e.Replace="m.replace",e.Reference="m.reference",e.Thread="m.thread",e.unstable_RTCNotificationParent="org.matrix.msc4075.rtc.notification.parent",e}({}),ol=function(e){return e.Text="m.text",e.Emote="m.emote",e.Notice="m.notice",e.Image="m.image",e.File="m.file",e.Audio="m.audio",e.Location="m.location",e.Video="m.video",e.KeyVerificationRequest="m.key.verification.request",e}({}),tC="type",_g=function(e){return e.Space="m.space",e.UnstableCall="org.matrix.msc3417.call",e.ElementVideo="io.element.video",e}({}),V3="org.matrix.msgid",H5=new xr("m.room.purpose","org.matrix.msc3088.purpose"),B5=new xr("m.enabled","org.matrix.msc3088.enabled"),V5=new xr("m.data_tree","org.matrix.msc3089.data_tree"),qX=new xr("m.leaf","org.matrix.msc3089.leaf"),eu=new xr("m.branch","org.matrix.msc3089.branch"),GX=new xr("m.room.marker","org.matrix.msc2716.marker"),q5=new xr("with_rel_types","org.matrix.msc3912.with_relations"),KX=new xr("io.element.functional_members","io.element.functional_members"),Ah=new xr("m.visibility","org.matrix.msc3531.visibility"),G5=new xr("enabled","org.matrix.msc3881.enabled"),_ve=new xr("device_id","org.matrix.msc3881.device_id"),zX=new xr("m.local_notification_settings","org.matrix.msc3890.local_notification_settings"),nC=new xr("thread_id","org.matrix.msc4023.thread_id"),WX=new i_("membership","io.element.msc4115.membership"),He=function(e){return e.Ban="ban",e.Invite="invite",e.Join="join",e.Knock="knock",e.Leave="leave",e}({}),js=function(e){return e.Membership="RoomMember.membership",e.Name="RoomMember.name",e.PowerLevel="RoomMember.powerLevel",e.Typing="RoomMember.typing",e}({});class ob extends Ln{constructor(e,t){super(),this.roomId=e,this.userId=t,L(this,"_isOutOfBand",!1),L(this,"modified",-1),L(this,"requestedProfileInfo",!1),L(this,"typing",!1),L(this,"name",void 0),L(this,"rawDisplayName",void 0),L(this,"powerLevel",0),L(this,"user",void 0),L(this,"membership",void 0),L(this,"disambiguate",!1),L(this,"events",{}),this.name=t,this.rawDisplayName=t,this.updateModifiedTime()}markOutOfBand(){this._isOutOfBand=!0}isOutOfBand(){return this._isOutOfBand}setMembershipEvent(e,t){var n,r,i=null!==(n=e.getDirectionalContent().displayname)&&void 0!==n?n:"";if(e.getType()===Z.RoomMember){this._isOutOfBand=!1,this.events.member=e;var o=this.membership;this.membership=e.getDirectionalContent().membership,void 0===this.membership&&M.trace("membership event with membership undefined (forwardLooking: ".concat(e.forwardLooking,")!"),e.getContent(),"prevcontent is ",e.getPrevContent()),this.disambiguate=Eve(this.userId,i,t);var s=this.name;this.name=Cve(this.userId,i,this.disambiguate),this.rawDisplayName=QE(null!==(r=e.getDirectionalContent().displayname)&&void 0!==r?r:""),(!this.rawDisplayName||!Xd(this.rawDisplayName))&&(this.rawDisplayName=this.userId),o!==this.membership&&(this.updateModifiedTime(),this.emit(js.Membership,e,this,o)),s!==this.name&&(this.updateModifiedTime(),this.emit(js.Name,e,this,s))}}setPowerLevel(e,t){var n=this.powerLevel;this.powerLevel=e,n!==this.powerLevel&&(this.updateModifiedTime(),this.emit(js.PowerLevel,t,this))}setTypingEvent(e){if("m.typing"===e.getType()){var t=this.typing;this.typing=!1;var n=e.getContent().user_ids;Array.isArray(n)&&(-1!==n.indexOf(this.userId)&&(this.typing=!0),t!==this.typing&&(this.updateModifiedTime(),this.emit(js.Typing,e,this)))}}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}isKicked(){return this.membership===He.Leave&&void 0!==this.events.member&&this.events.member.getSender()!==this.events.member.getStateKey()}getDMInviter(){if(this.events.member){var e=this.events.member,t=e.getContent(),n=e.getSender();if(t.membership===He.Join&&(t=e.getPrevContent(),n=e.getUnsigned().prev_sender),t.membership===He.Invite&&t.is_direct)return n}}getAvatarUrl(e,t,n,r){var i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=arguments.length>5?arguments[5]:void 0,s=arguments.length>6&&void 0!==arguments[6]&&arguments[6],a=this.getMxcAvatarUrl();return(a||i)&&H3(e,a,t,n,r,o,void 0,s)||null}getMxcAvatarUrl(){return this.events.member?this.events.member.getDirectionalContent().avatar_url:this.user?this.user.avatarUrl:void 0}}var Sve=/@.+:.+/,wve=/[\u200E\u200F\u202A-\u202F]/;function Eve(e,t,n){if(!t||t===e||!n)return!1;var r=Xd(t);return!!r&&(!(!Sve.test(r)&&!wve.test(t))||!!n.getUserIdsWithDisplayName(t).some(t=>t!==e))}function Cve(e,t,n){return t&&t!==e?n?QE(t)+" ("+e+")":Xd(t)?QE(t):e:e}var UF,vk={},f0={},h0={};function YX(){if(UF)return h0;function e(e,n){var r=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return t(e,n)}}(e))||n){r&&(e=r);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,s=e},f:function(){try{!a&&null!=r.return&&r.return()}finally{if(c)throw s}}}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function o(e,t){return(o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}jF=1,Object.defineProperty(p0,"__esModule",{value:!0}),p0.InvalidEventError=void 0;var a=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&o(e,t)}(r,e);var n=t(r);function r(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r),n.call(this,e)}return function(e){return Object.defineProperty(e,"prototype",{writable:!1}),e}(r)}(n(Error));return p0.InvalidEventError=a,p0}var FF,Rm={},m0={},g0={};function l_(){if(FF)return g0;function e(e,t,n){return t&&function(e,t){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var i,o=r(t);if(n){var s=r(this).constructor;i=Reflect.construct(o,arguments,s)}else i=o.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(t)}(this,i)}}function r(e){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t,n){return t&&function(e,t){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var r,i=h(t);if(n){var o=h(this).constructor;r=Reflect.construct(i,arguments,o)}else r=i.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return d(t)}(this,r)}}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)}(s,e);var t=u(s);function s(e){var o;(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,s),p(d(o=t.call(this,e)),"text",void 0),p(d(o),"html",void 0),p(d(o),"renderings",void 0);var a=i.M_MESSAGE.findIn(o.wireContent),c=i.M_TEXT.findIn(o.wireContent),l=i.M_HTML.findIn(o.wireContent);if((0,n.isProvided)(a)){if(!Array.isArray(a))throw new r.InvalidEventError("m.message contents must be an array");var u=a.find(function(e){return!(0,n.isProvided)(e.mimetype)||"text/plain"===e.mimetype}),h=a.find(function(e){return"text/html"===e.mimetype});if(!u)throw new r.InvalidEventError("m.message is missing a plain text representation");o.text=u.body,o.html=h?.body,o.renderings=a}else{if(!(0,n.isOptionalAString)(c))throw new r.InvalidEventError("Missing textual representation for event");o.text=c,o.html=l,o.renderings=[{body:c,mimetype:"text/plain"}],o.html&&o.renderings.push({body:o.html,mimetype:"text/html"})}return o}return function(e,t,n){t&&c(e.prototype,t),n&&c(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(s,[{key:"isEmote",get:function(){return i.M_EMOTE.matches(this.wireFormat.type)||(0,n.isProvided)(i.M_EMOTE.findIn(this.wireFormat.content))}},{key:"isNotice",get:function(){return i.M_NOTICE.matches(this.wireFormat.type)||(0,n.isProvided)(i.M_NOTICE.findIn(this.wireFormat.content))}},{key:"isEquivalentTo",value:function(e){return(0,o.isEventTypeSame)(e,i.M_MESSAGE)}},{key:"serializeMMessageOnly",value:function(){var e=p({},i.M_MESSAGE.name,this.renderings);if(1===this.renderings.length){var t=this.renderings[0].mimetype;(void 0===t||"text/plain"===t)&&(e=p({},i.M_TEXT.name,this.renderings[0].body))}return e}},{key:"serialize",value:function(){var e;return{type:"m.room.message",content:a(a({},this.serializeMMessageOnly()),{},{body:this.text,msgtype:"m.text",format:this.html?"org.matrix.custom.html":void 0,formatted_body:null!==(e=this.html)&&void 0!==e?e:void 0})}}}],[{key:"from",value:function(e,t){var n;return new s({type:i.M_MESSAGE.name,content:(n={},p(n,i.M_TEXT.name,e),p(n,i.M_HTML.name,t),n)})}}]),s}(t.ExtensibleEvent);return m0.MessageEvent=f,m0}var GF,y0={};function M7(){if(GF)return y0;function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}GF=1,Object.defineProperty(y0,"__esModule",{value:!0}),y0.NoticeEvent=void 0;var t=bp(),n=al(),r=yp();function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var r,i=l(t);if(n){var o=l(this).constructor;r=Reflect.construct(i,arguments,o)}else r=i.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(t)}(this,r)}}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var u=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(u,e);var t=c(u);function u(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),t.call(this,e)}return function(e,t,n){t&&o(e.prototype,t),n&&o(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(u,[{key:"isNotice",get:function(){return!0}},{key:"isEquivalentTo",value:function(e){return(0,r.isEventTypeSame)(e,n.M_NOTICE)||s(l(u.prototype),"isEquivalentTo",this).call(this,e)}},{key:"serialize",value:function(){var e=s(l(u.prototype),"serialize",this).call(this);return e.content.msgtype="m.notice",e}}],[{key:"from",value:function(e,t){var r;return new u({type:n.M_NOTICE.name,content:(r={},i(r,n.M_TEXT.name,e),i(r,n.M_HTML.name,t),r)})}}]),u}(t.MessageEvent);return y0.NoticeEvent=u,y0}var KF,zF,b0={};function D7(){if(KF)return b0;function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}KF=1,Object.defineProperty(b0,"__esModule",{value:!0}),b0.EmoteEvent=void 0;var t=bp(),n=al(),r=yp();function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var r,i=l(t);if(n){var o=l(this).constructor;r=Reflect.construct(i,arguments,o)}else r=i.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(t)}(this,r)}}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var u=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(u,e);var t=c(u);function u(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),t.call(this,e)}return function(e,t,n){t&&o(e.prototype,t),n&&o(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(u,[{key:"isEmote",get:function(){return!0}},{key:"isEquivalentTo",value:function(e){return(0,r.isEventTypeSame)(e,n.M_EMOTE)||s(l(u.prototype),"isEquivalentTo",this).call(this,e)}},{key:"serialize",value:function(){var e=s(l(u.prototype),"serialize",this).call(this);return e.content.msgtype="m.emote",e}}],[{key:"from",value:function(e,t){var r;return new u({type:n.M_EMOTE.name,content:(r={},i(r,n.M_TEXT.name,e),i(r,n.M_HTML.name,t),r)})}}]),u}(t.MessageEvent);return b0.EmoteEvent=u,b0}function JX(){if(zF)return Rm;zF=1,Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.LEGACY_M_ROOM_MESSAGE=void 0,Rm.parseMRoomMessage=function(r){var o,c,l;if(i.M_MESSAGE.findIn(r.content)||i.M_TEXT.findIn(r.content))return new e.MessageEvent(r);var u,d=null===(o=r.content)||void 0===o?void 0:o.msgtype,h=null===(c=r.content)||void 0===c?void 0:c.body,p="org.matrix.custom.html"===(null===(l=r.content)||void 0===l?void 0:l.format)?r.content.formatted_body:null;return"m.text"===d?new e.MessageEvent(s(s({},r),{},{content:s(s({},r.content),{},(u={},a(u,i.M_TEXT.name,h),a(u,i.M_HTML.name,p),u))})):"m.notice"===d?new t.NoticeEvent(s(s({},r),{},{content:s(s({},r.content),{},(f={},a(f,i.M_TEXT.name,h),a(f,i.M_HTML.name,p),f))})):"m.emote"===d?new n.EmoteEvent(s(s({},r),{},{content:s(s({},r.content),{},(m={},a(m,i.M_TEXT.name,h),a(m,i.M_HTML.name,p),m))})):null;var f,m};var e=bp(),t=M7(),n=D7(),r=Dv(),i=al();function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var r,i=b(t);if(n){var o=b(this).constructor;r=Reflect.construct(i,arguments,o)}else r=i.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return y(t)}(this,r)}}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _=function(e){m(n,e);var t=v(n);function n(e){var r;h(this,n),w(y(r=t.call(this,e)),"id",void 0);var o=e.content.id;if(!o||"string"!=typeof o)throw new i.InvalidEventError("Answer ID must be a non-empty string");return r.id=o,r}return f(n,[{key:"serialize",value:function(){return{type:"org.matrix.sdk.poll.answer",content:d({id:this.id},this.serializeMMessageOnly())}}}],[{key:"from",value:function(e,t){return new n({type:"org.matrix.sdk.poll.answer",content:w({id:e},r.M_TEXT.name,t)})}}]),n}(n.MessageEvent);ch.PollAnswerSubevent=_;var S=function(e){m(l,e);var a=v(l);function l(e){var r;h(this,l),w(y(r=a.call(this,e)),"question",void 0),w(y(r),"kind",void 0),w(y(r),"rawKind",void 0),w(y(r),"maxSelections",void 0),w(y(r),"answers",void 0);var o=t.M_POLL_START.findIn(r.wireContent);if(!o.question)throw new i.InvalidEventError("A question is required");if(r.question=new n.MessageEvent({type:"org.matrix.sdk.poll.question",content:o.question}),r.rawKind=o.kind,t.M_POLL_KIND_DISCLOSED.matches(r.rawKind)?r.kind=t.M_POLL_KIND_DISCLOSED:r.kind=t.M_POLL_KIND_UNDISCLOSED,r.maxSelections=Number.isFinite(o.max_selections)&&o.max_selections>0?o.max_selections:1,!Array.isArray(o.answers))throw new i.InvalidEventError("Poll answers must be an array");var s=o.answers.slice(0,20).map(function(e){return new _({type:"org.matrix.sdk.poll.answer",content:e})});if(s.length<=0)throw new i.InvalidEventError("No answers available");return r.answers=s,r}return f(l,[{key:"isEquivalentTo",value:function(e){return(0,s.isEventTypeSame)(e,t.M_POLL_START)}},{key:"serialize",value:function(){var e;return{type:t.M_POLL_START.name,content:(e={},w(e,t.M_POLL_START.name,{question:this.question.serialize().content,kind:this.rawKind,max_selections:this.maxSelections,answers:this.answers.map(function(e){return e.serialize().content})}),w(e,r.M_TEXT.name,"".concat(this.question.text,"\n").concat(this.answers.map(function(e,t){return"".concat(t+1,". ").concat(e.text)}).join("\n"))),e)}}}],[{key:"from",value:function(e,n,i){var s,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return new l({type:t.M_POLL_START.name,content:(s={},w(s,r.M_TEXT.name,e),w(s,t.M_POLL_START.name,{question:w({},r.M_TEXT.name,e),kind:i instanceof o.NamespacedValue?i.name:i,max_selections:a,answers:n.map(function(e){return w({id:c(Array(16)).map(function(){return E.charAt(Math.floor(Math.random()*E.length))}).join("")},r.M_TEXT.name,e)})}),s)})}}]),l}(a.ExtensibleEvent);ch.PollStartEvent=S;var E="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";return ch}var JF,QF,_0={},S0={};function N7(){if(JF)return S0;JF=1,Object.defineProperty(S0,"__esModule",{value:!0}),S0.REFERENCE_RELATION=void 0;var e=new(Dv().NamespacedValue)("m.reference");return S0.REFERENCE_RELATION=e,S0}function eJ(){if(QF)return _0;function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}QF=1,Object.defineProperty(_0,"__esModule",{value:!0}),_0.PollResponseEvent=void 0;var t=l_(),n=Nv(),r=Mv(),i=N7(),o=yp();function s(e,t){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var r,i=u(t);if(n){var o=u(this).constructor;r=Reflect.construct(i,arguments,o)}else r=i.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return l(t)}(this,r)}}function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function u(e){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(u,e);var t=c(u);function u(e){var n;(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,u),d(l(n=t.call(this,e)),"internalAnswerIds",void 0),d(l(n),"internalSpoiled",void 0),d(l(n),"pollEventId",void 0);var o=n.wireContent["m.relates_to"];if(!i.REFERENCE_RELATION.matches(o?.rel_type)||"string"!=typeof o?.event_id)throw new r.InvalidEventError("Relationship must be a reference to an event");return n.pollEventId=o.event_id,n.validateAgainst(null),n}return function(e,t,n){t&&s(e.prototype,t),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(u,[{key:"answerIds",get:function(){return this.internalAnswerIds}},{key:"spoiled",get:function(){return this.internalSpoiled}},{key:"validateAgainst",value:function(e){var t=n.M_POLL_RESPONSE.findIn(this.wireContent);if(!Array.isArray(t?.answers))return this.internalSpoiled=!0,void(this.internalAnswerIds=[]);var r=t.answers;if(r.some(function(e){return"string"!=typeof e})||0===r.length)return this.internalSpoiled=!0,void(this.internalAnswerIds=[]);if(e){if(r.some(function(t){return!e.answers.some(function(e){return e.id===t})}))return this.internalSpoiled=!0,void(this.internalAnswerIds=[]);r=r.slice(0,e.maxSelections)}this.internalAnswerIds=r,this.internalSpoiled=!1}},{key:"isEquivalentTo",value:function(e){return(0,o.isEventTypeSame)(e,n.M_POLL_RESPONSE)}},{key:"serialize",value:function(){return{type:n.M_POLL_RESPONSE.name,content:d({"m.relates_to":{rel_type:i.REFERENCE_RELATION.name,event_id:this.pollEventId}},n.M_POLL_RESPONSE.name,{answers:this.spoiled?void 0:this.answerIds})}}}],[{key:"from",value:function(e,t){return new u({type:n.M_POLL_RESPONSE.name,content:d({"m.relates_to":{rel_type:i.REFERENCE_RELATION.name,event_id:t}},n.M_POLL_RESPONSE.name,{answers:e})})}}]),u}(t.ExtensibleEvent);return _0.PollResponseEvent=h,_0}var ZF,e$,t$,w0={};function tJ(){if(ZF)return w0;function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}ZF=1,Object.defineProperty(w0,"__esModule",{value:!0}),w0.PollEndEvent=void 0;var t=Nv(),n=Mv(),r=N7(),i=bp(),o=al(),s=yp();function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function c(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var r,i=p(t);if(n){var o=p(this).constructor;r=Reflect.construct(i,arguments,o)}else r=i.apply(this,arguments);return function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return h(t)}(this,r)}}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}(p,e);var a=d(p);function p(e){var t;(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,p),f(h(t=a.call(this,e)),"pollEventId",void 0),f(h(t),"closingMessage",void 0);var o=t.wireContent["m.relates_to"];if(!r.REFERENCE_RELATION.matches(o?.rel_type)||"string"!=typeof o?.event_id)throw new n.InvalidEventError("Relationship must be a reference to an event");return t.pollEventId=o.event_id,t.closingMessage=new i.MessageEvent(t.wireFormat),t}return function(e,t,n){t&&l(e.prototype,t),n&&l(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(p,[{key:"isEquivalentTo",value:function(e){return(0,s.isEventTypeSame)(e,t.M_POLL_END)}},{key:"serialize",value:function(){return{type:t.M_POLL_END.name,content:c(f({"m.relates_to":{rel_type:r.REFERENCE_RELATION.name,event_id:this.pollEventId}},t.M_POLL_END.name,{}),this.closingMessage.serialize().content)}}}],[{key:"from",value:function(e,n){var i;return new p({type:t.M_POLL_END.name,content:(i={"m.relates_to":{rel_type:r.REFERENCE_RELATION.name,event_id:e}},f(i,t.M_POLL_END.name,{}),f(i,o.M_TEXT.name,n),i)})}}]),p}(l_().ExtensibleEvent);return w0.PollEndEvent=m,w0}function nJ(){if(e$)return _2;e$=1,Object.defineProperty(_2,"__esModule",{value:!0}),_2.parseMPoll=function(i){return e.M_POLL_START.matches(i.type)?new t.PollStartEvent(i):e.M_POLL_RESPONSE.matches(i.type)?new n.PollResponseEvent(i):e.M_POLL_END.matches(i.type)?new r.PollEndEvent(i):null};var e=Nv(),t=ZX(),n=eJ(),r=tJ();return _2}function Tve(){if(t$)return f0;t$=1,Object.defineProperty(f0,"__esModule",{value:!0}),f0.ExtensibleEvents=void 0;var e=YX(),t=Mv(),n=JX(),r=QX(),i=al(),o=Nv(),s=nJ();function a(e,t){var n=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}}(e))||t){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{!s&&null!=n.return&&n.return()}finally{if(a)throw o}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))};const i=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),s=o?.nonce||o?.getAttribute("nonce");r=e(t.map(e=>{if((e=Ave(e,n))in s$)return;s$[e]=!0;const t=e.endsWith(".css"),r=t?'[rel="stylesheet"]':"";if(n)for(let n=i.length-1;n>=0;n--){const r=i[n];if(r.href===e&&(!t||"stylesheet"===r.rel))return}else if(document.querySelector(`link[href="${e}"]${r}`))return;const o=document.createElement("link");return o.rel=t?"stylesheet":xve,t||(o.as="script"),o.crossOrigin="",o.href=e,s&&o.setAttribute("nonce",s),document.head.appendChild(o),t?new Promise((t,n)=>{o.addEventListener("load",t),o.addEventListener("error",()=>n(new Error(`Unable to preload CSS for ${e}`)))}):void 0}))}function i(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(const e of t||[])"rejected"===e.status&&i(e.reason);return e().catch(i)})};function Pve(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}function Lve(e,t){if(null==e)return{};var n,r,i=Pve(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r1&&void 0!==arguments[1]?arguments[1]:{};if(this.events.length>0)throw new Error("Cannot initialise state after events are added");null===(t=this.startState)||void 0===t||t.setStateEvents(e,{timelineWasEmpty:r}),null===(n=this.endState)||void 0===n||n.setStateEvents(e,{timelineWasEmpty:r})}forkLive(e){var t=this.getState(e),n=new Me(this.eventTimelineSet);return n.startState=t?.clone(),n.endState=t,this.endState=t?.clone(),n}fork(e){var t=this.getState(e),n=new Me(this.eventTimelineSet);return n.startState=t?.clone(),n.endState=t?.clone(),n}getRoomId(){return this.roomId}getFilter(){return this.eventTimelineSet.getFilter()}getTimelineSet(){return this.eventTimelineSet}getBaseIndex(){return this.baseIndex}getEvents(){return this.events}getState(e){if(e==Me.BACKWARDS)return this.startState;if(e==Me.FORWARDS)return this.endState;throw new Error("Invalid direction '"+e+"'")}getPaginationToken(e){return this.roomId?this.getState(e).paginationToken:e===ht.Backward?this.startToken:this.endToken}setPaginationToken(e,t){this.roomId?this.getState(t).paginationToken=e:t===ht.Backward?this.startToken=e:this.endToken=e}getNeighbouringTimeline(e){if(e==Me.BACKWARDS)return this.prevTimeline;if(e==Me.FORWARDS)return this.nextTimeline;throw new Error("Invalid direction '"+e+"'")}setNeighbouringTimeline(e,t){if(this.getNeighbouringTimeline(t))throw new Error("timeline already has a neighbouring timeline - cannot reset neighbour (direction: "+t+")");if(t==Me.BACKWARDS)this.prevTimeline=e;else{if(t!=Me.FORWARDS)throw new Error("Invalid direction '"+t+"'");this.nextTimeline=e}this.setPaginationToken(null,t)}addEvent(e,t){var{toStartOfTimeline:n,roomState:r,timelineWasEmpty:i,addToState:o}=t;r||(r=n?this.startState:this.endState);var s,a,c=this.getTimelineSet();c.room&&(Me.setEventMetadata(e,r,n),o&&e.isState()&&c.room.getUnfilteredTimelineSet()===c)&&(null===(s=r)||void 0===s||s.setStateEvents([e],{timelineWasEmpty:i}),(!e.sender||e.getType()===Z.RoomMember&&!n)&&Me.setEventMetadata(e,r,n));a=n?0:this.events.length,this.events.splice(a,0,e),n&&this.baseIndex++}insertEvent(e,t,n,r){var i=this.getTimelineSet();i.room&&(Me.setEventMetadata(e,n,!1),r&&e.isState()&&i.room.getUnfilteredTimelineSet()===i&&(n.setStateEvents([e],{}),(!e.sender||e.getType()===Z.RoomMember)&&Me.setEventMetadata(e,n,!1))),this.events.splice(t,0,e)}removeEvent(e){for(var t=this.events.length-1;t>=0;t--){var n=this.events[t];if(n.getId()==e)return this.events.splice(t,1),t2&&void 0!==arguments[2]?arguments[2]:[]].includes(e)};class U7 extends Ln{constructor(e,t,n,r){var i,o;super(),i=this,this.relationType=e,this.eventType=t,this.altEventTypes=r,L(this,"relationEventIds",new Set),L(this,"relations",new Set),L(this,"annotationsByKey",{}),L(this,"annotationsBySender",{}),L(this,"sortedAnnotationsByKey",[]),L(this,"targetEvent",null),L(this,"creationEmitted",!1),L(this,"client",void 0),L(this,"onEventStatus",(e,t)=>{e.isSending()?t===rt.CANCELLED&&(e.removeListener(Gt.Status,this.onEventStatus),this.removeEvent(e)):e.removeListener(Gt.Status,this.onEventStatus)}),L(this,"onBeforeRedaction",(o=H(function*(e){if(i.relations.has(e)){if(i.relations.delete(e),i.relationType===bn.Annotation)i.removeAnnotationFromAggregation(e);else if(i.relationType===bn.Replace&&i.targetEvent&&!i.targetEvent.isState()){var t=yield i.getLastReplacement();i.targetEvent.makeReplaced(t)}e.removeListener(Gt.BeforeRedaction,i.onBeforeRedaction),i.emit(Bw.Redaction,e)}}),function(e){return o.apply(this,arguments)})),this.client=n instanceof G3?n.client:n}addEvent(e){var t=this;return H(function*(){if(!t.relationEventIds.has(e.getId())){var n=e.getRelation();if(!n)return void M.error("Event must have relation info");var r=n.rel_type,i=e.getType();if(t.relationType!==r||!Ove(i,t.eventType,t.altEventTypes))return void M.error("Event relation info doesn't match this container");if(e.isSending()&&e.on(Gt.Status,t.onEventStatus),t.relations.add(e),t.relationEventIds.add(e.getId()),t.relationType===bn.Annotation)t.addAnnotationToAggregation(e);else if(t.relationType===bn.Replace&&t.targetEvent&&!t.targetEvent.isState()){var o=yield t.getLastReplacement();t.targetEvent.makeReplaced(o)}e.on(Gt.BeforeRedaction,t.onBeforeRedaction),t.emit(Bw.Add,e),t.maybeEmitCreated()}})()}removeEvent(e){var t=this;return H(function*(){if(t.relations.has(e)){if(t.relations.delete(e),t.relationType===bn.Annotation)t.removeAnnotationFromAggregation(e);else if(t.relationType===bn.Replace&&t.targetEvent&&!t.targetEvent.isState()){var n=yield t.getLastReplacement();t.targetEvent.makeReplaced(n)}t.emit(Bw.Remove,e)}})()}getRelations(){return[...this.relations]}addAnnotationToAggregation(e){var t,{key:n}=null!==(t=e.getRelation())&&void 0!==t?t:{};if(n){var r=this.annotationsByKey[n];r||(r=this.annotationsByKey[n]=new Set,this.sortedAnnotationsByKey.push([n,r])),r.add(e),this.sortedAnnotationsByKey.sort((e,t)=>{var n=e[1];return t[1].size-n.size});var i=e.getSender(),o=this.annotationsBySender[i];o||(o=this.annotationsBySender[i]=new Set),o.add(e)}}removeAnnotationFromAggregation(e){var t,{key:n}=null!==(t=e.getRelation())&&void 0!==t?t:{};if(n){var r=this.annotationsByKey[n];r&&(r.delete(e),this.sortedAnnotationsByKey.sort((e,t)=>{var n=e[1];return t[1].size-n.size}));var i=e.getSender(),o=this.annotationsBySender[i];o&&o.delete(e)}}getSortedAnnotationsByKey(){return this.relationType!==bn.Annotation?null:this.sortedAnnotationsByKey}getAnnotationsBySender(){return this.relationType!==bn.Annotation?null:this.annotationsBySender}getLastReplacement(){var e=this;return H(function*(){if(e.relationType!==bn.Replace||!e.targetEvent)return null;var t=e.targetEvent.getServerAggregatedRelation(bn.Replace),n=t?.origin_server_ts,r=e.getRelations().reduce((t,r)=>r.getSender()!==e.targetEvent.getSender()||n&&n>r.getTs()||t&&t.getTs()>r.getTs()?t:r,null);return null!=r&&r.shouldAttemptDecryption()&&e.client.getCrypto()?yield r.attemptDecryption(e.client.getCrypto()):null!=r&&r.isBeingDecrypted()&&(yield r.getDecryptionPromise()),r})()}setTargetEvent(e){var t=this;return H(function*(){if(!t.targetEvent){if(t.targetEvent=e,t.relationType===bn.Replace&&!t.targetEvent.isState()){var n=yield t.getLastReplacement();n&&t.targetEvent.makeReplaced(n)}t.maybeEmitCreated()}})()}maybeEmitCreated(){this.creationEmitted||!this.targetEvent||!this.relations.size||(this.creationEmitted=!0,this.targetEvent.emit(Gt.RelationsCreated,this.relationType,this.eventType))}}class rJ{constructor(e,t){this.client=e,this.room=t,L(this,"relations",new Map)}getChildEventsForEvent(e,t,n){var r;return null===(r=this.relations.get(e))||void 0===r||null===(r=r.get(t))||void 0===r?void 0:r.get(n)}getAllChildEventsForEvent(e){var t,n=null!==(t=this.relations.get(e))&&void 0!==t?t:new Map,r=[];for(var i of n.values())for(var o of i.values())r.push(...o.getRelations());return r}aggregateParentEvent(e){var t=this.relations.get(e.getId());if(t)for(var n of t.values())for(var r of n.values())r.setTargetEvent(e)}aggregateChildEvent(e,t){if(!e.isRedacted()&&e.status!==rt.CANCELLED){var n=e.getRelation();if(n){var r=()=>{e.isDecryptionFailure()?e.once(Gt.Decrypted,r):this.aggregateChildEvent(e,t)};if(e.isBeingDecrypted()||e.shouldAttemptDecryption())return void e.once(Gt.Decrypted,r);var{event_id:i,rel_type:o}=n,s=e.getType(),a=this.relations.get(i);a||(a=new Map,this.relations.set(i,a));var c=a.get(o);c||(c=new Map,a.set(o,c));var l=c.get(s);if(!l){var u,d,h;l=new U7(o,s,this.client),c.set(s,l);var p=null!==(u=this.room)&&void 0!==u?u:t?.room,f=null!==(d=null!==(h=t?.findEventById(i))&&void 0!==h?h:p?.findEventById(i))&&void 0!==d?d:p?.getPendingEvent(i);f&&l.setTargetEvent(f)}l.addEvent(e)}}}}Jm=M.log.bind(M);var Sy=function(e){return e.Ignore="ignore",e.Replace="replace",e}({});class sg extends Ln{constructor(e){var t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;super(),this.room=e,this.thread=s,this.threadListType=a,L(this,"relations",void 0),L(this,"timelineSupport",void 0),L(this,"displayPendingEvents",void 0),L(this,"liveTimeline",void 0),L(this,"timelines",void 0),L(this,"_eventIdToTimeline",new Map),L(this,"filter",void 0),this.timelineSupport=!!i.timelineSupport,this.liveTimeline=new Me(this),this.displayPendingEvents=!1!==i.pendingEvents,this.timelines=[this.liveTimeline],this._eventIdToTimeline=new Map,this.filter=i.filter,this.relations=null!==(t=null===(n=this.room)||void 0===n?void 0:n.relations)&&void 0!==t?t:new rJ(null!==(r=e?.client)&&void 0!==r?r:o)}getTimelines(){return this.timelines}getFilter(){return this.filter}setFilter(e){this.filter=e}getPendingEvents(){return this.room&&this.displayPendingEvents?this.room.getPendingEvents():[]}getLiveTimeline(){return this.liveTimeline}setLiveTimeline(e){this.liveTimeline=e}eventIdToTimeline(e){return this._eventIdToTimeline.get(e)}replaceEventId(e,t){var n=this._eventIdToTimeline.get(e);n&&(this._eventIdToTimeline.delete(e),this._eventIdToTimeline.set(t,n))}resetLiveTimeline(e,t){var n=!this.timelineSupport||!t,r=this.liveTimeline,i=n?r.forkLive(Me.FORWARDS):r.fork(Me.FORWARDS);n?(this.timelines=[i],this._eventIdToTimeline=new Map):this.timelines.push(i),t&&r.setPaginationToken(t,Me.FORWARDS),i.setPaginationToken(e??null,Me.BACKWARDS),this.liveTimeline=i,this.emit(ke.TimelineReset,this.room,this,n)}getTimelineForEvent(e){if(null==e)return null;var t=this._eventIdToTimeline.get(e);return void 0===t?null:t}findEventById(e){var t=this.getTimelineForEvent(e);if(t)return t.getEvents().find(function(t){return t.getId()==e})}addTimeline(){if(!this.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");var e=new Me(this);return this.timelines.push(e),e}addEventsToTimeline(e,t,n,r,i){if(!r)throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");if(!t&&r==this.liveTimeline)throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to the live timeline - use Room.addLiveEvents instead");if(!this.filter||(e=this.filter.filterRoomTimeline(e)).length){var o=t?Me.BACKWARDS:Me.FORWARDS,s=t?Me.FORWARDS:Me.BACKWARDS,a=!1,c=!1;for(var l of e){var u=l.getId(),d=this._eventIdToTimeline.get(u);if(d)if(c=!1,d!=r){var h=r.getNeighbouringTimeline(o);if(h)Jm(d==h?"Event "+u+" in neighbouring timeline - switching to "+d:"Event "+u+" already in a different timeline "+d),r=d;else{M.info("Already have timeline for "+u+" - joining timeline "+r+" to "+d);var p=d===this.liveTimeline,f=r===this.liveTimeline,m=o===Me.BACKWARDS&&p,g=o===Me.FORWARDS&&f;m||g?(m&&M.warn("Refusing to set a preceding existingTimeLine on our timeline as the existingTimeLine is live ("+d+")"),g&&M.warn("Refusing to set our preceding timeline on a existingTimeLine as our timeline is live ("+r+")")):(r.setNeighbouringTimeline(d,o),d.setNeighbouringTimeline(r,s),r=d,a=!0)}}else Jm("Event "+u+" already in timeline "+r);else this.addEventToTimeline(l,r,{toStartOfTimeline:t,addToState:n}),c=!0,a=!0}if(c||!a){if(o===Me.FORWARDS&&r===this.liveTimeline)return M.warn({lastEventWasNew:c,didUpdate:a}),void M.warn("Refusing to set forwards pagination token of live timeline "+"".concat(r," to ").concat(i));r.setPaginationToken(i??null,o)}}}addLiveEvent(e,t){var{duplicateStrategy:n,fromCache:r,roomState:i,timelineWasEmpty:o,addToState:s}=t;if(this.filter&&!this.filter.filterRoomTimeline([e]).length)return;var a=this._eventIdToTimeline.get(e.getId());if(a)if(n===Sy.Replace){Jm("EventTimelineSet.addLiveEvent: replacing duplicate event "+e.getId());for(var c=a.getEvents(),l=0;l{var o=e??hJ(t,i||Jg.Self,n,r),s=n?{[kf.name]:n}:{};return jve({msgtype:ol.Location,body:o,geo_uri:t,[o_.name]:{description:r,uri:t},[s_.name]:{type:i||Jg.Self},[j7.name]:o},s)},Fve=e=>{var t,n,r=o_.findIn(e),i=s_.findIn(e),o=kf.findIn(e),s=j7.findIn(e),a=null!==(t=r?.uri)&&void 0!==t?t:e?.geo_uri,c=r?.description,l=null!==(n=i?.type)&&void 0!==n?n:Jg.Self,u=s??e.body;return pJ(u,a,o??void 0,c,l)},mJ=(e,t)=>{var n=[];return rC(t)&&n.push({body:t,mimetype:"text/html"}),rC(e)&&n.push({body:e,mimetype:"text/plain"}),{topic:e,[F7.name]:n}},$ve=e=>{var t,n,r,i,o,s=F7.findIn(e);return Array.isArray(s)?{text:null!==(t=null!==(n=null==s||null===(r=s.find(e=>!rC(e.mimetype)||"text/plain"===e.mimetype))||void 0===r?void 0:r.body)&&void 0!==n?n:e.topic)&&void 0!==t?t:void 0,html:null==s||null===(i=s.find(e=>"text/html"===e.mimetype))||void 0===i?void 0:i.body}:{text:null!==(o=e.topic)&&void 0!==o?o:void 0}},Hve=(e,t,n,r,i)=>({description:n,timeout:e,live:t,[kf.name]:i||Date.now(),[s_.name]:{type:r??Jg.Self}}),gJ=e=>{var t,{description:n,timeout:r,live:i}=e,o=null!==(t=kf.findIn(e))&&void 0!==t?t:void 0,s=s_.findIn(e);return{description:n,timeout:r,live:i,assetType:s?.type,timestamp:o}},Bve=(e,t,n,r)=>({[o_.name]:{description:r,uri:e},[kf.name]:t,"m.relates_to":{rel_type:oJ.name,event_id:n}}),K5=e=>{var t,n=o_.findIn(e),r=null!==(t=kf.findIn(e))&&void 0!==t?t:void 0;return{description:n?.description,uri:n?.uri,timestamp:r}};const Vve=Object.freeze(Object.defineProperty({__proto__:null,getTextForLocationEvent:hJ,makeBeaconContent:Bve,makeBeaconInfoContent:Hve,makeEmoteMessage:fJ,makeHtmlEmote:lJ,makeHtmlMessage:aJ,makeHtmlNotice:cJ,makeLocationContent:pJ,makeNotice:dJ,makeTextMessage:uJ,makeTopicContent:mJ,parseBeaconContent:K5,parseBeaconInfoContent:gJ,parseLocationEvent:Fve,parseTopicContent:$ve},Symbol.toStringTag,{value:"Module"}));var qn=function(e){return e.New="Beacon.new",e.Update="Beacon.update",e.LivenessChange="Beacon.LivenessChange",e.Destroy="Beacon.Destroy",e.LocationUpdate="Beacon.LocationUpdate",e}({}),z5=(e,t,n)=>n>=e&&e+t>=n,iC=e=>"".concat(e.getRoomId(),"_").concat(e.getStateKey());class vJ extends Ln{constructor(e){super(),this.rootEvent=e,L(this,"roomId",void 0),L(this,"_beaconInfo",void 0),L(this,"_isLive",void 0),L(this,"livenessWatchTimeout",void 0),L(this,"_latestLocationEvent",void 0),L(this,"clearLatestLocation",()=>{this._latestLocationEvent=void 0,this.emit(qn.LocationUpdate,this.latestLocationState)}),this.roomId=this.rootEvent.getRoomId(),this.setBeaconInfo(this.rootEvent)}get isLive(){return!!this._isLive}get identifier(){return iC(this.rootEvent)}get beaconInfoId(){return this.rootEvent.getId()}get beaconInfoOwner(){return this.rootEvent.getStateKey()}get beaconInfoEventType(){return this.rootEvent.getType()}get beaconInfo(){return this._beaconInfo}get latestLocationState(){return this._latestLocationEvent&&K5(this._latestLocationEvent.getContent())}get latestLocationEvent(){return this._latestLocationEvent}update(e){if(iC(e)!==this.identifier)throw new Error("Invalid updating event");e.getTs()1&&(this.livenessWatchTimeout=setTimeout(()=>{this.monitorLiveness()},e))}else this.beaconInfo.timestamp>Date.now()&&(this.livenessWatchTimeout=setTimeout(()=>{this.monitorLiveness()},this.beaconInfo.timestamp-Date.now()))}addLocations(e){var t;if(this.isLive){var n=null===(t=e.filter(e=>{var t=e.getContent(),n=K5(t);if(!n.uri||!n.timestamp)return!1;var{timestamp:r}=n;return this._beaconInfo.timestamp&&z5(this._beaconInfo.timestamp,this._beaconInfo.timeout,r)&&(!this.latestLocationState||r>this.latestLocationState.timestamp)}).sort(lve))||void 0===t?void 0:t[0];n&&(this._latestLocationEvent=n,this.emit(qn.LocationUpdate,this.latestLocationState))}}setBeaconInfo(e){this._beaconInfo=gJ(e.getContent()),this.checkLiveness()}checkLiveness(){var e=this.isLive;if(this.beaconInfo){var t=this.beaconInfo.timestamp>Date.now()?this.beaconInfo.timestamp-36e4:this.beaconInfo.timestamp;this._isLive=!!this._beaconInfo.live&&!!t&&z5(t,this._beaconInfo.timeout,Date.now()),e!==this.isLive&&this.emit(qn.LivenessChange,this.isLive,this)}}}function l$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function qve(e){for(var t=1;t3&&void 0!==arguments[3]&&arguments[3];return new Zi({content:{[t.getId()]:{[n]:{[e]:qve({ts:t.getTs()},!r&&{thread_id:rv(t)})}}},type:Z.Receipt,room_id:t.getRoomId()})}var km=0,xm=1;class bJ extends Ln{constructor(){super(...arguments),L(this,"receipts",new pu(()=>new Map)),L(this,"receiptCacheByEventId",new Map)}getReadReceiptForUserId(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:os.Read,[o,s]=null!==(t=null===(n=this.receipts.get(i))||void 0===n?void 0:n.get(e))&&void 0!==t?t:[null,null];return r?o:s??o}compareReceipts(e,t){var n;return null!==(n=this.getUnfilteredTimelineSet().compareEventOrdering(e.eventId,t.eventId))&&void 0!==n?n:e.data.ts-t.data.ts}getEventReadUpTo(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getLatestReceipt(e,t);return n&&this.receiptPointsAtConsistentEvent(n)?n.eventId:null}receiptPointsAtConsistentEvent(e){var t,n=this.findEventById(e.eventId);if(!n)return!1;if(null===(t=e.data)||void 0===t||!t.thread_id)return!0;if(e.data.thread_id===a_){if(hb(n))return!0}else if(n.threadRootId===e.data.thread_id)return!0;return M.warn("Ignoring receipt because its thread_id (".concat(e.data.thread_id,") disagrees ")+"with the thread root (".concat(n.threadRootId,") of the referenced event ")+"(event ID = ".concat(e.eventId,")")),!1}getLatestReceipt(e,t){var n,r,i,o=this.getReadReceiptForUserId(e,t,os.Read),s=this.getReadReceiptForUserId(e,t,os.ReadPrivate);return null!=o&&o.eventId&&null!=s&&s.eventId&&(i=this.compareReceipts(o,s)),i?null!==(r=i<0?s:o)&&void 0!==r?r:null:null!==(n=s??o)&&void 0!==n?n:null}addReceiptToStructure(e,t,n,r,i){var o,s,a=this.receipts.getOrCreate(t),c=a.get(n);c||(c=[null,null],a.set(n,c));var l,u=c[km];i&&(u=null!==(l=c[xm])&&void 0!==l?l:c[km]);var d={eventId:e,data:r};if(u&&this.compareReceipts(u,d)>=0)return;var h=i?c[km]:d,p=i?d:c[xm],f=null;h&&p&&(f=this.getUnfilteredTimelineSet().compareEventOrdering(h.eventId,p.eventId));var m=null===f||f<0,g=null!==(o=c[xm])&&void 0!==o?o:c[km];if(i&&m?c[xm]=d:i||(c[km]=d,m||(c[xm]=null)),g!==(null!==(s=c[xm])&&void 0!==s?s:c[km])){if(g&&this.receiptCacheByEventId.get(g.eventId)){var v=g.eventId;this.receiptCacheByEventId.set(v,this.receiptCacheByEventId.get(v).filter(e=>e.type!==t||e.userId!==n)),this.receiptCacheByEventId.get(v).length<1&&this.receiptCacheByEventId.delete(v)}this.receiptCacheByEventId.get(e)||this.receiptCacheByEventId.set(e,[]),this.receiptCacheByEventId.get(e).push({userId:n,type:t,data:r})}}getReceiptsForEvent(e){return this.receiptCacheByEventId.get(e.getId())||[]}fixupNotifications(e){var t=this.getReadReceiptForUserId(e,!1),n=this.timeline[this.timeline.length-1];n&&t?.eventId===n.getId()&&e===n.getSender()&&(this.setUnread(Xt.Total,0),this.setUnread(Xt.Highlight,0))}addLocalEchoReceipt(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.addReceipt(yJ(e,t,n,r),!0)}getUsersReadUpTo(e){return this.getReceiptsForEvent(e).filter(function(e){return L7(e.type)}).map(function(e){return e.userId})}}var Gve=new Xs.UnstableValue("m.poll.disclosed","org.matrix.msc3381.poll.disclosed"),Kve=new Xs.UnstableValue("m.poll.undisclosed","org.matrix.msc3381.poll.undisclosed"),zve=new Xs.UnstableValue("m.poll.start","org.matrix.msc3381.poll.start"),lb=new Xs.UnstableValue("m.poll.response","org.matrix.msc3381.poll.response"),sC=new Xs.UnstableValue("m.poll.end","org.matrix.msc3381.poll.end"),Pd=function(e){return e.New="Poll.new",e.End="Poll.end",e.Update="Poll.update",e.Responses="Poll.Responses",e.Destroy="Poll.Destroy",e.UndecryptableRelations="Poll.UndecryptableRelations",e}({}),u$=(e,t)=>({responseEvents:e.filter(e=>{if(!e.isDecryptionFailure())return lb.matches(e.getType())&&e.getTs()<=t})});class _J extends Ln{constructor(e,t,n){if(super(),this.rootEvent=e,this.matrixClient=t,this.room=n,L(this,"roomId",void 0),L(this,"pollEvent",void 0),L(this,"_isFetchingResponses",!1),L(this,"relationsNextBatch",void 0),L(this,"responses",null),L(this,"endEvent",void 0),L(this,"undecryptableRelationEventIds",new Set),L(this,"countUndecryptableEvents",e=>{var t=e.filter(e=>e.isDecryptionFailure()).map(e=>e.getId()),n=this.undecryptableRelationsCount;this.undecryptableRelationEventIds=new Set([...this.undecryptableRelationEventIds,...t]),this.undecryptableRelationsCount!==n&&this.emit(Pd.UndecryptableRelations,this.undecryptableRelationsCount)}),!this.rootEvent.getRoomId()||!this.rootEvent.getId())throw new Error("Invalid poll start event.");this.roomId=this.rootEvent.getRoomId(),this.pollEvent=this.rootEvent.unstableExtensibleEvent}get pollId(){return this.rootEvent.getId()}get endEventId(){var e;return null===(e=this.endEvent)||void 0===e?void 0:e.getId()}get isEnded(){return!!this.endEvent}get isFetchingResponses(){return this._isFetchingResponses}get undecryptableRelationsCount(){return this.undecryptableRelationEventIds.size}getResponses(){var e=this;return H(function*(){return e.responses||e.isFetchingResponses||(yield e.fetchResponses()),e.responses})()}onNewRelation(e){var t;if(sC.matches(e.getType())&&this.validateEndEvent(e)&&(this.endEvent=e,this.refilterResponsesOnEnd(),this.emit(Pd.End)),this.responses){var n=(null===(t=this.endEvent)||void 0===t?void 0:t.getTs())||Number.MAX_SAFE_INTEGER,{responseEvents:r}=u$([e],n);this.countUndecryptableEvents([e]),r.length&&(r.forEach(e=>{this.responses.addEvent(e)}),this.emit(Pd.Responses,this.responses))}}fetchResponses(){var e=this;return H(function*(){var t,n;e._isFetchingResponses=!0;var r=yield e.matrixClient.relations(e.roomId,e.rootEvent.getId(),"m.reference",void 0,{from:e.relationsNextBatch||void 0});yield Promise.all(r.events.map(t=>e.matrixClient.decryptEventIfNeeded(t)));var i=e.responses||new U7("m.reference",lb.name,e.matrixClient,[lb.altName]),o=r.events.find(e=>sC.matches(e.getType()));e.validateEndEvent(o)&&(e.endEvent=o,e.refilterResponsesOnEnd(),e.emit(Pd.End));var s=(null===(t=e.endEvent)||void 0===t?void 0:t.getTs())||Number.MAX_SAFE_INTEGER,{responseEvents:a}=u$(r.events,s);a.forEach(e=>{i.addEvent(e)}),e.relationsNextBatch=null!==(n=r.nextBatch)&&void 0!==n?n:void 0,e.responses=i,e.countUndecryptableEvents(r.events),e.relationsNextBatch?e.fetchResponses():e._isFetchingResponses=!1,e.emit(Pd.Responses,e.responses)})()}refilterResponsesOnEnd(){var e;if(this.responses){var t=(null===(e=this.endEvent)||void 0===e?void 0:e.getTs())||Number.MAX_SAFE_INTEGER;this.responses.getRelations().forEach(e=>{var n;e.getTs()>t&&(null===(n=this.responses)||void 0===n||n.removeEvent(e))}),this.emit(Pd.Responses,this.responses)}}validateEndEvent(e){if(!e||this.endEvent&&this.endEvent.getTs(){var t=e.getType();return Xs.M_POLL_START.matches(t)||lb.matches(t)||sC.matches(t)};class Wve{constructor(e){L(this,"room",void 0),L(this,"threadedReceipts",void 0),L(this,"unthreadedReceipts",void 0),L(this,"danglingReceipts",void 0),L(this,"onTimelineEvent",e=>{var t=e.getId();if(t){var n=this.danglingReceipts.remove(t);n?.forEach(e=>{e.receipt.thread_id?this.threadedReceipts.set(e.receipt.thread_id,e.eventId,e.receiptType,e.userId,e.receipt.ts,e.synthetic):this.unthreadedReceipts.set(t,e.receiptType,e.userId,e.receipt.ts,e.synthetic)})}}),this.room=e,this.threadedReceipts=new Qve(e),this.unthreadedReceipts=new wJ(e),this.danglingReceipts=new Zve,e.on(ke.Timeline,this.onTimelineEvent)}add(e,t){for(var[n,r]of Object.entries(e))for(var[i,o]of Object.entries(r))for(var[s,a]of Object.entries(o)){this.room.findEventById(n)?a.thread_id?this.threadedReceipts.set(a.thread_id,n,i,s,a.ts,t):this.unthreadedReceipts.set(n,i,s,a.ts,t):this.danglingReceipts.add(new Xve(n,i,s,a,t))}}hasUserReadEvent(e,t){var n=this.unthreadedReceipts.get(e);if(n&&W5(n.eventId,t,this.room))return!0;var r=this.room.findEventById(t);if(!r)return M.warn("hasUserReadEvent event ID ".concat(t," not found in room ").concat(this.room.roomId,": this shouldn't happen!")),!1;var i=rv(r),o=this.threadedReceipts.get(i,e);return!!(o&&W5(o.eventId,t,this.room)||this.userSentLatestEventInThread(i,e))}userSentLatestEventInThread(e,t){var n,r=e===a_?this.room.getLiveTimeline().getEvents():null===(n=this.room.getThread(e))||void 0===n?void 0:n.timeline;return!!(r&&r.length>0&&r[r.length-1].getSender()===t)}}class Yve{constructor(e,t,n){this.eventId=e,this.receiptType=t,this.ts=n}}class Xve{constructor(e,t,n,r,i){this.eventId=e,this.receiptType=t,this.userId=n,this.receipt=r,this.synthetic=i}}class Jve{constructor(e){L(this,"room",void 0),L(this,"real",void 0),L(this,"synthetic",void 0),this.room=e,this.real=void 0,this.synthetic=void 0}set(e,t){e?this.synthetic=t:this.real=t,this.synthetic&&this.real&&W5(this.real.eventId,this.synthetic.eventId,this.room)&&(this.synthetic=void 0)}get(){var e;return null!==(e=this.synthetic)&&void 0!==e?e:this.real}getByType(e){return e?this.synthetic:this.real}}class wJ{constructor(e){L(this,"room",void 0),L(this,"data",void 0),this.room=e,this.data=new Map}set(e,t,n,r,i){var o=$7(this.data,n,()=>new Jve(this.room)),s=o.getByType(i);s&&e1e(s.eventId,e,this.room)||o.set(i,new Yve(e,t,r))}get(e){var t;return null===(t=this.data.get(e))||void 0===t?void 0:t.get()}}class Qve{constructor(e){L(this,"room",void 0),L(this,"data",void 0),this.room=e,this.data=new Map}set(e,t,n,r,i,o){$7(this.data,e,()=>new wJ(this.room)).set(t,n,r,i,o)}get(e,t){var n;return null===(n=this.data.get(e))||void 0===n?void 0:n.get(t)}}class Zve{constructor(){L(this,"data",new Map)}add(e){$7(this.data,e.eventId,()=>[]).push(e)}remove(e){var t=this.data.get(e);return this.data.delete(e),t}}function $7(e,t,n){var r=e.get(t);if(r)return r;var i=n();return e.set(t,i),i}function W5(e,t,n){var r=n.compareEventOrdering(e,t);return null!==r&&r>=0}function e1e(e,t,n){var r=n.compareEventOrdering(e,t);return null!==r&&r>0}function t1e(e,t,n){var r=e.findEventById(t),i=e.findEventById(n);if(!r||!i)return null;var o=hb(r),s=hb(i);return o&&s?n1e(e,t,n,r,i):r1e(t,n,r,i)}function n1e(e,t,n,r,i){var o=e.getUnfilteredTimelineSet(),s=o.compareEventOrdering(t,n);return null!==s?s:o.getTimelineForEvent(t)===o.getLiveTimeline()?1:o.getTimelineForEvent(n)===o.getLiveTimeline()?-1:EJ(r,i)}function r1e(e,t,n,r){var i=rv(n),o=rv(r),s=n.getThread();return s&&i===o?s.timelineSet.compareEventOrdering(e,t):EJ(n,r)}function EJ(e,t){var n=e.getTs(),r=t.getTs();return nr?1:0}var ue=function(e){return e.Get="GET",e.Put="PUT",e.Post="POST",e.Delete="DELETE",e.Options="OPTIONS",e.Head="HEAD",e.Patch="PATCH",e}({});function d$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i1e(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,o=e.error||"Unknown message";t&&(o="[".concat(t,"] ").concat(o)),n&&(o="".concat(o," (").concat(n,")")),super("MatrixError: ".concat(o),t,i),this.url=n,this.event=r,L(this,"errcode",void 0),L(this,"data",void 0),this.errcode=e.errcode,this.name=e.errcode||"Unknown error code",this.data=e}isRateLimitError(){return"M_LIMIT_EXCEEDED"===this.errcode||("M_UNKNOWN"===this.errcode||void 0===this.errcode)&&super.isRateLimitError()}getRetryAfterMs(){var e=super.getRetryAfterMs();if(null!==e)return e;if("M_LIMIT_EXCEEDED"===this.errcode&&"retry_after_ms"in this.data){if(!Number.isInteger(this.data.retry_after_ms))throw new Error("retry_after_ms is not an integer");return this.data.retry_after_ms}return null}asWidgetApiErrorData(){var e,t,n,r,i={};if(this.httpHeaders)for(var[o,s]of this.httpHeaders)i[o]=s;return{http_status:null!==(e=this.httpStatus)&&void 0!==e?e:400,http_headers:i,url:null!==(t=this.url)&&void 0!==t?t:"",response:i1e({errcode:null!==(n=this.errcode)&&void 0!==n?n:"M_UNKNOWN",error:null!==(r=this.data.error)&&void 0!==r?r:"Unknown message"},this.data)}}static fromWidgetApiErrorData(e){return new or(e.response,e.http_status,e.url,void 0,new Headers(e.http_headers))}}function H7(e,t){if(!(e instanceof Xh&&e.isRateLimitError()))return t;try{var n;return null!==(n=e.getRetryAfterMs())&&void 0!==n?n:t}catch{return t}}let _p=class extends Error{constructor(e,t){super(e+(t?": ".concat(t.message):""))}get name(){return"ConnectionError"}};class CJ extends Error{constructor(e){var t;super(null!==(t=e?.message)&&void 0!==t?t:"")}get name(){return"TokenRefreshError"}}class B7 extends Error{constructor(e){var t;super(null!==(t=e?.message)&&void 0!==t?t:"")}get name(){return"TokenRefreshLogoutError"}}var f$,Y5=function(e){return e.SessionLoggedOut="Session.logged_out",e.NoConsent="no_consent",e}({}),S2={};function s1e(){if(f$)return S2;f$=1;var e=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,t=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,n=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,r=/\\([\u000b\u0020-\u00ff])/g,i=/([\\"])/g,o=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function s(e){var r=String(e);if(n.test(r))return r;if(r.length>0&&!t.test(r))throw new TypeError("invalid parameter value");return'"'+r.replace(i,"\\$1")+'"'}function a(e){this.parameters=Object.create(null),this.type=e}return S2.format=function(e){if(!e||"object"!=typeof e)throw new TypeError("argument obj is required");var t=e.parameters,r=e.type;if(!r||!o.test(r))throw new TypeError("invalid type");var i=r;if(t&&"object"==typeof t)for(var a,c=Object.keys(t).sort(),l=0;l{t.abort()},e),t.signal}function TJ(e){var t=new AbortController;function n(){for(var t of e)t.removeEventListener("abort",r)}function r(){t.abort(),n()}for(var i of e){if(i.aborted){r();break}i.addEventListener("abort",r)}return{signal:t.signal,cleanup:n}}function V7(e,t){var n,r,i,o=h$(e)?new Headers(e.getAllResponseHeaders().trim().split(/[\r\n]+/).map(e=>{var t=e.indexOf(":");return[e.substring(0,t),e.substring(t+1)]})):e.headers;try{i=a1e(o)}catch(e){return e}return"application/json"===(null===(n=i)||void 0===n?void 0:n.type)&&t?new or(JSON.parse(t),e.status,h$(e)?e.responseURL:e.url,void 0,o):"text/plain"===(null===(r=i)||void 0===r?void 0:r.type)?new Xh("Server returned ".concat(e.status," error: ").concat(t),e.status,o):new Xh("Server returned ".concat(e.status," error"),e.status,o)}function h$(e){return"getResponseHeader"in e}function a1e(e){var t=e.get("Content-Type");if(null===t)return null;try{return o1e.parse(t)}catch(e){throw new Error("Error parsing Content-Type '".concat(t,"': ").concat(e))}}function X5(e,t){return J5.apply(this,arguments)}function J5(){return(J5=H(function*(e,t){for(var n=0,r=null;n0){var i=1e3*Math.pow(2,n);M.log("network operation failed ".concat(n," times, retrying in ").concat(i,"ms...")),yield vp(i)}return yield t()}catch(e){if(!(e instanceof _p))throw e;n+=1,r=e}throw r})).apply(this,arguments)}function q7(e,t,n){return t>4||e instanceof _p&&!n||e.httpStatus&&4===Math.floor(e.httpStatus/100)&&429!==e.httpStatus||"AbortError"===e.name||"M_TOO_LARGE"===e.name?-1:H7(e,1e3*Math.pow(2,t))}var Ld=function(e){return e.Success="success",e.Failure="failure",e.Logout="logout",e}({}),c1e=500,l1e=6e4;class u1e{constructor(e){this.opts=e,L(this,"tokenRefreshPromise",void 0),L(this,"latestTokenRefreshExpiry",void 0)}prepareForRequest(){var e=this;return H(function*(){return yield e.refreshIfNeeded(),{accessToken:e.opts.accessToken,refreshToken:e.opts.refreshToken,expiry:e.latestTokenRefreshExpiry}})()}refreshIfNeeded(){var e=this;return H(function*(){if(e.tokenRefreshPromise)return e.tokenRefreshPromise;e.latestTokenRefreshExpiry&&(e.latestTokenRefreshExpiry.getTime()-Date.now()<=c1e&&(yield e._handleUnknownToken()))})()}handleUnknownToken(e,t){var n=this;return H(function*(){return n._handleUnknownToken(e,t)})()}_handleUnknownToken(e,t){var n=this;return H(function*(){if(null!=e&&e.expiry&&e.expiry.getTime()-Date.now()>=l1e)return Ld.Logout;if(!e||e?.accessToken===n.opts.accessToken){var r;null!==(r=n.tokenRefreshPromise)&&void 0!==r||(n.tokenRefreshPromise=n.doTokenRefresh(t));try{return yield n.tokenRefreshPromise}finally{n.tokenRefreshPromise=void 0}}return Ld.Success})()}doTokenRefresh(e){var t=this;return H(function*(){var n;if(!t.opts.refreshToken||!t.opts.tokenRefreshFunction)return null===(n=t.opts.logger)||void 0===n||n.error("Unable to refresh token - no refresh token or refresh function"),Ld.Logout;e&&e>1&&(yield vp(1e3*Math.min(32,2**e)));try{var r,i;null===(r=t.opts.logger)||void 0===r||r.debug("Attempting to refresh token");var{accessToken:o,refreshToken:s,expiry:a}=yield t.opts.tokenRefreshFunction(t.opts.refreshToken);return t.opts.accessToken=o,t.opts.refreshToken=s,t.latestTokenRefreshExpiry=a,null===(i=t.opts.logger)||void 0===i||i.debug("... token refresh complete, new token expiry:",a),Ld.Success}catch(e){var c,l;return e instanceof B7||e instanceof or?(null===(l=t.opts.logger)||void 0===l||l.error("Failed to refresh token",e),Ld.Logout):(null===(c=t.opts.logger)||void 0===c||c.warn("Failed to refresh token",e),Ld.Failure)}})()}}function p$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function m$(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return this.doAuthedRequest(1,e,t,n,r,i)}doAuthedRequest(e,t,n,r,i){var o=arguments,s=this;return H(function*(){var a=o.length>5&&void 0!==o[5]?o[5]:{},c=c_(a);c.abortSignal=a.abortSignal;var l=yield s.tokenRefresher.prepareForRequest();l.accessToken&&(s.opts.useAuthorizationHeader?(c.headers||(c.headers={}),c.headers.Authorization||(c.headers.Authorization="Bearer ".concat(l.accessToken)),r.access_token&&delete r.access_token):r.access_token||(r.access_token=l.accessToken));try{return yield s.request(t,n,r,i,c)}catch(o){if(!(o instanceof or))throw o;if("M_UNKNOWN_TOKEN"===o.errcode){var u=yield s.tokenRefresher.handleUnknownToken(l,e);if(u===Ld.Success)return s.doAuthedRequest(e+1,t,n,r,i,a);if(u===Ld.Failure)throw new CJ(o);null!=c&&c.inhibitLogoutEmit||s.eventEmitter.emit(Y5.SessionLoggedOut,o)}else"M_CONSENT_NOT_GIVEN"==o.errcode&&s.eventEmitter.emit(Y5.NoConsent,o.message,o.data.consent_uri);throw o}})()}request(e,t,n,r,i){var o=this.getUrl(t,n,i?.prefix,i?.baseUrl);return this.requestOtherUrl(e,o,r,i)}requestOtherUrl(e,t,n){var r=arguments,i=this;return H(function*(){var o,s,a,c,l=r.length>3&&void 0!==r[3]?r[3]:{};if(void 0!==l.json&&void 0!==l.rawResponseBody)throw new Error("Invalid call to `FetchHttpApi` sets both `opts.json` and `opts.rawResponseBody`");var u=i.sanitizeUrlForLogs(t);null===(o=i.opts.logger)||void 0===o||o.debug("FetchHttpApi: --\x3e ".concat(e," ").concat(u));var d=Object.assign({},l.headers||{}),h=!l.rawResponseBody&&!1!==l.json;h&&(d.Accept||(d.Accept="application/json"));var p,f=null!==(s=l.localTimeoutMs)&&void 0!==s?s:i.opts.localTimeoutMs,m=null!==(a=l.keepAlive)&&void 0!==a&&a,g=[i.abortController.signal];void 0!==f&&g.push(q3(f)),l.abortSignal&&g.push(l.abortSignal),!1!==l.json&&(null==n||null===(c=n.constructor)||void 0===c?void 0:c.name)===Object.name?(p=JSON.stringify(n),d["Content-Type"]||(d["Content-Type"]="application/json")):p=n;var v,{signal:y,cleanup:b}=TJ(g),w=Date.now();try{var _;v=yield i.fetch(t,{signal:y,method:e,body:p,headers:d,mode:"cors",redirect:"follow",referrer:"",referrerPolicy:"no-referrer",cache:"no-cache",credentials:"omit",keepalive:m,priority:l.priority}),null===(_=i.opts.logger)||void 0===_||_.debug("FetchHttpApi: <-- ".concat(e," ").concat(u," [").concat(Date.now()-w,"ms ").concat(v.status,"]"))}catch(t){var S;throw null===(S=i.opts.logger)||void 0===S||S.debug("FetchHttpApi: <-- ".concat(e," ").concat(u," [").concat(Date.now()-w,"ms ").concat(t,"]")),"AbortError"===t.name?t:new _p("fetch failed",t)}finally{b()}if(!v.ok)throw V7(v,yield v.text());return l.rawResponseBody?yield v.blob():h?yield v.json():yield v.text()})()}sanitizeUrlForLogs(e){try{var t;t="string"==typeof e?new URL(e):e;var n=new URLSearchParams;for(var r of t.searchParams.keys())n.append(r,"xxx");var i=n.toString(),o=i?"?".concat(i):"";return t.origin+t.pathname+o}catch{return"??"}}getUrl(e,t,n,r){var i=r??this.opts.baseUrl,o=i.endsWith("/")?i.slice(0,-1):i,s=new URL(o+(n??this.opts.prefix)+e);(this.opts.extraParams||t)&&D5(m$(m$({},this.opts.extraParams),t),s.searchParams);return s}}var _k,Yr=function(e){return e.V1="/_matrix/client/v1",e.V3="/_matrix/client/v3",e.Unstable="/_matrix/client/unstable",e}({}),Ul=function(e){return e.V2="/_matrix/identity/v2",e}({}),Sg=function(e){return e.V1="/_matrix/media/v1",e.V3="/_matrix/media/v3",e}({}),f1e=1e3,h1e=0,uu=[],p1e=function(){};function g$(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;ie)break;var r=uu.shift();p1e("runCallbacks: popping",r.key),t.push(r)}for(var i of(G7(),t))try{i.func.apply(globalThis,i.params)}catch(e){M.error("Uncaught exception in callback function",e)}}function g1e(e,t){for(var n=0,r=e.length;n>1;t(e[i])>0?r=i:n=i+1}return n}class RJ extends d1e{constructor(){super(...arguments),L(this,"uploads",[])}uploadContent(e){var t,n,r,i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=null===(t=o.includeFilename)||void 0===t||t,a=null!==(n=o.abortController)&&void 0!==n?n:new AbortController,c=(null!==(r=o.type)&&void 0!==r?r:e.type)||"application/octet-stream",l=null!==(i=o.name)&&void 0!==i?i:e.name,u={loaded:0,total:0,abortController:a},d=Promise.withResolvers();if(globalThis.XMLHttpRequest){var h=new globalThis.XMLHttpRequest,p=function(){h.abort(),d.reject(new Error("Timeout"))},f=g$(p,3e4);h.onreadystatechange=function(){if(h.readyState===globalThis.XMLHttpRequest.DONE){v$(f);try{if(0===h.status)throw new DOMException(h.statusText,"AbortError");if(!h.responseText)throw new Error("No response body.");h.status>=400?d.reject(V7(h,h.responseText)):d.resolve(JSON.parse(h.responseText))}catch(e){if("AbortError"===e.name)return void d.reject(e);d.reject(new _p("request failed",e))}}},h.upload.onprogress=e=>{var t;v$(f),u.loaded=e.loaded,u.total=e.total,f=g$(p,3e4),null===(t=o.progressHandler)||void 0===t||t.call(o,{loaded:e.loaded,total:e.total})};var m=this.getUrl("/upload",void 0,Sg.V3);s&&l&&m.searchParams.set("filename",encodeURIComponent(l)),!this.opts.useAuthorizationHeader&&this.opts.accessToken&&m.searchParams.set("access_token",encodeURIComponent(this.opts.accessToken)),h.open(ue.Post,m.href),this.opts.useAuthorizationHeader&&this.opts.accessToken&&h.setRequestHeader("Authorization","Bearer "+this.opts.accessToken),h.setRequestHeader("Content-Type",c),h.send(e),a.signal.addEventListener("abort",()=>{h.abort()})}else{var g={};s&&l&&(g.filename=l);var v={"Content-Type":c};this.authedRequest(ue.Post,"/upload",g,e,{prefix:Sg.V3,headers:v,abortSignal:a.signal}).then(d.resolve,d.reject)}return u.promise=d.promise.finally(()=>{JE(this.uploads,e=>e===u)}),a.signal.addEventListener("abort",()=>{JE(this.uploads,e=>e===u),d.reject(new DOMException("Aborted","AbortError"))}),this.uploads.push(u),u.promise}cancelUpload(e){var t=this.uploads.find(t=>t.promise===e);return!!t&&(t.abortController.abort(),!0)}getCurrentUploads(){return this.uploads}getContentUri(){return{base:this.opts.baseUrl,path:Sg.V3+"/upload",params:{access_token:this.opts.accessToken}}}}var v1e=216e5,y1e=3e4,IJ=function(e){return e.Stable="stable",e.Unstable="unstable",e}({});class kJ{constructor(e,t){var n=this;this.logger=e,this.http=t,L(this,"capabilities",void 0),L(this,"retryTimeout",void 0),L(this,"refreshTimeout",void 0),L(this,"fetchCapabilities",H(function*(){var e=yield n.http.authedRequest(ue.Get,"/capabilities");return n.capabilities=e.capabilities,n.capabilities})),L(this,"poll",H(function*(){try{yield n.fetchCapabilities(),n.clearTimeouts(),n.refreshTimeout=setTimeout(n.poll,v1e),n.logger.debug("Fetched new server capabilities")}catch(t){n.clearTimeouts();var e=Math.floor(y1e+5e3*Math.random());n.retryTimeout=setTimeout(n.poll,e),n.logger.warn("Failed to refresh capabilities: retrying in ".concat(e,"ms"),t)}}))}start(){this.poll().then()}stop(){this.clearTimeouts()}getCachedCapabilities(){return this.capabilities}clearTimeouts(){this.refreshTimeout&&(clearInterval(this.refreshTimeout),this.refreshTimeout=void 0),this.retryTimeout&&(clearTimeout(this.retryTimeout),this.retryTimeout=void 0)}}function y$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function E0(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{};super(),r=this,this.roomId=e,this.client=t,this.myUserId=n,this.opts=i,L(this,"reEmitter",void 0),L(this,"txnToEvent",new Map),L(this,"notificationCounts",{}),L(this,"bumpStamp",void 0),L(this,"threadNotifications",new Map),L(this,"cachedThreadReadReceipts",new Map),L(this,"oldestThreadedReceiptTs",1/0),L(this,"unthreadedReceipts",new Map),L(this,"timelineSets",void 0),L(this,"polls",new Map),L(this,"threadsTimelineSets",[]),L(this,"filteredTimelineSets",{}),L(this,"timelineNeedsRefresh",!1),L(this,"pendingEventList",void 0),L(this,"blacklistUnverifiedDevices",void 0),L(this,"selfMembership",void 0),L(this,"heroes",null),L(this,"getTypeWarning",!1),L(this,"membersPromise",void 0),L(this,"name",void 0),L(this,"normalizedName",void 0),L(this,"tags",{}),L(this,"accountData",new Map),L(this,"summary",null),L(this,"oldState",void 0),L(this,"currentState",void 0),L(this,"relations",void 0),L(this,"threads",new Map),L(this,"visibilityEvents",new Map),L(this,"roomReceipts",new Wve(this)),L(this,"threadTimelineSetsPromise",null),L(this,"threadsReady",!1),L(this,"updateThreadRootEvents",(e,t,n)=>{var r,i;e.length&&(this.updateThreadRootEvent(null===(r=this.threadsTimelineSets)||void 0===r?void 0:r[0],e,t,n),e.hasCurrentUserParticipated&&this.updateThreadRootEvent(null===(i=this.threadsTimelineSets)||void 0===i?void 0:i[1],e,t,n))}),L(this,"updateThreadRootEvent",(e,t,n,r)=>{e&&t.rootEvent&&(r&&e.removeEvent(t.id),Nn.hasServerSideSupport?e.addLiveEvent(t.rootEvent,{duplicateStrategy:Sy.Replace,fromCache:!1,roomState:this.currentState,addToState:!1}):e.addEventToTimeline(t.rootEvent,e.getLiveTimeline(),{toStartOfTimeline:n,addToState:!1}))}),L(this,"tryApplyRedaction",e=>{if(e.isRedaction()){var t=e.event.redacts,n=t?this.findEventById(t):void 0;n&&this.applyEventAsRedaction(e,n)}else if(e.getType()===Z.RoomMember){var r=e.getContent().membership;if(r!==He.Ban&&(r!==He.Leave||e.getStateKey()===e.getSender()))return;if(!0!==e.getContent()["org.matrix.msc4293.redact_events"])return;if(!this.getLiveTimeline().getState(ht.Forward).maySendRedactionForEvent(e,e.getSender()))return;var i=this.getTimelineSets().map(e=>e.getTimelines()).reduce((e,t)=>(e.push(...t),e),[]).map(t=>t.getEvents().filter(t=>t.getSender()===e.getStateKey())).reduce((e,t)=>(e.push(...t),t),[]);for(var o of i)this.applyEventAsRedaction(e,o)}}),this.setMaxListeners(100),this.reEmitter=new Uv(this),i.pendingEventOrdering=i.pendingEventOrdering||nv.Chronological,this.name=e,this.normalizedName=e,this.relations=new rJ(this.client,this),this.on(ke.Receipt,this.onReceipt),this.timelineSets=[new sg(this,i)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),[ke.Timeline,ke.TimelineReset]),this.fixUpLegacyTimelineFields(),this.opts.pendingEventOrdering===nv.Detached&&(this.pendingEventList=[],this.client.store.getPendingEvents(this.roomId).then(e=>{var n,i=this.client.getEventMapper({decrypt:!1});e.forEach((n=H(function*(e){var n=i(e);yield t.decryptEventIfNeeded(n),n.setStatus(rt.NOT_SENT),r.addPendingEvent(n,n.getTxnId())}),function(e){return n.apply(this,arguments)}))})),this.opts.lazyLoadMembers?this.membersPromise=void 0:this.membersPromise=Promise.resolve(!1)}createThreadsTimelineSets(){var e=this;return H(function*(){var t;if(e.threadTimelineSetsPromise)return e.threadTimelineSetsPromise;if(null!==(t=e.client)&&void 0!==t&&t.supportsThreads())try{e.threadTimelineSetsPromise=Promise.all([e.createThreadTimelineSet(),e.createThreadTimelineSet(Na.My)]);var n=yield e.threadTimelineSetsPromise;return e.threadsTimelineSets[0]=n[0],e.threadsTimelineSets[1]=n[1],n}catch{return e.threadTimelineSetsPromise=null,null}return null})()}decryptCriticalEvents(){var e=this;return H(function*(){if(e.client.getCrypto()){var t=e.getEventReadUpTo(e.client.getUserId(),!0),n=e.getLiveTimeline().getEvents(),r=n.findIndex(e=>e.event.event_id===t),i=n.slice(r).reverse().map(t=>e.client.decryptEventIfNeeded(t));yield Promise.allSettled(i)}})()}decryptAllEvents(){var e=this;return H(function*(){if(e.client.getCrypto()){var t=e.getUnfilteredTimelineSet().getLiveTimeline().getEvents().slice(0).reverse().map(t=>e.client.decryptEventIfNeeded(t));yield Promise.allSettled(t)}})()}getCreator(){var e,t=this.currentState.getStateEvents(Z.RoomCreate,"");return null!==(e=t?.getSender())&&void 0!==e?e:null}getVersion(){return this.currentState.getRoomVersion()}getRecommendedVersion(){var e=this;return H(function*(){var t={};try{t=yield e.client.getCapabilities()}catch{}var n=t["m.room_versions"];if(!n)for(var r of(n={default:xJ,available:{}},b1e))n.available[r]=IJ.Stable;var i=e.checkVersionAgainstCapability(n);if(i.urgent&&i.needsUpgrade){M.warn("Refreshing room version capability because the server looks to be supporting a newer room version we don't know about.");try{t=yield e.client.fetchCapabilities()}catch(e){M.warn("Failed to refresh room version capabilities",e)}if(!(n=t["m.room_versions"]))return M.warn("No room version capability - assuming upgrade required."),i;i=e.checkVersionAgainstCapability(n)}return i})()}checkVersionAgainstCapability(e){var t=this.getVersion();M.log("[".concat(this.roomId,"] Current version: ").concat(t)),M.log("[".concat(this.roomId,"] Version capability: "),e);var n={version:t,needsUpgrade:!1,urgent:!1};return t===e.default||Object.keys(e.available).filter(t=>"stable"===e.available[t]).includes(t)||(n.version=e.default,n.needsUpgrade=!0,n.urgent=!!this.getVersion().match(/^[0-9]+[0-9.]*$/g),n.urgent?M.warn("URGENT upgrade required on ".concat(this.roomId)):M.warn("Non-urgent upgrade required on ".concat(this.roomId))),n}userMayUpgradeRoom(e){return this.currentState.maySendStateEvent(Z.RoomTombstone,e)}getPendingEvents(){if(!this.pendingEventList)throw new Error("Cannot call getPendingEvents with pendingEventOrdering == "+this.opts.pendingEventOrdering);return this.pendingEventList}removePendingEvent(e){if(!this.pendingEventList)throw new Error("Cannot call removePendingEvent with pendingEventOrdering == "+this.opts.pendingEventOrdering);var t=JE(this.pendingEventList,function(t){return t.getId()==e},!1);return this.savePendingEvents(),t}hasPendingEvent(e){var t,n;return null!==(t=null===(n=this.pendingEventList)||void 0===n?void 0:n.some(t=>t.getId()===e))&&void 0!==t&&t}getPendingEvent(e){var t,n;return null!==(t=null===(n=this.pendingEventList)||void 0===n?void 0:n.find(t=>t.getId()===e))&&void 0!==t?t:null}getLiveTimeline(){return this.getUnfilteredTimelineSet().getLiveTimeline()}get timeline(){return this.getLiveTimeline().getEvents()}getLastActiveTimestamp(){var e=this.getLiveTimeline().getEvents();return e.length?e[e.length-1].getTs():Number.MIN_SAFE_INTEGER}getLastLiveEvent(){var e,t,n=this.getLiveTimeline().getEvents(),r=n[n.length-1],i=this.getLastThread();if(!i)return r;var o=i.events[i.events.length-1];return(null!==(e=r?.getTs())&&void 0!==e?e:0)>(null!==(t=o?.getTs())&&void 0!==t?t:0)?r:o}getLastThread(){return this.getThreads().reduce((e,t)=>{var n,r;if(!e)return t;var i=t.events[t.events.length-1],o=e.events[e.events.length-1];return(null!==(n=i?.getTs())&&void 0!==n?n:0)>=(null!==(r=o?.getTs())&&void 0!==r?r:0)?t:e},void 0)}getMyMembership(){var e;return null!==(e=this.selfMembership)&&void 0!==e?e:He.Leave}getDMInviter(){var e,t=this.getMember(this.myUserId);if(t)return t.getDMInviter();if(this.selfMembership===He.Invite&&2===this.getInvitedAndJoinedMemberCount())return null===(e=this.heroes)||void 0===e||null===(e=e[0])||void 0===e?void 0:e.userId}guessDMUserId(){var e=this.getMember(this.myUserId);if(e){var t=e.getDMInviter();if(t)return t}if(Array.isArray(this.heroes)&&this.heroes.length)return this.heroes[0].userId;var n=this.currentState.getMembers().find(e=>e.userId!==this.myUserId);return n?n.userId:this.myUserId}getFunctionalMembers(){var e=this.currentState.getStateEvents(KX.name,"");return Array.isArray(e?.getContent().service_members)?e.getContent().service_members:[]}getAvatarFallbackMember(){var e,t=this.getFunctionalMembers(),n=0;if(this.getMembers().forEach(e=>{"join"!==e.membership&&"invite"!==e.membership||t.includes(e.userId)||n++}),!(n>2)){var r=null===(e=this.heroes)||void 0===e?void 0:e.filter(e=>!t.includes(e.userId)),i=Array.isArray(r)&&r.length;if(i){for(var o of r){if(o.fromMSC4186){var s=new ob(this.roomId,o.userId);return s.setMembershipEvent(new Zi({event_id:"$"+this.roomId+o.userId+(new Date).getTime(),type:Z.RoomMember,state_key:o.userId,content:{displayname:o.displayName,avatar_url:o.avatarUrl}})),s}var a=this.getMember(o.userId);if(a)return a}var c=r.map(e=>this.getMember(e.userId)).find(e=>!!e);if(c)return c}var l=this.getMembers(),u=l?.filter(e=>!t.includes(e.userId));if(u.length<=2){var d=u.find(e=>e.userId!==this.myUserId);if(d)return d}if(i){var h=r.map(e=>this.client.getUser(e.userId)).find(e=>!!e);if(h){var p=new ob(this.roomId,h.userId);return p.user=h,p}}}}updateMyMembership(e){var t=this.selfMembership;this.selfMembership=e,t!==e&&(e===He.Leave&&this.cleanupAfterLeaving(),this.emit(ke.MyMembership,this,e,t))}loadMembersFromServer(){var e=this;return H(function*(){var t=e.client.store.getSyncToken();return(yield e.client.members(e.roomId,void 0,He.Leave,t??void 0)).chunk})()}loadMembers(){var e=this;return H(function*(){var t=!1,n=yield e.client.store.getOutOfBandMembers(e.roomId);return(null===n||e.hasEncryptionStateEvent())&&(t=!0,n=yield e.loadMembersFromServer(),M.log("LL: got ".concat(n.length," ")+"members from server for room ".concat(e.roomId))),{memberEvents:n.filter(Ha).map(e.client.getEventMapper()),fromServer:t}})()}membersLoaded(){return!this.opts.lazyLoadMembers||this.currentState.outOfBandMembersReady()}loadMembersIfNeeded(){if(this.membersPromise)return this.membersPromise;this.currentState.markOutOfBandMembersStarted();var e=this.loadMembers().then(e=>(this.currentState.setOutOfBandMembers(e.memberEvents),e.fromServer)).catch(e=>{throw this.membersPromise=void 0,this.currentState.markOutOfBandMembersFailed(),e});return e.then(e=>{if(e){var t=this.currentState.getMembers().filter(e=>e.isOutOfBand()).map(e=>{var t;return null===(t=e.events.member)||void 0===t?void 0:t.event});return M.log("LL: telling store to write ".concat(t.length)+" members for room ".concat(this.roomId)),this.client.store.setOutOfBandMembers(this.roomId,t).catch(e=>{M.log("LL: storing OOB room members failed, oh well",e)})}}).catch(e=>{M.error(e)}),this.membersPromise=e,this.membersPromise}clearLoadedMembersIfNeeded(){var e=this;return H(function*(){e.opts.lazyLoadMembers&&e.membersPromise&&(yield e.loadMembersIfNeeded(),yield e.client.store.clearOutOfBandMembers(e.roomId),e.currentState.clearOutOfBandMembers(),e.membersPromise=void 0)})()}cleanupAfterLeaving(){this.clearLoadedMembersIfNeeded().catch(e=>{M.error("error after clearing loaded members from "+"room ".concat(this.roomId," after leaving")),M.log(e)})}refreshLiveTimeline(){var e=this;return H(function*(){var t=e.getLiveTimeline(),n=t.getPaginationToken(Me.FORWARDS),r=t.getPaginationToken(Me.BACKWARDS),i=t.getEvents(),o=i[i.length-1];M.log("[refreshLiveTimeline for ".concat(e.roomId,"] at ")+"mostRecentEventInTimeline=".concat(o&&o.getId()," ")+"liveTimelineBefore=".concat(t.toString()," ")+"forwardPaginationToken=".concat(n," ")+"backwardPaginationToken=".concat(r));var s,a=e.getUnfilteredTimelineSet();o?(e.resetLiveTimeline(null,null),e.emit(ke.TimelineRefresh,e,a),s=yield e.client.getEventTimeline(a,o.getId())):s=yield e.client.getLatestTimeline(a);var c=a.getLiveTimeline();!c||null===c.getPaginationToken(ht.Forward)&&null===c.getPaginationToken(ht.Backward)&&0===c.getEvents().length?(M.log("[refreshLiveTimeline for ".concat(e.roomId,"] using our new live timeline")),s.setPaginationToken(n,Me.FORWARDS),a.setLiveTimeline(s),e.fixUpLegacyTimelineFields()):M.log("[refreshLiveTimeline for ".concat(e.roomId,"] `/sync` or some other request beat us to creating a new ")+"live timeline after we reset it. We'll use that instead since any events in the scrollback from this timeline will include the history."),e.setTimelineNeedsRefresh(!1),e.emit(ke.TimelineRefresh,e,a)})()}resetLiveTimeline(e,t){for(var n of this.timelineSets)n.resetLiveTimeline(e??void 0,t??void 0);for(var r of this.threads.values())r.resetLiveTimeline(e,t);this.fixUpLegacyTimelineFields()}fixUpLegacyTimelineFields(){var e=this.oldState,t=this.currentState;this.oldState=this.getLiveTimeline().getState(Me.BACKWARDS),this.currentState=this.getLiveTimeline().getState(Me.FORWARDS),e!==this.oldState&&this.emit(ke.OldStateUpdated,this,e,this.oldState),t!==this.currentState&&(this.emit(ke.CurrentStateUpdated,this,t,this.currentState),this.reEmitter.stopReEmitting(t,[pt.Events,pt.Members,pt.NewMember,pt.Update,pt.Marker,qn.New,qn.Update,qn.Destroy,qn.LivenessChange]),this.reEmitter.reEmit(this.currentState,[pt.Events,pt.Members,pt.NewMember,pt.Update,pt.Marker,qn.New,qn.Update,qn.Destroy,qn.LivenessChange]))}onReceipt(e){this.hasEncryptionStateEvent()&&this.clearNotificationsOnReceipt(e)}clearNotificationsOnReceipt(e){var t=[],n=!1,r=e.getContent();for(var i of Object.values(r))for(var[o,s]of Object.entries(i))if(L7(o)&&s)for(var[a,c]of Object.entries(s))if(c&&"object"==typeof c){var l=c;a===this.client.getUserId()&&(void 0===l.thread_id?n=!0:"string"==typeof l.thread_id&&t.push(l.thread_id))}for(var u of(n&&(t=this.getThreads().filter(e=>this.getThreadUnreadNotificationCount(e.id,Xt.Total)>0||this.getThreadUnreadNotificationCount(e.id,Xt.Highlight)>0).map(e=>e.id)).push("main"),t)){var d,h="main"===u?this.getLiveTimeline():null===(d=this.getThread(u))||void 0===d?void 0:d.liveTimeline;if(h){for(var p=h.getEvents(),f=0,m=p.length-1;m>=0;m--){var g;if(m===p.length-20)return;var v=p[m];if(this.hasUserReadEvent(this.client.getUserId(),v.getId()))break;var y=this.client.getPushActionsForEvent(v);f+=null!=y&&null!==(g=y.tweaks)&&void 0!==g&&g.highlight?1:0}"main"===u?this.setUnreadNotificationCount(Xt.Highlight,f):this.setThreadUnreadNotificationCount(u,Xt.Highlight,f)}else M.warn("Couldn't find timeline for thread ID ".concat(u," in room ").concat(this.roomId))}}getTimelineSets(){return this.timelineSets}getUnfilteredTimelineSet(){return this.timelineSets[0]}getTimelineForEvent(e){var t=this.findEventById(e),n=this.findThreadForEvent(t);return n?n.timelineSet.getTimelineForEvent(e):this.getUnfilteredTimelineSet().getTimelineForEvent(e)}addTimeline(){return this.getUnfilteredTimelineSet().addTimeline()}setTimelineNeedsRefresh(e){this.timelineNeedsRefresh=e}getTimelineNeedsRefresh(){return this.timelineNeedsRefresh}findEventById(e){var t=this.getUnfilteredTimelineSet().findEventById(e);if(!t)for(var n=this.getThreads(),r=0;r0&&void 0!==arguments[0]?arguments[0]:Xt.Total,t=this.getRoomUnreadNotificationCount(e);for(var n of this.threadNotifications.values()){var r;t+=null!==(r=n[e])&&void 0!==r?r:0}return t}getUnreadCountForEventContext(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Xt.Total,n=arguments.length>1?arguments[1]:void 0;return null!==(e=!!n.threadRootId&&!n.isThreadRoot?this.getThreadUnreadNotificationCount(n.threadRootId,t):this.getRoomUnreadNotificationCount(t))&&void 0!==e?e:0}getRoomUnreadNotificationCount(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Xt.Total;return null!==(e=this.notificationCounts[t])&&void 0!==e?e:0}getThreadUnreadNotificationCount(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Xt.Total;return null!==(t=null===(n=this.threadNotifications.get(e))||void 0===n?void 0:n[r])&&void 0!==t?t:0}hasThreadUnreadNotification(){for(var e of this.threadNotifications.values()){var t,n;if((null!==(t=e.highlight)&&void 0!==t?t:0)>0||(null!==(n=e.total)&&void 0!==n?n:0)>0)return!0}return!1}setThreadUnreadNotificationCount(e,t,n){var r,i,o=E0({highlight:null===(r=this.threadNotifications.get(e))||void 0===r?void 0:r.highlight,total:null===(i=this.threadNotifications.get(e))||void 0===i?void 0:i.total},{[t]:n});this.threadNotifications.set(e,o),this.emit(ke.UnreadNotifications,o,e)}get threadsAggregateNotificationType(){var e=null;for(var t of this.threadNotifications.values()){var n,r;if((null!==(n=t.highlight)&&void 0!==n?n:0)>0)return Xt.Highlight;(null!==(r=t.total)&&void 0!==r?r:0)>0&&!e&&(e=Xt.Total)}return e}resetThreadUnreadNotificationCountFromSync(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.hasEncryptionStateEvent();for(var[n,r]of this.threadNotifications)e.includes(n)||(r.total=0,t||(r.highlight=0));this.emit(ke.UnreadNotifications)}setBumpStamp(e){this.bumpStamp=e}getBumpStamp(){return this.bumpStamp}setUnreadNotificationCount(e,t){this.notificationCounts[e]=t,this.emit(ke.UnreadNotifications,this.notificationCounts)}setUnread(e,t){return this.setUnreadNotificationCount(e,t)}setSummary(e){var t,n=null===(t=e["m.heroes"])||void 0===t?void 0:t.map(e=>({userId:e,fromMSC4186:!1})),r=e["m.joined_member_count"],i=e["m.invited_member_count"];Number.isInteger(r)&&this.currentState.setJoinedMemberCount(r),Number.isInteger(i)&&this.currentState.setInvitedMemberCount(i),Array.isArray(n)&&(this.heroes=n.filter(e=>e.userId!=this.myUserId)),this.emit(ke.Summary,e)}setMSC4186SummaryData(e,t,n){e&&(this.heroes=e.filter(e=>e.user_id!==this.myUserId).map(e=>({userId:e.user_id,displayName:e.displayname,avatarUrl:e.avatar_url,fromMSC4186:!0}))),void 0!==t&&Number.isInteger(t)&&this.currentState.setJoinedMemberCount(t),void 0!==n&&Number.isInteger(n)&&this.currentState.setInvitedMemberCount(n),this.emit(ke.Summary,{"m.heroes":this.heroes?this.heroes.map(e=>e.userId):[],"m.joined_member_count":t,"m.invited_member_count":n})}setBlacklistUnverifiedDevices(e){this.blacklistUnverifiedDevices=e}getBlacklistUnverifiedDevices(){return void 0===this.blacklistUnverifiedDevices?null:this.blacklistUnverifiedDevices}getAvatarUrl(e,t,n,r){var i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=this.currentState.getStateEvents(Z.RoomAvatar,"");if(!s&&!i)return null;var a=s?s.getContent().url:null;return a?H3(e,a,t,n,r,void 0,void 0,o):null}getMxcAvatarUrl(){var e;return(null===(e=this.currentState.getStateEvents(Z.RoomAvatar,""))||void 0===e||null===(e=e.getContent())||void 0===e?void 0:e.url)||null}getCanonicalAlias(){var e=this.currentState.getStateEvents(Z.RoomCanonicalAlias,"");return e&&e.getContent().alias||null}getAltAliases(){var e=this.currentState.getStateEvents(Z.RoomCanonicalAlias,"");return e&&e.getContent().alt_aliases||[]}addEventsToTimeline(e,t,n,r,i){r.getTimelineSet().addEventsToTimeline(e,t,n,r,i)}getThread(e){var t;return null!==(t=this.threads.get(e))&&void 0!==t?t:null}getThreads(){return Array.from(this.threads.values())}getMember(e){return this.currentState.getMember(e)}getMembers(){return this.currentState.getMembers()}getJoinedMembers(){return this.getMembersWithMembership(He.Join)}getJoinedMemberCount(){return this.currentState.getJoinedMemberCount()}getInvitedMemberCount(){return this.currentState.getInvitedMemberCount()}getInvitedAndJoinedMemberCount(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()}getMembersWithMembership(e){return this.currentState.getMembers().filter(function(t){return t.membership===e})}getEncryptionTargetMembers(){var e=this;return H(function*(){yield e.loadMembersIfNeeded();var t=e.getMembersWithMembership(He.Join);return e.shouldEncryptForInvitedMembers()&&(t=t.concat(e.getMembersWithMembership(He.Invite))),t})()}shouldEncryptForInvitedMembers(){var e,t=this.currentState.getStateEvents(Z.RoomHistoryVisibility,"");return"joined"!==(null==t||null===(e=t.getContent())||void 0===e?void 0:e.history_visibility)}getDefaultRoomName(e){return this.calculateRoomName(e,!0)}hasMembershipState(e,t){var n=this.getMember(e);return!!n&&n.membership===t}getOrCreateFilteredTimelineSet(e){var{prepopulateTimeline:t=!0,useSyncEvents:n=!0,pendingEvents:r=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.filteredTimelineSets[e.filterId])return this.filteredTimelineSets[e.filterId];var i=Object.assign({filter:e,pendingEvents:r},this.opts),o=new sg(this,i);this.reEmitter.reEmit(o,[ke.Timeline,ke.TimelineReset]),n&&(this.filteredTimelineSets[e.filterId]=o,this.timelineSets.push(o));var s=this.getLiveTimeline();if(t){s.getEvents().forEach(function(e){o.addLiveEvent(e,{addToState:!1})});for(var a=s;a.getNeighbouringTimeline(Me.BACKWARDS);)a=a.getNeighbouringTimeline(Me.BACKWARDS);o.getLiveTimeline().setPaginationToken(a.getPaginationToken(Me.BACKWARDS),Me.BACKWARDS)}else if(n){var c=s.getPaginationToken(ht.Forward);o.getLiveTimeline().setPaginationToken(c,ht.Backward)}return o}getThreadListFilter(){var e=arguments,t=this;return H(function*(){var n=e.length>0&&void 0!==e[0]?e[0]:Na.All,r=t.client.getUserId(),i=new Ps(r),o={room:{timeline:{[Tg.name]:[Sn.name]}}};n===Na.My&&(o.room.timeline[Cg.name]=[r]),i.setDefinition(o);var s=yield t.client.getOrCreateFilter("THREAD_PANEL_".concat(t.roomId,"_").concat(n),i);return i.filterId=s,i})()}createThreadTimelineSet(e){var t=this;return H(function*(){var n;if(Nn.hasServerSideListSupport)n=new sg(t,E0(E0({},t.opts),{},{pendingEvents:!1}),void 0,void 0,e??Na.All),t.reEmitter.reEmit(n,[ke.Timeline,ke.TimelineReset]);else if(Nn.hasServerSideSupport){var r=yield t.getThreadListFilter(e);n=t.getOrCreateFilteredTimelineSet(r,{prepopulateTimeline:!1,useSyncEvents:!1,pendingEvents:!1})}else n=new sg(t,{pendingEvents:!1}),Array.from(t.threads).forEach(r=>{var[,i]=r;if(0!==i.length){var o=i.timeline.some(e=>e.getSender()===t.client.getUserId());(e!==Na.My||o)&&n.getLiveTimeline().addEvent(i.rootEvent,{toStartOfTimeline:!1,addToState:!1})}});return n})()}processThreadRoots(e,t){if(this.client.supportsThreads())for(var n of e)Me.setEventMetadata(n,this.currentState,t),this.getThread(n.getId())||this.createThread(n.getId(),n,[],t)}fetchRoomThreads(){var e=this;return H(function*(){if(!e.threadsReady&&e.client.supportsThreads()){if(Nn.hasServerSideListSupport)yield Promise.all([e.fetchRoomThreadList(Na.All),e.fetchRoomThreadList(Na.My)]);else{var t=yield e.getThreadListFilter(),{chunk:n}=yield e.client.createMessagesRequest(e.roomId,"",Number.MAX_SAFE_INTEGER,ht.Backward,t);if(!n.length)return;var r,i=n.map(e.client.getEventMapper()).sort((e,t)=>{var n=e.getServerAggregatedRelation(Sn.name),r=t.getServerAggregatedRelation(Sn.name);return n.latest_event.origin_server_ts-r.latest_event.origin_server_ts}),o=e.getLiveTimeline().getState(Me.FORWARDS);for(var s of i){var a,c={duplicateStrategy:Sy.Ignore,fromCache:!1,addToState:!1,roomState:o};null===(a=e.threadsTimelineSets[0])||void 0===a||a.addLiveEvent(s,c);var l,u=s.getServerAggregatedRelation(Sn.name);if(null!=u&&u.current_user_participated)null===(l=e.threadsTimelineSets[1])||void 0===l||l.addLiveEvent(s,c),r=s}e.processThreadRoots(i,!0),e.client.decryptEventIfNeeded(i[i.length-1]),r&&e.client.decryptEventIfNeeded(r)}e.on(as.NewReply,e.onThreadReply),e.on(as.Update,e.onThreadUpdate),e.on(as.Delete,e.onThreadDelete),e.threadsReady=!0}})()}processPollEvents(e){var t=this;return H(function*(){for(var n of e)try{if(!n.isEncrypted()&&!SJ(n))continue;yield t.client.decryptEventIfNeeded(n),t.processPollEvent(n)}catch(e){M.warn("Error processing poll event",n.getId(),e)}})()}processPollEvent(e){var t=this;return H(function*(){if(e.isDecryptionFailure())e.once(Gt.Decrypted,e=>{t.processPollEvent(e)});else if(Xs.M_POLL_START.matches(e.getType()))try{var n=new _J(e,t.client,t);t.polls.set(e.getId(),n),t.emit(Pd.New,n),e.once(Gt.BeforeRedaction,e=>{t.polls.delete(e.getId())})}catch{}else{var r=e.relationEventId;if(r&&t.polls.has(r)){var i=t.polls.get(r);i?.onNewRelation(e)}}})()}fetchRoomThreadList(e){var t=this;return H(function*(){if(t.client.supportsThreads()&&0!==t.threadsTimelineSets.length){var n=e===Na.My?t.threadsTimelineSets[1]:t.threadsTimelineSets[0],{chunk:r,end:i}=yield t.client.createThreadListMessagesRequest(t.roomId,null,void 0,ht.Backward,n.threadListType,n.getFilter());if(n.getLiveTimeline().setPaginationToken(i??null,ht.Backward),r.length){var o=r.map(t.client.getEventMapper());t.processThreadRoots(o,!0);var s=t.getLiveTimeline().getState(Me.FORWARDS);for(var a of o)n.addLiveEvent(a,{duplicateStrategy:Sy.Replace,fromCache:!1,roomState:s,addToState:!1})}}})()}onThreadUpdate(e){this.updateThreadRootEvents(e,!1,!1)}onThreadReply(e){this.updateThreadRootEvents(e,!1,!0)}onThreadDelete(e){var t;this.threads.delete(e.id);var n=this.getTimelineForEvent(e.id),r=null==n||null===(t=n.getEvents())||void 0===t?void 0:t.find(t=>t.getId()===e.id);for(var i of(r?e.clearEventMetadata(r):M.debug("onThreadDelete: Could not find root event in room timeline"),this.threadsTimelineSets))i.removeEvent(e.id)}removeFilteredTimelineSet(e){var t=this.filteredTimelineSets[e.filterId];delete this.filteredTimelineSets[e.filterId];var n=this.timelineSets.indexOf(t);n>-1&&this.timelineSets.splice(n,1)}eventShouldLiveIn(e,t,n){var r;if(null===(r=this.client)||void 0===r||!r.supportsThreads())return{shouldLiveInRoom:!0,shouldLiveInThread:!1};if(e.isThreadRoot||null!=n&&n.has(e.getId()))return{shouldLiveInRoom:!0,shouldLiveInThread:!0,threadId:e.getId()};var i,o,s=e.isRelation(Sn.name),a=e.getAssociatedId(),c=e.threadRootId;if(a&&!s&&(c===a||null!=n&&n.has(a)))return{shouldLiveInRoom:!0,shouldLiveInThread:!1};a&&(i=null!==(o=this.findEventById(a))&&void 0!==o?o:t?.find(e=>e.getId()===a));return i&&!s?this.eventShouldLiveIn(i,t,n):null!=c?{shouldLiveInRoom:!1,shouldLiveInThread:!0,threadId:c}:!a||e.replyEventId?{shouldLiveInRoom:!0,shouldLiveInThread:!1}:{shouldLiveInRoom:!1,shouldLiveInThread:!1}}findThreadForEvent(e){if(!e)return null;var{threadId:t}=this.eventShouldLiveIn(e);return t?this.getThread(t):null}addThreadedEvents(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=this.getThread(e);if(r)r.addEvents(t,n);else{var i,o=null!==(i=this.findEventById(e))&&void 0!==i?i:t.find(t=>t.getId()===e);this.createThread(e,o,t,n)}}processThreadedEvents(e,t){e.forEach(this.tryApplyRedaction);var n={};for(var r of e){var i,{threadId:o,shouldLiveInThread:s}=this.eventShouldLiveIn(r);s&&!n[o]&&(n[o]=[]),null===(i=n[o])||void 0===i||i.push(r)}Object.entries(n).map(e=>{var[n,r]=e;return this.addThreadedEvents(n,r,t)})}createThread(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments.length>3?arguments[3]:void 0;if(this.threads.has(e))return this.threads.get(e);if(t){var o=this.relations.getAllChildEventsForEvent(t.getId());null!=o&&o.length&&(r=r.concat(o.filter(e=>!e.isRelation(bn.Replace))))}var s=new Nn(e,t,{room:this,client:this.client,pendingEventOrdering:this.opts.pendingEventOrdering,receipts:null!==(n=this.cachedThreadReadReceipts.get(e))&&void 0!==n?n:[]});return this.reEmitter.reEmit(s,[as.Delete,as.Update,as.NewReply,ke.Timeline,ke.TimelineReset]),this.cachedThreadReadReceipts.delete(e),this.threads.set(s.id,s),s.addEvents(r,!1),this.threadsReady&&s.initialEventsFetched&&this.updateThreadRootEvents(s,i,!1),this.emit(as.New,s,i),s}applyEventAsRedaction(e,t){var n=t.threadRootId;if(t.makeRedacted(e,this),t.isState()){var r=this.currentState.getStateEvents(t.getType(),t.getStateKey());r?.getId()===t.getId()&&this.currentState.setStateEvents([t])}this.emit(ke.Redaction,e,this,n),this.visibilityEvents.delete(t.getId()),t.isVisibilityEvent()&&this.redactVisibilityChangeEvent(e)}processLiveEvent(e){if(this.tryApplyRedaction(e),e.isVisibilityEvent()&&this.applyNewVisibilityEvent(e),this.applyPendingVisibilityEvents(e),!e.getUnsigned().transaction_id&&e.getSender()===this.myUserId)for(var[t,n]of this.txnToEvent)if(n.getId()===e.getId()){M.debug("processLiveEvent: found sent event without txn ID: ",t,e.getId());var r=e.getUnsigned();r.transaction_id=t,e.setUnsigned(r);break}}addLiveEvent(e,t){var{duplicateStrategy:n,timelineWasEmpty:r,fromCache:i,addToState:o}=t;for(var s of this.timelineSets)s.addLiveEvent(e,{duplicateStrategy:n,fromCache:i,timelineWasEmpty:r,addToState:o});e.sender&&e.getType()!==Z.RoomRedaction&&this.addReceipt(yJ(e.sender.userId,e,os.Read),!0)}addPendingEvent(e,t){if(e.status!==rt.SENDING&&e.status!==rt.NOT_SENT)throw new Error("addPendingEvent called on an event with status "+e.status);if(this.txnToEvent.get(t))throw new Error("addPendingEvent called on an event with known txnId "+t);if(Me.setEventMetadata(e,this.getLiveTimeline().getState(Me.FORWARDS),!1),this.txnToEvent.set(t,e),this.pendingEventList){if(this.pendingEventList.some(e=>e.status===rt.NOT_SENT)&&(M.warn("Setting event as NOT_SENT due to messages in the same state"),e.setStatus(rt.NOT_SENT)),this.pendingEventList.push(e),this.savePendingEvents(),e.isRelation()&&this.aggregateNonLiveRelation(e),e.isRedaction()){var n=e.event.redacts,r=this.pendingEventList.find(e=>e.getId()===n);!r&&n&&(r=this.findEventById(n)),r&&(r.markLocallyRedacted(e),this.emit(ke.Redaction,e,this,r.threadRootId))}}else for(var i of this.timelineSets)i.getFilter()?i.getFilter().filterRoomTimeline([e]).length&&i.addEventToTimeline(e,i.getLiveTimeline(),{toStartOfTimeline:!1,addToState:!1}):i.addEventToTimeline(e,i.getLiveTimeline(),{toStartOfTimeline:!1,addToState:!1});this.emit(ke.LocalEchoUpdated,e,this)}savePendingEvents(){if(this.pendingEventList){var e=this.pendingEventList.map(e=>E0(E0({},e.event),{},{txn_id:e.getTxnId()})).filter(e=>{var t=e.type===Z.RoomMessageEncrypted,n=this.hasEncryptionStateEvent();return t||!n});this.client.store.setPendingEvents(this.roomId,e)}}aggregateNonLiveRelation(e){this.relations.aggregateChildEvent(e)}getEventForTxnId(e){return this.txnToEvent.get(e)}handleRemoteEcho(e,t){var n=t.getId(),r=e.getId(),i=t.status;M.debug("Got remote echo for event ".concat(n," -> ").concat(r," old status ").concat(i)),this.txnToEvent.delete(e.getUnsigned().transaction_id),this.pendingEventList&&this.removePendingEvent(n),t.handleRemoteEcho(e.event);var{shouldLiveInRoom:o,threadId:s}=this.eventShouldLiveIn(e),a=s?this.getThread(s):null;if(a?.setEventMetadata(t),a?.timelineSet.handleRemoteEcho(t,n,r),o)for(var c of this.timelineSets)c.handleRemoteEcho(t,n,r);this.emit(ke.LocalEchoUpdated,t,this,n,i)}updatePendingEvent(e,t,n){if(M.log("setting pendingEvent status to ".concat(t," in ").concat(e.getRoomId()," ")+"event ID ".concat(e.getId()," -> ").concat(n)),t==rt.SENT&&!n)throw new Error("updatePendingEvent called with status=SENT, but no new event id");if(t==rt.SENT&&this.getTimelineForEvent(n)){var r=this.findEventById(n),i=r?.getUnsigned().transaction_id;if(!i&&r){var o=r.getUnsigned();o.transaction_id=e.getTxnId(),r.setUnsigned(o),this.removeEvent(r.getId()),this.handleRemoteEcho(r,e)}return}var s=e.status,a=e.getId();if(!s)throw new Error("updatePendingEventStatus called on an event which is not a local echo.");var c=S1e[s];if(null==c||!c.includes(t))throw new Error("Invalid EventStatus transition ".concat(s,"->").concat(t));if(e.setStatus(t),t==rt.SENT){e.replaceLocalEventId(n);var{shouldLiveInRoom:l,threadId:u}=this.eventShouldLiveIn(e),d=u?this.getThread(u):void 0;if(d?.setEventMetadata(e),d?.timelineSet.replaceEventId(a,n),l)for(var h of this.timelineSets)h.replaceEventId(a,n)}else if(t==rt.CANCELLED){if(this.pendingEventList){var p=this.getPendingEvent(a);this.removePendingEvent(a),null!=p&&p.isRedaction()&&this.revertRedactionLocalEcho(p)}this.removeEvent(a)}this.savePendingEvents(),this.emit(ke.LocalEchoUpdated,e,this,a,s)}revertRedactionLocalEcho(e){var t=e.event.redacts;if(t){var n=this.getUnfilteredTimelineSet().findEventById(t);n&&(n.unmarkLocallyRedacted(),this.emit(ke.RedactionCancelled,e,this),n.isRelation()&&this.aggregateNonLiveRelation(n))}}assertTimelineSetsAreLive(){for(var e=0;e{var[t,r]=e;n.addThreadedEvents(t,r,!1)})})()}partitionThreadedEvents(e){if(this.client.supportsThreads()){var t=this.findThreadRoots(e);return e.reduce((n,r)=>{var{shouldLiveInRoom:i,shouldLiveInThread:o,threadId:s}=this.eventShouldLiveIn(r,e,t);return i&&n[0].push(r),o&&(r.setThreadId(s??""),n[1].push(r)),!o&&!i&&n[2].push(r),n},[[],[],[]])}return[e,[],[]]}findThreadRoots(e){var t=new Set;for(var n of e){var r=n.threadRootId;null!=r&&t.add(r)}return t}addReceipt(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.getContent();this.roomReceipts.add(n,t),Object.keys(n).forEach(e=>{Object.keys(n[e]).forEach(r=>{Object.keys(n[e][r]).forEach(i=>{var o,s,a,c,l=n[e][r][i],u=!l.thread_id||l.thread_id===a_,d=u?this:this.threads.get(null!==(o=l.thread_id)&&void 0!==o?o:"");if(d){if(d.addReceiptToStructure(e,r,i,l,t),!t&&this.client.isInitialSyncComplete()&&i===this.client.getUserId()){var h=d.timeline[d.timeline.length-1];h&&e===h.getId()&&i===h.getSender()&&(d.setUnread(Xt.Total,0),d.setUnread(Xt.Highlight,0))}}else this.cachedThreadReadReceipts.set(l.thread_id,[...null!==(c=this.cachedThreadReadReceipts.get(l.thread_id))&&void 0!==c?c:[],{eventId:e,receiptType:r,userId:i,receipt:l,synthetic:t}]);i===this.client.getUserId()&&!u&&l.ts(null!==(s=null===(a=this.unthreadedReceipts.get(i))||void 0===a?void 0:a.ts)&&void 0!==s?s:0)&&this.unthreadedReceipts.set(i,l)})})}),this.emit(ke.Receipt,e,this)}addEphemeralEvents(e){for(var t of e)t.getType()===Z.Typing?this.currentState.setTypingEvent(t):t.getType()===Z.Receipt&&this.addReceipt(t)}removeEvents(e){for(var t of e)this.removeEvent(t)}removeEvent(e){var t=!1;for(var n of this.timelineSets){var r=n.removeEvent(e);r&&(r.isRedaction()&&this.revertRedactionLocalEcho(r),t=!0)}return t}recalculate(){var e=this.currentState.getStateEvents(Z.RoomMember,this.myUserId);if(e){var t=e.getContent().membership;if(this.updateMyMembership(t),t===He.Invite)(e.getUnsigned().invite_room_state||[]).forEach(e=>{this.currentState.getStateEvents(e.type,e.state_key)||this.currentState.setStateEvents([new Zi({type:e.type,state_key:e.state_key,content:e.content,event_id:"$fake"+Date.now(),room_id:this.roomId,sender:this.myUserId})])})}var n=this.name;this.name=this.calculateRoomName(this.myUserId),this.normalizedName=ive(this.name),this.summary=new iJ(this.roomId,{title:this.name}),n!==this.name&&this.emit(ke.Name,this)}addTags(e){this.tags=e.getContent().tags||{},this.emit(ke.Tags,e,this)}addAccountData(e){for(var t of e){"m.tag"===t.getType()&&this.addTags(t);var n=t.getType(),r=this.accountData.get(n);this.accountData.set(n,t),this.emit(ke.AccountData,t,this,r)}}getAccountData(e){return this.accountData.get(e)}maySendMessage(){return this.getMyMembership()===He.Join&&(this.hasEncryptionStateEvent()?this.currentState.maySendEvent(Z.RoomMessageEncrypted,this.myUserId):this.currentState.maySendEvent(Z.RoomMessage,this.myUserId))}canInvite(e){var t=this.getMyMembership()===He.Join,n=this.currentState.getStateEvents(Z.RoomPowerLevels,""),r=n&&n.getContent(),i=this.getMember(e);return r&&i&&r.invite>i.powerLevel&&(t=!1),t}getJoinRule(){return this.currentState.getJoinRule()}getHistoryVisibility(){return this.currentState.getHistoryVisibility()}getGuestAccess(){return this.currentState.getGuestAccess()}getType(){var e=this.currentState.getStateEvents(Z.RoomCreate,"");if(e)return e.getContent()[tC];this.getTypeWarning||(M.warn("[getType] Room "+this.roomId+" does not have an m.room.create event"),this.getTypeWarning=!0)}isSpaceRoom(){return this.getType()===_g.Space}isCallRoom(){return this.getType()===_g.UnstableCall}isElementVideoRoom(){return this.getType()===_g.ElementVideo}findPredecessor(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.getLiveTimeline().getState(Me.FORWARDS);return t?t.findPredecessor(e):null}roomNameGenerator(e){if(this.client.roomNameGenerator){var t=this.client.roomNameGenerator(this.roomId,e);if(null!==t)return t}switch(e.type){case kc.Actual:return e.name;case kc.Generated:return"Inviting"===e.subtype?"Inviting ".concat(b$(e.names,e.count)):b$(e.names,e.count);case kc.EmptyRoom:return e.oldName?"Empty room (was ".concat(e.oldName,")"):"Empty room"}}calculateRoomName(e){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){var t=this.currentState.getStateEvents(Z.RoomName,"");if(null!=t&&t.getContent().name)return this.roomNameGenerator({type:kc.Actual,name:t.getContent().name})}var n=this.getCanonicalAlias();if(n)return this.roomNameGenerator({type:kc.Actual,name:n});var r=this.currentState.getJoinedMemberCount()+this.currentState.getInvitedMemberCount()-1,i=this.getFunctionalMembers(),o=[];if(this.heroes)this.heroes.forEach(e=>{if(i.includes(e.userId))r--;else if(e.displayName)o.push(e.displayName);else{var t=this.getMember(e.userId);o.push(t?t.name:e.userId)}});else{var s=this.currentState.getMembers().filter(t=>t.userId!==e&&(t.membership===He.Invite||t.membership===He.Join));s=s.filter(e=>{var{userId:t}=e;return!i.includes(t)||(r--,!1)});var a=new Intl.Collator;s.sort((e,t)=>a.compare(e.userId,t.userId)),s=s.slice(0,5),o=s.map(e=>e.name)}if(r)return this.roomNameGenerator({type:kc.Generated,names:o,count:r});if(this.getMyMembership()==He.Join){var c=this.currentState.getStateEvents(Z.RoomThirdPartyInvite);if(null!=c&&c.length){var l=c.map(e=>e.getContent().display_name);return this.roomNameGenerator({type:kc.Generated,subtype:"Inviting",names:l,count:l.length+1})}}var u,d=o;return d.length||(d=this.currentState.getMembers().filter(t=>t.userId!==e&&t.membership!==He.Invite&&t.membership!==He.Join).map(e=>e.name)),d.length&&(u=this.roomNameGenerator({type:kc.Generated,names:d,count:d.length+1})),this.roomNameGenerator({type:kc.EmptyRoom,oldName:u})}applyNewVisibilityEvent(e){var t=e.asVisibilityChange();if(t){var n=e.getSender();if(n)if(Ah.name&&this.currentState.maySendStateEvent(Ah.name,n)||Ah.altName&&this.currentState.maySendStateEvent(Ah.altName,n)){var r=this.visibilityEvents.get(t.eventId);if(r){for(var i=r.length-1,o=Math.max(0,r.length-_1e);i>=o;--i){if(r[i].getTs()t.getId()===e.getId());if(-1!==i&&(r.splice(i,1),i===r.length)){var o=this.findEventById(n);if(!o)return;if(0===i)this.visibilityEvents.delete(n),o.applyVisibilityEvent();else{var s=r[r.length-1].asVisibilityChange();if(!s)throw new Error("at this stage, visibility changes should be well-formed");o.applyVisibilityEvent(s)}}}}applyPendingVisibilityEvents(e){var t=this.visibilityEvents.get(e.getId());if(t&&0!=t.length){var n=t[t.length-1],r=n.asVisibilityChange();r&&(r.visible,!(n.getTs()this.getThreadUnreadNotificationCount(e.id,Xt.Total)>0);for(var n of t)n.fixupNotifications(e)}compareEventOrdering(e,t){return t1e(this,e,t)}hasEncryptionStateEvent(){var e;return!(null===(e=this.getLiveTimeline().getState(Me.FORWARDS))||void 0===e||!e.getStateEvents(Z.RoomEncryption,""))}};var S1e={[rt.ENCRYPTING]:[rt.SENDING,rt.NOT_SENT,rt.CANCELLED],[rt.SENDING]:[rt.ENCRYPTING,rt.QUEUED,rt.NOT_SENT,rt.SENT],[rt.QUEUED]:[rt.SENDING,rt.NOT_SENT,rt.CANCELLED],[rt.SENT]:[],[rt.NOT_SENT]:[rt.SENDING,rt.QUEUED,rt.CANCELLED],[rt.CANCELLED]:[]},kc=function(e){return e[e.EmptyRoom=0]="EmptyRoom",e[e.Generated=1]="Generated",e[e.Actual=2]="Actual",e}({});function b$(e,t){var n=t-1;return e.length?1===e.length&&n<=1?e[0]:2===e.length&&n<=2?"".concat(e[0]," and ").concat(e[1]):n>1?"".concat(e[0]," and ").concat(n," others"):"".concat(e[0]," and 1 other"):"Empty room"}var Qr=function(e){return e[e.Stable=0]="Stable",e[e.Unstable=1]="Unstable",e[e.Unsupported=2]="Unsupported",e}({}),ei=function(e){return e.Thread="Thread",e.ThreadUnreadNotifications="ThreadUnreadNotifications",e.LoginTokenRequest="LoginTokenRequest",e.RelationBasedRedactions="RelationBasedRedactions",e.AccountDataDeletion="AccountDataDeletion",e.RelationsRecursion="RelationsRecursion",e.IntentionalMentions="IntentionalMentions",e}({}),w1e={[ei.Thread]:{unstablePrefixes:["org.matrix.msc3440"],matrixVersion:"v1.3"},[ei.ThreadUnreadNotifications]:{unstablePrefixes:["org.matrix.msc3771","org.matrix.msc3773"],matrixVersion:"v1.4"},[ei.LoginTokenRequest]:{unstablePrefixes:["org.matrix.msc3882"]},[ei.RelationBasedRedactions]:{unstablePrefixes:["org.matrix.msc3912"]},[ei.AccountDataDeletion]:{unstablePrefixes:["org.matrix.msc3391"]},[ei.RelationsRecursion]:{unstablePrefixes:["org.matrix.msc3981"],matrixVersion:"v1.10"},[ei.IntentionalMentions]:{unstablePrefixes:["org.matrix.msc3952_intentional_mentions"],matrixVersion:"v1.7"}};function E1e(e){return Q5.apply(this,arguments)}function Q5(){return(Q5=H(function*(e){var t=new Map;for(var[n,r]of Object.entries(w1e)){var i,o,s,a,c=null!==(i=null===(o=e.versions)||void 0===o?void 0:o.includes(r.matrixVersion||""))&&void 0!==i&&i,l=null!==(s=null===(a=r.unstablePrefixes)||void 0===a?void 0:a.every(t=>{var n;return!0===(null===(n=e.unstable_features)||void 0===n?void 0:n[t])}))&&void 0!==s&&s;c?t.set(n,Qr.Stable):l?t.set(n,Qr.Unstable):t.set(n,Qr.Unsupported)}return t})).apply(this,arguments)}function _$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oC(e){for(var t=1;t!1},e)}class Hd{constructor(e,t,n){var r=this;this.client=e,L(this,"opts",void 0),L(this,"syncOpts",void 0),L(this,"_peekRoom",null),L(this,"currentSyncRequest",void 0),L(this,"abortController",void 0),L(this,"syncState",null),L(this,"syncStateData",void 0),L(this,"catchingUp",!1),L(this,"running",!1),L(this,"keepAliveTimer",void 0),L(this,"connectionReturnedResolvers",void 0),L(this,"notifEvents",[]),L(this,"failedSyncCount",0),L(this,"storeIsInvalid",!1),L(this,"presence",void 0),L(this,"getPushRules",H(function*(){try{r.syncOpts.logger.debug("Getting push rules...");var e=yield r.client.getPushRules();r.syncOpts.logger.debug("Got push rules"),r.client.pushRules=e}catch(e){return r.syncOpts.logger.error("Getting push rules failed",e),r.shouldAbortSync(e)?void 0:(r.syncOpts.logger.debug("Waiting for saved sync before retrying push rules..."),yield r.recoverFromSyncStartupError(r.savedSyncPromise,e),r.getPushRules())}})),L(this,"buildDefaultFilter",()=>{var e=new Ps(this.client.credentials.userId);return this.client.canSupport.get(ei.ThreadUnreadNotifications)!==Qr.Unsupported&&e.setUnreadThreadNotifications(!0),e}),L(this,"prepareLazyLoadingForSync",H(function*(){r.syncOpts.logger.debug("Prepare lazy loading for sync..."),r.client.isGuest()&&(r.opts.lazyLoadMembers=!1),r.opts.lazyLoadMembers&&(r.syncOpts.logger.debug("Enabling lazy load on sync filter..."),r.opts.filter||(r.opts.filter=r.buildDefaultFilter()),r.opts.filter.setLazyLoadMembers(!0))})),L(this,"storeClientOptions",H(function*(){try{r.syncOpts.logger.debug("Storing client options..."),yield r.client.storeClientOptions(),r.syncOpts.logger.debug("Stored client options")}catch(e){throw r.syncOpts.logger.error("Storing client options failed",e),e}})),L(this,"getFilter",H(function*(){var e,t;r.syncOpts.logger.debug("Getting filter..."),e=r.opts.filter?r.opts.filter:r.buildDefaultFilter();try{t=yield r.client.getOrCreateFilter(w$(r.client.credentials.userId),e)}catch(e){return r.syncOpts.logger.error("Getting filter failed",e),r.shouldAbortSync(e)?{}:(r.syncOpts.logger.debug("Waiting for saved sync before retrying filter..."),yield r.recoverFromSyncStartupError(r.savedSyncPromise,e),r.getFilter())}return{filter:e,filterId:t}})),L(this,"savedSyncPromise",void 0),L(this,"onOnline",()=>{this.syncOpts.logger.debug("Browser thinks we are back online"),this.startKeepAlives(0)}),this.opts=PJ(t),this.syncOpts=LJ(n),e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),[ke.Timeline,ke.TimelineReset])}createRoom(e){var t=OJ(this.client,e,this.opts);return t.on(pt.Marker,(e,n)=>{this.onMarkerStateEvent(t,e,n)}),t}onMarkerStateEvent(e,t){var{timelineWasEmpty:n}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n?this.syncOpts.logger.debug("MarkerState: Ignoring markerEventId=".concat(t.getId()," in roomId=").concat(e.roomId," ")+"because the timeline was empty before the marker arrived which means there is nothing to refresh."):T1e.includes(e.getVersion())||t.getSender()===e.getCreator()?(this.syncOpts.logger.debug("MarkerState: Timeline needs to be refreshed because "+"a new markerEventId=".concat(t.getId()," was sent in roomId=").concat(e.roomId)),e.setTimelineNeedsRefresh(!0),e.emit(ke.HistoryImportedWithinTimeline,t,e)):this.syncOpts.logger.debug("MarkerState: Ignoring markerEventId=".concat(t.getId()," in roomId=").concat(e.roomId," because ")+"MSC2716 is not supported in the room version or for any room version, the marker wasn't sent by the room creator.")}syncLeftRooms(){var e=this;return H(function*(){var t,n=e.client,r=new Ps(e.client.credentials.userId);r.setTimelineLimit(1),r.setIncludeLeaveRooms(!0);var i=e.opts.pollTimeout+S$,o={timeout:0,filter:yield n.getOrCreateFilter(w$(n.credentials.userId,"LEFT_ROOMS"),r),"org.matrix.msc4222.use_state_after":!0},s=yield n.http.authedRequest(ue.Get,"/sync",o,void 0,{localTimeoutMs:i}),a=[];null!==(t=s.rooms)&&void 0!==t&&t.leave&&(a=e.mapSyncResponseToRoomArray(s.rooms.leave));var c,l=yield Promise.all(a.map((c=H(function*(t){var r=t.room;if(t.isBrandNewRoom){t.timeline=t.timeline||{prev_batch:null,events:[]},r.getLiveTimeline().setPaginationToken(t.timeline.prev_batch,Me.BACKWARDS);var{timelineEvents:i}=yield e.mapAndInjectRoomEvents(t);return r.recalculate(),n.store.storeRoom(r),n.emit(Pe.Room,r),e.processEventsForNotifs(r,i),r}}),function(e){return c.apply(this,arguments)})));return l.filter(Boolean)})()}peek(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20;if((null===(t=this._peekRoom)||void 0===t?void 0:t.roomId)===e)return Promise.resolve(this._peekRoom);var r=this.client;return this._peekRoom=this.createRoom(e),this.client.roomInitialSync(e,n).then(t=>{var n;if((null===(n=this._peekRoom)||void 0===n?void 0:n.roomId)!==e)throw new Error("Peeking aborted");t.messages=t.messages||{chunk:[]},t.messages.chunk=t.messages.chunk||[],t.state=t.state||[];var i=c_(t.state).map(r.getEventMapper()),o=t.state.map(r.getEventMapper()),s=t.messages.chunk.map(r.getEventMapper());return Array.isArray(t.presence)&&t.presence.map(r.getEventMapper()).forEach(function(e){var t=r.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):((t=mu.createUser(e.getContent().user_id,r)).setPresenceEvent(e),r.store.storeUser(t)),r.emit(Pe.Event,e)}),t.messages.start&&(this._peekRoom.oldState.paginationToken=t.messages.start),this._peekRoom.oldState.setStateEvents(i),this._peekRoom.currentState.setStateEvents(o),this.resolveInvites(this._peekRoom),this._peekRoom.recalculate(),this._peekRoom.addEventsToTimeline(s.reverse(),!0,!0,this._peekRoom.getLiveTimeline(),t.messages.start),r.store.storeRoom(this._peekRoom),r.emit(Pe.Room,this._peekRoom),this.peekPoll(this._peekRoom),this._peekRoom})}stopPeeking(){this._peekRoom=null}peekPoll(e,t){var n,r,i=this;this._peekRoom===e?this.client.http.authedRequest(ue.Get,"/events",{room_id:e.roomId,timeout:String(3e4),from:t},void 0,{localTimeoutMs:5e4,abortSignal:null===(n=this.abortController)||void 0===n?void 0:n.signal}).then((r=H(function*(t){if(i._peekRoom===e){t.chunk.filter(function(e){return"m.presence"===e.type}).map(i.client.getEventMapper()).forEach(e=>{var t=i.client.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):((t=mu.createUser(e.getContent().user_id,i.client)).setPresenceEvent(e),i.client.store.storeUser(t)),i.client.emit(Pe.Event,e)});var n=t.chunk.filter(function(t){return t.room_id===e.roomId&&t.event_id}).map(i.client.getEventMapper());yield e.addLiveEvents(n,{addToState:!0}),i.peekPoll(e,t.end)}else i.syncOpts.logger.debug("Stopped peeking in room %s",e.roomId)}),function(e){return r.apply(this,arguments)}),n=>{this.syncOpts.logger.error("[%s] Peek poll failed: %s",e.roomId,n),setTimeout(()=>{this.peekPoll(e,t)},3e4)}):this.syncOpts.logger.debug("Stopped peeking in room %s",e.roomId)}getSyncState(){return this.syncState}getSyncStateData(){var e;return null!==(e=this.syncStateData)&&void 0!==e?e:null}recoverFromSyncStartupError(e,t){var n=this;return H(function*(){yield e;var r=n.startKeepAlives();n.updateSyncState(qt.Error,{error:t}),yield r})()}shouldAbortSync(e){return"M_UNKNOWN_TOKEN"===e.errcode&&(this.syncOpts.logger.warn("Token no longer valid - assuming logout"),this.stop(),this.updateSyncState(qt.Error,{error:e}),!0)}sync(){var e=this;return H(function*(){var t,n;if(e.running=!0,e.abortController=new AbortController,null===(t=globalThis.window)||void 0===t||null===(n=t.addEventListener)||void 0===n||n.call(t,"online",e.onOnline,!1),e.client.isGuest())return e.doSync({});e.syncOpts.logger.debug("Getting saved sync token...");var r=e.client.store.getSavedSyncToken().then(t=>(e.syncOpts.logger.debug("Got saved sync token"),t));e.savedSyncPromise=e.client.store.getSavedSync().then(t=>{if(e.syncOpts.logger.debug("Got reply from saved sync, exists? ".concat(!!t)),t)return e.syncFromCache(t)}).catch(t=>{e.syncOpts.logger.error("Getting saved sync failed",t)}),yield e.getPushRules(),yield e.prepareLazyLoadingForSync(),yield e.storeClientOptions();var{filterId:i,filter:o}=yield e.getFilter();if(o){if(e.client.resetNotifTimelineSet(),!e.currentSyncRequest){var s=i,a=yield r;if(a)e.syncOpts.logger.debug("Sending first sync request...");else{e.syncOpts.logger.debug("Sending initial sync request...");var c=e.buildDefaultFilter();c.setDefinition(o.getDefinition()),c.setTimelineLimit(e.opts.initialSyncLimit),s=JSON.stringify(c.getDefinition())}e.currentSyncRequest=e.doSyncRequest({filter:s},a)}return e.syncOpts.logger.debug("Waiting for saved sync before starting sync processing..."),yield e.savedSyncPromise,e.doSync({filter:i})}})()}stop(){var e,t,n;this.syncOpts.logger.debug("SyncApi.stop"),null===(e=globalThis.window)||void 0===e||null===(t=e.removeEventListener)||void 0===t||t.call(e,"online",this.onOnline,!1),this.running=!1,null===(n=this.abortController)||void 0===n||n.abort(),this.keepAliveTimer&&(clearTimeout(this.keepAliveTimer),this.keepAliveTimer=void 0)}retryImmediately(){return!!this.connectionReturnedResolvers&&(this.startKeepAlives(0),!0)}syncFromCache(e){var t=this;return H(function*(){t.syncOpts.logger.debug("sync(): not doing HTTP hit, instead returning stored /sync data");var n=e.nextBatch;t.client.store.setSyncToken(n);var r={nextSyncToken:n,catchingUp:!1,fromCache:!0},i={next_batch:n,rooms:e.roomsData,account_data:{events:e.accountData}};try{yield t.processSyncResponse(r,i)}catch(e){t.syncOpts.logger.error("Error processing cached sync",e)}t.storeIsInvalid||t.updateSyncState(qt.Prepared,r)})()}doSync(e){var t=this;return H(function*(){for(;t.running;){var n=t.client.store.getSyncToken(),r=void 0;try{t.currentSyncRequest||(t.currentSyncRequest=t.doSyncRequest(e,n)),r=yield t.currentSyncRequest}catch(e){if(yield t.onSyncError(e))return;continue}finally{t.currentSyncRequest=void 0}t.client.store.setSyncToken(r.next_batch),t.failedSyncCount=0;var i={oldSyncToken:n??void 0,nextSyncToken:r.next_batch,catchingUp:t.catchingUp};try{yield t.processSyncResponse(i,r)}catch(e){t.syncOpts.logger.error("Caught /sync error",e),t.client.emit(Pe.SyncUnexpectedError,e)}yield t.client.store.setSyncData(r),i.catchingUp=t.catchingUp,e.hasSyncedBefore||(t.updateSyncState(qt.Prepared,i),e.hasSyncedBefore=!0),t.syncOpts.cryptoCallbacks&&(yield t.syncOpts.cryptoCallbacks.onSyncCompleted(i)),t.updateSyncState(qt.Syncing,i),t.client.store.wantsSave()&&(yield t.client.store.save())}t.running||(t.syncOpts.logger.debug("Sync no longer running: exiting."),t.connectionReturnedResolvers&&(t.connectionReturnedResolvers.reject(),t.connectionReturnedResolvers=void 0),t.updateSyncState(qt.Stopped))})()}doSyncRequest(e,t){var n,r=this.getSyncParams(e,t);return this.client.http.authedRequest(ue.Get,"/sync",r,void 0,{localTimeoutMs:r.timeout+S$,abortSignal:null===(n=this.abortController)||void 0===n?void 0:n.signal})}getSyncParams(e,t){var n=this.opts.pollTimeout;(this.getSyncState()!==qt.Syncing||this.catchingUp)&&(this.catchingUp=!0,n=0);var r=e.filter;this.client.isGuest()&&!r&&(r=this.getGuestFilter());var i={filter:r,timeout:n,"org.matrix.msc4222.use_state_after":!0};return this.opts.disablePresence?i.set_presence=AJ.Offline:void 0!==this.presence&&(i.set_presence=this.presence),t?i.since=t:i._cacheBuster=Date.now(),[qt.Reconnecting,qt.Error].includes(this.getSyncState())&&(i.timeout=0),i}setPresence(e){this.presence=e}onSyncError(e){var t=this;return H(function*(){if(!t.running)return t.syncOpts.logger.debug("Sync no longer running: exiting"),t.connectionReturnedResolvers&&(t.connectionReturnedResolvers.reject(),t.connectionReturnedResolvers=void 0),t.updateSyncState(qt.Stopped),!0;if(t.syncOpts.logger.error("/sync error %s",e),t.shouldAbortSync(e))return!0;t.failedSyncCount++,t.syncOpts.logger.debug("Number of consecutive failed sync requests:",t.failedSyncCount),t.syncOpts.logger.debug("Starting keep-alive");var n=t.startKeepAlives();return t.currentSyncRequest=void 0,t.updateSyncState(t.failedSyncCount>=C1e?qt.Error:qt.Reconnecting,{error:e}),(yield n)&&t.getSyncState()===qt.Error&&t.updateSyncState(qt.Catchup,{catchingUp:!0}),!1})()}processSyncResponse(e,t){var n=this;return H(function*(){var r,i,o,s,a=n.client;if(Array.isArray(null===(r=t.presence)||void 0===r?void 0:r.events)&&t.presence.events.filter(Ha).map(a.getEventMapper()).forEach(function(e){var t=a.store.getUser(e.getSender());t?t.setPresenceEvent(e):((t=mu.createUser(e.getSender(),a)).setPresenceEvent(e),a.store.storeUser(t)),a.emit(Pe.Event,e)}),Array.isArray(null===(i=t.account_data)||void 0===i?void 0:i.events)){var c=t.account_data.events.filter(Ha).map(a.getEventMapper()),l=c.reduce((e,t)=>(e[t.getType()]=a.store.getAccountData(t.getType()),e),{});a.store.storeAccountDataEvents(c),c.forEach(function(e){if(e.getType()===Z.PushRules){var t=e.getContent();a.setPushRules(t)}var n=l[e.getType()];return a.emit(Pe.AccountData,e,n),e})}if(t.to_device&&Array.isArray(t.to_device.events)&&t.to_device.events.length>0){var u=t.to_device.events.filter(Ha);MJ(n.syncOpts.cryptoCallbacks?yield n.syncOpts.cryptoCallbacks.preprocessToDeviceMessages(u):u.map(e=>({message:e,encryptionInfo:null})),a)}else n.catchingUp=!1;var d,h=[],p=[],f=[],m=[];t.rooms&&(t.rooms.invite&&(h=n.mapSyncResponseToRoomArray(t.rooms.invite)),t.rooms.join&&(p=n.mapSyncResponseToRoomArray(t.rooms.join)),t.rooms.leave&&(f=n.mapSyncResponseToRoomArray(t.rooms.leave)),t.rooms.knock&&(m=n.mapSyncResponseToRoomArray(t.rooms.knock))),n.notifEvents=[],yield ig(h,(d=H(function*(e){var t=e.room,r=n.mapSyncEventsFormat(e.invite_state,t);yield n.injectRoomEvents(t,r,void 0),e.isBrandNewRoom?(t.recalculate(),a.store.storeRoom(t),a.emit(Pe.Room,t)):t.recalculate(),r.forEach(function(e){a.emit(Pe.Event,e)})}),function(e){return d.apply(this,arguments)})),yield ig(p,function(){var t=H(function*(t){var r,i=t.room,o=n.mapSyncEventsFormat(t.state,i),s=n.mapSyncEventsFormat(t["org.matrix.msc4222.state_after"],i),c=n.mapSyncEventsFormat(t.timeline,i,!1),l=n.mapSyncEventsFormat(t.ephemeral),u=n.mapSyncEventsFormat(t.account_data),d=t["org.matrix.msc4222.state_after"]?s:o.concat(c),h=n.isRoomEncrypted(i,d);if(t.unread_notifications){var p,f;if(!h||0===t.unread_notifications.notification_count)i.setUnreadNotificationCount(Xt.Total,null!==(p=t.unread_notifications.notification_count)&&void 0!==p?p:0);if(!h||i.getUnreadNotificationCount(Xt.Highlight)<=0)i.setUnreadNotificationCount(Xt.Highlight,null!==(f=t.unread_notifications.highlight_count)&&void 0!==f?f:0)}var m=null!==(r=t[cb.name])&&void 0!==r?r:t[cb.altName];if(m)for(var[g,v]of(i.resetThreadUnreadNotificationCountFromSync(Object.keys(m)),Object.entries(m))){var y;if(!h||0===v.notification_count)i.setThreadUnreadNotificationCount(g,Xt.Total,null!==(y=v.notification_count)&&void 0!==y?y:0);var b,w=i.getThreadUnreadNotificationCount(g,Xt.Highlight)<=0;if(!h||h&&w)i.setThreadUnreadNotificationCount(g,Xt.Highlight,null!==(b=v.highlight_count)&&void 0!==b?b:0)}else i.resetThreadUnreadNotificationCountFromSync();if(t.timeline=t.timeline||{},t.isBrandNewRoom)null!==t.timeline.prev_batch&&i.getLiveTimeline().setPaginationToken(t.timeline.prev_batch,Me.BACKWARDS);else if(t.timeline.limited){for(var _=!0,S=c.length-1;S>=0;S--){var E=c[S].getId();if(i.getTimelineForEvent(E)){n.syncOpts.logger.debug("Already have event ".concat(E," in limited sync - not resetting")),_=!1,c.splice(0,S);break}}var C;if(_)i.resetLiveTimeline(t.timeline.prev_batch,n.syncOpts.canResetEntireTimeline(i.roomId)?null:null!==(C=e.oldSyncToken)&&void 0!==C?C:null),a.resetNotifTimelineSet()}if(n.syncOpts.cryptoCallbacks)for(var k of d)k.isState()&&k.getType()===Z.RoomEncryption&&""===k.getStateKey()&&(yield n.syncOpts.cryptoCallbacks.onCryptoEvent(i,k));try{"org.matrix.msc4222.state_after"in t?yield n.injectRoomEvents(i,void 0,s,c,e.fromCache):yield n.injectRoomEvents(i,o,void 0,c,e.fromCache)}catch(e){n.syncOpts.logger.error("Failed to process events on room ".concat(i.roomId,":"),e)}t.summary&&i.setSummary(t.summary),i.addEphemeralEvents(l),i.addAccountData(u),i.recalculate(),t.isBrandNewRoom&&(a.store.storeRoom(i),a.emit(Pe.Room,i)),n.processEventsForNotifs(i,c);var T=e=>a.emit(Pe.Event,e);o.forEach(T),c.forEach(T),l.forEach(T),u.forEach(T),i.decryptCriticalEvents()});return function(e){return t.apply(this,arguments)}}()),yield ig(f,function(){var e=H(function*(e){var t=e.room,{timelineEvents:r,stateEvents:i,stateAfterEvents:o}=yield n.mapAndInjectRoomEvents(e),s=n.mapSyncEventsFormat(e.account_data);t.addAccountData(s),t.recalculate(),e.isBrandNewRoom&&(a.store.storeRoom(t),a.emit(Pe.Room,t)),n.processEventsForNotifs(t,r),i?.forEach(function(e){a.emit(Pe.Event,e)}),o?.forEach(function(e){a.emit(Pe.Event,e)}),r.forEach(function(e){a.emit(Pe.Event,e)}),s.forEach(function(e){a.emit(Pe.Event,e)})});return function(t){return e.apply(this,arguments)}}()),yield ig(m,function(){var e=H(function*(e){var t=e.room,r=n.mapSyncEventsFormat(e.knock_state,t);yield n.injectRoomEvents(t,r,void 0),e.isBrandNewRoom?(t.recalculate(),a.store.storeRoom(t),a.emit(Pe.Room,t)):t.recalculate(),r.forEach(function(e){a.emit(Pe.Event,e)})});return function(t){return e.apply(this,arguments)}}()),e.oldSyncToken&&n.notifEvents.length&&(n.notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),n.notifEvents.forEach(function(e){var t;null===(t=a.getNotifTimelineSet())||void 0===t||t.addLiveEvent(e,{addToState:!0})})),t.device_lists&&n.syncOpts.cryptoCallbacks&&(yield n.syncOpts.cryptoCallbacks.processDeviceLists(t.device_lists)),yield null===(o=n.syncOpts.cryptoCallbacks)||void 0===o?void 0:o.processKeyCounts(t.device_one_time_keys_count,null!==(s=t.device_unused_fallback_key_types)&&void 0!==s?s:t["org.matrix.msc2732.device_unused_fallback_key_types"])})()}startKeepAlives(e){return void 0===e&&(e=2e3+Math.floor(5e3*Math.random())),null!==this.keepAliveTimer&&clearTimeout(this.keepAliveTimer),e>0?this.keepAliveTimer=setTimeout(this.pokeKeepAlive.bind(this),e):this.pokeKeepAlive(),this.connectionReturnedResolvers||(this.connectionReturnedResolvers=Promise.withResolvers()),this.connectionReturnedResolvers.promise}pokeKeepAlive(){var e,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.running)return clearTimeout(this.keepAliveTimer),void(this.connectionReturnedResolvers&&(this.connectionReturnedResolvers.reject("SyncApi.stop() was called"),this.connectionReturnedResolvers=void 0));var n=()=>{clearTimeout(this.keepAliveTimer),this.connectionReturnedResolvers&&(this.connectionReturnedResolvers.resolve(t),this.connectionReturnedResolvers=void 0)};this.client.http.request(ue.Get,"/_matrix/client/versions",void 0,void 0,{prefix:"",localTimeoutMs:15e3,abortSignal:null===(e=this.abortController)||void 0===e?void 0:e.signal}).then(()=>{n()},e=>{400==e.httpStatus||404==e.httpStatus?this.keepAliveTimer=setTimeout(n,2e3):(t=!0,this.keepAliveTimer=setTimeout(this.pokeKeepAlive.bind(this,t),5e3+Math.floor(5e3*Math.random())),this.updateSyncState(qt.Error,{error:e}))})}mapSyncResponseToRoomArray(e){var t=this.client;return Object.keys(e).filter(e=>!_y(e)).map(n=>{var r=t.store.getRoom(n),i=!1;return r||(r=this.createRoom(n),i=!0),oC(oC({},e[n]),{},{room:r,isBrandNewRoom:i})})}mapSyncEventsFormat(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e||!Array.isArray(e.events))return[];var r=this.client.getEventMapper({decrypt:n});return e.events.filter(Ha).map(function(e){return t&&(e.room_id=t.roomId),r(e)})}resolveInvites(e){if(e&&this.opts.resolveInvitesToProfiles){var t=this.client;e.getMembersWithMembership(He.Invite).forEach(function(n){if(!n.requestedProfileInfo){n.requestedProfileInfo=!0;var r=t.getUser(n.userId);(r?Promise.resolve({avatar_url:r.avatarUrl,displayname:r.displayName}):t.getProfileInfo(n.userId)).then(function(t){var r=n.events.member;r?.getContent().membership===He.Invite&&(r.getContent().avatar_url=t.avatar_url,r.getContent().displayname=t.displayname,n.setMembershipEvent(r,e.currentState))},function(e){})}})}}findEncryptionEvent(e){return e?.find(e=>e.getType()===Z.RoomEncryption&&""===e.getStateKey())}isRoomEncrypted(e,t){return e.hasEncryptionStateEvent()||!!this.findEncryptionEvent(t)}mapAndInjectRoomEvents(e){var t=this;return H(function*(){var n=t.mapSyncEventsFormat(e.state,e.room),r=t.mapSyncEventsFormat(e["org.matrix.msc4222.state_after"],e.room),i=t.mapSyncEventsFormat(e.timeline,e.room);return"org.matrix.msc4222.state_after"in e?yield t.injectRoomEvents(e.room,void 0,r,i):yield t.injectRoomEvents(e.room,n,void 0,i),{timelineEvents:i,stateEvents:n,stateAfterEvents:r}})()}injectRoomEvents(e,t,n,r){var i=arguments,o=this;return H(function*(){var s=i.length>4&&void 0!==i[4]&&i[4],a=n??t,c=e.getLiveTimeline(),l=0==c.getEvents().length;if(l){for(var u of a)o.client.getPushActionsForEvent(u);c.initialiseState(a,{timelineWasEmpty:l})}o.resolveInvites(e),e.recalculate(),l||(e.oldState.setStateEvents(a),e.currentState.setStateEvents(a)),yield e.addLiveEvents(r||[],{fromCache:s,timelineWasEmpty:l,addToState:void 0===n}),o.client.processBeaconEvents(e,r)})()}processEventsForNotifs(e,t){if(this.client.getNotifTimelineSet())for(var n of t){var r,i=this.client.getPushActionsForEvent(n);null!=i&&i.notify&&null!==(r=i.tweaks)&&void 0!==r&&r.highlight&&this.notifEvents.push(n)}}getGuestFilter(){return"{}"}updateSyncState(e,t){var n=this.syncState;this.syncState=e,this.syncStateData=t,this.client.emit(Pe.Sync,this.syncState,n,t)}}function OJ(e,t,n){var{timelineSupport:r}=e,i=new G3(t,e,e.getUserId(),{lazyLoadMembers:n.lazyLoadMembers,pendingEventOrdering:n.pendingEventOrdering,timelineSupport:r});return e.reEmitter.reEmit(i,[ke.Name,ke.Redaction,ke.RedactionCancelled,ke.Receipt,ke.Tags,ke.LocalEchoUpdated,ke.AccountData,ke.MyMembership,ke.Timeline,ke.TimelineReset,pt.Events,pt.Members,pt.NewMember,pt.Update,qn.New,qn.Update,qn.Destroy,qn.LivenessChange]),i.on(pt.NewMember,(t,n,r)=>{var i;r.user=null!==(i=e.getUser(r.userId))&&void 0!==i?i:void 0,e.reEmitter.reEmit(r,[js.Name,js.Typing,js.PowerLevel,js.Membership])}),i}function MJ(e,t){var n=[];e.map(e=>{if("m.key.verification.cancel"===e.message.type){var t=e.message.content.transaction_id;t&&n.push(t)}return e}).forEach(function(e){var r=e.message,i=r.content,o=new Zi(Object.assign({},r));if("m.key.verification.start"===r.type||"m.key.verification.request"===r.type){var s=i.transaction_id;n.includes(s)&&o.flagCancelled()}e.encryptionInfo&&o.makeEncrypted(Z.RoomMessageEncrypted,{ciphertext:""},e.encryptionInfo.senderCurve25519KeyBase64,""),t.emit(Pe.ToDeviceEvent,o),t.emit(Pe.ReceivedToDeviceMessage,e)})}class R1e{constructor(){L(this,"accountData",new Map),L(this,"fromToken",null)}isNewlyCreated(){return Promise.resolve(!0)}getSyncToken(){return this.fromToken}setSyncToken(e){this.fromToken=e}storeRoom(e){}getRoom(e){return null}getRooms(){return[]}removeRoom(e){}getRoomSummaries(){return[]}storeUser(e){}getUser(e){return null}getUsers(){return[]}scrollback(e,t){return[]}setUserCreator(e){}storeEvents(e,t,n,r){}storeFilter(e){}getFilter(e,t){return null}getFilterIdByName(e){return null}setFilterIdByName(e,t){}storeAccountDataEvents(e){}getAccountData(e){}setSyncData(e){return Promise.resolve()}wantsSave(){return!1}save(){return Promise.resolve()}startup(){return Promise.resolve()}getSavedSync(){return Promise.resolve(null)}getSavedSyncToken(){return Promise.resolve(null)}deleteAllData(){return Promise.resolve()}getOutOfBandMembers(){return Promise.resolve(null)}setOutOfBandMembers(e,t){return Promise.resolve()}clearOutOfBandMembers(){return Promise.resolve()}getClientOptions(){return Promise.resolve(void 0)}storeClientOptions(e){return Promise.resolve()}getPendingEvents(e){return H(function*(){return[]})()}setPendingEvents(e,t){return Promise.resolve()}saveToDeviceBatches(e){return H(function*(){return Promise.resolve()})()}getOldestToDeviceBatch(){return Promise.resolve(null)}removeToDeviceBatch(e){return H(function*(){return Promise.resolve()})()}destroy(){return H(function*(){})()}}const Oi=[];for(let e=0;e<256;++e)Oi.push((e+256).toString(16).slice(1));function I1e(e,t=0){return(Oi[e[t+0]]+Oi[e[t+1]]+Oi[e[t+2]]+Oi[e[t+3]]+"-"+Oi[e[t+4]]+Oi[e[t+5]]+"-"+Oi[e[t+6]]+Oi[e[t+7]]+"-"+Oi[e[t+8]]+Oi[e[t+9]]+"-"+Oi[e[t+10]]+Oi[e[t+11]]+Oi[e[t+12]]+Oi[e[t+13]]+Oi[e[t+14]]+Oi[e[t+15]]).toLowerCase()}let Sk;const k1e=new Uint8Array(16);function x1e(){if(!Sk){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Sk=crypto.getRandomValues.bind(crypto)}return Sk(k1e)}const A1e=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),E$={randomUUID:A1e};function P1e(e,t,n){if(E$.randomUUID&&!e)return E$.randomUUID();const r=(e=e||{}).random??e.rng?.()??x1e();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=15&r[6]|64,r[8]=63&r[8]|128,I1e(r)}var C$,T$,Ck,R$,I$,Aa={},wk={},Ek={exports:{}};function K7(){if(C$)return Ek.exports;C$=1;var e=Ek.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};return Object.keys(e).forEach(function(t){e[t].forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})}),Ek.exports}function L1e(){return T$||(T$=1,function(e){var t=function(e){return String(Number(e))===e?Number(e):e},n=function(e,n,r){var i=e.name&&e.names;e.push&&!n[e.push]?n[e.push]=[]:i&&!n[e.name]&&(n[e.name]={});var o=e.push?{}:i?n[e.name]:n;(function(e,n,r,i){if(i&&!r)n[i]=t(e[1]);else for(var o=0;o1&&(e[r[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(o,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var n=[],r=e.split(" ").map(t),i=0;i=i)return e;var t=r[n];switch(n+=1,e){case"%%":return"%";case"%s":return String(t);case"%d":return Number(t);case"%v":return""}})},r=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var o=0;oe+String.fromCharCode(t),""));return t.omitPadding&&(n=n.replace(/={1,2}$/,"")),"base64url"===t.alphabet&&(n=n.replace(/\+/g,"-").replace(/\//g,"_")),n}function wy(e){return z7(e,{alphabet:"base64",omitPadding:!1})}function DJ(e){return z7(e,{alphabet:"base64",omitPadding:!0})}function K3(e){return z7(e,{alphabet:"base64url",omitPadding:!0})}function D1e(e,t){return"function"==typeof Uint8Array.fromBase64?Uint8Array.fromBase64(e,t):Uint8Array.from(atob(e),e=>e.charCodeAt(0))}function Nh(e){return D1e(e.replace(/-/g,"+").replace(/_/g,"/"),{alphabet:"base64",lastChunkHandling:"loose"})}var N1e="abcdefghijklmnopqrstuvwxyz",U1e="ABCDEFGHIJKLMNOPQRSTUVWXYZ",j1e="0123456789";function NJ(e){var t=new Uint8Array(e);return globalThis.crypto.getRandomValues(t),K3(t)}function So(e){return F1e(e,U1e+N1e+j1e)}function F1e(e,t){if(t.length<2||t.length>256)throw new Error("Character set must be between 2 and 256 characters long");if(e<1||e>32768)throw new Error("Requested random string length must be between 1 and 32768");for(var n=256-256%t.length,r=new Uint8Array(Math.floor(1.3*e)),i=r.length,o=[];o.length(null===Ey&&(Ey=new AudioContext),eA++,Ey),H1e=()=>{var e;0===--eA&&(null===(e=Ey)||void 0===e||e.close(),Ey=null)},B1e=200,tA=-60,V1e=8,xc=function(e){return e.NewStream="new_stream",e.MuteStateChanged="mute_state_changed",e.LocalVolumeChanged="local_volume_changed",e.VolumeChanged="volume_changed",e.ConnectedChanged="connected_changed",e.Speaking="speaking",e.Disposed="disposed",e}({});class tu extends Ln{constructor(e){super(),L(this,"stream",void 0),L(this,"sdpMetadataStreamId",void 0),L(this,"userId",void 0),L(this,"deviceId",void 0),L(this,"purpose",void 0),L(this,"speakingVolumeSamples",void 0),L(this,"client",void 0),L(this,"call",void 0),L(this,"roomId",void 0),L(this,"audioMuted",void 0),L(this,"videoMuted",void 0),L(this,"localVolume",1),L(this,"measuringVolumeActivity",!1),L(this,"audioContext",void 0),L(this,"analyser",void 0),L(this,"frequencyBinCount",void 0),L(this,"speakingThreshold",tA),L(this,"speaking",!1),L(this,"volumeLooperTimeout",void 0),L(this,"_disposed",!1),L(this,"_connected",!1),L(this,"onAddTrack",()=>{this.emit(xc.NewStream,this.stream)}),L(this,"onCallState",e=>{e===at.Connected?this.connected=!0:e===at.Connecting&&(this.connected=!1)}),L(this,"volumeLooper",()=>{if(this.analyser&&this.measuringVolumeActivity){this.analyser.getFloatFrequencyData(this.frequencyBinCount);var e=-1/0;for(var t of this.frequencyBinCount)t>e&&(e=t);this.speakingVolumeSamples.shift(),this.speakingVolumeSamples.push(e),this.emit(xc.VolumeChanged,e);var n=!1;for(var r of this.speakingVolumeSamples)if(r>this.speakingThreshold){n=!0;break}this.speaking!==n&&(this.speaking=n,this.emit(xc.Speaking,this.speaking)),this.volumeLooperTimeout=setTimeout(this.volumeLooper,B1e)}}),this.client=e.client,this.call=e.call,this.roomId=e.roomId,this.userId=e.userId,this.deviceId=e.deviceId,this.purpose=e.purpose,this.audioMuted=e.audioMuted,this.videoMuted=e.videoMuted,this.speakingVolumeSamples=new Array(V1e).fill(-1/0),this.sdpMetadataStreamId=e.stream.id,this.updateStream(null,e.stream),this.stream=e.stream,this.hasAudioTrack&&this.initVolumeMeasuring(),e.call&&(e.call.addListener(gt.State,this.onCallState),this.onCallState(e.call.state))}get connected(){return this.isLocal()||this._connected}set connected(e){this._connected=e,this.emit(xc.ConnectedChanged,this.connected)}get hasAudioTrack(){return this.stream.getAudioTracks().length>0}updateStream(e,t){if(t!==e){var n=this.measuringVolumeActivity;e&&(e.removeEventListener("addtrack",this.onAddTrack),this.measureVolumeActivity(!1)),this.stream=t,t.addEventListener("addtrack",this.onAddTrack),this.hasAudioTrack?(this.initVolumeMeasuring(),n&&this.measureVolumeActivity(!0)):this.measureVolumeActivity(!1),this.emit(xc.NewStream,this.stream)}}initVolumeMeasuring(){this.hasAudioTrack&&(this.audioContext||(this.audioContext=$1e()),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=512,this.analyser.smoothingTimeConstant=.1,this.audioContext.createMediaStreamSource(this.stream).connect(this.analyser),this.frequencyBinCount=new Float32Array(this.analyser.frequencyBinCount))}getMember(){var e,t=this.client.getRoom(this.roomId);return null!==(e=t?.getMember(this.userId))&&void 0!==e?e:null}isLocal(){return this.userId===this.client.getUserId()&&(void 0===this.deviceId||this.deviceId===this.client.getDeviceId())}isAudioMuted(){return 0===this.stream.getAudioTracks().length||this.audioMuted}isVideoMuted(){return 0===this.stream.getVideoTracks().length||this.videoMuted}isSpeaking(){return this.speaking}setNewStream(e){this.updateStream(this.stream,e)}setAudioVideoMuted(e,t){null!==e&&(this.audioMuted!==e&&this.speakingVolumeSamples.fill(-1/0),this.audioMuted=e),null!==t&&(this.videoMuted=t),this.emit(xc.MuteStateChanged,this.audioMuted,this.videoMuted)}measureVolumeActivity(e){if(e){if(!this.analyser||!this.frequencyBinCount||!this.hasAudioTrack)return;this.measuringVolumeActivity=!0,this.volumeLooper()}else this.measuringVolumeActivity=!1,this.speakingVolumeSamples.fill(-1/0),this.emit(xc.VolumeChanged,-1/0)}setSpeakingThreshold(e){this.speakingThreshold=e}clone(){var e=this.client.getMediaHandler(),t=this.stream.clone();return M.log("CallFeed clone() cloning stream (originalStreamId=".concat(this.stream.id,", newStreamId").concat(t.id,")")),this.purpose===kn.Usermedia?e.userMediaStreams.push(t):e.screensharingStreams.push(t),new tu({client:this.client,roomId:this.roomId,userId:this.userId,deviceId:this.deviceId,stream:t,purpose:this.purpose,audioMuted:this.audioMuted,videoMuted:this.videoMuted})}dispose(){var e,t;clearTimeout(this.volumeLooperTimeout),null===(e=this.stream)||void 0===e||e.removeEventListener("addtrack",this.onAddTrack),null===(t=this.call)||void 0===t||t.removeListener(gt.State,this.onCallState),this.audioContext&&(this.audioContext=void 0,this.analyser=void 0,H1e()),this._disposed=!0,this.emit(xc.Disposed)}get disposed(){return this._disposed}set disposed(e){this._disposed=e}getLocalVolume(){return this.localVolume}setLocalVolume(e){this.localVolume=e,this.emit(xc.LocalVolumeChanged,e)}}var q1e=3e3,nA=function(e){return e.Incoming="Call.incoming",e}({});class G1e{constructor(e){L(this,"calls",void 0),L(this,"callEventBuffer",void 0),L(this,"nextSeqByCall",new Map),L(this,"toDeviceEventBuffers",new Map),L(this,"client",void 0),L(this,"candidateEventsByCall",void 0),L(this,"eventBufferPromiseChain",void 0),L(this,"onSync",()=>{var e=this.callEventBuffer;this.callEventBuffer=[],this.eventBufferPromiseChain?this.eventBufferPromiseChain=this.eventBufferPromiseChain.then(()=>this.evaluateEventBuffer(e)):this.eventBufferPromiseChain=this.evaluateEventBuffer(e)}),L(this,"onRoomTimeline",e=>{this.callEventBuffer.push(e)}),L(this,"onToDeviceEvent",e=>{var t=e.getContent();if(t.call_id)if(this.nextSeqByCall.has(t.call_id)||this.nextSeqByCall.set(t.call_id,0),void 0!==t.seq){var n=this.nextSeqByCall.get(t.call_id)||0;if(t.seq!==n){this.toDeviceEventBuffers.has(t.call_id)||this.toDeviceEventBuffers.set(t.call_id,[]);var r=this.toDeviceEventBuffers.get(t.call_id),i=r.findIndex(e=>e.getContent().seq>t.seq);-1===i?r.push(e):r.splice(i,0,e)}else{var o=t.call_id;this.callEventBuffer.push(e),this.nextSeqByCall.set(o,t.seq+1);for(var s=this.toDeviceEventBuffers.get(o),a=s&&s.shift();a&&a.getContent().seq===this.nextSeqByCall.get(o);)this.callEventBuffer.push(a),this.nextSeqByCall.set(o,a.getContent().seq+1),a=s.shift()}}else this.callEventBuffer.push(e);else this.callEventBuffer.push(e)}),this.client=e,this.calls=new Map,this.callEventBuffer=[],this.candidateEventsByCall=new Map}start(){this.client.on(Pe.Sync,this.onSync),this.client.on(ke.Timeline,this.onRoomTimeline),this.client.on(Pe.ToDeviceEvent,this.onToDeviceEvent)}stop(){this.client.removeListener(Pe.Sync,this.onSync),this.client.removeListener(ke.Timeline,this.onRoomTimeline),this.client.removeListener(Pe.ToDeviceEvent,this.onToDeviceEvent)}evaluateEventBuffer(e){var t=this;return H(function*(){yield Promise.all(e.map(e=>t.client.decryptEventIfNeeded(e)));var n=e.filter(e=>{var t=e.getType();return t.startsWith("m.call.")||t.startsWith("org.matrix.call.")}),r=new Set;for(var i of n){var o=i.getType();(o===Z.CallAnswer||o===Z.CallHangup)&&r.add(i.getContent().call_id)}for(var s of n){var a=s.getType(),c=s.getContent().call_id;if(a!==Z.CallInvite||!r.has(c))try{yield t.handleCallEvent(s)}catch(e){M.error("CallEventHandler evaluateEventBuffer() caught exception handling call event",e)}}})()}handleCallEvent(e){var t=this;return H(function*(){var n;t.client.emit(Pe.ReceivedVoipEvent,e);var r,i,o=e.getContent(),s=e.getRoomId()||(null===(n=t.client.groupCallEventHandler.getGroupCallById(o.conf_id))||void 0===n||null===(n=n.room)||void 0===n?void 0:n.roomId),a=o.conf_id,c=e.getType(),l=e.getSender(),u=o.call_id?t.calls.get(o.call_id):void 0;if(a){if(!(i=t.client.groupCallEventHandler.getGroupCallById(a)))return void M.warn("CallEventHandler handleCallEvent() could not find a group call - ignoring event (groupCallId=".concat(a,", type=").concat(c,")"));if(!(r=o.device_id))return M.warn("CallEventHandler handleCallEvent() could not find a device id - ignoring event (senderId=".concat(l,")")),void i.emit(In.Error,new FJ(l));if(o.dest_session_id!==t.client.getSessionId())return void M.warn("CallEventHandler handleCallEvent() call event does not match current session id - ignoring")}var d=l===t.client.credentials.userId&&(void 0===r||r===t.client.getDeviceId());if(s){if(c===Z.CallInvite){var h,p,f;if(d||e.getLocalAge()>o.lifetime-q1e||u&&u.state===at.Ended||(u&&M.warn("CallEventHandler handleCallEvent() already has a call but got an invite - clobbering (callId=".concat(o.call_id,")")),o.invitee&&o.invitee!==t.client.getUserId()))return;var m=(null!==(h=t.client.getTurnServersExpiry())&&void 0!==h?h:0)-Date.now();if(M.info("CallEventHandler handleCallEvent() current turn creds expire in "+m+" ms"),!(u=null!==(p=ub(t.client,s,{forceTURN:t.client.forceTURN,opponentDeviceId:r,groupCallId:a,opponentSessionId:o.sender_session_id}))&&void 0!==p?p:void 0))return void M.log("CallEventHandler handleCallEvent() this client does not support WebRTC (callId=".concat(o.call_id,")"));u.callId=o.call_id;var g,v=null===(f=i)||void 0===f?void 0:f.getGroupCallStats();v&&u.initStats(v);try{yield u.initWithInvite(e)}catch(e){if(e instanceof Bl)if(e.code===Ty.UnknownDevice){var y;null===(y=i)||void 0===y||y.emit(In.Error,e)}else M.error(e)}if(t.calls.set(u.callId,u),t.candidateEventsByCall.get(u.callId))for(var b of t.candidateEventsByCall.get(u.callId))u.onRemoteIceCandidatesReceived(b);for(var w of t.calls.values()){var _,S=[at.WaitLocalMedia,at.CreateOffer,at.InviteSent].includes(w.state);if(u.roomId===w.roomId&&w.direction===Rd.Outbound&&(null===(_=u.getOpponentMember())||void 0===_?void 0:_.userId)===w.invitee&&S){g=w;break}}return void(g?g.callId>u.callId?(M.log("CallEventHandler handleCallEvent() detected glare - answering incoming call and canceling outgoing call (incomingId=".concat(u.callId,", outgoingId=").concat(g.callId,")")),g.replacedBy(u)):(M.log("CallEventHandler handleCallEvent() detected glare - hanging up incoming call (incomingId=".concat(u.callId,", outgoingId=").concat(g.callId,")")),u.hangup(ft.Replaced,!0)):t.client.emit(nA.Incoming,u))}if(c===Z.CallCandidates){if(d)return;return void(u?u.onRemoteIceCandidatesReceived(e):(t.candidateEventsByCall.has(o.call_id)||t.candidateEventsByCall.set(o.call_id,[]),t.candidateEventsByCall.get(o.call_id).push(e)))}if([Z.CallHangup,Z.CallReject].includes(c)){var E;if(u)u.state!==at.Ended&&(c===Z.CallHangup?u.onHangupReceived(o):u.onRejectReceived(o),u.state===at.Ended&&t.calls.delete(o.call_id));else(u=null!==(E=ub(t.client,s,{opponentDeviceId:r,opponentSessionId:o.sender_session_id}))&&void 0!==E?E:void 0)&&(u.callId=o.call_id,u.initWithHangup(e),t.calls.set(o.call_id,u));return}if(!u||!u.hasPeerConnection)return void M.info("CallEventHandler handleCallEvent() discarding possible call event as we don't have a call (type=".concat(c,")"));if(e.getContent().party_id!==u.ourPartyId)switch(c){case Z.CallAnswer:d?u.state===at.Ringing&&u.onAnsweredElsewhere(o):u.onAnswerReceived(e);break;case Z.CallSelectAnswer:u.onSelectAnswerReceived(e);break;case Z.CallNegotiate:u.onNegotiateReceived(e);break;case Z.CallAssertedIdentity:case Z.CallAssertedIdentityPrefix:u.onAssertedIdentityReceived(e);break;case Z.CallSDPStreamMetadataChanged:case Z.CallSDPStreamMetadataChangedPrefix:u.onSDPStreamMetadataChangedReceived(e)}}})()}}var rA=function(e){return e.Incoming="GroupCall.incoming",e.Outgoing="GroupCall.outgoing",e.Ended="GroupCall.ended",e.Participants="GroupCall.participants",e}({});class K1e{constructor(e){this.client=e,L(this,"groupCalls",new Map),L(this,"roomDeferreds",new Map),L(this,"onRoomsChanged",e=>{this.createGroupCallForRoom(e)}),L(this,"onRoomStateChanged",(e,t)=>{if(e.getType()===Z.GroupCallPrefix){var n=e.getStateKey(),r=e.getContent(),i=this.groupCalls.get(t.roomId);i||r["m.terminated"]||e.isRedacted()?i&&i.groupCallId===n?r["m.terminated"]||e.isRedacted()?i.terminate(!1):r["m.type"]!==i.type&&M.warn("GroupCallEventHandler onRoomStateChanged() currently does not support changing type (roomId=".concat(t.roomId,")")):i&&i.groupCallId!==n&&M.warn("GroupCallEventHandler onRoomStateChanged() currently does not support multiple calls (roomId=".concat(t.roomId,")")):this.createGroupCallFromRoomStateEvent(e)}})}start(){var e=this;return H(function*(){e.client.getSyncState()!==qt.Syncing&&(M.debug("GroupCallEventHandler start() waiting for client to start syncing"),yield new Promise(t=>{var n=()=>{if(e.client.getSyncState()===qt.Syncing)return e.client.off(Pe.Sync,n),t()};e.client.on(Pe.Sync,n)}));var t=e.client.getRooms();for(var n of t)e.createGroupCallForRoom(n);e.client.on(Pe.Room,e.onRoomsChanged),e.client.on(pt.Events,e.onRoomStateChanged)})()}stop(){this.client.removeListener(Pe.Room,this.onRoomsChanged),this.client.removeListener(pt.Events,this.onRoomStateChanged)}getRoomDeferred(e){var t,n=this.roomDeferreds.get(e);void 0===n&&((n={prom:new Promise(e=>{t=e})}).resolve=t,this.roomDeferreds.set(e,n));return n}waitUntilRoomReadyForGroupCalls(e){return this.getRoomDeferred(e).prom}getGroupCallById(e){return[...this.groupCalls.values()].find(t=>t.groupCallId===e)}createGroupCallForRoom(e){var t=e.currentState.getStateEvents(Z.GroupCallPrefix),n=t.sort((e,t)=>t.getTs()-e.getTs());for(var r of n){if(!r.getContent()["m.terminated"]&&!r.isRedacted()){M.debug("GroupCallEventHandler createGroupCallForRoom() choosing group call from possible calls (stateKey=".concat(r.getStateKey(),", ts=").concat(r.getTs(),", roomId=").concat(e.roomId,", numOfPossibleCalls=").concat(t.length,")")),this.createGroupCallFromRoomStateEvent(r);break}}this.getRoomDeferred(e.roomId).resolve()}createGroupCallFromRoomStateEvent(e){var t=e.getRoomId(),n=e.getContent(),r=this.client.getRoom(t);if(r){var i=e.getStateKey(),o=n["m.type"];if(Object.values(z3).includes(o)){var s=n["m.intent"];if(Object.values(jJ).includes(s)){var a,c=!!n["io.element.ptt"];if(null!=n&&n.dataChannelsEnabled&&null!=n&&n.dataChannelOptions){var{ordered:l,maxPacketLifeTime:u,maxRetransmits:d,protocol:h}=n.dataChannelOptions;a={ordered:l,maxPacketLifeTime:u,maxRetransmits:d,protocol:h}}var p=new W7(this.client,r,o,c,s,i,n?.dataChannelsEnabled||this.client.isVoipWithNoMediaAllowed,a,this.client.isVoipWithNoMediaAllowed,this.client.useLivekitForGroupCalls,n["io.element.livekit_service_url"]);return this.groupCalls.set(r.roomId,p),this.client.emit(rA.Incoming,p),p}M.warn("Received invalid group call intent (type=".concat(o,", roomId=").concat(t,")"))}else M.warn("GroupCallEventHandler createGroupCallFromRoomStateEvent() received invalid call type (type=".concat(o,", roomId=").concat(t,")"))}else M.warn("GroupCallEventHandler createGroupCallFromRoomStateEvent() couldn't find room for call (roomId=".concat(t,")"))}}class z1e{constructor(){L(this,"bandwidth",{}),L(this,"bitrate",{}),L(this,"packetLoss",{}),L(this,"transport",[])}}class W1e{static buildBandwidthReport(e){var t=e.availableIncomingBitrate,n=e.availableOutgoingBitrate;return{download:t?Math.round(t/1e3):0,upload:n?Math.round(n/1e3):0}}}class Y1e{static buildReport(e,t,n,r){var i=e?.get(t.localCandidateId),o=e?.get(t.remoteCandidateId);if(o&&i){var s=void 0!==o.ip?o.ip:o.address,a=o.port,c="".concat(s,":").concat(a),l=void 0!==i.ip?i.ip:i.address,u=i.port,d="".concat(l,":").concat(u),h=o.protocol;n.some(e=>e.ip===c&&e.type===h&&e.localIp===d)||n.push({ip:c,type:h,localIp:d,isFocus:r,localCandidateType:i.candidateType,remoteCandidateType:o.candidateType,networkType:i.networkType,rtt:t.currentRoundTripTime?1e3*t.currentRoundTripTime:NaN})}return n}}class X1e{constructor(){L(this,"ssrcToMid",{local:new Map,remote:new Map})}findMidBySsrc(e,t){var n;return this.ssrcToMid[t].forEach((t,r)=>{t.find(t=>t==e)&&(n=r)}),n}parse(e,t){var n=Z5.parse(e),r=new Map;n.media.forEach(e=>{if(e.mid&&"video"===e.type||"audio"===e.type){var t,n=[];null===(t=e.ssrcs)||void 0===t||t.forEach(e=>{"cname"===e.attribute&&n.push("".concat(e.id))}),r.set("".concat(e.mid),n)}}),this.ssrcToMid[t]=r}getSsrcToMidMap(e){return this.ssrcToMid[e]}}class J1e{constructor(e){this.pc=e}getLocalTracks(e){return this.pc.getTransceivers().filter(e=>"sendonly"===e.currentDirection||"sendrecv"===e.currentDirection).filter(e=>null!==e.sender).map(e=>e.sender).map(e=>e.track).filter(t=>null!==t&&t.kind===e)}getTackById(e){return this.pc.getTransceivers().map(t=>null!==t?.sender.track&&t.sender.track.id===e?t.sender.track:null!==t?.receiver.track&&t.receiver.track.id===e?t.receiver.track:void 0).find(e=>void 0!==e)}getLocalTrackIdByMid(e){var t,n=this.pc.getTransceivers().find(t=>t.mid===e);return null==n||null===(t=n.sender)||void 0===t||null===(t=t.track)||void 0===t?void 0:t.id}getRemoteTrackIdByMid(e){var t,n=this.pc.getTransceivers().find(t=>t.mid===e);return null==n||null===(t=n.receiver)||void 0===t||null===(t=t.track)||void 0===t?void 0:t.id}getActiveSimulcastStreams(){return 3}getTransceiverByTrackId(e){return this.pc.getTransceivers().find(t=>t.receiver.track.id===e||null!==t.sender.track&&t.sender.track.id===e)}}class Q1e{constructor(e,t,n){this.trackId=e,this.type=t,this.kind=n,L(this,"loss",{packetsTotal:0,packetsLost:0,isDownloadStream:!1}),L(this,"bitrate",{download:0,upload:0}),L(this,"resolution",{width:-1,height:-1}),L(this,"audioConcealment",{concealedAudio:0,totalAudioDuration:0}),L(this,"framerate",0),L(this,"jitter",0),L(this,"codec",""),L(this,"isAlive",!0),L(this,"isMuted",!1),L(this,"isEnabled",!0)}getType(){return this.type}setLoss(e){this.loss=e}getLoss(){return this.loss}setResolution(e){this.resolution=e}getResolution(){return this.resolution}setFramerate(e){this.framerate=e}getFramerate(){return this.framerate}setBitrate(e){this.bitrate=e}getBitrate(){return this.bitrate}setCodec(e){return this.codec=e,!0}getCodec(){return this.codec}resetBitrate(){this.bitrate={download:0,upload:0}}set alive(e){this.isAlive=e}get alive(){return this.isAlive}set muted(e){this.isMuted=e}get muted(){return this.isMuted}set enabled(e){this.isEnabled=e}get enabled(){return this.isEnabled}setJitter(e){this.jitter=e}getJitter(){return this.jitter}setAudioConcealment(e,t){this.audioConcealment.concealedAudio=e,this.audioConcealment.totalAudioDuration=t}getAudioConcealment(){return this.audioConcealment}}class Z1e{constructor(e,t){this.mediaSsrcHandler=e,this.mediaTrackHandler=t,L(this,"track2stats",new Map)}findTrack2Stats(e,t){var n;if(e.trackIdentifier)n=e.trackIdentifier;else if(e.mid)n="remote"===t?this.mediaTrackHandler.getRemoteTrackIdByMid(e.mid):this.mediaTrackHandler.getLocalTrackIdByMid(e.mid);else if(e.ssrc){if(!this.mediaSsrcHandler.findMidBySsrc(e.ssrc,t))return;n="remote"===t?this.mediaTrackHandler.getRemoteTrackIdByMid(e.mid):this.mediaTrackHandler.getLocalTrackIdByMid(e.mid)}if(n){var r=this.track2stats.get(n);if(!r){var i=this.mediaTrackHandler.getTackById(n);if(void 0===i)return;var o="audio"===i.kind?i.kind:"video";r=new Q1e(n,t,o),this.track2stats.set(n,r)}return r}}findLocalVideoTrackStats(e){if(0!==this.mediaTrackHandler.getLocalTracks("video").length)return this.findTrack2Stats(e,"local")}getTrack2stats(){return this.track2stats}findTransceiverByTrackId(e){return this.mediaTrackHandler.getTransceiverByTrackId(e)}}class _h{static getNonNegativeValue(e){var t=e;return"number"!=typeof t&&(t=Number(t)),isNaN(t)?0:Math.max(0,t)}}class po{static buildFramerateResolution(e,t){var n={height:t.frameHeight,width:t.frameWidth},r=t.framesPerSecond;n.height&&n.width&&e.setResolution(n),e.setFramerate(Math.round(r||0))}static calculateSimulcastFramerate(e,t,n,r){var i=e.getFramerate();if(!i){if(n){var o=t.timestamp-n.timestamp;if(o>0&&t.framesSent)i=(t.framesSent-n.framesSent)/o*1e3}if(!i)return}i=r?Math.round(i/r):0,e.setFramerate(i)}static buildCodec(e,t,n){var r=e?.get(n.codecId);if(r){var i=r.mimeType.split("/")[1];i&&t.setCodec(i)}}static buildBitrateReceived(e,t,n){e.setBitrate({download:po.calculateBitrate(t.bytesReceived,n.bytesReceived,t.timestamp,n.timestamp),upload:0})}static buildBitrateSend(e,t,n){e.setBitrate({download:0,upload:this.calculateBitrate(t.bytesSent,n.bytesSent,t.timestamp,n.timestamp)})}static buildPacketsLost(e,t,n){var r="outbound-rtp"===t.type?"packetsSent":"packetsReceived",i=t[r];(!i||i<0)&&(i=0);var o=_h.getNonNegativeValue(n[r]),s=Math.max(0,i-o),a=_h.getNonNegativeValue(t.packetsLost),c=_h.getNonNegativeValue(n.packetsLost),l=Math.max(0,a-c);e.setLoss({packetsTotal:s+l,packetsLost:l,isDownloadStream:"outbound-rtp"!==t.type})}static calculateBitrate(e,t,n,r){var i=_h.getNonNegativeValue(e),o=_h.getNonNegativeValue(t),s=Math.max(0,i-o),a=n-r,c=0;return a>0&&(c=Math.round(8*s/a)),c}static setTrackStatsState(e,t){var n;if(void 0!==t){var r="remote"===e.getType()?t.receiver.track:null==t||null===(n=t.sender)||void 0===n?void 0:n.track;null!=r&&"ended"!==r.readyState?(e.muted=r.muted,e.enabled=r.enabled,e.alive=!0):e.alive=!1}else e.alive=!1}static buildTrackSummary(e){var t={count:0,muted:0,maxJitter:0,maxPacketLoss:0,concealedAudio:0,totalAudio:0},n={count:0,muted:0,maxJitter:0,maxPacketLoss:0,concealedAudio:0,totalAudio:0},r=e.filter(e=>"remote"===e.getType()),i=r.filter(e=>"audio"===e.kind);return r.forEach(e=>{var r,o,s="video"===e.kind?t:n;(s.count++,e.alive&&e.muted&&s.muted++,s.maxJitter0)&&(s.concealedAudio+=null===(r=e.getAudioConcealment())||void 0===r?void 0:r.concealedAudio,s.totalAudio+=null===(o=e.getAudioConcealment())||void 0===o?void 0:o.totalAudioDuration)}),{audioTrackSummary:n,videoTrackSummary:t}}static buildJitter(e,t){if("inbound-rtp"===t.type){var n=t?.jitter;if(void 0!==n){var r=_h.getNonNegativeValue(n);e.setJitter(Math.round(1e3*r))}else e.setJitter(-1)}}static buildAudioConcealment(e,t){if("inbound-rtp"===t.type){var n=1e3*t?.totalSamplesDuration/t?.totalSamplesReceived*t?.concealedSamples,r=1e3*t?.totalSamplesDuration;e.setAudioConcealment(n,r)}}}class Cy{static build(e){var t={},n={download:0,upload:0},r={download:0,upload:0},i=0,o=0,s={local:new Map,remote:new Map},a={local:new Map,remote:new Map},c={local:new Map,remote:new Map},l=new Map,u=new Map,d=0,h=0,p=0,f=0,m=0,g=0;for(var[v,y]of e){var b=y.getLoss(),w=b.isDownloadStream?"download":"upload";if(n[w]+=b.packetsTotal,r[w]+=b.packetsLost,i+=y.getBitrate().download,o+=y.getBitrate().upload,"audio"===y.kind){var _=y.getAudioConcealment();m+=_.concealedAudio,g+=_.totalAudioDuration,d+=y.getBitrate().download,h+=y.getBitrate().upload}else p+=y.getBitrate().download,f+=y.getBitrate().upload;s[y.getType()].set(v,y.getResolution()),a[y.getType()].set(v,y.getFramerate()),c[y.getType()].set(v,y.getCodec()),"remote"===y.getType()&&(l.set(v,y.getJitter()),"audio"===y.kind&&u.set(v,y.getAudioConcealment())),y.resetBitrate()}return t.bitrate={upload:o,download:i},t.bitrate.audio={upload:h,download:d},t.bitrate.video={upload:f,download:p},t.packetLoss={total:Cy.calculatePacketLoss(r.download+r.upload,n.download+n.upload),download:Cy.calculatePacketLoss(r.download,n.download),upload:Cy.calculatePacketLoss(r.upload,n.upload)},t.audioConcealment=u,t.totalAudioConcealment={concealedAudio:m,totalAudioDuration:g},t.framerate=a,t.resolution=s,t.codec=c,t.jitter=l,t}static calculatePacketLoss(e,t){return!t||t<=0||!e||e<=0?0:Math.round(e/t*100)}}class Bd{static buildCallFeedReport(e,t,n){var r=n.getTransceivers(),i=[];return r.forEach(e=>{var t,n=null!==(t=e.sender)&&void 0!==t&&t.track?Bd.buildTrackStats(e.sender.track,"sender"):null,r=Bd.buildTrackStats(e.receiver.track,"receiver");i.push({mid:null==e.mid?"null":e.mid,direction:e.direction,currentDirection:null==e.currentDirection?"null":e.currentDirection,sender:n,receiver:r})}),{callId:e,opponentMemberId:t,transceiver:i,callFeeds:[]}}static buildTrackStats(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"--",i=null===(t=e.getSettings())||void 0===t?void 0:t.deviceId,o=null===(n=e.getConstraints())||void 0===n?void 0:n.deviceId;return{id:e.id,kind:e.kind,settingDeviceId:i??"unknown",constrainDeviceId:o??"unknown",muted:e.muted,enabled:e.enabled,readyState:e.readyState,label:r}}static expandCallFeedReport(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unknown";return t.forEach(t=>{var r=t.stream.getAudioTracks(),i=t.stream.getVideoTracks(),o=r.length>0?Bd.buildTrackStats(t.stream.getAudioTracks()[0],t.purpose):null,s=i.length>0?Bd.buildTrackStats(t.stream.getVideoTracks()[0],t.purpose):null,a={stream:t.stream.id,type:t.isLocal()?"local":"remote",audio:o,video:s,purpose:t.purpose,prefix:n,isVideoMuted:t.isVideoMuted(),isAudioMuted:t.isAudioMuted()};e.callFeeds.push(a)}),e}}function k$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function w2(e){for(var t=1;t4&&void 0!==arguments[4])||arguments[4];this.callId=e,this.opponentMemberId=t,this.pc=n,this.emitter=r,this.isFocus=i,L(this,"isActive",!0),L(this,"previousStatsReport",void 0),L(this,"currentStatsReport",void 0),L(this,"connectionStats",new z1e),L(this,"trackStats",void 0),n.addEventListener("signalingstatechange",this.onSignalStateChange.bind(this)),this.trackStats=new Z1e(new X1e,new J1e(n))}processStats(e,t){var n=this;return H(function*(){var r={isFirstCollection:void 0===n.previousStatsReport,receivedMedia:0,receivedAudioMedia:0,receivedVideoMedia:0,audioTrackSummary:{count:0,muted:0,maxPacketLoss:0,maxJitter:0,concealedAudio:0,totalAudio:0},videoTrackSummary:{count:0,muted:0,maxPacketLoss:0,maxJitter:0,concealedAudio:0,totalAudio:0}};if(n.isActive){var i=n.pc.getStats();if("function"==typeof i?.then)return i.then(i=>{var o,s;n.currentStatsReport="function"==typeof i?.result?i.result():i;try{n.processStatsReport(e,t)}catch(e){return n.handleError(e),r}n.previousStatsReport=n.currentStatsReport,r.receivedMedia=n.connectionStats.bitrate.download,r.receivedAudioMedia=(null===(o=n.connectionStats.bitrate.audio)||void 0===o?void 0:o.download)||0,r.receivedVideoMedia=(null===(s=n.connectionStats.bitrate.video)||void 0===s?void 0:s.download)||0;var a=po.buildTrackSummary(Array.from(n.trackStats.getTrack2stats().values()));return w2(w2({},r),{},{audioTrackSummary:a.audioTrackSummary,videoTrackSummary:a.videoTrackSummary})}).catch(e=>(n.handleError(e),r));n.isActive=!1}return Promise.resolve(r)})()}processStatsReport(e,t){var n,r=new Map;r.callId=this.callId,r.opponentMemberId=this.opponentMemberId,null===(n=this.currentStatsReport)||void 0===n||n.forEach(e=>{var t=this.previousStatsReport?this.previousStatsReport.get(e.id):null;if("candidate-pair"===e.type&&e.nominated&&"succeeded"===e.state)this.connectionStats.bandwidth=W1e.buildBandwidthReport(e),this.connectionStats.transport=Y1e.buildReport(this.currentStatsReport,e,this.connectionStats.transport,this.isFocus);else if("inbound-rtp"===e.type||"outbound-rtp"===e.type){var n=this.trackStats.findTrack2Stats(e,"inbound-rtp"===e.type?"remote":"local");if(!n)return;if(t&&po.buildPacketsLost(n,e,t),"inbound-rtp"===e.type){po.buildFramerateResolution(n,e),t&&po.buildBitrateReceived(n,e,t);var i=this.trackStats.findTransceiverByTrackId(n.trackId);po.setTrackStatsState(n,i),po.buildJitter(n,e),po.buildAudioConcealment(n,e)}else t&&(r.set(n.trackId,_h.getNonNegativeValue(e.bytesSent)),po.buildBitrateSend(n,e,t));po.buildCodec(this.currentStatsReport,n,e)}else if("track"===e.type&&"video"===e.kind&&!e.remoteSource){var o=this.trackStats.findLocalVideoTrackStats(e);if(!o)return;po.buildFramerateResolution(o,e),po.calculateSimulcastFramerate(o,e,t,this.trackStats.mediaTrackHandler.getActiveSimulcastStreams())}}),this.emitter.emitByteSendReport(r),this.emitter.emitCallFeedReport(Bd.buildCallFeedReport(this.callId,this.opponentMemberId,this.pc)),this.processAndEmitConnectionStatsReport()}setActive(e){this.isActive=e}getActive(){return this.isActive}handleError(e){this.isActive=!1,M.warn("CallStatsReportGatherer ".concat(this.callId," processStatsReport fails and set to inactive ").concat(e))}processAndEmitConnectionStatsReport(){var e=Cy.build(this.trackStats.getTrack2stats());e.callId=this.callId,e.opponentMemberId=this.opponentMemberId,this.connectionStats.bandwidth=e.bandwidth,this.connectionStats.bitrate=e.bitrate,this.connectionStats.packetLoss=e.packetLoss,this.emitter.emitConnectionStatsReport(w2(w2({},e),{},{transport:this.connectionStats.transport})),this.connectionStats.transport=[]}stopProcessingStats(){}onSignalStateChange(){"stable"===this.pc.signalingState&&(this.pc.currentRemoteDescription&&this.trackStats.mediaSsrcHandler.parse(this.pc.currentRemoteDescription.sdp,"remote"),this.pc.currentLocalDescription&&this.trackStats.mediaSsrcHandler.parse(this.pc.currentLocalDescription.sdp,"local"))}setOpponentMemberId(e){this.opponentMemberId=e}}var du=function(e){return e.CONNECTION_STATS="StatsReport.connection_stats",e.CALL_FEED_REPORT="StatsReport.call_feed_report",e.BYTE_SENT_STATS="StatsReport.byte_sent_stats",e.SUMMARY_STATS="StatsReport.summary_stats",e}({});class t0e extends Ln{emitByteSendReport(e){this.emit(du.BYTE_SENT_STATS,e)}emitConnectionStatsReport(e){this.emit(du.CONNECTION_STATS,e)}emitCallFeedReport(e){this.emit(du.CALL_FEED_REPORT,e)}emitSummaryStatsReport(e){this.emit(du.SUMMARY_STATS,e)}}class UJ{constructor(e){this.emitter=e}build(e){var t=e.filter(e=>!e.isFirstCollection),n=t.length,r=e.length;if(0!==n){var i={receivedAudio:0,receivedVideo:0,receivedMedia:0,concealedAudio:0,totalAudio:0},o=0,s=0;t.forEach(e=>{this.countTrackListReceivedMedia(i,e),this.countConcealedAudio(i,e),o=this.buildMaxJitter(o,e),s=this.buildMaxPacketLoss(s,e)});var a={percentageReceivedMedia:Number((i.receivedMedia/n).toFixed(5)),percentageReceivedVideoMedia:Number((i.receivedVideo/n).toFixed(5)),percentageReceivedAudioMedia:Number((i.receivedAudio/n).toFixed(5)),maxJitter:o,maxPacketLoss:s,percentageConcealedAudio:Number(i.totalAudio>0?(i.concealedAudio/i.totalAudio).toFixed(5):0),peerConnections:r};this.emitter.emitSummaryStatsReport(a)}}static extendSummaryReport(e,t){var n=[],r=[];for(var i of t)for(var o of(r.push(i),i[1]))n.push(o);e.opponentDevicesInCall=Math.max(0,n.length-1),e.opponentUsersInCall=Math.max(0,r.length-1),e.diffDevicesToPeerConnections=Math.max(0,n.length-1)-e.peerConnections,e.ratioPeerConnectionToDevices=0==Math.max(0,n.length-1)?0:e.peerConnections/(n.length-1)}countTrackListReceivedMedia(e,t){var n=!1,r=!1;(t.receivedAudioMedia>0||0===t.audioTrackSummary.count)&&(e.receivedAudio++,n=!0),(t.receivedVideoMedia>0||0===t.videoTrackSummary.count||t.videoTrackSummary.muted>0&&t.videoTrackSummary.muted===t.videoTrackSummary.count)&&(e.receivedVideo++,r=!0),r&&n&&e.receivedMedia++}buildMaxJitter(e,t){return e2&&void 0!==arguments[2]?arguments[2]:1e4;this.groupCallId=e,this.userId=t,this.interval=n,L(this,"timer",void 0),L(this,"gatherers",new Map),L(this,"reports",new t0e),L(this,"summaryStatsReportGatherer",new UJ(this.reports))}start(){void 0===this.timer&&this.interval>0&&(this.timer=setInterval(()=>{this.processStats()},this.interval))}stop(){void 0!==this.timer&&(clearInterval(this.timer),this.gatherers.forEach(e=>e.stopProcessingStats()))}hasStatsReportGatherer(e){return this.gatherers.has(e)}addStatsReportGatherer(e,t,n){return!this.hasStatsReportGatherer(e)&&(this.gatherers.set(e,new e0e(e,t,n,this.reports)),!0)}removeStatsReportGatherer(e){return this.gatherers.delete(e)}getStatsReportGatherer(e){return this.hasStatsReportGatherer(e)?this.gatherers.get(e):void 0}updateOpponentMember(e,t){var n;null===(n=this.getStatsReportGatherer(e))||void 0===n||n.setOpponentMemberId(t)}processStats(){var e=[];this.gatherers.forEach(t=>{e.push(t.processStats(this.groupCallId,this.userId))}),Promise.all(e).then(e=>this.summaryStatsReportGatherer.build(e)).catch(e=>{M.error("Could not build summary stats report",e)})}setInterval(e){this.interval=e}}function x$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function E2(e){for(var t=1;t9&&void 0!==arguments[9]&&arguments[9],h=arguments.length>10?arguments[10]:void 0;super(),this.client=e,this.room=t,this.type=n,this.isPtt=r,this.intent=i,this.dataChannelsEnabled=s,this.dataChannelOptions=a,this.useLivekit=d,L(this,"activeSpeakerInterval",1e3),L(this,"retryCallInterval",5e3),L(this,"participantTimeout",15e3),L(this,"pttMaxTransmitTime",2e4),L(this,"activeSpeaker",void 0),L(this,"localCallFeed",void 0),L(this,"localScreenshareFeed",void 0),L(this,"localDesktopCapturerSourceId",void 0),L(this,"userMediaFeeds",[]),L(this,"screenshareFeeds",[]),L(this,"groupCallId",void 0),L(this,"allowCallWithoutVideoAndAudio",void 0),L(this,"calls",new Map),L(this,"callHandlers",new Map),L(this,"activeSpeakerLoopInterval",void 0),L(this,"retryCallLoopInterval",void 0),L(this,"retryCallCounts",new Map),L(this,"reEmitter",void 0),L(this,"transmitTimer",null),L(this,"participantsExpirationTimer",null),L(this,"resendMemberStateTimer",null),L(this,"initWithAudioMuted",!1),L(this,"initWithVideoMuted",!1),L(this,"initCallFeedPromise",void 0),L(this,"_livekitServiceURL",void 0),L(this,"stats",void 0),L(this,"statsCollectIntervalTime",0),L(this,"onConnectionStats",e=>{this.emit(cy.ConnectionStats,{report:e})}),L(this,"onByteSentStats",e=>{this.emit(cy.ByteSentStats,{report:e})}),L(this,"onSummaryStats",e=>{UJ.extendSummaryReport(e,this.participants),this.emit(cy.SummaryStats,{report:e})}),L(this,"onCallFeedReport",e=>{this.localCallFeed&&(e=Bd.expandCallFeedReport(e,[this.localCallFeed],"from-local-feed"));var t=[];this.forEachCall(n=>{n.callId===e.callId&&n.getFeeds().forEach(e=>t.push(e))}),e=Bd.expandCallFeedReport(e,t,"from-call-feed"),this.emit(cy.CallFeedStats,{report:e})}),L(this,"_state",ir.LocalCallFeedUninitialized),L(this,"_participants",new Map),L(this,"_creationTs",null),L(this,"_enteredViaAnotherSession",!1),L(this,"onIncomingCall",e=>{var t,n;if(e.roomId===this.room.roomId){if(e.state!==at.Ringing)return void M.warn("GroupCall ".concat(this.groupCallId," onIncomingCall() incoming call no longer in ringing state - ignoring"));if(!e.groupCallId||e.groupCallId!==this.groupCallId)return M.log("GroupCall ".concat(this.groupCallId," onIncomingCall() ignored because it doesn't match the current group call")),void e.reject();var r=null===(t=e.getOpponentMember())||void 0===t?void 0:t.userId;if(void 0===r)return void M.warn("GroupCall ".concat(this.groupCallId," onIncomingCall() incoming call with no member - ignoring"));if(this.useLivekit)return void M.info("Received incoming call whilst in signaling-only mode! Ignoring.");var i=null!==(n=this.calls.get(r))&&void 0!==n?n:new Map,o=i.get(e.getOpponentDeviceId());if(o?.callId!==e.callId){M.log("GroupCall ".concat(this.groupCallId," onIncomingCall() incoming call (userId=").concat(r,", callId=").concat(e.callId,")")),o&&o.hangup(ft.Replaced,!1),i.set(e.getOpponentDeviceId(),e),this.calls.set(r,i),this.initCall(e);var s=this.getLocalFeeds().map(e=>e.clone());if(!this.callExpected(e))for(var a of s)Dr(a.stream.getAudioTracks(),!1),Dr(a.stream.getVideoTracks(),!1);e.answerWithCallFeeds(s),this.emit(In.CallsChanged,this.calls)}}}),L(this,"onRetryCallLoop",()=>{var e=!1;for(var[{userId:t},n]of this.participants){var r=this.calls.get(t),i=this.retryCallCounts.get(t);for(var[o,s]of n){var a,c,l=r?.get(o),u=null!==(a=null===(c=i)||void 0===c?void 0:c.get(o))&&void 0!==a?a:0;l?.getOpponentSessionId()!==s.sessionId&&this.wantsOutgoingCall(t,o)&&u<3&&(void 0===i&&(i=new Map,this.retryCallCounts.set(t,i)),i.set(o,u+1),e=!0)}}e&&this.placeOutgoingCalls()}),L(this,"onCallFeedsChanged",e=>{var t=C2(e),n=e.getOpponentDeviceId();if(!t)throw new Error("Cannot change call feeds without user id");var r=this.getUserMediaFeed(t,n),i=e.remoteUsermediaFeed,o=i!==r,s=this.calls.get(t),a=s?.get(n);if(a?.callId===e.callId){o&&(!r&&i?this.addUserMediaFeed(i):r&&i?this.replaceUserMediaFeed(r,i):r&&!i&&this.removeUserMediaFeed(r));var c=this.getScreenshareFeed(t,n),l=e.remoteScreensharingFeed;l!==c&&(!c&&l?this.addScreenshareFeed(l):c&&l?this.replaceScreenshareFeed(c,l):c&&!l&&this.removeScreenshareFeed(c))}}),L(this,"onCallStateChanged",(e,t,n)=>{var r;if(t!==at.Ended){var i=this.localCallFeed.isAudioMuted();e.localUsermediaStream&&e.isMicrophoneMuted()!==i&&e.setMicrophoneMuted(i);var o=this.localCallFeed.isVideoMuted();e.localUsermediaStream&&e.isLocalVideoMuted()!==o&&e.setLocalVideoMuted(o);var s=null===(r=e.getOpponentMember())||void 0===r?void 0:r.userId;if(t===at.Connected&&s){var a=this.retryCallCounts.get(s);a?.delete(e.getOpponentDeviceId()),0===a?.size&&this.retryCallCounts.delete(s)}}}),L(this,"onCallHangup",e=>{var t,n;if(e.hangupReason!==ft.Replaced){var r=null!==(t=null===(n=e.getOpponentMember())||void 0===n?void 0:n.userId)&&void 0!==t?t:this.room.getMember(e.invitee).userId,i=this.calls.get(r);i?.get(e.getOpponentDeviceId())===e&&(this.disposeCall(e,e.hangupReason),i.delete(e.getOpponentDeviceId()),0===i.size&&this.calls.delete(r),this.emit(In.CallsChanged,this.calls))}}),L(this,"onCallReplaced",(e,t)=>{var n=e.getOpponentMember().userId,r=this.calls.get(n);void 0===r&&(r=new Map,this.calls.set(n,r)),e.hangup(ft.Replaced,!1),this.initCall(t),r.set(e.getOpponentDeviceId(),t),this.emit(In.CallsChanged,this.calls)}),L(this,"onActiveSpeakerLoop",()=>{var e=void 0,t=void 0;for(var n of this.userMediaFeeds)if(!(n.isLocal()&&this.userMediaFeeds.length>1)){var r=n.speakingVolumeSamples.reduce((e,t)=>e+Math.max(t,tA))/n.speakingVolumeSamples.length;(!e||r>e)&&(e=r,t=n)}t&&this.activeSpeaker!==t&&e&&e>tA&&(this.activeSpeaker=t,this.emit(In.ActiveSpeakerChanged,this.activeSpeaker))}),L(this,"onRoomState",()=>this.updateParticipants()),L(this,"onParticipantsChanged",()=>{this.forEachCall(e=>{var t=this.callExpected(e);for(var n of e.getLocalFeeds())Dr(n.stream.getAudioTracks(),!n.isAudioMuted()&&t),Dr(n.stream.getVideoTracks(),!n.isVideoMuted()&&t)}),this.state===ir.Entered&&!this.useLivekit&&this.placeOutgoingCalls()}),L(this,"onStateChanged",(e,t)=>{(e===ir.Entered||t===ir.Entered||e===ir.Ended)&&(this.updateParticipants(),this.updateMemberState().catch(e=>M.error("GroupCall ".concat(this.groupCallId,' onStateChanged() failed to update member state devices"'),e)))}),L(this,"onLocalFeedsChanged",()=>{this.state===ir.Entered&&this.updateMemberState().catch(e=>M.error("GroupCall ".concat(this.groupCallId," onLocalFeedsChanged() failed to update member state feeds"),e))}),this.reEmitter=new sJ(this),this.groupCallId=o??Sh(),this._livekitServiceURL=h,this.creationTs=null!==(l=null===(u=t.currentState.getStateEvents(Z.GroupCallPrefix,this.groupCallId))||void 0===u?void 0:u.getTs())&&void 0!==l?l:null,this.updateParticipants(),t.on(pt.Update,this.onRoomState),this.on(In.ParticipantsChanged,this.onParticipantsChanged),this.on(In.GroupCallStateChanged,this.onStateChanged),this.on(In.LocalScreenshareStateChanged,this.onLocalFeedsChanged),this.allowCallWithoutVideoAndAudio=!!c}create(){var e=this;return H(function*(){return e.creationTs=Date.now(),e.client.groupCallEventHandler.groupCalls.set(e.room.roomId,e),e.client.emit(rA.Outgoing,e),yield e.sendCallStateEvent(),e})()}sendCallStateEvent(){var e=this;return H(function*(){var t={"m.intent":e.intent,"m.type":e.type,"io.element.ptt":e.isPtt,dataChannelsEnabled:e.dataChannelsEnabled,dataChannelOptions:e.dataChannelsEnabled?e.dataChannelOptions:void 0};e.livekitServiceURL&&(t["io.element.livekit_service_url"]=e.livekitServiceURL),yield e.client.sendStateEvent(e.room.roomId,Z.GroupCallPrefix,t,e.groupCallId)})()}get livekitServiceURL(){return this._livekitServiceURL}updateLivekitServiceURL(e){return this._livekitServiceURL=e,this.sendCallStateEvent()}get state(){return this._state}set state(e){var t=this._state;e!==t&&(this._state=e,this.emit(In.GroupCallStateChanged,e,t))}get participants(){return this._participants}set participants(e){var t=this._participants,n=(e,t)=>e.sessionId===t.sessionId&&e.screensharing===t.screensharing;LF(e,t,(e,t)=>LF(e,t,n))||(this._participants=e,this.emit(In.ParticipantsChanged,e))}get creationTs(){return this._creationTs}set creationTs(e){this._creationTs=e}get enteredViaAnotherSession(){return this._enteredViaAnotherSession}set enteredViaAnotherSession(e){this._enteredViaAnotherSession=e,this.updateParticipants()}forEachCall(e){for(var t of this.calls.values())for(var n of t.values())e(n)}getLocalFeeds(){var e=[];return this.localCallFeed&&e.push(this.localCallFeed),this.localScreenshareFeed&&e.push(this.localScreenshareFeed),e}hasLocalParticipant(){var e,t;return null!==(e=null===(t=this.participants.get(this.room.getMember(this.client.getUserId())))||void 0===t?void 0:t.has(this.client.getDeviceId()))&&void 0!==e&&e}callExpected(e){var t,n=C2(e),r=null===n?null:this.room.getMember(n),i=e.getOpponentDeviceId();return null!==r&&void 0!==i&&void 0!==(null===(t=this.participants.get(r))||void 0===t?void 0:t.get(i))}initLocalCallFeed(){var e=this;return H(function*(){if(e.useLivekit)M.info("Livekit group call: not starting local call feed.");else{if(e.state!==ir.LocalCallFeedUninitialized)throw new Error('Cannot initialize local call feed in the "'.concat(e.state,'" state.'));if(e.state=ir.InitializingLocalCallFeed,e.initCallFeedPromise)return e.initCallFeedPromise;try{e.initCallFeedPromise=e.initLocalCallFeedInternal(),yield e.initCallFeedPromise}finally{e.initCallFeedPromise=void 0}}})()}initLocalCallFeedInternal(){var e=this;return H(function*(){var t;M.log("GroupCall ".concat(e.groupCallId," initLocalCallFeedInternal() running"));try{t=yield e.client.getMediaHandler().getUserMediaStream(!0,e.type===z3.Video)}catch(n){if(!e.allowCallWithoutVideoAndAudio)throw e.state=ir.LocalCallFeedUninitialized,n;t=new MediaStream}if(e._state!==ir.InitializingLocalCallFeed)throw e.client.getMediaHandler().stopUserMediaStream(t),new Error("Group call disposed while gathering media stream");var n=new tu({client:e.client,roomId:e.room.roomId,userId:e.client.getUserId(),deviceId:e.client.getDeviceId(),stream:t,purpose:kn.Usermedia,audioMuted:e.initWithAudioMuted||0===t.getAudioTracks().length||e.isPtt,videoMuted:e.initWithVideoMuted||0===t.getVideoTracks().length});Dr(t.getAudioTracks(),!n.isAudioMuted()),Dr(t.getVideoTracks(),!n.isVideoMuted()),e.localCallFeed=n,e.addUserMediaFeed(n),e.state=ir.LocalCallFeedInitialized})()}updateLocalUsermediaStream(e){var t=this;return H(function*(){if(t.localCallFeed){var n=t.localCallFeed.stream;t.localCallFeed.setNewStream(e);var r=t.localCallFeed.isAudioMuted(),i=t.localCallFeed.isVideoMuted();M.log("GroupCall ".concat(t.groupCallId," updateLocalUsermediaStream() (oldStreamId=").concat(n.id,", newStreamId=").concat(e.id,", micShouldBeMuted=").concat(r,", vidShouldBeMuted=").concat(i,")")),Dr(e.getAudioTracks(),!r),Dr(e.getVideoTracks(),!i),t.client.getMediaHandler().stopUserMediaStream(n)}})()}enter(){var e=this;return H(function*(){if(e.state===ir.LocalCallFeedUninitialized)yield e.initLocalCallFeed();else if(e.state!==ir.LocalCallFeedInitialized)throw new Error('Cannot enter call in the "'.concat(e.state,'" state'));for(var t of(M.log("GroupCall ".concat(e.groupCallId," enter() running")),e.state=ir.Entered,e.client.on(nA.Incoming,e.onIncomingCall),e.client.callEventHandler.calls.values()))e.onIncomingCall(t);e.useLivekit||(e.retryCallLoopInterval=setInterval(e.onRetryCallLoop,e.retryCallInterval),e.activeSpeaker=void 0,e.onActiveSpeakerLoop(),e.activeSpeakerLoopInterval=setInterval(e.onActiveSpeakerLoop,e.activeSpeakerInterval))})()}dispose(){var e;this.localCallFeed&&(this.removeUserMediaFeed(this.localCallFeed),this.localCallFeed=void 0),this.localScreenshareFeed&&(this.client.getMediaHandler().stopScreensharingStream(this.localScreenshareFeed.stream),this.removeScreenshareFeed(this.localScreenshareFeed),this.localScreenshareFeed=void 0,this.localDesktopCapturerSourceId=void 0),this.client.getMediaHandler().stopAllStreams(),null!==this.transmitTimer&&(clearTimeout(this.transmitTimer),this.transmitTimer=null),void 0!==this.retryCallLoopInterval&&(clearInterval(this.retryCallLoopInterval),this.retryCallLoopInterval=void 0),null!==this.participantsExpirationTimer&&(clearTimeout(this.participantsExpirationTimer),this.participantsExpirationTimer=null),this.state===ir.Entered&&(this.forEachCall(e=>e.hangup(ft.UserHangup,!1)),this.activeSpeaker=void 0,clearInterval(this.activeSpeakerLoopInterval),this.retryCallCounts.clear(),clearInterval(this.retryCallLoopInterval),this.client.removeListener(nA.Incoming,this.onIncomingCall),null===(e=this.stats)||void 0===e||e.stop())}leave(){this.dispose(),this.state=ir.LocalCallFeedUninitialized}terminate(){var e=arguments,t=this;return H(function*(){var n=!(e.length>0&&void 0!==e[0])||e[0];if(t.dispose(),t.room.off(pt.Update,t.onRoomState),t.client.groupCallEventHandler.groupCalls.delete(t.room.roomId),t.client.emit(rA.Ended,t),t.state=ir.Ended,n){var r=t.room.currentState.getStateEvents(Z.GroupCallPrefix,t.groupCallId);yield t.client.sendStateEvent(t.room.roomId,Z.GroupCallPrefix,E2(E2({},r.getContent()),{},{"m.terminated":r0e.CallEnded}),t.groupCallId)}})()}isLocalVideoMuted(){return!this.localCallFeed||this.localCallFeed.isVideoMuted()}isMicrophoneMuted(){return!this.localCallFeed||this.localCallFeed.isAudioMuted()}setMicrophoneMuted(e){var t=this;return H(function*(){if(!e&&!(yield t.client.getMediaHandler().hasAudioDevice()))return!1;var n=!e&&t.isPtt;t.isPtt&&(!e&&t.isMicrophoneMuted()?t.transmitTimer=setTimeout(()=>{t.setMicrophoneMuted(!0)},t.pttMaxTransmitTime):e&&!t.isMicrophoneMuted()&&(null!==t.transmitTimer&&clearTimeout(t.transmitTimer),t.transmitTimer=null)),t.forEachCall(t=>{var n;return null===(n=t.localUsermediaFeed)||void 0===n?void 0:n.setAudioVideoMuted(e,null)});var r,i=(r=H(function*(){var e=[];t.forEachCall(t=>e.push(t.sendMetadataUpdate())),yield Promise.all(e).catch(e=>M.info("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() failed to send some metadata updates"),e))}),function(){return r.apply(this,arguments)});if(n&&(yield i()),t.localCallFeed){if(M.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() (streamId=").concat(t.localCallFeed.stream.id,", muted=").concat(e,")")),!(yield t.checkAudioPermissionIfNecessary(e)))return!1;t.localCallFeed.setAudioVideoMuted(e,null),Dr(t.localCallFeed.stream.getAudioTracks(),!e)}else M.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() no stream muted (muted=").concat(e,")")),t.initWithAudioMuted=e;return t.forEachCall(n=>Dr(n.localUsermediaFeed.stream.getAudioTracks(),!e&&t.callExpected(n))),t.emit(In.LocalMuteStateChanged,e,t.isLocalVideoMuted()),n||(yield i()),!0})()}checkAudioPermissionIfNecessary(e){var t=this;return H(function*(){try{if(!e&&t.localCallFeed&&!t.localCallFeed.hasAudioTrack){var n=yield t.client.getMediaHandler().getUserMediaStream(!0,!t.localCallFeed.isVideoMuted());if(0===n?.getTracks().length)return M.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() no device to receive local stream, muted=").concat(e)),!1}}catch{return M.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() no device or permission to receive local stream, muted=").concat(e)),!1}return!0})()}setLocalVideoMuted(e){var t=this;return H(function*(){if(!e&&!(yield t.client.getMediaHandler().hasVideoDevice()))return!1;if(t.localCallFeed){M.log("GroupCall ".concat(t.groupCallId," setLocalVideoMuted() (stream=").concat(t.localCallFeed.stream.id,", muted=").concat(e,")"));try{var n=yield t.client.getMediaHandler().getUserMediaStream(!0,!e);yield t.updateLocalUsermediaStream(n),t.localCallFeed.setAudioVideoMuted(null,e),Dr(t.localCallFeed.stream.getVideoTracks(),!e)}catch{return M.log("GroupCall ".concat(t.groupCallId," setLocalVideoMuted() no device or permission to receive local stream, muted=").concat(e)),!1}}else M.log("GroupCall ".concat(t.groupCallId," setLocalVideoMuted() no stream muted (muted=").concat(e,")")),t.initWithVideoMuted=e;var r=[];return t.forEachCall(t=>r.push(t.setLocalVideoMuted(e))),yield Promise.all(r),t.forEachCall(n=>Dr(n.localUsermediaFeed.stream.getVideoTracks(),!e&&t.callExpected(n))),t.emit(In.LocalMuteStateChanged,t.isMicrophoneMuted(),e),!0})()}setScreensharingEnabled(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]?t[1]:{};if(e===n.isScreensharing())return e;if(!e)return n.forEachCall(e=>{e.localScreensharingFeed&&e.removeLocalFeed(e.localScreensharingFeed)}),n.client.getMediaHandler().stopScreensharingStream(n.localScreenshareFeed.stream),n.removeScreenshareFeed(n.localScreenshareFeed),n.localScreenshareFeed=void 0,n.localDesktopCapturerSourceId=void 0,n.emit(In.LocalScreenshareStateChanged,!1,void 0,void 0),!1;try{M.log("GroupCall ".concat(n.groupCallId," setScreensharingEnabled() is asking for screensharing permissions"));var i=yield n.client.getMediaHandler().getScreensharingStream(r),o=function*(e){var t=()=>{n.setScreensharingEnabled(!1),e.removeEventListener("ended",t)};e.addEventListener("ended",t)};for(var s of i.getTracks())yield*o(s);return M.log("GroupCall ".concat(n.groupCallId," setScreensharingEnabled() granted screensharing permissions. Setting screensharing enabled on all calls")),n.localDesktopCapturerSourceId=r.desktopCapturerSourceId,n.localScreenshareFeed=new tu({client:n.client,roomId:n.room.roomId,userId:n.client.getUserId(),deviceId:n.client.getDeviceId(),stream:i,purpose:kn.Screenshare,audioMuted:!1,videoMuted:!1}),n.addScreenshareFeed(n.localScreenshareFeed),n.emit(In.LocalScreenshareStateChanged,!0,n.localScreenshareFeed,n.localDesktopCapturerSourceId),n.forEachCall(e=>e.pushLocalFeed(n.localScreenshareFeed.clone())),!0}catch(e){if(r.throwOnFail)throw e;return M.error("GroupCall ".concat(n.groupCallId," setScreensharingEnabled() enabling screensharing error"),e),n.emit(In.Error,new iA(Ty.NoUserMedia,"Failed to get screen-sharing stream: ",e)),!1}})()}isScreensharing(){return!!this.localScreenshareFeed}wantsOutgoingCall(e,t){var n=this.client.getUserId(),r=this.client.getDeviceId();return e>=n&&(e!==n||t>r)}placeOutgoingCalls(){var e=this,t=!1,n=function(n){var r,o=null!==(r=e.calls.get(n))&&void 0!==r?r:new Map,s=function(r){var i=o.get(r);if(i?.getOpponentSessionId()!==c.sessionId&&e.wantsOutgoingCall(n,r)){t=!0,void 0!==i&&(M.debug("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() replacing call (userId=").concat(n,", deviceId=").concat(r,", callId=").concat(i.callId,")")),i.hangup(ft.NewSession,!1));var s=ub(e.client,e.room.roomId,{invitee:n,opponentDeviceId:r,opponentSessionId:c.sessionId,groupCallId:e.groupCallId});null===s?(M.error("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() failed to create call (userId=").concat(n,", device=").concat(r,")")),o.delete(r)):(e.initCall(s),o.set(r,s),M.debug("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() placing call (userId=").concat(n,", deviceId=").concat(r,", sessionId=").concat(c.sessionId,")")),s.placeCallWithCallFeeds(e.getLocalFeeds().map(e=>e.clone()),c.screensharing).then(()=>{e.dataChannelsEnabled&&s.createDataChannel("datachannel",e.dataChannelOptions)}).catch(t=>{M.warn("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() failed to place call (userId=").concat(n,")"),t),t instanceof Bl&&t.code===Ty.UnknownDevice?e.emit(In.Error,t):e.emit(In.Error,new iA(Ty.PlaceCallFailed,"Failed to place call to ".concat(n))),s.hangup(ft.SignallingFailed,!1),o.get(r)===s&&o.delete(r)}))}};for(var[a,c]of i)s(a);o.size>0?e.calls.set(n,o):e.calls.delete(n)};for(var[{userId:r},i]of this.participants)n(r);t&&this.emit(In.CallsChanged,this.calls)}getMemberStateEvents(e){return void 0===e?this.room.currentState.getStateEvents(Z.GroupCallMemberPrefix):this.room.currentState.getStateEvents(Z.GroupCallMemberPrefix,e)}initCall(e){var t=C2(e);if(!t)throw new Error("Cannot init call without user id");var n=()=>this.onCallFeedsChanged(e),r=(t,n)=>this.onCallStateChanged(e,t,n),i=this.onCallHangup,o=t=>this.onCallReplaced(e,t),s=this.callHandlers.get(t);void 0===s&&(s=new Map,this.callHandlers.set(t,s)),s.set(e.getOpponentDeviceId(),{onCallFeedsChanged:n,onCallStateChanged:r,onCallHangup:i,onCallReplaced:o}),e.on(gt.FeedsChanged,n),e.on(gt.State,r),e.on(gt.Hangup,i),e.on(gt.Replaced,o),e.isPtt=this.isPtt,this.reEmitter.reEmit(e,Object.values(gt)),e.initStats(this.getGroupCallStats()),n()}disposeCall(e,t){var n=C2(e),r=e.getOpponentDeviceId();if(!n)throw new Error("Cannot dispose call without user id");var i=this.callHandlers.get(n),{onCallFeedsChanged:o,onCallStateChanged:s,onCallHangup:a,onCallReplaced:c}=i.get(r);if(e.removeListener(gt.FeedsChanged,o),e.removeListener(gt.State,s),e.removeListener(gt.Hangup,a),e.removeListener(gt.Replaced,c),i.delete(n),0===i.size&&this.callHandlers.delete(n),e.hangupReason!==ft.Replaced){var l=this.getUserMediaFeed(n,r);l&&this.removeUserMediaFeed(l);var u=this.getScreenshareFeed(n,r);u&&this.removeScreenshareFeed(u)}}getUserMediaFeed(e,t){return this.userMediaFeeds.find(n=>n.userId===e&&n.deviceId===t)}addUserMediaFeed(e){this.userMediaFeeds.push(e),e.measureVolumeActivity(!0),this.emit(In.UserMediaFeedsChanged,this.userMediaFeeds)}replaceUserMediaFeed(e,t){var n=this.userMediaFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(-1===n)throw new Error("Couldn't find user media feed to replace");this.userMediaFeeds.splice(n,1,t),e.dispose(),t.measureVolumeActivity(!0),this.emit(In.UserMediaFeedsChanged,this.userMediaFeeds)}removeUserMediaFeed(e){var t=this.userMediaFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(-1===t)throw new Error("Couldn't find user media feed to remove");this.userMediaFeeds.splice(t,1),e.dispose(),this.emit(In.UserMediaFeedsChanged,this.userMediaFeeds),this.activeSpeaker===e&&(this.activeSpeaker=this.userMediaFeeds[0],this.emit(In.ActiveSpeakerChanged,this.activeSpeaker))}getScreenshareFeed(e,t){return this.screenshareFeeds.find(n=>n.userId===e&&n.deviceId===t)}addScreenshareFeed(e){this.screenshareFeeds.push(e),this.emit(In.ScreenshareFeedsChanged,this.screenshareFeeds)}replaceScreenshareFeed(e,t){var n=this.screenshareFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(-1===n)throw new Error("Couldn't find screenshare feed to replace");this.screenshareFeeds.splice(n,1,t),e.dispose(),this.emit(In.ScreenshareFeedsChanged,this.screenshareFeeds)}removeScreenshareFeed(e){var t=this.screenshareFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(-1===t)throw new Error("Couldn't find screenshare feed to remove");this.screenshareFeeds.splice(t,1),e.dispose(),this.emit(In.ScreenshareFeedsChanged,this.screenshareFeeds)}updateParticipants(){var e=this.room.getMember(this.client.getSafeUserId());if(e)if(null!==this.participantsExpirationTimer&&(clearTimeout(this.participantsExpirationTimer),this.participantsExpirationTimer=null),this.state!==ir.Ended){var t=new Map,n=Date.now(),r=this.state===ir.Entered||this.enteredViaAnotherSession,i=1/0;for(var o of this.getMemberStateEvents()){var s=this.room.getMember(o.getStateKey()),a=o.getContent(),c=(Array.isArray(a["m.calls"])?a["m.calls"]:[]).find(e=>e["m.call_id"]===this.groupCallId),l=(Array.isArray(c?.["m.devices"])?c["m.devices"]:[]).filter(e=>"string"==typeof e.device_id&&"string"==typeof e.session_id&&"number"==typeof e.expires_ts&&e.expires_ts>n&&Array.isArray(e.feeds));if(!r&&s?.userId===this.client.getUserId()&&(l=l.filter(e=>e.device_id!==this.client.getDeviceId())),l.length>0&&s?.membership===He.Join){var u=new Map;for(var d of(t.set(s,u),l))u.set(d.device_id,{sessionId:d.session_id,screensharing:d.feeds.some(e=>e.purpose===kn.Screenshare)}),d.expires_tse.purpose===kn.Screenshare)})}this.participants=t,i<1/0&&(this.participantsExpirationTimer=setTimeout(()=>this.updateParticipants(),i-n))}else this.participants=new Map;else M.warn("GroupCall ".concat(this.groupCallId," updateParticipants() tried to update participants before local room member is available"))}updateDevices(e){var t=arguments,n=this;return H(function*(){var r,i=t.length>1&&void 0!==t[1]&&t[1],o=Date.now(),s=n.client.getUserId(),a=n.getMemberStateEvents(s),c=null!==(r=a?.getContent())&&void 0!==r?r:{},l=Array.isArray(c["m.calls"])?c["m.calls"]:[],u=null,d=[];for(var h of l)h["m.call_id"]===n.groupCallId?u=h:d.push(h);null===u&&(u={});var p=(Array.isArray(u["m.devices"])?u["m.devices"]:[]).filter(e=>"string"==typeof e.device_id&&"string"==typeof e.session_id&&"number"==typeof e.expires_ts&&e.expires_ts>o&&Array.isArray(e.feeds)),f=e(p);if(null!==f){var m=[...d];f.length>0&&m.push(E2(E2({},u),{},{"m.call_id":n.groupCallId,"m.devices":f}));var g={"m.calls":m};yield n.client.sendStateEvent(n.room.roomId,Z.GroupCallMemberPrefix,g,s,{keepAlive:i})}})()}addDeviceToMemberState(){var e=this;return H(function*(){yield e.updateDevices(t=>[...t.filter(t=>t.device_id!==e.client.getDeviceId()),{device_id:e.client.getDeviceId(),session_id:e.client.getSessionId(),expires_ts:Date.now()+A$,feeds:e.getLocalFeeds().map(e=>({purpose:e.purpose}))}])})()}updateMemberState(){var e=this;return H(function*(){null!==e.resendMemberStateTimer&&(clearInterval(e.resendMemberStateTimer),e.resendMemberStateTimer=null),e.state===ir.Entered?(yield e.addDeviceToMemberState(),e.resendMemberStateTimer=setInterval(H(function*(){M.log("GroupCall ".concat(e.groupCallId,' updateMemberState() resending call member state"'));try{yield e.addDeviceToMemberState()}catch(t){M.error("GroupCall ".concat(e.groupCallId," updateMemberState() failed to resend call member state"),t)}}),3*A$/4)):yield e.updateDevices(t=>t.filter(t=>t.device_id!==e.client.getDeviceId()),!0)})()}cleanMemberState(){var e=this;return H(function*(){var{devices:t}=yield e.client.getDevices(),n=new Map(t.map(e=>[e.device_id,e]));yield e.updateDevices(t=>{var r=t.filter(t=>{var r=n.get(t.device_id);return void 0!==r?.last_seen_ts&&!(t.device_id===e.client.getDeviceId()&&e.state!==ir.Entered&&!e.enteredViaAnotherSession)});return r.length===t.length?null:r})})()}getGroupCallStats(){if(void 0===this.stats){var e=this.client.getUserId()||"unknown";this.stats=new n0e(this.groupCallId,e,this.statsCollectIntervalTime),this.stats.reports.on(du.CONNECTION_STATS,this.onConnectionStats),this.stats.reports.on(du.BYTE_SENT_STATS,this.onByteSentStats),this.stats.reports.on(du.SUMMARY_STATS,this.onSummaryStats),this.stats.reports.on(du.CALL_FEED_REPORT,this.onCallFeedReport)}return this.stats}setGroupCallStatsInterval(e){this.statsCollectIntervalTime=e,void 0!==this.stats&&(this.stats.stop(),this.stats.setInterval(e),e>0&&this.stats.start())}}function P$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function T2(e){for(var t=1;t{if(e.candidate){if(this.candidatesEnded&&M.warn("Call ".concat(this.callId," gotLocalIceCandidate() got candidate after candidates have ended!")),M.debug("Call ".concat(this.callId," got local ICE ").concat(e.candidate.sdpMid," ").concat(e.candidate.candidate)),this.callHasEnded())return;""===e.candidate.candidate?this.queueCandidate(null):this.queueCandidate(e.candidate)}}),L(this,"onIceGatheringStateChange",e=>{var t;M.debug("Call ".concat(this.callId," onIceGatheringStateChange() ice gathering state changed to ").concat(this.peerConn.iceGatheringState)),"complete"===(null===(t=this.peerConn)||void 0===t?void 0:t.iceGatheringState)&&(this.queueCandidate(null),M.debug("Call ".concat(this.callId," onIceGatheringStateChange() ice gathering state complete, set candidates have ended")))}),L(this,"getLocalOfferFailed",e=>{M.error("Call ".concat(this.callId," getLocalOfferFailed() running"),e),this.emit(gt.Error,new Bl(ft.LocalOfferFailed,"Failed to get local offer!",e),this),this.terminate(hr.Local,ft.LocalOfferFailed,!1)}),L(this,"getUserMediaFailed",e=>{this.successor?this.successor.getUserMediaFailed(e):(M.warn("Call ".concat(this.callId," getUserMediaFailed() failed to get user media - ending call"),e),this.emit(gt.Error,new Bl(ft.NoUserMedia,"Couldn't start capturing media! Is your microphone set up and does this app have permission?",e),this),this.terminate(hr.Local,ft.NoUserMedia,!1))}),L(this,"placeCallFailed",e=>{this.successor?this.successor.placeCallFailed(e):(M.warn("Call ".concat(this.callId," placeCallWithCallFeeds() failed - ending call"),e),this.emit(gt.Error,new Bl(ft.IceFailed,"Couldn't start call! Invalid ICE server configuration.",e),this),this.terminate(hr.Local,ft.IceFailed,!1))}),L(this,"onIceConnectionStateChanged",()=>{var e,t,n,r,i,o;if(!this.callHasEnded()){if(M.debug("Call ".concat(this.callId," onIceConnectionStateChanged() running (state=").concat(null===(e=this.peerConn)||void 0===e?void 0:e.iceConnectionState,", conn=").concat(null===(t=this.peerConn)||void 0===t?void 0:t.connectionState,")")),["connected","completed"].includes(null!==(n=null===(r=this.peerConn)||void 0===r?void 0:r.iceConnectionState)&&void 0!==n?n:""))clearTimeout(this.iceDisconnectedTimeout),this.iceDisconnectedTimeout=void 0,this.iceReconnectionTimeOut&&clearTimeout(this.iceReconnectionTimeOut),this.state=at.Connected,!this.callLengthInterval&&!this.callStartTime&&(this.callStartTime=Date.now(),this.callLengthInterval=setInterval(()=>{this.emit(gt.LengthChanged,Math.round((Date.now()-this.callStartTime)/1e3),this)},o0e));else if("failed"==(null===(i=this.peerConn)||void 0===i?void 0:i.iceConnectionState)){var s,a;if(this.candidatesEnded=!1,null!==(s=this.peerConn)&&void 0!==s&&s.restartIce)this.candidatesEnded=!1,M.debug("Call ".concat(this.callId," onIceConnectionStateChanged() ice restart (state=").concat(null===(a=this.peerConn)||void 0===a?void 0:a.iceConnectionState,")")),this.peerConn.restartIce();else M.info("Call ".concat(this.callId," onIceConnectionStateChanged() hanging up call (ICE failed and no ICE restart method)")),this.hangup(ft.IceFailed,!1)}else"disconnected"==(null===(o=this.peerConn)||void 0===o?void 0:o.iceConnectionState)&&(this.candidatesEnded=!1,this.iceReconnectionTimeOut=setTimeout(()=>{var e,t,n;M.info("Call ".concat(this.callId," onIceConnectionStateChanged() ICE restarting because of ICE disconnected, (state=").concat(null===(e=this.peerConn)||void 0===e?void 0:e.iceConnectionState,", conn=").concat(null===(t=this.peerConn)||void 0===t?void 0:t.connectionState,")")),null!==(n=this.peerConn)&&void 0!==n&&n.restartIce&&(this.candidatesEnded=!1,this.peerConn.restartIce()),this.iceReconnectionTimeOut=void 0},c0e),this.iceDisconnectedTimeout=setTimeout(()=>{M.info("Call ".concat(this.callId," onIceConnectionStateChanged() hanging up call (ICE disconnected for too long)")),this.hangup(ft.IceFailed,!1)},a0e),this.state=at.Connecting);if(this.isPtt&&["failed","disconnected"].includes(this.peerConn.iceConnectionState))for(var c of this.getRemoteFeeds())c.setAudioVideoMuted(!0,!0)}}),L(this,"onSignallingStateChanged",()=>{var e;M.debug("Call ".concat(this.callId," onSignallingStateChanged() running (state=").concat(null===(e=this.peerConn)||void 0===e?void 0:e.signalingState,")"))}),L(this,"onTrack",e=>{if(0!==e.streams.length){var t=e.streams[0];if(this.pushRemoteFeed(t),!this.removeTrackListeners.has(t)){var n=()=>{0===t.getTracks().length&&(M.info("Call ".concat(this.callId," onTrack() removing track (streamId=").concat(t.id,")")),this.deleteFeedByStream(t),t.removeEventListener("removetrack",n),this.removeTrackListeners.delete(t))};t.addEventListener("removetrack",n),this.removeTrackListeners.set(t,n)}}else M.warn("Call ".concat(this.callId," onTrack() called with streamless track streamless (kind=").concat(e.track.kind,")"))}),L(this,"onDataChannel",e=>{this.emit(gt.DataChannel,e.channel,this)}),L(this,"onNegotiationNeeded",H(function*(){M.info("Call ".concat(t.callId," onNegotiationNeeded() negotiation is needed!")),t.state===at.CreateOffer||0!==t.opponentVersion?t.queueGotLocalOffer():M.info("Call ".concat(t.callId," onNegotiationNeeded() opponent does not support renegotiation: ignoring negotiationneeded event"))})),L(this,"onHangupReceived",e=>{M.debug("Call ".concat(this.callId," onHangupReceived() running")),this.partyIdMatches(e)||this.state===at.Ringing?this.terminate(hr.Remote,e.reason||ft.UserHangup,!0):M.info("Call ".concat(this.callId," onHangupReceived() ignoring message from party ID ").concat(e.party_id,": our partner is ").concat(this.opponentPartyId))}),L(this,"onRejectReceived",e=>{M.debug("Call ".concat(this.callId," onRejectReceived() running")),[at.InviteSent,at.Ringing].includes(this.state)||this.state===at.Fledgling&&this.direction===Rd.Inbound?this.terminate(hr.Remote,e.reason||ft.UserHangup,!0):M.debug("Call ".concat(this.callId," onRejectReceived() called in wrong state (state=").concat(this.state,")"))}),L(this,"onAnsweredElsewhere",e=>{M.debug("Call ".concat(this.callId," onAnsweredElsewhere() running")),this.terminate(hr.Remote,ft.AnsweredElsewhere,!0)}),this.roomId=e.roomId,this.invitee=e.invitee,this.client=e.client,!this.client.deviceId)throw new Error("Client must have a device ID to start calls");for(var r of(this.forceTURN=null!==(n=e.forceTURN)&&void 0!==n&&n,this.ourPartyId=this.client.deviceId,this.opponentDeviceId=e.opponentDeviceId,this.opponentSessionId=e.opponentSessionId,this.groupCallId=e.groupCallId,this.turnServers=e.turnServers||[],0===this.turnServers.length&&this.client.isFallbackICEServerAllowed()&&this.turnServers.push({urls:[s0e]}),this.turnServers))DX(r,["urls"]);this.callId=Sh(),this.isOnlyDataChannelAllowed=this.client.isVoipWithNoMediaAllowed}placeVoiceCall(){var e=this;return H(function*(){yield e.placeCall(!0,!1)})()}placeVideoCall(){var e=this;return H(function*(){yield e.placeCall(!0,!0)})()}createDataChannel(e,t){var n=this.peerConn.createDataChannel(e,t);return this.emit(gt.DataChannel,n,this),n}getOpponentMember(){return this.opponentMember}getOpponentDeviceId(){return this.opponentDeviceId}getOpponentSessionId(){return this.opponentSessionId}opponentCanBeTransferred(){return!(!this.opponentCaps||!this.opponentCaps["m.call.transferee"])}opponentSupportsDTMF(){return!(!this.opponentCaps||!this.opponentCaps["m.call.dtmf"])}getRemoteAssertedIdentity(){return this.remoteAssertedIdentity}get state(){return this._state}set state(e){var t=this._state;this._state=e,this.emit(gt.State,e,t,this)}get type(){return this.hasUserMediaVideoSender||this.hasRemoteUserMediaVideoTrack?L$.Video:L$.Voice}get hasLocalUserMediaVideoTrack(){var e;return!(null===(e=this.localUsermediaStream)||void 0===e||!e.getVideoTracks().length)}get hasRemoteUserMediaVideoTrack(){return this.getRemoteFeeds().some(e=>{var t;return e.purpose===kn.Usermedia&&(null===(t=e.stream)||void 0===t?void 0:t.getVideoTracks().length)})}get hasLocalUserMediaAudioTrack(){var e;return!(null===(e=this.localUsermediaStream)||void 0===e||!e.getAudioTracks().length)}get hasRemoteUserMediaAudioTrack(){return this.getRemoteFeeds().some(e=>{var t;return e.purpose===kn.Usermedia&&!(null===(t=e.stream)||void 0===t||!t.getAudioTracks().length)})}get hasUserMediaAudioSender(){var e;return!(null===(e=this.transceivers.get(Pa(kn.Usermedia,"audio")))||void 0===e||!e.sender)}get hasUserMediaVideoSender(){var e;return!(null===(e=this.transceivers.get(Pa(kn.Usermedia,"video")))||void 0===e||!e.sender)}get localUsermediaFeed(){return this.getLocalFeeds().find(e=>e.purpose===kn.Usermedia)}get localScreensharingFeed(){return this.getLocalFeeds().find(e=>e.purpose===kn.Screenshare)}get localUsermediaStream(){var e;return null===(e=this.localUsermediaFeed)||void 0===e?void 0:e.stream}get localScreensharingStream(){var e;return null===(e=this.localScreensharingFeed)||void 0===e?void 0:e.stream}get remoteUsermediaFeed(){return this.getRemoteFeeds().find(e=>e.purpose===kn.Usermedia)}get remoteScreensharingFeed(){return this.getRemoteFeeds().find(e=>e.purpose===kn.Screenshare)}get remoteUsermediaStream(){var e;return null===(e=this.remoteUsermediaFeed)||void 0===e?void 0:e.stream}get remoteScreensharingStream(){var e;return null===(e=this.remoteScreensharingFeed)||void 0===e?void 0:e.stream}getFeedByStreamId(e){return this.getFeeds().find(t=>t.stream.id===e)}getFeeds(){return this.feeds}getLocalFeeds(){return this.feeds.filter(e=>e.isLocal())}getRemoteFeeds(){return this.feeds.filter(e=>!e.isLocal())}initOpponentCrypto(){var e=this;return H(function*(){var t;if(e.opponentDeviceId&&e.client.getUseE2eForGroupCall()){if(!e.client.getCrypto())return void(e.hasOpponentDeviceInfo=!0);var n=e.invitee||(null===(t=e.getOpponentMember())||void 0===t?void 0:t.userId);throw n?(e.hasOpponentDeviceInfo=!1,new FJ(n)):new Error("Couldn't find opponent user ID to init crypto")}})()}getLocalSDPStreamMetadata(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t={};for(var n of this.getLocalFeeds())e&&(n.sdpMetadataStreamId=n.stream.id),t[n.sdpMetadataStreamId]={purpose:n.purpose,audio_muted:n.isAudioMuted(),video_muted:n.isVideoMuted()};return t}noIncomingFeeds(){return!this.feeds.some(e=>!e.isLocal())}pushRemoteFeed(e){if(this.opponentSupportsSDPStreamMetadata()){var t=this.getOpponentMember().userId,n=this.remoteSDPStreamMetadata[e.id].purpose,r=this.remoteSDPStreamMetadata[e.id].audio_muted,i=this.remoteSDPStreamMetadata[e.id].video_muted;n?this.getFeedByStreamId(e.id)?M.warn("Call ".concat(this.callId," pushRemoteFeed() ignoring stream because we already have a feed for it (streamId=").concat(e.id,")")):(this.feeds.push(new tu({client:this.client,call:this,roomId:this.roomId,userId:t,deviceId:this.getOpponentDeviceId(),stream:e,purpose:n,audioMuted:r,videoMuted:i})),this.emit(gt.FeedsChanged,this.feeds,this),M.info("Call ".concat(this.callId," pushRemoteFeed() pushed stream (streamId=").concat(e.id,", active=").concat(e.active,", purpose=").concat(n,")"))):M.warn("Call ".concat(this.callId," pushRemoteFeed() ignoring stream because we didn't get any metadata about it (streamId=").concat(e.id,")"))}else this.pushRemoteFeedWithoutMetadata(e)}pushRemoteFeedWithoutMetadata(e){var t,n=this.getOpponentMember().userId,r=kn.Usermedia,i=null===(t=this.feeds.find(e=>!e.isLocal()))||void 0===t?void 0:t.stream;i&&e.id!==i.id?M.warn("Call ".concat(this.callId," pushRemoteFeedWithoutMetadata() ignoring new stream because we already have stream (streamId=").concat(e.id,")")):this.getFeedByStreamId(e.id)?M.warn("Call ".concat(this.callId," pushRemoteFeedWithoutMetadata() ignoring stream because we already have a feed for it (streamId=").concat(e.id,")")):(this.feeds.push(new tu({client:this.client,call:this,roomId:this.roomId,audioMuted:!1,videoMuted:!1,userId:n,deviceId:this.getOpponentDeviceId(),stream:e,purpose:r})),this.emit(gt.FeedsChanged,this.feeds,this),M.info("Call ".concat(this.callId," pushRemoteFeedWithoutMetadata() pushed stream (streamId=").concat(e.id,", active=").concat(e.active,")")))}pushNewLocalFeed(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=this.client.getUserId();Dr(e.getAudioTracks(),!0),Dr(e.getVideoTracks(),!0),this.getFeedByStreamId(e.id)?M.warn("Call ".concat(this.callId," pushNewLocalFeed() ignoring stream because we already have a feed for it (streamId=").concat(e.id,")")):this.pushLocalFeed(new tu({client:this.client,roomId:this.roomId,audioMuted:!1,videoMuted:!1,userId:r,deviceId:this.getOpponentDeviceId(),stream:e,purpose:t}),n)}pushLocalFeed(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.feeds.some(t=>e.stream.id===t.stream.id))M.info("Call ".concat(this.callId," pushLocalFeed() ignoring duplicate local stream (streamId=").concat(e.stream.id,")"));else{if(this.feeds.push(e),n){var r=function(){M.info("Call ".concat(t.callId," pushLocalFeed() adding track to peer connection (id=").concat(i.id,", kind=").concat(i.kind,", streamId=").concat(e.stream.id,", streamPurpose=").concat(e.purpose,", enabled=").concat(i.enabled,")"));var n=Pa(e.purpose,i.kind);if(t.transceivers.has(n)){var r=t.transceivers.get(n);r.sender.replaceTrack(i),r.direction="inactive"===r.direction?"sendonly":"sendrecv"}else{var o=t.peerConn.addTrack(i,e.stream),s=t.peerConn.getTransceivers().find(e=>e.sender===o);s?t.transceivers.set(n,s):M.warn("Call ".concat(t.callId," pushLocalFeed() didn't find a matching transceiver after adding track!"))}};for(var i of e.stream.getTracks())r()}M.info("Call ".concat(this.callId," pushLocalFeed() pushed stream (id=").concat(e.stream.id,", active=").concat(e.stream.active,", purpose=").concat(e.purpose,")")),this.emit(gt.FeedsChanged,this.feeds,this)}}removeLocalFeed(e){var t=Pa(e.purpose,"audio"),n=Pa(e.purpose,"video");for(var r of[t,n])if(this.transceivers.has(r)){var i=this.transceivers.get(r);i.sender&&this.peerConn.removeTrack(i.sender)}e.purpose===kn.Screenshare&&this.client.getMediaHandler().stopScreensharingStream(e.stream),this.deleteFeed(e)}deleteAllFeeds(){for(var e of this.feeds)(!e.isLocal()||!this.groupCallId)&&e.dispose();this.feeds=[],this.emit(gt.FeedsChanged,this.feeds,this)}deleteFeedByStream(e){var t=this.getFeedByStreamId(e.id);t?this.deleteFeed(t):M.warn("Call ".concat(this.callId," deleteFeedByStream() didn't find the feed to delete (streamId=").concat(e.id,")"))}deleteFeed(e){e.dispose(),this.feeds.splice(this.feeds.indexOf(e),1),this.emit(gt.FeedsChanged,this.feeds,this)}getCurrentCallStats(){var e=this;return H(function*(){return e.callHasEnded()?e.callStatsAtEnd:e.collectCallStats()})()}collectCallStats(){var e=this;return H(function*(){if(e.peerConn){var t=yield e.peerConn.getStats(),n=[];return t.forEach(e=>{n.push(e)}),n}})()}initWithInvite(e){var t=this;return H(function*(){var n,r=e.getContent();t.direction=Rd.Inbound,(yield t.client.checkTurnServers())||M.warn("Call ".concat(t.callId," initWithInvite() failed to get TURN credentials! Proceeding with call anyway..."));var i=r[vd];i?t.updateRemoteSDPStreamMetadata(i):M.debug("Call ".concat(t.callId," initWithInvite() did not get any SDPStreamMetadata! Can not send/receive multiple streams")),t.peerConn=t.createPeerConnection(),t.emit(gt.PeerConnectionCreated,t.peerConn,t),t.chooseOpponent(e),yield t.initOpponentCrypto();try{yield t.peerConn.setRemoteDescription(r.offer),M.debug("Call ".concat(t.callId," initWithInvite() set remote description: ").concat(r.offer.type)),yield t.addBufferedIceCandidates()}catch(e){return M.debug("Call ".concat(t.callId," initWithInvite() failed to set remote description"),e),void t.terminate(hr.Local,ft.SetRemoteDescription,!1)}var o=null===(n=t.feeds.find(e=>!e.isLocal()))||void 0===n?void 0:n.stream;if(!(t.isOnlyDataChannelAllowed||o&&0!==o.getTracks().length))return M.error("Call ".concat(t.callId," initWithInvite() no remote stream or no tracks after setting remote description!")),void t.terminate(hr.Local,ft.SetRemoteDescription,!1);if(t.state=at.Ringing,e.getLocalAge()){var s=setTimeout(()=>{var e;t.state==at.Ringing&&(M.debug("Call ".concat(t.callId," initWithInvite() invite has expired. Hanging up.")),t.hangupParty=hr.Remote,t.state=at.Ended,t.stopAllMedia(),"closed"!=t.peerConn.signalingState&&t.peerConn.close(),null===(e=t.stats)||void 0===e||e.removeStatsReportGatherer(t.callId),t.emit(gt.Hangup,t))},r.lifetime-e.getLocalAge()),a=e=>{e!==at.Ringing&&(clearTimeout(s),t.off(gt.State,a))};t.on(gt.State,a)}})()}initWithHangup(e){this.state=at.Ended}shouldAnswerWithMediaType(e,t,n){return e&&!t?(M.warn("Call ".concat(this.callId," shouldAnswerWithMediaType() unable to answer with ").concat(n," because the other side isn't sending it either.")),!1):jX(e)||e===t||this.opponentSupportsSDPStreamMetadata()?e??t:(M.warn("Call ".concat(this.callId," shouldAnswerWithMediaType() unable to answer with ").concat(n,"=").concat(e," because the other side doesn't support it. Answering with ").concat(n,"=").concat(t,".")),t)}answer(e,t){var n=this;return H(function*(){if(!n.inviteOrAnswerSent){if(!1===e&&!1===t)throw new Error("You CANNOT answer a call without media");if(n.localUsermediaStream||n.waitForLocalAVStream)n.waitForLocalAVStream&&(n.state=at.WaitLocalMedia);else{var r=n.state,i=n.shouldAnswerWithMediaType(e,n.hasRemoteUserMediaAudioTrack,"audio"),o=n.shouldAnswerWithMediaType(t,n.hasRemoteUserMediaVideoTrack,"video");n.state=at.WaitLocalMedia,n.waitForLocalAVStream=!0;try{var s,a=yield n.client.getMediaHandler().getUserMediaStream(i,o);n.waitForLocalAVStream=!1;var c=[new tu({client:n.client,roomId:n.roomId,userId:n.client.getUserId(),deviceId:null!==(s=n.client.getDeviceId())&&void 0!==s?s:void 0,stream:a,purpose:kn.Usermedia,audioMuted:!1,videoMuted:!1})];n.localScreensharingFeed&&c.push(n.localScreensharingFeed),n.answerWithCallFeeds(c)}catch(e){if(!o)return void n.getUserMediaFailed(e);M.warn("Call ".concat(n.callId," answer() failed to getUserMedia(), trying to getUserMedia() without video")),n.state=r,n.waitForLocalAVStream=!1,yield n.answer(i,!1)}}}})()}answerWithCallFeeds(e){this.inviteOrAnswerSent||this.queueGotCallFeedsForAnswer(e)}replacedBy(e){M.debug("Call ".concat(this.callId," replacedBy() running (newCallId=").concat(e.callId,")")),this.state===at.WaitLocalMedia?(M.debug("Call ".concat(this.callId," replacedBy() telling new call to wait for local media (newCallId=").concat(e.callId,")")),e.waitForLocalAVStream=!0):[at.CreateOffer,at.InviteSent].includes(this.state)&&(e.direction===Rd.Outbound?e.queueGotCallFeedsForAnswer([]):(M.debug("Call ".concat(this.callId," replacedBy() handing local stream to new call(newCallId=").concat(e.callId,")")),e.queueGotCallFeedsForAnswer(this.getLocalFeeds().map(e=>e.clone())))),this.successor=e,this.emit(gt.Replaced,e,this),this.hangup(ft.Replaced,!0)}hangup(e,t){if(!this.callHasEnded()&&(M.debug("Call ".concat(this.callId," hangup() ending call (reason=").concat(e,")")),this.terminate(hr.Local,e,!t),![at.Fledgling,at.WaitLocalMedia].includes(this.state))){var n={};(this.opponentVersion&&0!==this.opponentVersion||e!==ft.UserHangup)&&(n.reason=e),this.sendVoipEvent(Z.CallHangup,n)}}reject(){if(this.state!==at.Ringing)throw Error("Call must be in 'ringing' state to reject!");if(0===this.opponentVersion)return M.info("Call ".concat(this.callId," reject() opponent version is less than 1: sending hangup instead of reject (opponentVersion=").concat(this.opponentVersion,")")),void this.hangup(ft.UserHangup,!0);M.debug("Rejecting call: "+this.callId),this.terminate(hr.Local,ft.UserHangup,!0),this.sendVoipEvent(Z.CallReject,{})}upgradeCall(e,t){var n=this;return H(function*(){if((e||t)&&n.opponentSupportsSDPStreamMetadata())try{M.debug("Call ".concat(n.callId," upgradeCall() upgrading call (audio=").concat(e,", video=").concat(t,")"));var r=e||n.hasLocalUserMediaAudioTrack,i=t||n.hasLocalUserMediaVideoTrack,o=yield n.client.getMediaHandler().getUserMediaStream(r,i,!1);yield n.updateLocalUsermediaStream(o,e,t)}catch(e){M.error("Call ".concat(n.callId," upgradeCall() failed to upgrade the call"),e),n.emit(gt.Error,new Bl(ft.NoUserMedia,"Failed to get camera access: ",e),n)}})()}opponentSupportsSDPStreamMetadata(){return!!this.remoteSDPStreamMetadata}isScreensharing(){return!!this.localScreensharingStream}setScreensharingEnabled(e,t){var n=this;return H(function*(){if(e&&n.isScreensharing())return M.warn("Call ".concat(n.callId," setScreensharingEnabled() there is already a screensharing stream - there is nothing to do!")),!0;if(!e&&!n.isScreensharing())return M.warn("Call ".concat(n.callId," setScreensharingEnabled() there already isn't a screensharing stream - there is nothing to do!")),!1;if(!n.opponentSupportsSDPStreamMetadata())return n.setScreensharingEnabledWithoutMetadataSupport(e,t);if(M.debug("Call ".concat(n.callId," setScreensharingEnabled() running (enabled=").concat(e,")")),!e){var r=n.transceivers.get(Pa(kn.Screenshare,"audio")),i=n.transceivers.get(Pa(kn.Screenshare,"video"));for(var o of[r,i])o&&o.sender&&n.peerConn.removeTrack(o.sender);return n.client.getMediaHandler().stopScreensharingStream(n.localScreensharingStream),n.deleteFeedByStream(n.localScreensharingStream),!1}try{var s=yield n.client.getMediaHandler().getScreensharingStream(t);return!!s&&(n.pushNewLocalFeed(s,kn.Screenshare),!0)}catch(e){return M.error("Call ".concat(n.callId," setScreensharingEnabled() failed to get screen-sharing stream:"),e),!1}})()}setScreensharingEnabledWithoutMetadataSupport(e,t){var n=this;return H(function*(){if(M.debug("Call ".concat(n.callId," setScreensharingEnabledWithoutMetadataSupport() running (enabled=").concat(e,")")),!e){var r,i,o=null===(r=n.localUsermediaStream)||void 0===r?void 0:r.getTracks().find(e=>"video"===e.kind),s=null===(i=n.transceivers.get(Pa(kn.Usermedia,"video")))||void 0===i?void 0:i.sender;return s?.replaceTrack(o??null),n.client.getMediaHandler().stopScreensharingStream(n.localScreensharingStream),n.deleteFeedByStream(n.localScreensharingStream),!1}try{var a,c=yield n.client.getMediaHandler().getScreensharingStream(t);if(!c)return!1;var l=c.getTracks().find(e=>"video"===e.kind),u=null===(a=n.transceivers.get(Pa(kn.Usermedia,"video")))||void 0===a?void 0:a.sender;return u?.replaceTrack(l??null),n.pushNewLocalFeed(c,kn.Screenshare,!1),!0}catch(e){return M.error("Call ".concat(n.callId," setScreensharingEnabledWithoutMetadataSupport() failed to get screen-sharing stream:"),e),!1}})()}updateLocalUsermediaStream(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]&&t[1],i=t.length>2&&void 0!==t[2]&&t[2],o=n.localUsermediaFeed,s=r||!o.isAudioMuted()&&!n.remoteOnHold,a=i||!o.isVideoMuted()&&!n.remoteOnHold;for(var c of(M.log("Call ".concat(n.callId," updateLocalUsermediaStream() running (streamId=").concat(e.id,", audio=").concat(s,", video=").concat(a,")")),Dr(e.getAudioTracks(),s),Dr(e.getVideoTracks(),a),n.localUsermediaStream.getTracks()))n.localUsermediaStream.removeTrack(c),c.stop();for(var l of e.getTracks())n.localUsermediaStream.addTrack(l);var u=function*(){var t=Pa(kn.Usermedia,d.kind),r=n.transceivers.get(t),i=r?.sender,s=!1;if(i)try{M.info("Call ".concat(n.callId," updateLocalUsermediaStream() replacing track (id=").concat(d.id,", kind=").concat(d.kind,", streamId=").concat(e.id,", streamPurpose=").concat(o.purpose,")")),yield i.replaceTrack(d),r.direction="inactive"===r.direction?"sendonly":"sendrecv",s=!0}catch(e){M.warn("Call ".concat(n.callId," updateLocalUsermediaStream() replaceTrack failed: adding new transceiver instead"),e)}if(!s){M.info("Call ".concat(n.callId," updateLocalUsermediaStream() adding track to peer connection (id=").concat(d.id,", kind=").concat(d.kind,", streamId=").concat(e.id,", streamPurpose=").concat(o.purpose,")"));var a=n.peerConn.addTrack(d,n.localUsermediaStream),c=n.peerConn.getTransceivers().find(e=>e.sender===a);c?n.transceivers.set(t,c):M.warn("Call ".concat(n.callId," updateLocalUsermediaStream() couldn't find matching transceiver for newly added track!"))}};for(var d of e.getTracks())yield*u()})()}setLocalVideoMuted(e){var t=this;return H(function*(){var n,r;if(M.log("Call ".concat(t.callId," setLocalVideoMuted() running ").concat(e)),!e&&void 0!==t.stopVideoTrackTimer&&(clearTimeout(t.stopVideoTrackTimer),t.stopVideoTrackTimer=void 0),!(yield t.client.getMediaHandler().hasVideoDevice()))return t.isLocalVideoMuted();if(!t.hasUserMediaVideoSender&&!e)return null===(r=t.localUsermediaFeed)||void 0===r||r.setAudioVideoMuted(null,e),yield t.upgradeCall(!1,!0),t.isLocalVideoMuted();if(!e&&0===t.localUsermediaStream.getVideoTracks().length){var i=yield t.client.getMediaHandler().getUserMediaStream(!0,!0);yield t.updateLocalUsermediaStream(i)}return null===(n=t.localUsermediaFeed)||void 0===n||n.setAudioVideoMuted(null,e),t.updateMuteStatus(),yield t.sendMetadataUpdate(),e&&(t.stopVideoTrackTimer=setTimeout(()=>{for(var e of t.localUsermediaStream.getVideoTracks())e.stop(),t.localUsermediaStream.removeTrack(e)},120)),t.isLocalVideoMuted()})()}isLocalVideoMuted(){var e,t;return null!==(e=null===(t=this.localUsermediaFeed)||void 0===t?void 0:t.isVideoMuted())&&void 0!==e&&e}setMicrophoneMuted(e){var t=this;return H(function*(){var n;return M.log("Call ".concat(t.callId," setMicrophoneMuted() running ").concat(e)),(yield t.client.getMediaHandler().hasAudioDevice())?e||t.hasUserMediaAudioSender&&t.hasLocalUserMediaAudioTrack?(null===(n=t.localUsermediaFeed)||void 0===n||n.setAudioVideoMuted(e,null),t.updateMuteStatus(),yield t.sendMetadataUpdate(),t.isMicrophoneMuted()):(yield t.upgradeCall(!0,!1),t.isMicrophoneMuted()):t.isMicrophoneMuted()})()}isMicrophoneMuted(){var e,t;return null!==(e=null===(t=this.localUsermediaFeed)||void 0===t?void 0:t.isAudioMuted())&&void 0!==e&&e}isRemoteOnHold(){return this.remoteOnHold}setRemoteOnHold(e){if(this.isRemoteOnHold()!==e){for(var t of(this.remoteOnHold=e,this.peerConn.getTransceivers()))t.direction=e?"sendonly":"sendrecv";this.updateMuteStatus(),this.sendMetadataUpdate(),this.emit(gt.RemoteHoldUnhold,this.remoteOnHold,this)}}isLocalOnHold(){if(this.state!==at.Connected)return!1;var e=!0;for(var t of this.peerConn.getTransceivers()){["inactive","recvonly"].includes(t.currentDirection)||(e=!1)}return e}sendDtmfDigit(e){for(var t of this.peerConn.getSenders()){var n;if("audio"===(null===(n=t.track)||void 0===n?void 0:n.kind)&&t.dtmf)return void t.dtmf.insertDTMF(e)}throw new Error("Unable to find a track to send DTMF on")}updateMuteStatus(){var e=this.isMicrophoneMuted()||this.remoteOnHold,t=this.isLocalVideoMuted()||this.remoteOnHold;M.log("Call ".concat(this.callId," updateMuteStatus stream ").concat(this.localUsermediaStream.id," micShouldBeMuted ").concat(e," vidShouldBeMuted ").concat(t)),Dr(this.localUsermediaStream.getAudioTracks(),!e),Dr(this.localUsermediaStream.getVideoTracks(),!t)}sendMetadataUpdate(){var e=this;return H(function*(){yield e.sendVoipEvent(Z.CallSDPStreamMetadataChangedPrefix,{[vd]:e.getLocalSDPStreamMetadata()})})()}gotCallFeedsForInvite(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.successor)this.successor.queueGotCallFeedsForAnswer(e);else if(this.callHasEnded())this.stopAllMedia();else{for(var n of e)this.pushLocalFeed(n);t&&this.peerConn.addTransceiver("video",{direction:"recvonly"}),this.state=at.CreateOffer,M.debug("Call ".concat(this.callId," gotUserMediaForInvite() run"))}}sendAnswer(){var e=this;return H(function*(){var t={answer:{sdp:e.peerConn.localDescription.sdp,type:e.peerConn.localDescription.type},[vd]:e.getLocalSDPStreamMetadata(!0)};t.capabilities={"m.call.transferee":e.client.supportsCallTransfer,"m.call.dtmf":!1};var n=e.discardDuplicateCandidates();M.info("Call ".concat(e.callId," sendAnswer() discarding ").concat(n," candidates that will be sent in answer"));try{yield e.sendVoipEvent(Z.CallAnswer,t),e.inviteOrAnswerSent=!0}catch(t){e.state=at.Ringing,t instanceof or&&t.event&&e.client.cancelPendingEvent(t.event);var r=ft.SendAnswer,i="Failed to send answer";throw"UnknownDeviceError"==t.name&&(r=ft.UnknownDevices,i="Unknown devices present in the room"),e.emit(gt.Error,new Bl(r,i,t),e),t}e.sendCandidateQueue()})()}queueGotCallFeedsForAnswer(e){this.responsePromiseChain?this.responsePromiseChain=this.responsePromiseChain.then(()=>this.gotCallFeedsForAnswer(e)):this.responsePromiseChain=this.gotCallFeedsForAnswer(e)}mungeSdp(e,t){var n=Z5.parse(e.sdp);n.media.forEach(e=>{var n=new Map,r=new Map;for(var i of e.rtp)n.set(i.payload,i.codec),r.set(i.codec,i.payload);for(var o of t)if(o.mediaType===e.type){if(!r.has(o.codec)){M.info("Call ".concat(this.callId," mungeSdp() ignoring SDP modifications for ").concat(o.codec," as it's not present."));continue}var s=[];void 0!==o.enableDtx&&s.push("usedtx=".concat(o.enableDtx?"1":"0")),void 0!==o.maxAverageBitrate&&s.push("maxaveragebitrate=".concat(o.maxAverageBitrate));var a=!1;for(var c of e.fmtp)n.get(c.payload)===o.codec&&(a=!0,c.config+=";"+s.join(";"));a||e.fmtp.push({payload:r.get(o.codec),config:s.join(";")})}}),e.sdp=Z5.write(n)}createOffer(){var e=this;return H(function*(){var t=yield e.peerConn.createOffer();return e.mungeSdp(t,O$(e.isPtt)),t})()}createAnswer(){var e=this;return H(function*(){var t=yield e.peerConn.createAnswer();return e.mungeSdp(t,O$(e.isPtt)),t})()}gotCallFeedsForAnswer(e){var t=this;return H(function*(){if(!t.callHasEnded()){for(var n of(t.waitForLocalAVStream=!1,e))t.pushLocalFeed(n);var r;t.state=at.CreateAnswer;try{t.getRidOfRTXCodecs(),r=yield t.createAnswer()}catch(e){return M.debug("Call ".concat(t.callId," gotCallFeedsForAnswer() failed to create answer: "),e),void t.terminate(hr.Local,ft.CreateAnswer,!0)}try{if(yield t.peerConn.setLocalDescription(r),t.callHasEnded()||(t.state=at.Connecting,yield new Promise(e=>{setTimeout(e,200)}),t.callHasEnded()))return;t.sendAnswer()}catch(e){return M.debug("Call ".concat(t.callId," gotCallFeedsForAnswer() error setting local description!"),e),void t.terminate(hr.Local,ft.SetLocalDescription,!0)}}})()}onRemoteIceCandidatesReceived(e){var t=this;return H(function*(){if(!t.callHasEnded()){var n=e.getContent(),r=n.candidates;if(!r)return void M.info("Call ".concat(t.callId," onRemoteIceCandidatesReceived() ignoring candidates event with no candidates!"));var i=0===n.version?null:n.party_id||null;if(void 0===t.opponentPartyId){if(i){M.info("Call ".concat(t.callId," onRemoteIceCandidatesReceived() buffering ").concat(r.length," candidates until we pick an opponent"));var o=t.remoteCandidateBuffer.get(i)||[];o.push(...r),t.remoteCandidateBuffer.set(i,o)}return}if(!t.partyIdMatches(n))return void M.info("Call ".concat(t.callId," onRemoteIceCandidatesReceived() ignoring candidates from party ID ").concat(n.party_id,": we have chosen party ID ").concat(t.opponentPartyId));yield t.addIceCandidates(r)}})()}onAnswerReceived(e){var t=this;return H(function*(){var n=e.getContent();if(M.debug("Call ".concat(t.callId," onAnswerReceived() running (hangupParty=").concat(n.party_id,")")),t.callHasEnded())M.debug("Call ".concat(t.callId," onAnswerReceived() ignoring answer because call has ended"));else if(void 0===t.opponentPartyId){t.chooseOpponent(e),yield t.addBufferedIceCandidates(),t.state=at.Connecting;var r=n[vd];r?t.updateRemoteSDPStreamMetadata(r):M.warn("Call ".concat(t.callId," onAnswerReceived() did not get any SDPStreamMetadata! Can not send/receive multiple streams"));try{t.isSettingRemoteAnswerPending=!0,yield t.peerConn.setRemoteDescription(n.answer),t.isSettingRemoteAnswerPending=!1,M.debug("Call ".concat(t.callId," onAnswerReceived() set remote description: ").concat(n.answer.type))}catch(e){return t.isSettingRemoteAnswerPending=!1,M.debug("Call ".concat(t.callId," onAnswerReceived() failed to set remote description"),e),void t.terminate(hr.Local,ft.SetRemoteDescription,!1)}if(null!==t.opponentPartyId)try{yield t.sendVoipEvent(Z.CallSelectAnswer,{selected_party_id:t.opponentPartyId})}catch(e){M.warn("Call ".concat(t.callId," onAnswerReceived() failed to send select_answer event"),e)}}else M.info("Call ".concat(t.callId," onAnswerReceived() ignoring answer from party ID ").concat(n.party_id,": we already have an answer/reject from ").concat(t.opponentPartyId))})()}onSelectAnswerReceived(e){var t=this;return H(function*(){if(t.direction===Rd.Inbound){var n=e.getContent().selected_party_id;null!=n?n!==t.ourPartyId&&(M.info("Call ".concat(t.callId," onSelectAnswerReceived() got select_answer for party ID ").concat(n,": we are party ID ").concat(t.ourPartyId,".")),yield t.terminate(hr.Remote,ft.AnsweredElsewhere,!0)):M.warn("Call ".concat(t.callId," onSelectAnswerReceived() got nonsensical select_answer with null/undefined selected_party_id: ignoring"))}else M.warn("Call ".concat(t.callId," onSelectAnswerReceived() got select_answer for an outbound call: ignoring"))})()}onNegotiateReceived(e){var t=this;return H(function*(){var n=e.getContent(),r=n.description;if(r&&r.sdp&&r.type){var i=t.direction===Rd.Inbound,o=!t.makingOffer&&("stable"===t.peerConn.signalingState||t.isSettingRemoteAnswerPending),s="offer"===r.type&&!o;if(t.ignoreOffer=!i&&s,t.ignoreOffer)M.info("Call ".concat(t.callId," onNegotiateReceived() ignoring colliding negotiate event because we're impolite"));else{var a=t.isLocalOnHold(),c=n[vd];c?t.updateRemoteSDPStreamMetadata(c):M.warn("Call ".concat(t.callId," onNegotiateReceived() received negotiation event without SDPStreamMetadata!"));try{if(t.isSettingRemoteAnswerPending="answer"==r.type,yield t.peerConn.setRemoteDescription(r),t.isSettingRemoteAnswerPending=!1,M.debug("Call ".concat(t.callId," onNegotiateReceived() set remote description: ").concat(r.type)),"offer"===r.type){var l,u;try{t.getRidOfRTXCodecs(),u=yield t.createAnswer()}catch(e){return M.debug("Call ".concat(t.callId," onNegotiateReceived() failed to create answer: "),e),void t.terminate(hr.Local,ft.CreateAnswer,!0)}yield t.peerConn.setLocalDescription(u),M.debug("Call ".concat(t.callId," onNegotiateReceived() create an answer")),t.sendVoipEvent(Z.CallNegotiate,{lifetime:Tk,description:null===(l=t.peerConn.localDescription)||void 0===l?void 0:l.toJSON(),[vd]:t.getLocalSDPStreamMetadata(!0)})}}catch(e){t.isSettingRemoteAnswerPending=!1,M.warn("Call ".concat(t.callId," onNegotiateReceived() failed to complete negotiation"),e)}var d=t.isLocalOnHold();a!==d&&(t.emit(gt.LocalHoldUnhold,d,t),t.emit(gt.HoldUnhold,d))}}else M.info("Call ".concat(t.callId," onNegotiateReceived() ignoring invalid m.call.negotiate event"))})()}updateRemoteSDPStreamMetadata(e){for(var t of(this.remoteSDPStreamMetadata=FX(this.remoteSDPStreamMetadata||{},e,!0),this.getRemoteFeeds())){var n,r=t.stream.id,i=this.remoteSDPStreamMetadata[r];t.setAudioVideoMuted(i?.audio_muted,i?.video_muted),t.purpose=null===(n=this.remoteSDPStreamMetadata[r])||void 0===n?void 0:n.purpose}}onSDPStreamMetadataChangedReceived(e){var t=e.getContent()[vd];this.updateRemoteSDPStreamMetadata(t)}onAssertedIdentityReceived(e){var t=this;return H(function*(){var n=e.getContent();n.asserted_identity&&(t.remoteAssertedIdentity={id:n.asserted_identity.id,displayName:n.asserted_identity.display_name},t.emit(gt.AssertedIdentityChanged,t))})()}callHasEnded(){return this.state===at.Ended}queueGotLocalOffer(){this.responsePromiseChain?this.responsePromiseChain=this.responsePromiseChain.then(()=>this.wrappedGotLocalOffer()):this.responsePromiseChain=this.wrappedGotLocalOffer()}wrappedGotLocalOffer(){var e=this;return H(function*(){e.makingOffer=!0;try{yield e.gotLocalOffer()}catch(t){return void e.getLocalOfferFailed(t)}finally{e.makingOffer=!1}})()}gotLocalOffer(){var e=this;return H(function*(){if(M.debug("Call ".concat(e.callId," gotLocalOffer() running")),e.callHasEnded())M.debug("Call ".concat(e.callId,' gotLocalOffer() ignoring newly created offer because the call has ended"'));else{var t;try{e.getRidOfRTXCodecs(),t=yield e.createOffer()}catch(t){return M.debug("Call ".concat(e.callId," gotLocalOffer() failed to create offer: "),t),void e.terminate(hr.Local,ft.CreateOffer,!0)}try{yield e.peerConn.setLocalDescription(t)}catch(t){return M.debug("Call ".concat(e.callId," gotLocalOffer() error setting local description!"),t),void e.terminate(hr.Local,ft.SetLocalDescription,!0)}if("gathering"===e.peerConn.iceGatheringState&&(yield new Promise(e=>{setTimeout(e,200)})),!e.callHasEnded()){var n,r,i=e.state===at.CreateOffer?Z.CallInvite:Z.CallNegotiate,o={lifetime:Tk};if(i===Z.CallInvite&&e.invitee&&(o.invitee=e.invitee),e.state===at.CreateOffer)o.offer=null===(n=e.peerConn.localDescription)||void 0===n?void 0:n.toJSON();else o.description=null===(r=e.peerConn.localDescription)||void 0===r?void 0:r.toJSON();o.capabilities={"m.call.transferee":e.client.supportsCallTransfer,"m.call.dtmf":!1},o[vd]=e.getLocalSDPStreamMetadata(!0);var s=e.discardDuplicateCandidates();M.info("Call ".concat(e.callId," gotLocalOffer() discarding ").concat(s," candidates that will be sent in offer"));try{yield e.sendVoipEvent(i,o)}catch(t){M.error("Call ".concat(e.callId," gotLocalOffer() failed to send invite"),t),t instanceof or&&t.event&&e.client.cancelPendingEvent(t.event);var a=ft.SignallingFailed,c="Signalling failed";return e.state===at.CreateOffer&&(a=ft.SendInvite,c="Failed to send invite"),"UnknownDeviceError"==t.name&&(a=ft.UnknownDevices,c="Unknown devices present in the room"),e.emit(gt.Error,new Bl(a,c,t),e),void e.terminate(hr.Local,a,!1)}e.sendCandidateQueue(),e.state===at.CreateOffer&&(e.inviteOrAnswerSent=!0,e.state=at.InviteSent,e.inviteTimeout=setTimeout(()=>{e.inviteTimeout=void 0,e.state===at.InviteSent&&e.hangup(ft.InviteTimeout,!1)},Tk))}}})()}getRidOfRTXCodecs(){if(RTCRtpReceiver.getCapabilities&&RTCRtpSender.getCapabilities){var e=this.transceivers.get(Pa(kn.Screenshare,"video"));if(e&&e.setCodecPreferences){var t=RTCRtpReceiver.getCapabilities("video").codecs,n=RTCRtpSender.getCapabilities("video").codecs,r=[];for(var i of[...t,...n])if("video/rtx"!==i.mimeType){r.push(i);try{e.setCodecPreferences(r)}catch(e){M.info("Working around buggy WebRTC impl: claimed to support codec but threw when setting codec preferences",i,e),r.pop()}}}}}sendVoipEvent(e,t){var n=this;return H(function*(){var r=T2(T2({},t),{},{version:i0e,call_id:n.callId,party_id:n.ourPartyId,conf_id:n.groupCallId});if(n.opponentDeviceId){var i,o=n.toDeviceSeq++,s=T2(T2({},r),{},{device_id:n.client.deviceId,sender_session_id:n.client.getSessionId(),dest_session_id:n.opponentSessionId,seq:o,[V3]:P1e()});n.emit(gt.SendVoipEvent,{type:"toDevice",eventType:e,userId:n.invitee||(null===(i=n.getOpponentMember())||void 0===i?void 0:i.userId),opponentDeviceId:n.opponentDeviceId,content:s},n);var a=n.invitee||n.getOpponentMember().userId;if(n.client.getUseE2eForGroupCall()){if(!n.hasOpponentDeviceInfo)return void M.warn("Call ".concat(n.callId," sendVoipEvent() failed: we do not have opponentDeviceInfo"));throw new Error("Unimplemented")}yield n.client.sendToDevice(e,new Map([[a,new Map([[n.opponentDeviceId,s]])]]))}else{var c;n.emit(gt.SendVoipEvent,{type:"sendEvent",eventType:e,roomId:n.roomId,content:r,userId:n.invitee||(null===(c=n.getOpponentMember())||void 0===c?void 0:c.userId)},n),yield n.client.sendEvent(n.roomId,e,r)}})()}queueCandidate(e){if(e?this.candidateSendQueue.push(e):this.candidatesEnded=!0,this.state!==at.Ringing&&this.inviteOrAnswerSent){var t=this.direction===Rd.Inbound?500:2e3;0===this.candidateSendTries&&setTimeout(()=>{this.sendCandidateQueue()},t)}}discardDuplicateCandidates(){for(var e=0,t=[],n=0;ne.toJSON())};e.candidatesEnded&&n.candidates.push({candidate:""}),M.debug("Call ".concat(e.callId," sendCandidateQueue() attempting to send ").concat(t.length," candidates"));try{yield e.sendVoipEvent(Z.CallCandidates,n),e.candidateSendTries=0,e.sendCandidateQueue()}catch(n){if(n instanceof or&&n.event&&e.client.cancelPendingEvent(n.event),e.candidateSendQueue.push(...t),e.candidateSendTries>5){M.debug("Call ".concat(e.callId," sendCandidateQueue() failed to send candidates on attempt ").concat(e.candidateSendTries,". Giving up on this call."),n);var r=ft.SignallingFailed;return e.emit(gt.Error,new Bl(r,"Signalling failed",n),e),void e.hangup(r,!1)}var i=500*Math.pow(2,e.candidateSendTries);++e.candidateSendTries,M.debug("Call ".concat(e.callId," sendCandidateQueue() failed to send candidates. Retrying in ").concat(i,"ms"),n),setTimeout(()=>{e.sendCandidateQueue()},i)}}})()}placeCall(e,t){var n=this;return H(function*(){if(!e)throw new Error("You CANNOT start a call without audio");var r;n.state=at.WaitLocalMedia;try{var i,o=yield n.client.getMediaHandler().getUserMediaStream(e,t);Dr(o.getAudioTracks(),!0),Dr(o.getVideoTracks(),!0),r=new tu({client:n.client,roomId:n.roomId,userId:n.client.getUserId(),deviceId:null!==(i=n.client.getDeviceId())&&void 0!==i?i:void 0,stream:o,purpose:kn.Usermedia,audioMuted:!1,videoMuted:!1})}catch(e){return void n.getUserMediaFailed(e)}try{yield n.placeCallWithCallFeeds([r])}catch(e){return void n.placeCallFailed(e)}})()}placeCallWithCallFeeds(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]&&t[1];n.checkForErrorListener(),n.direction=Rd.Outbound,yield n.initOpponentCrypto(),n.client.callEventHandler.calls.set(n.callId,n),(yield n.client.checkTurnServers())||M.warn("Call ".concat(n.callId," placeCallWithCallFeeds() failed to get TURN credentials! Proceeding with call anyway...")),n.peerConn=n.createPeerConnection(),n.emit(gt.PeerConnectionCreated,n.peerConn,n),n.gotCallFeedsForInvite(e,r)})()}createPeerConnection(){var e,t=new window.RTCPeerConnection({iceTransportPolicy:this.forceTURN?"relay":void 0,iceServers:this.turnServers.length?this.turnServers:void 0,iceCandidatePoolSize:this.client.iceCandidatePoolSize,bundlePolicy:"max-bundle"});t.addEventListener("iceconnectionstatechange",this.onIceConnectionStateChanged),t.addEventListener("signalingstatechange",this.onSignallingStateChanged),t.addEventListener("icecandidate",this.gotLocalIceCandidate),t.addEventListener("icegatheringstatechange",this.onIceGatheringStateChange),t.addEventListener("track",this.onTrack),t.addEventListener("negotiationneeded",this.onNegotiationNeeded),t.addEventListener("datachannel",this.onDataChannel);var n=this.getOpponentMember(),r=n?n.userId:"unknown";return null===(e=this.stats)||void 0===e||e.addStatsReportGatherer(this.callId,r,t),t}partyIdMatches(e){return(0===e.version?null:e.party_id||null)===this.opponentPartyId}chooseOpponent(e){var t,n,r=e.getContent();(M.debug("Call ".concat(this.callId," chooseOpponent() running (partyId=").concat(r.party_id,")")),this.opponentVersion=r.version,0===this.opponentVersion?this.opponentPartyId=null:this.opponentPartyId=r.party_id||null,this.opponentCaps=r.capabilities||{},this.opponentMember=null!==(t=this.client.getRoom(this.roomId).getMember(e.getSender()))&&void 0!==t?t:void 0,this.opponentMember)&&(null===(n=this.stats)||void 0===n||n.updateOpponentMember(this.callId,this.opponentMember.userId))}addBufferedIceCandidates(){var e=this;return H(function*(){var t=e.remoteCandidateBuffer.get(e.opponentPartyId);t&&(M.info("Call ".concat(e.callId," addBufferedIceCandidates() adding ").concat(t.length," buffered candidates for opponent ").concat(e.opponentPartyId)),yield e.addIceCandidates(t)),e.remoteCandidateBuffer.clear()})()}addIceCandidates(e){var t=this;return H(function*(){for(var n of e){null!==n.sdpMid&&void 0!==n.sdpMid||null!==n.sdpMLineIndex&&void 0!==n.sdpMLineIndex?M.debug("Call ".concat(t.callId," addIceCandidates() got remote ICE candidate (sdpMid=").concat(n.sdpMid,", candidate=").concat(n.candidate,")")):M.debug("Call ".concat(t.callId," addIceCandidates() got remote ICE end-of-candidates"));try{yield t.peerConn.addIceCandidate(n)}catch(e){t.ignoreOffer?M.debug("Call ".concat(t.callId," addIceCandidates() failed to add remote ICE candidate because ignoring offer"),e):M.info("Call ".concat(t.callId," addIceCandidates() failed to add remote ICE candidate"),e)}}})()}get hasPeerConnection(){return!!this.peerConn}initStats(e){this.stats=e,this.stats.start()}}function Dr(e,t){for(var n of e)n.enabled=t}function sA(){if(typeof window>"u"||typeof document>"u")return!1;try{var e,t,n;if(!!!(null!==(e=null!==(t=null!==(n=window.RTCPeerConnection)&&void 0!==n?n:window.RTCSessionDescription)&&void 0!==t?t:window.RTCIceCandidate)&&void 0!==e?e:navigator.mediaDevices))return M.error("WebRTC is not supported in this browser / environment"),!1}catch(e){return M.error("Exception thrown when trying to access WebRTC",e),!1}return!0}function ub(e,t,n){if(!sA())return null;var r=!!n&&n.forceTURN,i={client:e,roomId:t,invitee:n?.invitee,turnServers:e.getTurnServers(),forceTURN:e.forceTURN||r,opponentDeviceId:n?.opponentDeviceId,opponentSessionId:n?.opponentSessionId,groupCallId:n?.groupCallId},o=new l0e(i);return e.reEmitter.reEmit(o,Object.values(gt)),o}var Jd=function(e){return e.DontNotify="dont_notify",e.Notify="notify",e.Coalesce="coalesce",e}({}),Y7=function(e){return e.Highlight="highlight",e.Sound="sound",e}({}),u0e=function(e){return e.ExactEquals="==",e.LessThan="<",e.GreaterThan=">",e.GreaterThanOrEqual=">=",e.LessThanOrEqual="<=",e}({}),d0e="2";function f0e(e){return"==2"===e||"2"===e}var Nr=function(e){return e.EventMatch="event_match",e.EventPropertyIs="event_property_is",e.EventPropertyContains="event_property_contains",e.ContainsDisplayName="contains_display_name",e.RoomMemberCount="room_member_count",e.SenderNotificationPermission="sender_notification_permission",e.CallStarted="call_started",e.CallStartedPrefix="org.matrix.msc3914.call_started",e}({}),Si=function(e){return e.Override="override",e.ContentSpecific="content",e.RoomSpecific="room",e.SenderSpecific="sender",e.Underride="underride",e}({}),_i=function(e){return e.Master=".m.rule.master",e.IsUserMention=".m.rule.is_user_mention",e.IsRoomMention=".m.rule.is_room_mention",e.ContainsDisplayName=".m.rule.contains_display_name",e.ContainsUserName=".m.rule.contains_user_name",e.AtRoomNotification=".m.rule.roomnotif",e.DM=".m.rule.room_one_to_one",e.EncryptedDM=".m.rule.encrypted_room_one_to_one",e.Message=".m.rule.message",e.EncryptedMessage=".m.rule.encrypted",e.InviteToSelf=".m.rule.invite_for_me",e.MemberEvent=".m.rule.member_event",e.IncomingCall=".m.rule.call",e.SuppressNotices=".m.rule.suppress_notices",e.Tombstone=".m.rule.tombstone",e.PollStart=".m.rule.poll_start",e.PollStartUnstable=".org.matrix.msc3930.rule.poll_start",e.PollEnd=".m.rule.poll_end",e.PollEndUnstable=".org.matrix.msc3930.rule.poll_end",e.PollStartOneToOne=".m.rule.poll_start_one_to_one",e.PollStartOneToOneUnstable=".org.matrix.msc3930.rule.poll_start_one_to_one",e.PollEndOneToOne=".m.rule.poll_end_one_to_one",e.PollEndOneToOneUnstable=".org.matrix.msc3930.rule.poll_end_one_to_one",e}({});function M$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function D$(e){for(var t=1;te.default),s=n.filter(e=>!e.default);function a(n){n===X7?l.push(...s):n in r?(e.warn("Adding default global ".concat(t," push rule ").concat(n)),l.push(r[n])):e.warn("Missing default global ".concat(t," push rule ").concat(n))}var c=0,l=[];for(var u of o){var d=i.indexOf(u.rule_id);if(-1!==d){for(;d>c;){a(i[c]),c+=1}l.push(u),c+=1}else l.push(u)}for(var h of i.slice(c))a(h);return l}class Fa{constructor(e){this.client=e,L(this,"parsedKeys",new Map)}static actionListToActionsObject(e){var t={notify:!1,tweaks:{}};for(var n of e)n===Jd.Notify?t.notify=!0:"object"==typeof n&&(void 0===n.value&&(n.value=!0),t.tweaks[n.set_tweak]=n.value);return t}static rewriteDefaultRules(e,t){var n=JSON.parse(JSON.stringify(t));return n||(n={}),n.global||(n.global={}),n.global.override||(n.global.override=[]),n.global.underride||(n.global.underride=[]),n.global.override=U$(e,Si.Override,n.global.override,h0e,p0e),n.global.underride=U$(e,Si.Underride,n.global.underride,m0e,g0e),n}static getPushRuleGlobRegex(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"i",[r,i]=t?["(?<=^|\\W)","(?=\\W|$)"]:["^","$"],o="".concat(t,"-").concat(n,"-").concat(e);return Fa.cachedGlobToRegex[o]||(Fa.cachedGlobToRegex[o]=new RegExp(r+"("+UX(e)+")"+i,n)),Fa.cachedGlobToRegex[o]}updateCachedPushRuleKeys(e){e||(e={}),e.global||(e.global={}),e.global.override||(e.global.override=[]),e.global.room||(e.global.room=[]),e.global.sender||(e.global.sender=[]),e.global.underride||(e.global.underride=[]);var t=new Set(this.parsedKeys.keys());for(var n of[e.global.override,e.global.room,e.global.sender,e.global.underride])for(var r of n)if(r.conditions)for(var i of r.conditions)i.kind===Nr.EventMatch&&(t.delete(i.key),this.parsedKeys.set(i.key,Fa.partsForDottedKey(i.key)));t.forEach(e=>this.parsedKeys.delete(e))}matchingRuleFromKindSet(e,t){for(var n of N$){var r=t[n];if(r)for(var i of r)if(i.enabled){var o=this.templateRuleToRaw(n,i);if(o&&this.ruleMatchesEvent(o,e))return D$(D$({},i),{},{kind:n})}}return null}templateRuleToRaw(e,t){var n={rule_id:t.rule_id,actions:t.actions,conditions:[]};switch(e){case Si.Underride:case Si.Override:n.conditions=t.conditions;break;case Si.RoomSpecific:if(!t.rule_id)return null;n.conditions.push({kind:Nr.EventMatch,key:"room_id",value:t.rule_id});break;case Si.SenderSpecific:if(!t.rule_id)return null;n.conditions.push({kind:Nr.EventMatch,key:"user_id",value:t.rule_id});break;case Si.ContentSpecific:if(!t.pattern)return null;n.conditions.push({kind:Nr.EventMatch,key:"content.body",pattern:t.pattern})}return n}eventFulfillsCondition(e,t){switch(e.kind){case Nr.EventMatch:return this.eventFulfillsEventMatchCondition(e,t);case Nr.EventPropertyIs:return this.eventFulfillsEventPropertyIsCondition(e,t);case Nr.EventPropertyContains:return this.eventFulfillsEventPropertyContains(e,t);case Nr.ContainsDisplayName:return this.eventFulfillsDisplayNameCondition(e,t);case Nr.RoomMemberCount:return this.eventFulfillsRoomMemberCountCondition(e,t);case Nr.SenderNotificationPermission:return this.eventFulfillsSenderNotifPermCondition(e,t);case Nr.CallStarted:case Nr.CallStartedPrefix:return this.eventFulfillsCallStartedCondition(e,t)}return!1}eventFulfillsSenderNotifPermCondition(e,t){var n=e.key;if(!n)return!1;var r=this.client.getRoom(t.getRoomId());return!(null==r||!r.currentState)&&r.currentState.mayTriggerNotifOfType(n,t.getSender())}eventFulfillsRoomMemberCountCondition(e,t){if(!e.is)return!1;var n=this.client.getRoom(t.getRoomId());if(!n||!n.currentState||!n.currentState.members)return!1;var r=n.currentState.getJoinedMemberCount(),i=e.is.match(/^([=<>]*)(\d*)$/);if(!i)return!1;var o=i[1],s=parseInt(i[2]);if(isNaN(s))return!1;switch(o){case"":case"==":return r==s;case"<":return r":return r>s;case"<=":return r<=s;case">=":return r>=s;default:return!1}}eventFulfillsDisplayNameCondition(e,t){var n,r=t.getContent();if(t.isEncrypted()&&t.getClearContent()&&(r=t.getClearContent()),!r||!r.body||"string"!=typeof r.body)return!1;var i=this.client.getRoom(t.getRoomId()),o=null==i||null===(n=i.currentState)||void 0===n?void 0:n.getMember(this.client.credentials.userId);if(!o)return!1;var s=o.name,a=new RegExp("(^|\\W)"+NX(s)+"(\\W|$)","i");return r.body.search(a)>-1}eventFulfillsEventMatchCondition(e,t){if(!e.key)return!1;var n=this.valueForDottedKey(e.key,t);if("string"!=typeof n)return!1;if(e.value)return e.value===n;if("string"!=typeof e.pattern)return!1;var r=Fa.getPushRuleGlobRegex(e.pattern,"content.body"===e.key);return!!n.match(r)}eventFulfillsEventPropertyIsCondition(e,t){return!(!e.key||void 0===e.value)&&e.value===this.valueForDottedKey(e.key,t)}eventFulfillsEventPropertyContains(e,t){if(!e.key||void 0===e.value)return!1;var n=this.valueForDottedKey(e.key,t);return!!Array.isArray(n)&&n.includes(e.value)}eventFulfillsCallStartedCondition(e,t){return["m.ring","m.prompt"].includes(t.getContent()["m.intent"])&&!("m.terminated"in t.getContent())&&(t.getPrevContent()["m.terminated"]!==t.getContent()["m.terminated"]||lf(t.getPrevContent(),{}))}static partsForDottedKey(e){var t=[],n="",r=!1;for(var i of e)r?(n+="\\"===i||"."===i?i:"\\"+i,r=!1):"."==i?(t.push(n),n=""):"\\"==i?r=!0:n+=i;return r&&(n+="\\"),t.push(n),t}valueForDottedKey(e,t){var n=this.parsedKeys.get(e);void 0===n&&(n=Fa.partsForDottedKey(e),this.parsedKeys.set(e,n));var r,i=n[0],o=0;for("content"===i?(r=t.getContent(),++o):"type"===i?(r=t.getType(),++o):r=t.event;o!this.eventFulfillsCondition(e,t)))}actionsForEvent(e){var{actions:t}=this.pushActionsForEventAndRulesets(e,this.client.pushRules);return t||{}}actionsAndRuleForEvent(e){return this.pushActionsForEventAndRulesets(e,this.client.pushRules)}getPushRuleById(e){var t,n=this.getPushRuleAndKindById(e);return null!==(t=n?.rule)&&void 0!==t?t:null}getPushRuleAndKindById(e){for(var t of["global"]){var n;if(void 0!==(null===(n=this.client.pushRules)||void 0===n?void 0:n[t]))for(var r of N$)if(void 0!==this.client.pushRules[t][r])for(var i of this.client.pushRules[t][r])if(i.rule_id===e)return{rule:i,kind:r}}return null}}L(Fa,"cachedGlobToRegex",{});var db=["v1.1","v1.2","v1.3","v1.4","v1.5","v1.6","v1.7","v1.8","v1.9"],v0e=db[0],y0e=db[db.length-1],go=function(e){return e.SUCCESS="SUCCESS",e.IGNORE="IGNORE",e.PROMPT="PROMPT",e.FAIL_PROMPT="FAIL_PROMPT",e.FAIL_ERROR="FAIL_ERROR",e}({}),Sa=function(e){return e.Invalid="Invalid homeserver discovery response",e.GenericFailure="Failed to get autodiscovery configuration from server",e.InvalidHsBaseUrl="Invalid base_url for m.homeserver",e.InvalidHomeserver="Homeserver URL does not appear to be a valid Matrix homeserver",e.InvalidIsBaseUrl="Invalid base_url for m.identity_server",e.InvalidIdentityServer="Identity server URL does not appear to be a valid identity server",e.InvalidIs="Invalid identity server discovery response",e.MissingWellknown="No .well-known JSON file found",e.InvalidJson="Invalid JSON",e.UnsupportedHomeserverSpecVersion="The homeserver does not meet the version requirements",e}({});class lt{static fromDiscoveryConfig(e){var t=this;return H(function*(){var n,r={"m.homeserver":{state:lt.FAIL_ERROR,error:lt.ERROR_INVALID,base_url:null},"m.identity_server":{state:lt.PROMPT,error:null,base_url:null}};if(null==e||!e["m.homeserver"])return M.error("No m.homeserver key in config"),r["m.homeserver"].state=lt.FAIL_PROMPT,r["m.homeserver"].error=lt.ERROR_INVALID,Promise.resolve(r);if(!e["m.homeserver"].base_url)return M.error("No m.homeserver base_url in config"),r["m.homeserver"].state=lt.FAIL_PROMPT,r["m.homeserver"].error=lt.ERROR_INVALID_HS_BASE_URL,Promise.resolve(r);var i=t.sanitizeWellKnownUrl(e["m.homeserver"].base_url);if(!i)return M.error("Invalid base_url for m.homeserver"),r["m.homeserver"].error=lt.ERROR_INVALID_HS_BASE_URL,Promise.resolve(r);var o=yield t.fetchWellKnownObject("".concat(i,"/_matrix/client/versions"));if(!o||!Array.isArray(null===(n=o.raw)||void 0===n?void 0:n.versions))return M.error("Invalid /versions response"),r["m.homeserver"].error=lt.ERROR_INVALID_HOMESERVER,r["m.homeserver"].base_url=i,Promise.resolve(r);var s=new Set(o.raw.versions),a=!1;for(var c of db)if(s.has(c)){a=!0;break}if(!a)return M.error("Homeserver does not meet version requirements"),r["m.homeserver"].error=lt.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION,r["m.homeserver"].base_url=i,Promise.resolve(r);r["m.homeserver"]={state:lt.SUCCESS,error:null,base_url:i};var l="";if(e["m.identity_server"]){var u={"m.homeserver":r["m.homeserver"],"m.identity_server":{state:lt.FAIL_PROMPT,error:lt.ERROR_INVALID_IS,base_url:null}};if(!(l=t.sanitizeWellKnownUrl(e["m.identity_server"].base_url)))return M.error("Invalid base_url for m.identity_server"),u["m.identity_server"].error=lt.ERROR_INVALID_IS_BASE_URL,Promise.resolve(u);var d=yield t.fetchWellKnownObject("".concat(l,"/_matrix/identity/v2"));if(null==d||!d.raw||d.action!==go.SUCCESS)return M.error("Invalid /v2 response"),u["m.identity_server"].error=lt.ERROR_INVALID_IDENTITY_SERVER,u["m.identity_server"].base_url=l,Promise.resolve(u)}return l&&l.toString().length>0&&(r["m.identity_server"]={state:lt.SUCCESS,error:null,base_url:l}),Object.keys(e).forEach(t=>{if("m.homeserver"===t||"m.identity_server"===t){var n=["error","state","base_url"];for(var i of Object.keys(e[t]))n.includes(i)||(r[t][i]=e[t][i])}else r[t]=e[t]}),Promise.resolve(r)})()}static findClientConfig(e){var t=this;return H(function*(){if(!e||"string"!=typeof e||0===e.length)throw new Error("'domain' must be a string of non-zero length");var n={"m.homeserver":{state:lt.FAIL_ERROR,error:lt.ERROR_INVALID,base_url:null},"m.identity_server":{state:lt.PROMPT,error:null,base_url:null}},r=e.includes("://")?e:"https://".concat(e),i=yield t.fetchWellKnownObject("".concat(r,"/.well-known/matrix/client"));return i&&i.action===go.SUCCESS?lt.fromDiscoveryConfig(i.raw):(M.error("No response or error when parsing .well-known"),i.reason&&M.error(i.reason),i.action===go.IGNORE?n["m.homeserver"]={state:lt.PROMPT,error:null,base_url:null}:(n["m.homeserver"].state=lt.FAIL_PROMPT,n["m.homeserver"].error=lt.ERROR_INVALID),Promise.resolve(n))})()}static getRawClientConfig(e){var t=this;return H(function*(){var n;if(!e||"string"!=typeof e||0===e.length)throw new Error("'domain' must be a string of non-zero length");var r=yield t.fetchWellKnownObject("https://".concat(e,"/.well-known/matrix/client"));return r&&null!==(n=r.raw)&&void 0!==n?n:{}})()}static sanitizeWellKnownUrl(e){if(!e)return!1;try{var t,n;try{n=new URL(e)}catch(e){M.error("Could not parse url",e)}if(null===(t=n)||void 0===t||!t.hostname||"http:"!==n.protocol&&"https:"!==n.protocol)return!1;var r=n.port?":".concat(n.port):"",i=n.pathname?n.pathname:"",o="".concat(n.protocol,"//").concat(n.hostname).concat(r).concat(i);return o.endsWith("/")&&(o=o.substring(0,o.length-1)),o}catch(e){return M.error(e),!1}}static fetch(e,t){return this.fetchFn?this.fetchFn(e,t):globalThis.fetch(e,t)}static setFetchFn(e){lt.fetchFn=e}static fetchWellKnownObject(e){return H(function*(){var t;try{if(404===(t=yield lt.fetch(e,{method:ue.Get,signal:q3(5e3)})).status)return{raw:{},action:go.IGNORE,reason:lt.ERROR_MISSING_WELLKNOWN};if(200!==t.status)return{raw:{},action:go.FAIL_PROMPT,reason:"General failure"}}catch(e){var n=e,r="";return"object"==typeof n&&(r=n?.message),{error:n,raw:{},action:go.FAIL_PROMPT,reason:r||"General failure"}}try{return{raw:yield t.json(),action:go.SUCCESS}}catch(e){var i=e;return{error:i,raw:{},action:go.FAIL_PROMPT,reason:"SyntaxError"===i?.name?lt.ERROR_INVALID_JSON:lt.ERROR_INVALID}}})()}}L(lt,"ERROR_INVALID",Sa.Invalid),L(lt,"ERROR_GENERIC_FAILURE",Sa.GenericFailure),L(lt,"ERROR_INVALID_HS_BASE_URL",Sa.InvalidHsBaseUrl),L(lt,"ERROR_INVALID_HOMESERVER",Sa.InvalidHomeserver),L(lt,"ERROR_INVALID_IS_BASE_URL",Sa.InvalidIsBaseUrl),L(lt,"ERROR_INVALID_IDENTITY_SERVER",Sa.InvalidIdentityServer),L(lt,"ERROR_INVALID_IS",Sa.InvalidIs),L(lt,"ERROR_MISSING_WELLKNOWN",Sa.MissingWellknown),L(lt,"ERROR_INVALID_JSON",Sa.InvalidJson),L(lt,"ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION",Sa.UnsupportedHomeserverSpecVersion),L(lt,"ALL_ERRORS",Object.keys(Sa)),L(lt,"FAIL_ERROR",go.FAIL_ERROR),L(lt,"FAIL_PROMPT",go.FAIL_PROMPT),L(lt,"PROMPT",go.PROMPT),L(lt,"SUCCESS",go.SUCCESS),L(lt,"fetchFn",void 0);var oA=function(e){return e.IS="SERVICE_TYPE_IS",e.IM="SERVICE_TYPE_IM",e}({});class b0e{constructor(e){this.ourEvent=e,L(this,"timeline",void 0),L(this,"ourEventIndex",0),L(this,"paginateTokens",{[ht.Backward]:null,[ht.Forward]:null}),this.timeline=[e]}getEvent(){return this.timeline[this.ourEventIndex]}getTimeline(){return this.timeline}getOurEventIndex(){return this.ourEventIndex}getPaginateToken(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.paginateTokens[e?ht.Backward:ht.Forward]}setPaginateToken(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.paginateTokens[t?ht.Backward:ht.Forward]=e??null}addEvents(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?(this.timeline=e.concat(this.timeline),this.ourEventIndex+=e.length):this.timeline=this.timeline.concat(e)}}class W3{static fromJson(e,t){var n=e.context||{},r=(n.events_before||[]).map(t),i=(n.events_after||[]).map(t),o=new b0e(t(e.result)),s=o.ourEvent.threadRootId;return r=r.filter(e=>e.threadRootId===s),i=i.filter(e=>e.threadRootId===s),o.setPaginateToken(n.start,!0),o.addEvents(r,!0),o.addEvents(i,!1),o.setPaginateToken(n.end,!1),new W3(e.rank,o)}constructor(e,t){this.rank=e,this.context=t}}var $J=function(e){return e.Public="public",e.Private="private",e}({}),Y3=function(e){return e.PrivateChat="private_chat",e.TrustedPrivateChat="trusted_private_chat",e.PublicChat="public_chat",e}({}),Qd=function(e){return e.Public="public",e.Invite="invite",e.Private="private",e.Knock="knock",e.Restricted="restricted",e}({}),_0e=function(e){return e.RoomMembership="m.room_membership",e}({}),aC=function(e){return e.CanJoin="can_join",e.Forbidden="forbidden",e}({}),J7=function(e){return e.Invited="invited",e.Joined="joined",e.Shared="shared",e.WorldReadable="world_readable",e}({});function j$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function F$(e){for(var t=1;te.replacingEventId()===o.getId())){var s=e.directory.getFile(r.getId());if(!s)break;t.push(s),o=r}}while(r);return t})()}}function B$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function uh(e){for(var t=1;t{var t;return!(null!==(t=e.getContent())&&void 0!==t&&t.via)})}setName(e){var t=this;return H(function*(){yield t.client.sendStateEvent(t.roomId,Z.RoomName,{name:e},"")})()}invite(e){var t=arguments,n=this;return H(function*(){var r=!(t.length>1&&void 0!==t[1])||t[1],i=[n.retryInvite(e)];r&&i.push(...n.getDirectories().map(t=>t.invite(e,r))),yield Promise.all(i)})()}retryInvite(e){var t=this;return ave(H(function*(){yield t.client.invite(t.roomId,e).catch(e=>{throw"M_FORBIDDEN"===e?.errcode?new MX.AbortError(e):e})}))}setPermissions(e,t){var n=this;return H(function*(){var r,i=n.room.currentState.getStateEvents(Z.RoomPowerLevels,"");if(Array.isArray(i))throw new Error("Unexpected return type for power levels");var o=i?.getContent()||{},s=o.users_default||0,a=o.events_default||50,c=(null===(r=o.events)||void 0===r?void 0:r[Z.RoomPowerLevels])||100,l=o.users||{};switch(t){case Am.Viewer:l[e]=s;break;case Am.Editor:l[e]=a;break;case Am.Owner:l[e]=c;break;default:throw new Error("Invalid role: "+t)}o.users=l,yield n.client.sendStateEvent(n.roomId,Z.RoomPowerLevels,o,"")})()}getPermissions(e){var t,n,r=this.room.currentState.getStateEvents(Z.RoomPowerLevels,"");if(Array.isArray(r))throw new Error("Unexpected return type for power levels");var i=r?.getContent()||{},o=i.users_default||0,s=i.events_default||50,a=(null===(t=i.events)||void 0===t?void 0:t[Z.RoomPowerLevels])||100,c=(null===(n=i.users)||void 0===n?void 0:n[e])||o;return c>=a?Am.Owner:c>=s?Am.Editor:Am.Viewer}createDirectory(e){var t=this;return H(function*(){var n=yield t.client.unstableCreateFileTree(e);return yield t.client.sendStateEvent(t.roomId,Z.SpaceChild,{via:[t.client.getDomain()]},n.roomId),yield t.client.sendStateEvent(n.roomId,Z.SpaceParent,{via:[t.client.getDomain()]},t.roomId),n})()}getDirectories(){var e=[],t=this.room.currentState.getStateEvents(Z.SpaceChild);for(var n of t)try{var r=n.getStateKey();if(r){var i=this.client.unstableGetFileTreeSpace(r);i&&e.push(i)}}catch(e){M.warn("Unable to create tree space instance for listing. Are we joined?",e)}return e}getDirectory(e){return this.getDirectories().find(t=>t.roomId===e)}delete(){var e=this;return H(function*(){var t=e.getDirectories();for(var n of t)yield n.delete();var r=[He.Invite,He.Knock,He.Join],i=e.room.currentState.getStateEvents(Z.RoomMember);for(var o of i){if(o.getStateKey()!==e.client.getUserId()&&r.includes(o.getContent().membership)){var s=o.getStateKey();if(!s)throw new Error("State key not found for branch");yield e.client.kick(e.roomId,s,"Room deleted")}}yield e.client.leave(e.roomId)})()}getOrderedChildren(e){var t=e.map(e=>({roomId:e.getStateKey(),order:e.getContent().order})).filter(e=>e.roomId);return t.sort((e,t)=>{if(e.order&&!t.order)return-1;if(!e.order&&t.order)return 1;if(e.order||t.order)return $w(e.order,t.order);var n,r,i,o,s=this.client.getRoom(e.roomId),a=this.client.getRoom(t.roomId);if(!s||!a)return $w(e.roomId,t.roomId);var c=null!==(n=null===(r=s.currentState.getStateEvents(Z.RoomCreate,""))||void 0===r?void 0:r.getTs())&&void 0!==n?n:0,l=null!==(i=null===(o=a.currentState.getStateEvents(Z.RoomCreate,""))||void 0===o?void 0:o.getTs())&&void 0!==i?i:0;return c===l?$w(e.roomId,t.roomId):c-l}),t}getParentRoom(){var e=this.room.currentState.getStateEvents(Z.SpaceParent)[0];if(!e)throw new Error("Expected to have a parent in a non-top level space");var t=e.getStateKey();if(!t)throw new Error("No state key found for parent");var n=this.client.getRoom(t);if(!n)throw new Error("Unable to locate room for parent");return n}getOrder(){if(this.isTopLevel)return-1;var e=this.getParentRoom().currentState.getStateEvents(Z.SpaceChild);return this.getOrderedChildren(e).findIndex(e=>e.roomId===this.roomId)}setOrder(e){var t=this;return H(function*(){var n;if(t.isTopLevel)throw new Error("Cannot set order of top level spaces currently");var r=t.getParentRoom(),i=r.currentState.getStateEvents(Z.SpaceChild),o=t.getOrderedChildren(i);e=Math.max(Math.min(e,o.length-1),0);var s=t.getOrder()e.isActive)}listAllFiles(){var e;return(null!==(e=this.room.currentState.getStateEvents(eu.name))&&void 0!==e?e:[]).map(e=>new H$(this.client,e,this))}}var HJ=function(e){return e.Recent="recent",e.Rank="rank",e}({}),wh=function(e){return e.LocalStreamsChanged="local_streams_changed",e}({});class E0e extends Ln{constructor(e){super(),this.client=e,L(this,"audioInput",void 0),L(this,"audioSettings",void 0),L(this,"videoInput",void 0),L(this,"localUserMediaStream",void 0),L(this,"userMediaStreams",[]),L(this,"screensharingStreams",[]),L(this,"getMediaStreamPromise",void 0)}restoreMediaSettings(e,t){this.audioInput=e,this.videoInput=t}setAudioInput(e){var t=this;return H(function*(){M.info("MediaHandler setAudioInput() running (deviceId=".concat(e,")")),t.audioInput!==e&&(t.audioInput=e,yield t.updateLocalUsermediaStreams())})()}setAudioSettings(e){var t=this;return H(function*(){M.info("MediaHandler setAudioSettings() running (opts=".concat(JSON.stringify(e),")")),t.audioSettings=Object.assign({},e),yield t.updateLocalUsermediaStreams()})()}setVideoInput(e){var t=this;return H(function*(){M.info("MediaHandler setVideoInput() running (deviceId=".concat(e,")")),t.videoInput!==e&&(t.videoInput=e,yield t.updateLocalUsermediaStreams())})()}setMediaInputs(e,t){var n=this;return H(function*(){M.log("MediaHandler setMediaInputs() running (audioInput: ".concat(e," videoInput: ").concat(t,")")),n.audioInput=e,n.videoInput=t,yield n.updateLocalUsermediaStreams()})()}updateLocalUsermediaStreams(){var e=this;return H(function*(){if(0!==e.userMediaStreams.length){var t=new Map;for(var n of e.client.callEventHandler.calls.values())t.set(n.callId,{audio:n.hasLocalUserMediaAudioTrack,video:n.hasLocalUserMediaVideoTrack});for(var r of e.userMediaStreams)for(var i of(M.log("MediaHandler updateLocalUsermediaStreams() stopping all tracks (streamId=".concat(r.id,")")),r.getTracks()))i.stop();for(var o of(e.userMediaStreams=[],e.localUserMediaStream=void 0,e.client.callEventHandler.calls.values()))if(!o.callHasEnded()&&t.has(o.callId)){var{audio:s,video:a}=t.get(o.callId);M.log("MediaHandler updateLocalUsermediaStreams() calling getUserMediaStream() (callId=".concat(o.callId,")"));var c=yield e.getUserMediaStream(s,a);o.callHasEnded()||(yield o.updateLocalUsermediaStream(c))}for(var l of e.client.groupCallEventHandler.groupCalls.values())if(l.localCallFeed){M.log("MediaHandler updateLocalUsermediaStreams() calling getUserMediaStream() (groupCallId=".concat(l.groupCallId,")"));var u=yield e.getUserMediaStream(!0,l.type===z3.Video);l.state!==ir.Ended&&(yield l.updateLocalUsermediaStream(u))}e.emit(wh.LocalStreamsChanged)}})()}hasAudioDevice(){return H(function*(){try{return(yield navigator.mediaDevices.enumerateDevices()).filter(e=>"audioinput"===e.kind).length>0}catch(e){return M.log("MediaHandler hasAudioDevice() calling navigator.mediaDevices.enumerateDevices with error",e),!1}})()}hasVideoDevice(){return H(function*(){try{return(yield navigator.mediaDevices.enumerateDevices()).filter(e=>"videoinput"===e.kind).length>0}catch(e){return M.log("MediaHandler hasVideoDevice() calling navigator.mediaDevices.enumerateDevices with error",e),!1}})()}getUserMediaStream(e,t){var n=arguments,r=this;return H(function*(){var i=!(n.length>2&&void 0!==n[2])||n[2];return r.getMediaStreamPromise?r.getMediaStreamPromise=r.getMediaStreamPromise.then(()=>r.getUserMediaStreamInternal(e,t,i)):r.getMediaStreamPromise=r.getUserMediaStreamInternal(e,t,i),r.getMediaStreamPromise})()}getUserMediaStreamInternal(e,t,n){var r=this;return H(function*(){var i,o,s,a=e&&(yield r.hasAudioDevice()),c=t&&(yield r.hasVideoDevice()),l=!0;r.localUserMediaStream?(a!==r.localUserMediaStream.getAudioTracks().length>0&&(l=!1),c!==r.localUserMediaStream.getVideoTracks().length>0&&(l=!1),a&&(null===(o=r.localUserMediaStream.getAudioTracks()[0])||void 0===o||null===(o=o.getSettings())||void 0===o?void 0:o.deviceId)!==r.audioInput&&(l=!1),c&&(null===(s=r.localUserMediaStream.getVideoTracks()[0])||void 0===s||null===(s=s.getSettings())||void 0===s?void 0:s.deviceId)!==r.videoInput&&(l=!1)):l=!1;if(l){var u;if(i=r.localUserMediaStream.clone(),M.log("MediaHandler getUserMediaStreamInternal() cloning (oldStreamId=".concat(null===(u=r.localUserMediaStream)||void 0===u?void 0:u.id," newStreamId=").concat(i.id," shouldRequestAudio=").concat(a," shouldRequestVideo=").concat(c,")")),!a)for(var d of i.getAudioTracks())i.removeTrack(d);if(!c)for(var h of i.getVideoTracks())i.removeTrack(h)}else{var p=r.getUserMediaContraints(a,c);for(var f of(i=yield navigator.mediaDevices.getUserMedia(p),M.log("MediaHandler getUserMediaStreamInternal() calling getUserMediaStream (streamId=".concat(i.id,", shouldRequestAudio=").concat(a,", shouldRequestVideo=").concat(c,", constraints=").concat(JSON.stringify(p),")")),i.getTracks())){var m=f.getSettings();"audio"===f.kind?r.audioInput=m.deviceId:"video"===f.kind&&(r.videoInput=m.deviceId)}n&&(r.localUserMediaStream=i)}return n&&r.userMediaStreams.push(i),r.emit(wh.LocalStreamsChanged),i})()}stopUserMediaStream(e){for(var t of(M.log("MediaHandler stopUserMediaStream() stopping (streamId=".concat(e.id,")")),e.getTracks()))t.stop();var n=this.userMediaStreams.indexOf(e);if(-1!==n&&(M.debug("MediaHandler stopUserMediaStream() splicing usermedia stream out stream array (streamId=".concat(e.id,")"),e.id),this.userMediaStreams.splice(n,1)),this.emit(wh.LocalStreamsChanged),this.localUserMediaStream===e)this.localUserMediaStream=void 0;else for(var r of e.getTracks()){var i;if(null!==(i=this.localUserMediaStream)&&void 0!==i&&i.getTrackById(r.id)){this.stopUserMediaStream(this.localUserMediaStream);break}}}getScreensharingStream(){var e=arguments,t=this;return H(function*(){var n,r=e.length>0&&void 0!==e[0]?e[0]:{},i=!(e.length>1&&void 0!==e[1])||e[1];if(0===t.screensharingStreams.length){var o=t.getScreenshareContraints(r);r.desktopCapturerSourceId?(M.debug("MediaHandler getScreensharingStream() calling getUserMedia() (opts=".concat(JSON.stringify(r),")")),n=yield navigator.mediaDevices.getUserMedia(o)):(M.debug("MediaHandler getScreensharingStream() calling getDisplayMedia() (opts=".concat(JSON.stringify(r),")")),n=yield navigator.mediaDevices.getDisplayMedia(o))}else{var s=t.screensharingStreams[t.screensharingStreams.length-1];M.log("MediaHandler getScreensharingStream() cloning (streamId=".concat(s.id,")")),n=s.clone()}return i&&t.screensharingStreams.push(n),t.emit(wh.LocalStreamsChanged),n})()}stopScreensharingStream(e){for(var t of(M.debug("MediaHandler stopScreensharingStream() stopping stream (streamId=".concat(e.id,")")),e.getTracks()))t.stop();var n=this.screensharingStreams.indexOf(e);-1!==n&&(M.debug("MediaHandler stopScreensharingStream() splicing stream out (streamId=".concat(e.id,")")),this.screensharingStreams.splice(n,1)),this.emit(wh.LocalStreamsChanged)}stopAllStreams(){for(var e of this.userMediaStreams)for(var t of(M.log("MediaHandler stopAllStreams() stopping (streamId=".concat(e.id,")")),e.getTracks()))t.stop();for(var n of this.screensharingStreams)for(var r of n.getTracks())r.stop();this.userMediaStreams=[],this.screensharingStreams=[],this.localUserMediaStream=void 0,this.emit(wh.LocalStreamsChanged)}getUserMediaContraints(e,t){var n=!!navigator.webkitGetUserMedia;return{audio:!!e&&{deviceId:this.audioInput?{ideal:this.audioInput}:void 0,autoGainControl:this.audioSettings?{ideal:this.audioSettings.autoGainControl}:void 0,echoCancellation:this.audioSettings?{ideal:this.audioSettings.echoCancellation}:void 0,noiseSuppression:this.audioSettings?{ideal:this.audioSettings.noiseSuppression}:void 0},video:!!t&&{deviceId:this.videoInput?{ideal:this.videoInput}:void 0,width:n?{exact:640}:{ideal:640},height:n?{exact:360}:{ideal:360}}}}getScreenshareContraints(e){var{desktopCapturerSourceId:t,audio:n}=e;return t?{audio:n??!1,video:{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t}}}:{audio:n??!1,video:!0}}}var q$=function(e){return e.RequestFinished="FINISHED",e.Complete="COMPLETE",e}({}),u_=function(e){return e.PreProcess="ExtState.PreProcess",e.PostProcess="ExtState.PostProcess",e}({}),aA=function(e){return e.RoomData="SlidingSync.RoomData",e.Lifecycle="SlidingSync.Lifecycle",e}({}),C0e=3;class T0e{constructor(e){this.crypto=e}name(){return"e2ee"}when(){return u_.PreProcess}onRequest(e){var t=this;return H(function*(){return e&&(M.log("ExtensionE2EE: invalidating all device lists due to missing 'pos'"),yield t.crypto.markAllTrackedUsersAsDirty()),{enabled:!0}})()}onResponse(e){var t=this;return H(function*(){e.device_lists&&(yield t.crypto.processDeviceLists(e.device_lists)),yield t.crypto.processKeyCounts(e.device_one_time_keys_count,e.device_unused_fallback_key_types||e["org.matrix.msc2732.device_unused_fallback_key_types"]),t.crypto.onSyncCompleted({})})()}}class R0e{constructor(e,t){this.client=e,this.cryptoCallbacks=t,L(this,"nextBatch",null)}name(){return"to_device"}when(){return u_.PreProcess}onRequest(e){var t=this;return H(function*(){return{since:null!==t.nextBatch?t.nextBatch:void 0,limit:100,enabled:!0}})()}onResponse(e){var t=this;return H(function*(){var n=e.events||[];MJ(t.cryptoCallbacks?yield t.cryptoCallbacks.preprocessToDeviceMessages(n):n.map(e=>({message:e,encryptionInfo:null})),t.client),t.nextBatch=e.next_batch})()}}class I0e{constructor(e){this.client=e}name(){return"account_data"}when(){return u_.PostProcess}onRequest(e){return H(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return H(function*(){for(var n in e.global&&e.global.length>0&&t.processGlobalAccountData(e.global),e.rooms){var r=wg(t.client,n,e.rooms[n]),i=t.client.getRoom(n);i?(i.addAccountData(r),r.forEach(e=>{t.client.emit(Pe.Event,e)})):M.warn("got account data for room but room doesn't exist on client:",n)}})()}processGlobalAccountData(e){var t=wg(this.client,void 0,e),n=t.reduce((e,t)=>(e[t.getType()]=this.client.store.getAccountData(t.getType()),e),{});this.client.store.storeAccountDataEvents(t),t.forEach(e=>{if(e.getType()===Z.PushRules){var t=e.getContent();this.client.setPushRules(t)}var r=n[e.getType()];return this.client.emit(Pe.AccountData,e,r),e})}}class k0e{constructor(e){this.client=e}name(){return"typing"}when(){return u_.PostProcess}onRequest(e){return H(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return H(function*(){if(null!=e&&e.rooms)for(var n in e.rooms)VJ(t.client,n,[e.rooms[n]])})()}}class x0e{constructor(e){this.client=e}name(){return"receipts"}when(){return u_.PostProcess}onRequest(e){return H(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return H(function*(){if(null!=e&&e.rooms)for(var n in e.rooms)VJ(t.client,n,[e.rooms[n]])})()}}class BJ{constructor(e,t,n,r){this.slidingSync=e,this.client=t,L(this,"opts",void 0),L(this,"syncOpts",void 0),L(this,"syncState",null),L(this,"syncStateData",void 0),L(this,"lastPos",null),L(this,"failCount",0),L(this,"notifEvents",[]),this.opts=PJ(n),this.syncOpts=LJ(r),t.getNotifTimelineSet()&&t.reEmitter.reEmit(t.getNotifTimelineSet(),[ke.Timeline,ke.TimelineReset]),this.slidingSync.on(aA.Lifecycle,this.onLifecycle.bind(this)),this.slidingSync.on(aA.RoomData,this.onRoomData.bind(this));var i=[new R0e(this.client,this.syncOpts.cryptoCallbacks),new I0e(this.client),new k0e(this.client),new x0e(this.client)];this.syncOpts.cryptoCallbacks&&i.push(new T0e(this.syncOpts.cryptoCallbacks)),i.forEach(e=>{this.slidingSync.registerExtension(e)})}onRoomData(e,t){var n=this;return H(function*(){var r=n.client.store.getRoom(e);if(!r){if(!t.initial)return void n.syncOpts.logger.debug("initial flag not set but no stored room exists for room ",e,t);r=OJ(n.client,e,n.opts)}yield n.processRoomData(n.client,r,t)})()}onLifecycle(e,t,n){switch(n&&this.syncOpts.logger.debug("onLifecycle",e,n),e){case q$.Complete:if(this.purgeNotifications(),!t)break;this.lastPos||this.updateSyncState(qt.Prepared,{oldSyncToken:void 0,nextSyncToken:t.pos,catchingUp:!1,fromCache:!1}),this.updateSyncState(qt.Syncing,{oldSyncToken:this.lastPos,nextSyncToken:t.pos,catchingUp:!1,fromCache:!1}),this.lastPos=t.pos;break;case q$.RequestFinished:if(n){if(this.failCount+=1,this.updateSyncState(this.failCount>C0e?qt.Error:qt.Reconnecting,{error:new or(n)}),this.shouldAbortSync(new or(n)))return}else this.failCount=0,this.syncOpts.logger.debug("SlidingSyncState.RequestFinished with ".concat(Object.keys(t?.rooms||[]).length," rooms"))}}syncLeftRooms(){return H(function*(){return[]})()}peek(e){return H(function*(){return null})()}stopPeeking(){}setPresence(e){}getSyncState(){return this.syncState}getSyncStateData(){var e;return null!==(e=this.syncStateData)&&void 0!==e?e:null}createRoom(e){var{timelineSupport:t}=this.client,n=new G3(e,this.client,this.client.getUserId(),{lazyLoadMembers:this.opts.lazyLoadMembers,pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:t});return this.client.reEmitter.reEmit(n,[ke.Name,ke.Redaction,ke.RedactionCancelled,ke.Receipt,ke.Tags,ke.LocalEchoUpdated,ke.AccountData,ke.MyMembership,ke.Timeline,ke.TimelineReset]),this.registerStateListeners(n),n}registerStateListeners(e){this.client.reEmitter.reEmit(e.currentState,[pt.Events,pt.Members,pt.NewMember,pt.Update]),e.currentState.on(pt.NewMember,(e,t,n)=>{var r;n.user=null!==(r=this.client.getUser(n.userId))&&void 0!==r?r:void 0,this.client.reEmitter.reEmit(n,[js.Name,js.Typing,js.PowerLevel,js.Membership])})}shouldAbortSync(e){return"M_UNKNOWN_TOKEN"===e.errcode&&(this.syncOpts.logger.warn("Token no longer valid - assuming logout"),this.stop(),this.updateSyncState(qt.Error,{error:e}),!0)}processRoomData(e,t,n){var r=this;return H(function*(){n=A0e(e,t.roomId,n);var i=wg(r.client,t.roomId,n.required_state),o=wg(r.client,t.roomId,n.timeline,!1),s=[];if(n.limited||n.initial){var a=new Set;t.getLiveTimeline().getEvents().forEach(e=>{a.add(e.getId())});for(var c=[],l=[],u=!1,d=o.length-1;d>=0;d--){var h=o[d];a.has(h.getId())?u=!0:u?c.push(h):l.unshift(h)}o=l,c.length>0&&t.addEventsToTimeline(c,!0,!1,t.getLiveTimeline(),n.prev_batch)}var p,f=t.hasEncryptionStateEvent();if(null!=n.notification_count&&t.setUnreadNotificationCount(Xt.Total,n.notification_count),null!=n.highlight_count&&(!f||f&&t.getUnreadNotificationCount(Xt.Highlight)<=0)&&t.setUnreadNotificationCount(Xt.Highlight,n.highlight_count),n.bump_stamp&&t.setBumpStamp(n.bump_stamp),Number.isInteger(n.invited_count)&&t.currentState.setInvitedMemberCount(n.invited_count),Number.isInteger(n.joined_count)&&t.currentState.setJoinedMemberCount(n.joined_count),n.invite_state){var m=wg(r.client,t.roomId,n.invite_state);return yield r.injectRoomEvents(t,m),n.initial&&(t.recalculate(),r.client.store.storeRoom(t),r.client.emit(Pe.Room,t)),void m.forEach(e=>{r.client.emit(Pe.Event,e)})}n.limited&&t.getLiveTimeline().setPaginationToken(null!==(p=n.prev_batch)&&void 0!==p?p:null,Me.BACKWARDS);yield r.injectRoomEvents(t,i,o,n.num_live),t.addEphemeralEvents(s),t.updateMyMembership(He.Join),t.setMSC4186SummaryData(n.heroes,n.joined_count,n.invited_count),t.recalculate(),n.initial&&(e.store.storeRoom(t),e.emit(Pe.Room,t)),r.addNotifications(o);var g,v=(g=H(function*(n){e.emit(Pe.Event,n),n.isState()&&n.getType()==Z.RoomEncryption&&r.syncOpts.cryptoCallbacks&&(yield r.syncOpts.cryptoCallbacks.onCryptoEvent(t,n))}),function(e){return g.apply(this,arguments)});yield ig(i,v),yield ig(o,v),s.forEach(function(t){e.emit(Pe.Event,t)}),t.decryptCriticalEvents()})()}injectRoomEvents(e,t){var n=arguments,r=this;return H(function*(){var i=n.length>2&&void 0!==n[2]?n[2]:[],o=n.length>3&&void 0!==n[3]?n[3]:0,s=e.getLiveTimeline(),a=0==s.getEvents().length;if(a){for(var c of t)r.client.getPushActionsForEvent(c);s.initialiseState(t)}a||(e.oldState.setStateEvents(t),e.currentState.setStateEvents(t));var l=[];o>0&&(l=i.slice(-1*o),i=i.slice(0,-1*l.length)),yield e.addLiveEvents(i,{fromCache:!0,addToState:!1}),l.length>0&&(yield e.addLiveEvents(l,{fromCache:!1,addToState:!1})),e.recalculate(),r.resolveInvites(e)})()}resolveInvites(e){if(e&&this.opts.resolveInvitesToProfiles){var t=this.client;e.getMembersWithMembership(He.Invite).forEach(function(n){if(!n.requestedProfileInfo){n.requestedProfileInfo=!0;var r=t.getUser(n.userId);(r?Promise.resolve({avatar_url:r.avatarUrl,displayname:r.displayName}):t.getProfileInfo(n.userId)).then(function(t){var r=n.events.member;r.getContent().membership===He.Invite&&(r.getContent().avatar_url=t.avatar_url,r.getContent().displayname=t.displayname,n.setMembershipEvent(r,e.currentState))},function(e){})}})}}retryImmediately(){return!0}sync(){var e=this;return H(function*(){for(e.syncOpts.logger.debug("Sliding sync init loop");!e.client.isGuest();)try{e.syncOpts.logger.debug("Getting push rules...");var t=yield e.client.getPushRules();e.syncOpts.logger.debug("Got push rules"),e.client.pushRules=t;break}catch(t){if(e.syncOpts.logger.error("Getting push rules failed",t),e.shouldAbortSync(t))return}yield e.slidingSync.start()})()}stop(){this.syncOpts.logger.debug("SyncApi.stop"),this.slidingSync.stop()}updateSyncState(e,t){var n=this.syncState;this.syncState=e,this.syncStateData=t,this.client.emit(Pe.Sync,this.syncState,n,t)}addNotifications(e){if(this.client.getNotifTimelineSet())for(var t of e){var n=this.client.getPushActionsForEvent(t);n&&n.notify&&n.tweaks&&n.tweaks.highlight&&this.notifEvents.push(t)}}purgeNotifications(){this.notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),this.notifEvents.forEach(e=>{var t;null===(t=this.client.getNotifTimelineSet())||void 0===t||t.addLiveEvent(e,{addToState:!1})}),this.notifEvents=[]}}function A0e(e,t,n){if(!n.name)return n;for(var r of n.required_state)if(r.type===Z.RoomName&&""===r.state_key)return r.content={name:n.name},n;return n.required_state.push({event_id:"$fake-sliding-sync-name-event-"+t,state_key:"",type:Z.RoomName,content:{name:n.name},sender:e.getUserId(),origin_server_ts:(new Date).getTime()}),n}function wg(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=e.getEventMapper({decrypt:r});return n.map(function(e){return e.room_id=t,i(e)})}function VJ(e,t,n){var r=wg(e,t,n),i=e.getRoom(t);i?(i.addEphemeralEvents(r),r.forEach(t=>{e.emit(Pe.Event,t)})):M.warn("got ephemeral events for room but room doesn't exist on client:",t)}var Q7=new xr("m.beacon_info","org.matrix.msc3672.beacon_info"),cA=new xr("m.beacon","org.matrix.msc3672.beacon");class ev{static RETRY_BACKOFF_RATELIMIT(e,t,n){return q7(n,t,!1)}static QUEUE_MESSAGES(e){return e.getType()===Z.RoomMessage||e.hasAssociation()?"message":null}constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ev.RETRY_BACKOFF_RATELIMIT,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ev.QUEUE_MESSAGES;this.retryAlgorithm=e,this.queueAlgorithm=t,L(this,"queues",{}),L(this,"activeQueues",[]),L(this,"procFn",null),L(this,"processQueue",e=>{var t=this.peekNextEvent(e);t?(this.queues[e].length,Promise.resolve().then(()=>this.procFn(t.event)).then(n=>{this.removeNextEvent(e),t.event.getId(),t.resolvers.resolve(n),this.processQueue(e)},n=>{t.attempts+=1;var r=this.retryAlgorithm(t.event,t.attempts,n);t.attempts,t.event.getId(),-1===r?(M.info("Queue '%s' giving up on event %s",e,t.event.getId()),this.clearQueue(e,n)):setTimeout(this.processQueue,r,e)})):this.disableQueue(e)})}getQueueForEvent(e){var t=this.queueAlgorithm(e);return t&&this.queues[t]?this.queues[t].map(function(e){return e.event}):null}removeEventFromQueue(e){var t=this.queueAlgorithm(e);if(!t||!this.queues[t])return!1;var n=!1;return JE(this.queues[t],t=>t.event.getId()===e.getId()&&(n=!0,!0)),n}setProcessFunction(e){this.procFn=e,this.startProcessingQueues()}queueEvent(e){var t=this.queueAlgorithm(e);if(!t)return null;this.queues[t]||(this.queues[t]=[]);var n=Promise.withResolvers();return this.queues[t].push({event:e,resolvers:n,attempts:0}),e.getId(),this.startProcessingQueues(),n.promise}startProcessingQueues(){this.procFn&&Object.keys(this.queues).filter(e=>-1===this.activeQueues.indexOf(e)&&this.queues[e].length>0).forEach(e=>{this.activeQueues.push(e),this.processQueue(e)})}disableQueue(e){var t=this.activeQueues.indexOf(e);t>=0&&this.activeQueues.splice(t,1),M.info("Stopping queue '%s' as it is now empty",e)}clearQueue(e,t){M.info("clearing queue '%s'",e);for(var n;n=this.removeNextEvent(e);)n.resolvers.reject(t);this.disableQueue(e)}peekNextEvent(e){var t=this.queues[e];if(Array.isArray(t))return t[0]}removeNextEvent(e){var t=this.queues[e];if(Array.isArray(t))return t.shift()}}var G$=20;class P0e{constructor(e,t){var n=this;this.client=e,this.logger=t,L(this,"sending",!1),L(this,"running",!0),L(this,"retryTimeout",null),L(this,"retryAttempts",0),L(this,"sendQueue",H(function*(){if(null!==n.retryTimeout&&clearTimeout(n.retryTimeout),n.retryTimeout=null,!n.sending&&n.running){var e;n.logger.debug("Attempting to send queued to-device messages"),n.sending=!0;try{for(;n.running&&null!==(e=yield n.client.store.getOldestToDeviceBatch());)yield n.sendBatch(e),yield n.client.store.removeToDeviceBatch(e.id),n.retryAttempts=0;if(!n.running)return;n.logger.debug("All queued to-device messages sent")}catch(r){++n.retryAttempts;var t=ev.RETRY_BACKOFF_RATELIMIT(null,n.retryAttempts,r);if(-1===t)return void(4===Math.floor(r.httpStatus/100)?(n.logger.error("Fatal error when sending to-device message - dropping to-device batch!",r),yield n.client.store.removeToDeviceBatch(e.id)):n.logger.info("Automatic retry limit reached for to-device messages."));n.logger.info("Failed to send batch of to-device messages. Will retry in ".concat(t,"ms"),r),n.retryTimeout=setTimeout(n.sendQueue,t)}finally{n.sending=!1}}})),L(this,"onResumedSync",(e,t)=>{e===qt.Syncing&&t!==qt.Syncing&&(this.logger.info("Resuming queue after resumed sync"),this.sendQueue())})}start(){this.running=!0,this.sendQueue(),this.client.on(Pe.Sync,this.onResumedSync)}stop(){this.running=!1,null!==this.retryTimeout&&clearTimeout(this.retryTimeout),this.retryTimeout=null,this.client.removeListener(Pe.Sync,this.onResumedSync)}queueBatch(e){var t=this;return H(function*(){for(var n=[],r=0;r"".concat(e.userId,"/").concat(e.deviceId," (msgid ").concat(e.payload[V3],")"));t.logger.info("Enqueuing batch of to-device messages. type=".concat(e.eventType," txnid=").concat(i.txnId),o)}yield t.client.store.saveToDeviceBatches(n),t.sendQueue()})()}sendBatch(e){var t=this;return H(function*(){var n=new pu(()=>new Map);for(var r of e.batch)n.getOrCreate(r.userId).set(r.deviceId,r.payload);t.logger.info("Sending batch of ".concat(e.batch.length," to-device messages with ID ").concat(e.id," and txnId ").concat(e.txnId)),yield t.client.sendToDevice(e.eventType,n,e.txnId)})()}}var Rk=new Xs.UnstableValue("m.policies","org.matrix.msc3847.policies"),R2=new Xs.UnstableValue("m.ignore.invites","org.matrix.msc3847.ignore.invites"),K$=function(e){return e.Ban="m.ban",e}({}),Eg=function(e){return e.User="m.policy.user",e.Room="m.policy.room",e.Server="m.policy.server",e}({}),z$={[Eg.User]:Z.PolicyRuleUser,[Eg.Room]:Z.PolicyRuleRoom,[Eg.Server]:Z.PolicyRuleServer};class L0e{constructor(e){this.client=e}addRule(e,t,n){var r=this;return H(function*(){var i=yield r.getOrCreateTargetRoom();return(yield r.client.sendStateEvent(i.roomId,z$[e],{entity:t,reason:n,recommendation:K$.Ban})).event_id})()}removeRule(e){var t=this;return H(function*(){yield t.client.redactEvent(e.getRoomId(),e.getId())})()}addSource(e){var t=this;return H(function*(){yield t.client.joinRoom(e);var n=(yield t.getOrCreateSourceRooms()).map(e=>e.roomId);return!n.includes(e)&&(n.push(e),yield t.withIgnoreInvitesPolicies(e=>{e.sources=n}),!0)})()}getRuleForInvite(e){var t=this;return H(function*(){var{sender:n,roomId:r}=e,i=yield t.getOrCreateSourceRooms(),o=n.split(":")[1],s=r.split(":")[1];for(var a of i){var c=a.getUnfilteredTimelineSet().getLiveTimeline().getState(Me.FORWARDS);for(var{scope:l,entities:u}of[{scope:Eg.Room,entities:[r]},{scope:Eg.User,entities:[n]},{scope:Eg.Server,entities:[o,s]}]){var d=c.getStateEvents(z$[l]);for(var h of d){var p=h.getContent();if(p?.recommendation==K$.Ban){var f=p?.entity;if(f){var m=void 0;try{m=new RegExp(UX(f))}catch{continue}for(var g of u)if(g&&m.test(g))return h}}}}}return null})()}getOrCreateTargetRoom(){var e=this;return H(function*(){var t=e.getIgnoreInvitesPolicies().target;if("string"!=typeof t&&(t=null),t){var n=e.client.getRoom(t);if(n)return n;t=null}return t=(yield e.client.createRoom({name:"Individual Policy Room",preset:Y3.PrivateChat})).room_id,yield e.withIgnoreInvitesPolicies(e=>{e.target=t}),e.client.getRoom(t)})()}getOrCreateSourceRooms(){var e=this;return H(function*(){var t=e.getIgnoreInvitesPolicies().sources,n=!1;Array.isArray(t)||(n=!0,t=[]);var r=t.filter(e=>"string"==typeof e).map(t=>e.client.getRoom(t)).filter(e=>!!e);(r.length!=t.length&&(n=!0),0==r.length)&&(n=!0,r=[yield e.getOrCreateTargetRoom()]);return n&&(yield e.withIgnoreInvitesPolicies(e=>{e.sources=t})),r})()}getIgnoreInvitesPolicies(){return this.getPoliciesAndIgnoreInvitesPolicies().ignoreInvitesPolicies}withIgnoreInvitesPolicies(e){var t=this;return H(function*(){var{policies:n,ignoreInvitesPolicies:r}=t.getPoliciesAndIgnoreInvitesPolicies();e(r),n[R2.name]=r,yield t.client.setAccountData(Rk.name,n)})()}getPoliciesAndIgnoreInvitesPolicies(){var e={};for(var t of[Rk.name,Rk.altName]){var n;if(t){var r=null===(n=this.client.getAccountData(t))||void 0===n?void 0:n.getContent();if(r){e=r;break}}}var i={},o=!1;for(var s of[R2.name,R2.altName])if(s){var a=e[s];if(a&&"object"==typeof a){i=a,o=!0;break}}return o||(e[R2.name]=i),{policies:e,ignoreInvitesPolicies:i}}}var Ik="matrix-js-sdk";function O0e(e){if(e.length>=255)throw new TypeError("Alphabet too long");const t=new Uint8Array(256);for(let e=0;e>>0,l=new Uint8Array(c);for(;o255)return;let i=t[r];if(255===i)return;let s=0;for(let e=c-1;(0!==i||s>>0,l[e]=i%256>>>0,i=i/256>>>0;if(0!==i)throw new Error("Non-zero carry");a=s,o++}let u=c-a;for(;u!==c&&0===l[u];)u++;const d=new Uint8Array(s+(c-u));let h=s;for(;u!==c;)d[h++]=l[u++];return d}return{encode:function(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(0===t.length)return"";let i=0,s=0,a=0;const c=t.length;for(;a!==c&&0===t[a];)a++,i++;const l=(c-a)*o+1>>>0,u=new Uint8Array(l);for(;a!==c;){let e=t[a],r=0;for(let t=l-1;(0!==e||r>>0,u[t]=e%n>>>0,e=e/n>>>0;if(0!==e)throw new Error("Non-zero carry");s=r,a++}let d=l-s;for(;d!==l&&0===u[d];)d++;let h=r.repeat(i);for(;d3&&void 0!==arguments[3]&&arguments[3];this.crossSigningVerified=e,this.crossSigningVerifiedBefore=t,this.tofu=n,L(this,"needsUserApproval",void 0),this.needsUserApproval=r}isVerified(){return this.isCrossSigningVerified()}isCrossSigningVerified(){return this.crossSigningVerified}wasCrossSigningVerified(){return this.crossSigningVerifiedBefore}isTofu(){return this.tofu}}class Wot{constructor(e){var t,n,r,i,o;L(this,"signedByOwner",void 0),L(this,"crossSigningVerified",void 0),L(this,"tofu",void 0),L(this,"localVerified",void 0),L(this,"trustCrossSignedDevices",void 0),this.signedByOwner=null!==(t=e.signedByOwner)&&void 0!==t&&t,this.crossSigningVerified=null!==(n=e.crossSigningVerified)&&void 0!==n&&n,this.tofu=null!==(r=e.tofu)&&void 0!==r&&r,this.localVerified=null!==(i=e.localVerified)&&void 0!==i&&i,this.trustCrossSignedDevices=null!==(o=e.trustCrossSignedDevices)&&void 0!==o&&o}isVerified(){return this.localVerified||this.trustCrossSignedDevices&&this.crossSigningVerified}}var Yot=function(e){return e.Fetch="fetch",e.LoadKeys="load_keys",e}({}),Xot=function(e){return e.Master="master",e.SelfSigning="self_signing",e.UserSigning="user_signing",e}({}),Jot=function(e){return e[e.NONE=0]="NONE",e[e.GREY=1]="GREY",e[e.RED=2]="RED",e}({}),Qot=function(e){return e[e.UNKNOWN=0]="UNKNOWN",e[e.UNVERIFIED_IDENTITY=1]="UNVERIFIED_IDENTITY",e[e.UNSIGNED_DEVICE=2]="UNSIGNED_DEVICE",e[e.UNKNOWN_DEVICE=3]="UNKNOWN_DEVICE",e[e.AUTHENTICITY_NOT_GUARANTEED=4]="AUTHENTICITY_NOT_GUARANTEED",e[e.MISMATCHED_SENDER_KEY=5]="MISMATCHED_SENDER_KEY",e[e.SENT_IN_CLEAR=6]="SENT_IN_CLEAR",e[e.VERIFICATION_VIOLATION=7]="VERIFICATION_VIOLATION",e[e.MISMATCHED_SENDER=8]="MISMATCHED_SENDER",e}({}),U0e=new Uint8Array(8);function qJ(e,t){return lA.apply(this,arguments)}function lA(){return(lA=H(function*(e,t){var n=yield globalThis.crypto.subtle.importKey("raw",e,{name:"HKDF"},!1,["deriveBits"]),r=yield globalThis.crypto.subtle.deriveBits({name:"HKDF",salt:U0e,info:(new TextEncoder).encode(t),hash:"SHA-256"},n,512),i=r.slice(0,32),o=r.slice(32),s=globalThis.crypto.subtle.importKey("raw",i,{name:"AES-CTR"},!1,["encrypt","decrypt"]),a=globalThis.crypto.subtle.importKey("raw",o,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]);return Promise.all([s,a])})).apply(this,arguments)}function GJ(e,t,n,r){return uA.apply(this,arguments)}function uA(){return(uA=H(function*(e,t,n,r){var i;r?i=Nh(r):(i=new Uint8Array(16),globalThis.crypto.getRandomValues(i),i[8]&=127);var[o,s]=yield qJ(t,n),a=(new TextEncoder).encode(e),c=yield globalThis.crypto.subtle.encrypt({name:"AES-CTR",counter:i,length:64},o,a),l=yield globalThis.crypto.subtle.sign({name:"HMAC"},s,c);return{iv:wy(i),ciphertext:wy(new Uint8Array(c)),mac:wy(new Uint8Array(l))}})).apply(this,arguments)}function j0e(e,t,n){return dA.apply(this,arguments)}function dA(){return(dA=H(function*(e,t,n){var[r,i]=yield qJ(t,n),o=Nh(e.ciphertext);if(!(yield globalThis.crypto.subtle.verify({name:"HMAC"},i,Nh(e.mac),o)))throw new Error("Error decrypting secret ".concat(n,": bad MAC"));var s=yield globalThis.crypto.subtle.decrypt({name:"AES-CTR",counter:Nh(e.iv),length:64},r,o);return(new TextDecoder).decode(new Uint8Array(s))})).apply(this,arguments)}var Eh="m.secret_storage.v1.aes-hmac-sha2";class KJ{constructor(e,t){this.accountDataAdapter=e,this.callbacks=t}getDefaultKeyId(){var e=this;return H(function*(){var t,n=yield e.accountDataAdapter.getAccountDataFromServer("m.secret_storage.default_key");return n&&null!==(t=n.key)&&void 0!==t?t:null})()}setDefaultKeyId(e){return new Promise((t,n)=>{var r=n=>{if("m.secret_storage.default_key"===n.getType()){var i=n.getContent();(null===e?0===Object.keys(i).length:i.key===e)&&(this.accountDataAdapter.removeListener(Pe.AccountData,r),t())}};this.accountDataAdapter.on(Pe.AccountData,r);var i=null===e?{}:{key:e};this.accountDataAdapter.setAccountData("m.secret_storage.default_key",i).catch(e=>{this.accountDataAdapter.removeListener(Pe.AccountData,r),n(e)})})}addKey(e,t,n){var r=this;return H(function*(){if(e!==Eh)throw new Error("Unknown key algorithm ".concat(e));var i={algorithm:e};t.name&&(i.name=t.name),t.passphrase&&(i.passphrase=t.passphrase);var{iv:o,mac:s}=yield hA(t.key);if(i.iv=o,i.mac=s,!n)do{n=So(32)}while(yield r.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(n)));return yield r.accountDataAdapter.setAccountData("m.secret_storage.key.".concat(n),i),{keyId:n,keyInfo:i}})()}getKey(e){var t=this;return H(function*(){if(e||(e=yield t.getDefaultKeyId()),!e)return null;var n=yield t.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(e));return n?[e,n]:null})()}hasKey(e){var t=this;return H(function*(){return!!(yield t.getKey(e))})()}checkKey(e,t){return H(function*(){if(t.algorithm===Eh){if(t.mac){var{mac:n}=yield hA(e,t.iv);return fA(t.mac)===fA(n)}return!0}throw new Error("Unknown algorithm")})()}store(e,t,n){var r=this;return H(function*(){if(null!==t){var i={};if(!n){var o=yield r.getDefaultKeyId();if(!o)throw new Error("No keys specified and no default key present");n=[o]}if(0===n.length)throw new Error("Zero keys given to encrypt with!");for(var s of n){var a=yield r.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(s));if(!a)throw new Error("Unknown key: "+s);if(a.algorithm===Eh){var c={[s]:a},[,l]=yield r.getSecretStorageKey(c,e);i[s]=yield l.encrypt(t)}else M.warn("unknown algorithm for secret storage key "+s+": "+a.algorithm)}yield r.accountDataAdapter.setAccountData(e,{encrypted:i})}else yield r.accountDataAdapter.setAccountData(e,{})})()}get(e){var t=this;return H(function*(){var n=yield t.accountDataAdapter.getAccountDataFromServer(e);if(n){if(!n.encrypted)throw new Error("Content is not encrypted!");var r={};for(var i of Object.keys(n.encrypted)){var o=yield t.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(i)),s=n.encrypted[i];o?.algorithm===Eh&&s.iv&&s.ciphertext&&s.mac&&(r[i]=o)}if(0===Object.keys(r).length)throw new Error("Could not decrypt ".concat(e," because none of ")+"the keys it is encrypted with are for a supported algorithm");var[a,c]=yield t.getSecretStorageKey(r,e),l=n.encrypted[a];return c.decrypt(l)}})()}isStored(e){var t=this;return H(function*(){var n=yield t.accountDataAdapter.getAccountDataFromServer(e);if(null==n||!n.encrypted)return null;var r={};for(var i of Object.keys(n.encrypted)){var o=yield t.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(i));if(o){var s=n.encrypted[i];o.algorithm===Eh&&s.iv&&s.ciphertext&&s.mac&&(r[i]=o)}}return Object.keys(r).length?r:null})()}getSecretStorageKey(e,t){var n=this;return H(function*(){if(!n.callbacks.getSecretStorageKey)throw new Error("No getSecretStorageKey callback supplied");var r=yield n.callbacks.getSecretStorageKey({keys:e},t);if(!r)throw new Error("getSecretStorageKey callback returned falsey");if(r.length<2)throw new Error("getSecretStorageKey callback returned invalid data");var[i,o]=r;if(!e[i])throw new Error("App returned unknown key from getSecretStorageKey!");if(e[i].algorithm===Eh)return[i,{encrypt:function(e){return GJ(e,o,t)},decrypt:function(e){return j0e(e,o,t)}}];throw new Error("Unknown key type: "+e[i].algorithm)})()}}function fA(e){for(var t=e.length;t>=1&&61==e.charCodeAt(t-1);)t--;return t"livekit"===e.type&&"livekit_service_url"in e,WJ=e=>zJ(e)&&"livekit_alias"in e,YJ=e=>"livekit"===e.type&&"focus_selection"in e,XJ=144e5,H0e=(e,t)=>{var n,r="Malformed session membership event: ";return"string"!=typeof e.device_id&&t.push(r+"device_id must be string"),"string"!=typeof e.call_id&&t.push(r+"call_id must be string"),"string"!=typeof e.application&&t.push(r+"application must be a string"),"string"!=typeof(null===(n=e.focus_active)||void 0===n?void 0:n.type)&&t.push(r+"focus_active.type must be a string"),Array.isArray(e.foci_preferred)||t.push(r+"foci_preferred must be an array"),e.created_ts&&"number"!=typeof e.created_ts&&t.push(r+"created_ts must be number"),e.scope&&"string"!=typeof e.scope&&t.push(r+"scope must be string"),0===t.length};class W${static equal(e,t){return lf(e.membershipData,t.membershipData)}constructor(e,t){this.parentEvent=e,L(this,"membershipData",void 0);var n=[];if(!H0e(t,n))throw Error("unknown CallMembership data. Does not match MSC4143 call.member (".concat(n.join(" & "),") events this could be a legacy membership event: (").concat(t,")"));this.membershipData=t}get sender(){return this.parentEvent.getSender()}get eventId(){return this.parentEvent.getId()}get callId(){return this.membershipData.call_id}get deviceId(){return this.membershipData.device_id}get sessionDescription(){return{application:this.membershipData.application,id:this.membershipData.call_id}}get application(){return this.membershipData.application}get scope(){return this.membershipData.scope}get membershipID(){return this.createdTs().toString()}createdTs(){var e;return null!==(e=this.membershipData.created_ts)&&void 0!==e?e:this.parentEvent.getTs()}getAbsoluteExpiry(){var e;return this.createdTs()+(null!==(e=this.membershipData.expires)&&void 0!==e?e:XJ)}getMsUntilExpiry(){return this.getAbsoluteExpiry()-Date.now()}isExpired(){return this.getMsUntilExpiry()<=0}getPreferredFoci(){return this.membershipData.foci_preferred}getFocusSelection(){var e=this.membershipData.focus_active;if(YJ(e))return e.focus_selection}}var Vw=function(e){return e.Cancel="cancel",e.Restart="restart",e.Send="send",e}({}),Z7=function(e){return e.TooNew="TOO_NEW",e}({});class eO extends Error{constructor(e){super("Crypto store is invalid because ".concat(e,", ")+"please stop the client, delete all data and start the client again"),this.reason=e,this.name="InvalidCryptoStoreError"}}L(eO,"TOO_NEW",Z7.TooNew);class B0e extends Error{constructor(e,t){super(e),this.value=t}}class V0e extends Error{constructor(){super("MatrixClient has been stopped")}}class Vd extends Error{constructor(e,t){super(e),this.clientEndpoint=t,this.name="UnsupportedDelayedEventsEndpointError"}}var Id=function(e){return e.Disconnected="Disconnected",e.Connecting="Connecting",e.ConnectingFailed="ConnectingFailed",e.Connected="Connected",e.Reconnecting="Reconnecting",e.Disconnecting="Disconnecting",e.Stuck="Stuck",e.Unknown="Unknown",e}({}),qw=(e,t,n)=>e.sender===t&&e.deviceId===n;class q0e{constructor(e,t){this.membershipLoopHandler=e,L(this,"logger",void 0),L(this,"running",!1),L(this,"wakeup",e=>{this.logger.error("Cannot call wakeup before calling `startWithJoin()`")}),L(this,"_actions",[]),this.logger=(t??M).getChild("[NewMembershipActionScheduler]")}get actions(){return this._actions}startWithJoin(){var e=this;return H(function*(){if(e.running)e.logger.error("Cannot call startWithJoin() on NewMembershipActionScheduler while already running");else{e.running=!0,e._actions=[{ts:Date.now(),type:ot.SendDelayedEvent}];try{for(var t=function*(){e._actions.sort((e,t)=>e.ts-t.ts);var t=e._actions[0],n=void 0,r=new Promise(t=>{e.wakeup=e=>{n=e,t()}});t.ts>Date.now()&&(yield Promise.race([r,vp(t.ts-Date.now())]));var i={};if(!n){e.logger.debug("Current MembershipManager processing: ".concat(t.type,"\nQueue:"),e._actions,'\nDate.now: "'.concat(Date.now()));try{i=yield e.membershipLoopHandler(t.type)}catch(e){throw Error("The MembershipManager shut down because of the end condition: ".concat(e))}}e._actions.splice(0,1);var o=n??i;"replace"in o?e._actions=o.replace:"insert"in o&&e._actions.push(...o.insert)};e._actions.length>0;)yield*t()}finally{e.running=!1}e.logger.debug("Leave MembershipManager ActionScheduler loop (no more actions)")}})()}initiateJoin(){var e;null===(e=this.wakeup)||void 0===e||e.call(this,{replace:[{ts:Date.now(),type:ot.SendDelayedEvent}]})}initiateLeave(){var e;null===(e=this.wakeup)||void 0===e||e.call(this,{replace:[{ts:Date.now(),type:ot.SendScheduledDelayedLeaveEvent}]})}}var Uh=function(e){return e.StatusChanged="StatusChanged",e.ProbablyLeft="ProbablyLeft",e}({}),ot=function(e){return e.SendDelayedEvent="SendDelayedEvent",e.SendJoinEvent="SendJoinEvent",e.RestartDelayedEvent="RestartDelayedEvent",e.UpdateExpiry="UpdateExpiry",e.SendScheduledDelayedLeaveEvent="SendScheduledDelayedLeaveEvent",e.SendLeaveEvent="SendLeaveEvent",e}({});class cC extends Ln{isActivated(){return this.activated}isJoined(){return this.isActivated()}join(e,t,n){this.scheduler.running?this.logger.error("MembershipManager is already running. Ignoring join request."):(this.fociPreferred=e,this.focusActive=t,this.leavePromiseResolvers=void 0,this.activated=!0,this.oldStatus=this.status,this.state=cC.defaultState,this.scheduler.startWithJoin().catch(e=>{this.logger.error("MembershipManager stopped because: ",e),n?.(e)}).finally(()=>{var e;(this.activated=!1,this.oldStatus&&this.oldStatus!==this.status&&this.emit(Uh.StatusChanged,this.oldStatus,this.status),this.scheduler.running)||(null===(e=this.leavePromiseResolvers)||void 0===e||e.resolve(!0),this.leavePromiseResolvers=void 0)}))}leave(e){return this.scheduler.running?(this.leavePromiseResolvers||(this.leavePromiseResolvers=Promise.withResolvers(),this.activated=!1,this.scheduler.initiateLeave(),e&&setTimeout(()=>{var e;return null===(e=this.leavePromiseResolvers)||void 0===e?void 0:e.resolve(!1)},e)),this.leavePromiseResolvers.promise):(this.logger.warn("Called MembershipManager.leave() even though the MembershipManager is not running"),Promise.resolve(!0))}onRTCSessionMemberUpdate(e){var t=this;return H(function*(){var n=t.client.getUserId(),r=t.client.getDeviceId();if(!n||!r)return t.logger.error("MembershipManager.onRTCSessionMemberUpdate called without user or device id"),Promise.resolve();if(t._ownMembership=e.find(e=>qw(e,n,r)),t.isActivated()&&!t._ownMembership){var i=[ot.SendDelayedEvent,ot.SendJoinEvent];t.logger.warn("Missing own membership: force re-join"),t.state.hasMemberStateEvent=!1,t.scheduler.actions.some(e=>i.includes(e.type))?t.logger.error("tried adding another `SendDelayedEvent` actions even though we already have one in the Queue\nActionQueueOnMemberUpdate:",t.scheduler.actions):t.scheduler.initiateJoin()}return Promise.resolve()})()}getActiveFocus(){if(!this.focusActive){var e=this.getOldestMembership();return e?.getPreferredFoci()[0]}if(YJ(this.focusActive)){if("oldest_membership"===this.focusActive.focus_selection){var t=this.getOldestMembership();return t?.getPreferredFoci()[0]}}else this.logger.warn("Unknown own ActiveFocus type. This makes it impossible to connect to an SFU.")}constructor(e,t,n,r,i,o){super(),this.joinConfig=e,this.room=t,this.client=n,this.getOldestMembership=r,this.sessionDescription=i,L(this,"activated",!1),L(this,"logger",void 0),L(this,"leavePromiseResolvers",void 0),L(this,"_ownMembership",void 0),L(this,"oldStatus",void 0),L(this,"scheduler",void 0),L(this,"state",void 0),L(this,"deviceId",void 0),L(this,"stateKey",void 0),L(this,"fociPreferred",void 0),L(this,"focusActive",void 0),L(this,"delayedLeaveEventDelayMsOverride",void 0),this.logger=(o??M).getChild("[MembershipManager]");var[s,a]=[this.client.getUserId(),this.client.getDeviceId()];if(null===s)throw Error("Missing userId in client");if(null===a)throw Error("Missing deviceId in client");this.deviceId=a,this.stateKey=this.makeMembershipStateKey(s,a),this.state=cC.defaultState,this.scheduler=new q0e(e=>(this.oldStatus&&(this.logger.debug("MembershipManager applied action changes. Status: ".concat(this.oldStatus," -> ").concat(this.status)),this.oldStatus!==this.status&&this.emit(Uh.StatusChanged,this.oldStatus,this.status)),this.oldStatus=this.status,this.logger.debug("MembershipManager before processing action. status=".concat(this.oldStatus)),this.membershipLoopHandler(e)),this.logger)}get ownMembership(){return this._ownMembership}static get defaultState(){return{hasMemberStateEvent:!1,delayId:void 0,startTime:0,rateLimitRetries:new Map,networkErrorRetries:new Map,expireUpdateIterations:1,probablyLeft:!1}}get networkErrorRetryMs(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.networkErrorRetryMs)&&void 0!==e?e:3e3}get membershipEventExpiryMs(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.membershipEventExpiryMs)&&void 0!==e?e:XJ}get membershipEventExpiryHeadroomMs(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.membershipEventExpiryHeadroomMs)&&void 0!==e?e:5e3}computeNextExpiryActionTs(e){return this.state.startTime+this.membershipEventExpiryMs*e-this.membershipEventExpiryHeadroomMs}get delayedLeaveEventDelayMs(){var e,t,n;return null!==(e=null!==(t=this.delayedLeaveEventDelayMsOverride)&&void 0!==t?t:null===(n=this.joinConfig)||void 0===n?void 0:n.delayedLeaveEventDelayMs)&&void 0!==e?e:8e3}get delayedLeaveEventRestartMs(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.delayedLeaveEventRestartMs)&&void 0!==e?e:5e3}get maximumRateLimitRetryCount(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.maximumRateLimitRetryCount)&&void 0!==e?e:10}get maximumNetworkErrorRetryCount(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.maximumNetworkErrorRetryCount)&&void 0!==e?e:10}get delayedLeaveEventRestartLocalTimeoutMs(){var e,t;return null!==(e=null===(t=this.joinConfig)||void 0===t?void 0:t.delayedLeaveEventRestartLocalTimeoutMs)&&void 0!==e?e:2e3}membershipLoopHandler(e){var t=this;return H(function*(){switch(e){case ot.SendDelayedEvent:return t.state.delayId?t.cancelKnownDelayIdBeforeSendDelayedEvent(t.state.delayId):t.sendOrResendDelayedLeaveEvent();case ot.RestartDelayedEvent:return t.state.delayId?t.restartDelayedEvent(t.state.delayId):Bo(ot.SendDelayedEvent);case ot.SendScheduledDelayedLeaveEvent:return t.state.hasMemberStateEvent?t.state.delayId?t.sendScheduledDelayedLeaveEventOrFallbackToSendLeaveEvent(t.state.delayId):Bo(ot.SendLeaveEvent):{replace:[]};case ot.SendJoinEvent:return t.sendJoinEvent();case ot.UpdateExpiry:return t.updateExpiryOnJoinedEvent();case ot.SendLeaveEvent:return t.state.hasMemberStateEvent?t.sendFallbackLeaveEvent():{replace:[]}}})()}sendOrResendDelayedLeaveEvent(){var e=this;return H(function*(){return yield e.client._unstable_sendDelayedStateEvent(e.room.roomId,{delay:e.delayedLeaveEventDelayMs},Z.GroupCallMemberPrefix,{},e.stateKey).then(t=>(e.state.expectedServerDelayLeaveTs=Date.now()+e.delayedLeaveEventDelayMs,e.setAndEmitProbablyLeft(!1),e.resetRateLimitCounter(ot.SendDelayedEvent),e.state.delayId=t.delay_id,e.state.hasMemberStateEvent?Bo(ot.RestartDelayedEvent,e.delayedLeaveEventRestartMs):Bo(ot.SendJoinEvent))).catch(t=>{var n=ot.SendDelayedEvent;if(e.manageMaxDelayExceededSituation(t))return Bo(n);var r=e.actionUpdateFromErrors(t,n,"sendDelayedStateEvent");if(r)return r;if(e.state.hasMemberStateEvent){if(e.isUnsupportedDelayedEndpoint(t))return{};throw Error("Could not send delayed event, even though delayed events are supported. "+t)}return e.isUnsupportedDelayedEndpoint(t)?e.logger.info("Not using delayed event because the endpoint is not supported"):e.logger.info("Not using delayed event because: "+t),Bo(ot.SendJoinEvent)})})()}cancelKnownDelayIdBeforeSendDelayedEvent(e){var t=this;return H(function*(){return yield t.client._unstable_updateDelayedEvent(e,Vw.Cancel).then(()=>(t.state.delayId=void 0,t.resetRateLimitCounter(ot.SendDelayedEvent),kk(ot.SendDelayedEvent))).catch(e=>{var n=ot.SendDelayedEvent,r=t.actionUpdateFromErrors(e,n,"updateDelayedEvent");if(r)return r;if(t.isNotFoundError(e))return t.state.delayId=void 0,kk(n);if(t.isUnsupportedDelayedEndpoint(e))return kk(ot.SendJoinEvent);throw Error("We failed to cancel a delayed event where we already had a delay id with an error we cannot automatically handle")})})()}setAndEmitProbablyLeft(e){this.state.probablyLeft!==e&&(this.state.probablyLeft=e,this.emit(Uh.ProbablyLeft,this.state.probablyLeft))}restartDelayedEvent(e){var t=this;return H(function*(){var n=t.state.expectedServerDelayLeaveTs?t.state.expectedServerDelayLeaveTs-Date.now():void 0,r=new Promise((e,r)=>{setTimeout(()=>{r(new OX.AbortError("Restart delayed event timed out before the HS responded"))},void 0===n||t.state.probablyLeft?t.delayedLeaveEventRestartLocalTimeoutMs:Math.min(t.delayedLeaveEventRestartLocalTimeoutMs,n))});return yield Promise.race([t.client._unstable_updateDelayedEvent(e,Vw.Restart),r]).then(()=>(t.state.expectedServerDelayLeaveTs=Date.now()+t.delayedLeaveEventDelayMs,t.resetRateLimitCounter(ot.RestartDelayedEvent),t.setAndEmitProbablyLeft(!1),Bo(ot.RestartDelayedEvent,t.delayedLeaveEventRestartMs))).catch(e=>{t.state.expectedServerDelayLeaveTs&&t.state.expectedServerDelayLeaveTs<=Date.now()&&t.setAndEmitProbablyLeft(!0);var n=ot.RestartDelayedEvent;if(t.isNotFoundError(e))return t.state.delayId=void 0,Bo(ot.SendDelayedEvent);if(t.isUnsupportedDelayedEndpoint(e))return{};var r=t.actionUpdateFromErrors(e,n,"updateDelayedEvent");if(r)return r;throw Error("Could not restart delayed event, even though delayed events are supported. "+e)})})()}sendScheduledDelayedLeaveEventOrFallbackToSendLeaveEvent(e){var t=this;return H(function*(){return yield t.client._unstable_updateDelayedEvent(e,Vw.Send).then(()=>(t.state.hasMemberStateEvent=!1,t.resetRateLimitCounter(ot.SendScheduledDelayedLeaveEvent),{replace:[]})).catch(e=>{var n=ot.SendLeaveEvent;return t.isUnsupportedDelayedEndpoint(e)?{}:t.isNotFoundError(e)?(t.state.delayId=void 0,Bo(n)):t.actionUpdateFromErrors(e,n,"updateDelayedEvent")||(t.logger.warn("Encountered unexpected error during SendScheduledDelayedLeaveEvent. Falling back to SendLeaveEvent",e),Bo(n))})})()}sendJoinEvent(){var e=this;return H(function*(){return yield e.client.sendStateEvent(e.room.roomId,Z.GroupCallMemberPrefix,e.makeMyMembership(e.membershipEventExpiryMs),e.stateKey).then(()=>(e.setAndEmitProbablyLeft(!1),e.state.startTime=Date.now(),e.state.expireUpdateIterations=1,e.state.hasMemberStateEvent=!0,e.resetRateLimitCounter(ot.SendJoinEvent),{replace:[...e.scheduler.actions.filter(e=>e.type!==ot.UpdateExpiry&&e.type!==ot.SendJoinEvent),{ts:Date.now(),type:ot.RestartDelayedEvent},{ts:e.computeNextExpiryActionTs(e.state.expireUpdateIterations),type:ot.UpdateExpiry}]})).catch(t=>{var n=e.actionUpdateFromErrors(t,ot.SendJoinEvent,"sendStateEvent");if(n)return n;throw t})})()}updateExpiryOnJoinedEvent(){var e=this;return H(function*(){var t=e.state.expireUpdateIterations+1;return yield e.client.sendStateEvent(e.room.roomId,Z.GroupCallMemberPrefix,e.makeMyMembership(e.membershipEventExpiryMs*t),e.stateKey).then(()=>(e.resetRateLimitCounter(ot.UpdateExpiry),e.state.expireUpdateIterations=t,{insert:[{ts:e.computeNextExpiryActionTs(t),type:ot.UpdateExpiry}]})).catch(t=>{var n=e.actionUpdateFromErrors(t,ot.UpdateExpiry,"sendStateEvent");if(n)return n;throw t})})()}sendFallbackLeaveEvent(){var e=this;return H(function*(){return yield e.client.sendStateEvent(e.room.roomId,Z.GroupCallMemberPrefix,{},e.stateKey).then(()=>(e.resetRateLimitCounter(ot.SendLeaveEvent),e.state.hasMemberStateEvent=!1,{replace:[]})).catch(t=>{var n=e.actionUpdateFromErrors(t,ot.SendLeaveEvent,"sendStateEvent");if(n)return n;throw t})})()}makeMembershipStateKey(e,t){var n="".concat(e,"_").concat(t,"_").concat(this.sessionDescription.application).concat(this.sessionDescription.id);return/^org\.matrix\.msc(3757|3779)\b/.exec(this.room.getVersion())?n:"_".concat(n)}makeMyMembership(e){var t;return{application:this.sessionDescription.application,call_id:this.sessionDescription.id,scope:"m.room",device_id:this.deviceId,expires:e,focus_active:{type:"livekit",focus_selection:"oldest_membership"},foci_preferred:null!==(t=this.fociPreferred)&&void 0!==t?t:[]}}isNotFoundError(e){return e instanceof or&&"M_NOT_FOUND"===e.errcode}manageMaxDelayExceededSituation(e){if(e instanceof or&&"M_UNKNOWN"===e.errcode&&"M_MAX_DELAY_EXCEEDED"===e.data["org.matrix.msc4140.errcode"]){var t=e.data["org.matrix.msc4140.max_delay"];return"number"==typeof t&&this.delayedLeaveEventDelayMs>t&&(this.delayedLeaveEventDelayMsOverride=t),this.logger.warn("Retry sending delayed disconnection event due to server timeout limitations:",e),!0}return!1}actionUpdateFromErrors(e,t,n){var r=this.actionUpdateFromRateLimitError(e,n,t);if(r)return r;var i=this.actionUpdateFromNetworkErrorRetry(e,t);return i||void 0}actionUpdateFromRateLimitError(e,t,n){var r;if((e instanceof Xh||e instanceof or)&&e.isRateLimitError()){var i=null!==(r=this.state.rateLimitRetries.get(n))&&void 0!==r?r:0;if(i=500&&e.httpStatus<600))return;this.logger.warn("Server error while sending event, retrying in "+i+" "+o,e)}if(re.type);if((n.includes(ot.RestartDelayedEvent)||n.includes(ot.SendDelayedEvent)&&this.state.hasMemberStateEvent)&&n.includes(ot.UpdateExpiry))return Id.Connected}else if(3===e.length){var r=e.map(e=>e.type);if(2===r.filter(e=>e===ot.RestartDelayedEvent).length&&r.includes(ot.UpdateExpiry))return Id.Connected}return this.scheduler.running?(this.logger.error("MembershipManager has an unknown state. Actions: ",e),Id.Unknown):Id.Disconnected}get probablyLeft(){return this.state.probablyLeft}}function Bo(e,t){return{insert:[{ts:Date.now()+(t??0),type:e}]}}function kk(e,t){return{replace:[{ts:Date.now()+0,type:e}]}}var Gc=function(e){return e.ReceivedKeys="received_keys",e.NotSupportedError="not_supported_error",e}({});class G0e{constructor(){L(this,"tsBuffer",new Map)}isOutdated(e,t){var n;this.tsBuffer.has(e)||this.tsBuffer.set(e,new Map);var r=null===(n=this.tsBuffer.get(e))||void 0===n?void 0:n.get(t.keyIndex);return!!(r&&r>t.creationTS)||(this.tsBuffer.get(e).set(t.keyIndex,t.creationTS),!1)}}function jh(e,t){return"".concat(e,":").concat(t)}class JJ extends Error{constructor(e){super(e)}get name(){return"NotSupportedError"}}class K0e extends Ln{setParentLogger(e){this.logger=e.getChild("[ToDeviceKeyTransport]")}constructor(e,t,n,r,i,o){super(),this.userId=e,this.deviceId=t,this.roomId=n,this.client=r,this.statistics=i,L(this,"logger",M),L(this,"onToDeviceEvent",e=>{if(e.getType()===Z.CallEncryptionKeysPrefix){var t=this.getValidEventContent(e);t&&e.getSender()&&this.receiveCallKeyEvent(e.getSender(),t)}}),this.setParentLogger(o??M)}start(){this.client.on(Pe.ToDeviceEvent,this.onToDeviceEvent)}stop(){this.client.off(Pe.ToDeviceEvent,this.onToDeviceEvent)}sendKey(e,t,n){var r=this;return H(function*(){var i={keys:{index:t,key:e},room_id:r.roomId,member:{claimed_device_id:r.deviceId},session:{call_id:"",application:"m.call",scope:"m.room"},sent_ts:Date.now()},o=n.map(e=>({userId:e.userId,deviceId:e.deviceId})).filter(e=>!(e.userId==r.userId&&e.deviceId==r.deviceId));o.length>0?(yield r.client.encryptAndSendToDevice(Z.CallEncryptionKeysPrefix,o,i).catch(e=>{var t=e.message;if(t.includes("unknown variant")&&t.includes("send_to_device")||t.includes("not supported"))throw new JJ("The widget driver does not support to-device encryption")}),r.statistics.counters.roomEventEncryptionKeysSent+=1):r.logger.warn("No targets found for sending key")})()}receiveCallKeyEvent(e,t){this.statistics.counters.roomEventEncryptionKeysReceived+=1;var n=Date.now(),r=n-("number"==typeof t.sent_ts?t.sent_ts:n);this.statistics.totals.roomEventEncryptionKeysReceivedTotalAge+=r,this.emit(Gc.ReceivedKeys,e,t.member.claimed_device_id,t.keys.key,t.keys.index,n)}getValidEventContent(e){var t=e.getContent(),n=t.room_id;if(n)if(n===this.roomId)if(t.keys&&t.keys.key&&"number"==typeof t.keys.index){if(t.member&&t.member.claimed_device_id)return t;this.logger.warn("Malformed Event: Missing claimed_device_id")}else this.logger.warn("Malformed Event: Missing keys field");else this.logger.warn("Malformed Event: Mismatch roomId");else this.logger.warn("Malformed Event: invalid call encryption keys event, no roomId")}}var d_=function(e){return e.EnabledTransportsChanged="enabled_transports_changed",e}({});class tO extends Ln{constructor(e,t,n){var r;super(),r=this,this.toDeviceTransport=e,this.roomKeyTransport=t,L(this,"logger",void 0),L(this,"_enabled",{toDevice:!0,room:!1}),this.logger=(n??M).getChild("[RoomAndToDeviceTransport]"),this.toDeviceTransport.setParentLogger(this.logger),this.roomKeyTransport.setParentLogger(this.logger),this.roomKeyTransport.on(Gc.ReceivedKeys,function(){r._enabled.room||(r.logger.debug("Received room key, enabling room key transport, disabling toDevice transport"),r.setEnabled({toDevice:!1,room:!0}));for(var e=arguments.length,t=new Array(e),n=0;nnull!=e.sender).map(e=>({userId:e.sender,deviceId:e.deviceId,membershipTs:e.createdTs()}));yield c.transport.sendKey(DJ(r),n,i),c.logger.debug("sendEncryptionKeysEvent participantId=".concat(c.userId,":").concat(c.deviceId," numKeys=").concat(t.length," currentKeyIndex=").concat(c.latestGeneratedKeyIndex," keyIndexToSend=").concat(n))}catch(e){if(void 0===c.keysEventUpdateTimeout){var o=H7(e,5e3);c.logger.warn("Failed to send m.call.encryption_key, retrying in ".concat(o),e),c.keysEventUpdateTimeout=setTimeout(()=>{c.sendEncryptionKeysEvent()},o)}else c.logger.info("Not scheduling key resend as another re-send is already pending")}}}),function(e){return a.apply(this,arguments)})),L(this,"onTransportChanged",()=>{this.requestSendCurrentKey()}),L(this,"onNewKeyReceived",(e,t,n,r,i)=>{this.logger.debug("Received key over key transport ".concat(e,":").concat(t," at index ").concat(r)),this.setEncryptionKey(e,t,r,n,i)}),L(this,"onRotateKeyTimeout",()=>{if(this.manageMediaKeys){this.makeNewKeyTimeout=void 0,this.logger.info("Making new sender key for key rotation");var e=this.makeNewSenderKey(!0);this.sendEncryptionKeysEvent(e)}}),this.logger=(s??M).getChild("[EncryptionManager]")}getEncryptionKeys(){var e=new Map;for(var[t,n]of this.encryptionKeys){var r=n.map((e,t)=>({key:e.key,keyIndex:t}));e.set(t,r)}return e}join(e){var t,n,r;this.joinConfig=e,this.joined=!0,this.manageMediaKeys=null!==(t=null===(n=this.joinConfig)||void 0===n?void 0:n.manageMediaKeys)&&void 0!==t?t:this.manageMediaKeys,this.transport.on(Gc.ReceivedKeys,this.onNewKeyReceived),this.transport instanceof tO&&this.transport.on(d_.EnabledTransportsChanged,this.onTransportChanged),this.transport.start(),null!==(r=this.joinConfig)&&void 0!==r&&r.manageMediaKeys&&(this.makeNewSenderKey(),this.requestSendCurrentKey())}leave(){for(var e of(this.encryptionKeys.set(jh(this.userId,this.deviceId),[]),this.transport.off(Gc.ReceivedKeys,this.onNewKeyReceived),this.transport.stop(),void 0!==this.makeNewKeyTimeout&&(clearTimeout(this.makeNewKeyTimeout),this.makeNewKeyTimeout=void 0),this.setNewKeyTimeouts))clearTimeout(e);this.setNewKeyTimeouts.clear(),this.manageMediaKeys=!1,this.joined=!1}onMembershipsUpdate(e){if(this.manageMediaKeys&&this.joined){var t=new Set(e.filter(e=>!qw(e,this.userId,this.deviceId)).map(xk)),n=new Set(this.getMemberships().filter(e=>!qw(e,this.userId,this.deviceId)).map(xk)),r=Array.from(t).some(e=>!n.has(e)),i=Array.from(n).some(e=>!t.has(e)),o=this.lastMembershipFingerprints;if(this.storeLastMembershipFingerprints(),r)this.makeNewKeyTimeout||(this.logger.debug("Member(s) have left: queueing sender key rotation"),this.makeNewKeyTimeout=setTimeout(this.onRotateKeyTimeout,this.makeKeyDelay));else if(i)this.logger.debug("New member(s) have joined: re-sending keys"),this.requestSendCurrentKey();else if(o){var s=this.lastMembershipFingerprints;(Array.from(o).some(e=>!s.has(e))||Array.from(s).some(e=>!o.has(e)))&&(this.logger.debug("Member(s) have updated/reconnected: re-sending keys to everyone"),this.requestSendCurrentKey())}}}makeNewSenderKey(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=NJ(16),n=this.getNewEncryptionKeyIndex();return this.logger.info("Generated new key at index "+n),this.setEncryptionKey(this.userId,this.deviceId,n,t,Date.now(),e),n}requestSendCurrentKey(){if(this.manageMediaKeys){if(this.lastEncryptionKeyUpdateRequest&&this.lastEncryptionKeyUpdateRequest+this.updateEncryptionKeyThrottle>Date.now())return this.logger.info("Last encryption key event sent too recently: postponing"),void(void 0===this.keysEventUpdateTimeout&&(this.keysEventUpdateTimeout=setTimeout(()=>{this.sendEncryptionKeysEvent()},this.updateEncryptionKeyThrottle)));this.sendEncryptionKeysEvent()}}getKeysForParticipant(e,t){var n;return null===(n=this.encryptionKeys.get(jh(e,t)))||void 0===n?void 0:n.map(e=>e.key)}storeLastMembershipFingerprints(){this.lastMembershipFingerprints=new Set(this.getMemberships().filter(e=>!qw(e,this.userId,this.deviceId)).map(e=>"".concat(xk(e),":").concat(e.createdTs())))}getNewEncryptionKeyIndex(){return-1===this.latestGeneratedKeyIndex?0:(this.latestGeneratedKeyIndex+1)%256}setEncryptionKey(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];this.logger.debug("Setting encryption key for ".concat(e,":").concat(t," at index ").concat(n));var s=Nh(r),a=jh(e,t);this.encryptionKeys.has(a)||this.encryptionKeys.set(a,[]);var c=this.encryptionKeys.get(a),l=c[n];if(l){if(l.timestamp>i)return void this.logger.info("Ignoring new key at index ".concat(n," for ").concat(a," as it is older than existing known key"));if(W0e(l.key,s))return void(l.timestamp=i)}if(e===this.userId&&t===this.deviceId&&(this.latestGeneratedKeyIndex=n),c[n]={key:s,timestamp:i},o){var u=setTimeout(()=>{this.setNewKeyTimeouts.delete(u),this.logger.info("Delayed-emitting key changed event for ".concat(a," index ").concat(n)),this.onEncryptionKeysChanged(s,n,a)},this.useKeyDelay);this.setNewKeyTimeouts.add(u)}else this.onEncryptionKeysChanged(s,n,a)}}function W0e(e,t){return e===t||!!e&&!!t&&e.length===t.length&&e.every((e,n)=>e===t[n])}var xk=e=>jh(e.sender,e.deviceId);class Y$ extends Ln{setParentLogger(e){this.logger=e.getChild("[RoomKeyTransport]")}constructor(e,t,n,r){super(),this.room=e,this.client=t,this.statistics=n,L(this,"logger",M),this.setParentLogger(r??M)}start(){this.room.on(ke.Timeline,e=>{this.consumeCallEncryptionEvent(e)})}stop(){this.room.off(ke.Timeline,e=>{this.consumeCallEncryptionEvent(e)})}consumeCallEncryptionEvent(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]&&t[1];if(yield n.client.decryptEventIfNeeded(e),!e.isDecryptionFailure())return r&&n.logger.info("Decryption succeeded for event ".concat(e.getId()," after retry")),e.getType()!==Z.CallEncryptionKeysPrefix?Promise.resolve():n.room?void n.onEncryptionEvent(e):(n.logger.error("Got room state event for unknown room ".concat(e.getRoomId(),"!")),Promise.resolve());r?n.logger.warn("Decryption failed for event ".concat(e.getId(),": ").concat(e.decryptionFailureReason)):(n.logger.warn("Decryption failed for event ".concat(e.getId(),": ").concat(e.decryptionFailureReason," will retry once only")),setTimeout(()=>{n.consumeCallEncryptionEvent(e,!0)},1e3))})()}sendKey(e,t,n){var r=this;return H(function*(){var n={keys:[{index:t,key:e}],device_id:r.client.getDeviceId(),call_id:"",sent_ts:Date.now()};try{yield r.client.sendEvent(r.room.roomId,Z.CallEncryptionKeysPrefix,n)}catch(e){r.logger.error("Failed to send call encryption keys",e);var i=e;throw i.event&&r.client.cancelPendingEvent(i.event),e}})()}onEncryptionEvent(e){var t=e.getSender(),n=e.getContent(),r=n.device_id,i=n.call_id;if(t)if(""===i)if(Array.isArray(n.keys))if(t!==this.client.getUserId()||r!==this.client.getDeviceId()){this.statistics.counters.roomEventEncryptionKeysReceived+=1;var o=Date.now()-("number"==typeof n.sent_ts?n.sent_ts:e.getTs());for(var s of(this.statistics.totals.roomEventEncryptionKeysReceivedTotalAge+=o,n.keys))if(s){var a=s.key,c=s.index;a&&null!=c&&null!=i&&"string"==typeof r&&"string"==typeof i&&"string"==typeof a&&"number"==typeof c?(this.logger.debug("onCallEncryption userId=".concat(t,":").concat(r," encryptionKeyIndex=").concat(c," age=").concat(o,"ms")),this.emit(Gc.ReceivedKeys,t,r,a,c,e.getTs())):this.logger.warn("Malformed call encryption_key: userId=".concat(t,", deviceId=").concat(r,", encryptionKeyIndex=").concat(c," callId=").concat(i))}else this.logger.info("Ignoring false-y key in keys event")}else this.logger.info("Ignoring our own keys event");else this.logger.warn("Received m.call.encryption_keys where keys wasn't an array: callId=".concat(i));else this.logger.warn("Received m.call.encryption_keys with unsupported callId: userId=".concat(t,", deviceId=").concat(r,", callId=").concat(i));else this.logger.warn("Received m.call.encryption_keys with no userId: callId=".concat(i))}}class Y0e{constructor(e,t,n,r,i,o,s){this.userId=e,this.deviceId=t,this.getMemberships=n,this.transport=r,this.statistics=i,this.onEncryptionKeysChanged=o,L(this,"manageMediaKeys",!1),L(this,"participantKeyRings",new Map),L(this,"outboundSession",null),L(this,"currentKeyDistributionPromise",null),L(this,"useKeyDelay",5e3),L(this,"keyRotationGracePeriodMs",1e4),L(this,"needToEnsureKeyAgain",!1),L(this,"keyBuffer",new G0e),L(this,"logger",void 0),L(this,"onTransportChanged",()=>{var e;null===(e=this.logger)||void 0===e||e.info("Transport change detected, restarting key distribution"),this.currentKeyDistributionPromise?this.currentKeyDistributionPromise.then(()=>{this.outboundSession&&(this.outboundSession.sharedWith=[],this.ensureKeyDistribution())}).catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error("Failed to restart key distribution",e)}):this.outboundSession&&(this.outboundSession.sharedWith=[],this.ensureKeyDistribution())}),L(this,"onNewKeyReceived",(e,t,n,r,i)=>{var o;if(this.manageMediaKeys){null===(o=this.logger)||void 0===o||o.debug("Received key over transport ".concat(e,":").concat(t," at index ").concat(r));var s,a=jh(e,t),c={key:Nh(n),participantId:a,keyIndex:r,creationTS:i};if(this.keyBuffer.isOutdated(a,c))null===(s=this.logger)||void 0===s||s.info("Received an out of order key for ".concat(e,":").concat(t,", dropping it"));else this.addKeyToParticipant(c.key,c.keyIndex,c.participantId),this.statistics.counters.roomEventEncryptionKeysReceived+=1}else{var l;null===(l=this.logger)||void 0===l||l.warn("Received key over transport ".concat(e,":").concat(t," at index ").concat(r," but media keys are disabled"))}}),this.logger=s?.getChild("[EncryptionManager]")}getEncryptionKeys(){return new Map(this.participantKeyRings)}addKeyToParticipant(e,t,n){this.participantKeyRings.has(n)||this.participantKeyRings.set(n,[]),this.participantKeyRings.get(n).push({key:e,keyIndex:t}),this.onEncryptionKeysChanged(e,t,n)}join(e){var t,n,r,i;this.manageMediaKeys=null===(t=e?.manageMediaKeys)||void 0===t||t,null===(n=this.logger)||void 0===n||n.info("Joining room"),this.useKeyDelay=null!==(r=e?.useKeyDelay)&&void 0!==r?r:1e3,this.keyRotationGracePeriodMs=null!==(i=e?.keyRotationGracePeriodMs)&&void 0!==i?i:1e4,this.transport.on(Gc.ReceivedKeys,this.onNewKeyReceived),this.transport instanceof tO&&this.transport.on(d_.EnabledTransportsChanged,this.onTransportChanged),this.transport.start()}leave(){this.transport.off(Gc.ReceivedKeys,this.onNewKeyReceived),this.transport.stop(),this.participantKeyRings.clear()}ensureKeyDistribution(){if(this.manageMediaKeys)if(null==this.currentKeyDistributionPromise){var e;null===(e=this.logger)||void 0===e||e.debug("No active rollout, start a new one"),this.currentKeyDistributionPromise=this.rolloutOutboundKey().then(()=>{var e,t;(null===(e=this.logger)||void 0===e||e.debug("Rollout completed"),this.currentKeyDistributionPromise=null,this.needToEnsureKeyAgain)&&(null===(t=this.logger)||void 0===t||t.debug("New Rollout needed"),this.needToEnsureKeyAgain=!1,this.ensureKeyDistribution())})}else{var t;null===(t=this.logger)||void 0===t||t.debug("Rollout in progress, a new rollout will be started after the current one"),this.needToEnsureKeyAgain=!0}}onMembershipsUpdate(){var e;null===(e=this.logger)||void 0===e||e.trace("onMembershipsUpdate"),this.ensureKeyDistribution()}rolloutOutboundKey(){var e=this;return H(function*(){var t,n;null==e.outboundSession&&(e.outboundSession={key:e.generateRandomKey(),creationTS:Date.now(),sharedWith:[],keyId:0},e.addKeyToParticipant(e.outboundSession.key,e.outboundSession.keyId,jh(e.userId,e.deviceId)));var r,i=e.getMemberships().filter(e=>null!=e.sender).map(e=>({userId:e.sender,deviceId:e.deviceId,membershipTs:e.createdTs()})),o=null!==(t=null===(n=e.outboundSession)||void 0===n?void 0:n.sharedWith)&&void 0!==t?t:[],s=(o=o.filter(e=>!i.some(t=>e.userId==t.userId&&e.deviceId==t.deviceId&&e.membershipTs!=t.membershipTs))).filter(e=>!i.some(t=>e.userId==t.userId&&e.deviceId==t.deviceId&&e.membershipTs==t.membershipTs)),a=i.filter(e=>!o.some(t=>e.userId==t.userId&&e.deviceId==t.deviceId&&e.membershipTs==t.membershipTs)),c=[],l=!1;if(s.length>0){var u=e.createNewOutboundSession();l=!0,c=i,r=u}else{if(!(a.length>0))return;var d=Date.now()-e.outboundSession.creationTS;if(d"".concat(e.userId,":").concat(e.deviceId)).join(","))),l)null===(v=e.logger)||void 0===v||v.trace("Delay Rollout for key:".concat(r.keyId,"...")),yield vp(e.useKeyDelay),null===(y=e.logger)||void 0===y||y.trace("...Delayed rollout of index:".concat(r.keyId," ")),e.addKeyToParticipant(r.key,r.keyId,jh(e.userId,e.deviceId))}catch(t){var b;null===(b=e.logger)||void 0===b||b.error("Failed to rollout key",t)}})()}createNewOutboundSession(){var e,t={key:this.generateRandomKey(),creationTS:Date.now(),sharedWith:[],keyId:this.nextKeyIndex()};return null===(e=this.logger)||void 0===e||e.info("creating new outbound key index:".concat(t.keyId)),this.outboundSession=t,t}nextKeyIndex(){return this.outboundSession?(this.outboundSession.keyId+1)%256:0}generateRandomKey(){var e=new Uint8Array(16);return globalThis.crypto.getRandomValues(e),e}}function X$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function I2(e){for(var t=1;t1&&"focus_active"in a?l.push(a):1===c&&"memberships"in a&&n.warn("Legacy event found. Those are ignored, they do not contribute to the MatrixRTC session"),0!==l.length)for(var u of l)try{var d,h=new W$(s,u);if(!lf(h.sessionDescription,t)){n.info("Ignoring membership of user ".concat(h.sender," for a different session: ").concat(JSON.stringify(h.sessionDescription)));continue}if(h.isExpired()){n.info("Ignoring expired device membership ".concat(h.sender,"/").concat(h.deviceId));continue}if(!e.hasMembershipState(null!==(d=h.sender)&&void 0!==d?d:"",He.Join)){n.info("Ignoring membership of user ".concat(h.sender," who is not in the room."));continue}o.push(h)}catch(e){n.warn("Couldn't construct call membership: ",e)}}}return o.sort((e,t)=>e.createdTs()-t.createdTs()),o.length>1&&n.debug("Call memberships in room ".concat(e.roomId,", in order: "),o.map(e=>[e.createdTs(),e.sender])),o}static roomSessionForRoom(e,t){var n=Xl.sessionMembershipsForRoom(t,{id:"",application:"m.call"});return new Xl(e,t,n,{id:"",application:"m.call"})}static sessionForRoom(e,t,n){var r=Xl.sessionMembershipsForRoom(t,n);return new Xl(e,t,r,n)}get room(){return this.roomSubset}constructor(e,t,n,r){var i;super(),this.client=e,this.roomSubset=t,this.memberships=n,this.sessionDescription=r,L(this,"membershipManager",void 0),L(this,"encryptionManager",void 0),L(this,"_callId",void 0),L(this,"joinConfig",void 0),L(this,"logger",void 0),L(this,"pendingNotificationToSend",void 0),L(this,"expiryTimeout",void 0),L(this,"statistics",{counters:{roomEventEncryptionKeysSent:0,roomEventEncryptionKeysReceived:0},totals:{roomEventEncryptionKeysReceivedTotalAge:0}}),L(this,"reEmitter",new Uv(this)),L(this,"onRoomMemberUpdate",()=>{this.recalculateSessionMembers()}),L(this,"onRTCSessionMemberUpdate",()=>{this.recalculateSessionMembers()}),L(this,"recalculateSessionMembers",()=>{var e,t,n,r=this.memberships;if(this.memberships=Xl.sessionMembershipsForRoom(this.room,this.sessionDescription),this._callId=null!==(e=this._callId)&&void 0!==e?e:null===(t=this.memberships[0])||void 0===t?void 0:t.sessionDescription.id,r.length!=this.memberships.length||r.some((e,t)=>!W$.equal(e,this.memberships[t]))){var i,o;this.logger.info("Memberships for call in room ".concat(this.roomSubset.roomId," have changed: emitting (").concat(this.memberships.length," members)")),ove(this.logger,"emit MatrixRTCSessionEvent.MembershipsChanged",()=>{this.emit(Zr.MembershipsChanged,r,this.memberships)}),null===(i=this.membershipManager)||void 0===i||i.onRTCSessionMemberUpdate(this.memberships);var s,a=null===(o=this.membershipManager)||void 0===o?void 0:o.ownMembership;if(this.pendingNotificationToSend&&a&&0===r.length)a.eventId&&null!==(s=this.joinConfig)&&void 0!==s&&s.notificationType?this.sendCallNotify(a.eventId,this.joinConfig.notificationType):this.logger.warn("Own membership eventId is undefined, cannot send call notification");this.memberships.length>0&&(this.pendingNotificationToSend=void 0)}null===(n=this.encryptionManager)||void 0===n||n.onMembershipsUpdate(r),this.setExpiryTimer()}),this.logger=M.getChild("[MatrixRTCSession ".concat(t.roomId,"]")),this._callId=null===(i=n[0])||void 0===i?void 0:i.sessionDescription.id;var o=this.roomSubset.getLiveTimeline().getState(Me.FORWARDS);o?.on(pt.Members,this.onRoomMemberUpdate),this.setExpiryTimer()}isJoined(){var e,t;return null!==(e=null===(t=this.membershipManager)||void 0===t?void 0:t.isJoined())&&void 0!==e&&e}stop(){var e=this;return H(function*(){var t;yield null===(t=e.membershipManager)||void 0===t?void 0:t.leave(1e3),e.expiryTimeout&&(clearTimeout(e.expiryTimeout),e.expiryTimeout=void 0);var n=e.roomSubset.getLiveTimeline().getState(Me.FORWARDS);n?.off(pt.Members,e.onRoomMemberUpdate)})()}joinRoomSession(e,t,n){var r;if(this.isJoined())this.logger.info("Already joined to session in room ".concat(this.roomSubset.roomId,": ignoring join call"));else{var i;if(this.membershipManager=new cC(n,this.roomSubset,this.client,()=>this.getOldestMembership(),this.sessionDescription,this.logger),this.reEmitter.reEmit(this.membershipManager,[Uh.ProbablyLeft,Uh.StatusChanged]),null!=n&&n.useExperimentalToDeviceTransport){this.logger.info("Using experimental to-device transport for encryption keys"),this.logger.info("Using to-device with room fallback transport for encryption keys");var[o,s]=[this.client.getUserId(),this.client.getDeviceId()],[a,c,l]=[this.roomSubset,this.client,this.statistics],u=new Y$(a,c,l),d=new K0e(o,s,a.roomId,c,l);i=new tO(d,u,this.logger),this.reEmitter.reEmit(i,[d_.EnabledTransportsChanged]),this.encryptionManager=new Y0e(this.client.getUserId(),this.client.getDeviceId(),()=>this.memberships,i,this.statistics,(e,t,n)=>{this.emit(Zr.EncryptionKeyChanged,e,t,n)},this.logger)}else i=new Y$(this.roomSubset,this.client,this.statistics),this.encryptionManager=new z0e(this.client.getUserId(),this.client.getDeviceId(),()=>this.memberships,i,this.statistics,(e,t,n)=>{this.emit(Zr.EncryptionKeyChanged,e,t,n)});this.joinConfig=n,this.pendingNotificationToSend=null===(r=this.joinConfig)||void 0===r?void 0:r.notificationType,this.membershipManager.join(e,t,e=>{this.logger.error("MembershipManager encountered an unrecoverable error: ",e),this.emit(Zr.MembershipManagerError,e),this.emit(Zr.JoinStateChanged,this.isJoined())}),this.encryptionManager.join(n),this.emit(Zr.JoinStateChanged,!0)}}leaveRoomSession(){var e=arguments,t=this;return H(function*(){var n=e.length>0&&void 0!==e[0]?e[0]:void 0;if(!t.isJoined())return t.logger.info("Not joined to session in room ".concat(t.roomSubset.roomId,": ignoring leave call")),!1;t.logger.info("Leaving call session in room ".concat(t.roomSubset.roomId)),t.encryptionManager.leave();var r=t.membershipManager.leave(n);return t.emit(Zr.JoinStateChanged,!1),yield r})()}getActiveFocus(){var e;return null===(e=this.membershipManager)||void 0===e?void 0:e.getActiveFocus()}getOldestMembership(){return this.memberships[0]}getFocusInUse(){var e=this.getOldestMembership();if("oldest_membership"===e?.getFocusSelection())return e.getPreferredFoci()[0]}reemitEncryptionKeys(){var e;null===(e=this.encryptionManager)||void 0===e||e.getEncryptionKeys().forEach((e,t)=>{e.forEach(e=>{this.emit(Zr.EncryptionKeyChanged,e.key,e.keyIndex,t)})})}setExpiryTimer(){var e;for(var t of(this.expiryTimeout&&(clearTimeout(this.expiryTimeout),this.expiryTimeout=void 0),this.memberships)){var n=t.getMsUntilExpiry();void 0!==n&&(void 0===e||n{var[t,n]=e,r=I2(I2({},t.response),t.content),i=I2(I2({},n.response),n.content);this.emit(Zr.DidSendCallNotification,i,r)}).catch(e=>{var[t,n]=e;return this.logger.error("Failed to send call notification",t,n)})}}var lC=function(e){return e.SessionStarted="session_started",e.SessionEnded="session_ended",e}({});class X0e extends Ln{constructor(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{id:"",application:"m.call"};super(),this.client=t,this.sessionDescription=n,L(this,"roomSessions",new Map),L(this,"logger",void 0),L(this,"onRoom",e=>{this.refreshRoom(e)}),L(this,"onRoomState",(e,t)=>{var n=this.client.getRoom(e.getRoomId());n?e.getType()==Z.GroupCallMemberPrefix&&this.refreshRoom(n):this.logger.error("Got room state event for unknown room ".concat(e.getRoomId(),"!"))}),this.logger=e.getChild("[MatrixRTCSessionManager]")}start(){for(var e of null!==(t=this.client.getRooms())&&void 0!==t?t:[]){var t,n=Xl.sessionForRoom(this.client,e,this.sessionDescription);n.memberships.length>0&&this.roomSessions.set(e.roomId,n)}this.client.on(Pe.Room,this.onRoom),this.client.on(pt.Events,this.onRoomState)}stop(){for(var e of this.roomSessions.values())e.stop();this.roomSessions.clear(),this.client.off(Pe.Room,this.onRoom),this.client.off(pt.Events,this.onRoomState)}getActiveRoomSession(e){return this.roomSessions.get(e.roomId)}getRoomSession(e){return this.roomSessions.has(e.roomId)||this.roomSessions.set(e.roomId,Xl.sessionForRoom(this.client,e,this.sessionDescription)),this.roomSessions.get(e.roomId)}refreshRoom(e){var t=!this.roomSessions.has(e.roomId),n=this.getRoomSession(e),r=n.memberships.length>0&&!t;n.onRTCSessionMemberUpdate();var i=n.memberships.length>0;r&&!i?(this.logger.trace("Session ended for ".concat(e.roomId," (").concat(n.memberships.length," members)")),this.emit(lC.SessionEnded,e.roomId,this.roomSessions.get(e.roomId))):!r&&i&&(this.logger.trace("Session started for ".concat(e.roomId," (").concat(n.memberships.length," members)")),this.emit(lC.SessionStarted,e.roomId,this.roomSessions.get(e.roomId)))}}function Ak(e){return t=>{var n,r;return(null===(n=t.content)||void 0===n||null===(n=n["m.relates_to"])||void 0===n?void 0:n.event_id)!==e||(null===(r=t.content)||void 0===r||null===(r=r["m.relates_to"])||void 0===r?void 0:r.rel_type)===Sn.name}}function QJ(e){return pA.apply(this,arguments)}function pA(){return(pA=H(function*(e){if(!globalThis.crypto.subtle)throw new Error("Crypto.subtle is not available: insecure context?");var t=(new TextEncoder).encode(e),n=yield globalThis.crypto.subtle.digest("SHA-256",t);return new Uint8Array(n)})).apply(this,arguments)}class ly extends Error{}function J0e(e){return decodeURIComponent(atob(e).replace(/(.)/g,(e,t)=>{let n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n}))}function Q0e(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return J0e(t)}catch{return atob(t)}}function ZJ(e,t){if("string"!=typeof e)throw new ly("Invalid token specified: must be a string");t||(t={});const n=!0===t.header?0:1,r=e.split(".")[n];if("string"!=typeof r)throw new ly(`Invalid token specified: missing part #${n+1}`);let i;try{i=Q0e(r)}catch(e){throw new ly(`Invalid token specified: invalid base64 for part #${n+1} (${e.message})`)}try{return JSON.parse(i)}catch(e){throw new ly(`Invalid token specified: invalid json for part #${n+1} (${e.message})`)}}ly.prototype.name="InvalidTokenError";var Mc,Dc,Z0e={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},fb=(e=>(e[e.NONE=0]="NONE",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.DEBUG=4]="DEBUG",e))(fb||{});(e=>{e.reset=function(){Mc=3,Dc=Z0e},e.setLevel=function(e){if(!(0<=e&&e<=4))throw new Error("Invalid log level");Mc=e},e.setLogger=function(e){Dc=e}})(fb||(fb={}));var Ir=class e{constructor(e){this._name=e}debug(...t){Mc>=4&&Dc.debug(e._format(this._name,this._method),...t)}info(...t){Mc>=3&&Dc.info(e._format(this._name,this._method),...t)}warn(...t){Mc>=2&&Dc.warn(e._format(this._name,this._method),...t)}error(...t){Mc>=1&&Dc.error(e._format(this._name,this._method),...t)}throw(e){throw this.error(e),e}create(e){const t=Object.create(this);return t._method=e,t.debug("begin"),t}static createStatic(t,n){const r=new e(`${t}.${n}`);return r.debug("begin"),r}static _format(e,t){const n=`[${e}]`;return t?`${n} ${t}:`:n}static debug(t,...n){Mc>=4&&Dc.debug(e._format(t),...n)}static info(t,...n){Mc>=3&&Dc.info(e._format(t),...n)}static warn(t,...n){Mc>=2&&Dc.warn(e._format(t),...n)}static error(t,...n){Mc>=1&&Dc.error(e._format(t),...n)}};fb.reset();var uC=class{static decode(e){try{return ZJ(e)}catch(e){throw Ir.error("JwtUtils.decode",e),e}}static async generateSignedJwt(e,t,n){const r=`${Qa.encodeBase64Url((new TextEncoder).encode(JSON.stringify(e)))}.${Qa.encodeBase64Url((new TextEncoder).encode(JSON.stringify(t)))}`,i=await window.crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,(new TextEncoder).encode(r));return`${r}.${Qa.encodeBase64Url(new Uint8Array(i))}`}},eye="10000000-1000-4000-8000-100000000000",mA=e=>btoa([...new Uint8Array(e)].map(e=>String.fromCharCode(e)).join("")),eQ=class e{static _randomWord(){const e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]}static generateUUIDv4(){return eye.replace(/[018]/g,t=>(+t^e._randomWord()&15>>+t/4).toString(16)).replace(/-/g,"")}static generateCodeVerifier(){return e.generateUUIDv4()+e.generateUUIDv4()+e.generateUUIDv4()}static async generateCodeChallenge(e){if(!crypto.subtle)throw new Error("Crypto.subtle is available only in secure contexts (HTTPS).");try{const t=(new TextEncoder).encode(e),n=await crypto.subtle.digest("SHA-256",t);return mA(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}catch(e){throw Ir.error("CryptoUtils.generateCodeChallenge",e),e}}static generateBasicAuth(e,t){const n=(new TextEncoder).encode([e,t].join(":"));return mA(n)}static async hash(e,t){const n=(new TextEncoder).encode(t),r=await crypto.subtle.digest(e,n);return new Uint8Array(r)}static async customCalculateJwkThumbprint(t){let n;switch(t.kty){case"RSA":n={e:t.e,kty:t.kty,n:t.n};break;case"EC":n={crv:t.crv,kty:t.kty,x:t.x,y:t.y};break;case"OKP":n={crv:t.crv,kty:t.kty,x:t.x};break;case"oct":n={crv:t.k,kty:t.kty};break;default:throw new Error("Unknown jwk type")}const r=await e.hash("SHA-256",JSON.stringify(n));return e.encodeBase64Url(r)}static async generateDPoPProof({url:t,accessToken:n,httpMethod:r,keyPair:i,nonce:o}){let s,a;const c={jti:window.crypto.randomUUID(),htm:r??"GET",htu:t,iat:Math.floor(Date.now()/1e3)};n&&(s=await e.hash("SHA-256",n),a=e.encodeBase64Url(s),c.ath=a),o&&(c.nonce=o);try{const e=await crypto.subtle.exportKey("jwk",i.publicKey),t={alg:"ES256",typ:"dpop+jwt",jwk:{crv:e.crv,kty:e.kty,x:e.x,y:e.y}};return await uC.generateSignedJwt(t,c,i.privateKey)}catch(e){throw e instanceof TypeError?new Error(`Error exporting dpop public key: ${e.message}`):e}}static async generateDPoPJkt(t){try{const n=await crypto.subtle.exportKey("jwk",t.publicKey);return await e.customCalculateJwkThumbprint(n)}catch(e){throw e instanceof TypeError?new Error(`Could not retrieve dpop keys from storage: ${e.message}`):e}}static async generateDPoPKeys(){return await window.crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign","verify"])}};eQ.encodeBase64Url=e=>mA(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_");var Qa=eQ,tye=class{constructor(e){this._name=e,this._callbacks=[],this._logger=new Ir(`Event('${this._name}')`)}addHandler(e){return this._callbacks.push(e),()=>this.removeHandler(e)}removeHandler(e){const t=this._callbacks.lastIndexOf(e);t>=0&&this._callbacks.splice(t,1)}async raise(...e){this._logger.debug("raise:",...e);for(const t of this._callbacks)await t(...e)}},dC=class e extends tye{constructor(){super(...arguments),this._logger=new Ir(`Timer('${this._name}')`),this._timerHandle=null,this._expiration=0,this._callback=()=>{const t=this._expiration-e.getEpochTime();this._logger.debug("timer completes in",t),this._expiration<=e.getEpochTime()&&(this.cancel(),super.raise())}}static getEpochTime(){return Math.floor(Date.now()/1e3)}init(t){const n=this._logger.create("init");t=Math.max(Math.floor(t),1);const r=e.getEpochTime()+t;if(this.expiration===r&&this._timerHandle)return void n.debug("skipping since already initialized for expiration at",this.expiration);this.cancel(),n.debug("using duration",t),this._expiration=r;const i=Math.min(t,5);this._timerHandle=setInterval(this._callback,1e3*i)}get expiration(){return this._expiration}cancel(){this._logger.create("cancel"),this._timerHandle&&(clearInterval(this._timerHandle),this._timerHandle=null)}},J$=class{static readParams(e,t="query"){if(!e)throw new TypeError("Invalid URL");const n=new URL(e,"http://127.0.0.1")["fragment"===t?"hash":"search"];return new URLSearchParams(n.slice(1))}},gA=";",tv=class extends Error{constructor(e,t){var n,r,i;if(super(e.error_description||e.error||""),this.form=t,this.name="ErrorResponse",!e.error)throw Ir.error("ErrorResponse","No error passed"),new Error("No error passed");this.error=e.error,this.error_description=null!=(n=e.error_description)?n:null,this.error_uri=null!=(r=e.error_uri)?r:null,this.state=e.userState,this.session_state=null!=(i=e.session_state)?i:null,this.url_state=e.url_state}},nye=class extends Error{constructor(e){super(e),this.name="ErrorTimeout"}},rye=class{constructor(){this._logger=new Ir("InMemoryWebStorage"),this._data={}}clear(){this._logger.create("clear"),this._data={}}getItem(e){return this._logger.create(`getItem('${e}')`),this._data[e]}setItem(e,t){this._logger.create(`setItem('${e}')`),this._data[e]=t}removeItem(e){this._logger.create(`removeItem('${e}')`),delete this._data[e]}get length(){return Object.getOwnPropertyNames(this._data).length}key(e){return Object.getOwnPropertyNames(this._data)[e]}},vA=class extends Error{constructor(e,t){super(t),this.name="ErrorDPoPNonce",this.nonce=e}},nO=class{constructor(e=[],t=null,n={}){this._jwtHandler=t,this._extraHeaders=n,this._logger=new Ir("JsonService"),this._contentTypes=[],this._contentTypes.push(...e,"application/json"),t&&this._contentTypes.push("application/jwt")}async fetchWithTimeout(e,t={}){const{timeoutInSeconds:n,...r}=t;if(!n)return await fetch(e,r);const i=new AbortController,o=setTimeout(()=>i.abort(),1e3*n);try{return await fetch(e,{...t,signal:i.signal})}catch(e){throw e instanceof DOMException&&"AbortError"===e.name?new nye("Network timed out"):e}finally{clearTimeout(o)}}async getJson(e,{token:t,credentials:n,timeoutInSeconds:r}={}){const i=this._logger.create("getJson"),o={Accept:this._contentTypes.join(", ")};let s;t&&(i.debug("token passed, setting Authorization header"),o.Authorization="Bearer "+t),this.appendExtraHeaders(o);try{i.debug("url:",e),s=await this.fetchWithTimeout(e,{method:"GET",headers:o,timeoutInSeconds:r,credentials:n})}catch(e){throw i.error("Network Error"),e}i.debug("HTTP response received, status",s.status);const a=s.headers.get("Content-Type");if(a&&!this._contentTypes.find(e=>a.startsWith(e))&&i.throw(new Error(`Invalid response Content-Type: ${a??"undefined"}, from URL: ${e}`)),s.ok&&this._jwtHandler&&a?.startsWith("application/jwt"))return await this._jwtHandler(await s.text());let c;try{c=await s.json()}catch(e){throw i.error("Error parsing JSON response",e),s.ok?e:new Error(`${s.statusText} (${s.status})`)}if(!s.ok)throw i.error("Error from server:",c),c.error?new tv(c):new Error(`${s.statusText} (${s.status}): ${JSON.stringify(c)}`);return c}async postForm(e,{body:t,basicAuth:n,timeoutInSeconds:r,initCredentials:i,extraHeaders:o}){const s=this._logger.create("postForm"),a={Accept:this._contentTypes.join(", "),"Content-Type":"application/x-www-form-urlencoded",...o};let c;void 0!==n&&(a.Authorization="Basic "+n),this.appendExtraHeaders(a);try{s.debug("url:",e),c=await this.fetchWithTimeout(e,{method:"POST",headers:a,body:t,timeoutInSeconds:r,credentials:i})}catch(e){throw s.error("Network error"),e}s.debug("HTTP response received, status",c.status);const l=c.headers.get("Content-Type");if(l&&!this._contentTypes.find(e=>l.startsWith(e)))throw new Error(`Invalid response Content-Type: ${l??"undefined"}, from URL: ${e}`);const u=await c.text();let d={};if(u)try{d=JSON.parse(u)}catch(e){throw s.error("Error parsing JSON response",e),c.ok?e:new Error(`${c.statusText} (${c.status})`)}if(!c.ok){if(s.error("Error from server:",d),c.headers.has("dpop-nonce")){const e=c.headers.get("dpop-nonce");throw new vA(e,`${JSON.stringify(d)}`)}throw d.error?new tv(d,t):new Error(`${c.statusText} (${c.status}): ${JSON.stringify(d)}`)}return d}appendExtraHeaders(e){const t=this._logger.create("appendExtraHeaders"),n=Object.keys(this._extraHeaders),r=["authorization","accept","content-type"];0!==n.length&&n.forEach(n=>{if(r.includes(n.toLocaleLowerCase()))return void t.warn("Protected header could not be overridden",n,r);const i="function"==typeof this._extraHeaders[n]?this._extraHeaders[n]():this._extraHeaders[n];i&&""!==i&&(e[n]=i)})}},tQ=class{constructor(e){this._settings=e,this._logger=new Ir("MetadataService"),this._signingKeys=null,this._metadata=null,this._metadataUrl=this._settings.metadataUrl,this._jsonService=new nO(["application/jwk-set+json"],null,this._settings.extraHeaders),this._settings.signingKeys&&(this._logger.debug("using signingKeys from settings"),this._signingKeys=this._settings.signingKeys),this._settings.metadata&&(this._logger.debug("using metadata from settings"),this._metadata=this._settings.metadata),this._settings.fetchRequestCredentials&&(this._logger.debug("using fetchRequestCredentials from settings"),this._fetchRequestCredentials=this._settings.fetchRequestCredentials)}resetSigningKeys(){this._signingKeys=null}async getMetadata(){const e=this._logger.create("getMetadata");if(this._metadata)return e.debug("using cached values"),this._metadata;if(!this._metadataUrl)throw e.throw(new Error("No authority or metadataUrl configured on settings")),null;e.debug("getting metadata from",this._metadataUrl);const t=await this._jsonService.getJson(this._metadataUrl,{credentials:this._fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return e.debug("merging remote JSON with seed metadata"),this._metadata=Object.assign({},this._settings.metadataSeed,t),this._metadata}getIssuer(){return this._getMetadataProperty("issuer")}getAuthorizationEndpoint(){return this._getMetadataProperty("authorization_endpoint")}getUserInfoEndpoint(){return this._getMetadataProperty("userinfo_endpoint")}getTokenEndpoint(e=!0){return this._getMetadataProperty("token_endpoint",e)}getCheckSessionIframe(){return this._getMetadataProperty("check_session_iframe",!0)}getEndSessionEndpoint(){return this._getMetadataProperty("end_session_endpoint",!0)}getRevocationEndpoint(e=!0){return this._getMetadataProperty("revocation_endpoint",e)}getKeysEndpoint(e=!0){return this._getMetadataProperty("jwks_uri",e)}async _getMetadataProperty(e,t=!1){const n=this._logger.create(`_getMetadataProperty('${e}')`),r=await this.getMetadata();if(n.debug("resolved"),void 0===r[e]){if(!0===t)return void n.warn("Metadata does not contain optional property");n.throw(new Error("Metadata does not contain property "+e))}return r[e]}async getSigningKeys(){const e=this._logger.create("getSigningKeys");if(this._signingKeys)return e.debug("returning signingKeys from cache"),this._signingKeys;const t=await this.getKeysEndpoint(!1);e.debug("got jwks_uri",t);const n=await this._jsonService.getJson(t,{timeoutInSeconds:this._settings.requestTimeoutInSeconds});if(e.debug("got key set",n),!Array.isArray(n.keys))throw e.throw(new Error("Missing keys on keyset")),null;return this._signingKeys=n.keys,this._signingKeys}},X3=class{constructor({prefix:e="oidc.",store:t=localStorage}={}){this._logger=new Ir("WebStorageStateStore"),this._store=t,this._prefix=e}async set(e,t){this._logger.create(`set('${e}')`),e=this._prefix+e,await this._store.setItem(e,t)}async get(e){return this._logger.create(`get('${e}')`),e=this._prefix+e,await this._store.getItem(e)}async remove(e){this._logger.create(`remove('${e}')`),e=this._prefix+e;const t=await this._store.getItem(e);return await this._store.removeItem(e),t}async getAllKeys(){this._logger.create("getAllKeys");const e=await this._store.length,t=[];for(let n=0;n{const t=this._logger.create("_getClaimsFromJwt");try{const n=uC.decode(e);return t.debug("JWT decoding successful"),n}catch(e){throw t.error("Error parsing JWT response"),e}},this._jsonService=new nO(void 0,this._getClaimsFromJwt,this._settings.extraHeaders)}async getClaims(e){const t=this._logger.create("getClaims");e||this._logger.throw(new Error("No token passed"));const n=await this._metadataService.getUserInfoEndpoint();t.debug("got userinfo url",n);const r=await this._jsonService.getJson(n,{token:e,credentials:this._settings.fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return t.debug("got claims",r),r}},nQ=class{constructor(e,t){this._settings=e,this._metadataService=t,this._logger=new Ir("TokenClient"),this._jsonService=new nO(this._settings.revokeTokenAdditionalContentTypes,null,this._settings.extraHeaders)}async exchangeCode({grant_type:e="authorization_code",redirect_uri:t=this._settings.redirect_uri,client_id:n=this._settings.client_id,client_secret:r=this._settings.client_secret,extraHeaders:i,...o}){const s=this._logger.create("exchangeCode");n||s.throw(new Error("A client_id is required")),t||s.throw(new Error("A redirect_uri is required")),o.code||s.throw(new Error("A code is required"));const a=new URLSearchParams({grant_type:e,redirect_uri:t});for(const[e,t]of Object.entries(o))null!=t&&a.set(e,t);let c;switch(this._settings.client_authentication){case"client_secret_basic":if(!r)throw s.throw(new Error("A client_secret is required")),null;c=Qa.generateBasicAuth(n,r);break;case"client_secret_post":a.append("client_id",n),r&&a.append("client_secret",r)}const l=await this._metadataService.getTokenEndpoint(!1);s.debug("got token endpoint");const u=await this._jsonService.postForm(l,{body:a,basicAuth:c,timeoutInSeconds:this._settings.requestTimeoutInSeconds,initCredentials:this._settings.fetchRequestCredentials,extraHeaders:i});return s.debug("got response"),u}async exchangeCredentials({grant_type:e="password",client_id:t=this._settings.client_id,client_secret:n=this._settings.client_secret,scope:r=this._settings.scope,...i}){const o=this._logger.create("exchangeCredentials");t||o.throw(new Error("A client_id is required"));const s=new URLSearchParams({grant_type:e});this._settings.omitScopeWhenRequesting||s.set("scope",r);for(const[e,t]of Object.entries(i))null!=t&&s.set(e,t);let a;switch(this._settings.client_authentication){case"client_secret_basic":if(!n)throw o.throw(new Error("A client_secret is required")),null;a=Qa.generateBasicAuth(t,n);break;case"client_secret_post":s.append("client_id",t),n&&s.append("client_secret",n)}const c=await this._metadataService.getTokenEndpoint(!1);o.debug("got token endpoint");const l=await this._jsonService.postForm(c,{body:s,basicAuth:a,timeoutInSeconds:this._settings.requestTimeoutInSeconds,initCredentials:this._settings.fetchRequestCredentials});return o.debug("got response"),l}async exchangeRefreshToken({grant_type:e="refresh_token",client_id:t=this._settings.client_id,client_secret:n=this._settings.client_secret,timeoutInSeconds:r,extraHeaders:i,...o}){const s=this._logger.create("exchangeRefreshToken");t||s.throw(new Error("A client_id is required")),o.refresh_token||s.throw(new Error("A refresh_token is required"));const a=new URLSearchParams({grant_type:e});for(const[e,t]of Object.entries(o))Array.isArray(t)?t.forEach(t=>a.append(e,t)):null!=t&&a.set(e,t);let c;switch(this._settings.client_authentication){case"client_secret_basic":if(!n)throw s.throw(new Error("A client_secret is required")),null;c=Qa.generateBasicAuth(t,n);break;case"client_secret_post":a.append("client_id",t),n&&a.append("client_secret",n)}const l=await this._metadataService.getTokenEndpoint(!1);s.debug("got token endpoint");const u=await this._jsonService.postForm(l,{body:a,basicAuth:c,timeoutInSeconds:r,initCredentials:this._settings.fetchRequestCredentials,extraHeaders:i});return s.debug("got response"),u}async revoke(e){var t;const n=this._logger.create("revoke");e.token||n.throw(new Error("A token is required"));const r=await this._metadataService.getRevocationEndpoint(!1);n.debug(`got revocation endpoint, revoking ${null!=(t=e.token_type_hint)?t:"default token type"}`);const i=new URLSearchParams;for(const[t,n]of Object.entries(e))null!=n&&i.set(t,n);i.set("client_id",this._settings.client_id),this._settings.client_secret&&i.set("client_secret",this._settings.client_secret),await this._jsonService.postForm(r,{body:i,timeoutInSeconds:this._settings.requestTimeoutInSeconds}),n.debug("got response")}},lye=class{constructor(e,t,n){this._settings=e,this._metadataService=t,this._claimsService=n,this._logger=new Ir("ResponseValidator"),this._userInfoService=new cye(this._settings,this._metadataService),this._tokenClient=new nQ(this._settings,this._metadataService)}async validateSigninResponse(e,t,n){const r=this._logger.create("validateSigninResponse");this._processSigninState(e,t),r.debug("state processed"),await this._processCode(e,t,n),r.debug("code processed"),e.isOpenId&&this._validateIdTokenAttributes(e),r.debug("tokens validated"),await this._processClaims(e,t?.skipUserInfo,e.isOpenId),r.debug("claims processed")}async validateCredentialsResponse(e,t){const n=this._logger.create("validateCredentialsResponse");e.isOpenId&&e.id_token&&this._validateIdTokenAttributes(e),n.debug("tokens validated"),await this._processClaims(e,t,e.isOpenId),n.debug("claims processed")}async validateRefreshResponse(e,t){const n=this._logger.create("validateRefreshResponse");e.userState=t.data,null!=e.session_state||(e.session_state=t.session_state),null!=e.scope||(e.scope=t.scope),e.isOpenId&&e.id_token&&(this._validateIdTokenAttributes(e,t.id_token),n.debug("ID Token validated")),e.id_token||(e.id_token=t.id_token,e.profile=t.profile);const r=e.isOpenId&&!!e.id_token;await this._processClaims(e,!1,r),n.debug("claims processed")}validateSignoutResponse(e,t){const n=this._logger.create("validateSignoutResponse");if(t.id!==e.state&&n.throw(new Error("State does not match")),n.debug("state validated"),e.userState=t.data,e.error)throw n.warn("Response was error",e.error),new tv(e)}_processSigninState(e,t){const n=this._logger.create("_processSigninState");if(t.id!==e.state&&n.throw(new Error("State does not match")),t.client_id||n.throw(new Error("No client_id on state")),t.authority||n.throw(new Error("No authority on state")),this._settings.authority!==t.authority&&n.throw(new Error("authority mismatch on settings vs. signin state")),this._settings.client_id&&this._settings.client_id!==t.client_id&&n.throw(new Error("client_id mismatch on settings vs. signin state")),n.debug("state validated"),e.userState=t.data,e.url_state=t.url_state,null!=e.scope||(e.scope=t.scope),e.error)throw n.warn("Response was error",e.error),new tv(e);t.code_verifier&&!e.code&&n.throw(new Error("Expected code in response"))}async _processClaims(e,t=!1,n=!0){const r=this._logger.create("_processClaims");if(e.profile=this._claimsService.filterProtocolClaims(e.profile),t||!this._settings.loadUserInfo||!e.access_token)return void r.debug("not loading user info");r.debug("loading user info");const i=await this._userInfoService.getClaims(e.access_token);r.debug("user info claims received from user info endpoint"),n&&i.sub!==e.profile.sub&&r.throw(new Error("subject from UserInfo response does not match subject in ID Token")),e.profile=this._claimsService.mergeClaims(e.profile,this._claimsService.filterProtocolClaims(i)),r.debug("user info claims received, updated profile:",e.profile)}async _processCode(e,t,n){const r=this._logger.create("_processCode");if(e.code){r.debug("Validating code");const i=await this._tokenClient.exchangeCode({client_id:t.client_id,client_secret:t.client_secret,code:e.code,redirect_uri:t.redirect_uri,code_verifier:t.code_verifier,extraHeaders:n,...t.extraTokenParams});Object.assign(e,i)}else r.debug("No code to process")}_validateIdTokenAttributes(e,t){var n;const r=this._logger.create("_validateIdTokenAttributes");r.debug("decoding ID Token JWT");const i=uC.decode(null!=(n=e.id_token)?n:"");if(i.sub||r.throw(new Error("ID Token is missing a subject claim")),t){const e=uC.decode(t);i.sub!==e.sub&&r.throw(new Error("sub in id_token does not match current sub")),i.auth_time&&i.auth_time!==e.auth_time&&r.throw(new Error("auth_time in id_token does not match original auth_time")),i.azp&&i.azp!==e.azp&&r.throw(new Error("azp in id_token does not match original azp")),!i.azp&&e.azp&&r.throw(new Error("azp not in id_token, but present in original id_token"))}e.profile=i}},fC=class e{constructor(e){this.id=e.id||Qa.generateUUIDv4(),this.data=e.data,e.created&&e.created>0?this.created=e.created:this.created=dC.getEpochTime(),this.request_type=e.request_type,this.url_state=e.url_state}toStorageString(){return new Ir("State").create("toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state})}static fromStorageString(t){return Ir.createStatic("State","fromStorageString"),Promise.resolve(new e(JSON.parse(t)))}static async clearStaleState(t,n){const r=Ir.createStatic("State","clearStaleState"),i=dC.getEpochTime()-n,o=await t.getAllKeys();r.debug("got keys",o);for(let n=0;nS.searchParams.append("resource",e));for(const[e,t]of Object.entries({response_mode:c,...w,...m}))null!=t&&S.searchParams.append(e,t.toString());return new e({url:S.href,state:_})}};rQ._logger=new Ir("SigninRequest");var uye=rQ,dye="openid",Kw=class{constructor(e){if(this.access_token="",this.token_type="",this.profile={},this.state=e.get("state"),this.session_state=e.get("session_state"),this.state){const e=decodeURIComponent(this.state).split(gA);this.state=e[0],e.length>1&&(this.url_state=e.slice(1).join(gA))}this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri"),this.code=e.get("code")}get expires_in(){if(void 0!==this.expires_at)return this.expires_at-dC.getEpochTime()}set expires_in(e){"string"==typeof e&&(e=Number(e)),void 0!==e&&e>=0&&(this.expires_at=Math.floor(e)+dC.getEpochTime())}get isOpenId(){var e;return(null==(e=this.scope)?void 0:e.split(" ").includes(dye))||!!this.id_token}},fye=class{constructor({url:e,state_data:t,id_token_hint:n,post_logout_redirect_uri:r,extraQueryParams:i,request_type:o,client_id:s}){if(this._logger=new Ir("SignoutRequest"),!e)throw this._logger.error("ctor: No url passed"),new Error("url");const a=new URL(e);n&&a.searchParams.append("id_token_hint",n),s&&a.searchParams.append("client_id",s),r&&(a.searchParams.append("post_logout_redirect_uri",r),t&&(this.state=new fC({data:t,request_type:o}),a.searchParams.append("state",this.state.id)));for(const[e,t]of Object.entries({...i}))null!=t&&a.searchParams.append(e,t.toString());this.url=a.href}},hye=class{constructor(e){this.state=e.get("state"),this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri")}},pye=["nbf","jti","auth_time","nonce","acr","amr","azp","at_hash"],mye=["sub","iss","aud","exp","iat"],gye=class{constructor(e){this._settings=e,this._logger=new Ir("ClaimsService")}filterProtocolClaims(e){const t={...e};if(this._settings.filterProtocolClaims){let e;e=Array.isArray(this._settings.filterProtocolClaims)?this._settings.filterProtocolClaims:pye;for(const n of e)mye.includes(n)||delete t[n]}return t}mergeClaims(e,t){const n={...e};for(const[e,r]of Object.entries(t))if(n[e]!==r)if(Array.isArray(n[e])||Array.isArray(r))if("replace"==this._settings.mergeClaimsStrategy.array)n[e]=r;else{const t=Array.isArray(n[e])?n[e]:[n[e]];for(const e of Array.isArray(r)?r:[r])t.includes(e)||t.push(e);n[e]=t}else"object"==typeof n[e]&&"object"==typeof r?n[e]=this.mergeClaims(n[e],r):n[e]=r;return n}},vye=class{constructor(e,t){this.keys=e,this.nonce=t}},iO=class{constructor(e,t){this._logger=new Ir("OidcClient"),this.settings=e instanceof yA?e:new yA(e),this.metadataService=t??new tQ(this.settings),this._claimsService=new gye(this.settings),this._validator=new lye(this.settings,this.metadataService,this._claimsService),this._tokenClient=new nQ(this.settings,this.metadataService)}async createSigninRequest({state:e,request:t,request_uri:n,request_type:r,id_token_hint:i,login_hint:o,skipUserInfo:s,nonce:a,url_state:c,response_type:l=this.settings.response_type,scope:u=this.settings.scope,redirect_uri:d=this.settings.redirect_uri,prompt:h=this.settings.prompt,display:p=this.settings.display,max_age:f=this.settings.max_age,ui_locales:m=this.settings.ui_locales,acr_values:g=this.settings.acr_values,resource:v=this.settings.resource,response_mode:y=this.settings.response_mode,extraQueryParams:b=this.settings.extraQueryParams,extraTokenParams:w=this.settings.extraTokenParams,dpopJkt:_,omitScopeWhenRequesting:S=this.settings.omitScopeWhenRequesting}){const E=this._logger.create("createSigninRequest");if("code"!==l)throw new Error("Only the Authorization Code flow (with PKCE) is supported");const C=await this.metadataService.getAuthorizationEndpoint();E.debug("Received authorization endpoint",C);const k=await uye.create({url:C,authority:this.settings.authority,client_id:this.settings.client_id,redirect_uri:d,response_type:l,scope:u,state_data:e,url_state:c,prompt:h,display:p,max_age:f,ui_locales:m,id_token_hint:i,login_hint:o,acr_values:g,dpopJkt:_,resource:v,request:t,request_uri:n,extraQueryParams:b,extraTokenParams:w,request_type:r,response_mode:y,client_secret:this.settings.client_secret,skipUserInfo:s,nonce:a,disablePKCE:this.settings.disablePKCE,omitScopeWhenRequesting:S});await this.clearStaleState();const T=k.state;return await this.settings.stateStore.set(T.id,T.toStorageString()),k}async readSigninResponseState(e,t=!1){const n=this._logger.create("readSigninResponseState"),r=new Kw(J$.readParams(e,this.settings.response_mode));if(!r.state)throw n.throw(new Error("No state in response")),null;const i=await this.settings.stateStore[t?"remove":"get"](r.state);if(!i)throw n.throw(new Error("No matching state found in storage")),null;return{state:await rO.fromStorageString(i),response:r}}async processSigninResponse(e,t){const n=this._logger.create("processSigninResponse"),{state:r,response:i}=await this.readSigninResponseState(e,!0);if(n.debug("received state from storage; validating response"),this.settings.dpop&&this.settings.dpop.store){const e=await this.getDpopProof(this.settings.dpop.store);t={...t,DPoP:e}}try{await this._validator.validateSigninResponse(i,r,t)}catch(e){if(!(e instanceof vA&&this.settings.dpop))throw e;{const n=await this.getDpopProof(this.settings.dpop.store,e.nonce);t.DPoP=n,await this._validator.validateSigninResponse(i,r,t)}}return i}async getDpopProof(e,t){let n,r;return(await e.getAllKeys()).includes(this.settings.client_id)?(r=await e.get(this.settings.client_id),r.nonce!==t&&t&&(r.nonce=t,await e.set(this.settings.client_id,r))):(n=await Qa.generateDPoPKeys(),r=new vye(n,t),await e.set(this.settings.client_id,r)),await Qa.generateDPoPProof({url:await this.metadataService.getTokenEndpoint(!1),httpMethod:"POST",keyPair:r.keys,nonce:r.nonce})}async processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:n=!1,extraTokenParams:r={}}){const i=await this._tokenClient.exchangeCredentials({username:e,password:t,...r}),o=new Kw(new URLSearchParams);return Object.assign(o,i),await this._validator.validateCredentialsResponse(o,n),o}async useRefreshToken({state:e,redirect_uri:t,resource:n,timeoutInSeconds:r,extraHeaders:i,extraTokenParams:o}){var s;const a=this._logger.create("useRefreshToken");let c,l;if(void 0===this.settings.refreshTokenAllowedScope)c=e.scope;else{const t=this.settings.refreshTokenAllowedScope.split(" ");c=((null==(s=e.scope)?void 0:s.split(" "))||[]).filter(e=>t.includes(e)).join(" ")}if(this.settings.dpop&&this.settings.dpop.store){const e=await this.getDpopProof(this.settings.dpop.store);i={...i,DPoP:e}}try{l=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:c,redirect_uri:t,resource:n,timeoutInSeconds:r,extraHeaders:i,...o})}catch(s){if(!(s instanceof vA&&this.settings.dpop))throw s;i.DPoP=await this.getDpopProof(this.settings.dpop.store,s.nonce),l=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:c,redirect_uri:t,resource:n,timeoutInSeconds:r,extraHeaders:i,...o})}const u=new Kw(new URLSearchParams);return Object.assign(u,l),a.debug("validating response",u),await this._validator.validateRefreshResponse(u,{...e,scope:c}),u}async createSignoutRequest({state:e,id_token_hint:t,client_id:n,request_type:r,post_logout_redirect_uri:i=this.settings.post_logout_redirect_uri,extraQueryParams:o=this.settings.extraQueryParams}={}){const s=this._logger.create("createSignoutRequest"),a=await this.metadataService.getEndSessionEndpoint();if(!a)throw s.throw(new Error("No end session endpoint")),null;s.debug("Received end session endpoint",a),!n&&i&&!t&&(n=this.settings.client_id);const c=new fye({url:a,id_token_hint:t,client_id:n,post_logout_redirect_uri:i,state_data:e,extraQueryParams:o,request_type:r});await this.clearStaleState();const l=c.state;return l&&(s.debug("Signout request has state to persist"),await this.settings.stateStore.set(l.id,l.toStorageString())),c}async readSignoutResponseState(e,t=!1){const n=this._logger.create("readSignoutResponseState"),r=new hye(J$.readParams(e,this.settings.response_mode));if(!r.state){if(n.debug("No state in response"),r.error)throw n.warn("Response was error:",r.error),new tv(r);return{state:void 0,response:r}}const i=await this.settings.stateStore[t?"remove":"get"](r.state);if(!i)throw n.throw(new Error("No matching state found in storage")),null;return{state:await fC.fromStorageString(i),response:r}}async processSignoutResponse(e){const t=this._logger.create("processSignoutResponse"),{state:n,response:r}=await this.readSignoutResponseState(e,!0);return n?(t.debug("Received state from storage; validating response"),this._validator.validateSignoutResponse(r,n)):t.debug("No state from storage; skipping response validation"),r}clearStaleState(){return this._logger.create("clearStaleState"),fC.clearStaleState(this.settings.stateStore,this.settings.staleStateAgeInSeconds)}async revokeToken(e,t){return this._logger.create("revokeToken"),await this._tokenClient.revoke({token:e,token_type_hint:t})}},Qi=function(e){return e.NotSupported="OIDC authentication not supported",e.Misconfigured="OIDC is misconfigured",e.General="Something went wrong with OIDC discovery",e.OpSupport="Configured OIDC OP does not support required functions",e.DynamicRegistrationNotSupported="Dynamic registration not supported",e.DynamicRegistrationFailed="Dynamic registration failed",e.DynamicRegistrationInvalid="Dynamic registration invalid response",e.CodeExchangeFailed="Failed to exchange code for token",e.InvalidBearerTokenResponse="Invalid bearer token response",e.InvalidIdToken="Invalid ID token",e.MissingOrInvalidStoredState="State required to finish logging in is not found in storage.",e}({}),sO=e=>!!e&&"object"==typeof e&&!Array.isArray(e),fu=(e,t)=>!(!e[t]||!Ry(e,t))||(M.error("Missing or invalid property: ".concat(t)),!1),Ry=(e,t)=>!e[t]||"string"==typeof e[t]||(M.error("Invalid property: ".concat(t)),!1),Q$=(e,t)=>!!(!e[t]||Array.isArray(e[t])&&e[t].every(e=>"string"==typeof e))||(M.error("Invalid property: ".concat(t)),!1),Pk=(e,t,n)=>{var r=e[t];return!!(r&&Array.isArray(r)&&r.includes(n))||(M.error("Invalid property: ".concat(t,". ").concat(n," is required.")),!1)},sQ=e=>{if(!sO(e))throw M.error("Issuer configuration not found or malformed"),new Error(Qi.OpSupport);if(![fu(e,"issuer"),fu(e,"authorization_endpoint"),fu(e,"token_endpoint"),fu(e,"revocation_endpoint"),Ry(e,"registration_endpoint"),Ry(e,"account_management_uri"),Ry(e,"device_authorization_endpoint"),Q$(e,"account_management_actions_supported"),Pk(e,"response_types_supported","code"),Pk(e,"grant_types_supported","authorization_code"),Pk(e,"code_challenge_methods_supported","S256"),Q$(e,"prompt_values_supported")].some(e=>!e))return e;throw M.error("Issuer configuration not valid"),new Error(Qi.OpSupport)},oQ=e=>{try{return ZJ(e)}catch(e){throw M.error("Could not decode id_token",e),e}},aQ=(e,t,n,r)=>{try{if(!e)throw new Error("No ID token");var i=oQ(e);if(i.iss!==t)throw new Error("Invalid issuer");if(!("string"==typeof i.aud?[i.aud]:i.aud).includes(n))throw new Error("Invalid audience");if(void 0!==r&&i.nonce!==r)throw new Error("Invalid nonce");if(!i.exp||Date.now()>1e3*i.exp)throw new Error("Invalid expiry")}catch(e){throw M.error("Invalid ID token",e),new Error(Qi.InvalidIdToken)}};function cQ(e){if(!sO(e))throw M.error("Stored user state not found"),new Error(Qi.MissingOrInvalidStoredState);if([fu(e,"homeserverUrl"),fu(e,"nonce"),Ry(e,"identityServerUrl")].some(e=>!e))throw new Error(Qi.MissingOrInvalidStoredState)}var yye=e=>sO(e)&&fu(e,"token_type")&&"bearer"===e.token_type.toLowerCase()&&fu(e,"access_token")&&fu(e,"refresh_token")&&(!("expires_in"in e)||"number"==typeof e.expires_in);function lQ(e){if(!yye(e))throw new Error(Qi.InvalidBearerTokenResponse)}function Z$(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function hC(e){for(var t=1;t{var t=e??So(10);return"openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:".concat(t)},bye=function(){var e=H(function*(e){return globalThis.crypto.subtle?K3(yield QJ(e)):(M.warn("A secure context is required to generate code challenge. Using plain text code challenge"),e)});return function(t){return e.apply(this,arguments)}}(),_ye=e=>{var{redirectUri:t}=e;return{scope:J3(),redirectUri:t,state:So(8),nonce:So(8),codeVerifier:So(64)}},Sye=function(){var e=H(function*(e,t,n){var{scope:r,redirectUri:i,state:o,nonce:s,codeVerifier:a}=n,c=new URL(e);return c.searchParams.append("response_mode","query"),c.searchParams.append("response_type","code"),c.searchParams.append("redirect_uri",i),c.searchParams.append("client_id",t),c.searchParams.append("state",o),c.searchParams.append("scope",r),c.searchParams.append("nonce",s),c.searchParams.append("code_challenge_method","S256"),c.searchParams.append("code_challenge",yield bye(a)),c.toString()});return function(t,n,r){return e.apply(this,arguments)}}(),wye=function(){var e=H(function*(e){var{metadata:t,redirectUri:n,clientId:r,homeserverUrl:i,identityServerUrl:o,nonce:s,prompt:a,urlState:c,loginHint:l}=e,u=J3(),d=new iO(hC(hC({},t),{},{client_id:r,redirect_uri:n,authority:t.issuer,response_mode:"query",response_type:"code",scope:u,stateStore:new X3({prefix:"mx_oidc_",store:window.sessionStorage})})),h={homeserverUrl:i,nonce:s,identityServerUrl:o};return(yield d.createSigninRequest({state:h,nonce:s,prompt:a,url_state:c,login_hint:l})).url});return function(t){return e.apply(this,arguments)}}(),Eye=e=>({id_token:e.id_token,scope:e.scope,expires_at:e.expires_at,refresh_token:e.refresh_token,access_token:e.access_token,token_type:"Bearer"}),Cye=function(){var e=H(function*(e,t){var n=new URL(window.location.origin);n.searchParams.append("code",e),n.searchParams.append("state",t),fb.setLogger(M);try{var r=new Kw(n.searchParams),i=new X3({prefix:"mx_oidc_",store:window.sessionStorage}),o=yield i.get(r.state);if(!o)throw new Error(Qi.MissingOrInvalidStoredState);var s=yield rO.fromStorageString(o),a=new iO(hC(hC({},s),{},{stateStore:i})),c=yield a.processSigninResponse(n.href),l=c.userState;cQ(l),lQ(c),aQ(c.id_token,a.settings.authority,a.settings.client_id,l.nonce);var u=Eye(c);return{oidcClientSettings:{clientId:a.settings.client_id,issuer:a.settings.authority},tokenResponse:u,homeserverUrl:l.homeserverUrl,identityServerUrl:l.identityServerUrl,idTokenClaims:c.profile}}catch(e){M.error("Oidc login failed",e);var d=e.message;throw Object.values(Qi).includes(d)?e:new Error(Qi.CodeExchangeFailed)}});return function(t,n){return e.apply(this,arguments)}}();function eH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function tH(e){for(var t=1;t{if(!t)return!1;var n=new URL(t);return!(n.protocol!==e.protocol||n.hostname!==e.hostname&&!n.hostname.endsWith(".".concat(e.hostname)))},Rye=function(){var e=H(function*(e,t){if(!e.registration_endpoint)throw new Error(Qi.DynamicRegistrationNotSupported);var n=["authorization_code","refresh_token"];if(n.some(t=>!e.grant_types_supported.includes(t)))throw new Error(Qi.DynamicRegistrationNotSupported);var r=new URL(t.clientUri),i={client_name:t.clientName,client_uri:t.clientUri,response_types:["code"],grant_types:n,redirect_uris:t.redirectUris,id_token_signed_response_alg:"RS256",token_endpoint_auth_method:"none",application_type:t.applicationType,contacts:t.contacts,logo_uri:Lk(r,t.logoUri)?t.logoUri:void 0,policy_uri:Lk(r,t.policyUri)?t.policyUri:void 0,tos_uri:Lk(r,t.tosUri)?t.tosUri:void 0};try{var o=yield fetch(e.registration_endpoint,{method:ue.Post,headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(i)});if(o.status>=400)throw new Error(Qi.DynamicRegistrationFailed);var s=(yield o.json()).client_id;if(!s||"string"!=typeof s)throw new Error(Qi.DynamicRegistrationInvalid);return s}catch(e){throw Object.values(Qi).includes(e.message)?e:(M.error("Dynamic registration request failed",e),new Error(Qi.DynamicRegistrationFailed))}});return function(t,n){return e.apply(this,arguments)}}();class Iye{constructor(e,t,n,r,i){this.idTokenClaims=i,L(this,"oidcClientReady",void 0),L(this,"oidcClient",void 0),L(this,"inflightRefreshRequest",void 0),this.oidcClientReady=this.initialiseOidcClient(e,t,r,n)}initialiseOidcClient(e,t,n,r){var i=this;return H(function*(){try{var o,s=yield oO(e),a=J3(n);i.oidcClient=new iO({metadata:s,signingKeys:null!==(o=s.signingKeys)&&void 0!==o?o:void 0,client_id:t,scope:a,redirect_uri:r,authority:s.issuer,stateStore:new X3({prefix:"mx_oidc_",store:window.sessionStorage})})}catch(e){throw M.error("Failed to initialise OIDC client.",e),new Error("Failed to initialise OIDC client.")}})()}doRefreshAccessToken(e){var t=this;return H(function*(){t.inflightRefreshRequest||(t.inflightRefreshRequest=t.getNewTokens(e));try{return yield t.inflightRefreshRequest}catch(e){throw e instanceof tv?new B7(e):e}finally{t.inflightRefreshRequest=void 0}})()}persistTokens(e){return H(function*(){})()}getNewTokens(e){var t=this;return H(function*(){if(!t.oidcClient)throw new Error("Cannot get new token before OIDC client is initialised.");var n={refresh_token:e,session_state:"test",data:void 0,profile:t.idTokenClaims},r=Date.now(),i=yield t.oidcClient.useRefreshToken({state:n,timeoutInSeconds:300}),o={accessToken:i.access_token,refreshToken:i.refresh_token,expiry:i.expires_in?new Date(r+1e3*i.expires_in):void 0};return yield t.persistTokens(o),o})()}}var kye=["server","limit","since"];function nH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Wr(e){for(var t=1;t{this.isInitialSyncComplete()&&(sA()&&(this.callEventHandler.start(),this.groupCallEventHandler.start()),this.off(Pe.Sync,this.startCallEventHandler))}),L(this,"startMatrixRTC",()=>{this.isInitialSyncComplete()&&(this.matrixRTC.start(),this.off(Pe.Sync,this.startMatrixRTC))}),L(this,"fixupRoomNotifications",()=>{if(this.isInitialSyncComplete()){var e,t=(null!==(e=this.getRooms())&&void 0!==e?e:[]).filter(e=>e.getUnreadNotificationCount(Xt.Total)>0);for(var n of t){var r=this.getSafeUserId();n.fixupNotifications(r)}this.off(Pe.Sync,this.fixupRoomNotifications)}}),this.logger=null!==(t=e.logger)&&void 0!==t?t:M,e.baseUrl=gk(e.baseUrl),e.idBaseUrl=gk(e.idBaseUrl),this.baseUrl=e.baseUrl,this.idBaseUrl=e.idBaseUrl,this.identityServer=e.identityServer,this.usingExternalCrypto=null!==(n=e.usingExternalCrypto)&&void 0!==n&&n,this.store=e.store||new R1e,this.deviceId=e.deviceId||null,this.sessionId=So(10);var o,s=e.userId||null;this.credentials={userId:s},this.http=new RJ(this,{fetchFn:e.fetchFn,baseUrl:e.baseUrl,idBaseUrl:e.idBaseUrl,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenRefreshFunction:e.tokenRefreshFunction,prefix:Yr.V3,onlyData:!0,extraParams:e.queryParams,localTimeoutMs:e.localTimeoutMs,useAuthorizationHeader:e.useAuthorizationHeader,logger:this.logger}),e.pickleKey&&(this.legacyPickleKey=e.pickleKey),this.useLivekitForGroupCalls=!!e.useLivekitForGroupCalls,this.scheduler=e.scheduler,this.scheduler&&this.scheduler.setProcessFunction((o=H(function*(e){var t=r.getRoom(e.getRoomId());e.status!==rt.SENDING&&r.updatePendingEventStatus(t,e,rt.SENDING);var n=yield r.sendEventHttpRequest(e);return t&&t.updatePendingEvent(e,rt.SENT,n.event_id),n}),function(e){return o.apply(this,arguments)})),sA()&&(this.callEventHandler=new G1e(this),this.groupCallEventHandler=new K1e(this),this.canSupportVoip=!0,this.on(Pe.Sync,this.startCallEventHandler)),this.matrixRTC=new X0e(this.logger,this),this.serverCapabilitiesService=new kJ(this.logger,this.http),this.on(Pe.Sync,this.fixupRoomNotifications),this.timelineSupport=!!e.timelineSupport,this.legacyCryptoStore=e.cryptoStore,this.verificationMethods=e.verificationMethods,this.cryptoCallbacks=e.cryptoCallbacks||{},this.forceTURN=e.forceTURN||!1,this.iceCandidatePoolSize=void 0===e.iceCandidatePoolSize?0:e.iceCandidatePoolSize,this.supportsCallTransfer=e.supportsCallTransfer||!1,this.fallbackICEServerAllowed=e.fallbackICEServerAllowed||!1,this.isVoipWithNoMediaAllowed=e.isVoipWithNoMediaAllowed||!1,void 0!==e.useE2eForGroupCall&&(this.useE2eForGroupCall=e.useE2eForGroupCall),this.livekitServiceURL=e.livekitServiceURL,this.roomNameGenerator=e.roomNameGenerator,this.toDeviceMessageQueue=new P0e(this,this.logger),this.on(Gt.Decrypted,e=>{pQ(this,e)}),this.ignoredInvites=new L0e(this),this._secretStorage=new KJ(this,null!==(i=e.cryptoCallbacks)&&void 0!==i?i:{}),this.setMaxListeners(0)}set store(e){this._store=e,this._store.setUserCreator(e=>mu.createUser(e,this))}get store(){return this._store}startClient(e){var t=this;return H(function*(){if(!t.clientRunning){t.clientRunning=!0,t.on(Pe.Sync,t.startMatrixRTC);var n=t.getUserId();n&&t.store.storeUser(new mu(n)),t.canSupportVoip&&(t.checkTurnServersIntervalID=setInterval(()=>{t.checkTurnServers()},rH),t.checkTurnServers()),t.syncApi&&(t.logger.error("Still have sync object whilst not running: stopping old one"),t.syncApi.stop());try{yield t.getVersions();var{threads:r,list:i,fwdPagination:o}=yield t.doesServerSupportThread();Nn.setServerSideSupport(r),Nn.setServerSideListSupport(i),Nn.setServerSideFwdPaginationSupport(o)}catch(e){t.logger.error("Can't fetch server versions, continuing to initialise sync, this will be retried later",e)}t.clientOpts=e??{},t.clientOpts.slidingSync?t.syncApi=new BJ(t.clientOpts.slidingSync,t,t.clientOpts,t.buildSyncApiOptions()):t.syncApi=new Hd(t,t.clientOpts,t.buildSyncApiOptions()),t.syncApi.sync().catch(e=>t.logger.info("Sync startup aborted with an error:",e)),void 0!==t.clientOpts.clientWellKnownPollPeriod&&(t.clientWellKnownIntervalID=setInterval(()=>{t.fetchClientWellKnown()},1e3*t.clientOpts.clientWellKnownPollPeriod),t.fetchClientWellKnown()),t.toDeviceMessageQueue.start(),t.serverCapabilitiesService.start()}})()}buildSyncApiOptions(){return{cryptoCallbacks:this.cryptoBackend,canResetEntireTimeline:e=>!!this.canResetTimelineCallback&&this.canResetTimelineCallback(e),logger:this.logger.getChild("sync")}}stopClient(){var e,t,n,r,i;null===(e=this.cryptoBackend)||void 0===e||e.stop(),this.off(Pe.Sync,this.startMatrixRTC),this.clientRunning&&(this.logger.debug("stopping MatrixClient"),this.clientRunning=!1,null===(t=this.syncApi)||void 0===t||t.stop(),this.syncApi=void 0,null===(n=this.peekSync)||void 0===n||n.stopPeeking(),null===(r=this.callEventHandler)||void 0===r||r.stop(),null===(i=this.groupCallEventHandler)||void 0===i||i.stop(),this.callEventHandler=void 0,this.groupCallEventHandler=void 0,globalThis.clearInterval(this.checkTurnServersIntervalID),this.checkTurnServersIntervalID=void 0,void 0!==this.clientWellKnownIntervalID&&globalThis.clearInterval(this.clientWellKnownIntervalID),this.toDeviceMessageQueue.stop(),this.matrixRTC.stop(),this.serverCapabilitiesService.stop())}clearStores(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.clientRunning)throw new Error("Cannot clear stores while client is running");var n=[];n.push(this.store.deleteAllData()),this.legacyCryptoStore&&n.push(this.legacyCryptoStore.deleteAllData());var r,i=(r=H(function*(){var n;try{if(!(n=globalThis.indexedDB))return}catch{return}var r=function*(t){var r=new Promise((r,i)=>{e.logger.info("Removing IndexedDB instance ".concat(t));var o=n.deleteDatabase(t);o.onsuccess=n=>{e.logger.info("Removed IndexedDB instance ".concat(t)),r(0)},o.onerror=n=>{e.logger.warn("Failed to remove IndexedDB instance ".concat(t,":"),n),r(0)},o.onblocked=n=>{e.logger.info("cannot yet remove IndexedDB instance ".concat(t))}});yield r};for(var i of["".concat(null!==(o=t.cryptoDatabasePrefix)&&void 0!==o?o:Ik,"::matrix-sdk-crypto"),"".concat(null!==(s=t.cryptoDatabasePrefix)&&void 0!==s?s:Ik,"::matrix-sdk-crypto-meta")]){var o,s;yield*r(i)}}),function(){return r.apply(this,arguments)});return n.push(i()),Promise.all(n).then()}getUserId(){var e,t;return null!==(e=null===(t=this.credentials)||void 0===t?void 0:t.userId)&&void 0!==e?e:null}getSafeUserId(){var e=this.getUserId();if(!e)throw new Error("Expected logged in user but found none.");return e}getDomain(){var e;return null!==(e=this.credentials)&&void 0!==e&&e.userId?this.credentials.userId.replace(/^.*?:/,""):null}getUserIdLocalpart(){var e,t;return null!==(e=null===(t=this.credentials)||void 0===t||null===(t=t.userId)||void 0===t?void 0:t.split(":")[0].substring(1))&&void 0!==e?e:null}getDeviceId(){return this.deviceId}getSessionId(){return this.sessionId}supportsVoip(){return this.canSupportVoip}getMediaHandler(){return this.mediaHandler}setForceTURN(e){this.forceTURN=e}setSupportsCallTransfer(e){this.supportsCallTransfer=e}getUseE2eForGroupCall(){return this.useE2eForGroupCall}createCall(e){return ub(this,e)}createGroupCall(e,t,n,r,i,o){var s=this;return H(function*(){if(s.getGroupCallForRoom(e))throw new Error("".concat(e," already has an existing group call"));var a=s.getRoom(e);if(!a)throw new Error("Cannot find room ".concat(e));return new W7(s,a,t,n,r,void 0,i||s.isVoipWithNoMediaAllowed,o,s.isVoipWithNoMediaAllowed,s.useLivekitForGroupCalls,s.livekitServiceURL).create()})()}getLivekitServiceURL(){return this.livekitServiceURL}setLivekitServiceURL(e){this.livekitServiceURL=e}waitUntilRoomReadyForGroupCalls(e){return this.groupCallEventHandler.waitUntilRoomReadyForGroupCalls(e)}getGroupCallForRoom(e){return this.groupCallEventHandler.groupCalls.get(e)||null}getSyncState(){var e,t;return null!==(e=null===(t=this.syncApi)||void 0===t?void 0:t.getSyncState())&&void 0!==e?e:null}getSyncStateData(){return this.syncApi?this.syncApi.getSyncStateData():null}isInitialSyncComplete(){var e=this.getSyncState();return!!e&&(e===qt.Prepared||e===qt.Syncing)}isGuest(){return this.isGuestAccount}setGuest(e){this.isGuestAccount=e}getScheduler(){return this.scheduler}retryImmediately(){var e,t;return this.toDeviceMessageQueue.sendQueue(),null!==(e=null===(t=this.syncApi)||void 0===t?void 0:t.retryImmediately())&&void 0!==e&&e}getNotifTimelineSet(){return this.notifTimelineSet}setNotifTimelineSet(e){this.notifTimelineSet=e}getCapabilities(){var e=this;return H(function*(){return e.serverCapabilitiesService.getCachedCapabilities()||e.serverCapabilitiesService.fetchCapabilities()})()}getCachedCapabilities(){return this.serverCapabilitiesService.getCachedCapabilities()}fetchCapabilities(){return this.serverCapabilitiesService.fetchCapabilities()}initRustCrypto(){var e=arguments,t=this;return H(function*(){var n,r,i=e.length>0&&void 0!==e[0]?e[0]:{};if(t.cryptoBackend)t.logger.warn("Attempt to re-initialise e2e encryption on MatrixClient");else{var o=t.getUserId();if(null===o)throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");var s=t.getDeviceId();if(null===s)throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");t.logger.debug("Downloading Rust crypto library");var a=yield ab(()=>import("./index-B4IlN3R9.js"),__vite__mapDeps([0,1]),import.meta.url),c=yield a.initRustCrypto({logger:t.logger,http:t.http,userId:o,deviceId:s,secretStorage:t.secretStorage,cryptoCallbacks:t.cryptoCallbacks,storePrefix:!1===i.useIndexedDB?null:null!==(n=i.cryptoDatabasePrefix)&&void 0!==n?n:Ik,storeKey:i.storageKey,storePassphrase:i.storagePassword,legacyCryptoStore:t.legacyCryptoStore,legacyPickleKey:null!==(r=t.legacyPickleKey)&&void 0!==r?r:"DEFAULT_KEY",legacyMigrationProgressListener:(e,n)=>{t.emit(pi.LegacyCryptoStoreMigrationProgress,e,n)}});c.setSupportedVerificationMethods(t.verificationMethods),t.cryptoBackend=c,t.on(js.Membership,c.onRoomMembership.bind(c)),t.on(Pe.Event,e=>{c.onLiveEventFromSync(e)}),t.reEmitter.reEmit(c,[pi.VerificationRequestReceived,pi.UserTrustStatusChanged,pi.KeyBackupStatus,pi.KeyBackupSessionsRemaining,pi.KeyBackupFailed,pi.KeyBackupDecryptionKeyCached,pi.KeysChanged,pi.DevicesUpdated,pi.WillUpdateDevices,pi.DehydratedDeviceCreated,pi.DehydratedDeviceUploaded,pi.RehydrationStarted,pi.RehydrationProgress,pi.RehydrationCompleted,pi.RehydrationError,pi.DehydrationKeyCached,pi.DehydratedDeviceRotationError])}})()}get secretStorage(){return this._secretStorage}getCrypto(){return this.cryptoBackend}isRoomEncrypted(e){var t=this.getRoom(e);return!!t&&t.hasEncryptionStateEvent()}isKeyBackupKeyStored(){return Promise.resolve(this.secretStorage.isStored("m.megolm_backup.v1"))}makeKeyBackupPath(e,t,n){return{path:void 0!==t?Ae("/room_keys/keys/$roomId/$sessionId",{$roomId:e,$sessionId:t}):void 0!==e?Ae("/room_keys/keys/$roomId",{$roomId:e}):"/room_keys/keys",queryData:void 0===n?void 0:{version:n}}}deleteKeysFromBackup(e,t,n){var r=this;return H(function*(){var i=r.makeKeyBackupPath(e,t,n);yield r.http.authedRequest(ue.Delete,i.path,i.queryData,void 0,{prefix:Yr.V3})})()}getMediaConfig(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=e?"/media/config":"/config";return this.http.authedRequest(ue.Get,t,void 0,void 0,{prefix:e?Yr.V1:Sg.V3})}getRoom(e){return e?this.store.getRoom(e):null}getRooms(){return this.store.getRooms()}getVisibleRooms(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.store.getRooms(),n=new Set;for(var r of t){var i,o=null===(i=r.findPredecessor(e))||void 0===i?void 0:i.roomId;o&&n.add(o)}return t.filter(e=>!(e.currentState.getStateEvents(Z.RoomTombstone,"")&&n.has(e.roomId)))}getUser(e){return this.store.getUser(e)}getUsers(){return this.store.getUsers()}setAccountData(e,t){var n=this;return H(function*(){if(!n.clientRunning)return n.logger.warn("Calling `setAccountData` before the client is started: `getAccountData` may return inconsistent results."),yield X5(5,()=>n.setAccountDataRaw(e,t));var r=n.store.getAccountData(e);if(r&&lf(r.event.content,t))return{};var i=Promise.withResolvers();function o(t){t.getType()===e&&i.resolve()}n.addListener(Pe.AccountData,o);try{var s=yield X5(5,()=>n.setAccountDataRaw(e,t));return yield i.promise,s}finally{n.removeListener(Pe.AccountData,o)}})()}setAccountDataRaw(e,t){var n=Ae("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this.http.authedRequest(ue.Put,n,void 0,t)}getAccountData(e){return this.store.getAccountData(e)}getAccountDataFromServer(e){var t=this;return H(function*(){if(t.isInitialSyncComplete()){var n=t.store.getAccountData(e);return n?n.getContent():null}var r=Ae("/user/$userId/account_data/$type",{$userId:t.credentials.userId,$type:e});try{return yield t.http.authedRequest(ue.Get,r)}catch(e){var i;if("M_NOT_FOUND"===(null===(i=e.data)||void 0===i?void 0:i.errcode))return null;throw e}})()}deleteAccountData(e){var t=this;return H(function*(){var n=t.canSupport.get(ei.AccountDataDeletion);if(n!==Qr.Unsupported){var r=Ae("/user/$userId/account_data/$type",{$userId:t.getSafeUserId(),$type:e}),i=n===Qr.Unstable?{prefix:"/_matrix/client/unstable/org.matrix.msc3391"}:void 0;return yield t.http.authedRequest(ue.Delete,r,void 0,void 0,i)}yield t.setAccountData(e,{})})()}getIgnoredUsers(){var e=this.getAccountData(Z.IgnoredUserList);return null!=e&&e.getContent().ignored_users?Object.keys(e.getContent().ignored_users):[]}setIgnoredUsers(e){var t={ignored_users:{}};return e.forEach(e=>{t.ignored_users[e]={}}),this.setAccountData(Z.IgnoredUserList,t)}isUserIgnored(e){return this.getIgnoredUsers().includes(e)}joinRoom(e){var t=arguments,n=this;return H(function*(){var r,i,o=t.length>1&&void 0!==t[1]?t[1]:{},s=n.getRoom(e),a=s?.getMember(n.getSafeUserId()),c=a?.membership,l=c==He.Invite&&null!==(r=null==a||null===(i=a.events.member)||void 0===i?void 0:i.getSender())&&void 0!==r?r:null;if(n.logger.debug("joinRoom[".concat(e,"]: preJoinMembership=").concat(c,", inviter=").concat(l,", opts=").concat(JSON.stringify(o))),c==He.Join)return s;var u=Promise.resolve();if(o.inviteSignUrl){var d=new URL(o.inviteSignUrl);d.searchParams.set("mxid",n.credentials.userId),u=n.http.requestOtherUrl(ue.Post,d)}var h={};o.viaServers&&(h.server_name=o.viaServers,h.via=o.viaServers);var p={},f=yield u;f&&(p.third_party_signed=f);var m=Ae("/join/$roomid",{$roomid:e}),g=(yield n.http.authedRequest(ue.Post,m,h,p)).room_id;o.acceptSharedHistory&&l&&n.cryptoBackend&&(yield n.cryptoBackend.maybeAcceptKeyBundle(g,l));var v=n.getRoom(g);return null!=v&&v.hasMembershipState(n.credentials.userId,He.Join)?v:new Hd(n,n.clientOpts,n.buildSyncApiOptions()).createRoom(g)})()}knockRoom(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.getRoom(e);if(null!=n&&n.hasMembershipState(this.credentials.userId,He.Knock))return Promise.resolve({room_id:n.roomId});var r=Ae("/knock/$roomIdOrAlias",{$roomIdOrAlias:e}),i={};t.viaServers&&(i.server_name=t.viaServers,i.via=t.viaServers);var o={};return t.reason&&(o.reason=t.reason),this.http.authedRequest(ue.Post,r,i,o)}resendEvent(e,t){return this.toDeviceMessageQueue.sendQueue(),this.updatePendingEventStatus(t,e,rt.SENDING),this.encryptAndSendEvent(t,e)}cancelPendingEvent(e){if(![rt.QUEUED,rt.NOT_SENT,rt.ENCRYPTING].includes(e.status))throw new Error("cannot cancel an event with status "+e.status);e.status===rt.ENCRYPTING?this.eventsBeingEncrypted.delete(e.getId()):this.scheduler&&e.status===rt.QUEUED&&this.scheduler.removeEventFromQueue(e);var t=this.getRoom(e.getRoomId());this.updatePendingEventStatus(t,e,rt.CANCELLED)}setRoomName(e,t){return this.sendStateEvent(e,Z.RoomName,{name:t})}setRoomTopic(e,t,n){var r=mJ(t,n);return this.sendStateEvent(e,Z.RoomTopic,r)}getRoomTags(e){var t=Ae("/user/$userId/rooms/$roomId/tags",{$userId:this.credentials.userId,$roomId:e});return this.http.authedRequest(ue.Get,t)}setRoomTag(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Ae("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this.http.authedRequest(ue.Put,r,void 0,n)}deleteRoomTag(e,t){var n=Ae("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this.http.authedRequest(ue.Delete,n)}setRoomAccountData(e,t,n){var r=Ae("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this.http.authedRequest(ue.Put,r,void 0,n)}setPowerLevel(e,t,n){var r=this;return H(function*(){var i,o,s;r.clientRunning&&r.isInitialSyncComplete()&&(o=null===(s=r.getRoom(e))||void 0===s||null===(s=s.currentState)||void 0===s||null===(s=s.getStateEvents(Z.RoomPowerLevels,""))||void 0===s?void 0:s.getContent());if(!o)try{o=yield r.getStateEvent(e,Z.RoomPowerLevels,"")}catch(e){if(!(e instanceof or&&"M_NOT_FOUND"===e.errcode))throw e;o={}}null!==(i=o=c_(o))&&void 0!==i&&i.users||(o.users={});var a=Array.isArray(t)?t:[t];for(var c of a)null==n?delete o.users[c]:o.users[c]=n;return r.sendStateEvent(e,Z.RoomPowerLevels,o,"")})()}unstable_createLiveBeacon(e,t){var n=this;return H(function*(){return n.unstable_setLiveBeacon(e,t)})()}unstable_setLiveBeacon(e,t){var n=this;return H(function*(){return n.sendStateEvent(e,Q7.name,t,n.getUserId())})()}sendEvent(e,t,n,r,i){var o,s,a,c;return null!=t&&t.startsWith(Sc)||null===t?(c=i,a=r,s=n,o=t):(c=r,a=n,s=t,o=null),this.addThreadRelationIfNeeded(a,o,e),this.sendCompleteEvent(e,o,{type:s,content:a},c)}addThreadRelationIfNeeded(e,t,n){var r;if(t&&(null===(r=e["m.relates_to"])||void 0===r||!r.rel_type)){var i,o,s=!(null===(i=e["m.relates_to"])||void 0===i||!i["m.in_reply_to"]);e["m.relates_to"]=Wr(Wr({},e["m.relates_to"]),{},{rel_type:Sn.name,event_id:t,is_falling_back:!s});var a,c,l=null===(o=this.getRoom(n))||void 0===o?void 0:o.getThread(t);if(l&&!s)e["m.relates_to"]["m.in_reply_to"]={event_id:null!==(a=null===(c=l.lastReply(e=>e.isRelation(Sn.name)&&!e.status))||void 0===c?void 0:c.getId())&&void 0!==a?a:t}}}sendCompleteEvent(e,t,n,r,i){var o,s;"string"==typeof r?s=r:(o=r,s=i),s||(s=this.makeTxnId());var a=new Zi(Object.assign(n,{event_id:"~"+e+":"+s,user_id:this.credentials.userId,sender:this.credentials.userId,room_id:e,origin_server_ts:(new Date).getTime()})),c=this.getRoom(e),l=t?c?.getThread(t):void 0;l&&a.setThread(l),o||(this.reEmitter.reEmit(a,[Gt.Replaced,Gt.VisibilityChange]),c?.reEmitter.reEmit(a,[Gt.BeforeRedaction]));var u=a.getAssociatedId();if(null!=u&&u.startsWith("~")){var d=c?.getPendingEvents().find(e=>e.getId()===u);d?.once(Gt.LocalEventIdReplaced,()=>{a.updateAssociatedId(d.getId())})}var h=a.getType();return this.logger.debug("sendEvent of type ".concat(h," in ").concat(e," with txnId ").concat(s).concat(o?" (delayed event)":"")),a.setTxnId(s),a.setStatus(rt.SENDING),o?this.encryptAndSendEvent(c,a,o):(c?.addPendingEvent(a,s),a.status===rt.NOT_SENT?Promise.reject(new Error("Event blocked by other events not yet sent")):this.encryptAndSendEvent(c,a))}encryptAndSendEvent(e,t,n){var r=this;return H(function*(){if(n)return r.sendEventHttpRequest(t,n);try{var i;r.eventsBeingEncrypted.add(t.getId());try{yield r.encryptEventIfNeeded(t,e??void 0)}finally{i=!r.eventsBeingEncrypted.delete(t.getId())}if(i)return{};t.status===rt.ENCRYPTING&&r.updatePendingEventStatus(e,t,rt.SENDING);var o=null;return r.scheduler&&((o=r.scheduler.queueEvent(t))&&r.scheduler.getQueueForEvent(t).length>1&&r.updatePendingEventStatus(e,t,rt.QUEUED)),o||(o=r.sendEventHttpRequest(t),e&&(o=o.then(n=>(e.updatePendingEvent(t,rt.SENT,n.event_id),n)))),yield o}catch(n){r.logger.error("Error sending event",n);try{t.error=n,r.updatePendingEventStatus(e,t,rt.NOT_SENT)}catch(e){r.logger.error("Exception in error handler!",e)}throw n instanceof or&&(n.event=t),n}})()}encryptEventIfNeeded(e,t){var n=this;return H(function*(){if(t&&(yield n.shouldEncryptEventForRoom(e,t))&&(n.cryptoBackend||!n.usingExternalCrypto)){if(!n.cryptoBackend)throw new Error("This room is configured to use encryption, but your client does not support encryption.");n.updatePendingEventStatus(t,e,rt.ENCRYPTING),yield n.cryptoBackend.encryptEvent(e,t)}})()}shouldEncryptEventForRoom(e,t){var n=this;return H(function*(){var r;return!e.isEncrypted()&&e.getType()!==Z.Reaction&&!e.isRedaction()&&!(!t.hasEncryptionStateEvent()&&!(yield null===(r=n.cryptoBackend)||void 0===r?void 0:r.isEncryptionEnabledInRoom(t.roomId)))})()}getEncryptedIfNeededEventType(e,t){var n;return t===Z.Reaction?t:null!==(n=this.getRoom(e))&&void 0!==n&&n.hasEncryptionStateEvent()?Z.RoomMessageEncrypted:t}updatePendingEventStatus(e,t,n){e?e.updatePendingEvent(t,n):t.setStatus(n)}sendEventHttpRequest(e,t){var n=e.getTxnId();n||(n=this.makeTxnId(),e.setTxnId(n));var r,i={$roomId:e.getRoomId(),$eventType:e.getWireType(),$stateKey:e.getStateKey(),$txnId:n};if(e.isState()){var o="/rooms/$roomId/state/$eventType";e.getStateKey()&&e.getStateKey().length>0&&(o="/rooms/$roomId/state/$eventType/$stateKey"),r=Ae(o,i)}else if(e.isRedaction()&&e.event.redacts){r=Ae("/rooms/$roomId/redact/$redactsEventId/$txnId",Wr({$redactsEventId:e.event.redacts},i))}else r=Ae("/rooms/$roomId/send/$eventType/$txnId",i);var s=e.getWireContent();return t?this.http.authedRequest(ue.Put,r,iH(t),s):this.http.authedRequest(ue.Put,r,void 0,s).then(t=>(this.logger.debug("Event sent to ".concat(e.getRoomId()," with event id ").concat(t.event_id)),t))}redactEvent(e,t,n,r,i){var o,s,a;null!==(o=n)&&void 0!==o&&o.startsWith(Sc)||(i=r,r=n,n=t,t=null);var c={reason:null===(s=i)||void 0===s?void 0:s.reason};if(void 0!==(null===(a=i)||void 0===a?void 0:a.with_rel_types)){if(this.canSupport.get(ei.RelationBasedRedactions)===Qr.Unsupported)throw new Error("Server does not support relation based redactions "+"roomId ".concat(e," eventId ").concat(n," txnId: ").concat(r," threadId ").concat(t));c[this.canSupport.get(ei.RelationBasedRedactions)===Qr.Stable?q5.stable:q5.unstable]=i.with_rel_types}return this.sendCompleteEvent(e,t,{type:Z.RoomRedaction,content:c,redacts:n},r)}sendMessage(e,t,n,r){"string"!=typeof t&&null!==t&&(r=n,n=t,t=null);var i=Z.RoomMessage,o=n;return this.sendEvent(e,t,i,o,r)}sendTextMessage(e,t,n,r){var i;(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(r=n,n=t,t=null);var o=uJ(n);return this.sendMessage(e,t,o,r)}sendNotice(e,t,n,r){var i;(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(r=n,n=t,t=null);var o=dJ(n);return this.sendMessage(e,t,o,r)}sendEmoteMessage(e,t,n,r){var i;(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(r=n,n=t,t=null);var o=fJ(n);return this.sendMessage(e,t,o,r)}sendImageMessage(e,t,n,r){var i,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"Image";(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(o=r||"Image",r=n,n=t,t=null);var s={msgtype:ol.Image,url:n,info:r,body:o};return this.sendMessage(e,t,s)}sendStickerMessage(e,t,n,r){var i,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"Sticker";(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(o=r||"Sticker",r=n,n=t,t=null);var s={url:n,info:r,body:o};return this.sendEvent(e,t,Z.Sticker,s)}sendHtmlMessage(e,t,n,r){var i;(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(r=n,n=t,t=null);var o=aJ(n,r);return this.sendMessage(e,t,o)}sendHtmlNotice(e,t,n,r){var i;(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(r=n,n=t,t=null);var o=cJ(n,r);return this.sendMessage(e,t,o)}sendHtmlEmote(e,t,n,r){var i;(null===(i=t)||void 0===i||!i.startsWith(Sc))&&null!==t&&(r=n,n=t,t=null);var o=lJ(n,r);return this.sendMessage(e,t,o)}_unstable_sendDelayedEvent(e,t,n,r,i,o){var s=this;return H(function*(){if(!(yield s.doesServerSupportUnstableFeature($c)))throw new Vd("Server does not support the delayed events API","sendDelayedEvent");return s.addThreadRelationIfNeeded(i,n,e),s.sendCompleteEvent(e,n,{type:r,content:i},t,o)})()}_unstable_sendDelayedStateEvent(e,t,n,r){var i=arguments,o=this;return H(function*(){var s=i.length>4&&void 0!==i[4]?i[4]:"",a=i.length>5&&void 0!==i[5]?i[5]:{};if(!(yield o.doesServerSupportUnstableFeature($c)))throw new Vd("Server does not support the delayed events API","sendDelayedStateEvent");var c={$roomId:e,$eventType:n,$stateKey:s},l=Ae("/rooms/$roomId/state/$eventType",c);return void 0!==s&&(l=Ae(l+"/$stateKey",c)),o.http.authedRequest(ue.Put,l,iH(t),r,a)})()}_unstable_getDelayedEvents(e){var t=this;return H(function*(){if(!(yield t.doesServerSupportUnstableFeature($c)))throw new Vd("Server does not support the delayed events API","getDelayedEvents");var n=e?{from:e}:void 0;return yield t.http.authedRequest(ue.Get,"/delayed_events",n,void 0,{prefix:"".concat(Yr.Unstable,"/").concat($c)})})()}_unstable_updateDelayedEvent(e,t){var n=arguments,r=this;return H(function*(){var i=n.length>2&&void 0!==n[2]?n[2]:{};if(!(yield r.doesServerSupportUnstableFeature($c)))throw new Vd("Server does not support the delayed events API","updateDelayedEvent");var o=Ae("/delayed_events/$delayId",{$delayId:e}),s={action:t};return yield r.http.authedRequest(ue.Post,o,void 0,s,Wr(Wr({},i),{},{prefix:"".concat(Yr.Unstable,"/").concat($c)}))})()}sendReceipt(e,t,n){var r=arguments,i=this;return H(function*(){var o=r.length>3&&void 0!==r[3]&&r[3];if(i.isGuest())return Promise.resolve({});var s=Ae("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),a=!o&&i.supportsThreads()?Wr(Wr({},n),{},{thread_id:rv(e)}):n,c=i.http.authedRequest(ue.Post,s,void 0,a||{}),l=i.getRoom(e.getRoomId());return l&&i.credentials.userId&&l.addLocalEchoReceipt(i.credentials.userId,e,t,o),c})()}sendReadReceipt(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]?t[1]:os.Read,i=t.length>2&&void 0!==t[2]&&t[2];if(e){var o=e.getId(),s=n.getRoom(e.getRoomId());if(null!=s&&s.hasPendingEvent(o))throw new Error("Cannot set read receipt to a pending event (".concat(o,")"));return n.sendReceipt(e,r,{},i)}})()}setRoomReadMarkers(e,t,n,r){var i=this;return H(function*(){var o,s,a=i.getRoom(e);if(null!=a&&a.hasPendingEvent(t))throw new Error("Cannot set read marker to a pending event (".concat(t,")"));if(n){if(o=n.getId(),null!=a&&a.hasPendingEvent(o))throw new Error("Cannot set read receipt to a pending event (".concat(o,")"));a?.addLocalEchoReceipt(i.credentials.userId,n,os.Read)}if(r){if(s=r.getId(),null!=a&&a.hasPendingEvent(s))throw new Error("Cannot set read receipt to a pending event (".concat(s,")"));a?.addLocalEchoReceipt(i.credentials.userId,r,os.ReadPrivate)}return yield i.setRoomReadMarkersHttpRequest(e,t,o,s)})()}sendRtcDecline(e,t){return this.sendEvent(e,Z.RTCDecline,{"m.relates_to":{event_id:t,rel_type:bn.Reference}})}getUrlPreview(e,t){t=6e4*Math.floor(t/6e4);var n=new URL(e);n.hash="";var r=t+"_"+(e=n.toString());if(r in this.urlPreviewCache)return this.urlPreviewCache[r];var i=this.http.authedRequest(ue.Get,"/preview_url",{url:e,ts:t.toString()},void 0,{prefix:Sg.V3,priority:"low"});return this.urlPreviewCache[r]=i,i}sendTyping(e,t,n){if(this.isGuest())return Promise.resolve({});var r=Ae("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.getUserId()}),i={typing:t};return t&&(i.timeout=n||2e4),this.http.authedRequest(ue.Put,r,void 0,i)}getRoomUpgradeHistory(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=this.getRoom(e);return r?[...this.findPredecessorRooms(r,t,n),r,...this.findSuccessorRooms(r,t,n)]:[]}findPredecessorRooms(e,t,n){for(var r,i=[],o=new Set([e.roomId]),s=null===(r=e.findPredecessor(n))||void 0===r?void 0:r.roomId;null!==s;){var a;if(s){if(o.has(s))break;o.add(s)}var c=this.getRoom(s);if(null===c)break;if(t){var l=c.currentState.getStateEvents(Z.RoomTombstone,"");if(!l||l.getContent().replacement_room!==e.roomId)break}i.splice(0,0,c),s=null===(a=(e=c).findPredecessor(n))||void 0===a?void 0:a.roomId}return i}findSuccessorRooms(e,t,n){for(var r=[],i=e.currentState.getStateEvents(Z.RoomTombstone,"");i;){var o=this.getRoom(i.getContent().replacement_room);if(!o||o.roomId===e.roomId)break;if(t){var s,a=null===(s=o.findPredecessor(n))||void 0===s?void 0:s.roomId;if(!a||a!==e.roomId)break}if(r.push(o),new Set(r.map(e=>e.roomId)).size2&&void 0!==n[2]?n[2]:{};("object"!=typeof o&&(o={reason:o}),o.shareEncryptedHistory)&&(yield null===(i=r.cryptoBackend)||void 0===i?void 0:i.shareRoomHistoryWithUser(e,t));return yield r.membershipChange(e,t,He.Invite,o.reason)})()}inviteByEmail(e,t){return this.inviteByThreePid(e,"email",t)}inviteByThreePid(e,t,n){var r=this;return H(function*(){var i,o=Ae("/rooms/$roomId/invite",{$roomId:e}),s=r.getIdentityServerUrl(!0);if(!s)return Promise.reject(new or({error:"No supplied identity server URL",errcode:"ORG.MATRIX.JSSDK_MISSING_PARAM"}));var a={id_server:s,medium:t,address:n};if(null!==(i=r.identityServer)&&void 0!==i&&i.getAccessToken){var c=yield r.identityServer.getAccessToken();c&&(a.id_access_token=c)}return r.http.authedRequest(ue.Post,o,void 0,a)})()}leave(e){return this.membershipChange(e,void 0,He.Leave)}leaveRoomChain(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getRoomUpgradeHistory(e),r=n;if(!t)for(var i of(r=[],n))if(r.push(i),i.roomId===e)break;var o={},s=[],a=e=>this.leave(e).then(()=>{delete o[e]}).catch(t=>{o[e]=t});for(var c of r)s.push(a(c.roomId));return Promise.all(s).then(()=>o)}ban(e,t,n){return this.membershipChange(e,t,He.Ban,n)}forget(e){var t=arguments,n=this;return H(function*(){var r=!(t.length>1&&void 0!==t[1])||t[1],i=Ae("/rooms/$room_id/forget",{$room_id:e}),o=yield n.http.authedRequest(ue.Post,i);return r&&(n.store.removeRoom(e),n.emit(Pe.DeleteRoom,e)),o})()}unban(e,t){var n=Ae("/rooms/$roomId/unban",{$roomId:e}),r={user_id:t};return this.http.authedRequest(ue.Post,n,void 0,r)}kick(e,t,n){var r=Ae("/rooms/$roomId/kick",{$roomId:e}),i={user_id:t,reason:n};return this.http.authedRequest(ue.Post,r,void 0,i)}membershipChange(e,t,n,r){var i=Ae("/rooms/$room_id/$membership",{$room_id:e,$membership:n});return this.http.authedRequest(ue.Post,i,void 0,{user_id:t,reason:r})}getPushActionsForEvent(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e.getPushActions()||t){var{actions:n,rule:r}=this.pushProcessor.actionsAndRuleForEvent(e);e.setPushDetails(n,r)}return e.getPushActions()}getPushDetailsForEvent(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e.getPushDetails()||t){var{actions:n,rule:r}=this.pushProcessor.actionsAndRuleForEvent(e);e.setPushDetails(n,r)}return e.getPushDetails()}setProfileInfo(e,t){var n=Ae("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this.http.authedRequest(ue.Put,n,void 0,t)}setDisplayName(e){var t=this;return H(function*(){var n=yield t.setProfileInfo("displayname",{displayname:e}),r=t.getUser(t.getUserId());return r&&(r.displayName=e,r.emit(Di.DisplayName,r.events.presence,r)),n})()}setAvatarUrl(e){var t=this;return H(function*(){var n=yield t.setProfileInfo("avatar_url",{avatar_url:e}),r=t.getUser(t.getUserId());return r&&(r.avatarUrl=e,r.emit(Di.AvatarUrl,r.events.presence,r)),n})()}mxcUrlToHttp(e,t,n,r,i,o,s){return H3(this.baseUrl,e,t,n,r,i,o,s)}setSyncPresence(e){var t=this;return H(function*(){var n;null===(n=t.syncApi)||void 0===n||n.setPresence(e)})()}setPresence(e){var t=this;return H(function*(){var n=Ae("/presence/$userId/status",{$userId:t.credentials.userId});if(-1===["offline","online","unavailable"].indexOf(e.presence))throw new Error("Bad presence value: "+e.presence);yield t.http.authedRequest(ue.Put,n,void 0,e)})()}getPresence(e){var t=Ae("/presence/$userId/status",{$userId:e});return this.http.authedRequest(ue.Get,t)}scrollback(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30,n=0,r=this.ongoingScrollbacks[e.roomId]||{};if(r.promise)return r.promise;if(r.errorTs){var i=Date.now()-r.errorTs;n=Math.max(xye-i,0)}if(null===e.oldState.paginationToken)return Promise.resolve(e);var o=this.store.scrollback(e,t).length;if(o===t)return Promise.resolve(e);t-=o;var s=new Promise((r,i)=>{vp(n).then(()=>this.createMessagesRequest(e.roomId,e.oldState.paginationToken,t,ht.Backward)).then(t=>{var n,i,o=t.chunk.map(this.getEventMapper());if(t.state){var s=t.state.map(this.getEventMapper());e.currentState.setUnknownStateEvents(s)}var[a,c,l]=e.partitionThreadedEvents(o);this.processAggregatedTimelineEvents(e,a),e.addEventsToTimeline(a,!0,!0,e.getLiveTimeline()),this.processThreadEvents(e,c,!0),l.forEach(t=>e.relations.aggregateChildEvent(t)),e.oldState.paginationToken=null!==(n=t.end)&&void 0!==n?n:null,0===t.chunk.length&&(e.oldState.paginationToken=null),this.store.storeEvents(e,o,null!==(i=t.end)&&void 0!==i?i:null,!0),delete this.ongoingScrollbacks[e.roomId],r(e)}).catch(t=>{this.ongoingScrollbacks[e.roomId]={errorTs:Date.now()},i(t)})});return r={promise:s},this.ongoingScrollbacks[e.roomId]=r,s}getEventMapper(e){return S0e(this,e||{})}getEventTimeline(e,t){var n=this;return H(function*(){var r,i,o,s;if(!n.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(null==e||!e.room)throw new Error("getEventTimeline only supports room timelines");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);if(e.thread&&n.supportsThreads())return n.getThreadTimeline(e,t);var a=Ae("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t}),c=void 0;null!==(r=n.clientOpts)&&void 0!==r&&r.lazyLoadMembers&&(c={filter:JSON.stringify(Ps.LAZY_LOADING_MESSAGES_FILTER)});var l=yield n.http.authedRequest(ue.Get,a,c);if(!l.event)throw new Error("'event' not in '/context' result - homeserver too old?");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);var u=n.getEventMapper(),d=u(l.event);if(!d.isRelation(Sn.name)){var h=[...l.events_after.reverse().map(u),d,...l.events_before.map(u)],p=e.getTimelineForEvent(h[0].getId());p?p.getState(Me.BACKWARDS).setUnknownStateEvents(l.state.map(u)):((p=e.addTimeline()).initialiseState(l.state.map(u)),p.getState(Me.FORWARDS).paginationToken=l.end);var[f,m,g]=e.room.partitionThreadedEvents(h);return e.addEventsToTimeline(f,!0,!1,p,l.start),n.processThreadEvents(e.room,m,!0),n.processAggregatedTimelineEvents(e.room,f),g.forEach(t=>e.relations.aggregateChildEvent(t)),null!==(i=null!==(o=e.getTimelineForEvent(t))&&void 0!==o?o:null===(s=e.room.findThreadForEvent(d))||void 0===s?void 0:s.liveTimeline)&&void 0!==i?i:p}n.logger.warn("Tried loading a regular timeline at the position of a thread event")})()}getThreadTimeline(e,t){var n=this;return H(function*(){var r;if(!n.supportsThreads())throw new Error("could not get thread timeline: no client support");if(!e.room)throw new Error("could not get thread timeline: not a room timeline");if(!e.thread)throw new Error("could not get thread timeline: not a thread timeline");var i=Ae("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t}),o={limit:"0"};null!==(r=n.clientOpts)&&void 0!==r&&r.lazyLoadMembers&&(o.filter=JSON.stringify(Ps.LAZY_LOADING_MESSAGES_FILTER));var s=yield n.http.authedRequest(ue.Get,i,o),a=n.getEventMapper(),c=a(s.event);if(e.canContain(c)){var l=n.canSupport.get(ei.RelationsRecursion)!==Qr.Unsupported;if(Nn.hasServerSideSupport){if(Nn.hasServerSideFwdPaginationSupport){var u,d,h;if(!e.thread)throw new Error("could not get thread timeline: not a thread timeline");var p=e.thread,f=yield n.fetchRelations(e.room.roomId,p.id,null,null,{dir:ht.Backward,from:s.start,recurse:l||void 0}),m=yield n.fetchRelations(e.room.roomId,p.id,null,null,{dir:ht.Forward,from:s.end,recurse:l||void 0}),g=[...m.chunk.reverse().filter(Ak(p.id)).map(a),c,...f.chunk.filter(Ak(p.id)).map(a)];for(var v of g){var y;yield null===(y=e.thread)||void 0===y?void 0:y.processEvent(v)}var b=e.getTimelineForEvent(c.getId());if(b?b.getState(Me.BACKWARDS).setUnknownStateEvents(s.state.map(a)):(b=e.addTimeline()).initialiseState(s.state.map(a)),e.addEventsToTimeline(g,!0,!1,b,m.next_batch),!f.next_batch){var w=yield n.fetchRoomEvent(e.room.roomId,p.id);e.addEventsToTimeline([a(w)],!0,!1,b,null)}return b.setPaginationToken(null!==(u=f.next_batch)&&void 0!==u?u:null,ht.Backward),b.setPaginationToken(null!==(d=m.next_batch)&&void 0!==d?d:null,ht.Forward),n.processAggregatedTimelineEvents(e.room,g),null!==(h=e.getTimelineForEvent(t))&&void 0!==h?h:b}for(var _,S=e.thread,E=yield n.fetchRelations(e.room.roomId,S.id,Sn.name,null,{dir:ht.Backward,from:s.start,recurse:l||void 0}),C=[],k=s.end;k;){var T,R=yield n.fetchRelations(e.room.roomId,S.id,Sn.name,null,{dir:ht.Forward,from:k,recurse:l||void 0});k=null!==(T=R.next_batch)&&void 0!==T?T:null,C.push(...R.chunk)}var I=[...C.reverse().map(a),c,...E.chunk.map(a)];for(var x of I){var L;yield null===(L=e.thread)||void 0===L?void 0:L.processEvent(x)}var P=e.getLiveTimeline();if(P.getState(Me.BACKWARDS).setUnknownStateEvents(s.state.map(a)),e.addEventsToTimeline(I,!0,!1,P,null),!E.next_batch){var M=yield n.fetchRoomEvent(e.room.roomId,S.id);e.addEventsToTimeline([a(M)],!0,!1,P,null)}return P.setPaginationToken(null!==(_=E.next_batch)&&void 0!==_?_:null,ht.Backward),P.setPaginationToken(null,ht.Forward),n.processAggregatedTimelineEvents(e.room,I),P}}})()}getLatestTimeline(e){var t=this;return H(function*(){if(!t.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(!e.room)throw new Error("getLatestTimeline only supports room timelines");var n,r;if(null!==e.threadListType)n=null===(r=(yield t.createThreadListMessagesRequest(e.room.roomId,null,1,ht.Backward,e.threadListType,e.getFilter())).chunk)||void 0===r?void 0:r[0];else if(e.thread&&Nn.hasServerSideSupport){var i,o=t.canSupport.get(ei.RelationsRecursion)!==Qr.Unsupported;n=null===(i=(yield t.fetchRelations(e.room.roomId,e.thread.id,Sn.name,null,{dir:ht.Backward,limit:1,recurse:o||void 0})).chunk)||void 0===i?void 0:i[0]}else{var s,a,c=Ae("/rooms/$roomId/messages",{$roomId:e.room.roomId}),l={dir:"b"};null!==(s=t.clientOpts)&&void 0!==s&&s.lazyLoadMembers&&(l.filter=JSON.stringify(Ps.LAZY_LOADING_MESSAGES_FILTER)),n=null===(a=(yield t.http.authedRequest(ue.Get,c,l)).chunk)||void 0===a?void 0:a[0]}if(!n)throw new Error("No message returned when trying to construct getLatestTimeline");return t.getEventTimeline(e,n.event_id)})()}createMessagesRequest(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,i=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,s=Ae("/rooms/$roomId/messages",{$roomId:e}),a={limit:r.toString(),dir:i};t&&(a.from=t);var c,l=null;(null!==(n=this.clientOpts)&&void 0!==n&&n.lazyLoadMembers&&(l=Object.assign({},Ps.LAZY_LOADING_MESSAGES_FILTER)),o)&&(l=l||{},Object.assign(l,null===(c=o.getRoomTimelineFilterComponent())||void 0===c?void 0:c.toJSON()));return l&&(a.filter=JSON.stringify(l)),this.http.authedRequest(ue.Get,s,a)}createThreadListMessagesRequest(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:ht.Backward,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Na.All,s=arguments.length>5?arguments[5]:void 0,a=Ae("/rooms/$roomId/threads",{$roomId:e}),c={limit:r.toString(),dir:i,include:mQ(o)};t&&(c.from=t);var l,u={};(null!==(n=this.clientOpts)&&void 0!==n&&n.lazyLoadMembers&&(u=Wr({},Ps.LAZY_LOADING_MESSAGES_FILTER)),s)&&(u=Wr(Wr({},u),null===(l=s.getRoomTimelineFilterComponent())||void 0===l?void 0:l.toJSON()));Object.keys(u).length&&(c.filter=JSON.stringify(u));var d={prefix:Nn.hasServerSideListSupport===Xi.Stable?Yr.V1:"/_matrix/client/unstable/org.matrix.msc3856"};return this.http.authedRequest(ue.Get,a,c,void 0,d).then(e=>{var t;return Wr(Wr({},e),{},{chunk:null===(t=e.chunk)||void 0===t?void 0:t.reverse(),start:e.prev_batch,end:e.next_batch})})}paginateEventTimeline(e,t){var n=this,r=e.getTimelineSet()===this.notifTimelineSet,i=this.getRoom(e.getRoomId()),o=e.getTimelineSet().threadListType,s=e.getTimelineSet().thread,a=(t=t||{}).backwards||!1;if(r&&!a)throw new Error("paginateNotifTimeline can only paginate backwards");var c,l,u,d,h=a?Me.BACKWARDS:Me.FORWARDS,p=e.getPaginationToken(h),f=e.paginationRequests[h];if(f)return f;if(r)c={limit:(null!==(u=t.limit)&&void 0!==u?u:30).toString(),only:"highlight"},p&&"end"!==p&&(c.from=p),l=this.http.authedRequest(ue.Get,"/notifications",c).then((d=H(function*(t){var r=t.next_token,i=[];t.notifications=t.notifications.filter(Ha);for(var o=0;o{e.paginationRequests[h]=null}),e.paginationRequests[h]=l;else if(null!==o){if(!i)throw new Error("Unknown room "+e.getRoomId());if(!Nn.hasServerSideFwdPaginationSupport&&h===ht.Forward)throw new Error("Cannot paginate threads forwards without server-side support for MSC 3715");l=this.createThreadListMessagesRequest(e.getRoomId(),p,t.limit,h,o,e.getFilter()).then(t=>{if(t.state){var n=e.getState(h),r=t.state.filter(Ha).map(this.getEventMapper());n.setUnknownStateEvents(r)}var o=t.end,s=t.chunk.filter(Ha).map(this.getEventMapper());return e.getTimelineSet().addEventsToTimeline(s,a,!1,e,o),this.processAggregatedTimelineEvents(i,s),this.processThreadRoots(i,s,a),a&&t.end==t.start&&e.setPaginationToken(null,h),t.end!==t.start}).finally(()=>{e.paginationRequests[h]=null}),e.paginationRequests[h]=l}else if(s){var m,g,v=this.getRoom(null!==(m=e.getRoomId())&&void 0!==m?m:void 0);if(!v)throw new Error("Unknown room "+e.getRoomId());var y=this.canSupport.get(ei.RelationsRecursion)!==Qr.Unsupported;l=this.fetchRelations(null!==(g=e.getRoomId())&&void 0!==g?g:"",s.id,null,null,{dir:h,limit:t.limit,from:p??void 0,recurse:y||void 0}).then(function(){var t=H(function*(t){var r=n.getEventMapper(),i=t.chunk.filter(Ha).filter(Ak(s.id)).map(r);for(var o of i.slice().reverse()){yield s?.processEvent(o);var c=o.getSender();(!a||null===s?.getEventReadUpTo(c))&&v.addLocalEchoReceipt(c,o,os.Read)}var l=t.next_batch,u=e.getTimelineSet();if(u.addEventsToTimeline(i,a,!1,e,l??null),!l&&a){var d,p,f=null!==(d=s.rootEvent)&&void 0!==d?d:r(yield n.fetchRoomEvent(null!==(p=e.getRoomId())&&void 0!==p?p:"",s.id));u.addEventsToTimeline([f],!0,!1,e,null)}return n.processAggregatedTimelineEvents(u.room,i),a&&!l&&e.setPaginationToken(null,h),!!l});return function(e){return t.apply(this,arguments)}}()).finally(()=>{e.paginationRequests[h]=null}),e.paginationRequests[h]=l}else{if(!i)throw new Error("Unknown room "+e.getRoomId());l=this.createMessagesRequest(e.getRoomId(),p,t.limit,h,e.getFilter()).then(t=>{if(t.state){var n=e.getState(h),r=t.state.filter(Ha).map(this.getEventMapper());n.setUnknownStateEvents(r)}var o=t.end,s=t.chunk.filter(Ha).map(this.getEventMapper()),c=e.getTimelineSet(),[l,,u]=i.partitionThreadedEvents(s);c.addEventsToTimeline(l,a,!1,e,o),this.processAggregatedTimelineEvents(i,l),this.processThreadRoots(i,l.filter(e=>e.getServerAggregatedRelation(Sn.name)),!1),u.forEach(e=>i.relations.aggregateChildEvent(e));var d=void 0===t.end||t.end===t.start;return a&&d&&e.setPaginationToken(null,h),!d}).finally(()=>{e.paginationRequests[h]=null}),e.paginationRequests[h]=l}return l}resetNotifTimelineSet(){this.notifTimelineSet&&this.notifTimelineSet.resetLiveTimeline("end")}peekInRoom(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20;return null===(t=this.peekSync)||void 0===t||t.stopPeeking(),this.peekSync=new Hd(this,this.clientOpts,this.buildSyncApiOptions()),this.peekSync.peek(e,n)}stopPeeking(){this.peekSync&&(this.peekSync.stopPeeking(),this.peekSync=null)}setGuestAccess(e,t){var n=this.sendStateEvent(e,Z.RoomGuestAccess,{guest_access:t.allowJoin?aC.CanJoin:aC.Forbidden},""),r=Promise.resolve();return t.allowRead&&(r=this.sendStateEvent(e,Z.RoomHistoryVisibility,{history_visibility:J7.WorldReadable},"")),Promise.all([r,n]).then()}requestRegisterEmailToken(e,t,n,r){return this.requestTokenFromEndpoint("/register/email/requestToken",{email:e,client_secret:t,send_attempt:n,next_link:r})}requestRegisterMsisdnToken(e,t,n,r,i){return this.requestTokenFromEndpoint("/register/msisdn/requestToken",{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:i})}requestAdd3pidEmailToken(e,t,n,r){return this.requestTokenFromEndpoint("/account/3pid/email/requestToken",{email:e,client_secret:t,send_attempt:n,next_link:r})}requestAdd3pidMsisdnToken(e,t,n,r,i){return this.requestTokenFromEndpoint("/account/3pid/msisdn/requestToken",{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:i})}requestPasswordEmailToken(e,t,n,r){return this.requestTokenFromEndpoint("/account/password/email/requestToken",{email:e,client_secret:t,send_attempt:n,next_link:r})}requestPasswordMsisdnToken(e,t,n,r,i){return this.requestTokenFromEndpoint("/account/password/msisdn/requestToken",{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:i})}requestTokenFromEndpoint(e,t){var n=this;return H(function*(){var r=Object.assign({},t);return n.http.request(ue.Post,e,void 0,r)})()}getRoomPushRule(e,t){var n;if(this.pushRules)return null===(n=this.pushRules[e])||void 0===n||null===(n=n.room)||void 0===n?void 0:n.find(e=>e.rule_id===t);throw new Error("SyncApi.sync() must be done before accessing to push rules.")}setRoomMutePushRule(e,t,n){var r,i=!1,o=this.getRoomPushRule(e,t);if(null!=o&&o.actions.includes(Jd.DontNotify)&&(i=!0),n)if(o){if(!i){var s=Promise.withResolvers();this.deletePushRule(e,Si.RoomSpecific,o.rule_id).then(()=>{this.addPushRule(e,Si.RoomSpecific,t,{actions:[Jd.DontNotify]}).then(()=>{s.resolve()}).catch(e=>{s.reject(e)})}).catch(e=>{s.reject(e)}),r=s.promise}}else r=this.addPushRule(e,Si.RoomSpecific,t,{actions:[Jd.DontNotify]});else i&&(r=this.deletePushRule(e,Si.RoomSpecific,o.rule_id));if(r)return new Promise((e,t)=>{r.then(()=>{this.getPushRules().then(t=>{this.pushRules=t,e()}).catch(e=>{t(e)})}).catch(e=>{this.getPushRules().then(n=>{this.pushRules=n,t(e)}).catch(n=>{t(e)})})})}searchMessageText(e){var t={search_term:e.query};return"keys"in e&&(t.keys=e.keys),this.search({body:{search_categories:{room_events:t}}})}searchRoomEvents(e){var t={search_categories:{room_events:{search_term:e.term,filter:e.filter,order_by:HJ.Recent,event_context:{before_limit:1,after_limit:1,include_profile:!0}}}},n={_query:t,results:[],highlights:[]};return this.search({body:t}).then(e=>this.processRoomEventsSearch(n,e))}backPaginateRoomEventsSearch(e){if(!e.next_batch)return Promise.reject(new Error("Cannot backpaginate event search any further"));if(e.pendingRequest)return e.pendingRequest;var t={body:e._query,next_batch:e.next_batch},n=this.search(t,e.abortSignal).then(t=>this.processRoomEventsSearch(e,t)).finally(()=>{e.pendingRequest=void 0});return e.pendingRequest=n,n}processRoomEventsSearch(e,t){var n,r,i=t.search_categories.room_events;e.count=i.count,e.next_batch=i.next_batch;var o=new Set(i.highlights);e.highlights.forEach(e=>{o.add(e)}),e.highlights=Array.from(o);for(var s=this.getEventMapper(),a=null!==(n=null===(r=i.results)||void 0===r?void 0:r.length)&&void 0!==n?n:0,c=0;c{this.logger.debug("Marking success of sync left room request"),this.syncedLeftRooms=!0}).finally(()=>{this.syncLeftRoomsPromise=void 0}),this.syncLeftRoomsPromise}createFilter(e){var t=Ae("/user/$userId/filter",{$userId:this.credentials.userId});return this.http.authedRequest(ue.Post,t,void 0,e).then(t=>{var n=Ps.fromJson(this.credentials.userId,t.filter_id,e);return this.store.storeFilter(n),n})}getFilter(e,t,n){if(n){var r=this.store.getFilter(e,t);if(r)return Promise.resolve(r)}var i=Ae("/user/$userId/filter/$filterId",{$userId:e,$filterId:t});return this.http.authedRequest(ue.Get,i).then(n=>{var r=Ps.fromJson(e,t,n);return this.store.storeFilter(r),r})}getOrCreateFilter(e,t){var n=this;return H(function*(){var r,i=n.store.getFilterIdByName(e);if(i){try{var o=yield n.getFilter(n.credentials.userId,i,!0);if(o)lf(o.getDefinition(),t.getDefinition())&&(r=i)}catch(e){if("M_UNKNOWN"!==e.errcode&&"M_NOT_FOUND"!==e.errcode)throw e}r||n.store.setFilterIdByName(e,void 0)}if(r)return r;var s=yield n.createFilter(t.getDefinition());return n.store.setFilterIdByName(e,s.filterId),s.filterId})()}getOpenIdToken(){var e=Ae("/user/$userId/openid/request_token",{$userId:this.credentials.userId});return this.http.authedRequest(ue.Post,e,void 0,{})}turnServer(){return this.http.authedRequest(ue.Get,"/voip/turnServer")}getTurnServers(){return this.turnServers||[]}getTurnServersExpiry(){return this.turnServersExpiry}get pollingTurnServers(){return void 0!==this.checkTurnServersIntervalID}checkTurnServers(){var e=this;return H(function*(){if(e.canSupportVoip){var t=!1,n=e.turnServersExpiry-Date.now();if(n>rH)e.logger.debug("TURN creds are valid for another "+n+" ms: not fetching new ones."),t=!0;else{e.logger.debug("Fetching new TURN credentials");try{var r=yield e.turnServer();if(r.uris){e.logger.debug("Got TURN URIs: "+r.uris+" refresh in "+r.ttl+" secs");var i={urls:r.uris,username:r.username,credential:r.password};e.turnServers=[i],e.turnServersExpiry=Date.now()+1e3*r.ttl,t=!0,e.emit(Pe.TurnServers,e.turnServers)}}catch(t){e.logger.error("Failed to get TURN URIs",t),403===t.httpStatus?(e.logger.info("TURN access unavailable for this account: stopping credentials checks"),null!==e.checkTurnServersIntervalID&&globalThis.clearInterval(e.checkTurnServersIntervalID),e.checkTurnServersIntervalID=void 0,e.emit(Pe.TurnServersError,t,!0)):e.emit(Pe.TurnServersError,t,!1)}}return t}})()}setFallbackICEServerAllowed(e){this.fallbackICEServerAllowed=e}isFallbackICEServerAllowed(){return this.fallbackICEServerAllowed}isSynapseAdministrator(){var e=Ae("/_synapse/admin/v1/users/$userId/admin",{$userId:this.getUserId()});return this.http.authedRequest(ue.Get,e,void 0,void 0,{prefix:""}).then(e=>e.admin)}whoisSynapseUser(e){var t=Ae("/_synapse/admin/v1/whois/$userId",{$userId:e});return this.http.authedRequest(ue.Get,t,void 0,void 0,{prefix:""})}deactivateSynapseUser(e){var t=Ae("/_synapse/admin/v1/deactivate/$userId",{$userId:e});return this.http.authedRequest(ue.Post,t,void 0,void 0,{prefix:""})}fetchClientWellKnown(){var e=this;return H(function*(){var t;e.clientWellKnownPromise=lt.getRawClientConfig(null!==(t=e.getDomain())&&void 0!==t?t:void 0),e.clientWellKnown=yield e.clientWellKnownPromise,e.emit(Pe.ClientWellKnown,e.clientWellKnown)})()}getClientWellKnown(){return this.clientWellKnown}waitForClientWellKnown(){if(!this.clientRunning)throw new Error("Client is not running");return this.clientWellKnownPromise}storeClientOptions(){var e=["boolean","string","number"],t=Object.entries(this.clientOpts).filter(t=>{var[n,r]=t;return e.includes(typeof r)}).reduce((e,t)=>{var[n,r]=t;return e[n]=r,e},{});return this.store.storeClientOptions(t)}_unstable_getSharedRooms(e){var t=this;return H(function*(){var n,r,i=yield t.doesServerSupportUnstableFeature(uQ),o=yield t.doesServerSupportUnstableFeature(dQ),s=yield t.doesServerSupportUnstableFeature(fQ);if(!i&&!o&&!s)throw Error("Server does not support the Mutual Rooms API");s?(n="/uk.half-shot.msc2666/user/mutual_rooms",r={user_id:e}):(n=Ae("/uk.half-shot.msc2666/user/".concat(o?"mutual_rooms":"shared_rooms","/$userId"),{$userId:e}),r={});var a=[],c=null;do{var l={};null!=c&&s&&(l.batch_token=c);var u=yield t.http.authedRequest(ue.Get,n,Wr(Wr({},r),l),void 0,{prefix:Yr.Unstable});a.push(...u.joined),c=void 0!==u.next_batch_token?u.next_batch_token:null}while(null!=c);return a})()}getVersions(){var e=this;return H(function*(){if(e.serverVersionsPromise)return e.serverVersionsPromise;e.serverVersionsPromise=e.http.authedRequest(ue.Get,"/_matrix/client/versions",void 0,void 0,{prefix:""}).catch(t=>{throw e.serverVersionsPromise=void 0,t});var t=yield e.serverVersionsPromise;return e.canSupport=yield E1e(t),e.serverVersionsPromise})()}isVersionSupported(e){var t=this;return H(function*(){var{versions:n}=yield t.getVersions();return n&&n.includes(e)})()}doesServerSupportUnstableFeature(e){var t=this;return H(function*(){var n=yield t.getVersions();if(!n)return!1;var r=n.unstable_features;return r&&!!r[e]})()}doesServerForceEncryptionForPreset(e){var t=this;return H(function*(){var n=yield t.getVersions();if(!n)return!1;var r=n.unstable_features,i=e.includes("_chat")?e.substring(0,e.indexOf("_chat")):e;return r&&!!r["io.element.e2ee_forced.".concat(i)]})()}doesServerSupportThread(){var e=this;return H(function*(){if(yield e.isVersionSupported("v1.4"))return{threads:Xi.Stable,list:Xi.Stable,fwdPagination:Xi.Stable};try{var[t,n,r,i,o,s]=yield Promise.all([e.doesServerSupportUnstableFeature("org.matrix.msc3440"),e.doesServerSupportUnstableFeature("org.matrix.msc3440.stable"),e.doesServerSupportUnstableFeature("org.matrix.msc3856"),e.doesServerSupportUnstableFeature("org.matrix.msc3856.stable"),e.doesServerSupportUnstableFeature("org.matrix.msc3715"),e.doesServerSupportUnstableFeature("org.matrix.msc3715.stable")]);return{threads:zw(n,t),list:zw(i,r),fwdPagination:zw(s,o)}}catch{return{threads:Xi.None,list:Xi.None,fwdPagination:Xi.None}}})()}hasLazyLoadMembersEnabled(){var e;return!(null===(e=this.clientOpts)||void 0===e||!e.lazyLoadMembers)}setCanResetTimelineCallback(e){this.canResetTimelineCallback=e}getCanResetTimelineCallback(){return this.canResetTimelineCallback}relations(e,t,n,r){var i=arguments,o=this;return H(function*(){var s,a,c=i.length>4&&void 0!==i[4]?i[4]:{dir:ht.Backward},l=r?o.getEncryptedIfNeededEventType(e,r):null,[u,d]=yield Promise.all([o.fetchRoomEvent(e,t),o.fetchRelations(e,t,n,l,c)]),h=o.getEventMapper(),p=u?h(u):void 0,f=d.chunk.map(h);if(l===Z.RoomMessageEncrypted){var m=p?f.concat(p):f;yield Promise.all(m.map(e=>o.decryptEventIfNeeded(e))),null!==r&&(f=f.filter(e=>e.getType()===r))}return p&&n===bn.Replace&&(f=f.filter(e=>e.getSender()===p.getSender())),{originalEvent:p??null,events:f,nextBatch:null!==(s=d.next_batch)&&void 0!==s?s:null,prevBatch:null!==(a=d.prev_batch)&&void 0!==a?a:null}})()}generateClientSecret(){return So(32)}decryptEventIfNeeded(e,t){return e.shouldAttemptDecryption()&&this.getCrypto()&&e.attemptDecryption(this.cryptoBackend,t),e.isBeingDecrypted()?e.getDecryptionPromise():Promise.resolve()}termsUrlForService(e,t){switch(e){case oA.IS:return this.http.getUrl("/terms",void 0,Ul.V2,t);case oA.IM:return this.http.getUrl("/terms",void 0,"/_matrix/integrations/v1",t);default:throw new Error("Unsupported service type")}}getHomeserverUrl(){return this.baseUrl}getIdentityServerUrl(){var e,t;return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(null!==(e=this.idBaseUrl)&&void 0!==e&&e.startsWith("http://")||null!==(t=this.idBaseUrl)&&void 0!==t&&t.startsWith("https://"))?this.idBaseUrl.split("://")[1]:this.idBaseUrl}setIdentityServerUrl(e){this.idBaseUrl=gk(e),this.http.setIdBaseUrl(this.idBaseUrl)}getAccessToken(){return this.http.opts.accessToken||null}getRefreshToken(){var e;return null!==(e=this.http.opts.refreshToken)&&void 0!==e?e:null}setAccessToken(e){this.http.opts.accessToken=e,this.serverVersionsPromise=void 0}isLoggedIn(){return void 0!==this.http.opts.accessToken}makeTxnId(){return"m"+(new Date).getTime()+"."+this.txnCtr++}isUsernameAvailable(e){return this.http.authedRequest(ue.Get,"/register/available",{username:e}).then(e=>e.available).catch(e=>"M_USER_IN_USE"!==e.errcode&&Promise.reject(e))}register(e,t,n,r,i,o,s){n&&(r.session=n);var a={auth:r,refresh_token:!0};return null!=e&&(a.username=e),null!=t&&(a.password=t),null!=o&&(a.guest_access_token=o),null!=s&&(a.inhibit_login=s),this.registerRequest(a)}registerGuest(){var{body:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.registerRequest(e||{},"guest")}registerRequest(e,t){var n={};return t&&(n.kind=t),this.http.request(ue.Post,"/register",n,e)}refreshToken(e){var t=t=>this.http.authedRequest(ue.Post,"/refresh",void 0,{refresh_token:e},{prefix:t,inhibitLogoutEmit:!0});return t(Yr.V3).catch(e=>{if("M_UNRECOGNIZED"===e.errcode)return t(Yr.V1);throw e})}loginFlows(){return this.http.request(ue.Get,"/login")}login(e,t){return this.loginRequest(Wr(Wr({},t),{},{type:e})).then(e=>(e.access_token&&e.user_id&&(this.http.opts.accessToken=e.access_token,this.credentials={userId:e.user_id}),e))}loginWithPassword(e,t){return this.login("m.login.password",{user:e,password:t})}getCasLoginUrl(e){return this.getSsoLoginUrl(e,"cas")}getSsoLoginUrl(e){var t=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,r="/login/"+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sso")+"/redirect";t&&(r+="/"+t);var i={redirectUrl:e,[Lye.unstable]:n};return this.http.getUrl(r,i).href}loginWithToken(e){return this.login("m.login.token",{token:e})}loginRequest(e){var t=this;return H(function*(){return yield t.http.authedRequest(ue.Post,"/login",void 0,e)})()}logout(){var e=arguments,t=this;return H(function*(){return e.length>0&&void 0!==e[0]&&e[0]&&(t.stopClient(),t.http.abort()),t.http.authedRequest(ue.Post,"/logout")})()}deactivateAccount(e,t){var n={};return e&&(n.auth=e),void 0!==t&&(n.erase=t),this.http.authedRequest(ue.Post,"/account/deactivate",void 0,n)}requestLoginToken(e){var t=this;return H(function*(){var n={auth:e};return t.http.authedRequest(ue.Post,"/login/get_token",void 0,n,{prefix:Yr.V1})})()}getFallbackAuthUrl(e,t){var n=Ae("/auth/$loginType/fallback/web",{$loginType:e});return this.http.getUrl(n,{session:t}).href}createRoom(e){var t=this;return H(function*(){var n,r=(e.invite_3pid||[]).filter(e=>!e.id_access_token);if(r.length>0&&null!==(n=t.identityServer)&&void 0!==n&&n.getAccessToken){var i=yield t.identityServer.getAccessToken();if(i)for(var o of r)o.id_access_token=i}return t.http.authedRequest(ue.Post,"/createRoom",void 0,e)})()}fetchRelations(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{dir:ht.Backward};Nn.hasServerSideFwdPaginationSupport===Xi.Experimental&&(i=IF("dir","org.matrix.msc3715.dir",i)),this.canSupport.get(ei.RelationsRecursion)===Qr.Unstable&&(i=IF("recurse","org.matrix.msc3981.recurse",i));var o=D5(i),s="/rooms/$roomId/relations/$eventId";null!==n?(s+="/$relationType",null!==r&&(s+="/$eventType")):null!==r&&(this.logger.warn("eventType: ".concat(r," ignored when fetching\n relations as relationType is null")),r=null);var a=Ae(s+"?"+o,{$roomId:e,$eventId:t,$relationType:n,$eventType:r});return this.http.authedRequest(ue.Get,a,void 0,void 0,{prefix:Yr.V1})}roomState(e){var t=Ae("/rooms/$roomId/state",{$roomId:e});return this.http.authedRequest(ue.Get,t)}fetchRoomEvent(e,t){var n=Ae("/rooms/$roomId/event/$eventId",{$roomId:e,$eventId:t});return this.http.authedRequest(ue.Get,n)}members(e,t,n,r){var i={};t&&(i.membership=t),n&&(i.not_membership=n),r&&(i.at=r);var o=Ae("/rooms/$roomId/members?"+D5(i),{$roomId:e});return this.http.authedRequest(ue.Get,o)}upgradeRoom(e,t){var n=Ae("/rooms/$roomId/upgrade",{$roomId:e});return this.http.authedRequest(ue.Post,n,void 0,{new_version:t})}getStateEvent(e,t,n){var r={$roomId:e,$eventType:t,$stateKey:n},i=Ae("/rooms/$roomId/state/$eventType",r);return void 0!==n&&(i=Ae(i+"/$stateKey",r)),this.http.authedRequest(ue.Get,i)}sendStateEvent(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},o={$roomId:e,$eventType:t,$stateKey:r},s=Ae("/rooms/$roomId/state/$eventType",o);return void 0!==r&&(s=Ae(s+"/$stateKey",o)),this.http.authedRequest(ue.Put,s,void 0,n,i)}roomInitialSync(e,t){var n,r=Ae("/rooms/$roomId/initialSync",{$roomId:e});return this.http.authedRequest(ue.Get,r,{limit:null!==(n=t?.toString())&&void 0!==n?n:"30"})}setRoomReadMarkersHttpRequest(e,t,n,r){var i=this;return H(function*(){var o=Ae("/rooms/$roomId/read_markers",{$roomId:e}),s={[os.FullyRead]:t,[os.Read]:n};return((yield i.doesServerSupportUnstableFeature("org.matrix.msc2285.stable"))||(yield i.isVersionSupported("v1.4")))&&(s[os.ReadPrivate]=r),i.http.authedRequest(ue.Post,o,void 0,s)})()}getJoinedRooms(){var e=Ae("/joined_rooms",{});return this.http.authedRequest(ue.Get,e)}getJoinedRoomMembers(e){var t=Ae("/rooms/$roomId/joined_members",{$roomId:e});return this.http.authedRequest(ue.Get,t)}publicRooms(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{server:t,limit:n,since:r}=e,i=Lve(e,kye);if(0===Object.keys(i).length){var o={server:t,limit:n,since:r};return this.http.authedRequest(ue.Get,"/publicRooms",o)}var s={server:t},a=Wr({limit:n,since:r},i);return this.http.authedRequest(ue.Post,"/publicRooms",s,a)}createAlias(e,t){var n=Ae("/directory/room/$alias",{$alias:e}),r={room_id:t};return this.http.authedRequest(ue.Put,n,void 0,r)}deleteAlias(e){var t=Ae("/directory/room/$alias",{$alias:e});return this.http.authedRequest(ue.Delete,t)}getLocalAliases(e){var t=Ae("/rooms/$roomId/aliases",{$roomId:e}),n=Yr.V3;return this.http.authedRequest(ue.Get,t,void 0,void 0,{prefix:n})}getRoomIdForAlias(e){var t=Ae("/directory/room/$alias",{$alias:e});return this.http.authedRequest(ue.Get,t)}getRoomDirectoryVisibility(e){var t=Ae("/directory/list/room/$roomId",{$roomId:e});return this.http.authedRequest(ue.Get,t)}setRoomDirectoryVisibility(e,t){var n=Ae("/directory/list/room/$roomId",{$roomId:e});return this.http.authedRequest(ue.Put,n,void 0,{visibility:t})}searchUserDirectory(e){var{term:t,limit:n}=e,r={search_term:t};return void 0!==n&&(r.limit=n),this.http.authedRequest(ue.Post,"/user_directory/search",void 0,r)}uploadContent(e,t){return this.http.uploadContent(e,t)}cancelUpload(e){return this.http.cancelUpload(e)}getCurrentUploads(){return this.http.getCurrentUploads()}getProfileInfo(e,t){var n=t?Ae("/profile/$userId/$info",{$userId:e,$info:t}):Ae("/profile/$userId",{$userId:e});return this.http.authedRequest(ue.Get,n)}doesServerSupportExtendedProfiles(){var e=this;return H(function*(){return e.doesServerSupportUnstableFeature(hQ)})()}getExtendedProfileRequestPrefix(){var e=this;return H(function*(){return(yield e.doesServerSupportUnstableFeature("uk.tcpip.msc4133.stable"))?Yr.V3:"/_matrix/client/unstable/uk.tcpip.msc4133"})()}getExtendedProfile(e){var t=this;return H(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");return t.http.authedRequest(ue.Get,Ae("/profile/$userId",{$userId:e}),void 0,void 0,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}getExtendedProfileProperty(e,t){var n=this;return H(function*(){if(!(yield n.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");return(yield n.http.authedRequest(ue.Get,Ae("/profile/$userId/$key",{$userId:e,$key:t}),void 0,void 0,{prefix:yield n.getExtendedProfileRequestPrefix()}))[t]})()}setExtendedProfileProperty(e,t){var n=this;return H(function*(){if(!(yield n.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var r=n.getUserId();yield n.http.authedRequest(ue.Put,Ae("/profile/$userId/$key",{$userId:r,$key:e}),void 0,{[e]:t},{prefix:yield n.getExtendedProfileRequestPrefix()})})()}deleteExtendedProfileProperty(e){var t=this;return H(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var n=t.getUserId();yield t.http.authedRequest(ue.Delete,Ae("/profile/$userId/$key",{$userId:n,$key:e}),void 0,void 0,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}patchExtendedProfile(e){var t=this;return H(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var n=t.getUserId();return t.http.authedRequest(ue.Patch,Ae("/profile/$userId",{$userId:n}),{},e,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}setExtendedProfile(e){var t=this;return H(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var n=t.getUserId();yield t.http.authedRequest(ue.Put,Ae("/profile/$userId",{$userId:n}),{},e,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}getThreePids(){return this.http.authedRequest(ue.Get,"/account/3pid")}addThreePidOnly(e){var t=this;return H(function*(){return t.http.authedRequest(ue.Post,"/account/3pid/add",void 0,e)})()}bindThreePid(e){var t=this;return H(function*(){return t.http.authedRequest(ue.Post,"/account/3pid/bind",void 0,e)})()}unbindThreePid(e,t){var n=this;return H(function*(){var r={medium:e,address:t,id_server:n.getIdentityServerUrl(!0)};return n.http.authedRequest(ue.Post,"/account/3pid/unbind",void 0,r)})()}deleteThreePid(e,t){return this.http.authedRequest(ue.Post,"/account/3pid/delete",void 0,{medium:e,address:t})}setPassword(e,t,n){var r={auth:e,new_password:t,logout_devices:n};return this.http.authedRequest(ue.Post,"/account/password",void 0,r)}getDevices(){return this.http.authedRequest(ue.Get,"/devices")}getDevice(e){var t=Ae("/devices/$device_id",{$device_id:e});return this.http.authedRequest(ue.Get,t)}setDeviceDetails(e,t){var n=Ae("/devices/$device_id",{$device_id:e});return this.http.authedRequest(ue.Put,n,void 0,t)}deleteDevice(e,t){var n=Ae("/devices/$device_id",{$device_id:e}),r={};return t&&(r.auth=t),this.http.authedRequest(ue.Delete,n,void 0,r)}deleteMultipleDevices(e,t){var n={devices:e};t&&(n.auth=t);return this.http.authedRequest(ue.Post,"/delete_devices",void 0,n)}getPushers(){var e=this;return H(function*(){var t=yield e.http.authedRequest(ue.Get,"/pushers");return(yield e.doesServerSupportUnstableFeature("org.matrix.msc3881"))||(t.pushers=t.pushers.map(e=>(e.hasOwnProperty(G5.name)||(e[G5.name]=!0),e))),t})()}setPusher(e){return this.http.authedRequest(ue.Post,"/pushers/set",void 0,e)}removePusher(e,t){var n={pushkey:e,app_id:t,kind:null};return this.http.authedRequest(ue.Post,"/pushers/set",void 0,n)}setLocalNotificationSettings(e,t){var n="".concat(zX.name,".").concat(e);return this.setAccountData(n,t)}getPushRules(){return this.http.authedRequest(ue.Get,"/pushrules/").then(e=>(this.setPushRules(e),this.pushRules))}setPushRules(e){this.pushRules=Fa.rewriteDefaultRules(this.logger,e,this.getUserId()),this.pushProcessor.updateCachedPushRuleKeys(this.pushRules)}addPushRule(e,t,n,r){var i=Ae("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:n});return this.http.authedRequest(ue.Put,i,void 0,r)}deletePushRule(e,t,n){var r=Ae("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:n});return this.http.authedRequest(ue.Delete,r)}setPushRuleEnabled(e,t,n,r){var i=Ae("/pushrules/"+e+"/$kind/$ruleId/enabled",{$kind:t,$ruleId:n});return this.http.authedRequest(ue.Put,i,void 0,{enabled:r})}setPushRuleActions(e,t,n,r){var i=Ae("/pushrules/"+e+"/$kind/$ruleId/actions",{$kind:t,$ruleId:n});return this.http.authedRequest(ue.Put,i,void 0,{actions:r})}search(e,t){var{body:n,next_batch:r}=e,i={};return r&&(i.next_batch=r),this.http.authedRequest(ue.Post,"/search",i,n,{abortSignal:t})}uploadKeysRequest(e,t){return this.http.authedRequest(ue.Post,"/keys/upload",void 0,e)}uploadKeySignatures(e){return this.http.authedRequest(ue.Post,"/keys/signatures/upload",void 0,e)}downloadKeysForUsers(e){var{token:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={device_keys:{}};return void 0!==t&&(n.token=t),e.forEach(e=>{n.device_keys[e]=[]}),this.http.authedRequest(ue.Post,"/keys/query",void 0,n)}claimOneTimeKeys(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"signed_curve25519",n=arguments.length>2?arguments[2]:void 0,r={};for(var[i,o]of(void 0===t&&(t="signed_curve25519"),e)){var s=r[i]||{};eC(r,i,s),eC(s,o,t)}var a={one_time_keys:r};n&&(a.timeout=n);return this.http.authedRequest(ue.Post,"/keys/claim",void 0,a)}getKeyChanges(e,t){var n={from:e,to:t};return this.http.authedRequest(ue.Get,"/keys/changes",n)}uploadDeviceSigningKeys(e,t){var n=Object.assign({},t);return e&&Object.assign(n,{auth:e}),this.http.authedRequest(ue.Post,"/keys/device_signing/upload",void 0,n,{prefix:Yr.Unstable})}registerWithIdentityServer(e){if(!this.idBaseUrl)throw new Error("No identity server base URL set");var t=this.http.getUrl("/account/register",void 0,Ul.V2,this.idBaseUrl);return this.http.requestOtherUrl(ue.Post,t,e)}requestEmailToken(e,t,n,r,i){var o={client_secret:t,email:e,send_attempt:n?.toString()};return r&&(o.next_link=r),this.http.idServerRequest(ue.Post,"/validate/email/requestToken",o,Ul.V2,i)}requestMsisdnToken(e,t,n,r,i,o){var s={client_secret:n,country:e,phone_number:t,send_attempt:r?.toString()};return i&&(s.next_link=i),this.http.idServerRequest(ue.Post,"/validate/msisdn/requestToken",s,Ul.V2,o)}submitMsisdnToken(e,t,n,r){var i={sid:e,client_secret:t,token:n};return this.http.idServerRequest(ue.Post,"/validate/msisdn/submitToken",i,Ul.V2,r??void 0)}submitMsisdnTokenOtherUrl(e,t,n,r){var i={sid:t,client_secret:n,token:r};return this.http.requestOtherUrl(ue.Post,e,i)}getIdentityHashDetails(e){return this.http.idServerRequest(ue.Get,"/hash_details",void 0,Ul.V2,e)}identityHashedLookup(e,t){var n=this;return H(function*(){var r={},i=yield n.getIdentityHashDetails(t);if(!i||!i.lookup_pepper||!i.algorithms)throw new Error("Unsupported identity server: bad response");r.pepper=i.lookup_pepper;var o,s={};if(i.algorithms.includes("sha256"))r.addresses=yield Promise.all(e.map((o=H(function*(e){var t=e[0].toLowerCase(),n=e[1].toLowerCase(),i=K3(yield QJ("".concat(t," ").concat(n," ").concat(r.pepper)));return s[i]=e[0],i}),function(e){return o.apply(this,arguments)}))),r.algorithm="sha256";else{if(!i.algorithms.includes("none"))throw new Error("Unsupported identity server: unknown hash algorithm");r.addresses=e.map(e=>{var t=e[0].toLowerCase(),n=e[1].toLowerCase(),r="".concat(t," ").concat(n);return s[r]=e[0],r}),r.algorithm="none"}var a=yield n.http.idServerRequest(ue.Post,"/lookup",r,Ul.V2,t);if(null==a||!a.mappings)return[];var c=[];for(var l of Object.keys(a.mappings)){var u=a.mappings[l],d=s[l];if(!d)throw new Error("Identity server returned more results than expected");c.push({address:d,mxid:u})}return c})()}lookupThreePid(e,t,n){var r=this;return H(function*(){var i=(yield r.identityHashedLookup([[t,e]],n)).find(e=>e.address===t);return i?{address:t,medium:e,mxid:i.mxid}:{}})()}bulkLookupThreePids(e,t){var n=this;return H(function*(){var r=yield n.identityHashedLookup(e.map(e=>[e[1],e[0]]),t),i=[],o=function*(t){var n=e.find(e=>e[1]===t.address);if(!n)throw new Error("Identity sever returned unexpected results");i.push([n[0],t.address,t.mxid])};for(var s of r)yield*o(s);return{threepids:i}})()}getIdentityAccount(e){return this.http.idServerRequest(ue.Get,"/account",void 0,Ul.V2,e)}sendToDevice(e,t,n){var r=Ae("/sendToDevice/$eventType/$txnId",{$eventType:e,$txnId:n||this.makeTxnId()}),i={messages:xh(t)},o=new Map;for(var[s,a]of t)o.set(s,Array.from(a.keys()));return this.logger.debug("PUT ".concat(r),o),this.http.authedRequest(ue.Put,r,void 0,i)}encryptAndSendToDevice(e,t,n){var r=this;return H(function*(){if(!r.cryptoBackend)throw new Error("Cannot encrypt to device event, your client does not support encryption.");var i=yield r.cryptoBackend.encryptToDeviceMessages(e,t,n);yield r.queueToDevice(i)})()}queueToDevice(e){return this.toDeviceMessageQueue.queueBatch(e)}getThirdpartyProtocols(){return this.http.authedRequest(ue.Get,"/thirdparty/protocols").then(e=>{if(!e||"object"!=typeof e)throw new Error("/thirdparty/protocols did not return an object: ".concat(e));return e})}getThirdpartyLocation(e,t){var n=Ae("/thirdparty/location/$protocol",{$protocol:e});return this.http.authedRequest(ue.Get,n,t)}getThirdpartyUser(e,t){var n=Ae("/thirdparty/user/$protocol",{$protocol:e});return this.http.authedRequest(ue.Get,n,t)}getTerms(e,t){var n=this.termsUrlForService(e,t);return this.http.requestOtherUrl(ue.Get,n)}agreeToTerms(e,t,n,r){var i=this.termsUrlForService(e,t),o={Authorization:"Bearer "+n};return this.http.requestOtherUrl(ue.Post,i,{user_accepts:r},{headers:o})}reportEvent(e,t,n,r){var i=Ae("/rooms/$roomId/report/$eventId",{$roomId:e,$eventId:t});return this.http.authedRequest(ue.Post,i,void 0,{score:n,reason:r})}reportRoom(e,t){var n=Ae("/rooms/$roomId/report",{$roomId:e});return this.http.authedRequest(ue.Post,n,void 0,{reason:t})}getRoomHierarchy(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4?arguments[4]:void 0,o=Ae("/rooms/$roomId/hierarchy",{$roomId:e}),s={suggested_only:String(r),max_depth:n?.toString(),from:i,limit:t?.toString()};return this.http.authedRequest(ue.Get,o,s,void 0,{prefix:Yr.V1}).catch(e=>{if("M_UNRECOGNIZED"===e.errcode)return this.http.authedRequest(ue.Get,o,s,void 0,{prefix:"/_matrix/client/unstable/org.matrix.msc2946"});throw e})}unstableCreateFileTree(e){var t=this;return H(function*(){var{room_id:n}=yield t.createRoom({name:e,preset:Y3.PrivateChat,power_level_content_override:Wr(Wr({},w0e),{},{users:{[t.getUserId()]:100}}),creation_content:{[tC]:_g.Space},initial_state:[{type:H5.name,state_key:V5.name,content:{[B5.name]:!0}},{type:Z.RoomEncryption,state_key:"",content:{algorithm:"m.megolm.v1.aes-sha2"}}]});return new V$(t,n)})()}unstableGetFileTreeSpace(e){var t,n,r=this.getRoom(e);if(r?.getMyMembership()!==He.Join)return null;var i=r.currentState.getStateEvents(Z.RoomCreate,""),o=r.currentState.getStateEvents(H5.name,V5.name);if(!i)throw new Error("Expected single room create event");return null!=o&&null!==(t=o.getContent())&&void 0!==t&&t[B5.name]&&(null===(n=i.getContent())||void 0===n?void 0:n[tC])===_g.Space?new V$(this,e):null}slidingSync(e,t,n){var r={};e.pos&&(r.pos=e.pos,delete e.pos),e.timeout&&(r.timeout=e.timeout,delete e.timeout);var i=e.clientTimeout;return delete e.clientTimeout,this.http.authedRequest(ue.Post,"/sync",r,e,{prefix:"/_matrix/client/unstable/org.matrix.simplified_msc3575",baseUrl:t,localTimeoutMs:i,abortSignal:n})}supportsThreads(){var e;return(null===(e=this.clientOpts)||void 0===e?void 0:e.threadSupport)||!1}supportsIntentionalMentions(){return this.canSupport.get(ei.IntentionalMentions)!==Qr.Unsupported}getRoomSummary(e,t){var n=this;return H(function*(){var r={prefix:"/_matrix/client/unstable/im.nheko.summary"};try{var i=Ae("/summary/$roomid",{$roomid:e});return yield n.http.authedRequest(ue.Get,i,{via:t},void 0,r)}catch(i){if(i instanceof or&&"M_UNRECOGNIZED"===i.errcode){var o=Ae("/rooms/$roomid/summary",{$roomid:e});return yield n.http.authedRequest(ue.Get,o,{via:t},void 0,r)}throw i}})()}processThreadEvents(e,t,n){e.processThreadedEvents(t,n)}processThreadRoots(e,t,n){this.supportsThreads()&&e.processThreadRoots(t,n)}processBeaconEvents(e,t){this.processAggregatedTimelineEvents(e,t)}processAggregatedTimelineEvents(e,t){null!=t&&t.length&&e&&(e.currentState.processBeaconEvents(t,this),e.processPollEvents(t))}whoami(){var e=this;return H(function*(){return e.http.authedRequest(ue.Get,"/account/whoami")})()}timestampToEvent(e,t,n){var r=this;return H(function*(){var i=Ae("/rooms/$roomId/timestamp_to_event",{$roomId:e}),o={ts:t.toString(),dir:n};try{return yield r.http.authedRequest(ue.Get,i,o,void 0,{prefix:Yr.V1})}catch(e){if("M_UNRECOGNIZED"===e.errcode&&(400===e.httpStatus||404===e.httpStatus||405===e.httpStatus))return yield r.http.authedRequest(ue.Get,i,o,void 0,{prefix:"/_matrix/client/unstable/org.matrix.msc3030"});throw e}})()}getAuthMetadata(){var e=this;return H(function*(){var t;try{t=yield e.http.request(ue.Get,"/auth_metadata",void 0,void 0,{prefix:Yr.Unstable+"/org.matrix.msc2965"})}catch(t){if(t instanceof or&&"M_UNRECOGNIZED"===t.errcode){var{issuer:n}=yield e.http.request(ue.Get,"/auth_issuer",void 0,void 0,{prefix:Yr.Unstable+"/org.matrix.msc2965"});return oO(n)}throw t}return aO(t)})()}}function iH(e){return Object.fromEntries(Object.entries(e).map(e=>{var[t,n]=e;return["".concat($c,".").concat(t),n]}))}function pQ(e,t){var n,r=e.getUserId(),i=t.getId(),o=e.getRoom(t.getRoomId());if(o&&r&&i){if(!o.findEventById(i))return void M.info("Decrypted event ".concat(t.getId()," is not in room ").concat(o.roomId,": ignoring"));var s,a=!!t.threadRootId&&!t.isThreadRoot;if(a){var c=o.getThread(t.threadRootId);s=!c||c.hasUserReadEvent(r,i)}else s=o.hasUserReadEvent(r,i);if(!s){var l=e.getPushActionsForEvent(t,!0);if(!(null==l||null===(n=l.tweaks)||void 0===n||!n.highlight)){var u=o.getUnreadCountForEventContext(Xt.Highlight,t)+1;a?o.setThreadUnreadNotificationCount(t.threadRootId,Xt.Highlight,u):o.setUnreadNotificationCount(Xt.Highlight,u)}if(!(null==l||!l.notify)){var d=o.getUnreadCountForEventContext(Xt.Total,t)+1;a?o.setThreadUnreadNotificationCount(t.threadRootId,Xt.Total,d):o.setUnreadNotificationCount(Xt.Total,d)}}}}function rv(e){return hb(e)?a_:e.threadRootId}function hb(e){return!(e.threadRootId&&!e.isThreadRoot)||(e.isRelation()?!e.isRelation(Sn.name)&&e.relationEventId===e.threadRootId:(M.warn("Event is not a relation or a thread root, but still has a threadRootId! id=".concat(e.getId())),!0))}function sH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oH(e){for(var t=1;t{null!=e&&e.isRelation(Sn.name)&&this.room.eventShouldLiveIn(e).threadId===this.id&&e.getId()!==this.id&&!t.status&&(this.replyCount--,this.updatePendingReplyCount(),this.emit(as.Update,this))}),L(this,"onRedaction",(o=H(function*(e,t,n){if(n===r.id)if(r.replyCount<=0){for(var i of r.timeline)r.clearEventMetadata(i);r.lastEvent=r.rootEvent,r._currentUserParticipated=!1,r.emit(as.Delete,r)}else{var o;(null===(o=r.lastEvent)||void 0===o?void 0:o.getId())===e.getAssociatedId()&&(yield r.processRootEventPromise,r.processRootEventPromise=void 0),yield r.updateThreadMetadata()}}),function(e,t,n){return o.apply(this,arguments)})),L(this,"onTimelineEvent",(e,t,n)=>{if(!n){var r=e.getSender();r&&t&&this.shouldSendLocalEchoReceipt(r,e)&&t.addLocalEchoReceipt(r,e,os.Read),e.getId()!==this.id&&e.isRelation(Sn.name)&&this.replyCount++}this.onEcho(e,n??!1)}),L(this,"onLocalEcho",e=>{this.onEcho(e,!1)}),L(this,"onEcho",function(){var e=H(function*(e,t){e.threadRootId===r.id&&r.lastEvent!==e&&(yield r.updateThreadMetadata(),e.isRelation(Sn.name)&&(t||(r.lastEvent=void 0,r.emit(as.NewReply,r,e))))});return function(t,n){return e.apply(this,arguments)}}()),this.setMaxListeners(1e3),null==n||!n.room)throw new Error("element-web#22141: A thread requires a room in order to function");this.room=n.room,this.client=n.client,this.pendingEventOrdering=null!==(i=n.pendingEventOrdering)&&void 0!==i?i:nv.Chronological,this.timelineSet=new sg(this.room,{timelineSupport:!0,pendingEvents:!0},this.client,this),this.reEmitter=new Uv(this),this.reEmitter.reEmit(this.timelineSet,[ke.Timeline,ke.TimelineReset]),this.room.on(Gt.BeforeRedaction,this.onBeforeRedaction),this.room.on(ke.Redaction,this.onRedaction),this.room.on(ke.LocalEchoUpdated,this.onLocalEcho),this.room.on(ke.TimelineReset,this.onTimelineReset),this.timelineSet.on(ke.Timeline,this.onTimelineEvent),this.processReceipts(n.receipts),this.updateThreadMetadata(),this.setEventMetadata(this.rootEvent)}fetchRootEvent(){var e=this;return H(function*(){try{var t=yield e.client.fetchRoomEvent(e.roomId,e.id),n=e.client.getEventMapper();e.rootEvent=n(t)}catch(e){M.error("Failed to fetch thread root to construct thread with",e)}yield e.processEvent(e.rootEvent)})()}static setServerSideSupport(e){Nn.hasServerSideSupport=e,e!==Xi.Stable&&(Cg.setPreferUnstable(!0),Tg.setPreferUnstable(!0),Sn.setPreferUnstable(!0))}static setServerSideListSupport(e){Nn.hasServerSideListSupport=e}static setServerSideFwdPaginationSupport(e){Nn.hasServerSideFwdPaginationSupport=e}shouldSendLocalEchoReceipt(e,t){var n;if((null!==(n=this.client.canSupport.get(ei.RelationsRecursion))&&void 0!==n?n:Qr.Unsupported)===Qr.Unsupported){var r,i=null===(r=this.getReadReceiptForUserId(e))||void 0===r?void 0:r.eventId;if(i){var o=this.findEventById(i);if(o&&o.getTs()>t.getTs())return!1}}return!0}get roomState(){return this.room.getLiveTimeline().getState(Me.FORWARDS)}addEventToTimeline(e,t){this.findEventById(e.getId())||this.timelineSet.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:t,fromCache:!1,roomState:this.roomState,addToState:!1})}insertEventIntoTimeline(e){var t=e.getId();t&&(this.findEventById(t)||this.timelineSet.insertEventIntoTimeline(e,this.liveTimeline,this.roomState,!1))}addEvents(e,t){e.forEach(e=>this.addEvent(e,t,!1)),this.updateThreadMetadata()}addEvent(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];this.setEventMetadata(e);var r=this.lastReply(),i=!r||e.localTimestamp>=r.localTimestamp;if(Nn.hasServerSideSupport){if(e.isRelation(bn.Annotation)||e.isRelation(bn.Replace))return void this.addRelatedThreadEvent(e,t);!t&&i?(this.addEventToTimeline(e,!1),this.fetchEditsWhereNeeded(e)):t?this.addEventToTimeline(e,t):this.insertEventIntoTimeline(e)}else this.addEventToTimeline(e,t),this.client.decryptEventIfNeeded(e);e.getId()!==this.id&&e.isRelation(Sn.name)&&!t&&i&&(this.lastEvent=void 0),n&&(this.emit(as.NewReply,this,e),this.updateThreadMetadata())}addRelatedThreadEvent(e,t){var n,r,i,o;this.initialEventsFetched?(null!==(i=this.client.canSupport.get(ei.RelationsRecursion))&&void 0!==i?i:Qr.Unsupported)===Qr.Unsupported?this.insertEventIntoTimeline(e):this.addEventToTimeline(e,t):null===(o=this.replayEvents)||void 0===o||o.push(e);null===(n=this.timelineSet.relations)||void 0===n||n.aggregateParentEvent(e),null===(r=this.timelineSet.relations)||void 0===r||r.aggregateChildEvent(e,this.timelineSet)}processEvent(e){var t=this;return H(function*(){e&&(t.setEventMetadata(e),yield t.fetchEditsWhereNeeded(e))})()}processReceipts(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];for(var{eventId:t,receiptType:n,userId:r,receipt:i,synthetic:o}of e)this.addReceiptToStructure(t,n,r,i,o)}getRootEventBundledRelationship(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.rootEvent;return e?.getServerAggregatedRelation(Sn.name)}processRootEvent(){var e=this;return H(function*(){var t=e.getRootEventBundledRelationship();if(Nn.hasServerSideSupport&&t){e.replyCount=t.count,e._currentUserParticipated=!!t.current_user_participated;var n=e.client.getEventMapper();e.lastEvent=n(oH(oH({},t.latest_event),{},{room_id:e.roomId})),e.updatePendingReplyCount(),yield e.processEvent(e.lastEvent)}})()}updatePendingReplyCount(){var e=(this.pendingEventOrdering===nv.Detached?this.room.getPendingEvents():this.events).filter(e=>{var t;return e.threadRootId===this.id&&e.isRelation(Sn.name)&&null!==e.status&&e.getId()!==(null===(t=this.lastEvent)||void 0===t?void 0:t.getId())});this.lastPendingEvent=e.length?e[e.length-1]:void 0,this.pendingReplyCount=e.length}resetLiveTimeline(e,t){var n=this;return H(function*(){var r=n.liveTimeline;n.timelineSet.resetLiveTimeline(e??void 0,t??void 0);var i,o,s=n.liveTimeline;e&&(i=(yield n.client.createMessagesRequest(n.roomId,e,1,ht.Forward)).end);t&&(o=(yield n.client.createMessagesRequest(n.roomId,t,1,ht.Backward)).start);t&&r.getPaginationToken(ht.Forward)===t&&r.setPaginationToken(o??null,ht.Forward),e&&s.getPaginationToken(ht.Backward)===e&&s.setPaginationToken(i??null,ht.Backward)})()}updateThreadFromRootEvent(){var e=this;return H(function*(){Nn.hasServerSideSupport&&(!e.initialEventsFetched&&!e.lastEvent&&(yield e.processRootEvent()),yield e.fetchRootEvent()),yield e.processRootEvent()})()}updateThreadMetadata(){var e=this;return H(function*(){if(e.updatePendingReplyCount(),e.processRootEventPromise||(e.processRootEventPromise=e.updateThreadFromRootEvent()),yield e.processRootEventPromise,!e.initialEventsFetched)if(e.initalEventFetchProm)yield e.initalEventFetchProm;else try{for(var t of(e.timelineSet.resetLiveTimeline(),0===e.replyCount&&e.rootEvent?(e.timelineSet.addEventsToTimeline([e.rootEvent],!0,!1,e.liveTimeline,null),e.liveTimeline.setPaginationToken(null,ht.Backward)):(e.initalEventFetchProm=e.client.paginateEventTimeline(e.liveTimeline,{backwards:!0}),yield e.initalEventFetchProm),e.initialEventsFetched=!0,e.replayEvents))e.addEvent(t,!1);e.replayEvents=null,e.emit(ke.TimelineReset,e.room,e.timelineSet,!0)}catch(t){M.error("Failed to load start of newly created thread: ",t),e.initialEventsFetched=!1}e.emit(as.Update,e)})()}fetchEditsWhereNeeded(){var e=arguments,t=this;return H(function*(){var n,r;if((null!==(n=t.client.canSupport.get(ei.RelationsRecursion))&&void 0!==n?n:Qr.Unsupported)===Qr.Unsupported){for(var i=e.length,o=new Array(i),s=0;s0&&void 0!==arguments[0]?arguments[0]:e=>e.isRelation(Sn.name),t=this.timeline.length-1;t>=0;t--){var n=this.timeline[t];if(e(n))return n}return null}get roomId(){return this.room.roomId}get length(){return this.replyCount+this.pendingReplyCount}get replyToEvent(){var e,t;return null!==(e=null!==(t=this.lastPendingEvent)&&void 0!==t?t:this.lastEvent)&&void 0!==e?e:this.lastReply()}get timeline(){return this.events}get events(){return this.liveTimeline.getEvents()}has(e){return this.timelineSet.findEventById(e)instanceof Zi}get hasCurrentUserParticipated(){return this._currentUserParticipated}get liveTimeline(){return this.timelineSet.getLiveTimeline()}getUnfilteredTimelineSet(){return this.timelineSet}addReceipt(e,t){throw new Error("Unsupported function on the thread model")}getEventReadUpTo(e,t){var n=e===this.client.getUserId(),r=this.timeline[this.timeline.length-1];if(n&&r){var i=r.getTs()=0;--c){var l,u,d=this.timeline[c];if(d.getId()===s)return s;if(d.getTs()e+": "+t[e]).join(", ")),n+="]"}var cH=Object.freeze({visible:!0}),Gt=function(e){return e.Decrypted="Event.decrypted",e.BeforeRedaction="Event.beforeRedaction",e.VisibilityChange="Event.visibilityChange",e.LocalEventIdReplaced="Event.localEventIdReplaced",e.Status="Event.status",e.Replaced="Event.replaced",e.RelationsCreated="Event.relationsCreated",e.SentinelUpdated="Event.sentinelUpdated",e}({});class Zi extends Ln{setMetadata(e,t){var n,r,i=this.isState()&&this.getType()===Z.RoomMember&&this.getSender()===this.getStateKey(),o=!1;if(i||null===(n=this.sender)||void 0===n||null===(n=n.events)||void 0===n||!n.member){var s=e.getSentinelMember(this.getSender());s!==this.sender&&(o=!0),this.sender=s}if(i||(null===(r=this.target)||void 0===r||null===(r=r.events)||void 0===r||!r.member)&&this.getType()===Z.RoomMember){var a=e.getSentinelMember(this.getStateKey());a!==this.target&&(o=!0),this.target=a}this.isState()&&t&&(this.forwardLooking=!1),o&&this.emit(Gt.SentinelUpdated)}constructor(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this.event=t,L(this,"pushDetails",{}),L(this,"_replacingEvent",null),L(this,"_localRedactionEvent",null),L(this,"_isCancelled",!1),L(this,"clearEvent",void 0),L(this,"visibility",cH),L(this,"_hasCachedExtEv",!1),L(this,"_cachedExtEv",void 0),L(this,"_decryptionFailureReason",null),L(this,"senderCurve25519Key",null),L(this,"claimedEd25519Key",null),L(this,"forwardingCurve25519KeyChain",[]),L(this,"untrusted",null),L(this,"decryptionPromise",null),L(this,"retryDecryption",!1),L(this,"txnId",void 0),L(this,"thread",void 0),L(this,"threadId",void 0),L(this,"localTimestamp",void 0),L(this,"sender",null),L(this,"target",null),L(this,"status",null),L(this,"error",null),L(this,"forwardLooking",!0),L(this,"reEmitter",void 0),["state_key","type","sender","room_id","membership"].forEach(e=>{"string"==typeof t[e]&&(t[e]=mk(t[e]))}),["membership","avatar_url","displayname"].forEach(e=>{var n;"string"==typeof(null===(n=t.content)||void 0===n?void 0:n[e])&&(t.content[e]=mk(t.content[e]))}),["rel_type"].forEach(e=>{var n;"string"==typeof(null===(n=t.content)||void 0===n||null===(n=n["m.relates_to"])||void 0===n?void 0:n[e])&&(t.content["m.relates_to"][e]=mk(t.content["m.relates_to"][e]))}),this.txnId=t.txn_id;var n=this.getAge();this.localTimestamp=void 0!==n?Date.now()-n:null!==(e=this.getTs())&&void 0!==e?e:Date.now(),this.reEmitter=new Uv(this)}get unstableExtensibleEvent(){return this._hasCachedExtEv||(this._cachedExtEv=Xs.ExtensibleEvents.parse(this.getEffectiveEvent())),this._cachedExtEv}invalidateExtensibleEvent(){this._hasCachedExtEv=!1}getEffectiveEvent(){var e=Object.assign({},this.getContent());if(this.getWireType()===Z.RoomMessageEncrypted)for(var[t,n]of Object.entries(this.getWireContent()))["algorithm","ciphertext","device_id","sender_key","session_id"].includes(t)||void 0===e[t]&&(e[t]=n);return Object.assign({},this.event,this.clearEvent,{content:e})}getId(){return this.event.event_id}getSender(){return this.event.sender}getType(){return this.clearEvent?this.clearEvent.type:this.event.type}getWireType(){return this.event.type}getRoomId(){return this.event.room_id}getTs(){return this.event.origin_server_ts}getDate(){return this.event.origin_server_ts?new Date(this.event.origin_server_ts):null}getDetails(){var e,t=this.getRoomId();if(t)return"id=".concat(this.getId()," type=").concat(this.getWireType()," sender=").concat(this.getSender()," room=").concat(t," ts=").concat(null===(e=this.getDate())||void 0===e?void 0:e.toISOString());var n=this.getContent()[V3];return"msgid=".concat(n," type=").concat(this.getWireType()," sender=").concat(this.getSender())}getOriginalContent(){var e,t;return this._localRedactionEvent?{}:this.clearEvent?null!==(t=this.clearEvent.content)&&void 0!==t?t:{}:null!==(e=this.event.content)&&void 0!==e?e:{}}getContent(){return this._localRedactionEvent?{}:this._replacingEvent?null!==(e=this._replacingEvent.getContent()["m.new_content"])&&void 0!==e?e:{}:this.getOriginalContent();var e}getWireContent(){return this.event.content||{}}get threadRootId(){var e;if(!this.isState()){var t=null===(e=this.getWireContent())||void 0===e?void 0:e["m.relates_to"];if(t?.rel_type===Sn.name)return t.event_id;if(this.thread)return this.thread.id;if(void 0!==this.threadId)return this.threadId;var n=this.getUnsigned();if("string"==typeof n[nC.name])return n[nC.name]}}get isThreadRoot(){return!this.isState()&&(!!this.getServerAggregatedRelation(Sn.name)||this.threadRootId===this.getId())}get replyEventId(){var e;return null===(e=this.getWireContent()["m.relates_to"])||void 0===e||null===(e=e["m.in_reply_to"])||void 0===e?void 0:e.event_id}get relationEventId(){var e;return null===(e=this.getWireContent())||void 0===e||null===(e=e["m.relates_to"])||void 0===e?void 0:e.event_id}getPrevContent(){return this.getUnsigned().prev_content||{}}getDirectionalContent(){return this.forwardLooking?this.getContent():this.getPrevContent()}getAge(){return this.getUnsigned().age}getLocalAge(){return Date.now()-this.localTimestamp}getStateKey(){return this.event.state_key}isState(){return void 0!==this.event.state_key}getMembershipAtEvent(){var e=this.getUnsigned();return WX.findIn(e)}makeEncrypted(e,t,n,r){this.clearEvent={type:this.event.type,content:this.event.content},this.event.type=e,this.event.content=t,this.senderCurve25519Key=n,this.claimedEd25519Key=r}isBeingDecrypted(){return null!=this.decryptionPromise}getDecryptionPromise(){return this.decryptionPromise}isDecryptionFailure(){return null!==this._decryptionFailureReason}get decryptionFailureReason(){return this._decryptionFailureReason}shouldAttemptDecryption(){return!(this.isRedacted()||this.isBeingDecrypted()||this.clearEvent||!this.isEncrypted())}attemptDecryption(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]?t[1]:{};if(!n.isEncrypted())throw new Error("Attempt to decrypt event which isn't encrypted");var i=n.clearEvent&&!n.isDecryptionFailure(),o=r.forceRedecryptIfUntrusted&&n.isKeySourceUntrusted();if(i&&!o)throw new Error("Attempt to decrypt event which has already been decrypted");return n.decryptionPromise?(M.log("Event ".concat(n.getId()," already being decrypted; queueing a retry")),n.retryDecryption=!0,n.decryptionPromise):(n.decryptionPromise=n.decryptionLoop(e,r),n.decryptionPromise)})()}getKeyRequestRecipients(e){return[{userId:e,deviceId:"*"}]}decryptionLoop(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]?t[1]:{};for(yield Promise.resolve();;){n.retryDecryption=!1;var i=void 0;try{var o=yield e.decryptEvent(n);!0===r.isRetry&&M.info("Decrypted event on retry (".concat(n.getDetails(),")")),n.setClearData(o),n._decryptionFailureReason=null}catch(e){var s=e instanceof aH?e.detailedString:String(e);if(i=e,n.retryDecryption){M.log("Error decrypting event (".concat(n.getDetails(),"), but retrying: ").concat(s));continue}M.warn("Error decrypting event (".concat(n.getDetails(),"): ").concat(s)),n.setClearDataForDecryptionFailure(String(e)),n._decryptionFailureReason=e instanceof aH?e.code:D0e.UNKNOWN_ERROR}return n.decryptionPromise=null,n.retryDecryption=!1,n.setPushDetails(),void(!1!==r.emit&&n.emit(Gt.Decrypted,n,i))}})()}setClearData(e){var t,n;this.clearEvent=e.clearEvent,this.senderCurve25519Key=null!==(t=e.senderCurve25519Key)&&void 0!==t?t:null,this.claimedEd25519Key=null!==(n=e.claimedEd25519Key)&&void 0!==n?n:null,this.forwardingCurve25519KeyChain=e.forwardingCurve25519KeyChain||[],this.untrusted=e.untrusted||!1,this.invalidateExtensibleEvent()}setClearDataForDecryptionFailure(e){this.clearEvent={type:Z.RoomMessage,content:{msgtype:"m.bad.encrypted",body:"** Unable to decrypt: ".concat(e," **")}},this.senderCurve25519Key=null,this.claimedEd25519Key=null,this.forwardingCurve25519KeyChain=[],this.untrusted=!1,this.invalidateExtensibleEvent()}getClearContent(){return this.clearEvent?this.clearEvent.content:null}isEncrypted(){return!this.isState()&&this.event.type===Z.RoomMessageEncrypted}getSenderKey(){return this.senderCurve25519Key}getKeysClaimed(){return this.claimedEd25519Key?{ed25519:this.claimedEd25519Key}:{}}getClaimedEd25519Key(){return this.claimedEd25519Key}getForwardingCurve25519KeyChain(){return this.forwardingCurve25519KeyChain}isKeySourceUntrusted(){return!!this.untrusted}getUnsigned(){return this.event.unsigned||{}}setUnsigned(e){this.event.unsigned=e}unmarkLocallyRedacted(){var e=this._localRedactionEvent;return this._localRedactionEvent=null,this.event.unsigned&&(this.event.unsigned.redacted_because=void 0),!!e}markLocallyRedacted(e){this._localRedactionEvent||(this.emit(Gt.BeforeRedaction,this,e),this._localRedactionEvent=e,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event)}applyVisibilityEvent(e){var t,n,r=null===(t=e?.visible)||void 0===t||t,i=null!==(n=e?.reason)&&void 0!==n?n:null,o=!1;(this.visibility.visible!==r||!this.visibility.visible&&this.visibility.reason!==i)&&(o=!0),o&&(this.visibility=r?cH:Object.freeze({visible:!1,reason:i}),this.emit(Gt.VisibilityChange,this,r))}messageVisibility(){return this.visibility}makeRedacted(e,t){if(!e.event)throw new Error("invalid redactionEvent in makeRedacted");for(var n in this._localRedactionEvent=null,this.emit(Gt.BeforeRedaction,this,e),this._replacingEvent=null,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event,this.event)this.event.hasOwnProperty(n)&&!Dye.has(n)&&delete this.event[n];this.isEncrypted()&&(this.clearEvent=void 0);var r=this.getType()in lH?lH[this.getType()]:{},i=this.getContent();for(var o in i)i.hasOwnProperty(o)&&!r[o]&&delete i[o];!this.isThreadRoot&&this.threadRootId&&this.threadRootId!==this.getId()&&(this.moveAllRelatedToMainTimeline(t),e.moveToMainTimeline(t)),this.invalidateExtensibleEvent()}moveAllRelatedToMainTimeline(e){var t=this.thread;if(this.moveToMainTimeline(e),t)for(var n of t.events){var r;(null===(r=n.getRelation())||void 0===r?void 0:r.event_id)===this.getId()&&n.moveAllRelatedToMainTimeline(e)}}moveToMainTimeline(e){var t;null===(t=this.thread)||void 0===t||t.timelineSet.removeEvent(this.getId()),this.setThread(void 0);var n=e.getLiveTimeline();n.getTimelineSet().insertEventIntoTimeline(this,n,n.getState(Me.FORWARDS),!1)}isRedacted(){return!!this.getUnsigned().redacted_because}isRedaction(){return this.getType()===Z.RoomRedaction}asVisibilityChange(){if(!Ah.matches(this.getType()))return null;var e=this.getRelation();if(!e||"m.reference"!=e.rel_type)return null;var t=e.event_id;if(!t)return null;var n=this.getWireContent(),r=!!n.visible,i=n.reason;return i&&"string"!=typeof i?null:{visible:r,reason:i,eventId:t}}isVisibilityEvent(){return Ah.matches(this.getType())}getRedactionEvent(){var e,t,n,r;return this.isRedacted()?null!==(e=this.clearEvent)&&void 0!==e&&e.unsigned?null!==(n=null===(r=this.clearEvent)||void 0===r?void 0:r.unsigned.redacted_because)&&void 0!==n?n:null:null!==(t=this.event.unsigned)&&void 0!==t&&t.redacted_because?this.event.unsigned.redacted_because:{}:null}getPushActions(){return this.pushDetails.actions||null}getPushDetails(){return this.pushDetails}setPushDetails(e,t){this.pushDetails={actions:e,rule:t}}handleRemoteEcho(e){var t,n=this.getUnsigned(),r=this.getId();this.event=e,n.redacted_because&&(this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=n.redacted_because),this.setStatus(null),this.getId()!==r&&this.emit(Gt.LocalEventIdReplaced,this),this.localTimestamp=Date.now()-(null!==(t=this.getAge())&&void 0!==t?t:0)}isSending(){return!!this.status}setStatus(e){this.status=e,this.emit(Gt.Status,this,e)}replaceLocalEventId(e){this.event.event_id=e,this.emit(Gt.LocalEventIdReplaced,this)}isRelation(e){var t,n=null===(t=this.getWireContent())||void 0===t?void 0:t["m.relates_to"];return!(this.isState()&&null!=n&&n.rel_type&&[bn.Replace,bn.Thread].includes(n.rel_type))&&!(null==n||!n.rel_type||!n.event_id||e&&n.rel_type!==e)}getRelation(){var e;return this.isRelation()&&null!==(e=this.getWireContent()["m.relates_to"])&&void 0!==e?e:null}makeReplaced(e){this.isRedacted()&&e||this.isState()||this._replacingEvent!==e&&(this._replacingEvent=e??null,this.emit(Gt.Replaced,this),this.invalidateExtensibleEvent())}getAssociatedStatus(){return this._replacingEvent?this._replacingEvent.status:this._localRedactionEvent?this._localRedactionEvent.status:this.status}getServerAggregatedRelation(e){var t;return null===(t=this.getUnsigned()["m.relations"])||void 0===t?void 0:t[e]}replacingEventId(){var e=this.getServerAggregatedRelation(bn.Replace);return e?e.event_id:this._replacingEvent?this._replacingEvent.getId():void 0}replacingEvent(){return this._replacingEvent}replacingEventDate(){var e=this.getServerAggregatedRelation(bn.Replace);if(e){var t=e.origin_server_ts;if(Number.isFinite(t))return new Date(t)}else if(this._replacingEvent){var n;return null!==(n=this._replacingEvent.getDate())&&void 0!==n?n:void 0}}localRedactionEvent(){return this._localRedactionEvent}getAssociatedId(){var e=this.getRelation();return this.replyEventId?this.replyEventId:e?e.event_id:this.isRedaction()?this.event.redacts:void 0}hasAssociation(){return!!this.getAssociatedId()}updateAssociatedId(e){var t=this.getRelation();t?t.event_id=e:this.isRedaction()&&(this.event.redacts=e)}flagCancelled(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._isCancelled=e}isCancelled(){return this._isCancelled}toSnapshot(){var e=new Zi(JSON.parse(JSON.stringify(this.event)));for(var[t,n]of Object.entries(this))"event"!==t&&(e[t]=n);return e}isEquivalentTo(e){if(!e)return!1;if(e===this)return!0;var t=N5(this.event),n=N5(e.event);return JSON.stringify(t)===JSON.stringify(n)}toJSON(){var e=this.getEffectiveEvent();return this.isEncrypted()?{decrypted:e,encrypted:this.event}:e}setTxnId(e){this.txnId=e}getTxnId(){return this.txnId}setThread(e){this.isState()||(this.thread&&this.reEmitter.stopReEmitting(this.thread,[as.Update]),this.thread=e,this.setThreadId(e?.id),e&&this.reEmitter.reEmit(e,[as.Update]))}getThread(){return this.thread}setThreadId(e){this.threadId=e}}var Dye=new Set(["event_id","type","room_id","user_id","sender","state_key","prev_state","content","unsigned","origin_server_ts"]),lH={[Z.RoomMember]:{membership:1},[Z.RoomJoinRules]:{join_rule:1},[Z.RoomPowerLevels]:{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1}},Nye=["1","2","3","4","5","6","7","8","9","10","11"];function Uye(e){return!Nye.includes(e)}var ho=function(e){return e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e}(ho||{}),pt=function(e){return e.Events="RoomState.events",e.Members="RoomState.members",e.NewMember="RoomState.newMember",e.Update="RoomState.update",e.BeaconLiveness="RoomState.BeaconLiveness",e.Marker="RoomState.Marker",e}({});class pb extends Ln{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{status:ho.NotStarted};super(),this.roomId=e,this.oobMemberFlags=t,L(this,"reEmitter",new Uv(this)),L(this,"sentinels",{}),L(this,"displayNameToUserIds",new Map),L(this,"userIdsToDisplayNames",{}),L(this,"tokenToInvite",{}),L(this,"joinedMemberCount",null),L(this,"summaryJoinedMemberCount",null),L(this,"invitedMemberCount",null),L(this,"summaryInvitedMemberCount",null),L(this,"modified",-1),L(this,"members",{}),L(this,"events",new Map),L(this,"paginationToken",null),L(this,"beacons",new Map),L(this,"_liveBeaconIds",[]),L(this,"getVersionWarning",!1),this.updateModifiedTime()}getRoomVersion(){var e,t=this.getStateEvents(Z.RoomCreate,"");return t?null!==(e=t.getContent().room_version)&&void 0!==e?e:"1":(this.getVersionWarning||(M.warn("[getVersion] Room "+this.roomId+" does not have an m.room.create event"),this.getVersionWarning=!0),"1")}getJoinedMemberCount(){return null!==this.summaryJoinedMemberCount?this.summaryJoinedMemberCount:(null===this.joinedMemberCount&&(this.joinedMemberCount=this.getMembers().reduce((e,t)=>t.membership===He.Join?e+1:e,0)),this.joinedMemberCount)}setJoinedMemberCount(e){this.summaryJoinedMemberCount=e}getInvitedMemberCount(){return null!==this.summaryInvitedMemberCount?this.summaryInvitedMemberCount:(null===this.invitedMemberCount&&(this.invitedMemberCount=this.getMembers().reduce((e,t)=>t.membership===He.Invite?e+1:e,0)),this.invitedMemberCount)}setInvitedMemberCount(e){this.summaryInvitedMemberCount=e}getMembers(){return Object.values(this.members)}getMembersExcept(e){return this.getMembers().filter(t=>!e.includes(t.userId))}getMember(e){return this.members[e]||null}getSentinelMember(e){if(!e)return null;var t=this.sentinels[e];if(void 0===t){t=new ob(this.roomId,e);var n=this.members[e];null!=n&&n.events.member&&t.setMembershipEvent(n.events.member,this),this.sentinels[e]=t}return t}getStateEvents(e,t){return this.events.has(e)?void 0===t?Array.from(this.events.get(e).values()):this.events.get(e).get(t)||null:void 0===t?[]:null}get hasLiveBeacons(){var e;return!(null===(e=this.liveBeaconIds)||void 0===e||!e.length)}get liveBeaconIds(){return this._liveBeaconIds}clone(){var e=new pb(this.roomId,this.oobMemberFlags),t=this.oobMemberFlags.status;return this.oobMemberFlags.status=ho.NotStarted,Array.from(this.events.values()).forEach(t=>{e.setStateEvents(Array.from(t.values()))}),this.oobMemberFlags.status=t,null!==this.summaryInvitedMemberCount&&e.setInvitedMemberCount(this.getInvitedMemberCount()),null!==this.summaryJoinedMemberCount&&e.setJoinedMemberCount(this.getJoinedMemberCount()),this.oobMemberFlags.status==ho.Finished&&this.getMembers().forEach(t=>{var n;t.isOutOfBand()&&(null===(n=e.getMember(t.userId))||void 0===n||n.markOutOfBand())}),e}setUnknownStateEvents(e){var t=e.filter(e=>!this.events.has(e.getType())||!this.events.get(e.getType()).has(e.getStateKey()));this.setStateEvents(t)}setStateEvents(e,t){this.updateModifiedTime(),e.forEach(e=>{if(e.getRoomId()===this.roomId&&e.isState()){Q7.matches(e.getType())&&this.setBeacon(e);var t,n=this.getStateEventMatching(e);if(this.setStateEvent(e),e.getType()===Z.RoomMember)this.updateDisplayNameCache(e.getStateKey(),null!==(t=e.getContent().displayname)&&void 0!==t?t:""),this.updateThirdPartyTokenCache(e);this.emit(pt.Events,e,this,n)}}),this.onBeaconLivenessChange(),e.forEach(e=>{if(e.getRoomId()===this.roomId&&e.isState())if(e.getType()===Z.RoomMember){var n=e.getStateKey();(e.getContent().membership===He.Leave||e.getContent().membership===He.Ban)&&(e.getContent().avatar_url=e.getContent().avatar_url||e.getPrevContent().avatar_url,e.getContent().displayname=e.getContent().displayname||e.getPrevContent().displayname);var r=this.getOrCreateMember(n,e);r.setMembershipEvent(e,this),this.updateMember(r),this.emit(pt.Members,e,this,r)}else if(e.getType()===Z.RoomPowerLevels){if(""!==e.getStateKey())return;var i=Object.values(this.members),o=this.getStateEvents(Z.RoomCreate,""),s=uH(this.getRoomVersion(),o);i.forEach(t=>{var n=t.getLastModifiedTime();if(o){var r=dH(t.userId,e,s);t.setPowerLevel(r,e)}n!==t.getLastModifiedTime()&&this.emit(pt.Members,e,this,t)}),this.sentinels={}}else GX.matches(e.getType())&&this.emit(pt.Marker,e,t)}),this.emit(pt.Update,this)}processBeaconEvents(e,t){var n=this;return H(function*(){if(e.length&&n.beacons.size){var r,i=[...n.beacons.values()].reduce((e,t)=>(e[t.beaconInfoId]=t,e),{}),o=(e,t)=>{if(cA.matches(t.getType())){var n=i[e];n&&n.addLocations([t])}},s=function*(e){var n,r=null===(n=e.getRelation())||void 0===n?void 0:n.event_id;if(!r||!i[r])return{v:void 0};if(!cA.matches(e.getType())&&!e.isEncrypted())return{v:void 0};try{yield t.decryptEventIfNeeded(e),o(r,e)}catch{e.isDecryptionFailure()&&e.once(Gt.Decrypted,H(function*(){o(r,e)}))}};for(var a of e)if(r=yield*s(a))return r.v}})()}getOrCreateMember(e,t){var n=this.members[e];return n||(n=new ob(this.roomId,e),this.members[e]=n,this.emit(pt.NewMember,t,this,n)),n}setStateEvent(e){this.events.has(e.getType())||this.events.set(e.getType(),new Map),this.events.get(e.getType()).set(e.getStateKey(),e)}setBeacon(e){var t=iC(e);if(this.beacons.has(t)){var n,r=this.beacons.get(t);return e.isRedacted()?void(r.beaconInfoId===(null===(n=e.getRedactionEvent())||void 0===n?void 0:n.redacts)&&(r.destroy(),this.beacons.delete(t))):r.update(e)}if(!e.isRedacted()){var i=new vJ(e);this.reEmitter.reEmit(i,[qn.New,qn.Update,qn.Destroy,qn.LivenessChange]),this.emit(qn.New,e,i),i.on(qn.LivenessChange,this.onBeaconLivenessChange.bind(this)),i.on(qn.Destroy,this.onBeaconLivenessChange.bind(this)),this.beacons.set(i.identifier,i)}}onBeaconLivenessChange(){this._liveBeaconIds=Array.from(this.beacons.values()).filter(e=>e.isLive).map(e=>e.identifier),this.emit(pt.BeaconLiveness,this,this.hasLiveBeacons)}getStateEventMatching(e){var t,n;return null!==(t=null===(n=this.events.get(e.getType()))||void 0===n?void 0:n.get(e.getStateKey()))&&void 0!==t?t:null}updateMember(e){var t=this.getStateEvents(Z.RoomCreate,""),n=this.getStateEvents(Z.RoomPowerLevels,"");if(n&&t){var r=dH(e.userId,n,uH(this.getRoomVersion(),t));e.setPowerLevel(r,n)}delete this.sentinels[e.userId],this.members[e.userId]=e,this.joinedMemberCount=null,this.invitedMemberCount=null}needsOutOfBandMembers(){return this.oobMemberFlags.status===ho.NotStarted}outOfBandMembersReady(){return this.oobMemberFlags.status===ho.Finished}markOutOfBandMembersStarted(){this.oobMemberFlags.status===ho.NotStarted&&(this.oobMemberFlags.status=ho.InProgress)}markOutOfBandMembersFailed(){this.oobMemberFlags.status===ho.InProgress&&(this.oobMemberFlags.status=ho.NotStarted)}clearOutOfBandMembers(){var e=0;Object.keys(this.members).forEach(t=>{this.members[t].isOutOfBand()&&(++e,delete this.members[t])}),M.log("LL: RoomState removed ".concat(e," members...")),this.oobMemberFlags.status=ho.NotStarted}setOutOfBandMembers(e){M.log("LL: RoomState about to set ".concat(e.length," OOB members ...")),this.oobMemberFlags.status===ho.InProgress&&(M.log("LL: RoomState put in finished state ..."),this.oobMemberFlags.status=ho.Finished,e.forEach(e=>this.setOutOfBandMember(e)),this.emit(pt.Update,this))}setOutOfBandMember(e){if(e.getType()===Z.RoomMember){var t=e.getStateKey(),n=this.getMember(t);if(!n||n.isOutOfBand()){var r=this.getOrCreateMember(t,e);r.setMembershipEvent(e,this),r.markOutOfBand(),this.updateDisplayNameCache(r.userId,r.name),this.setStateEvent(e),this.updateMember(r),this.emit(pt.Members,e,this,r)}}}setTypingEvent(e){Object.values(this.members).forEach(function(t){t.setTypingEvent(e)})}getInviteForThreePidToken(e){return this.tokenToInvite[e]||null}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}getUserIdsWithDisplayName(e){var t;return null!==(t=this.displayNameToUserIds.get(Xd(e)))&&void 0!==t?t:[]}maySendRedactionForEvent(e,t){var n=this.getMember(t);return!(!n||n.membership===He.Leave||e.status||e.isRedacted())&&(!!this.maySendEvent(Z.RoomRedaction,t)&&(e.getSender()===t||this.hasSufficientPowerLevelFor("redact",n.powerLevel)))}hasSufficientPowerLevelFor(e,t){var n=this.getStateEvents(Z.RoomPowerLevels,""),r={};n&&(r=n.getContent());var i=50;return kF(r[e])&&(i=r[e]),t>=i}maySendMessage(e){return this.maySendEventOfType(Z.RoomMessage,e,!1)}maySendEvent(e,t){return this.maySendEventOfType(e,t,!1)}mayClientSendStateEvent(e,t){return!(t.isGuest()||!t.credentials.userId)&&this.maySendStateEvent(e,t.credentials.userId)}maySendStateEvent(e,t){return this.maySendEventOfType(e,t,!0)}maySendEventOfType(e,t,n){var r,i,o=this.getStateEvents(Z.RoomPowerLevels,""),s={},a=0,c=0;o&&(s=(i=o.getContent()).events||{},a=Number.isSafeInteger(i.state_default)?i.state_default:50,Number.isSafeInteger(i.events_default)&&(c=i.events_default));var l=n?a:c;Number.isSafeInteger(s[e])&&(l=s[e]);var u=this.getMember(t);return(null!==(r=u?.powerLevel)&&void 0!==r?r:0)>=l}mayTriggerNotifOfType(e,t){var n=this.getMember(t);if(!n)return!1;var r=this.getStateEvents(Z.RoomPowerLevels,""),i=50;return r&&r.getContent()&&r.getContent().notifications&&kF(r.getContent().notifications[e])&&(i=r.getContent().notifications[e]),n.powerLevel>=i}getJoinRule(){var e,t=this.getStateEvents(Z.RoomJoinRules,"");return(null!==(e=t?.getContent())&&void 0!==e?e:{}).join_rule||Qd.Invite}getHistoryVisibility(){var e,t=this.getStateEvents(Z.RoomHistoryVisibility,"");return(null!==(e=t?.getContent())&&void 0!==e?e:{}).history_visibility||J7.Shared}getGuestAccess(){var e,t=this.getStateEvents(Z.RoomGuestAccess,"");return(null!==(e=t?.getContent())&&void 0!==e?e:{}).guest_access||aC.Forbidden}findPredecessor(){if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]){var e=this.getStateEvents(Z.RoomPredecessor,"");if(e){var t=e.getContent(),n=t.predecessor_room_id,r=t.last_known_event_id;"string"!=typeof r&&(r=void 0);var i=t.via_servers;if(Array.isArray(i)||(i=void 0),"string"==typeof n)return{roomId:n,eventId:r,viaServers:i}}}var o=this.getStateEvents(Z.RoomCreate,"");if(o){var s=o.getContent().predecessor;if(s){var a=s.room_id;if("string"==typeof a){var c=s.event_id;return("string"!=typeof c||""===c)&&(c=void 0),{roomId:a,eventId:c}}}}return null}updateThirdPartyTokenCache(e){if(e.getContent().third_party_invite){var t=(e.getContent().third_party_invite.signed||{}).token;if(t)this.getStateEvents(Z.RoomThirdPartyInvite,t)&&(this.tokenToInvite[t]=e)}}updateDisplayNameCache(e,t){var n=this.userIdsToDisplayNames[e];if(delete this.userIdsToDisplayNames[e],n){var r=Xd(n),i=this.displayNameToUserIds.get(r);if(i){var o=i.filter(t=>t!==e);this.displayNameToUserIds.set(r,o)}}this.userIdsToDisplayNames[e]=t;var s=t&&Xd(t);if(s){var a,c=null!==(a=this.displayNameToUserIds.get(s))&&void 0!==a?a:[];c.push(e),this.displayNameToUserIds.set(s,c)}}}function uH(e,t){var n=new Set;if(Uye(e)&&t){var r=t.getSender();r&&n.add(r);var i=t.getDirectionalContent().additional_creators;Array.isArray(i)&&i.forEach(e=>n.add(e))}return n}function dH(e,t,n){if(n.has(e))return 1/0;var r=t.getDirectionalContent(),i=r.users||{};return void 0!==i[e]&&Number.isInteger(i[e])?i[e]:void 0!==r.users_default?r.users_default:0}function fH(e){return"string"==typeof e&&!!e&&"undefined"!==e&&"null"!==e||"number"==typeof e}class mb{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};L(this,"rooms",{}),L(this,"users",{}),L(this,"syncToken",null),L(this,"filters",new pu(()=>new Map)),L(this,"accountData",new Map),L(this,"localStorage",void 0),L(this,"oobMembers",new Map),L(this,"pendingEvents",{}),L(this,"clientOptions",void 0),L(this,"pendingToDeviceBatches",[]),L(this,"nextToDeviceBatchId",0),L(this,"createUser",void 0),L(this,"onRoomMember",(e,t,n)=>{var r;if(n.membership!==He.Invite){var i=this.users[n.userId]||(null===(r=this.createUser)||void 0===r?void 0:r.call(this,n.userId));n.name&&(i.setDisplayName(n.name),n.events.member&&i.setRawDisplayName(n.events.member.getDirectionalContent().displayname)),n.events.member&&n.events.member.getContent().avatar_url&&i.setAvatarUrl(n.events.member.getContent().avatar_url),this.users[i.userId]=i}}),this.localStorage=e.localStorage}getSyncToken(){return this.syncToken}isNewlyCreated(){return Promise.resolve(!0)}setSyncToken(e){this.syncToken=e}storeRoom(e){this.rooms[e.roomId]=e,e.currentState.on(pt.Members,this.onRoomMember),e.currentState.getMembers().forEach(t=>{this.onRoomMember(null,e.currentState,t)})}setUserCreator(e){this.createUser=e}getRoom(e){return this.rooms[e]||null}getRooms(){return Object.values(this.rooms)}removeRoom(e){this.rooms[e]&&this.rooms[e].currentState.removeListener(pt.Members,this.onRoomMember),delete this.rooms[e]}getRoomSummaries(){return Object.values(this.rooms).map(function(e){return e.summary})}storeUser(e){this.users[e.userId]=e}getUser(e){return this.users[e]||null}getUsers(){return Object.values(this.users)}scrollback(e,t){return[]}storeEvents(e,t,n,r){}storeFilter(e){null==e||!e.userId||null==e||!e.filterId||this.filters.getOrCreate(e.userId).set(e.filterId,e)}getFilter(e,t){var n;return(null===(n=this.filters.get(e))||void 0===n?void 0:n.get(t))||null}getFilterIdByName(e){if(!this.localStorage)return null;var t="mxjssdk_memory_filter_"+e;try{var n=this.localStorage.getItem(t);if(fH(n))return n}catch{}return null}setFilterIdByName(e,t){if(this.localStorage){var n="mxjssdk_memory_filter_"+e;try{fH(t)?this.localStorage.setItem(n,t):this.localStorage.removeItem(n)}catch{}}}storeAccountDataEvents(e){e.forEach(e=>{!Object.keys(e.getContent()).length?this.accountData.delete(e.getType()):this.accountData.set(e.getType(),e)})}getAccountData(e){return this.accountData.get(e)}setSyncData(e){return Promise.resolve()}wantsSave(){return!1}save(e){return Promise.resolve()}startup(){return Promise.resolve()}getSavedSync(){return Promise.resolve(null)}getSavedSyncToken(){return Promise.resolve(null)}deleteAllData(){return this.rooms={},this.users={},this.syncToken=null,this.filters=new pu(()=>new Map),this.accountData=new Map,Promise.resolve()}getOutOfBandMembers(e){return Promise.resolve(this.oobMembers.get(e)||null)}setOutOfBandMembers(e,t){return this.oobMembers.set(e,t),Promise.resolve()}clearOutOfBandMembers(e){return this.oobMembers.delete(e),Promise.resolve()}getClientOptions(){return Promise.resolve(this.clientOptions)}storeClientOptions(e){return this.clientOptions=Object.assign({},e),Promise.resolve()}getPendingEvents(e){var t=this;return H(function*(){var n;return null!==(n=t.pendingEvents[e])&&void 0!==n?n:[]})()}setPendingEvents(e,t){var n=this;return H(function*(){n.pendingEvents[e]=t})()}saveToDeviceBatches(e){for(var t of e)this.pendingToDeviceBatches.push({id:this.nextToDeviceBatchId++,eventType:t.eventType,txnId:t.txnId,batch:t.batch});return Promise.resolve()}getOldestToDeviceBatch(){var e=this;return H(function*(){return 0===e.pendingToDeviceBatches.length?null:e.pendingToDeviceBatches[0]})()}removeToDeviceBatch(e){return this.pendingToDeviceBatches=this.pendingToDeviceBatches.filter(t=>t.id!==e),Promise.resolve()}destroy(){return H(function*(){})()}}var gQ=(e=>(e.ToWidget="toWidget",e.FromWidget="fromWidget",e))(gQ||{});function jye(e){if("toWidget"===e)return"fromWidget";if("fromWidget"===e)return"toWidget";throw new Error("Invalid direction")}var Vl=(e=>(e.MSC2762="org.matrix.msc2762",e.MSC2762_UPDATE_STATE="org.matrix.msc2762_update_state",e.MSC2871="org.matrix.msc2871",e.MSC2873="org.matrix.msc2873",e.MSC2931="org.matrix.msc2931",e.MSC2974="org.matrix.msc2974",e.MSC2876="org.matrix.msc2876",e.MSC3819="org.matrix.msc3819",e.MSC3846="town.robin.msc3846",e.MSC3869="org.matrix.msc3869",e.MSC3973="org.matrix.msc3973",e.MSC4039="org.matrix.msc4039",e))(Vl||{});const Fye=["0.0.1","0.0.2","org.matrix.msc2762","org.matrix.msc2762_update_state","org.matrix.msc2871","org.matrix.msc2873","org.matrix.msc2931","org.matrix.msc2974","org.matrix.msc2876","org.matrix.msc3819","town.robin.msc3846","org.matrix.msc3869","org.matrix.msc3973","org.matrix.msc4039"];class $ye extends B3.EventEmitter{constructor(e,t,n,r){super(),this.sendDirection=e,this.initialWidgetId=t,this.transportWindow=n,this.inboundWindow=r,this.strictOriginCheck=!1,this.targetOrigin="*",this.timeoutSeconds=10,this._ready=!1,this._widgetId=null,this.outboundRequests=new Map,this.stopController=new AbortController,this._widgetId=t}get ready(){return this._ready}get widgetId(){return this._widgetId||null}get nextRequestId(){const e=`widgetapi-${Date.now()}`;let t=0,n=e;for(;this.outboundRequests.has(n);)n=`${e}-${t++}`;return this.outboundRequests.set(n,null),n}sendInternal(e){console.log(`[PostmessageTransport] Sending object to ${this.targetOrigin}: `,e),this.transportWindow.postMessage(e,this.targetOrigin)}reply(e,t){return this.sendInternal({...e,response:t})}send(e,t){return this.sendComplete(e,t).then(e=>e.response)}sendComplete(e,t){if(!this.ready||!this.widgetId)return Promise.reject(new Error("Not ready or unknown widget ID"));const n={api:this.sendDirection,widgetId:this.widgetId,requestId:this.nextRequestId,action:e,data:t};return e===gr.UpdateVisibility&&(n.visible=t.visible),new Promise((e,t)=>{const r=e=>{s(),t(e)},i=setTimeout(()=>r(new Error("Request timed out")),1e3*(this.timeoutSeconds||1)),o=()=>r(new Error("Transport stopped"));this.stopController.signal.addEventListener("abort",o);const s=()=>{this.outboundRequests.delete(n.requestId),clearTimeout(i),this.stopController.signal.removeEventListener("abort",o)};this.outboundRequests.set(n.requestId,{request:n,resolve:t=>{s(),e(t)},reject:r}),this.sendInternal(n)})}start(){this.inboundWindow.addEventListener("message",e=>{this.handleMessage(e)}),this._ready=!0}stop(){this._ready=!1,this.stopController.abort()}handleMessage(e){if(this.stopController.signal.aborted||!e.data||this.strictOriginCheck&&e.origin!==window.origin)return;const t=e.data;if(t.action&&t.requestId&&t.widgetId)if(t.response){if(t.api!==this.sendDirection)return;this.handleResponse(t)}else{const e=t;if(e.api!==jye(this.sendDirection))return;this.handleRequest(e)}}handleRequest(e){if(this.widgetId){if(this.widgetId!==e.widgetId)return}else this._widgetId=e.widgetId;this.emit("message",new CustomEvent("message",{detail:e}))}handleResponse(e){if(e.widgetId!==this.widgetId)return;const t=this.outboundRequests.get(e.requestId);if(t)if(Bye(e.response)){const{message:n,...r}=e.response.error;t.reject(new pC(n,r))}else t.resolve(e)}}var gr=(e=>(e.SupportedApiVersions="supported_api_versions",e.Capabilities="capabilities",e.NotifyCapabilities="notify_capabilities",e.ThemeChange="theme_change",e.LanguageChange="language_change",e.TakeScreenshot="screenshot",e.UpdateVisibility="visibility",e.OpenIDCredentials="openid_credentials",e.WidgetConfig="widget_config",e.CloseModalWidget="close_modal",e.ButtonClicked="button_clicked",e.SendEvent="send_event",e.SendToDevice="send_to_device",e.UpdateState="update_state",e.UpdateTurnServers="update_turn_servers",e))(gr||{}),Qn=(e=>(e.SupportedApiVersions="supported_api_versions",e.ContentLoaded="content_loaded",e.SendSticker="m.sticker",e.UpdateAlwaysOnScreen="set_always_on_screen",e.GetOpenIDCredentials="get_openid",e.CloseModalWidget="close_modal",e.OpenModalWidget="open_modal",e.SetModalButtonEnabled="set_button_enabled",e.SendEvent="send_event",e.SendToDevice="send_to_device",e.WatchTurnServers="watch_turn_servers",e.UnwatchTurnServers="unwatch_turn_servers",e.BeeperReadRoomAccountData="com.beeper.read_room_account_data",e.MSC2876ReadEvents="org.matrix.msc2876.read_events",e.MSC2931Navigate="org.matrix.msc2931.navigate",e.MSC2974RenegotiateCapabilities="org.matrix.msc2974.request_capabilities",e.MSC3869ReadRelations="org.matrix.msc3869.read_relations",e.MSC3973UserDirectorySearch="org.matrix.msc3973.user_directory_search",e.MSC4039GetMediaConfigAction="org.matrix.msc4039.get_media_config",e.MSC4039UploadFileAction="org.matrix.msc4039.upload_file",e.MSC4039DownloadFileAction="org.matrix.msc4039.download_file",e.MSC4157UpdateDelayedEvent="org.matrix.msc4157.update_delayed_event",e))(Qn||{}),Qm=(e=>(e.Allowed="allowed",e.Blocked="blocked",e.PendingUserConfirmation="request",e))(Qm||{}),vQ=(e=>(e.Custom="m.custom",e.JitsiMeet="m.jitsi",e.Stickerpicker="m.stickerpicker",e))(vQ||{}),yQ=(e=>(e.Close="m.close",e))(yQ||{}),Lc=(e=>(e.Send="send",e.Receive="receive",e))(Lc||{});class Wi{constructor(e,t,n,r,i){this.direction=e,this.eventType=t,this.kind=n,this.keyStr=r,this.raw=i}matchesAsStateEvent(e,t,n){return"state_event"===this.kind&&this.direction===e&&this.eventType===t&&(null===this.keyStr||this.keyStr===n)}matchesAsToDeviceEvent(e,t){return!("to_device"!==this.kind||this.direction!==e||this.eventType!==t)}matchesAsRoomEvent(e,t,n=null){return"event"===this.kind&&this.direction===e&&this.eventType===t&&("m.room.message"!==this.eventType||(null===this.keyStr||this.keyStr===n))}matchesAsRoomAccountData(e,t){return!("room_account"!==this.kind||this.direction!==e||this.eventType!==t)}static forStateEvent(e,t,n){const r=`org.matrix.msc2762.${e}.state_event:${t=t.replace(/#/g,"\\#")}${n=null!=n?`#${n}`:""}`;return Wi.findEventCapabilities([r])[0]}static forToDeviceEvent(e,t){const n=`org.matrix.msc3819.${e}.to_device:${t}`;return Wi.findEventCapabilities([n])[0]}static forRoomEvent(e,t){const n=`org.matrix.msc2762.${e}.event:${t}`;return Wi.findEventCapabilities([n])[0]}static forRoomMessageEvent(e,t){const n=`org.matrix.msc2762.${e}.event:m.room.message#${t=t??""}`;return Wi.findEventCapabilities([n])[0]}static forRoomAccountData(e,t){const n=`com.beeper.capabilities.${e}.room_account_data:${t}`;return Wi.findEventCapabilities([n])[0]}static findEventCapabilities(e){const t=[];for(const n of e){let e,r=null,i=null;if(n.startsWith("org.matrix.msc2762.send.event:")?(r="send",i="event",e=n.substring(30)):n.startsWith("org.matrix.msc2762.send.state_event:")?(r="send",i="state_event",e=n.substring(36)):n.startsWith("org.matrix.msc3819.send.to_device:")?(r="send",i="to_device",e=n.substring(34)):n.startsWith("org.matrix.msc2762.receive.event:")?(r="receive",i="event",e=n.substring(33)):n.startsWith("org.matrix.msc2762.receive.state_event:")?(r="receive",i="state_event",e=n.substring(39)):n.startsWith("org.matrix.msc3819.receive.to_device:")?(r="receive",i="to_device",e=n.substring(37)):n.startsWith("com.beeper.capabilities.receive.room_account_data:")&&(r="receive",i="room_account",e=n.substring(50)),null===r||null===i||void 0===e)continue;const o=e.startsWith("m.room.message#")||"state_event"===i;let s=null;if(e.includes("#")&&o){const t=e.split("#"),n=t.findIndex(e=>!e.endsWith("\\"));e=t.slice(0,n+1).map(e=>e.endsWith("\\")?e.substring(0,e.length-1):e).join("#"),s=t.slice(n+1).join("#")}t.push(new Wi(r,e,i,s,n))}return t}}var Ch=(e=>(e.AnyRoom="*",e))(Ch||{});const j3=class extends Error{constructor(e,t){super(e),this.data=t}};j3.prototype.name=j3.name;let pC=j3;class Hye extends B3.EventEmitter{constructor(e=null,t=null){if(super(),this.clientOrigin=t,this.capabilitiesFinished=!1,this.supportsMSC2974Renegotiate=!1,this.requestedCapabilities=[],this.turnServerWatchers=0,!window.parent)throw new Error("No parent window. This widget doesn't appear to be embedded properly.");this.transport=new $ye(gQ.FromWidget,e,window.parent,window),this.transport.targetOrigin=t,this.transport.on("message",this.handleMessage.bind(this))}hasCapability(e){return Array.isArray(this.approvedCapabilities)?this.approvedCapabilities.includes(e):this.requestedCapabilities.includes(e)}requestCapability(e){if(this.capabilitiesFinished&&!this.supportsMSC2974Renegotiate)throw new Error("Capabilities have already been negotiated");this.requestedCapabilities.push(e)}requestCapabilities(e){e.forEach(e=>this.requestCapability(e))}requestCapabilityForRoomTimeline(e){this.requestCapability(`org.matrix.msc2762.timeline:${e}`)}requestCapabilityToSendState(e,t){this.requestCapability(Wi.forStateEvent(Lc.Send,e,t).raw)}requestCapabilityToReceiveState(e,t){this.requestCapability(Wi.forStateEvent(Lc.Receive,e,t).raw)}requestCapabilityToSendToDevice(e){this.requestCapability(Wi.forToDeviceEvent(Lc.Send,e).raw)}requestCapabilityToReceiveToDevice(e){this.requestCapability(Wi.forToDeviceEvent(Lc.Receive,e).raw)}requestCapabilityToSendEvent(e){this.requestCapability(Wi.forRoomEvent(Lc.Send,e).raw)}requestCapabilityToReceiveEvent(e){this.requestCapability(Wi.forRoomEvent(Lc.Receive,e).raw)}requestCapabilityToSendMessage(e){this.requestCapability(Wi.forRoomMessageEvent(Lc.Send,e).raw)}requestCapabilityToReceiveMessage(e){this.requestCapability(Wi.forRoomMessageEvent(Lc.Receive,e).raw)}requestCapabilityToReceiveRoomAccountData(e){this.requestCapability(Wi.forRoomAccountData(Lc.Receive,e).raw)}requestOpenIDConnectToken(){return new Promise((e,t)=>{this.transport.sendComplete(Qn.GetOpenIDCredentials,{}).then(n=>{const r=n.response;if(r.state===Qm.Allowed)e(r);else if(r.state===Qm.Blocked)t(new Error("User declined to verify their identity"));else if(r.state===Qm.PendingUserConfirmation){const i=o=>{o.preventDefault();const s=o.detail;s.data.original_request_id===n.requestId&&(s.data.state===Qm.Allowed?(e(s.data),this.transport.reply(s,{})):s.data.state===Qm.Blocked?(t(new Error("User declined to verify their identity")),this.transport.reply(s,{})):(t(new Error("Invalid state on reply: "+r.state)),this.transport.reply(s,{error:{message:"Invalid state"}})),this.off(`action:${gr.OpenIDCredentials}`,i))};this.on(`action:${gr.OpenIDCredentials}`,i)}else t(new Error("Invalid state: "+r.state))}).catch(t)})}updateRequestedCapabilities(){return this.transport.send(Qn.MSC2974RenegotiateCapabilities,{capabilities:this.requestedCapabilities}).then()}sendContentLoaded(){return this.transport.send(Qn.ContentLoaded,{}).then()}sendSticker(e){return this.transport.send(Qn.SendSticker,e).then()}setAlwaysOnScreen(e){return this.transport.send(Qn.UpdateAlwaysOnScreen,{value:e}).then(e=>e.success)}openModalWidget(e,t,n=[],r={},i=vQ.Custom){return this.transport.send(Qn.OpenModalWidget,{type:i,url:e,name:t,buttons:n,data:r}).then()}closeModalWidget(e={}){return this.transport.send(Qn.CloseModalWidget,e).then()}sendRoomEvent(e,t,n,r,i){return this.sendEvent(e,void 0,t,n,r,i)}sendStateEvent(e,t,n,r,i,o){return this.sendEvent(e,t,n,r,i,o)}sendEvent(e,t,n,r,i,o){return this.transport.send(Qn.SendEvent,{type:e,content:n,...void 0!==t&&{state_key:t},...void 0!==r&&{room_id:r},...void 0!==i&&{delay:i},...void 0!==o&&{parent_delay_id:o}})}updateDelayedEvent(e,t){return this.transport.send(Qn.MSC4157UpdateDelayedEvent,{delay_id:e,action:t})}sendToDevice(e,t,n){return this.transport.send(Qn.SendToDevice,{type:e,encrypted:t,messages:n})}readRoomAccountData(e,t){const n={type:e};return t&&(t.includes(Ch.AnyRoom)?n.room_ids=Ch.AnyRoom:n.room_ids=t),this.transport.send(Qn.BeeperReadRoomAccountData,n).then(e=>e.events)}readRoomEvents(e,t,n,r,i){const o={type:e,msgtype:n};return void 0!==t&&(o.limit=t),r&&(r.includes(Ch.AnyRoom)?o.room_ids=Ch.AnyRoom:o.room_ids=r),i&&(o.since=i),this.transport.send(Qn.MSC2876ReadEvents,o).then(e=>e.events)}async readEventRelations(e,t,n,r,i,o,s,a){if(!(await this.getClientVersions()).includes(Vl.MSC3869))throw new Error("The read_relations action is not supported by the client.");const c={event_id:e,rel_type:n,event_type:r,room_id:t,to:s,from:o,limit:i,direction:a};return this.transport.send(Qn.MSC3869ReadRelations,c)}readStateEvents(e,t,n,r){const i={type:e,state_key:void 0===n||n};return void 0!==t&&(i.limit=t),r&&(r.includes(Ch.AnyRoom)?i.room_ids=Ch.AnyRoom:i.room_ids=r),this.transport.send(Qn.MSC2876ReadEvents,i).then(e=>e.events)}setModalButtonEnabled(e,t){if(e===yQ.Close)throw new Error("The close button cannot be disabled");return this.transport.send(Qn.SetModalButtonEnabled,{button:e,enabled:t}).then()}navigateTo(e){if(!e||!e.startsWith("https://matrix.to/#"))throw new Error("Invalid matrix.to URI");return this.transport.send(Qn.MSC2931Navigate,{uri:e}).then()}async*getTurnServers(){let e;const t=async t=>{t.preventDefault(),e(t.detail.data),await this.transport.reply(t.detail,{})};if(this.on(`action:${gr.UpdateTurnServers}`,t),0===this.turnServerWatchers)try{await this.transport.send(Qn.WatchTurnServers,{})}catch(e){throw this.off(`action:${gr.UpdateTurnServers}`,t),e}this.turnServerWatchers++;try{for(;;)yield await new Promise(t=>e=t)}finally{this.off(`action:${gr.UpdateTurnServers}`,t),this.turnServerWatchers--,0===this.turnServerWatchers&&await this.transport.send(Qn.UnwatchTurnServers,{})}}async searchUserDirectory(e,t){if(!(await this.getClientVersions()).includes(Vl.MSC3973))throw new Error("The user_directory_search action is not supported by the client.");const n={search_term:e,limit:t};return this.transport.send(Qn.MSC3973UserDirectorySearch,n)}async getMediaConfig(){if(!(await this.getClientVersions()).includes(Vl.MSC4039))throw new Error("The get_media_config action is not supported by the client.");return this.transport.send(Qn.MSC4039GetMediaConfigAction,{})}async uploadFile(e){if(!(await this.getClientVersions()).includes(Vl.MSC4039))throw new Error("The upload_file action is not supported by the client.");const t={file:e};return this.transport.send(Qn.MSC4039UploadFileAction,t)}async downloadFile(e){if(!(await this.getClientVersions()).includes(Vl.MSC4039))throw new Error("The download_file action is not supported by the client.");const t={content_uri:e};return this.transport.send(Qn.MSC4039DownloadFileAction,t)}start(){this.transport.start(),this.getClientVersions().then(e=>{e.includes(Vl.MSC2974)&&(this.supportsMSC2974Renegotiate=!0)})}handleMessage(e){const t=new CustomEvent(`action:${e.detail.action}`,{detail:e.detail,cancelable:!0});if(this.emit(`action:${e.detail.action}`,t),!t.defaultPrevented)switch(e.detail.action){case gr.SupportedApiVersions:return this.replyVersions(e.detail);case gr.Capabilities:return this.handleCapabilities(e.detail);case gr.UpdateVisibility:case gr.NotifyCapabilities:return this.transport.reply(e.detail,{});default:return this.transport.reply(e.detail,{error:{message:"Unknown or unsupported action: "+e.detail.action}})}}replyVersions(e){this.transport.reply(e,{supported_versions:Fye})}getClientVersions(){return Array.isArray(this.cachedClientVersions)?Promise.resolve(this.cachedClientVersions):this.transport.send(Qn.SupportedApiVersions,{}).then(e=>(this.cachedClientVersions=e.supported_versions,e.supported_versions)).catch(e=>(console.warn("non-fatal error getting supported client versions: ",e),[]))}handleCapabilities(e){return this.capabilitiesFinished?this.transport.reply(e,{error:{message:"Capability negotiation already completed"}}):this.getClientVersions().then(t=>(t.includes(Vl.MSC2871)?this.once(`action:${gr.NotifyCapabilities}`,e=>{this.approvedCapabilities=e.detail.data.approved,this.emit("ready")}):this.emit("ready"),this.capabilitiesFinished=!0,this.transport.reply(e,{capabilities:this.requestedCapabilities})))}}var Iy=(e=>(e.Screenshots="m.capability.screenshot",e.StickerSending="m.sticker",e.AlwaysOnScreen="m.always_on_screen",e.RequiresClient="io.element.requires_client",e.MSC2931Navigate="org.matrix.msc2931.navigate",e.MSC3846TurnServers="town.robin.msc3846.turn_servers",e.MSC3973UserDirectorySearch="org.matrix.msc3973.user_directory_search",e.MSC4039UploadFile="org.matrix.msc4039.upload_file",e.MSC4039DownloadFile="org.matrix.msc4039.download_file",e.MSC4157SendDelayedEvent="org.matrix.msc4157.send.delayed_event",e.MSC4157UpdateDelayedEvent="org.matrix.msc4157.update_delayed_event",e))(Iy||{});function Bye(e){const t=e.error;return"object"==typeof t&&null!==t&&"message"in t&&"string"==typeof t.message}function hH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function k2(e){for(var t=1;te.getType()===t.type)){for(var t,n=null===(t=o.pendingSendingEventsTxId.find(t=>t.id===e.getId()))||void 0===t?void 0:t.txId;!n&&o.pendingSendingEventsTxId.length>0;){var r;yield new Promise(e=>o.eventEmitter.once(Yw.PendingEventsChanged,()=>e())),n=null===(r=o.pendingSendingEventsTxId.find(t=>t.id===e.getId()))||void 0===r?void 0:r.txId}n&&(e.setTxnId(n),e.setUnsigned(k2(k2({},e.getUnsigned()),{},{transaction_id:n}))),o.pendingSendingEventsTxId=o.pendingSendingEventsTxId.filter(t=>t.id!==e.getId()),0===o.pendingSendingEventsTxId.length&&o.eventEmitter.emit(Yw.PendingEventsChanged)}}),function(e){return b.apply(this,arguments)})),L(this,"onEvent",function(){var e=H(function*(e){if(e.preventDefault(),e.detail.data.room_id===o.roomId){var t=new Zi(e.detail.data);yield o.updateTxId(t),o.syncApi instanceof Hd?(yield o.supportUpdateState())?yield o.syncApi.injectRoomEvents(o.room,void 0,[],[t]):yield o.syncApi.injectRoomEvents(o.room,[],void 0,[t]):(yield o.supportUpdateState())?yield o.syncApi.injectRoomEvents(o.room,[],[t]):M.error("slididng sync cannot be used in widget mode if the client widget driver does not support the version: 'org.matrix.msc2762_update_state'"),o.emit(Pe.Event,t),o.setSyncState(qt.Syncing),M.info("Received event ".concat(t.getId()," ").concat(t.getType()))}else{var{event_id:n,room_id:r}=e.detail.data;M.info("Received event ".concat(n," for a different room ").concat(r,"; discarding"))}yield o.ack(e)});return function(t){return e.apply(this,arguments)}}()),L(this,"onToDevice",function(){var e=H(function*(e){e.preventDefault();var t=new Zi({type:e.detail.data.type,sender:e.detail.data.sender,content:e.detail.data.content});e.detail.data.encrypted&&t.makeEncrypted(Z.RoomMessageEncrypted,{},"",""),o.emit(Pe.ToDeviceEvent,t),o.setSyncState(qt.Syncing),yield o.ack(e)});return function(t){return e.apply(this,arguments)}}()),L(this,"onStateUpdate",function(){var e=H(function*(e){for(var t of(e.preventDefault(),(yield o.supportUpdateState())||M.warn("received update_state widget action but the widget driver did not claim to support 'org.matrix.msc2762_update_state'"),e.detail.data.state))if(t.room_id===o.roomId){var n=new Zi(t);o.syncApi instanceof Hd?yield o.syncApi.injectRoomEvents(o.room,void 0,[n]):yield o.syncApi.injectRoomEvents(o.room,[n]),M.info("Updated state entry ".concat(n.getType()," ").concat(n.getStateKey()," to ").concat(n.getId()))}else{var{event_id:r,room_id:i}=e.detail.data;M.info("Received state entry ".concat(r," for a different room ").concat(i,"; discarding"))}yield o.ack(e)});return function(t){return e.apply(this,arguments)}}());var w=this.widgetApi.transport.send.bind(this.widgetApi.transport);this.widgetApi.transport.send=function(){var e=H(function*(e,t){try{return yield w(e,t)}catch(e){pH(e)}});return function(t,n){return e.apply(this,arguments)}}();var _=this.widgetApi.transport.sendComplete.bind(this.widgetApi.transport);this.widgetApi.transport.sendComplete=function(){var e=H(function*(e,t){try{return yield _(e,t)}catch(e){pH(e)}});return function(t,n){return e.apply(this,arguments)}}(),this.widgetApiReady=new Promise(e=>this.widgetApi.once("ready",e)),this.roomStateSynced=null!==(s=t.receiveState)&&void 0!==s&&s.length?new Promise(e=>this.widgetApi.once("action:".concat(gr.UpdateState),e)):Promise.resolve(),(null!==(a=t.sendEvent)&&void 0!==a&&a.length||null!==(c=t.receiveEvent)&&void 0!==c&&c.length||!0===t.sendMessage||Array.isArray(t.sendMessage)&&t.sendMessage.length||!0===t.receiveMessage||Array.isArray(t.receiveMessage)&&t.receiveMessage.length||null!==(l=t.sendState)&&void 0!==l&&l.length||null!==(u=t.receiveState)&&void 0!==u&&u.length)&&e.requestCapabilityForRoomTimeline(n),null===(d=t.sendEvent)||void 0===d||d.forEach(t=>e.requestCapabilityToSendEvent(t)),null===(h=t.receiveEvent)||void 0===h||h.forEach(t=>e.requestCapabilityToReceiveEvent(t)),!0===t.sendMessage?e.requestCapabilityToSendMessage():Array.isArray(t.sendMessage)&&t.sendMessage.forEach(t=>e.requestCapabilityToSendMessage(t)),!0===t.receiveMessage?e.requestCapabilityToReceiveMessage():Array.isArray(t.receiveMessage)&&t.receiveMessage.forEach(t=>e.requestCapabilityToReceiveMessage(t)),null===(p=t.sendState)||void 0===p||p.forEach(t=>{var{eventType:n,stateKey:r}=t;return e.requestCapabilityToSendState(n,r)}),null===(f=t.receiveState)||void 0===f||f.forEach(t=>{var{eventType:n,stateKey:r}=t;return e.requestCapabilityToReceiveState(n,r)}),null===(m=t.sendToDevice)||void 0===m||m.forEach(t=>e.requestCapabilityToSendToDevice(t)),null===(g=t.receiveToDevice)||void 0===g||g.forEach(t=>e.requestCapabilityToReceiveToDevice(t)),t.sendDelayedEvents&&(null!==(v=t.sendEvent)&&void 0!==v&&v.length||!0===t.sendMessage||Array.isArray(t.sendMessage)&&t.sendMessage.length||null!==(y=t.sendState)&&void 0!==y&&y.length)&&e.requestCapability(Iy.MSC4157SendDelayedEvent),t.updateDelayedEvents&&e.requestCapability(Iy.MSC4157UpdateDelayedEvent),t.turnServers&&e.requestCapability(Iy.MSC3846TurnServers),e.on("action:".concat(gr.SendEvent),this.onEvent),e.on("action:".concat(gr.SendToDevice),this.onToDevice),e.on("action:".concat(gr.UpdateState),this.onStateUpdate),e.start(),i&&e.sendContentLoaded()}supportUpdateState(){var e=this;return H(function*(){return(yield e.widgetApi.getClientVersions()).includes(Vl.MSC2762_UPDATE_STATE)})()}startClient(){var e=arguments,t=this;return H(function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{};t.lifecycle=new AbortController;var r,i,o,s=t.getUserId();(s&&t.store.storeUser(new mu(s)),n.slidingSync?t.syncApi=new BJ(n.slidingSync,t,n,t.buildSyncApiOptions()):t.syncApi=new Hd(t,n,t.buildSyncApiOptions()),t.room=t.syncApi.createRoom(t.roomId),t.store.storeRoom(t.room),yield t.widgetApiReady,yield t.supportUpdateState())?yield t.roomStateSynced:yield Promise.all(null!==(r=null===(i=t.capabilities.receiveState)||void 0===i?void 0:i.map((o=H(function*(e){var{eventType:n,stateKey:r}=e,i=(yield t.widgetApi.readStateEvents(n,void 0,r,[t.roomId])).map(e=>new Zi(e));t.syncApi instanceof Hd?yield t.syncApi.injectRoomEvents(t.room,void 0,i):yield t.syncApi.injectRoomEvents(t.room,i),i.forEach(e=>{t.emit(Pe.Event,e),M.info("Backfilled event ".concat(e.getId()," ").concat(e.getType()," ").concat(e.getStateKey()))})}),function(e){return o.apply(this,arguments)})))&&void 0!==r?r:[]);void 0!==n.clientWellKnownPollPeriod&&(t.clientWellKnownIntervalID=setInterval(()=>{t.fetchClientWellKnown()},1e3*n.clientWellKnownPollPeriod),t.fetchClientWellKnown()),t.setSyncState(qt.Syncing),M.info("Finished initial sync"),t.matrixRTC.start(),t.capabilities.turnServers&&t.watchTurnServers()})()}stopClient(){this.widgetApi.off("action:".concat(gr.SendEvent),this.onEvent),this.widgetApi.off("action:".concat(gr.SendToDevice),this.onToDevice),this.widgetApi.off("action:".concat(gr.UpdateState),this.onStateUpdate),super.stopClient(),this.lifecycle.abort()}joinRoom(e){var t=this;return H(function*(){if(e===t.roomId)return t.room;throw new Error("Unknown room: ".concat(e))})()}encryptAndSendEvent(e,t,n){var r=this;return H(function*(){var i=t.event.redacts?k2(k2({},t.getContent()),{},{redacts:t.event.redacts}):t.getContent();if(n){var o=yield r.widgetApi.sendRoomEvent(t.getType(),i,e.roomId,"delay"in n?n.delay:void 0,"parent_delay_id"in n?n.parent_delay_id:void 0).catch(wc);return r.validateSendDelayedEventResponse(o)}var s,a=t.getTxnId();a&&r.pendingSendingEventsTxId.push({type:t.getType(),id:void 0,txId:a});try{s=yield r.widgetApi.sendRoomEvent(t.getType(),i,e.roomId).catch(wc)}catch(n){throw r.updatePendingEventStatus(e,t,rt.NOT_SENT),n}return e.updatePendingEvent(t,rt.SENT,s.event_id),r.pendingSendingEventsTxId.forEach(e=>{e.txId===a&&(e.id=s.event_id)}),r.eventEmitter.emit(Yw.PendingEventsChanged),{event_id:s.event_id}})()}sendStateEvent(e,t,n){var r=arguments,i=this;return H(function*(){var o=r.length>3&&void 0!==r[3]?r[3]:"",s=yield i.widgetApi.sendStateEvent(t,o,n,e).catch(wc);if(void 0===s.event_id)throw new Error("'event_id' absent from response to an event request");return{event_id:s.event_id}})()}_unstable_sendDelayedStateEvent(e,t,n,r){var i=arguments,o=this;return H(function*(){var s=i.length>4&&void 0!==i[4]?i[4]:"";if(!(yield o.doesServerSupportUnstableFeature($c)))throw new Vd("Server does not support the delayed events API","sendDelayedStateEvent");var a=yield o.widgetApi.sendStateEvent(n,s,r,e,"delay"in t?t.delay:void 0,"parent_delay_id"in t?t.parent_delay_id:void 0).catch(wc);return o.validateSendDelayedEventResponse(a)})()}validateSendDelayedEventResponse(e){if(void 0===e.delay_id)throw new Error("'delay_id' absent from response to a delayed event request");return{delay_id:e.delay_id}}_unstable_updateDelayedEvent(e,t){var n=this;return H(function*(){if(!(yield n.doesServerSupportUnstableFeature($c)))throw new Vd("Server does not support the delayed events API","updateDelayedEvent");return yield n.widgetApi.updateDelayedEvent(e,t).catch(wc),{}})()}encryptAndSendToDevice(e,t,n){var r=this;return H(function*(){var i=new pu(()=>new Map);for(var{userId:o,deviceId:s}of t)i.getOrCreate(o).set(s,n);yield r.widgetApi.sendToDevice(e,!0,xh(i)).catch(wc)})()}sendToDevice(e,t){var n=this;return H(function*(){return yield n.widgetApi.sendToDevice(e,!1,xh(t)).catch(wc),{}})()}getOpenIdToken(){var e=this;return H(function*(){var t=yield e.widgetApi.requestOpenIDConnectToken().catch(wc);return{access_token:t.access_token,expires_in:t.expires_in,matrix_server_name:t.matrix_server_name,token_type:t.token_type}})()}queueToDevice(e){var t=this;return H(function*(){var{eventType:n,batch:r}=e,i=new pu(()=>new Map);for(var{userId:o,deviceId:s,payload:a}of r)i.getOrCreate(o).set(s,a);yield t.widgetApi.sendToDevice(n,!1,xh(i)).catch(wc)})()}sendToDeviceViaWidgetApi(e,t,n){var r=this;return H(function*(){yield r.widgetApi.sendToDevice(e,t,xh(n)).catch(wc)})()}checkTurnServers(){var e=this;return H(function*(){return e.turnServers.length>0})()}getSyncState(){return this.syncState}setSyncState(e){var t=this.syncState;this.syncState=e,this.emit(Pe.Sync,e,t)}ack(e){var t=this;return H(function*(){yield t.widgetApi.transport.reply(e.detail,{})})()}watchTurnServers(){var e=this;return H(function*(){var t=e.widgetApi.getTurnServers(),n=()=>{t.return(void 0)};e.lifecycle.signal.addEventListener("abort",n);try{var r,i=!1,o=!1;try{for(var s,a=Vye(t);i=!(s=yield a.next()).done;i=!1){var c=s.value;e.turnServers=[{urls:c.uris,username:c.username,credential:c.password}],e.emit(Pe.TurnServers,e.turnServers),M.log("Received TURN server: ".concat(c.uris))}}catch(e){o=!0,r=e}finally{try{i&&null!=a.return&&(yield a.return())}finally{if(o)throw r}}}catch(e){M.warn("Error watching TURN servers",e)}finally{e.lifecycle.signal.removeEventListener("abort",n)}})()}}function pH(e){throw e instanceof pC&&e.data.matrix_api_error?or.fromWidgetApiErrorData(e.data.matrix_api_error):e}function wc(e){throw e instanceof Error&&"Request timed out"===e.message?new _p("widget api timeout"):e}class qye{constructor(){L(this,"unthreadedReadReceipts",new Map),L(this,"threadedReadReceipts",new pu(()=>new Map))}setUnthreaded(e,t){this.unthreadedReadReceipts.set(e,t)}setThreaded(e,t,n){this.threadedReadReceipts.getOrCreate(e).set(t,n)}allUnthreaded(){return this.unthreadedReadReceipts.entries()}*allThreaded(){for(var e of this.threadedReadReceipts.values())for(var t of e.entries())yield t}consumeEphemeralEvents(e){e?.forEach(e=>{e.type!==Z.Receipt||!e.content||Object.keys(e.content).forEach(t=>{Object.entries(e.content[t]).forEach(n=>{var[r,i]=n;if(L7(r))for(var o of Object.keys(i)){var s=e.content[t][r][o],a={data:e.content[t][r][o],type:r,eventId:t};s.thread_id?this.setThreaded(s.thread_id,o,a):this.setUnthreaded(o,a)}})})})}buildAccumulatedReceiptEvent(e){var t={type:Z.Receipt,room_id:e,content:{}},n=new pu(()=>new pu(()=>new Map));for(var[r,i]of this.allUnthreaded())n.getOrCreate(i.eventId).getOrCreate(i.type).set(r,i.data);for(var[o,s]of this.allThreaded())n.getOrCreate(s.eventId).getOrCreate(s.type).set(o,s.data);return t.content=xh(n),n.size>0?t:null}}var jl=function(e){return e.Invite="invite",e.Leave="leave",e.Join="join",e.Knock="knock",e}({});function Gye(e){return"_localTs"in e&&void 0!==e._localTs}class _Q{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.opts=e,L(this,"accountData",{}),L(this,"inviteRooms",{}),L(this,"knockRooms",{}),L(this,"joinRooms",{}),L(this,"nextBatch",null),this.opts.maxTimelineEntries=this.opts.maxTimelineEntries||50}accumulate(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.accumulateRooms(e,t),this.accumulateAccountData(e),this.nextBatch=e.next_batch}accumulateAccountData(e){!e.account_data||!e.account_data.events||e.account_data.events.forEach(e=>{this.accountData[e.type]=e})}accumulateRooms(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.rooms&&(e.rooms.invite&&Object.keys(e.rooms.invite).forEach(n=>{this.accumulateRoom(n,jl.Invite,e.rooms.invite[n],t)}),e.rooms.join&&Object.keys(e.rooms.join).forEach(n=>{this.accumulateRoom(n,jl.Join,e.rooms.join[n],t)}),e.rooms.leave&&Object.keys(e.rooms.leave).forEach(n=>{this.accumulateRoom(n,jl.Leave,e.rooms.leave[n],t)}),e.rooms.knock&&Object.keys(e.rooms.knock).forEach(n=>{this.accumulateRoom(n,jl.Knock,e.rooms.knock[n],t)}))}accumulateRoom(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];switch(t){case jl.Invite:this.knockRooms[e]&&delete this.knockRooms[e],this.accumulateInviteState(e,n);break;case jl.Knock:this.accumulateKnockState(e,n);break;case jl.Join:this.inviteRooms[e]&&delete this.inviteRooms[e],this.accumulateJoinState(e,n,r);break;case jl.Leave:this.knockRooms[e]?delete this.knockRooms[e]:this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:M.error("Unknown cateogory: ",t)}}accumulateInviteState(e,t){if(t.invite_state&&t.invite_state.events){if(!this.inviteRooms[e])return void(this.inviteRooms[e]={invite_state:t.invite_state});var n=this.inviteRooms[e];t.invite_state.events.forEach(e=>{for(var t=!1,r=0;r{for(var t=!1,r=0;r2&&void 0!==arguments[2]&&arguments[2];this.joinRooms[e]||(this.joinRooms[e]={_currentState:Object.create(null),_timeline:[],_accountData:Object.create(null),_unreadNotifications:{},_unreadThreadNotifications:{},_summary:{},_receipts:new qye});var l=this.joinRooms[e];if(t.account_data&&t.account_data.events&&t.account_data.events.forEach(e=>{l._accountData[e.type]=e}),t.unread_notifications&&(l._unreadNotifications=t.unread_notifications),l._unreadThreadNotifications=null!==(n=null!==(r=t[cb.stable])&&void 0!==r?r:t[cb.unstable])&&void 0!==n?n:void 0,t.summary){var u,d,h,p="m.heroes",f="m.invited_member_count",m="m.joined_member_count",g=l._summary,v=t.summary;g[p]=null!==(u=v[p])&&void 0!==u?u:g[p],g[m]=null!==(d=v[m])&&void 0!==d?d:g[m],g[f]=null!==(h=v[f])&&void 0!==h?h:g[f]}if(l._receipts.consumeEphemeralEvents(null===(i=t.ephemeral)||void 0===i?void 0:i.events),t.timeline&&t.timeline.limited&&(l._timeline=[]),null===(o=t.state)||void 0===o||null===(o=o.events)||void 0===o||o.forEach(e=>{x2(l._currentState,e)}),null===(s=t["org.matrix.msc4222.state_after"])||void 0===s||null===(s=s.events)||void 0===s||s.forEach(e=>{x2(l._currentState,e)}),null===(a=t.timeline)||void 0===a||null===(a=a.events)||void 0===a||a.forEach((e,n)=>{var r,i;if(t["org.matrix.msc4222.state_after"]||x2(l._currentState,e),c)i=e;else{var o;void 0!==(i=Object.assign({},e)).unsigned&&(i.unsigned=Object.assign({},i.unsigned));var s=null===(o=e.unsigned)||void 0===o?void 0:o.age;void 0!==s&&(i._localTs=Date.now()-s)}l._timeline.push({event:i,token:0===n&&null!==(r=t.timeline.prev_batch)&&void 0!==r?r:null})}),l._timeline.length>this.opts.maxTimelineEntries)for(var y=l._timeline.length-this.opts.maxTimelineEntries;y0&&void 0!==arguments[0]&&arguments[0],t={join:{},invite:{},knock:{},leave:{}};Object.keys(this.inviteRooms).forEach(e=>{t.invite[e]=this.inviteRooms[e]}),Object.keys(this.knockRooms).forEach(e=>{t.knock[e]=this.knockRooms[e]}),Object.keys(this.joinRooms).forEach(n=>{var r=this.joinRooms[n],i={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},"org.matrix.msc4222.state_after":{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:r._unreadNotifications,unread_thread_notifications:r._unreadThreadNotifications,summary:r._summary};Object.keys(r._accountData).forEach(e=>{i.account_data.events.push(r._accountData[e])});var o=r._receipts.buildAccumulatedReceiptEvent(n);o&&i.ephemeral.events.push(o),r._timeline.forEach(t=>{if(!i.timeline.prev_batch){if(!t.token)return;i.timeline.prev_batch=t.token}var n;!e&&Gye(t.event)?(void 0!==(n=Object.assign({},t.event)).unsigned&&(n.unsigned=Object.assign({},n.unsigned)),delete n._localTs,n.unsigned=n.unsigned||{},n.unsigned.age=Date.now()-t.event._localTs):n=t.event,i.timeline.events.push(n)});for(var s=Object.create(null),a=i.timeline.events.length-1;a>=0;a--){var c=i.timeline.events[a];if(null!==c.state_key&&void 0!==c.state_key){var l=c_(c);l.unsigned&&(l.unsigned.prev_content&&(l.content=l.unsigned.prev_content),l.unsigned.prev_sender&&(l.sender=l.unsigned.prev_sender)),x2(s,l)}}Object.keys(r._currentState).forEach(e=>{Object.keys(r._currentState[e]).forEach(t=>{var n=r._currentState[e][t];i["org.matrix.msc4222.state_after"].events.push(n),s[e]&&s[e][t]&&(n=s[e][t]),i.state.events.push(n)})}),t.join[n]=i});var n=[];return Object.keys(this.accountData).forEach(e=>{n.push(this.accountData[e])}),{nextBatch:this.nextBatch,roomsData:t,accountData:n}}getNextBatchToken(){return this.nextBatch}}function x2(e,t){null===t.state_key||void 0===t.state_key||!t.type||(e[t.type]||(e[t.type]=Object.create(null)),e[t.type][t.state_key]=t)}var SQ=function(e){return e[e.Blocked=-1]="Blocked",e[e.Unverified=0]="Unverified",e[e.Verified=1]="Verified",e}({});class Kye{constructor(e){L(this,"deviceId",void 0),L(this,"userId",void 0),L(this,"algorithms",void 0),L(this,"keys",void 0),L(this,"verified",void 0),L(this,"signatures",void 0),L(this,"displayName",void 0),L(this,"dehydrated",!1),this.deviceId=e.deviceId,this.userId=e.userId,this.algorithms=e.algorithms,this.keys=e.keys,this.verified=e.verified||SQ.Unverified,this.signatures=e.signatures||new Map,this.displayName=e.displayName,this.dehydrated=!!e.dehydrated}getFingerprint(){return this.keys.get("ed25519:".concat(this.deviceId))}getIdentityKey(){return this.keys.get("curve25519:".concat(this.deviceId))}}var mH=function(){},zye=10;class Wye{constructor(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.client=e,this.timelineSet=t,L(this,"windowLimit",void 0),L(this,"start",void 0),L(this,"end",void 0),L(this,"eventCount",0),this.windowLimit=r.windowLimit||1e3,null===(n=t.room)||void 0===n||n.on(ke.Timeline,this.onTimelineEvent.bind(this))}load(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=n=>{if(!n)throw new Error("No timeline given to initFields");var r,i=n.getEvents();if(e){if((r=i.findIndex(t=>t.getId()===e))<0)throw new Error("getEventTimeline result didn't include requested event")}else r=i.length;var o=Math.min(i.length,r+Math.ceil(t/2)),s=Math.max(0,o-t);this.start=new SA(n,s-n.getBaseIndex()),this.end=new SA(n,o-n.getBaseIndex()),this.eventCount=o-s};return this.timelineSet.getTimelineForEvent(e)?(n(this.timelineSet.getTimelineForEvent(e)),Promise.resolve()):e?this.client.getEventTimeline(this.timelineSet,e).then(n):(n(this.timelineSet.getLiveTimeline()),Promise.resolve())}getTimelineIndex(e){var t,n;if(e==Me.BACKWARDS)return null!==(t=this.start)&&void 0!==t?t:null;if(e==Me.FORWARDS)return null!==(n=this.end)&&void 0!==n?n:null;throw new Error("Invalid direction '"+e+"'")}extend(e,t){var n=this.getTimelineIndex(e);if(!n)return!1;var r=e==Me.BACKWARDS?n.retreat(t):n.advance(t);if(r){this.eventCount+=r,mH("TimelineWindow: increased cap by "+r+" (now "+this.eventCount+")");var i=this.eventCount-this.windowLimit;return i>0&&this.unpaginate(i,e!=Me.BACKWARDS),!0}return!1}onTimelineEvent(e,t,n,r){r&&this.onEventRemoved()}onEventRemoved(){var e=this.getEvents();e.length>0&&void 0===e[e.length-1]&&this.end&&this.end.index--}canPaginate(e){var t=this.getTimelineIndex(e);if(!t)return!1;if(e==Me.BACKWARDS){if(t.index>t.minIndex())return!0}else if(t.index2&&void 0!==n[2])||n[2],o=n.length>3&&void 0!==n[3]?n[3]:zye,s=r.getTimelineIndex(e);if(!s)return!1;if(s.pendingPaginate)return s.pendingPaginate;if(r.extend(e,t))return!0;if(!i||0===o)return!1;if(!s.timeline.getPaginationToken(e))return!1;var a=r.client.paginateEventTimeline(s.timeline,{backwards:e==Me.BACKWARDS,limit:t}).finally(function(){s.pendingPaginate=void 0}).then(n=>n?r.paginate(e,t,!0,o-1):r.paginate(e,t,!1,0));return s.pendingPaginate=a,a})()}unpaginate(e,t){var n=t?this.start:this.end;if(!n)throw new Error("Attempting to unpaginate startOfTimeline=".concat(t," but don't have this direction"));if(e>this.eventCount||e<0)throw new Error("Attemting to unpaginate ".concat(e," events, but only have ").concat(this.eventCount," in the timeline"));for(;e>0;){var r=t?n.advance(e):n.retreat(e);if(r<=0)throw new Error("Unable to unpaginate any further, but still have "+this.eventCount+" events");e-=r,this.eventCount-=r,mH("TimelineWindow.unpaginate: dropped "+r+" (now "+this.eventCount+")")}}getEvents(){if(!this.start)return[];for(var e=[],t=this.start.timeline;t;){var n,r,i=t.getEvents(),o=0,s=i.length;t===this.start.timeline&&(o=this.start.index+t.getBaseIndex()),t===(null===(n=this.end)||void 0===n?void 0:n.timeline)&&(s=this.end.index+t.getBaseIndex());for(var a=o;a0)return this.index+=t,t;var n=this.timeline.getNeighbouringTimeline(e<0?Me.BACKWARDS:Me.FORWARDS);return n?(this.timeline=n,this.index=e<0?this.maxIndex():this.minIndex(),this.advance(e)):0}retreat(e){return-1*this.advance(-1*e)}}var C0="m.login.email.identity",gH="m.login.msisdn",wA=function(e){return e.Password="m.login.password",e.Recaptcha="m.login.recaptcha",e.Terms="m.login.terms",e.Email="m.login.email.identity",e.Msisdn="m.login.msisdn",e.Sso="m.login.sso",e.SsoUnstable="org.matrix.login.sso",e.Dummy="m.login.dummy",e.RegistrationToken="m.login.registration_token",e.UnstableRegistrationToken="org.matrix.msc3231.login.registration_token",e}({});class wQ extends Error{constructor(e,t,n){super(e),this.required_stages=t,this.flows=n,L(this,"name","NoAuthFlowFoundError")}}class cO{constructor(e){var t=this;L(this,"matrixClient",void 0),L(this,"inputs",void 0),L(this,"clientSecret",void 0),L(this,"requestCallback",void 0),L(this,"busyChangedCallback",void 0),L(this,"stateUpdatedCallback",void 0),L(this,"requestEmailTokenCallback",void 0),L(this,"supportedStages",void 0),L(this,"data",void 0),L(this,"emailSid",void 0),L(this,"requestingEmailToken",!1),L(this,"attemptAuthDeferred",null),L(this,"chosenFlow",null),L(this,"currentStage",null),L(this,"emailAttempt",1),L(this,"submitPromise",null),L(this,"requestEmailToken",H(function*(){if(t.requestingEmailToken)M.warn("Could not request email token: Already requesting");else{M.trace("Requesting email token. Attempt: "+t.emailAttempt),t.requestingEmailToken=!0;try{var e=yield t.requestEmailTokenCallback(t.inputs.emailAddress,t.clientSecret,t.emailAttempt++,t.data.session);t.emailSid=e.sid,M.trace("Email token request succeeded")}finally{t.requestingEmailToken=!1}}})),this.matrixClient=e.matrixClient,this.data=e.authData||{flows:[]},this.requestCallback=e.doRequest,this.busyChangedCallback=e.busyChanged,this.stateUpdatedCallback=e.stateUpdated||e.startAuthStage,this.requestEmailTokenCallback=e.requestEmailToken,this.inputs=e.inputs||{},e.sessionId&&(this.data.session=e.sessionId),this.clientSecret=e.clientSecret||this.matrixClient.generateClientSecret(),this.emailSid=e.emailSid,void 0!==e.supportedStages&&(this.supportedStages=new Set(e.supportedStages))}attemptAuth(){var e=this;return H(function*(){var t;e.attemptAuthDeferred=Promise.withResolvers();var n=e.attemptAuthDeferred.promise;if(null!==(t=e.data)&&void 0!==t&&null!==(t=t.flows)&&void 0!==t&&t.length)e.startNextAuthStage();else{var r;null===(r=e.busyChangedCallback)||void 0===r||r.call(e,!0);var i=e.data.session?{session:e.data.session}:null;e.doRequest(i).finally(()=>{var t;null===(t=e.busyChangedCallback)||void 0===t||t.call(e,!1)})}return n})()}poll(){var e=this;return H(function*(){if(e.data.session&&e.attemptAuthDeferred&&!e.submitPromise){var t={};if(e.currentStage==C0&&e.emailSid){var n={sid:e.emailSid,client_secret:e.clientSecret},r=e.matrixClient.getIdentityServerUrl();r&&(n.id_server=new URL(r).host),t={type:C0,threepid_creds:n}}e.submitAuthDict(t,!0)}})()}getSessionId(){var e;return null===(e=this.data)||void 0===e?void 0:e.session}getClientSecret(){return this.clientSecret}getStageParams(e){var t;return null===(t=this.data)||void 0===t||null===(t=t.params)||void 0===t?void 0:t[e]}getChosenFlow(){return this.chosenFlow}submitAuthDict(e){var t=arguments,n=this;return H(function*(){var r,i,o,s=t.length>1&&void 0!==t[1]&&t[1];if(!n.attemptAuthDeferred)throw new Error("submitAuthDict() called before attemptAuth()");s||(null===(i=n.busyChangedCallback)||void 0===i||i.call(n,!0));for(;n.submitPromise;)try{yield n.submitPromise}catch{}o=null!==(r=n.data)&&void 0!==r&&r.session?Object.assign({session:n.data.session},e):e;try{n.submitPromise=n.doRequest(o,s),yield n.submitPromise}finally{var a;if(n.submitPromise=null,!s)null===(a=n.busyChangedCallback)||void 0===a||a.call(n,!1)}})()}getEmailSid(){return this.emailSid}setEmailSid(e){this.emailSid=e}doRequest(e){var t=arguments,n=this;return H(function*(){var r=t.length>1&&void 0!==t[1]&&t[1];try{var i=yield n.requestCallback(e,r);n.attemptAuthDeferred.resolve(i),n.attemptAuthDeferred=null}catch(e){var o,s,a,c,l=e instanceof or?e:null,u=null!==(o=null==l||null===(s=l.data)||void 0===s?void 0:s.flows)&&void 0!==o?o:null,d=(null===(a=n.data)||void 0===a?void 0:a.flows)||!!u;if(!l||401!==l.httpStatus||!l.data||!d)if(r)M.log("Background poll request failed doing UI auth: ignoring",e);else{var h;null===(h=n.attemptAuthDeferred)||void 0===h||h.reject(e)}l&&!l.data&&(l.data={}),l&&!l.data.flows&&!l.data.completed&&!l.data.session&&(l.data.flows=n.data.flows,l.data.completed=n.data.completed,l.data.session=n.data.session),l&&(n.data=l.data);try{n.startNextAuthStage()}catch(e){return n.attemptAuthDeferred.reject(e),void(n.attemptAuthDeferred=null)}if(!n.emailSid&&null!==(c=n.chosenFlow)&&void 0!==c&&c.stages.includes(wA.Email))try{yield n.requestEmailToken()}catch(e){n.attemptAuthDeferred.reject(e),n.attemptAuthDeferred=null}}})()}startNextAuthStage(){var e,t,n,r,i=this.chooseStage();if(!i)throw new Error("No incomplete flows from the server");(this.currentStage=i,i!==wA.Dummy)?null!==(e=this.data)&&void 0!==e&&e.errcode||null!==(t=this.data)&&void 0!==t&&t.error?this.stateUpdatedCallback(i,{errcode:(null===(n=this.data)||void 0===n?void 0:n.errcode)||"",error:(null===(r=this.data)||void 0===r?void 0:r.error)||""}):this.stateUpdatedCallback(i,i===C0?{emailSid:this.emailSid}:{}):this.submitAuthDict({type:"m.login.dummy"})}chooseStage(){null===this.chosenFlow&&(this.chosenFlow=this.chooseFlow()),M.log("Active flow => %s",JSON.stringify(this.chosenFlow));var e=this.firstUncompletedStage(this.chosenFlow);return M.log("Next stage: %s",e),e}scoreFlow(e){var t=e.stages.length;return void 0!==this.supportedStages&&(t+=10*e.stages.filter(e=>!this.supportedStages.has(e)).length),t}chooseFlow(){var e,t=(null===(e=this.data)||void 0===e?void 0:e.flows)||[],n=!!this.inputs.emailAddress||!!this.emailSid,r=!!this.inputs.phoneCountry&&!!this.inputs.phoneNumber;for(var i of(t.sort((e,t)=>this.scoreFlow(e)-this.scoreFlow(t)),t)){var o=!1,s=!1;for(var a of i.stages)a===C0?o=!0:a==gH&&(s=!0);if(o==n&&s==r)return i}var c=[];throw n&&c.push(C0),r&&c.push(gH),new wQ("No appropriate authentication flow found",c,t)}firstUncompletedStage(e){var t,n=(null===(t=this.data)||void 0===t?void 0:t.completed)||[];return e.stages.find(e=>!n.includes(e))}}function EQ(e,t){return new Promise((n,r)=>{var i=!0,o=e.open(t);o.onupgradeneeded=()=>{i=!1},o.onblocked=()=>r(o.error),o.onsuccess=()=>{o.result.close(),i||e.deleteDatabase(t),n(i)},o.onerror=()=>r(o.error)})}var CQ=[e=>{e.createObjectStore("users",{keyPath:["userId"]}),e.createObjectStore("accountData",{keyPath:["type"]}),e.createObjectStore("sync",{keyPath:["clobber"]})},e=>{e.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")},e=>{e.createObjectStore("client_options",{keyPath:["clobber"]})},e=>{e.createObjectStore("to_device_queue",{autoIncrement:!0})}],Yye=CQ.length;function A2(e,t,n){var r=e.openCursor(t);return new Promise((e,t)=>{var i=[];r.onerror=()=>{var e;t(new Error("Query failed: "+(null===(e=r.error)||void 0===e?void 0:e.name)))},r.onsuccess=()=>{var t=r.result;t?(i.push(n(t)),t.continue()):e(i)}})}function dh(e){return new Promise((t,n)=>{e.oncomplete=function(e){t(e)},e.onerror=function(){n(e.error)}})}function TQ(e){return new Promise((t,n)=>{e.onsuccess=function(e){t(e)},e.onerror=function(){n(e.error)}})}function Xye(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e),e.onerror=e=>n(e)})}function Ok(e){return TQ(e).then(t=>e.result)}class vH{static exists(e,t){return EQ(e,t="matrix-js-sdk:"+(t||"default"))}constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";this.indexedDB=e,L(this,"dbName",void 0),L(this,"syncAccumulator",void 0),L(this,"db",void 0),L(this,"disconnected",!0),L(this,"_isNewlyCreated",!1),L(this,"syncToDatabasePromise",void 0),L(this,"pendingUserPresenceData",[]),this.dbName="matrix-js-sdk:"+t,this.syncAccumulator=new _Q}connect(e){var t=this;if(!this.disconnected)return M.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),Promise.resolve();this.disconnected=!1,M.log("LocalIndexedDBStoreBackend.connect: connecting...");var n=this.indexedDB.open(this.dbName,Yye);return n.onupgradeneeded=e=>{var t=n.result,r=e.oldVersion;M.log("LocalIndexedDBStoreBackend.connect: upgrading from ".concat(r)),r<1&&(this._isNewlyCreated=!0),CQ.forEach((e,n)=>{r<=n&&e(t)})},n.onblocked=()=>{M.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},M.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),TQ(n).then(H(function*(){M.log("LocalIndexedDBStoreBackend.connect: connected"),t.db=n.result,t.db.onversionchange=()=>{var e;null===(e=t.db)||void 0===e||e.close(),t.disconnected=!0,t.db=void 0},t.db.onclose=()=>{t.disconnected=!0,t.db=void 0,e?.()},yield t.init()}))}isNewlyCreated(){return Promise.resolve(this._isNewlyCreated)}init(){return Promise.all([this.loadAccountData(),this.loadSyncData()]).then(e=>{var[t,n]=e;M.log("LocalIndexedDBStoreBackend: loaded initial data"),this.syncAccumulator.accumulate({next_batch:n.nextBatch,rooms:n.roomsData,account_data:{events:t}},!0)})}getOutOfBandMembers(e){return new Promise((t,n)=>{var r=this.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),i=IDBKeyRange.only(e),o=r.openCursor(i),s=[],a=!1;o.onsuccess=()=>{var e=o.result;if(!e)return s.length||a?t(s):t(null);var n=e.value;n.oob_written?a=!0:s.push(n),e.continue()},o.onerror=e=>{n(e)}}).then(t=>(M.log("LL: got ".concat(t?.length," membershipEvents from storage for room ").concat(e," ...")),t))}setOutOfBandMembers(e,t){var n=this;return H(function*(){M.log("LL: backend about to store ".concat(t.length)+" members for ".concat(e));var r=n.db.transaction(["oob_membership_events"],"readwrite"),i=r.objectStore("oob_membership_events");t.forEach(e=>{i.put(e)});var o={room_id:e,oob_written:!0,state_key:0};i.put(o),yield dh(r),M.log("LL: backend done storing for ".concat(e,"!"))})()}clearOutOfBandMembers(e){var t=this;return H(function*(){var n=t.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),r=IDBKeyRange.only(e),i=Ok(n.openKeyCursor(r,"next")).then(e=>(e?.primaryKey)[1]),o=Ok(n.openKeyCursor(r,"prev")).then(e=>(e?.primaryKey)[1]),[s,a]=yield Promise.all([i,o]),c=t.db.transaction(["oob_membership_events"],"readwrite").objectStore("oob_membership_events"),l=IDBKeyRange.bound([e,s],[e,a]);M.log("LL: Deleting all users + marker in storage for room ".concat(e,", with key range:"),[e,s],[e,a]),yield Xye(c.delete(l))})()}clearDatabase(){return new Promise(e=>{var t;M.log("Removing indexeddb instance: ".concat(this.dbName)),null===(t=this.db)||void 0===t||t.close();var n=this.indexedDB.deleteDatabase(this.dbName);n.onblocked=()=>{M.log("can't yet delete indexeddb ".concat(this.dbName," because it is open elsewhere"))},n.onerror=()=>{var t;M.warn("unable to delete js-sdk store indexeddb: ".concat(null===(t=n.error)||void 0===t?void 0:t.name)),e()},n.onsuccess=()=>{M.log("Removed indexeddb instance: ".concat(this.dbName)),e()}})}getSavedSync(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.syncAccumulator.getJSON();return t.nextBatch?e?Promise.resolve(c_(t)):Promise.resolve(t):Promise.resolve(null)}getNextBatchToken(){return Promise.resolve(this.syncAccumulator.getNextBatchToken())}setSyncData(e){return Promise.resolve().then(()=>{this.syncAccumulator.accumulate(e)})}syncToDatabase(e){var t=this;return H(function*(){return t.syncToDatabasePromise?(M.warn("Skipping syncToDatabase() as persist already in flight"),t.pendingUserPresenceData.push(...e),t.syncToDatabasePromise):(e.unshift(...t.pendingUserPresenceData),t.syncToDatabasePromise=t.doSyncToDatabase(e),t.syncToDatabasePromise)})()}doSyncToDatabase(e){var t=this;return H(function*(){try{var n=t.syncAccumulator.getJSON(!0);yield Promise.all([t.persistUserPresenceEvents(e),t.persistAccountData(n.accountData),t.persistSyncData(n.nextBatch,n.roomsData)])}finally{t.syncToDatabasePromise=void 0}})()}persistSyncData(e,t){return M.log("Persisting sync data up to",e),Tm(()=>{var n=this.db.transaction(["sync"],"readwrite");return n.objectStore("sync").put({clobber:"-",nextBatch:e,roomsData:t}),dh(n).then(()=>{M.log("Persisted sync data up to",e)})})}persistAccountData(e){return Tm(()=>{var t=this.db.transaction(["accountData"],"readwrite"),n=t.objectStore("accountData");for(var r of e)n.put(r);return dh(t).then()})}persistUserPresenceEvents(e){return Tm(()=>{var t=this.db.transaction(["users"],"readwrite"),n=t.objectStore("users");for(var r of e)n.put({userId:r[0],event:r[1]});return dh(t).then()})}getUserPresenceEvents(){return Tm(()=>A2(this.db.transaction(["users"],"readonly").objectStore("users"),void 0,e=>[e.value.userId,e.value.event]))}loadAccountData(){return M.log("LocalIndexedDBStoreBackend: loading account data..."),Tm(()=>A2(this.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,e=>e.value).then(e=>(M.log("LocalIndexedDBStoreBackend: loaded account data"),e)))}loadSyncData(){return M.log("LocalIndexedDBStoreBackend: loading sync data..."),Tm(()=>A2(this.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,e=>e.value).then(e=>(M.log("LocalIndexedDBStoreBackend: loaded sync data"),e.length>1&&M.warn("loadSyncData: More than 1 sync row found."),e.length>0?e[0]:{})))}getClientOptions(){return Promise.resolve().then(()=>A2(this.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,e=>{var t;return null===(t=e.value)||void 0===t?void 0:t.options}).then(e=>e[0]))}storeClientOptions(e){var t=this;return H(function*(){var n=t.db.transaction(["client_options"],"readwrite");n.objectStore("client_options").put({clobber:"-",options:e}),yield dh(n)})()}saveToDeviceBatches(e){var t=this;return H(function*(){var n=t.db.transaction(["to_device_queue"],"readwrite"),r=n.objectStore("to_device_queue");for(var i of e)r.add(i);yield dh(n)})()}getOldestToDeviceBatch(){var e=this;return H(function*(){var t=e.db.transaction(["to_device_queue"],"readonly").objectStore("to_device_queue"),n=yield Ok(t.openCursor());if(!n)return null;var r=n.value;return{id:n.key,txnId:r.txnId,eventType:r.eventType,batch:r.batch}})()}removeToDeviceBatch(e){var t=this;return H(function*(){var n=t.db.transaction(["to_device_queue"],"readwrite");n.objectStore("to_device_queue").delete(e),yield dh(n)})()}destroy(){var e=this;return H(function*(){var t;null===(t=e.db)||void 0===t||t.close()})()}}class Jye{constructor(e,t){this.workerFactory=e,this.dbName=t,L(this,"worker",void 0),L(this,"nextSeq",0),L(this,"inFlight",{}),L(this,"startPromise",void 0),L(this,"onWorkerMessage",e=>{var t,n=e.data;if("closed"==n.command)null===(t=this.onClose)||void 0===t||t.call(this);else if("cmd_success"==n.command||"cmd_fail"==n.command){if(void 0===n.seq)return void M.error("Got reply from worker with no seq");var r=this.inFlight[n.seq];if(void 0===r)return void M.error("Got reply for unknown seq "+n.seq);if(delete this.inFlight[n.seq],"cmd_success"==n.command)r.resolve(n.result);else{var i=new Error(n.error.message);i.name=n.error.name,r.reject(i)}}else M.warn("Unrecognised message from worker: ",n)})}connect(e){return this.onClose=e,this.ensureStarted().then(()=>this.doCmd("connect"))}clearDatabase(){return this.ensureStarted().then(()=>this.doCmd("clearDatabase"))}isNewlyCreated(){return this.doCmd("isNewlyCreated")}getSavedSync(){return this.doCmd("getSavedSync")}getNextBatchToken(){return this.doCmd("getNextBatchToken")}setSyncData(e){return this.doCmd("setSyncData",[e])}syncToDatabase(e){return this.doCmd("syncToDatabase",[e])}getOutOfBandMembers(e){return this.doCmd("getOutOfBandMembers",[e])}setOutOfBandMembers(e,t){return this.doCmd("setOutOfBandMembers",[e,t])}clearOutOfBandMembers(e){return this.doCmd("clearOutOfBandMembers",[e])}getClientOptions(){return this.doCmd("getClientOptions")}storeClientOptions(e){return this.doCmd("storeClientOptions",[e])}getUserPresenceEvents(){return this.doCmd("getUserPresenceEvents")}saveToDeviceBatches(e){var t=this;return H(function*(){return t.doCmd("saveToDeviceBatches",[e])})()}getOldestToDeviceBatch(){var e=this;return H(function*(){return e.doCmd("getOldestToDeviceBatch")})()}removeToDeviceBatch(e){var t=this;return H(function*(){return t.doCmd("removeToDeviceBatch",[e])})()}ensureStarted(){return this.startPromise||(this.worker=this.workerFactory(),this.worker.onmessage=this.onWorkerMessage,this.startPromise=this.doCmd("setupWorker",[this.dbName]).then(()=>{M.log("IndexedDB worker is ready")})),this.startPromise}doCmd(e,t){return Promise.resolve().then(()=>{var n,r=this.nextSeq++,i=Promise.withResolvers();return this.inFlight[r]=i,null===(n=this.worker)||void 0===n||n.postMessage({command:e,seq:r,args:t}),i.promise})}destroy(){var e=this;return H(function*(){var t;null===(t=e.worker)||void 0===t||t.terminate()})()}}var Qye=3e5;class RQ extends mb{static exists(e,t){return vH.exists(e,t)}constructor(e){if(super(e),L(this,"backend",void 0),L(this,"startedUp",!1),L(this,"syncTs",0),L(this,"userModifiedMap",{}),L(this,"emitter",new Ln),L(this,"onClose",()=>{this.emitter.emit("closed")}),L(this,"getSavedSync",this.degradable(()=>this.backend.getSavedSync(),"getSavedSync")),L(this,"isNewlyCreated",this.degradable(()=>this.backend.isNewlyCreated(),"isNewlyCreated")),L(this,"getSavedSyncToken",this.degradable(()=>this.backend.getNextBatchToken(),"getSavedSyncToken")),L(this,"deleteAllData",this.degradable(()=>(super.deleteAllData(),this.backend.clearDatabase().then(()=>{M.log("Deleted indexeddb data.")},e=>{throw M.error("Failed to delete indexeddb data: ".concat(e)),e})),null)),L(this,"reallySave",this.degradable(()=>{this.syncTs=Date.now();var e=[];for(var t of this.getUsers())this.userModifiedMap[t.userId]!==t.getLastModifiedTime()&&t.events.presence&&(e.push([t.userId,t.events.presence.event]),this.userModifiedMap[t.userId]=t.getLastModifiedTime());return this.backend.syncToDatabase(e)},null)),L(this,"setSyncData",this.degradable(e=>this.backend.setSyncData(e),"setSyncData")),L(this,"getOutOfBandMembers",this.degradable(e=>this.backend.getOutOfBandMembers(e),"getOutOfBandMembers")),L(this,"setOutOfBandMembers",this.degradable((e,t)=>(super.setOutOfBandMembers(e,t),this.backend.setOutOfBandMembers(e,t)),"setOutOfBandMembers")),L(this,"clearOutOfBandMembers",this.degradable(e=>(super.clearOutOfBandMembers(e),this.backend.clearOutOfBandMembers(e)),"clearOutOfBandMembers")),L(this,"getClientOptions",this.degradable(()=>this.backend.getClientOptions(),"getClientOptions")),L(this,"storeClientOptions",this.degradable(e=>(super.storeClientOptions(e),this.backend.storeClientOptions(e)),"storeClientOptions")),!e.indexedDB)throw new Error("Missing required option: indexedDB");e.workerFactory?this.backend=new Jye(e.workerFactory,e.dbName):this.backend=new vH(e.indexedDB,e.dbName)}on(e,t){this.emitter.on(e,t)}startup(){return this.startedUp?(M.log("IndexedDBStore.startup: already started"),Promise.resolve()):(M.log("IndexedDBStore.startup: connecting to backend"),this.backend.connect(this.onClose).then(()=>(M.log("IndexedDBStore.startup: loading presence events"),this.backend.getUserPresenceEvents())).then(e=>{M.log("IndexedDBStore.startup: processing presence events"),e.forEach(e=>{var[t,n]=e;if(!this.createUser)throw new Error("`IndexedDBStore.startup` must be called after assigning it to the client, not before!");var r=this.createUser(t);n&&r.setPresenceEvent(new Zi(n)),this.userModifiedMap[r.userId]=r.getLastModifiedTime(),this.storeUser(r)}),this.startedUp=!0}))}destroy(){return this.backend.destroy()}wantsSave(){return Date.now()-this.syncTs>Qye}save(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]||this.wantsSave()?this.reallySave():Promise.resolve()}degradable(e,t){var n=this,r=t?super[t]:null;return H(function*(){for(var t=arguments.length,i=new Array(t),o=0;osuper.getPendingEvents,n=this;return H(function*(){if(!n.localStorage)return t().call(n,e);var r=n.localStorage.getItem(Mk(e));if(r)try{return JSON.parse(r)}catch(e){M.error("Could not parse persisted pending events",e)}return[]})()}setPendingEvents(e,t){var n=()=>super.setPendingEvents,r=this;return H(function*(){if(!r.localStorage)return n().call(r,e,t);t.length>0?r.localStorage.setItem(Mk(e),JSON.stringify(t)):r.localStorage.removeItem(Mk(e))})()}saveToDeviceBatches(e){return this.backend.saveToDeviceBatches(e)}getOldestToDeviceBatch(){return this.backend.getOldestToDeviceBatch()}removeToDeviceBatch(e){return this.backend.removeToDeviceBatch(e)}}function Mk(e){return"mx_pending_events_".concat(e)}var Za="crypto.",yH=Za+"migration",Dk=Za+"account",Zye=Za+"cross_signing_keys",Xw=Za+"inboundgroupsessions/",ebe=Za+"inboundgroupsessions.withheld/",tbe=Za+"rooms/",Nk=Za+"sessionsneedingbackup";function Pm(e){return Za+"sessions/"+e}function Uk(e,t){return Xw+e+"/"+t}function nbe(e,t){return ebe+e+"/"+t}function rbe(e){return tbe+e}class Z3 extends $3{static exists(e){for(var t=e.length,n=0;n=Zg)return t}}return 0===t.length?null:t})()}deleteEndToEndSessionsBatch(e){var t=this;return H(function*(){for(var{deviceKey:n,sessionId:r}of e){var i=t._getEndToEndSessions(n)||{};delete i[r],0===Object.keys(i).length?t.store.removeItem(Pm(n)):fh(t.store,Pm(n),i)}})()}getEndToEndInboundGroupSession(e,t,n,r){r(Vo(this.store,Uk(e,t)),Vo(this.store,nbe(e,t)))}storeEndToEndInboundGroupSession(e,t,n,r){fh(this.store,Uk(e,t),n)}countEndToEndInboundGroupSessions(){var e=this;return H(function*(){for(var t=0,n=0;n=Zg)return n}}return 0===n.length?null:n})()}deleteEndToEndInboundGroupSessionsBatch(e){var t=this;return H(function*(){for(var{senderKey:n,sessionId:r}of e){var i=Uk(n,r);t.store.removeItem(i)}})()}getEndToEndRooms(e,t){for(var n={},r=rbe(""),i=0;i{M.log("versionchange for indexeddb ".concat(this.db.name,": closing")),e.close()}}containsData(){return H(function*(){throw Error("Not implemented for Backend")})()}startup(){var e=this;return H(function*(){return e})()}deleteAllData(){return H(function*(){throw Error("This is not implemented, call IDBFactory::deleteDatabase(dbName) instead.")})()}getMigrationState(){var e=this;return H(function*(){var t=Qg.NOT_STARTED;return yield e.doTxn("readonly",[Vt.STORE_ACCOUNT],e=>{var n=e.objectStore(Vt.STORE_ACCOUNT).get(F5);n.onsuccess=()=>{var e;t=null!==(e=n.result)&&void 0!==e?e:Qg.NOT_STARTED}}),t})()}setMigrationState(e){var t=this;return H(function*(){yield t.doTxn("readwrite",[Vt.STORE_ACCOUNT],t=>{t.objectStore(Vt.STORE_ACCOUNT).put(e,F5)})})()}getAccount(e,t){var n=e.objectStore("account").get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){Is(e,t)}}}storeAccount(e,t){e.objectStore("account").put(t,"-")}getCrossSigningKeys(e,t){var n=e.objectStore("account").get("crossSigningKeys");n.onsuccess=function(){try{t(n.result||null)}catch(t){Is(e,t)}}}getSecretStorePrivateKey(e,t,n){var r=e.objectStore("account").get("ssss_cache:".concat(n));r.onsuccess=function(){try{t(r.result||null)}catch(t){Is(e,t)}}}storeSecretStorePrivateKey(e,t,n){e.objectStore("account").put(n,"ssss_cache:".concat(t))}countEndToEndSessions(e,t){var n=e.objectStore("sessions").count();n.onsuccess=function(){try{t(n.result)}catch(t){Is(e,t)}}}getEndToEndSessions(e,t,n){var r=t.objectStore("sessions").index("deviceKey").openCursor(e),i={};r.onsuccess=function(){var e=r.result;if(e)i[e.value.sessionId]={session:e.value.session,lastReceivedMessageTs:e.value.lastReceivedMessageTs},e.continue();else try{n(i)}catch(e){Is(t,e)}}}getEndToEndSession(e,t,n,r){var i=n.objectStore("sessions").get([e,t]);i.onsuccess=function(){try{i.result?r({session:i.result.session,lastReceivedMessageTs:i.result.lastReceivedMessageTs}):r(null)}catch(e){Is(n,e)}}}storeEndToEndSession(e,t,n,r){r.objectStore("sessions").put({deviceKey:e,sessionId:t,session:n.session,lastReceivedMessageTs:n.lastReceivedMessageTs})}getEndToEndSessionsBatch(){var e=this;return H(function*(){var t=[];return yield e.doTxn("readonly",[Vt.STORE_SESSIONS],e=>{var n=e.objectStore(Vt.STORE_SESSIONS).openCursor();n.onsuccess=function(){try{var r=n.result;r&&(t.push(r.value),t.length{e.onsuccess=t})};for(var{deviceKey:i,sessionId:o}of e)yield*r()}catch(e){Is(t,e)}}),function(e){return n.apply(this,arguments)}))})()}getEndToEndInboundGroupSession(e,t,n,r){var i=!1,o=!1,s=n.objectStore("inbound_group_sessions").get([e,t]);s.onsuccess=function(){try{i=s.result?s.result.session:null,!1!==o&&r(i,o)}catch(e){Is(n,e)}};var a=n.objectStore("inbound_group_sessions_withheld").get([e,t]);a.onsuccess=function(){try{o=a.result?a.result.session:null,!1!==i&&r(i,o)}catch(e){Is(n,e)}}}storeEndToEndInboundGroupSession(e,t,n,r){r.objectStore("inbound_group_sessions").put({senderCurve25519Key:e,sessionId:t,session:n})}countEndToEndInboundGroupSessions(){var e=this;return H(function*(){var t=0;return yield e.doTxn("readonly",[Vt.STORE_INBOUND_GROUP_SESSIONS],e=>{var n=e.objectStore(Vt.STORE_INBOUND_GROUP_SESSIONS).count();n.onsuccess=()=>{t=n.result}}),t})()}getEndToEndInboundGroupSessionsBatch(){var e=this;return H(function*(){var t=[];return yield e.doTxn("readonly",[Vt.STORE_INBOUND_GROUP_SESSIONS,Vt.STORE_BACKUP],e=>{var n=e.objectStore(Vt.STORE_INBOUND_GROUP_SESSIONS),r=e.objectStore(Vt.STORE_BACKUP),i=n.openCursor();i.onsuccess=function(){try{var n=i.result;if(n){var o=r.get(n.key);o.onsuccess=()=>{t.push({senderKey:n.value.senderCurve25519Key,sessionId:n.value.sessionId,sessionData:n.value.session,needsBackup:void 0!==o.result}),t.length{e.onsuccess=t})};for(var{senderKey:i,sessionId:o}of e)yield*r()}catch(e){Is(t,e)}}),function(e){return n.apply(this,arguments)}))})()}getEndToEndDeviceData(e,t){var n=e.objectStore("device_data").get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){Is(e,t)}}}getEndToEndRooms(e,t){var n={},r=e.objectStore("rooms").openCursor();r.onsuccess=function(){var i=r.result;if(i)n[i.key]=i.value,i.continue();else try{t(n)}catch(t){Is(e,t)}}}markSessionsNeedingBackup(e,t){var n=this;return H(function*(){t||(t=n.db.transaction("sessions_needing_backup","readwrite"));var r=t.objectStore("sessions_needing_backup");yield Promise.all(e.map(e=>new Promise((t,n)=>{var i=r.put({senderCurve25519Key:e.senderKey,sessionId:e.sessionId});i.onsuccess=t,i.onerror=n})))})()}doTxn(e,t,n){var r=this.db.transaction(t,e),i=abe(r),o=n(r);return i.then(()=>o)}};var IQ=[e=>{obe(e)},e=>{e.createObjectStore("account")},e=>{e.createObjectStore("sessions",{keyPath:["deviceKey","sessionId"]}).createIndex("deviceKey","deviceKey")},e=>{e.createObjectStore("inbound_group_sessions",{keyPath:["senderCurve25519Key","sessionId"]})},e=>{e.createObjectStore("device_data")},e=>{e.createObjectStore("rooms")},e=>{e.createObjectStore("sessions_needing_backup",{keyPath:["senderCurve25519Key","sessionId"]})},e=>{e.createObjectStore("inbound_group_sessions_withheld",{keyPath:["senderCurve25519Key","sessionId"]})},e=>{e.createObjectStore("session_problems",{keyPath:["deviceKey","time"]}).createIndex("deviceKey","deviceKey"),e.createObjectStore("notified_error_devices",{keyPath:["userId","deviceId"]})},e=>{e.createObjectStore("shared_history_inbound_group_sessions",{keyPath:["roomId"]})},e=>{e.createObjectStore("parked_shared_history",{keyPath:["roomId"]})}],kQ=IQ.length;function sbe(e,t){M.log("Upgrading IndexedDBCryptoStore from version ".concat(t)+" to ".concat(kQ)),IQ.forEach((n,r)=>{t<=r&&n(e)})}function obe(e){var t=e.createObjectStore("outgoingRoomKeyRequests",{keyPath:"requestId"});t.createIndex("session",["requestBody.room_id","requestBody.session_id"]),t.createIndex("state","state")}function Is(e,t){e._mx_abortexception=t;try{e.abort()}catch{}}function abe(e){return new Promise((t,n)=>{e.oncomplete=()=>{void 0!==e._mx_abortexception&&n(e._mx_abortexception),t(null)},e.onerror=t=>{void 0!==e._mx_abortexception?n(e._mx_abortexception):(M.log("Error performing indexeddb txn",t),n(e.error))},e.onabort=t=>{void 0!==e._mx_abortexception?n(e._mx_abortexception):(M.log("Error performing indexeddb txn",t),n(e.error))}})}class Vt{static exists(e,t){return EQ(e,t)}static existsAndIsNotMigrated(e,t){return new Promise((n,r)=>{var i=!0,o=e.open(t);o.onupgradeneeded=()=>{i=!1},o.onblocked=()=>r(o.error),o.onsuccess=()=>{var s=o.result;if(i){var a=s.transaction([Vt.STORE_ACCOUNT],"readonly").objectStore(Vt.STORE_ACCOUNT).get(F5);a.onsuccess=()=>{var e,t=null!==(e=a.result)&&void 0!==e?e:Qg.NOT_STARTED;n(t===Qg.NOT_STARTED)},a.onerror=()=>{r(a.error)},s.close()}else s.close(),e.deleteDatabase(t),n(!1)},o.onerror=()=>r(o.error)})}constructor(e,t){this.indexedDB=e,this.dbName=t,L(this,"backendPromise",void 0),L(this,"backend",void 0)}containsData(){var e=this;return H(function*(){return Vt.exists(e.indexedDB,e.dbName)})()}startup(){return this.backendPromise||(this.backendPromise=new Promise((e,t)=>{if(this.indexedDB){M.log("connecting to indexeddb ".concat(this.dbName));var n=this.indexedDB.open(this.dbName,kQ);n.onupgradeneeded=e=>{sbe(n.result,e.oldVersion)},n.onblocked=()=>{M.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},n.onerror=e=>{M.log("Error connecting to indexeddb",e),t(n.error)},n.onsuccess=()=>{var t=n.result;M.log("connected to indexeddb ".concat(this.dbName)),e(new ibe(t))}}else t(new Error("no indexeddb support available"))}).then(e=>e.doTxn("readonly",[Vt.STORE_INBOUND_GROUP_SESSIONS,Vt.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],t=>{e.getEndToEndInboundGroupSession("","",t,()=>{})}).then(()=>e)).catch(e=>{if("VersionError"===e.name)throw M.warn("Crypto DB is too new for us to use!",e),new eO(Z7.TooNew);M.warn("unable to connect to indexeddb ".concat(this.dbName)+": falling back to localStorage store: ".concat(e));try{if(!(globalThis.localStorage instanceof Storage))throw new Error("localStorage is not available");return new Z3(globalThis.localStorage)}catch(e){return M.warn("Unable to open localStorage: falling back to in-memory store: ".concat(e)),new $3}}).then(e=>(this.backend=e,e))),this.backendPromise}deleteAllData(){return new Promise((e,t)=>{if(this.indexedDB){M.log("Removing indexeddb instance: ".concat(this.dbName));var n=this.indexedDB.deleteDatabase(this.dbName);n.onblocked=()=>{M.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},n.onerror=e=>{M.log("Error deleting data from indexeddb",e),t(n.error)},n.onsuccess=()=>{M.log("Removed indexeddb instance: ".concat(this.dbName)),e()}}else t(new Error("no indexeddb support available"))}).catch(e=>{M.warn("unable to delete IndexedDBCryptoStore: ".concat(e))})}getMigrationState(){return this.backend.getMigrationState()}setMigrationState(e){return this.backend.setMigrationState(e)}getAccount(e,t){this.backend.getAccount(e,t)}storeAccount(e,t){this.backend.storeAccount(e,t)}getCrossSigningKeys(e,t){this.backend.getCrossSigningKeys(e,t)}getSecretStorePrivateKey(e,t,n){this.backend.getSecretStorePrivateKey(e,t,n)}storeSecretStorePrivateKey(e,t,n){this.backend.storeSecretStorePrivateKey(e,t,n)}countEndToEndSessions(e,t){this.backend.countEndToEndSessions(e,t)}getEndToEndSession(e,t,n,r){this.backend.getEndToEndSession(e,t,n,r)}getEndToEndSessions(e,t,n){this.backend.getEndToEndSessions(e,t,n)}storeEndToEndSession(e,t,n,r){this.backend.storeEndToEndSession(e,t,n,r)}countEndToEndInboundGroupSessions(){return this.backend.countEndToEndInboundGroupSessions()}getEndToEndSessionsBatch(){return this.backend.getEndToEndSessionsBatch()}deleteEndToEndSessionsBatch(e){return this.backend.deleteEndToEndSessionsBatch(e)}getEndToEndInboundGroupSession(e,t,n,r){this.backend.getEndToEndInboundGroupSession(e,t,n,r)}storeEndToEndInboundGroupSession(e,t,n,r){this.backend.storeEndToEndInboundGroupSession(e,t,n,r)}getEndToEndInboundGroupSessionsBatch(){return this.backend.getEndToEndInboundGroupSessionsBatch()}deleteEndToEndInboundGroupSessionsBatch(e){return this.backend.deleteEndToEndInboundGroupSessionsBatch(e)}getEndToEndRooms(e,t){this.backend.getEndToEndRooms(e,t)}markSessionsNeedingBackup(e,t){return this.backend.markSessionsNeedingBackup(e,t)}doTxn(e,t,n,r){return this.backend.doTxn(e,t,n,r)}}L(Vt,"STORE_ACCOUNT","account"),L(Vt,"STORE_SESSIONS","sessions"),L(Vt,"STORE_INBOUND_GROUP_SESSIONS","inbound_group_sessions"),L(Vt,"STORE_INBOUND_GROUP_SESSIONS_WITHHELD","inbound_group_sessions_withheld"),L(Vt,"STORE_SHARED_HISTORY_INBOUND_GROUP_SESSIONS","shared_history_inbound_group_sessions"),L(Vt,"STORE_PARKED_SHARED_HISTORY","parked_shared_history"),L(Vt,"STORE_DEVICE_DATA","device_data"),L(Vt,"STORE_ROOMS","rooms"),L(Vt,"STORE_BACKUP","sessions_needing_backup");var cbe=function(e){return e.Email="email",e.Phone="msisdn",e}({}),lbe=new xr("delegated_oidc_compatibility","org.matrix.msc3824.delegated_oidc_compatibility"),ube=function(e){return e.Gitlab="gitlab",e.Github="github",e.Apple="apple",e.Google="google",e.Facebook="facebook",e.Twitter="twitter",e}({}),dbe=function(e){return e.LOGIN="login",e.REGISTER="register",e}({}),fbe="us.cloke.msc4175.tz";class hbe{constructor(e){L(this,"relations",void 0),this.relations=e.filter(e=>!!e)}getRelations(){return this.relations.reduce((e,t)=>[...e,...t.getRelations()],[])}on(e,t){this.relations.forEach(n=>n.on(e,t))}off(e,t){this.relations.forEach(n=>n.off(e,t))}}var pbe=function(e){return e.Global="Global",e.SetItemError="setItem",e.GetItemError="getItem",e.RemoveItemError="removeItem",e.ClearError="clear",e.QuotaExceededError="QuotaExceededError",e}({});class mbe extends Ln{}var gbe=new mbe,xQ=()=>new $3;function AQ(e){xQ=e}function PQ(e){var t,n,r;return e.store=null!==(t=e.store)&&void 0!==t?t:new mb({localStorage:globalThis.localStorage}),e.scheduler=null!==(n=e.scheduler)&&void 0!==n?n:new ev,e.cryptoStore=null!==(r=e.cryptoStore)&&void 0!==r?r:xQ(),e}function eT(e){return new Q3(PQ(e))}function LQ(e,t,n,r){var i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return new bQ(e,t,n,PQ(r),i)}const vbe=Object.freeze(Object.defineProperty({__proto__:null,AuthType:wA,AutoDiscovery:lt,AutoDiscoveryAction:go,AutoDiscoveryError:Sa,Beacon:vJ,BeaconEvent:qn,CallEvent:gt,CallFeedEvent:xc,Category:jl,ClientEvent:Pe,ClientPrefix:Yr,ClientStoppedError:V0e,ConditionKind:Nr,ConditionOperator:u0e,ConnectionError:_p,ContentHelpers:Vve,DELEGATED_OIDC_COMPATIBILITY:lbe,DEVICE_CODE_SCOPE:Tye,DMMemberCountCondition:d0e,DebugLogger:O7,Device:Kye,DeviceVerification:SQ,Direction:ht,DuplicateStrategy:Sy,EVENT_VISIBILITY_CHANGE_TYPE:Ah,EventEmitterEvents:VX,EventStatus:rt,EventTimeline:Me,EventTimelineSet:sg,EventType:Z,FILTER_RELATED_BY_REL_TYPES:Tg,FILTER_RELATED_BY_SENDERS:Cg,FeatureSupport:Xi,Filter:Ps,GET_LOGIN_TOKEN_CAPABILITY:Pye,GroupCall:W7,GroupCallEvent:In,GroupCallIntent:jJ,GroupCallState:ir,GroupCallStatsReportEvent:cy,GroupCallType:z3,GuestAccess:aC,HTTPError:Xh,HistoryVisibility:J7,HttpApiEvent:Y5,IdentityPrefix:Ul,IdentityProviderBrand:ube,IndexedDBCryptoStore:Vt,IndexedDBStore:RQ,InteractiveAuth:cO,InvalidCryptoStoreError:eO,InvalidCryptoStoreState:Z7,JoinRule:Qd,KNOWN_SAFE_ROOM_VERSION:xJ,KeySignatureUploadError:B0e,KnownMembership:He,LOCAL_NOTIFICATION_SETTINGS_PREFIX:zX,LocalStorageCryptoStore:Z3,LocalStorageErrors:pbe,LocationAssetType:Jg,MAIN_ROOM_TIMELINE:a_,MAXIMUM_MATRIX_VERSION:y0e,MINIMUM_MATRIX_VERSION:v0e,MSC3912_RELATION_BASED_REDACTIONS_PROP:q5,M_ASSET:s_,M_BEACON:cA,M_BEACON_INFO:Q7,M_HTML:Nve,M_LOCATION:o_,M_MESSAGE:Dve,M_POLL_END:sC,M_POLL_KIND_DISCLOSED:Gve,M_POLL_KIND_UNDISCLOSED:Kve,M_POLL_RESPONSE:lb,M_POLL_START:zve,M_TEXT:j7,M_TIMESTAMP:kf,M_TOPIC:F7,MatrixClient:Q3,MatrixError:or,MatrixEvent:Zi,MatrixEventEvent:Gt,MatrixHttpApi:RJ,MatrixScheduler:ev,MediaHandlerEvent:wh,MediaPrefix:Sg,MemoryCryptoStore:$3,MemoryStore:mb,Method:ue,MsgType:ol,NoAuthFlowFoundError:wQ,NotificationCountType:Xt,OidcError:Qi,OidcTokenRefresher:Iye,PUSHER_DEVICE_ID:_ve,PUSHER_ENABLED:G5,PendingEventOrdering:nv,Poll:_J,PollEvent:Pd,Preset:Y3,ProfileKeyMSC4175Timezone:fbe,PushRuleActionName:Jd,PushRuleKind:Si,REFERENCE_RELATION:oJ,ReceiptType:os,RelatedRelations:hbe,RelationType:bn,Relations:U7,RelationsEvent:Bw,RestrictedAllowType:_0e,Room:G3,RoomCreateTypeField:tC,RoomEvent:ke,RoomMember:ob,RoomMemberEvent:js,RoomNameType:kc,RoomState:pb,RoomStateEvent:pt,RoomSummary:iJ,RoomType:_g,RoomVersionStability:IJ,RoomWidgetClient:bQ,RoomWidgetClientEvent:Yw,RuleId:_i,SERVICE_TYPES:oA,SSOAction:dbe,SUPPORTED_MATRIX_VERSIONS:db,SearchOrderBy:HJ,SearchResult:W3,SecretStorage:$0e,ServerCapabilities:kJ,SetPresence:AJ,SlidingSyncEvent:aA,StatsReport:du,SyncAccumulator:_Q,SyncState:qt,THREAD_RELATION_TYPE:Sn,Thread:Nn,ThreadEvent:as,ThreadFilterType:Na,ThreepidMedium:cbe,TimelineIndex:SA,TimelineWindow:Wye,ToDeviceMessageId:V3,TokenRefreshError:CJ,TokenRefreshLogoutError:B7,TweakName:Y7,TypedEventEmitter:Ln,UNSIGNED_MEMBERSHIP_FIELD:WX,UNSIGNED_THREAD_ID_FIELD:nC,UNSTABLE_ELEMENT_FUNCTIONAL_USERS:KX,UNSTABLE_MSC2666_MUTUAL_ROOMS:dQ,UNSTABLE_MSC2666_QUERY_MUTUAL_ROOMS:fQ,UNSTABLE_MSC2666_SHARED_ROOMS:uQ,UNSTABLE_MSC2716_MARKER:GX,UNSTABLE_MSC3088_ENABLED:B5,UNSTABLE_MSC3088_PURPOSE:H5,UNSTABLE_MSC3089_BRANCH:eu,UNSTABLE_MSC3089_LEAF:qX,UNSTABLE_MSC3089_TREE_SUBTYPE:V5,UNSTABLE_MSC3852_LAST_SEEN_UA:Aye,UNSTABLE_MSC4133_EXTENDED_PROFILES:hQ,UNSTABLE_MSC4140_DELAYED_EVENTS:$c,UnsupportedDelayedEventsEndpointError:Vd,UpdateDelayedEventAction:Vw,User:mu,UserEvent:Di,Visibility:$J,anySignal:TJ,calculateRetryBackoff:q7,completeAuthorizationCodeGrant:Cye,createClient:eT,createNewMatrixCall:ub,createRoomWidgetClient:LQ,decodeBase64:Nh,decodeIdToken:oQ,determineFeatureSupport:zw,discoverAndValidateOIDCIssuerWellKnown:oO,encodeBase64:wy,encodeUnpaddedBase64:DJ,encodeUnpaddedBase64Url:K3,fixNotificationCountOnDecryption:pQ,generateAuthorizationParams:_ye,generateAuthorizationUrl:Sye,generateOidcAuthorizationUrl:wye,generateScope:J3,getBeaconInfoIdentifier:iC,getHttpUriForMxc:H3,inMainTimelineForReceipt:hb,isDmMemberCountCondition:f0e,isEventTypeSame:Uve,isPollEvent:SJ,isTimestampInDuration:z5,localStorageErrorsEventsEmitter:gbe,parseErrorResponse:V7,registerOidcClient:Rye,retryNetworkOperation:X5,safeGetRetryAfterMs:H7,setCryptoStoreFactory:AQ,threadFilterTypeToFilter:mQ,threadIdForReceipt:rv,timeoutSignal:q3,validateAuthMetadata:sQ,validateAuthMetadataAndKeys:aO,validateBearerTokenResponse:lQ,validateIdToken:aQ,validateStoredUserState:cQ},Symbol.toStringTag,{value:"Module"}));if(globalThis.__js_sdk_entrypoint)throw new Error("Multiple matrix-js-sdk entrypoints detected!");var EA;globalThis.__js_sdk_entrypoint=!0;try{EA=globalThis.indexedDB}catch{}EA&&AQ(()=>new Vt(EA,"matrix-js-sdk:crypto")),globalThis.matrixcs=vbe;var bH,_H,jk={exports:{}},bt={};function ybe(){if(bH)return bt;bH=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),s=Symbol.for("react.context"),a=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),l=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),d=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},p=Object.assign,f={};function m(e,t,n){this.props=e,this.context=t,this.refs=f,this.updater=n||h}function g(){}function v(e,t,n){this.props=e,this.context=t,this.refs=f,this.updater=n||h}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=m.prototype;var y=v.prototype=new g;y.constructor=v,p(y,m.prototype),y.isPureReactComponent=!0;var b=Array.isArray,w={H:null,A:null,T:null,S:null,V:null},_=Object.prototype.hasOwnProperty;function S(t,n,r,i,o,s){return r=s.ref,{$$typeof:e,type:t,key:n,ref:void 0!==r?r:null,props:s}}function E(t){return"object"==typeof t&&null!==t&&t.$$typeof===e}var C=/\/+/g;function k(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}(""+e.key):t.toString(36)}function T(){}function R(n,r,i,o,s){var a=typeof n;("undefined"===a||"boolean"===a)&&(n=null);var c=!1;if(null===n)c=!0;else switch(a){case"bigint":case"string":case"number":c=!0;break;case"object":switch(n.$$typeof){case e:case t:c=!0;break;case u:return R((c=n._init)(n._payload),r,i,o,s)}}if(c)return s=s(n),c=""===o?"."+k(n,0):o,b(s)?(i="",null!=c&&(i=c.replace(C,"$&/")+"/"),R(s,r,i,"",function(e){return e})):null!=s&&(E(s)&&(s=function(e,t){return S(e.type,t,void 0,0,0,e.props)}(s,i+(null==s.key||n&&n.key===s.key?"":(""+s.key).replace(C,"$&/")+"/")+c)),r.push(s)),1;c=0;var l=""===o?".":o+":";if(b(n))for(var h=0;h>>1,o=e[r];if(!(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[a]=n,r=a);else{if(!(li(u,n)))break e;e[r]=u,e[l]=n,r=l}}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(e.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var c=[],l=[],u=1,d=null,h=3,p=!1,f=!1,m=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,y="function"==typeof clearTimeout?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;function w(e){for(var i=n(l);null!==i;){if(null===i.callback)r(l);else{if(!(i.startTime<=e))break;r(l),i.sortIndex=i.expirationTime,t(c,i)}i=n(l)}}function _(e){if(m=!1,w(e),!f)if(null!==n(c))f=!0,E||(E=!0,S());else{var t=n(l);null!==t&&P(_,t.startTime-e)}}var S,E=!1,C=-1,k=5,T=-1;function R(){return!!g||!(e.unstable_now()-Tt&&R());){var s=d.callback;if("function"==typeof s){d.callback=null,h=d.priorityLevel;var a=s(d.expirationTime<=t);if(t=e.unstable_now(),"function"==typeof a){d.callback=a,w(t),i=!0;break t}d===n(c)&&r(c),w(t)}else r(c);d=n(c)}if(null!==d)i=!0;else{var u=n(l);null!==u&&P(_,u.startTime-t),i=!1}}break e}finally{d=null,h=o,p=!1}i=void 0}}finally{i?S():E=!1}}}if("function"==typeof b)S=function(){b(I)};else if(typeof MessageChannel<"u"){var x=new MessageChannel,L=x.port2;x.port1.onmessage=I,S=function(){L.postMessage(null)}}else S=function(){v(I,0)};function P(t,n){C=v(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125s?(r.sortIndex=o,t(l,r),null===n(c)&&r===n(l)&&(m?(y(C),C=-1):m=!0,P(_,o-s))):(r.sortIndex=a,t(c,r),f||p||(f=!0,E||(E=!0,S()))),r},e.unstable_shouldYield=R,e.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}}(Hk)),Hk}function _be(){return wH||(wH=1,$k.exports=bbe()),$k.exports}var EH,CH,TH,RH,Bk={exports:{}},Ki={};function Sbe(){if(EH)return Ki;EH=1;var e=lO();function t(e){var t="https://react.dev/errors/"+e;if(1"u"||"function"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),Bk.exports=Sbe(),Bk.exports}function wbe(){if(TH)return T0;TH=1;var e=_be(),t=lO(),n=OQ();function r(e){var t="https://react.dev/errors/"+e;if(1D||(e.current=A[D],A[D]=null,D--)}function F(e,t){D++,A[D]=e.current,e.current=t}var U=N(null),H=N(null),B=N(null),$=N(null);function V(e,t){switch(F(B,t),F(H,e),F(U,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?td(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=nd(t=td(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(U),F(U,e)}function q(){j(U),j(H),j(B)}function K(e){null!==e.memoizedState&&F($,e);var t=U.current,n=nd(t,e.type);t!==n&&(F(H,e),F(U,n))}function z(e){H.current===e&&(j(U),j(H)),$.current===e&&(j($),Kd._currentValue=O)}var G=Object.prototype.hasOwnProperty,W=e.unstable_scheduleCallback,J=e.unstable_cancelCallback,Y=e.unstable_shouldYield,Z=e.unstable_requestPaint,Q=e.unstable_now,X=e.unstable_getCurrentPriorityLevel,ee=e.unstable_ImmediatePriority,te=e.unstable_UserBlockingPriority,ne=e.unstable_NormalPriority,re=e.unstable_LowPriority,ie=e.unstable_IdlePriority,oe=e.log,se=e.unstable_setDisableYieldValue,ae=null,ce=null;function le(e){if("function"==typeof oe&&se(e),ce&&"function"==typeof ce.setStrictMode)try{ce.setStrictMode(ae,e)}catch{}}var ue=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(de(e)/he|0)|0},de=Math.log,he=Math.LN2;var pe=256,fe=4194304;function me(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ge(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var i=0,o=e.suspendedLanes,s=e.pingedLanes;e=e.warmLanes;var a=134217727&r;return 0!==a?0!==(r=a&~o)?i=me(r):0!==(s&=a)?i=me(s):n||0!==(n=a&~e)&&(i=me(n)):0!==(a=r&~o)?i=me(a):0!==s?i=me(s):n||0!==(n=r&~e)&&(i=me(n)),0===i?0:0!==t&&t!==i&&0===(t&o)&&((o=i&-i)>=(n=t&-t)||32===o&&4194048&n)?t:i}function ve(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function ye(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function be(){var e=pe;return!(4194048&(pe<<=1))&&(pe=256),e}function we(){var e=fe;return!(62914560&(fe<<=1))&&(fe=4194304),e}function _e(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Se(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ee(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ue(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|4194090&n}function Ce(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ue(n),i=1<)":-1--i||c[r]!==l[i]){var u="\n"+c[r].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}}while(1<=r&&0<=i);break}}}finally{nt=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?tt(n):""}function it(e){switch(e.tag){case 26:case 27:case 5:return tt(e.type);case 16:return tt("Lazy");case 13:return tt("Suspense");case 19:return tt("SuspenseList");case 0:case 15:return rt(e.type,!1);case 11:return rt(e.type.render,!1);case 1:return rt(e.type,!0);case 31:return tt("Activity");default:return""}}function ot(e){try{var t="";do{t+=it(e),e=e.return}while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function st(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function at(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function ct(e){e._valueTracker||(e._valueTracker=function(e){var t=at(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&"function"==typeof n.get&&"function"==typeof n.set){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function lt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=at(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function ut(e){if(typeof(e=e||(typeof document<"u"?document:void 0))>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var dt=/[\n"\\]/g;function ht(e){return e.replace(dt,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function pt(e,t,n,r,i,o,s,a){e.name="",null!=s&&"function"!=typeof s&&"symbol"!=typeof s&&"boolean"!=typeof s?e.type=s:e.removeAttribute("type"),null!=t?"number"===s?(0===t&&""===e.value||e.value!=t)&&(e.value=""+st(t)):e.value!==""+st(t)&&(e.value=""+st(t)):"submit"!==s&&"reset"!==s||e.removeAttribute("value"),null!=t?mt(e,s,st(t)):null!=n?mt(e,s,st(n)):null!=r&&e.removeAttribute("value"),null==i&&null!=o&&(e.defaultChecked=!!o),null!=i&&(e.checked=i&&"function"!=typeof i&&"symbol"!=typeof i),null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a?e.name=""+st(a):e.removeAttribute("name")}function ft(e,t,n,r,i,o,s,a){if(null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.type=o),null!=t||null!=n){if(("submit"===o||"reset"===o)&&null==t)return;n=null!=n?""+st(n):"",t=null!=t?""+st(t):n,a||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=r??i)&&"symbol"!=typeof r&&!!r,e.checked=a?e.checked:!!r,e.defaultChecked=!!r,null!=s&&"function"!=typeof s&&"symbol"!=typeof s&&"boolean"!=typeof s&&(e.name=s)}function mt(e,t,n){"number"===t&&ut(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function gt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Nt=!1;if(Dt)try{var jt={};Object.defineProperty(jt,"passive",{get:function(){Nt=!0}}),window.addEventListener("test",jt,jt),window.removeEventListener("test",jt,jt)}catch{Nt=!1}var Ft=null,Ut=null,Ht=null;function Bt(){if(Ht)return Ht;var e,t,n=Ut,r=n.length,i="value"in Ft?Ft.value:Ft.textContent,o=i.length;for(e=0;e=wn),En=" ",Cn=!1;function kn(e,t){switch(e){case"keyup":return-1!==yn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Tn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Rn=!1;var In={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!In[e.type]:"textarea"===t}function Ln(e,t,n,r){xt?Lt?Lt.push(r):Lt=[r]:xt=r,0<(t=Bu(t,"onChange")).length&&(n=new Yt("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Pn=null,Mn=null;function On(e){Ou(e,0)}function An(e){if(lt(He(e)))return e}function Dn(e,t){if("change"===e)return t}var Nn=!1;if(Dt){var jn;if(Dt){var Fn="oninput"in document;if(!Fn){var Un=document.createElement("div");Un.setAttribute("oninput","return;"),Fn="function"==typeof Un.oninput}jn=Fn}else jn=!1;Nn=jn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Wn(r)}}function Yn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Yn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function Zn(e){for(var t=ut((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch{n=!1}if(!n)break;t=ut((e=t.contentWindow).document)}return t}function Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var Xn=Dt&&"documentMode"in document&&11>=document.documentMode,er=null,tr=null,nr=null,rr=!1;function ir(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;rr||null==er||er!==ut(r)||("selectionStart"in(r=er)&&Qn(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nr&&Gn(nr,r)||(nr=r,0<(r=Bu(tr,"onSelect")).length&&(t=new Yt("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=er)))}function or(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var sr={animationend:or("Animation","AnimationEnd"),animationiteration:or("Animation","AnimationIteration"),animationstart:or("Animation","AnimationStart"),transitionrun:or("Transition","TransitionRun"),transitionstart:or("Transition","TransitionStart"),transitioncancel:or("Transition","TransitionCancel"),transitionend:or("Transition","TransitionEnd")},ar={},cr={};function lr(e){if(ar[e])return ar[e];if(!sr[e])return e;var t,n=sr[e];for(t in n)if(n.hasOwnProperty(t)&&t in cr)return ar[e]=n[t];return e}Dt&&(cr=document.createElement("div").style,"AnimationEvent"in window||(delete sr.animationend.animation,delete sr.animationiteration.animation,delete sr.animationstart.animation),"TransitionEvent"in window||delete sr.transitionend.transition);var ur=lr("animationend"),dr=lr("animationiteration"),hr=lr("animationstart"),pr=lr("transitionrun"),fr=lr("transitionstart"),mr=lr("transitioncancel"),gr=lr("transitionend"),vr=new Map,yr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function br(e,t){vr.set(e,t),Ke(t,[e])}yr.push("scrollEnd");var wr=new WeakMap;function _r(e,t){if("object"==typeof e&&null!==e){var n=wr.get(e);return void 0!==n?n:(t={value:e,source:t,stack:ot(t)},wr.set(e,t),t)}return{value:e,source:t,stack:ot(t)}}var Sr=[],Er=0,Cr=0;function kr(){for(var e=Er,t=Cr=Er=0;t>=s,i-=s,Wr=1<<32-ue(t)+i|n<o?o:8;var s=P.T,a={};P.T=a,Fs(e,!1,t,n);try{var c=i(),l=P.S;if(null!==l&&l(a,c),null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=function(e,t){var n=[],r={status:"pending",value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status="fulfilled",r.value=t;for(var e=0;eh?(p=d,d=null):p=d.sibling;var f=g(r,d,a[h],c);if(null===f){null===d&&(d=p);break}e&&d&&null===f.alternate&&t(r,d),o=s(f,o,h),null===u?l=f:u.sibling=f,u=f,d=p}if(h===a.length)return n(r,d),ni&&Yr(r,h),l;if(null===d){for(;hp?(f=h,h=null):f=h.sibling;var b=g(o,h,y.value,l);if(null===b){null===h&&(h=f);break}e&&h&&null===b.alternate&&t(o,h),a=s(b,a,p),null===d?u=b:d.sibling=b,d=b,h=f}if(y.done)return n(o,h),ni&&Yr(o,p),u;if(null===h){for(;!y.done;p++,y=c.next())null!==(y=m(o,y.value,l))&&(a=s(y,a,p),null===d?u=y:d.sibling=y,d=y);return ni&&Yr(o,p),u}for(h=i(h);!y.done;p++,y=c.next())null!==(y=v(h,o,p,y.value,l))&&(e&&null!==y.alternate&&h.delete(null===y.key?p:y.key),a=s(y,a,p),null===d?u=y:d.sibling=y,d=y);return e&&h.forEach(function(e){return t(o,e)}),ni&&Yr(o,p),u}(c,l,u=w.call(u),f)}if("function"==typeof u.then)return b(c,l,Ws(u),f);if(u.$$typeof===y)return b(c,l,Ci(c,u),f);Ys(c,u)}return"string"==typeof u&&""!==u||"number"==typeof u||"bigint"==typeof u?(u=""+u,null!==l&&6===l.tag?(n(c,l.sibling),(f=o(l,u)).return=c,c=f):(n(c,l),(f=Ur(u,c.mode,f)).return=c,c=f),a(c)):n(c,l)}return function(e,t,n,r){try{Gs=0;var i=b(e,t,n,r);return zs=null,i}catch(t){if(t===$i||t===qi)throw t;var o=Or(29,t,null,e.mode);return o.lanes=r,o.return=e,o}}}var Xs=Qs(!0),ea=Qs(!1),ta=N(null),na=null;function ra(e){var t=e.alternate;F(aa,1&aa.current),F(ta,e),null===na&&(null===t||null!==uo.current||null!==t.memoizedState)&&(na=e)}function ia(e){if(22===e.tag){if(F(aa,aa.current),F(ta,e),null===na){var t=e.alternate;null!==t&&null!==t.memoizedState&&(na=e)}}else oa()}function oa(){F(aa,aa.current),F(ta,ta.current)}function sa(e){j(ta),na===e&&(na=null),j(aa)}var aa=N(0);function ca(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||pd(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function la(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:l({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ua={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Pl(),i=to(r);i.payload=t,null!=n&&(i.callback=n),null!==(t=no(e,i,r))&&(Ol(t,e,r),ro(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Pl(),i=to(r);i.tag=1,i.payload=t,null!=n&&(i.callback=n),null!==(t=no(e,i,r))&&(Ol(t,e,r),ro(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Pl(),r=to(n);r.tag=2,null!=t&&(r.callback=t),null!==(t=no(e,r,n))&&(Ol(t,e,n),ro(t,e,n))}};function da(e,t,n,r,i,o,s){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,s):!t.prototype||!t.prototype.isPureReactComponent||(!Gn(n,r)||!Gn(i,o))}function ha(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ua.enqueueReplaceState(t,t.state,null)}function pa(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=l({},n)),e)void 0===n[i]&&(n[i]=e[i]);return n}var fa="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)};function ma(e){fa(e)}function ga(e){console.error(e)}function va(e){fa(e)}function ya(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function ba(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function wa(e,t,n){return(n=to(n)).tag=3,n.payload={element:null},n.callback=function(){ya(e,t)},n}function _a(e){return(e=to(e)).tag=3,e}function Sa(e,t,n,r){var i=n.type.getDerivedStateFromError;if("function"==typeof i){var o=r.value;e.payload=function(){return i(o)},e.callback=function(){ba(t,n,r)}}var s=n.stateNode;null!==s&&"function"==typeof s.componentDidCatch&&(e.callback=function(){ba(t,n,r),"function"!=typeof i&&(null===_l?_l=new Set([this]):_l.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var Ea=Error(r(461)),Ca=!1;function ka(e,t,n,r){t.child=null===e?ea(t,null,n,r):Xs(t,e.child,n,r)}function Ta(e,t,n,r,i){n=n.render;var o=t.ref;if("ref"in r){var s={};for(var a in r)"ref"!==a&&(s[a]=r[a])}else s=r;return Si(t),r=xo(e,t,n,s,o,i),a=Oo(),null===e||Ca?(ni&&a&&Qr(t),t.flags|=1,ka(e,t,r,i),t.child):(Ao(e,t,i),za(e,t,i))}function Ra(e,t,n,r,i){if(null===e){var o=n.type;return"function"!=typeof o||Ar(o)||void 0!==o.defaultProps||null!==n.compare?((e=jr(n.type,null,r,t,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Ia(e,t,o,r,i))}if(o=e.child,!Ga(e,i)){var s=o.memoizedProps;if((n=null!==(n=n.compare)?n:Gn)(s,r)&&e.ref===t.ref)return za(e,t,i)}return t.flags|=1,(e=Dr(o,r)).ref=t.ref,e.return=t,t.child=e}function Ia(e,t,n,r,i){if(null!==e){var o=e.memoizedProps;if(Gn(o,r)&&e.ref===t.ref){if(Ca=!1,t.pendingProps=r=o,!Ga(e,i))return t.lanes=e.lanes,za(e,t,i);131072&e.flags&&(Ca=!0)}}return Ma(e,t,n,r,i)}function xa(e,t,n){var r=t.pendingProps,i=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode){if(128&t.flags){if(r=null!==o?o.baseLanes|n:n,null!==e){for(i=t.child=e.child,o=0;null!==i;)o=o|i.lanes|i.childLanes,i=i.sibling;t.childLanes=o&~r}else t.childLanes=0,t.child=null;return La(e,t,r,n)}if(!(536870912&n))return t.lanes=t.childLanes=536870912,La(e,t,null!==o?o.baseLanes|n:n,n);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&Hi(0,null!==o?o.cachePool:null),null!==o?po(t,o):fo(),ia(t)}else null!==o?(Hi(0,o.cachePool),po(t,o),oa(),t.memoizedState=null):(null!==e&&Hi(0,null),fo(),oa());return ka(e,t,i,n),t.child}function La(e,t,n,r){var i=Ui();return i=null===i?null:{parent:xi._currentValue,pool:i},t.memoizedState={baseLanes:n,cachePool:i},null!==e&&Hi(0,null),fo(),ia(t),null!==e&&wi(e,t,r,!0),null}function Pa(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(r(284));(null===e||e.ref!==n)&&(t.flags|=4194816)}}function Ma(e,t,n,r,i){return Si(t),n=xo(e,t,n,r,void 0,i),r=Oo(),null===e||Ca?(ni&&r&&Qr(t),t.flags|=1,ka(e,t,n,i),t.child):(Ao(e,t,i),za(e,t,i))}function Oa(e,t,n,r,i,o){return Si(t),t.updateQueue=null,n=Po(t,r,n,i),Lo(e),r=Oo(),null===e||Ca?(ni&&r&&Qr(t),t.flags|=1,ka(e,t,n,o),t.child):(Ao(e,t,o),za(e,t,o))}function Aa(e,t,n,r,i){if(Si(t),null===t.stateNode){var o=Pr,s=n.contextType;"object"==typeof s&&null!==s&&(o=Ei(s)),o=new n(r,o),t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,o.updater=ua,t.stateNode=o,o._reactInternals=t,(o=t.stateNode).props=r,o.state=t.memoizedState,o.refs={},Xi(t),s=n.contextType,o.context="object"==typeof s&&null!==s?Ei(s):Pr,o.state=t.memoizedState,"function"==typeof(s=n.getDerivedStateFromProps)&&(la(t,n,s,r),o.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(s=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),s!==o.state&&ua.enqueueReplaceState(o,o.state,null),ao(t,r,o,i),so(),o.state=t.memoizedState),"function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){o=t.stateNode;var a=t.memoizedProps,c=pa(n,a);o.props=c;var l=o.context,u=n.contextType;s=Pr,"object"==typeof u&&null!==u&&(s=Ei(u));var d=n.getDerivedStateFromProps;u="function"==typeof d||"function"==typeof o.getSnapshotBeforeUpdate,a=t.pendingProps!==a,u||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(a||l!==s)&&ha(t,o,r,s),Qi=!1;var h=t.memoizedState;o.state=h,ao(t,r,o,i),so(),l=t.memoizedState,a||h!==l||Qi?("function"==typeof d&&(la(t,n,d,r),l=t.memoizedState),(c=Qi||da(t,n,c,r,h,l,s))?(u||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4194308)):("function"==typeof o.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),o.props=r,o.state=l,o.context=s,r=c):("function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,eo(e,t),u=pa(n,s=t.memoizedProps),o.props=u,d=t.pendingProps,h=o.context,l=n.contextType,c=Pr,"object"==typeof l&&null!==l&&(c=Ei(l)),(l="function"==typeof(a=n.getDerivedStateFromProps)||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==d||h!==c)&&ha(t,o,r,c),Qi=!1,h=t.memoizedState,o.state=h,ao(t,r,o,i),so();var p=t.memoizedState;s!==d||h!==p||Qi||null!==e&&null!==e.dependencies&&_i(e.dependencies)?("function"==typeof a&&(la(t,n,a,r),p=t.memoizedState),(u=Qi||da(t,n,u,r,h,p,c)||null!==e&&null!==e.dependencies&&_i(e.dependencies))?(l||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,p,c),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,p,c)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),o.props=r,o.state=p,o.context=c,r=u):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),r=!1)}return o=r,Pa(e,t),r=!!(128&t.flags),o||r?(o=t.stateNode,n=r&&"function"!=typeof n.getDerivedStateFromError?null:o.render(),t.flags|=1,null!==e&&r?(t.child=Xs(t,e.child,null,i),t.child=Xs(t,null,n,i)):ka(e,t,n,i),t.memoizedState=o.state,e=t.child):e=za(e,t,i),e}function Da(e,t,n,r){return ui(),t.flags|=256,ka(e,t,n,r),t.child}var Na={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ja(e){return{baseLanes:e,cachePool:Bi()}}function Fa(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=pl),e}function Ua(e,t,n){var i,o=t.pendingProps,s=!1,a=!!(128&t.flags);if((i=a)||(i=(null===e||null!==e.memoizedState)&&!!(2&aa.current)),i&&(s=!0,t.flags&=-129),i=!!(32&t.flags),t.flags&=-33,null===e){if(ni){if(s?ra(t):oa(),ni){var c,l=ti;if(c=l){e:{for(c=l,l=ii;8!==c.nodeType;){if(!l){l=null;break e}if(null===(c=fd(c.nextSibling))){l=null;break e}}l=c}null!==l?(t.memoizedState={dehydrated:l,treeContext:null!==Gr?{id:Wr,overflow:Jr}:null,retryLane:536870912,hydrationErrors:null},(c=Or(18,null,null,0)).stateNode=l,c.return=t,t.child=c,ei=t,ti=null,c=!0):c=!1}c||si(t)}if(null!==(l=t.memoizedState)&&null!==(l=l.dehydrated))return pd(l)?t.lanes=32:t.lanes=536870912,null;sa(t)}return l=o.children,o=o.fallback,s?(oa(),l=Ba({mode:"hidden",children:l},s=t.mode),o=Fr(o,s,n,null),l.return=t,o.return=t,l.sibling=o,t.child=l,(s=t.child).memoizedState=ja(n),s.childLanes=Fa(e,i,n),t.memoizedState=Na,o):(ra(t),Ha(t,l))}if(null!==(c=e.memoizedState)&&null!==(l=c.dehydrated)){if(a)256&t.flags?(ra(t),t.flags&=-257,t=$a(e,t,n)):null!==t.memoizedState?(oa(),t.child=e.child,t.flags|=128,t=null):(oa(),s=o.fallback,l=t.mode,o=Ba({mode:"visible",children:o.children},l),(s=Fr(s,l,n,null)).flags|=2,o.return=t,s.return=t,o.sibling=s,t.child=o,Xs(t,e.child,null,n),(o=t.child).memoizedState=ja(n),o.childLanes=Fa(e,i,n),t.memoizedState=Na,t=s);else if(ra(t),pd(l)){if(i=l.nextSibling&&l.nextSibling.dataset)var u=i.dgst;i=u,(o=Error(r(419))).stack="",o.digest=i,hi({value:o,source:null,stack:null}),t=$a(e,t,n)}else if(Ca||wi(e,t,n,!1),i=0!==(n&e.childLanes),Ca||i){if(null!==(i=el)&&(0!==(o=0!==((o=42&(o=n&-n)?1:ke(o))&(i.suspendedLanes|n))?0:o)&&o!==c.retryLane))throw c.retryLane=o,Ir(e,o),Ol(i,e,o),Ea;"$?"===l.data||ql(),t=$a(e,t,n)}else"$?"===l.data?(t.flags|=192,t.child=e.child,t=null):(e=c.treeContext,ti=fd(l.nextSibling),ei=t,ni=!0,ri=null,ii=!1,null!==e&&(Kr[zr++]=Wr,Kr[zr++]=Jr,Kr[zr++]=Gr,Wr=e.id,Jr=e.overflow,Gr=t),(t=Ha(t,o.children)).flags|=4096);return t}return s?(oa(),s=o.fallback,l=t.mode,u=(c=e.child).sibling,(o=Dr(c,{mode:"hidden",children:o.children})).subtreeFlags=65011712&c.subtreeFlags,null!==u?s=Dr(u,s):(s=Fr(s,l,n,null)).flags|=2,s.return=t,o.return=t,o.sibling=s,t.child=o,o=s,s=t.child,null===(l=e.child.memoizedState)?l=ja(n):(null!==(c=l.cachePool)?(u=xi._currentValue,c=c.parent!==u?{parent:u,pool:u}:c):c=Bi(),l={baseLanes:l.baseLanes|n,cachePool:c}),s.memoizedState=l,s.childLanes=Fa(e,i,n),t.memoizedState=Na,o):(ra(t),e=(n=e.child).sibling,(n=Dr(n,{mode:"visible",children:o.children})).return=t,n.sibling=null,null!==e&&(null===(i=t.deletions)?(t.deletions=[e],t.flags|=16):i.push(e)),t.child=n,t.memoizedState=null,n)}function Ha(e,t){return(t=Ba({mode:"visible",children:t},e.mode)).return=e,e.child=t}function Ba(e,t){return(e=Or(22,e,null,t)).lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function $a(e,t,n){return Xs(t,e.child,null,n),(e=Ha(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Va(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),yi(e.return,t,n)}function qa(e,t,n,r,i){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i)}function Ka(e,t,n){var r=t.pendingProps,i=r.revealOrder,o=r.tail;if(ka(e,t,r.children,n),2&(r=aa.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Va(e,n,t);else if(19===e.tag)Va(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch(F(aa,r),i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===ca(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),qa(t,!1,i,n,o);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===ca(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}qa(t,!0,n,null,o);break;case"together":qa(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function za(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),ul|=t.lanes,0===(n&t.childLanes)){if(null===e)return null;if(wi(e,t,n,!1),0===(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(r(153));if(null!==t.child){for(n=Dr(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Dr(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Ga(e,t){return 0!==(e.lanes&t)||!(null===(e=e.dependencies)||!_i(e))}function Wa(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)Ca=!0;else{if(!(Ga(e,n)||128&t.flags))return Ca=!1,function(e,t,n){switch(t.tag){case 3:V(t,t.stateNode.containerInfo),gi(0,xi,e.memoizedState.cache),ui();break;case 27:case 5:K(t);break;case 4:V(t,t.stateNode.containerInfo);break;case 10:gi(0,t.type,t.memoizedProps.value);break;case 13:var r=t.memoizedState;if(null!==r)return null!==r.dehydrated?(ra(t),t.flags|=128,null):0!==(n&t.child.childLanes)?Ua(e,t,n):(ra(t),null!==(e=za(e,t,n))?e.sibling:null);ra(t);break;case 19:var i=!!(128&e.flags);if((r=0!==(n&t.childLanes))||(wi(e,t,n,!1),r=0!==(n&t.childLanes)),i){if(r)return Ka(e,t,n);t.flags|=128}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null,i.lastEffect=null),F(aa,aa.current),r)break;return null;case 22:case 23:return t.lanes=0,xa(e,t,n);case 24:gi(0,xi,e.memoizedState.cache)}return za(e,t,n)}(e,t,n);Ca=!!(131072&e.flags)}else Ca=!1,ni&&1048576&t.flags&&Zr(t,qr,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var i=t.elementType,o=i._init;if(i=o(i._payload),t.type=i,"function"!=typeof i){if(null!=i){if((o=i.$$typeof)===b){t.tag=11,t=Ta(null,t,i,e,n);break e}if(o===S){t.tag=14,t=Ra(null,t,i,e,n);break e}}throw t=x(i)||i,Error(r(306,t,""))}Ar(i)?(e=pa(i,e),t.tag=1,t=Aa(null,t,i,e,n)):(t.tag=0,t=Ma(null,t,i,e,n))}return t;case 0:return Ma(e,t,t.type,t.pendingProps,n);case 1:return Aa(e,t,i=t.type,o=pa(i,t.pendingProps),n);case 3:e:{if(V(t,t.stateNode.containerInfo),null===e)throw Error(r(387));i=t.pendingProps;var s=t.memoizedState;o=s.element,eo(e,t),ao(t,i,null,n);var a=t.memoizedState;if(i=a.cache,gi(0,xi,i),i!==s.cache&&bi(t,[xi],n,!0),so(),i=a.element,s.isDehydrated){if(s={element:i,isDehydrated:!1,cache:a.cache},t.updateQueue.baseState=s,t.memoizedState=s,256&t.flags){t=Da(e,t,i,n);break e}if(i!==o){hi(o=_r(Error(r(424)),t)),t=Da(e,t,i,n);break e}if(9===(e=t.stateNode.containerInfo).nodeType)e=e.body;else e="HTML"===e.nodeName?e.ownerDocument.body:e;for(ti=fd(e.firstChild),ei=t,ni=!0,ri=null,ii=!0,n=ea(t,null,i,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ui(),i===o){t=za(e,t,n);break e}ka(e,t,i,n)}t=t.child}return t;case 26:return Pa(e,t),null===e?(n=kd(t.type,null,t.pendingProps,null))?t.memoizedState=n:ni||(n=t.type,e=t.pendingProps,(i=ed(B.current).createElement(n))[xe]=t,i[Le]=e,Zu(i,n,e),$e(i),t.stateNode=i):t.memoizedState=kd(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return K(t),null===e&&ni&&(i=t.stateNode=vd(t.type,t.pendingProps,B.current),ei=t,ii=!0,o=ti,ud(t.type)?(md=o,ti=fd(i.firstChild)):ti=o),ka(e,t,t.pendingProps.children,n),Pa(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&ni&&((o=i=ti)&&(i=function(e,t,n,r){for(;1===e.nodeType;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[Ne])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(o=e.getAttribute("rel"))&&e.hasAttribute("data-precedence"))break;if(o!==i.rel||e.getAttribute("href")!==(null==i.href||""===i.href?null:i.href)||e.getAttribute("crossorigin")!==(null==i.crossOrigin?null:i.crossOrigin)||e.getAttribute("title")!==(null==i.title?null:i.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((o=e.getAttribute("src"))!==(null==i.src?null:i.src)||e.getAttribute("type")!==(null==i.type?null:i.type)||e.getAttribute("crossorigin")!==(null==i.crossOrigin?null:i.crossOrigin))&&o&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var o=null==i.name?null:""+i.name;if("hidden"===i.type&&e.getAttribute("name")===o)return e}if(null===(e=fd(e.nextSibling)))break}return null}(i,t.type,t.pendingProps,ii),null!==i?(t.stateNode=i,ei=t,ti=fd(i.firstChild),ii=!1,o=!0):o=!1),o||si(t)),K(t),o=t.type,s=t.pendingProps,a=null!==e?e.memoizedProps:null,i=s.children,rd(o,s)?i=null:null!==a&&rd(o,a)&&(t.flags|=32),null!==t.memoizedState&&(o=xo(e,t,Mo,null,null,n),Kd._currentValue=o),Pa(e,t),ka(e,t,i,n),t.child;case 6:return null===e&&ni&&((e=n=ti)&&(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;)if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n||null===(e=fd(e.nextSibling)))return null;return e}(n,t.pendingProps,ii),null!==n?(t.stateNode=n,ei=t,ti=null,e=!0):e=!1),e||si(t)),null;case 13:return Ua(e,t,n);case 4:return V(t,t.stateNode.containerInfo),i=t.pendingProps,null===e?t.child=Xs(t,null,i,n):ka(e,t,i,n),t.child;case 11:return Ta(e,t,t.type,t.pendingProps,n);case 7:return ka(e,t,t.pendingProps,n),t.child;case 8:case 12:return ka(e,t,t.pendingProps.children,n),t.child;case 10:return i=t.pendingProps,gi(0,t.type,i.value),ka(e,t,i.children,n),t.child;case 9:return o=t.type._context,i=t.pendingProps.children,Si(t),i=i(o=Ei(o)),t.flags|=1,ka(e,t,i,n),t.child;case 14:return Ra(e,t,t.type,t.pendingProps,n);case 15:return Ia(e,t,t.type,t.pendingProps,n);case 19:return Ka(e,t,n);case 31:return i=t.pendingProps,n=t.mode,i={mode:i.mode,children:i.children},null===e?((n=Ba(i,n)).ref=t.ref,t.child=n,n.return=t,t=n):((n=Dr(e.child,i)).ref=t.ref,t.child=n,n.return=t,t=n),t;case 22:return xa(e,t,n);case 24:return Si(t),i=Ei(xi),null===e?(null===(o=Ui())&&(o=el,s=Li(),o.pooledCache=s,s.refCount++,null!==s&&(o.pooledCacheLanes|=n),o=s),t.memoizedState={parent:i,cache:o},Xi(t),gi(0,xi,o)):(0!==(e.lanes&n)&&(eo(e,t),ao(t,null,null,n),so()),o=e.memoizedState,s=t.memoizedState,o.parent!==i?(o={parent:i,cache:i},t.memoizedState=o,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=o),gi(0,xi,i)):(i=s.cache,gi(0,xi,i),i!==o.cache&&bi(t,[xi],n,!0))),ka(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(r(156,t.tag))}function Ja(e){e.flags|=4}function Ya(e,t){if("stylesheet"!==t.type||4&t.state.loading)e.flags&=-16777217;else if(e.flags|=16777216,!Fd(t)){if(null!==(t=ta.current)&&((4194048&nl)===nl?null!==na:(62914560&nl)!==nl&&!(536870912&nl)||t!==na))throw Ji=Ki,Vi;e.flags|=8192}}function Za(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?we():536870912,e.lanes|=t,fl|=t)}function Qa(e,t){if(!ni)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Xa(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;null!==i;)n|=i.lanes|i.childLanes,r|=65011712&i.subtreeFlags,r|=65011712&i.flags,i.return=e,i=i.sibling;else for(i=e.child;null!==i;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function ec(e,t,n){var i=t.pendingProps;switch(Xr(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:return Xa(t),null;case 3:return n=t.stateNode,i=null,null!==e&&(i=e.memoizedState.cache),t.memoizedState.cache!==i&&(t.flags|=2048),vi(xi),q(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(null===e||null===e.child)&&(li(t)?Ja(t):null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,di())),Xa(t),null;case 26:return n=t.memoizedState,null===e?(Ja(t),null!==n?(Xa(t),Ya(t,n)):(Xa(t),t.flags&=-16777217)):n?n!==e.memoizedState?(Ja(t),Xa(t),Ya(t,n)):(Xa(t),t.flags&=-16777217):(e.memoizedProps!==i&&Ja(t),Xa(t),t.flags&=-16777217),null;case 27:z(t),n=B.current;var o=t.type;if(null!==e&&null!=t.stateNode)e.memoizedProps!==i&&Ja(t);else{if(!i){if(null===t.stateNode)throw Error(r(166));return Xa(t),null}e=U.current,li(t)?ai(t):(e=vd(o,i,n),t.stateNode=e,Ja(t))}return Xa(t),null;case 5:if(z(t),n=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==i&&Ja(t);else{if(!i){if(null===t.stateNode)throw Error(r(166));return Xa(t),null}if(e=U.current,li(t))ai(t);else{switch(o=ed(B.current),e){case 1:e=o.createElementNS("http://www.w3.org/2000/svg",n);break;case 2:e=o.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;default:switch(n){case"svg":e=o.createElementNS("http://www.w3.org/2000/svg",n);break;case"math":e=o.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;case"script":(e=o.createElement("div")).innerHTML="