{"version":3,"file":"js/933.123f97d7.js","mappings":"wSAEO,MAAMA,UAA+BC,EAAAA,GAArCC,cAAA,SAAAC,WACE,KAAAC,KAAA,0BAGF,MAAMC,UAAkCJ,EAAAA,GAAxCC,cAAA,SAAAC,WACE,KAAAC,KAAA,0BCNT,MAAME,EAAqC,CACvCC,oCAAqC,sCACrCC,gCAAiC,kCACjCC,8BAA+B,gCAC/BC,qBAAsB,uBACtBC,sBAAuB,wBACvBC,uBAAwB,0BAE5B,MAAMC,UAAuCC,MACzCZ,eAAea,GACX,MAAOC,EAAMC,EAASC,GAAQH,EAC9BI,MAAMF,GACNG,KAAKC,KAAOL,EACZI,KAAKF,KAAOA,EACZE,KAAKhB,KAAO,gCACf,EAYL,MAAMkB,UAA+CR,MACjDZ,eAAea,GACX,MAAOQ,EAAkBP,EAAMC,EAASC,GAAQH,EAChDI,MAAMF,GACNG,KAAKC,KAAOL,EACZI,KAAKF,KAAOA,EACZE,KAAKG,iBAAmBA,EACxBH,KAAKhB,KAAO,wCACf,EAkBL,SAASoB,EAAUC,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAUI,GAAWA,EAAQD,EAAO,GAAM,CAC5G,OAAO,IAAKH,IAAMA,EAAIK,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAUJ,GAAS,IAAMK,EAAKP,EAAUQ,KAAKN,GAAQ,OAAUO,GAAKJ,EAAOI,EAAC,CAAM,CAC3F,SAASC,EAASR,GAAS,IAAMK,EAAKP,EAAU,SAASE,GAAU,OAAQO,GAAKJ,EAAOI,EAAC,CAAM,CAC9F,SAASF,EAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOT,OAASD,EAAMU,EAAOT,OAAOW,KAAKP,EAAWI,EAAY,CAC9GH,GAAMP,EAAYA,EAAUc,MAAMjB,EAASC,GAAc,KAAKU,OACtE,GACA,CAEA,SAASO,EAAeC,EAAeC,GACnC,OAAOrB,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAM0B,QAAwBC,OAAOC,OAAOC,UAAU,MAAOL,GACvDM,QAAwBH,OAAOC,OAAOG,KAAK,CAAEC,KAAM,UAAWhD,KAAM,SAAWyC,EAA8BC,GAC7GO,EAAW,IAAIC,WAAWR,EAAgBS,WAAaL,EAAgBK,YAG7E,OAFAF,EAASG,IAAI,IAAIF,WAAWR,GAAkB,GAC9CO,EAASG,IAAI,IAAIF,WAAWJ,GAAkBJ,EAAgBS,YACvDF,CACf,GACA,CAEA,MAAMI,EAAwB,EAC9B,SAASC,EAA2BC,GAChC,GAAIA,GAAkB,WAClB,MAAM,IAAI7C,MAAM,+EAEpB,MAAM8C,EAAY,IAAIC,YAAYJ,GAC5BK,EAAO,IAAIC,SAASH,GAE1B,OADAE,EAAKE,UAAU,EAAGL,GAAmC,GAC9C,IAAIL,WAAWM,EAC1B,CAEA,SAASK,IACL,OAAOzC,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,aAAa2B,OAAOC,OAAOkB,YAAY,CACnC9D,KAAM,QACN+D,WAAY,UACb,EAAyB,CAAC,QACrC,GACA,CAEA,SAASC,IACL,OAAO5C,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,aAAa2B,OAAOC,OAAOkB,YAAY,CACnC9D,KAAM,OACN+D,WAAY,UACb,EAAyB,CAAC,YAAa,cAClD,GACA,CAEA,MAAME,EAA8B,GACpC,SAASC,EAAsBC,EAAgBC,GAC3C,OAAOhD,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAMqD,EAAYC,KAAKC,UAAUJ,GAC3BK,EAAuBlB,EAA2Ba,EAAeM,IACjEC,EAAuB,IAAIxB,WAAWe,GAC5CtB,OAAOgC,gBAAgBD,GACvB,MAAME,QAAmBjC,OAAOC,OAAOiC,QAAQC,EAAmBN,EAAsBE,GAAuBN,GAAc,IAAIW,aAAcC,OAAOX,IAChJpB,EAAW,IAAIC,WAAWsB,EAAqBrB,WAAauB,EAAqBvB,WAAayB,EAAWzB,YAI/G,OAHAF,EAASG,IAAI,IAAIF,WAAWsB,GAAuB,GACnDvB,EAASG,IAAI,IAAIF,WAAWwB,GAAuBF,EAAqBrB,YACxEF,EAASG,IAAI,IAAIF,WAAW0B,GAAaJ,EAAqBrB,WAAauB,EAAqBvB,YACzFF,CACf,GACA,CACA,SAASgC,EAAsBpE,EAASuD,GACpC,OAAOhD,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAMwD,EAAuB3D,EAAQqE,MAAM,EAAG7B,GACxCqB,EAAuB7D,EAAQqE,MAAM7B,EAAuBA,EAAwBY,GACpFW,EAAa/D,EAAQqE,MAAM7B,EAAwBY,GACnDkB,QAAwBxC,OAAOC,OAAOwC,QAAQN,EAAmBN,EAAsBE,GAAuBN,EAAcQ,GAC5HP,EAAYgB,IAAiBC,OAAOH,GACpChB,EAAiBG,KAAKiB,MAAMlB,GAClC,GAAImB,OAAOC,eAAeC,KAAKvB,EAAgB,SAC3C,MAAM,IAAIjD,EAAuCiD,EAAeM,GAAIN,EAAewB,MAAM1E,KAAMkD,EAAewB,MAAM9E,SAExH,OAAOsD,CACf,GACA,CACA,SAASW,EAAmBvB,EAAgBmB,GACxC,MAAO,CACHkB,eAAgBrC,EAChBsC,GAAInB,EACJ1E,KAAM,UACN8F,UAAW,IAEnB,CACA,IAAIC,EACJ,SAASV,IAIL,YAHqB,IAAjBU,IACAA,EAAe,IAAIC,YAAY,UAE5BD,CACX,CAEA,SAASE,EAAcC,EACvBC,EAAsBC,GAClB,OAAOhF,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAOqF,EAA4BC,SAAyB1E,QAAQ2E,IAAI,CACpE5D,OAAOC,OAAOC,UAAU,MAAOsD,GAC/BxD,OAAOC,OAAO4D,UAAU,MAAON,EAAe,CAAElG,KAAM,OAAQ+D,WAAY,UAAW,EAAyB,MAE5GK,QAAqBzB,OAAOC,OAAO6D,WAAW,CAAEzG,KAAM,OAAQ0G,OAAQJ,GAAmBF,EAAgB,KACzGO,QAAsBhE,OAAOC,OAAO4D,UAAU,MAAOpC,EAAc,QAAQ,EAAyB,CAAC,cACrGwC,QAA0BjE,OAAOC,OAAOiE,UAAU,CACpD7G,KAAM,OACNgD,KAAM,UACN8D,KAAM,IAAI5D,WAAWmD,GACrBU,KAAM,IAAI7D,YACXyD,EAAe,CAAE3G,KAAM,UAAWgH,OAAQ,MAAO,EAAyB,CAAC,UAAW,YACzF,OAAOJ,CACf,GACA,CAEA,SAASK,IACL,OAAOC,EAAsB,MAAQC,KAAKC,MAAmB,MAAbD,KAAKE,UACzD,CACA,SAASH,EAAsBI,GAC3B,GAAIA,EAAO,OAASA,EAAO,MACvB,MAAM,IAAI7G,EAA+BP,EAAmCC,oCAAqC,4DAA4DmH,WAAe,CAAEA,SAElM,OAAOA,CACX,CAGA,SAASC,EAA0BC,GAC/B,IAAIC,EAAS,GACb,MAAMC,EAAQ,IAAIxE,WAAWsE,GACvBG,EAAMD,EAAMvE,WAClB,IAAK,IAAIyE,EAAK,EAAGA,EAAKD,EAAKC,IACvBH,GAAUI,OAAOC,aAAaJ,EAAME,IAExC,OAAOG,OAAOC,KAAKP,EACvB,CAEA,SAASQ,EAAyCC,GAC9C,OAAOA,EAA0BC,QAAQ,UAAWC,IAAA,CAChD,IAAK,IACL,IAAK,IACL,IAAK,KACPA,KACN,CAEA,MAAMC,EAAc,gBACpB,SAASC,EAAaC,GAClB,OAAQA,EAEHJ,QAAQ,eAAgB,IAExBK,MAAM,IACf,CACA,SAASC,EAAaC,EAAgBC,GAClC,IAAIC,EAAU,KACd,GAAID,EAAe,CACf,IACIC,EAAU,IAAIC,IAAIF,EACrB,OACMG,GAAO,CACd,GAA6E,YAA5D,OAAZF,QAAgC,IAAZA,OAAqB,EAASA,EAAQG,UAC3D,MAAM,IAAItI,EAA+BP,EAAmCE,gCAAiC,2DAEpH,CACDwI,IAAYA,EAAU,IAAIC,IAAI,GAAGR,QACjC,MAAMW,EAAWN,EAAeO,WAAW,KAEnCP,EAEA,IAAIJ,EAAaM,EAAQI,aAAcV,EAAaI,IAAiBQ,KAAK,KAClF,OAAO,IAAIL,IAAIG,EAAUJ,EAC7B,CACA,SAASO,EAA6BhD,EAAsBiD,EAAcC,GACtE,OAAOjI,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAMsI,EAAkBpC,EAAsBkC,GACxCG,QAAoB5G,OAAOC,OAAOC,UAAU,MAAOsD,GACnDqD,EAAajC,EAA0BgC,GACvCE,EAAMhB,EAAa,qBAAsBY,GAG/C,OAFAI,EAAIC,aAAatG,IAAI,cAAe6E,EAAyCuB,IAC7EC,EAAIC,aAAatG,IAAI,OAAQ,GAAGkG,KACzBG,CACf,GACA,CAGA,MAAME,EAAU,CACZC,QAAS,EACTC,MAAO,GAEX,SAASC,EAAkBC,GACvB,OAAOA,CACX,CACA,SAASC,IACL,OAAoD,IAA7CC,UAAUC,UAAUC,QAAQ,YAAqBR,EAAQC,QAAUD,EAAQE,KACtF,CACA,SAASO,IAIL,OAAO,IAAIxI,SAAQ,CAACD,EAASE,KACzB,SAASwI,IACLC,aAAaC,GACbxC,OAAOyC,oBAAoB,OAAQC,EACtC,CACD,SAASA,IACLJ,IACA1I,GACH,CACDoG,OAAO2C,iBAAiB,OAAQD,GAChC,MAAMF,EAAYI,YAAW,KACzBN,IACAxI,GAAA,GACD,IAAK,GAEhB,CACA,IAAI+I,EAAS,KACb,SAASC,EAA4BpB,GACnB,MAAVmB,IACAA,EAASE,SAASC,cAAc,UAChCH,EAAOI,MAAMC,QAAU,OACvBH,SAASI,KAAKC,YAAYP,IAG9BA,EAAOQ,cAAcC,SAASC,KAAO7B,EAAI8B,UAC7C,CACA,SAASC,EAAarF,EAAsBkD,GACxC,OAAOjI,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAMyK,EAAwBxE,IACxByE,QAAuBvC,EAA6BhD,EAAsBsF,EAAuBpC,GACvG,GAAgC,WAA5BqC,EAAe3C,SAIfhB,OAAOsD,SAASM,OAAOD,QAIvB,IACI,MAAME,EAAU5B,IAChB,OAAQ4B,GAAA,KACCjC,EAAQC,QAETiB,EAA4Ba,GAE5B,WACC/B,EAAQE,MAAO,CAChB,MAAMgC,EAAmBzB,IACzBrC,OAAOsD,SAASM,OAAOD,SACjBG,EACN,KACH,SAEG/B,EAAkB8B,GAE7B,OACM3J,GACH,MAAM,IAAIxB,EAA+BP,EAAmCM,uBAAwB,sEACvG,CAEL,OAAOiL,CACf,GACA,CAEA,MAAMK,EAA8B,CAWhCC,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC1DC,UAAW,KAETC,EAAqB,oCAC3B,SAASC,IACL,GAAsB,qBAAXnE,SAAqD,IAA3BA,OAAOoE,gBACxC,MAAM,IAAI1L,EAA+BP,EAAmCG,8BAA+B,iFAEnH,CACA,SAAS+L,EAAgCC,GACrC,IAAI5C,EACJ,IACIA,EAAM,IAAIZ,IAAIwD,EACjB,OACMvD,GACH,MAAM,IAAIrI,EAA+BP,EAAmCE,gCAAiC,sCAChH,CACD,GAAqB,WAAjBqJ,EAAIV,SACJ,MAAM,IAAItI,EAA+BP,EAAmCE,gCAAiC,2DAErH,CACA,SAASkM,EAA+B9I,GACpC,MAAME,EAAO,IAAIC,SAASH,GAC1B,OAAOE,EAAK6I,UAAU,GAAsB,EAChD,CACA,SAASC,EAASC,EAAUC,GACxB,OAAOtL,EAAUJ,UAAM,OAAQ,GAAQ,YACnCkL,IACA,MAAMS,QAA2B9I,IAC3B+I,QAAoBpB,EAAamB,EAAmBE,UAAsB,OAAXH,QAA8B,IAAXA,OAAoB,EAASA,EAAOI,SACtHC,EAAe,kBAAkBH,kBACvC,IAAII,EACJ,MAAMC,EAAA,MACF,MAAMC,EAAW,IAAIpB,EAA4BC,sBACjD,MAAO,IAAOmB,EAASlG,OAAS,EAAIkG,EAASC,QAAUD,EAAS,EAC5E,EAHc,GAIN,IAAIE,EAAuB,EACvBC,EAAiC,EACjCC,EAAQ,CAAEC,OAAQ,gBACtB,OAAO,IAAI3L,SAAQ,CAACD,EAASE,KACzB,IAAI2L,EAEJ,MAAMC,EAA0B,CAAC,EAC3BC,EAAaA,IAAMtM,EAAUJ,UAAM,OAAQ,GAAQ,YACrD,GAAqB,eAAjBsM,EAAMC,OAGN,YAFAI,QAAQC,KAAK,wFACAN,EAAMC,aAGvB,MAAQZ,mBAAAkB,GAAuBP,EAC/BE,EAAOhD,oBAAoB,OAAQkD,GACnC,MAAMI,QAAoB9J,IAC1BwJ,EAAOO,WAAWxL,EAAeuL,EAAYjB,UAAWgB,EAAmBG,aAC3EV,EAAQ,CACJC,OAAQ,iBACRpH,qBAAsB0H,EAAmBhB,UACzCzG,eAAgB0H,EAAYE,WAEhD,IACkBC,EAAeC,IACbA,EAAIC,SACJb,EAAQ,CAAEC,OAAQ,gBAGlB1L,EAAO,IAAIpB,EAA+BP,EAAmCI,qBAAsB,4CAA4C4N,EAAIjN,SAASiN,EAAIE,WAAY,CAAEC,WAAYH,KAE9LI,GAAA,EAEEC,EAAeC,GAASpN,EAAUJ,UAAM,OAAQ,GAAQ,YAC1DsN,IACIG,KAAKC,MAAQ1B,GAAuBlB,EAA4BE,UAChEnK,EAAO,IAAIpB,EAA+BP,EAAmCK,sBAAuB,qDAAqDqM,cAGnJ,IAAIhL,SAAS+M,IACf,MAAMC,EAAe3B,IACrB4B,EAAqB9G,OAAO4C,WAAWgE,EAASC,EAAa,IAEjEE,IAEpB,IACkBC,EAAiBb,GAAQ9M,EAAUJ,UAAM,OAAQ,GAAQ,YAC3D,MAAMgO,QAAuBd,EAAIpN,KAAKmO,cACtC,OAAQ3B,EAAMC,QAAA,IACL,YACD,IACI,MAAM/I,EAAuBwK,EAAe9J,MAAM,EAAG7B,GAC/CE,EAAiB+I,EAA+B9H,GACtD,GAAIjB,IAAoB8J,EAAiC,EACrD,MAAM,IAAI3M,MAAM,iDAEpB2M,EAAiC9J,EACjC,MAAMY,QAAuBc,EAAsB+J,EAAgB1B,EAAMlJ,cACnE8K,EAAkBzB,EAAwBtJ,EAAeM,WACxDgJ,EAAwBtJ,EAAeM,IAC9CyK,EAAgBvN,QAAQwC,EAAehC,OAC1C,OACMF,GACH,KAAIA,aAAaf,GAMb,MAAMe,EAN+C,CACrD,MAAMiN,EAAkBzB,EAAwBxL,EAAEd,yBAC3CsM,EAAwBxL,EAAEd,kBACjC+N,EAAgBrN,OAAOI,EAC1B,CAIJ,CACD,UACC,iBAAkB,CACnB,MAAMmC,QAAqB6B,EAAc+I,EAAgB1B,EAAMnH,qBAAsBmH,EAAMlH,gBAC3FkH,EAAQ,CAAEC,OAAQ,YAAanJ,gBAC/B,MAAM+K,EAAS,IAAIC,MAAM,CAAC,EAAG,CACzBC,IAAIC,EAAQC,GACR,GAAiB,MAAbD,EAAOC,GAAY,CACnB,MAAMC,EAASD,EACVhE,WACApD,QAAQ,UAAWsH,GAAW,IAAIA,EAAOC,kBACzCA,cACLJ,EAAOC,GAAK,SAAUI,GAClB,OAAOvO,EAAUJ,UAAM,OAAQ,GAAQ,YACnC,MAAMyD,EAAK2I,IAOX,OANAI,EAAOO,WAAW7J,EAAsB,CACpCO,KACAmL,QAAS,MACTJ,SACAG,OAAmB,OAAXA,QAA8B,IAAXA,EAAoBA,EAAS,CAAE,GAC3DvL,IACI,IAAIxC,SAAQ,CAAC+M,EAASkB,KACzBpC,EAAwBhJ,GAAM,CAC1B9C,QAAQQ,GACJ,OAAQoN,GAAA,IACC,gBACA,cAAe,CAChB,MAAM,gBAAEO,GAAoB3N,EAC5B,GAAuB,MAAnB2N,EACA,IACI1D,EAAgC0D,EACnC,OACM7N,GAEH,YADA4N,EAAO5N,EAEV,CAEL,KACH,EAEL0M,EAAQxM,EACX,EACDN,OAAAgO,EACpD,GAEA,GACA,CACiC,CACD,OAAOP,EAAOC,EACjB,EACDQ,iBACI,OAAO,CACV,EACDC,iBACI,OAAO,CACV,IAEL,IACIrO,QAAc8K,EAAS0C,GAC1B,OACMlN,GACHJ,EAAOI,EACV,SAEGqM,IACAd,EAAOyC,OACV,CACD,KACH,EAErB,IACY,IAAI3B,EACAO,EACJ,MAAMC,EAA0BA,KACxBR,GACAA,IAEJhB,EAAQ,CAAEC,OAAQ,aAAcZ,2BACJ,IAAxBK,IACAA,EAAsByB,KAAKC,OAE/BlB,EAAS,IAAI0C,UAAUnD,EAAc,CAACd,IACtCuB,EAAO9C,iBAAiB,OAAQgD,GAChCF,EAAO9C,iBAAiB,QAASuD,GACjCT,EAAO9C,iBAAiB,QAAS6D,GACjCf,EAAO9C,iBAAiB,UAAWqE,GACnCT,EAAgBA,KACZvG,OAAOuC,aAAauE,GACpBrB,EAAOhD,oBAAoB,OAAQkD,GACnCF,EAAOhD,oBAAoB,QAASyD,GACpCT,EAAOhD,oBAAoB,QAAS+D,GACpCf,EAAOhD,oBAAoB,UAAWuE,EAAc,CACxE,EAEYD,GAAA,GAEZ,GACA,CC3gBA,SAASqB,EAAMC,GACb,GAAIA,EAASpJ,QAAU,IAAO,MAAM,IAAIqJ,UAAU,qBAElD,IADA,IAAIC,EAAW,IAAIpN,WAAW,KACrBqN,EAAI,EAAGA,EAAID,EAAStJ,OAAQuJ,IACnCD,EAASC,GAAK,IAEhB,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAASpJ,OAAQwJ,IAAK,CACxC,IAAIzG,EAAIqG,EAASK,OAAOD,GACpBE,EAAK3G,EAAE4G,WAAW,GACtB,GAAqB,MAAjBL,EAASI,GAAe,MAAM,IAAIL,UAAUtG,EAAI,iBACpDuG,EAASI,GAAMF,CAChB,CACD,IAAII,EAAOR,EAASpJ,OAChB6J,EAAST,EAASK,OAAO,GACzBK,EAAS3J,KAAK4J,IAAIH,GAAQzJ,KAAK4J,IAAI,KACnCC,EAAU7J,KAAK4J,IAAI,KAAO5J,KAAK4J,IAAIH,GACvC,SAAS5L,EAAQiM,GAOf,GANIA,aAAkB/N,aACXO,YAAYyN,OAAOD,GAC5BA,EAAS,IAAI/N,WAAW+N,EAAOE,OAAQF,EAAOG,WAAYH,EAAO9N,YACxDkO,MAAMC,QAAQL,KACvBA,EAAS/N,WAAWqO,KAAKN,OAErBA,aAAkB/N,YAAe,MAAM,IAAImN,UAAU,uBAC3D,GAAsB,IAAlBY,EAAOjK,OAAgB,MAAO,GAElC,IAAIwK,EAAS,EACTxK,EAAS,EACTyK,EAAS,EACTC,EAAOT,EAAOjK,OAClB,MAAOyK,IAAWC,GAA2B,IAAnBT,EAAOQ,GAC/BA,IACAD,IAGF,IAAIG,GAASD,EAAOD,GAAUT,EAAU,IAAO,EAC3CY,EAAM,IAAI1O,WAAWyO,GAEzB,MAAOF,IAAWC,EAAM,CAItB,IAHA,IAAIG,EAAQZ,EAAOQ,GAEfK,EAAI,EACCC,EAAMJ,EAAO,GAAc,IAAVE,GAAeC,EAAI9K,KAAqB,IAAT+K,EAAaA,IAAOD,IAC3ED,GAAU,IAAMD,EAAIG,KAAU,EAC9BH,EAAIG,GAAQF,EAAQjB,IAAU,EAC9BiB,EAASA,EAAQjB,IAAU,EAE7B,GAAc,IAAViB,EAAe,MAAM,IAAInR,MAAM,kBACnCsG,EAAS8K,EACTL,GACD,CAED,IAAIO,EAAML,EAAO3K,EACjB,MAAOgL,IAAQL,GAAqB,IAAbC,EAAII,GACzBA,IAIF,IADA,IAAIC,EAAMpB,EAAOqB,OAAOV,GACjBQ,EAAML,IAAQK,EAAOC,GAAO7B,EAASK,OAAOmB,EAAII,IACvD,OAAOC,CACR,CACD,SAASE,EAAclB,GACrB,GAAsB,kBAAXA,EAAuB,MAAM,IAAIZ,UAAU,mBACtD,GAAsB,IAAlBY,EAAOjK,OAAgB,OAAO,IAAI9D,WACtC,IAAIkP,EAAM,EAENZ,EAAS,EACTxK,EAAS,EACb,MAAOiK,EAAOmB,KAASvB,EACrBW,IACAY,IAGF,IAAIT,GAAUV,EAAOjK,OAASoL,GAAOtB,EAAU,IAAO,EAClDuB,EAAO,IAAInP,WAAWyO,GAE1B,MAAOV,EAAOmB,GAAM,CAElB,IAAIP,EAAQvB,EAASW,EAAON,WAAWyB,IAEvC,GAAc,MAAVP,EAAiB,OAErB,IADA,IAAIC,EAAI,EACCQ,EAAMX,EAAO,GAAc,IAAVE,GAAeC,EAAI9K,KAAqB,IAATsL,EAAaA,IAAOR,IAC3ED,GAAUjB,EAAOyB,EAAKC,KAAU,EAChCD,EAAKC,GAAQT,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE5B,GAAc,IAAVA,EAAe,MAAM,IAAInR,MAAM,kBACnCsG,EAAS8K,EACTM,GACD,CAED,IAAIG,EAAMZ,EAAO3K,EACjB,MAAOuL,IAAQZ,GAAsB,IAAdU,EAAKE,GAC1BA,IAEF,IAAIC,EAAM,IAAItP,WAAWsO,GAAUG,EAAOY,IACtCE,EAAIjB,EACR,MAAOe,IAAQZ,EACba,EAAIC,KAAOJ,EAAKE,KAElB,OAAOC,CACR,CACD,SAASlN,EAAQoN,GACf,IAAIlL,EAAS2K,EAAaO,GAC1B,GAAIlL,EAAU,OAAOA,EACrB,MAAM,IAAI9G,MAAM,WAAakQ,EAAO,aACrC,CACD,MAAO,CACL5L,SACAmN,eACA7M,SAEJ,CACA,IAAAqN,EAAiBxC,ECxHjB,MAAMyC,EAAQD,EACRE,EAAW,6D,IAEjBC,EAAiBF,EAAMC,GCgBvB,SAASE,GAAOC,EAAG/Q,GACf,IAAIgR,EAAI,CAAC,EACT,IAAK,IAAI1D,KAAKyD,EAAOxN,OAAO0N,UAAUzN,eAAeC,KAAKsN,EAAGzD,IAAMtN,EAAEkI,QAAQoF,GAAK,IAC9E0D,EAAE1D,GAAKyD,EAAEzD,IACb,GAAS,MAALyD,GAAqD,oBAAjCxN,OAAO2N,sBACtB,KAAI3C,EAAI,EAAb,IAAgBjB,EAAI/J,OAAO2N,sBAAsBH,GAAIxC,EAAIjB,EAAEvI,OAAQwJ,IAC3DvO,EAAEkI,QAAQoF,EAAEiB,IAAM,GAAKhL,OAAO0N,UAAUE,qBAAqB1N,KAAKsN,EAAGzD,EAAEiB,MACvEyC,EAAE1D,EAAEiB,IAAMwC,EAAEzD,EAAEiB,IAF4B,CAItD,OAAOyC,CACX,CAEA,SAASI,GAAUhS,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAUI,GAAWA,EAAQD,EAAO,GAAM,CAC5G,OAAO,IAAKH,IAAMA,EAAIK,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAUJ,GAAS,IAAMK,EAAKP,EAAUQ,KAAKN,GAAQ,OAAUO,GAAKJ,EAAOI,EAAC,CAAM,CAC3F,SAASC,EAASR,GAAS,IAAMK,EAAKP,EAAU,SAASE,GAAU,OAAQO,GAAKJ,EAAOI,EAAC,CAAM,CAC9F,SAASF,EAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOT,OAASD,EAAMU,EAAOT,OAAOW,KAAKP,EAAWI,EAAY,CAC9GH,GAAMP,EAAYA,EAAUc,MAAMjB,EAASC,GAAc,KAAKU,OACtE,GACA,CAEA,SAASsR,GAAe9P,GACpB,OAAOuE,OAAOC,KAAKH,OAAOC,aAAapC,KAAK,QAASlC,GACzD,CACA,SAAS+P,GAAaC,GAClB,OAAO,IAAItQ,WAAW6E,OACjB0L,KAAKD,GACLhL,MAAM,IACNkL,KAAKC,GAAMA,EAAEhD,WAAW,KACjC,CAEA,SAASiD,GAA0BC,GAC/B,MAAMC,EAAwB,YAAaD,EACrCA,EAAYE,YACZF,EAAYE,UAAU,CACpBC,sBAAsB,EACtBC,kBAAkB,IAEpBC,EAAUZ,GAAeQ,GAC/B,OAAOI,CACX,CACA,SAASC,GAA8B3Q,GACnC,MAAM4Q,EAAgB5Q,EAAU,GAC1B6Q,EAAgBD,EAAgBE,EAAAA,0BAA4B,EAC5DC,EAAUC,EAAAA,iBAAAA,0BAA2ChR,EAAU0B,MAAMmP,EAAe7Q,EAAUwD,SACpG,MAAgB,WAAZuN,EACOE,EAAAA,YAAAA,KAAiBjR,GAGjBkR,EAAAA,qBAAAA,YAAiClR,EAEhD,CACA,SAASmR,GAASlI,EAAUC,GACxB,OAAO2G,GAAUrS,UAAM,OAAQ,GAAQ,YACnC,MAAM4T,EAAqBzF,IACvB,MAAM0F,EAAe,IAAIzF,MAAM,CAAC,EAAG,CAC/BC,IAAIC,EAAQC,GACR,GAAiB,MAAbD,EAAOC,GACP,OAAQA,GAAA,IACC,0BACDD,EAAOC,GAAK,SAAUzG,GAClB,IAAI,eAAEgM,EAAA,aAAgBC,GAAiBjM,EAAIkM,EAAOjC,GAAOjK,EAAI,CAAC,iBAAkB,iBAChF,OAAOuK,GAAUrS,UAAM,OAAQ,GAAQ,YACnC,MAAMiU,EAAWF,EAAarB,IAAIE,KAC1BsB,WAAYC,SAAkChG,EAAOiG,wBAAwB5P,OAAOmG,OAAOnG,OAAOmG,OAAOnG,OAAOmG,OAAO,CAAE,EAAEqJ,GAA0B,MAAlBF,EACrI,CAAEO,QAAS,CAAEC,iBAAkBR,IAC/B,MAAQ,CAAEG,cACVC,EAAaC,EAAwBzB,IAAIH,IAAcG,IAAIZ,EAAK9N,QACtE,OAAOkQ,CAC/C,GACA,EACgC,UACC,eACD5F,EAAOC,GAAK,SAAUzG,GAClB,IAAI,SAAEmM,GAAanM,EAAIkM,EAAOjC,GAAOjK,EAAI,CAAC,aAC1C,OAAOuK,GAAUrS,UAAM,OAAQ,GAAQ,YACnC,MAAMuU,EAAwBN,EAASvB,IAAIJ,KACnCkC,gBAAiBC,SAAsCtG,EAAOuG,aAAalQ,OAAOmG,OAAOnG,OAAOmG,OAAO,CAAE,EAAEqJ,GAAO,CAAEC,SAAUM,KAChII,EAAiBF,EAA4B/B,IAAIH,IACvD,OAAOoC,CAC/C,GACA,EACgC,UACC,mBACDrG,EAAOC,GAAK,SAAUzG,GAClB,IAAI,aAAEiM,GAAiBjM,EAAIkM,EAAOjC,GAAOjK,EAAI,CAAC,iBAC9C,OAAOuK,GAAUrS,UAAM,OAAQ,GAAQ,YACnC,MAAMiU,EAAWF,EAAarB,IAAIE,KAC1B4B,gBAAiBI,SAA4CzG,EAAO0G,iBAAiBrQ,OAAOmG,OAAOnG,OAAOmG,OAAO,CAAC,EAAGqJ,GAAO,CAAEC,cAChIa,EAAuBF,EAAkClC,IAAIH,IAC7DwC,EAAqBD,EAAqBpC,IAAIS,IACpD,OAAO4B,CAC/C,GACA,EACgC,cAEAzG,EAAOC,GAAKJ,EAAOI,GACnB,MAIZ,OAAOD,EAAOC,EACjB,EACDQ,iBACI,OAAO,CACV,EACDC,iBACI,OAAO,CACV,IAEL,OAAOvD,EAASoI,EAAa,EAEjC,aAAarI,EAAWoI,EAAmBlI,EACnD,GACA,CCnHA,SAASsJ,GAAU3U,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAUI,GAAWA,EAAQD,EAAO,GAAM,CAC5G,OAAO,IAAKH,IAAMA,EAAIK,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAUJ,GAAS,IAAMK,EAAKP,EAAUQ,KAAKN,GAAQ,OAAUO,GAAKJ,EAAOI,EAAC,CAAM,CAC3F,SAASC,EAASR,GAAS,IAAMK,EAAKP,EAAU,SAASE,GAAU,OAAQO,GAAKJ,EAAOI,EAAC,CAAM,CAC9F,SAASF,EAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOT,OAASD,EAAMU,EAAOT,OAAOW,KAAKP,EAAWI,EAAY,CAC9GH,GAAMP,EAAYA,EAAUc,MAAMjB,EAASC,GAAc,KAAKU,OACtE,GACA,CAEA,SAASiU,GAAazC,GAClB,OAAO,IAAItQ,WAAW6E,OACjB0L,KAAKD,GACLhL,MAAM,IACNkL,KAAKC,GAAMA,EAAEhD,WAAW,KACjC,CAEA,SAASuF,KACL,MAA0B,qBAAXnO,QACXA,OAAOoE,iBACa,qBAAbrB,UACP,WAAWqL,KAAKlM,UAAUC,UAClC,CAEA,MAAMkM,GAAsC,wBACtCC,GAA4B,GAClC,SAASC,GAAwBC,GAC7B,MAAMC,EAAqBP,GAAaM,GACxC,OAAO,IAAIE,EAAAA,UAAUD,EACzB,CACA,SAASE,GAAuB7C,GAC5B,MAAO,YAAaA,CACxB,CACA,MAAM8C,WAAkCC,EAAAA,GACpC9W,YAAY4M,GACR3L,QACAC,KAAK6V,6BAA+B,IAAIC,IAExC,CAAC,SAAU,IACX9V,KAAKhB,KAAOoW,GACZpV,KAAKyI,IAAM,mCACXzI,KAAK+V,KAAO,qkBACZ/V,KAAKgW,aAAc,EAMnBhW,KAAKiW,sBAAwB,EAC7BjW,KAAKkW,YAAchB,KAAmBiB,EAAAA,GAAAA,SAA4BA,EAAAA,GAAAA,YAClEnW,KAAKoW,0BAA4B1K,EAAO2K,yBACxCrW,KAAKsW,iBAAmB5K,EAAO6K,gBAC/BvW,KAAKwW,aAAe9K,EAAO+K,YAC3BzW,KAAK0W,SAAWhL,EAAOiL,QACvB3W,KAAK4W,kBAAoBlL,EAAOmL,iBAC5B7W,KAAKkW,cAAgBC,EAAAA,GAAAA,aACrBnW,KAAKoW,0BAA0B/H,MAAMhN,MAAMyV,IACnCA,GAIA9W,KAAK+W,0BACR,GAGZ,CACGlL,gBACA,GAAuB,MAAnB7L,KAAKgX,YAA+C,MAAzBhX,KAAKiX,iBAChC,IACIjX,KAAKgX,WAAa1B,GAAwBtV,KAAKiX,iBAClD,OACMhW,GACH,MAAM,IAAIiW,EAAAA,GAAsBjW,aAAavB,QAAgB,OAANuB,QAAoB,IAANA,OAAe,EAASA,EAAEpB,UAAa,gBAAiBoB,EAChI,CAEL,OAAOjB,KAAKgX,WAAahX,KAAKgX,WAAa,IAC9C,CACGG,gBACA,QAASnX,KAAKoX,oBACjB,CACGC,iBACA,OAAOrX,KAAKgW,WACf,CACGsB,iBACA,OAAOtX,KAAKkW,WACf,CACDa,2BACQ/W,KAAKkW,cAAgBC,EAAAA,GAAAA,WACrBnW,KAAKuX,KAAK,mBAAqBvX,KAAKkW,YAAcC,EAAAA,GAAAA,UAEzD,CACDqB,aAAa/L,GACT,OAAOuJ,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,IACI,aAAayL,GAChB,OACMxK,GAEH,MADAjB,KAAKuX,KAAK,QAAStW,GACbA,CACT,CACb,GACK,CAEDwW,8CACI,OAAOzC,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAK0X,aAC9B,GACK,CACDA,cACI,OAAO1C,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,IAAIA,KAAKqX,aAAcrX,KAAKmX,UAG5B,aAAanX,KAAKwX,cAAa,IAAMxC,GAAUhV,UAAM,OAAQ,GAAQ,YACjE,GAAIA,KAAKkW,cAAgBC,EAAAA,GAAAA,WAA8BnW,KAAKkW,cAAgBC,EAAAA,GAAAA,SACxE,MAAM,IAAIwB,EAAAA,GAEd3X,KAAKgW,aAAc,EACnB,IACI,MAAM4B,QAAkC5X,KAAKoW,0BAA0B/H,MACnEuJ,GAEA5X,KAAK6X,0BAA0BD,EAEtC,OACM3W,GACH,MAAM,IAAI6W,EAAAA,GAAuB7W,aAAavB,OAASuB,EAAEpB,SAAY,gBAAiBoB,EACzF,SAEGjB,KAAKgW,aAAc,CACtB,CACJ,KACb,GACK,CACD+B,UACI,OAAO/C,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,IAAIA,KAAKqX,aAAcrX,KAAKmX,UAG5B,aAAanX,KAAKwX,cAAa,IAAMxC,GAAUhV,UAAM,OAAQ,GAAQ,YACjE,GAAIA,KAAKkW,cAAgBC,EAAAA,GAAAA,WAA8BnW,KAAKkW,cAAgBC,EAAAA,GAAAA,SACxE,MAAM,IAAIwB,EAAAA,GAEd3X,KAAKgW,aAAc,EACnB,IACI,MAAM4B,QAAkC5X,KAAKoW,0BAA0B/H,MACvE,GAAIuJ,EAGA,YADA5X,KAAK6X,0BAA0BD,SAG7B5X,KAAK2T,UAAUxF,GAAW6G,GAAUhV,UAAM,OAAQ,GAAQ,YAC5D,MAAM8W,QAA4B3I,EAAO6J,UAAU,CAC/CrB,QAAS3W,KAAK0W,SACduB,SAAUjY,KAAKwW,eAGnB5V,QAAQ2E,IAAI,CACRvF,KAAKoW,0BAA0BhU,IAAI0U,GACnC9W,KAAK6X,0BAA0Bf,IAEtC,KACJ,OACM7V,GACH,MAAM,IAAI6W,EAAAA,GAAuB7W,aAAavB,OAASuB,EAAEpB,SAAY,gBAAiBoB,EACzF,SAEGjB,KAAKgW,aAAc,CACtB,CACJ,KACb,GACK,CACD6B,0BAA0Bf,GACtB,IAAIhP,EACJ,OAAOkN,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,MAAMkY,EAEuB,MAA7BlY,KAAKoX,uBAEqC,QAApCtP,EAAK9H,KAAKoX,4BAAyC,IAAPtP,OAAgB,EAASA,EAAGqQ,SAASnS,UAAY8Q,EAAoBqB,SAASnS,QAE5HhG,KAAKoX,qBAAqBe,SAASC,MAAK,CAACC,EAASzR,IAAOyR,EAAQ9C,UAAYuB,EAAoBqB,SAASvR,GAAI2O,UAGlH,GAFAvV,KAAKoX,qBAAuBN,EAC5B9W,KAAK+W,2BACDmB,EAAqB,CACrB,MAAMI,QAA4BtY,KAAKsW,iBAAiBiC,OAAOzB,EAAoBqB,SAASzF,KAAI,EAAG6C,aAAcA,KAC7G+C,IAAwBtY,KAAKiX,mBAC7BjX,KAAKiX,iBAAmBqB,SACjBtY,KAAKgX,WACZhX,KAAKuX,KAAK,UAGVvX,KAAK6L,WAEZ,CACb,GACK,CACD2M,uBAAuBrK,EAAQsK,GAC3B,OAAOzD,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,IACI,MAAM8W,QAA4B3I,EAAOuK,YAAY,CACjDC,WAAYF,EACZR,SAAUjY,KAAKwW,eAGnB5V,QAAQ2E,IAAI,CACRvF,KAAKoW,0BAA0BhU,IAAI0U,GACnC9W,KAAK6X,0BAA0Bf,IAEtC,OACM7V,GAEH,MADAjB,KAAK4Y,aACC,IAAIC,EAAAA,GAAyB5X,aAAavB,QAAgB,OAANuB,QAAoB,IAANA,OAAe,EAASA,EAAEpB,UAAa,gBAAiBoB,EACnI,CACb,GACK,CACD2X,aACI,OAAO5D,GAAUhV,UAAM,OAAQ,GAAQ,YACnCA,KAAKoW,0BAA0B0C,QAC/B9Y,KAAKgW,aAAc,EACnBhW,KAAKiW,+BACEjW,KAAKoX,4BACLpX,KAAKgX,kBACLhX,KAAKiX,iBACZjX,KAAKuX,KAAK,aACtB,GACK,CACD5D,SAASlI,GACL,IAAI3D,EACJ,OAAOkN,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,MAAMqL,EAAqD,QAApCvD,EAAK9H,KAAKoX,4BAAyC,IAAPtP,OAAgB,EAASA,EAAGgH,gBACzFpD,EAASL,EAAgB,CAAES,QAAST,QAAkB,EACtD0N,EAA8B/Y,KAAKiW,sBACzC,IACI,aAAatC,GAASlI,EAAUC,EACnC,OACMzK,GASH,MARIjB,KAAKiW,wBAA0B8C,UACzB,IAAInY,SAAQ,UAElBK,aAAavB,OACF,mCAAXuB,EAAEjC,MACS,2BAAXiC,EAAEhB,aACID,KAAK4W,kBAAkB5W,OAE3BiB,CACT,CACb,GACK,CACD+X,qBACI,IAAKhZ,KAAKoX,uBAAyBpX,KAAKiX,iBACpC,MAAM,IAAIgC,EAAAA,GACd,MAAO,CACHR,UAAWzY,KAAKoX,qBAAqBuB,WACrCO,gBAAiBlZ,KAAKiX,iBAE7B,CACDkC,wBAAwBpF,GACpB,OAAOiB,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,MAAM,UAAEyY,GAAczY,KAAKgZ,qBAC3B,IACI,aAAahZ,KAAK2T,UAAUxF,GAAW6G,GAAUhV,UAAM,OAAQ,GAAQ,kBAC7DA,KAAKwY,uBAAuBrK,EAAQsK,GAC1C,MAAM1D,QAA2B5G,EAAO0G,iBAAiB,CACrDd,iBAEJ,OAAOgB,CACV,KACJ,OACMpQ,GACH,MAAM,IAAIyU,EAAAA,GAAqC,OAAVzU,QAA4B,IAAVA,OAAmB,EAASA,EAAM9E,QAAS8E,EACrG,CACb,GACK,CACD0U,gBAAgBxG,EAAayG,EAAYjF,GACrC,OAAOW,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKwX,cAAa,IAAMxC,GAAUhV,UAAM,OAAQ,GAAQ,YACjE,MAAM,UAAEyY,GAAczY,KAAKgZ,qBACrBlF,EAA6B,OAAZO,QAAgC,IAAZA,OAAqB,EAASA,EAAQP,eACjF,IACI,aAAa9T,KAAK2T,UAAUxF,GAAW6G,GAAUhV,UAAM,OAAQ,GAAQ,YACnE,SAASuZ,IACL,IAAIC,EAUAC,EATJ,OAAQH,EAAWI,YAAA,IACV,gBACA,gBACA,YACDF,EAAmBF,EAAWI,WAC9B,cAEAF,EAAmB,YAG3B,OAAoB,OAAZnF,QAAgC,IAAZA,OAAqB,EAASA,EAAQsF,qBAAA,IACzD,gBACA,gBACA,YACDF,EAA4BpF,EAAQsF,oBACpC,gBACC,EACDF,EAA4BD,EAAA,QAE5BC,EAA4B,YAEpC,MAAMG,EAAyD,cAA9BH,EAC3B,EAC8B,cAA9BA,EACI,EACA,EACJI,EAA6C,cAArBL,EAAmC,EAAyB,cAArBA,EAAmC,EAAI,EAC5G,OAAOI,EAA2BC,EAC5BJ,EACAD,CACT,CACD,MAAOM,EAAcC,EAAIC,SAAYpZ,QAAQ2E,IAAI,CAC7C4I,EAAO8L,kBACPja,KAAKwY,uBAAuBrK,EAAQsK,GACpC/C,GAAuB7C,GACjB,UAMSmC,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,IAAI8H,EAEJ,GADA+K,EAAYqH,WAAarH,EAAYqH,SAAqC,QAAzBpS,EAAK9H,KAAK6L,iBAA8B,IAAP/D,EAAgBA,OAAK,GACpE,MAA/B+K,EAAYsH,gBAAyB,CACrC,MAAM,UAAEC,SAAoBd,EAAWe,mBAAmB,CACtDX,WAAYH,MAEhB1G,EAAYsH,gBAAkBC,CACjC,CACzC,IAfkC,KAiBV,GAAIN,EAAaQ,oCAAqC,CAClD,MAAMpG,QAAmB/F,EAAOiG,wBAAwB,CACpDN,iBACAC,aAAc,CAAClB,KAEnB,OAAOqB,EAAW,EACrB,CACI,CACD,MAAOqG,SAA2BpM,EAAO0G,iBAAiB,CACtDd,aAAc,CAAClB,KAEnB,GAAI6C,GAAuB6E,GACvB,aAAajB,EAAWD,gBAAgBkB,GAEvC,CACD,MAAMzH,EAAwByH,EAAkBxH,YAChD,aAAauG,EAAWkB,mBAAmB1H,EAAuBtO,OAAOmG,OAAOnG,OAAOmG,OAAO,CAAE,EAAE0J,GAAU,CAAEsF,oBAAqBJ,MACtI,CACJ,CACJ,KACJ,OACM5U,GACH,MAAM,IAAI8V,EAAAA,GAAqC,OAAV9V,QAA4B,IAAVA,OAAmB,EAASA,EAAM9E,QAAS8E,EACrG,CACJ,KACb,GACK,CACD+V,gBAAgB7H,GACZ,OAAOmC,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKwX,cAAa,IAAMxC,GAAUhV,UAAM,OAAQ,GAAQ,YACjE,MAAOua,SAA2Bva,KAAKmZ,wBAAwB,CAACtG,IAChE,OAAO0H,CACV,KACb,GACK,CACDI,oBAAoB5G,GAChB,OAAOiB,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKwX,cAAa,IAAMxC,GAAUhV,UAAM,OAAQ,GAAQ,YACjE,MAAM+U,QAA2B/U,KAAKmZ,wBAAwBpF,GAC9D,OAAOgB,CACV,KACb,GACK,CACD6F,YAAY/a,GACR,OAAOmV,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKwX,cAAa,IAAMxC,GAAUhV,UAAM,OAAQ,GAAQ,YACjE,MAAM,UAAEyY,EAAA,gBAAWS,GAAoBlZ,KAAKgZ,qBAC5C,IACI,aAAahZ,KAAK2T,UAAUxF,GAAW6G,GAAUhV,UAAM,OAAQ,GAAQ,kBAC7DA,KAAKwY,uBAAuBrK,EAAQsK,GAC1C,MAAOoC,SAAuB1M,EAAOuG,aAAa,CAC9CoG,UAAW,CAAC5B,GACZjF,SAAU,CAACpU,KAETkb,EAAYF,EAAc3W,OAAOmR,IACvC,OAAO0F,CACV,KACJ,OACMpW,GACH,MAAM,IAAIqW,EAAAA,GAAiC,OAAVrW,QAA4B,IAAVA,OAAmB,EAASA,EAAM9E,QAAS8E,EACjG,CACJ,KACb,GACK,EAGL,SAASsW,KACL,MAAO,CACH1C,OAAOuC,GACH,OAAO9F,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,OAAO8a,EAAU,EACjC,GACS,EAET,CAEA,MAAMI,GAAY,qDAClB,SAASC,KACL,IAAIC,EACJ,IACIA,EAAUrU,OAAOsU,YAEpB,OACMvT,GAAO,CACd,MAAO,CACHgR,QACI,OAAO9D,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,GAAKob,EAGL,IACIA,EAAQE,WAAWJ,GAEtB,OACMpT,GAAO,CAC9B,GACS,EACDuG,MACI,OAAO2G,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,GAAKob,EAGL,IACI,OAAO9X,KAAKiB,MAAM6W,EAAQG,QAAQL,WAAe,CAEpD,OACMpT,GAAO,CAC9B,GACS,EACD1F,IAAI0U,GACA,OAAO9B,GAAUhV,UAAM,OAAQ,GAAQ,YACnC,GAAKob,EAGL,IACIA,EAAQI,QAAQN,GAAW5X,KAAKC,UAAUuT,GAE7C,OACMhP,GAAO,CAC9B,GACS,EAET,CAEA,SAAS2T,GAA6BC,GAClC,OAAO1G,GAAUhV,UAAM,OAAQ,GAAQ,YACb,qBAAX+G,QACPA,OAAOsD,SAASM,OAAO+Q,EAAoBjT,IAEvD,GACA,CACA,SAASkT,KACL,OAAOF,EACX,CC/dO,SAASG,GACdzN,EACA0N,EACAC,EACAC,EACAC,EACAzO,IAGM0O,EAAAA,EAAAA,OAAA9N,GAAQ,CAAC+N,EAAWC,KACxB,MAAMC,EAAa,MAAAF,OAAA,EAAAA,EAAWG,QACxBC,EAAa,MAAAH,OAAA,EAAAA,EAAWE,QACzBD,GAAeE,GAChBF,EAAWpd,OAASsd,EAAWtd,MAC/Bsd,EAAWtd,OAASoW,IACxBkH,EAAW1D,YAAY,KAIzB2D,EAAAA,EAAAA,cAAaC,I,MACL,MAAAH,EAAU,OAAAvU,EAAAqG,EAAOzN,YAAP,EAAAoH,EAAcuU,QAC9B,IAAKA,EAAS,OAEd,MAAMI,EAAuBA,KACRT,GAAA,EAGfU,EAA0BA,KAC1Bb,EAAgBnb,OAASob,EAA0Bpb,OACvDqb,GAAS,EAAK,EAGVY,EAAsBhY,GACnB4I,EAAY5I,EAAO0X,GAGpBA,EAAAO,GAAG,UAAWH,GACdJ,EAAAO,GAAG,aAAcF,GACjBL,EAAAO,GAAG,QAASD,GAEpBH,GAAa,KACHH,EAAAQ,IAAI,UAAWJ,GACfJ,EAAAQ,IAAI,aAAcH,GAClBL,EAAAQ,IAAI,QAASF,EAAmB,GACxC,GAEN,CC/CO,SAASG,GACdC,EACA5O,EACA2N,EACAzE,EACAF,EACA6F,EACAjB,GAEM,MAAArE,GAAcuF,EAAAA,EAAAA,KAAIF,GAClBG,GAA4BD,EAAAA,EAAAA,MAAI,GA0C/B,OAvCPhB,EAAAA,EAAAA,OAAM9N,GAAQ,KACZ+O,EAA0Bxc,OAAQ,CAAK,KAIzC6b,EAAAA,EAAAA,cAAY,MAERW,EAA0Bxc,OACzBgX,EAAYhX,OACZyN,EAAOzN,OACPsc,EAAMtc,QACPyW,EAAUzW,QACV2W,EAAW3W,OAKb,WACM,GAACyN,EAAOzN,QAAS2W,EAAW3W,MAA5B,CAEJ2W,EAAW3W,OAAQ,EACnBwc,EAA0Bxc,OAAQ,EAC9B,IACEob,EAA0Bpb,YAE1ByN,EAAOzN,MAAM2b,QACb3E,oBAEIvJ,EAAOzN,MAAM2b,QAAQtE,SAC7B,OACOpT,GACEoX,GAAA,SAGT1E,EAAW3W,OAAQ,CACrB,CAjB6C,CAiB5C,EAlBH,EAkBE,IAIGgX,CACT,CClDO,SAASyF,GAAeC,GAM7B,MAAMlU,EAAYmU,KACZC,EAAoBC,KACpBC,GAAcC,EAAAA,EAAAA,WAAS,IAAMC,GAAeN,EAAS1c,MAAOwI,KAC5DyU,GAAWF,EAAAA,EAAAA,WAAS,IAA4B,IAAtBD,EAAY9c,QAErC,OACLwI,YACAoU,oBACAE,cACAG,WAEJ,CAEA,IAAIC,GACJ,SAASP,K,QAIA,YAHY,IAAfO,KACWA,GAAA,OAAAC,EAAA,OAAA/V,EAAAgW,WAAW7U,gBAAX,EAAAnB,EAAsBoB,WAAtB2U,EAAmC,MAE3CD,EACT,CAEA,SAASL,KACP,MAAMlT,EAAWyT,WAAWzT,SAC5B,OAAgB,MAAZA,EAAyB,KACtB,GAAGA,EAAStC,aAAasC,EAAS0T,MAC3C,CAEA,SAASL,GACPN,EACAlU,GAEA,MAAM8U,EAAuBZ,EAAShF,MACnCiE,GACCA,EAAQrd,OAASoW,IACjBiH,EAAQ/E,aAAenB,EAAAA,GAAAA,YAW3B,GAAI6H,EACK,SAGT,MAAML,EACJzU,GAEA+U,GAAoB/U,KAEnBgV,GAAUhV,GAEb,OAAIyU,EACK,EAGF,CACT,CAEA,SAASM,GAAoB/U,GACpB,iBAAWiM,KAAKjM,EACzB,CAEA,SAASgV,GAAUhV,GACjB,MAAO,0GAA0GiM,KAC/GjM,EAEJ,CC7EgB,SAAAiV,GACftC,EACAuC,GAEO,OAACzZ,EAAoB0X,IACvBR,EAAgBnb,MACZiE,EAGJyZ,GACHA,EAAQzZ,EAAO0X,GACR1X,IAGAgI,QAAAhI,MAAMA,EAAO0X,GAGpB1X,aAAiBgT,EAAAA,IACC,qBAAX5Q,QACPsV,GAEOtV,OAAAsX,KAAKhC,EAAQ5T,IAAK,UAGnB9D,EAET,CCrBO,SAAS2Z,GACdlB,EACAO,EACAL,EACA3G,GAEM,MAAA4H,GAAad,EAAAA,EAAAA,WAAS,KAC1B,IAAKE,EAASjd,MAAc,YAEtB,MAAA8d,EAA8BpB,EAAS1c,MAAM+d,MAChDpC,GAAYA,EAAQrd,OAASoW,KAEhC,OAAIoJ,GAGG,IAAI7I,GAA0B,CACnCY,gBAAiB0E,KACjBxE,YAAa,CAAEiI,IAAKpB,QAAqB,GACzCjH,yBAA0B8E,KAC1BxE,QAASA,EAAQjW,MACjBmW,iBAAkB8E,MAClB,IAGJ,OAAO8B,EAAAA,EAAAA,WAAS,IAEQ,MAApBc,EAAW7d,QACmC,IAA9C0c,EAAS1c,MAAMyI,QAAQoV,EAAW7d,OAE3B0c,EAAS1c,MAGX,CAAC6d,EAAW7d,SAAU0c,EAAS1c,QAE1C,CC1CO,SAASie,GAAuBC,IACrCrC,EAAAA,EAAAA,cAAaC,IACX,SAASqC,EAEPvH,GAEA,MAAMwH,EAAcF,EAAQle,MACtBqe,EAAQD,EAAYE,WAAU,EAAG3C,aAAcA,IAAYrc,QAClD,IAAX+e,IAEJH,EAAQle,MAAQ,IACXoe,EAAY5a,MAAM,EAAG6a,GACxB,CAAE1C,QAASrc,KAAMsX,iBACdwH,EAAY5a,MAAM6a,EAAQ,IAEjC,CAEAH,EAAQle,MAAMue,SAAQ,EAAG5C,aACvBA,EAAQO,GAAG,mBAAoBiC,EAAwBxC,KAGzDG,GAAa,IACXoC,EAAQle,MAAMue,SAAQ,EAAG5C,aACvBA,EAAQQ,IAAI,mBAAoBgC,EAAwBxC,MAC1D,GAGN,CCgCA,SAAS6C,GAAkBC,GACzB,SAAIC,EAAAA,EAAAA,sBACFC,EAAAA,EAAAA,gBAAeF,IACR,EAGX,CAiJA,SAASG,GAAQC,GACf,MAAoB,oBAANA,EAAmBA,KAAMC,EAAAA,EAAAA,OAAMD,EAC/C,CCrNWE,EAAAA,WAAAA,KAAAA,KDmSX,MAAMC,GAA6B,qBAAX3Y,OAYlB4Y,GAAOA,OAcb,SAASC,GAAoBC,EAAQV,GACnC,SAASW,KAAWngB,GAClB,OAAO,IAAIiB,SAAQ,CAACD,EAASE,KAC3BD,QAAQD,QAAQkf,GAAO,IAAMV,EAAG7d,MAAMtB,KAAML,IAAO,CAAEwf,KAAI9e,QAASL,KAAML,UAAS0B,KAAKV,GAASof,MAAMlf,EAAO,GAE/G,CACD,OAAOif,CACT,CACA,MAAME,GAAgBC,GACbA,IAyFT,SAASC,GAAeC,EAAeH,IACrC,MAAMI,GAAWnD,EAAAA,EAAAA,MAAI,GACrB,SAASoD,IACPD,EAAS1f,OAAQ,CAClB,CACD,SAAS4f,IACPF,EAAS1f,OAAQ,CAClB,CACD,MAAM6f,EAAcA,IAAI5gB,KAClBygB,EAAS1f,OACXyf,KAAgBxgB,EAAK,EAEzB,MAAO,CAAEygB,UAAUI,EAAAA,EAAAA,UAASJ,GAAWC,QAAOC,SAAQC,cACxD,CAg6BA,IAAIE,GAAwBjc,OAAO2N,sBAC/BuO,GAAiBlc,OAAO0N,UAAUzN,eAClCkc,GAAiBnc,OAAO0N,UAAUE,qBAClCwO,GAAcA,CAAC3Q,EAAQ4Q,KACzB,IAAIvS,EAAS,CAAC,EACd,IAAK,IAAIwS,KAAQ7Q,EACXyQ,GAAehc,KAAKuL,EAAQ6Q,IAASD,EAAQ1X,QAAQ2X,GAAQ,IAC/DxS,EAAOwS,GAAQ7Q,EAAO6Q,IAC1B,GAAc,MAAV7Q,GAAkBwQ,GACpB,IAAK,IAAIK,KAAQL,GAAsBxQ,GACjC4Q,EAAQ1X,QAAQ2X,GAAQ,GAAKH,GAAejc,KAAKuL,EAAQ6Q,KAC3DxS,EAAOwS,GAAQ7Q,EAAO6Q,IAE5B,OAAOxS,CAAA,EAET,SAASyS,GAAgB9Q,EAAQ+Q,EAAI3M,EAAU,CAAC,GAC9C,MAAMvM,EAAKuM,GAAS,YAClBkM,EAAcP,IACZlY,EAAImZ,EAAeL,GAAY9Y,EAAI,CACrC,gBAEF,OAAOmU,EAAAA,EAAAA,OACLhM,EACA2P,GACEW,EACAS,GAEFC,EAEJ,CA6PA,IAAIC,GAAc1c,OAAOuK,eACrBoS,GAAe3c,OAAO4c,iBACtBC,GAAsB7c,OAAO8c,0BAC7BC,GAAwB/c,OAAO2N,sBAC/BqP,GAAiBhd,OAAO0N,UAAUzN,eAClCgd,GAAiBjd,OAAO0N,UAAUE,qBAClCsP,GAAoBA,CAACC,EAAKC,EAAKlhB,IAAUkhB,KAAOD,EAAMT,GAAYS,EAAKC,EAAK,CAAEC,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMrhB,UAAWihB,EAAIC,GAAOlhB,EAC1JshB,GAAmBA,CAACC,EAAGC,KACzB,IAAK,IAAIpB,KAAQoB,IAAMA,EAAI,CAAC,GACtBV,GAAe9c,KAAKwd,EAAGpB,IACzBY,GAAkBO,EAAGnB,EAAMoB,EAAEpB,IACjC,GAAIS,GACF,IAAK,IAAIT,KAAQS,GAAsBW,GACjCT,GAAe/c,KAAKwd,EAAGpB,IACzBY,GAAkBO,EAAGnB,EAAMoB,EAAEpB,IAEnC,OAAOmB,CAAA,EAELE,GAAkBA,CAACF,EAAGC,IAAMf,GAAac,EAAGZ,GAAoBa,IAChEE,GAAcA,CAACnS,EAAQ4Q,KACzB,IAAIvS,EAAS,CAAC,EACd,IAAK,IAAIwS,KAAQ7Q,EACXuR,GAAe9c,KAAKuL,EAAQ6Q,IAASD,EAAQ1X,QAAQ2X,GAAQ,IAC/DxS,EAAOwS,GAAQ7Q,EAAO6Q,IAC1B,GAAc,MAAV7Q,GAAkBsR,GACpB,IAAK,IAAIT,KAAQS,GAAsBtR,GACjC4Q,EAAQ1X,QAAQ2X,GAAQ,GAAKW,GAAe/c,KAAKuL,EAAQ6Q,KAC3DxS,EAAOwS,GAAQ7Q,EAAO6Q,IAE5B,OAAOxS,CAAA,EAET,SAAS+T,GAAcpS,EAAQ+Q,EAAI3M,EAAU,CAAC,GAC5C,MAAMvM,EAAKuM,GACTkM,YAAaV,GACX/X,EAAImZ,EAAemB,GAAYta,EAAI,CACrC,iBAEI,YAAEyY,EAAA,MAAaF,EAAA,OAAOC,EAAA,SAAQF,GAAaF,GAAeL,GAC1DyC,EAAOvB,GACX9Q,EACA+Q,EACAmB,GAAgBH,GAAiB,CAAC,EAAGf,GAAe,CAClDV,iBAGJ,MAAO,CAAE+B,OAAMjC,QAAOC,SAAQF,WAChC,CEr9CA,SAASmC,GAAaC,GACpB,IAAI1a,EACJ,MAAM2a,EAAQnD,GAAQkD,GACtB,OAAoD,OAA5C1a,EAAc,MAAT2a,OAAgB,EAASA,EAAMC,KAAe5a,EAAK2a,CAClE,CAEA,MAAME,GAAgBjD,GAAW3Y,YAAS,EAK1C,SAAS6b,MAAoBjjB,GAC3B,IAAI2O,EACAuU,EACAC,EACAzO,EAOJ,GANuB,kBAAZ1U,EAAK,IAAmB0Q,MAAMC,QAAQ3Q,EAAK,MACnDkjB,EAAQC,EAAWzO,GAAW1U,EAC/B2O,EAASqU,KAERrU,EAAQuU,EAAQC,EAAWzO,GAAW1U,GAEpC2O,EACH,OAAOqR,GACJtP,MAAMC,QAAQuS,KACjBA,EAAS,CAACA,IACPxS,MAAMC,QAAQwS,KACjBA,EAAY,CAACA,IACf,MAAMC,EAAW,GACX1Z,EAAUA,KACd0Z,EAAS9D,SAASE,GAAOA,MACzB4D,EAAS/c,OAAS,CAAC,EAEfgd,EAAWC,CAACC,EAAIC,EAAOC,EAAUC,KACrCH,EAAGxZ,iBAAiByZ,EAAOC,EAAUC,GAC9B,IAAMH,EAAG1Z,oBAAoB2Z,EAAOC,EAAUC,IAEjDC,GAAYrH,EAAAA,EAAAA,QAChB,IAAM,CAACsG,GAAajU,GAASgR,GAAQjL,MACrC,EAAE6O,EAAIG,MACJha,IACK6Z,GAELH,EAASQ,QACJV,EAAOW,SAASL,GACVL,EAAUpQ,KAAK0Q,GAAaJ,EAASE,EAAIC,EAAOC,EAAUC,OAE3E,GAEI,CAAEI,WAAW,EAAMC,MAAO,SAEtBpB,EAAOA,KACXgB,IACAja,GAAA,EAGF,OADA6V,GAAkBoD,GACXA,CACT,CAlDwB5C,IAAW3Y,OAAO+C,SACjB4V,IAAW3Y,OAAOkC,UACnByW,IAAW3Y,OAAOsD,SA6vC1C,MAAMsZ,GAAgC,qBAAf7F,WAA6BA,WAA+B,qBAAX/W,OAAyBA,OAA2B,qBAAX6c,EAAAA,EAAyBA,EAAAA,EAAyB,qBAATC,KAAuBA,KAAO,CAAC,EACnLC,GAAY,0BACZC,GAA2BC,KACjC,SAASA,KAGP,OAFMF,MAAaH,KACjBA,GAAQG,IAAaH,GAAQG,KAAc,CAAC,GACvCH,GAAQG,GACjB,CACA,SAASG,GAAcrC,EAAKsC,GAC1B,OAAOH,GAASnC,IAAQsC,CAC1B,CAKA,SAASC,GAAoBC,GAC3B,OAAkB,MAAXA,EAAkB,MAAQA,aAAmBtO,IAAM,MAAQsO,aAAmBC,IAAM,MAAQD,aAAmB3W,KAAO,OAA4B,mBAAZ2W,EAAwB,UAA+B,kBAAZA,EAAuB,SAA8B,kBAAZA,EAAuB,SAAYE,OAAOC,MAAMH,GAAsB,MAAX,QAC9R,CAEA,IAAII,GAAchgB,OAAOuK,eACrB0V,GAAwBjgB,OAAO2N,sBAC/BuS,GAAiBlgB,OAAO0N,UAAUzN,eAClCkgB,GAAiBngB,OAAO0N,UAAUE,qBAClCwS,GAAoBA,CAACjD,EAAKC,EAAKlhB,IAAUkhB,KAAOD,EAAM6C,GAAY7C,EAAKC,EAAK,CAAEC,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMrhB,UAAWihB,EAAIC,GAAOlhB,EAC1JmkB,GAAmBA,CAAC5C,EAAGC,KACzB,IAAK,IAAIpB,KAAQoB,IAAMA,EAAI,CAAC,GACtBwC,GAAehgB,KAAKwd,EAAGpB,IACzB8D,GAAkB3C,EAAGnB,EAAMoB,EAAEpB,IACjC,GAAI2D,GACF,IAAK,IAAI3D,KAAQ2D,GAAsBvC,GACjCyC,GAAejgB,KAAKwd,EAAGpB,IACzB8D,GAAkB3C,EAAGnB,EAAMoB,EAAEpB,IAEnC,OAAOmB,CAAA,EAET,MAAM6C,GAAqB,CACzBC,QAAS,CACPC,KAAOC,GAAY,SAANA,EACbC,MAAQD,GAAMpe,OAAOoe,IAEvBE,OAAQ,CACNH,KAAOC,GAAM3hB,KAAKiB,MAAM0gB,GACxBC,MAAQD,GAAM3hB,KAAKC,UAAU0hB,IAE/BG,OAAQ,CACNJ,KAAOC,GAAMX,OAAOe,WAAWJ,GAC/BC,MAAQD,GAAMpe,OAAOoe,IAEvBK,IAAK,CACHN,KAAOC,GAAMA,EACbC,MAAQD,GAAMpe,OAAOoe,IAEvBvT,OAAQ,CACNsT,KAAOC,GAAMA,EACbC,MAAQD,GAAMpe,OAAOoe,IAEvBvS,IAAK,CACHsS,KAAOC,GAAM,IAAIZ,IAAI/gB,KAAKiB,MAAM0gB,IAChCC,MAAQD,GAAM3hB,KAAKC,UAAU8M,MAAME,KAAK0U,EAAEM,aAE5CnjB,IAAK,CACH4iB,KAAOC,GAAM,IAAInP,IAAIxS,KAAKiB,MAAM0gB,IAChCC,MAAQD,GAAM3hB,KAAKC,UAAU8M,MAAME,KAAK0U,KAE1CO,KAAM,CACJR,KAAOC,GAAM,IAAIxX,KAAKwX,GACtBC,MAAQD,GAAMA,EAAEQ,gBAGdC,GAAyB,iBAC/B,SAASC,GAAW/D,EAAKgE,EAAUxK,EAAS/G,EAAU,CAAC,GACrD,IAAIvM,EACJ,MAAM,MACJ4b,EAAQ,MAAK,KACbmC,GAAO,EAAI,uBACXC,GAAyB,EAAI,cAC7BC,GAAgB,EAAI,cACpBC,GAAgB,EAAK,QACrBC,EACAlf,OAAAmf,EAASvD,GAAA,YACTpC,EAAA,QACAnC,EAAWnd,KACT0L,QAAQhI,MAAM1D,EAAE,IAEhBoT,EACEvU,GAAQmmB,EAAUE,EAAAA,WAAalJ,EAAAA,KAAK2I,GAC1C,IAAKxK,EACH,IACEA,EAAU6I,GAAc,qBAAqB,KAC3C,IAAImC,EACJ,OAAgC,OAAxBA,EAAMzD,SAAyB,EAASyD,EAAI/K,YAAA,GAF5C4I,EAIX,OAAQhjB,GACPmd,EAAQnd,EACT,CAEH,IAAKma,EACH,OAAOtb,EACT,MAAMskB,EAAU9E,GAAQsG,GAClBS,EAAOlC,GAAoBC,GAC3BkC,EAA0C,OAA5Bxe,EAAKuM,EAAQiS,YAAsBxe,EAAKgd,GAAmBuB,IACvEhG,MAAOkG,EAAYjG,OAAQkG,GAAgBnE,GACjDviB,GACA,IAAMolB,EAAMplB,EAAKY,QACjB,CAAEgjB,QAAOmC,OAAMtF,gBAOjB,OALI2F,GAAUJ,IACZlD,GAAiBsD,EAAQ,UAAWO,GACpC7D,GAAiBsD,EAAQR,GAAwBgB,IAEnDD,IACO3mB,EACP,SAASolB,EAAMD,GACb,IACE,GAAS,MAALA,EACF7J,EAAQE,WAAWsG,OACd,CACL,MAAM+E,EAAaL,EAAWpB,MAAMD,GAC9B2B,EAAWxL,EAAQG,QAAQqG,GAC7BgF,IAAaD,IACfvL,EAAQI,QAAQoG,EAAK+E,GACjBT,GACFA,EAAOW,cAAc,IAAIC,YAAYpB,GAAwB,CAC3DqB,OAAQ,CACNnF,MACAgF,WACAI,SAAUL,EACVM,YAAa7L,MAKtB,CACF,OAAQna,GACPmd,EAAQnd,EACT,CACF,CACD,SAAS+jB,EAAK7B,GACZ,MAAM+D,EAAW/D,EAAQA,EAAM6D,SAAW5L,EAAQG,QAAQqG,GAC1D,GAAgB,MAAZsF,EAGF,OAFInB,GAA6B,OAAZ3B,GACnBhJ,EAAQI,QAAQoG,EAAK0E,EAAWpB,MAAMd,IACjCA,EACb,IAAgBjB,GAAS6C,EAAe,CAClC,MAAMtlB,EAAQ4lB,EAAWtB,KAAKkC,GAC9B,MAA6B,oBAAlBlB,EACFA,EAActlB,EAAO0jB,GACZ,WAATiC,GAAsBhW,MAAMC,QAAQ5P,GAEtCA,EADEmkB,GAAiBA,GAAiB,CAAC,EAAGT,GAAU1jB,EAE/D,OAAmC,kBAAbwmB,EACTA,EAEAZ,EAAWtB,KAAKkC,EAE1B,CACD,SAASR,EAAsBvD,GAC7BsD,EAAOtD,EAAM4D,OACd,CACD,SAASN,EAAOtD,GACd,IAAIA,GAASA,EAAM8D,cAAgB7L,EAEnC,GAAI+H,GAAsB,MAAbA,EAAMvB,IACjB9hB,EAAKY,MAAQ0jB,OAGf,IAAIjB,GAASA,EAAMvB,MAAQA,EAA3B,CAEA2E,IACA,IACEzmB,EAAKY,MAAQskB,EAAK7B,EACnB,OAAQliB,GACPmd,EAAQnd,EACd,SACUkiB,GACFgE,EAAAA,EAAAA,UAASX,GAETA,GACH,CAXO,CAYT,CACH,CA48EA,SAASY,GAAgBxF,EAAKyF,EAAchT,EAAU,CAAC,GACrD,MAAQtN,OAAAmf,EAASvD,IAAkBtO,EACnC,OAAOsR,GAAW/D,EAAKyF,EAAwB,MAAVnB,OAAiB,EAASA,EAAO7K,aAAchH,EACtF,CCtkIgB,SAAAiT,GACfC,EACA5J,GAQA,MAAM3e,EAA+BooB,GACpCG,EACA5J,EAASjd,MAAQ0U,GAAsC,MAGlDoS,GAAoB/J,EAAAA,EAAAA,WACzB,IAAMze,EAAK0B,QAAU0U,KAGhB0G,GAA4B2B,EAAAA,EAAAA,WACjC,IAAM+J,EAAkB9mB,OAASid,EAASjd,QAGrC6X,EAAUkP,IACP9a,QAAAoD,IAAI,kBAAmB0X,GAClBpM,aAAAG,QAAQ+L,EAAiBE,GAClCzoB,EAAK0B,QAAU+mB,IAClBzoB,EAAK0B,MAAQ+mB,EACd,EAGK1L,EAAWA,CAAC2L,GAAQ,MACrBA,GAASF,EAAkB9mB,SAC9B1B,EAAK0B,MAAQ,KACd,EAGM,OACN1B,OACAwoB,oBACA1L,4BACAvD,SACAwD,WAEF,CCnDO,MAAM4L,GAA+B,gCCA/BC,GAAe,gBCAfC,GAAoB,qBCApBC,GAAwB,yBCE9B,SAASC,GAAcrO,GAC1B,OAAQA,GAAA,IACC,gBACA,gBACA,sBACA,EACD,OAAOA,EAAA,IACN,SACD,MAAO,gBACN,aACA,eACD,MAAO,gBACN,UACA,OACD,MAAO,oBAEP,OAEZ,CCpBO,MAAMsO,GAAuB,iBAEvBC,GAAsB,gBAEtBC,GAAuB,iBAEvBC,GAAwB,kBCLxBC,GAAmB,sCAUzB,SAASC,GAAoBC,GAChC,OAAIA,EAASC,SAASH,IACXJ,GACP,cAAc7S,KAAKmT,GACZL,GACP,eAAe9S,KAAKmT,GACbJ,GACP,iBAAiB/S,KAAKmT,IAAa,mBAAmBnT,KAAKmT,GACpDH,GACJH,EACX,CCrBO,MAAMQ,GAAkB,mBCAlBC,GAAqB,sBCArBC,GAAiB,kBCkFvB,SAASC,GAAY1G,EAAGC,GAC3B,GAAID,IAAMC,EACN,OAAO,EACX,MAAMlc,EAASic,EAAEjc,OACjB,GAAIA,IAAWkc,EAAElc,OACb,OAAO,EACX,IAAK,IAAIwJ,EAAI,EAAGA,EAAIxJ,EAAQwJ,IACxB,GAAIyS,EAAEzS,KAAO0S,EAAE1S,GACX,OAAO,EAEf,OAAO,CACX,CA9F8BsO,YAAQA,WAAK8K,uBAMb9K,YAAQA,WAAK+K,uB,gCCJ3CC,GAAA3mB,WAAqBA,GACrB2mB,GAAAC,YAAsBA,GACtBD,GAAAE,cAAwBA,GAOxB,IALA,IAAIC,GAAS,GACTC,GAAY,GACZC,GAA4B,qBAAfjnB,WAA6BA,WAAamO,MAEvDpQ,GAAO,mEACFuP,GAAI,EAAG7I,GAAM1G,GAAK+F,OAAQwJ,GAAI7I,KAAO6I,GAC5CyZ,GAAOzZ,IAAKvP,GAAKuP,IACjB0Z,GAAUjpB,GAAK0P,WAAWH,KAAMA,GAQlC,SAAS4Z,GAASC,GAChB,IAAI1iB,EAAM0iB,EAAIrjB,OAEd,GAAIW,EAAM,EAAI,EACZ,MAAM,IAAIjH,MAAM,kDAKlB,IAAI4pB,EAAWD,EAAIlgB,QAAQ,MACT,IAAdmgB,IAAiBA,EAAW3iB,GAEhC,IAAI4iB,EAAkBD,IAAa3iB,EAC/B,EACA,EAAK2iB,EAAW,EAEpB,MAAO,CAACA,EAAUC,EACpB,CAGA,SAASpnB,GAAYknB,GACnB,IAAIG,EAAOJ,GAAQC,GACfC,EAAWE,EAAK,GAChBD,EAAkBC,EAAK,GAC3B,OAAuC,GAA9BF,EAAWC,GAAuB,EAAKA,CAClD,CAEA,SAASE,GAAaJ,EAAKC,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAEA,SAASR,GAAaM,GACpB,IAAIK,EAcAla,EAbAga,EAAOJ,GAAQC,GACfC,EAAWE,EAAK,GAChBD,EAAkBC,EAAK,GAEvBG,EAAM,IAAIR,GAAIM,GAAYJ,EAAKC,EAAUC,IAEzCK,EAAU,EAGVjjB,EAAM4iB,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK9Z,EAAI,EAAGA,EAAI7I,EAAK6I,GAAK,EACxBka,EACGR,GAAUG,EAAI1Z,WAAWH,KAAO,GAChC0Z,GAAUG,EAAI1Z,WAAWH,EAAI,KAAO,GACpC0Z,GAAUG,EAAI1Z,WAAWH,EAAI,KAAO,EACrC0Z,GAAUG,EAAI1Z,WAAWH,EAAI,IAC/Bma,EAAIC,KAAcF,GAAO,GAAM,IAC/BC,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,EAmBnB,OAhBwB,IAApBH,IACFG,EACGR,GAAUG,EAAI1Z,WAAWH,KAAO,EAChC0Z,GAAUG,EAAI1Z,WAAWH,EAAI,KAAO,EACvCma,EAAIC,KAAmB,IAANF,GAGK,IAApBH,IACFG,EACGR,GAAUG,EAAI1Z,WAAWH,KAAO,GAChC0Z,GAAUG,EAAI1Z,WAAWH,EAAI,KAAO,EACpC0Z,GAAUG,EAAI1Z,WAAWH,EAAI,KAAO,EACvCma,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,GAGZC,CACT,CAEA,SAASE,GAAiBC,GACxB,OAAOb,GAAOa,GAAO,GAAK,IACxBb,GAAOa,GAAO,GAAK,IACnBb,GAAOa,GAAO,EAAI,IAClBb,GAAa,GAANa,EACX,CAEA,SAASC,GAAaC,EAAOC,EAAOC,GAGlC,IAFA,IAAIR,EACAS,EAAS,GACJ3a,EAAIya,EAAOza,EAAI0a,EAAK1a,GAAK,EAChCka,GACIM,EAAMxa,IAAM,GAAM,WAClBwa,EAAMxa,EAAI,IAAM,EAAK,QACP,IAAfwa,EAAMxa,EAAI,IACb2a,EAAO5G,KAAKsG,GAAgBH,IAE9B,OAAOS,EAAOjiB,KAAK,GACrB,CAEA,SAAS8gB,GAAegB,GAQtB,IAPA,IAAIN,EACA/iB,EAAMqjB,EAAMhkB,OACZokB,EAAazjB,EAAM,EACnB0jB,EAAQ,GACRC,EAAiB,MAGZ9a,EAAI,EAAG+a,EAAO5jB,EAAMyjB,EAAY5a,EAAI+a,EAAM/a,GAAK8a,EACtDD,EAAM9G,KAAKwG,GAAYC,EAAOxa,EAAIA,EAAI8a,EAAkBC,EAAOA,EAAQ/a,EAAI8a,IAqB7E,OAjBmB,IAAfF,GACFV,EAAMM,EAAMrjB,EAAM,GAClB0jB,EAAM9G,KACJ0F,GAAOS,GAAO,GACdT,GAAQS,GAAO,EAAK,IACpB,OAEsB,IAAfU,IACTV,GAAOM,EAAMrjB,EAAM,IAAM,GAAKqjB,EAAMrjB,EAAM,GAC1C0jB,EAAM9G,KACJ0F,GAAOS,GAAO,IACdT,GAAQS,GAAO,EAAK,IACpBT,GAAQS,GAAO,EAAK,IACpB,MAIGW,EAAMniB,KAAK,GACpB,CAnIAghB,GAAU,IAAIvZ,WAAW,IAAM,GAC/BuZ,GAAU,IAAIvZ,WAAW,IAAM,G;;AClBnB6a,KAAG,SAAUhkB,EAAQikB,EAAQC,EAAMC,EAAMC,GACnD,IAAI3pB,EAAGmG,EACHyjB,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTxb,EAAIkb,EAAQE,EAAS,EAAK,EAC1BK,EAAIP,GAAQ,EAAI,EAChB1Y,EAAIxL,EAAOikB,EAASjb,GAOxB,IALAA,GAAKyb,EAELhqB,EAAI+Q,GAAM,IAAOgZ,GAAU,EAC3BhZ,KAAQgZ,EACRA,GAASH,EACFG,EAAQ,EAAG/pB,EAAS,IAAJA,EAAWuF,EAAOikB,EAASjb,GAAIA,GAAKyb,EAAGD,GAAS,GAKvE,IAHA5jB,EAAInG,GAAM,IAAO+pB,GAAU,EAC3B/pB,KAAQ+pB,EACRA,GAASL,EACFK,EAAQ,EAAG5jB,EAAS,IAAJA,EAAWZ,EAAOikB,EAASjb,GAAIA,GAAKyb,EAAGD,GAAS,GAEvE,GAAU,IAAN/pB,EACFA,EAAI,EAAI8pB,MACZ,IAAa9pB,IAAM6pB,EACf,OAAO1jB,EAAI8jB,IAAsBC,KAAdnZ,GAAK,EAAI,GAE5B5K,GAAQjB,KAAKilB,IAAI,EAAGT,GACpB1pB,GAAQ8pB,CACT,CACD,OAAQ/Y,GAAK,EAAI,GAAK5K,EAAIjB,KAAKilB,IAAI,EAAGnqB,EAAI0pB,EAC5C,EAEAH,MAAgB,SAAUhkB,EAAQ9F,EAAO+pB,EAAQC,EAAMC,EAAMC,GAC3D,IAAI3pB,EAAGmG,EAAGuL,EACNkY,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBO,EAAe,KAATV,EAAcxkB,KAAKilB,IAAI,GAAI,IAAMjlB,KAAKilB,IAAI,GAAI,IAAM,EAC1D5b,EAAIkb,EAAO,EAAKE,EAAS,EACzBK,EAAIP,EAAO,GAAK,EAChB1Y,EAAItR,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQyF,KAAKmlB,IAAI5qB,GAEb6jB,MAAM7jB,IAAUA,IAAUyqB,KAC5B/jB,EAAImd,MAAM7jB,GAAS,EAAI,EACvBO,EAAI6pB,IAEJ7pB,EAAIkF,KAAKC,MAAMD,KAAK4J,IAAIrP,GAASyF,KAAKolB,KAClC7qB,GAASiS,EAAIxM,KAAKilB,IAAI,GAAInqB,IAAM,IAClCA,IACA0R,GAAK,GAGLjS,GADEO,EAAI8pB,GAAS,EACNM,EAAK1Y,EAEL0Y,EAAKllB,KAAKilB,IAAI,EAAG,EAAIL,GAE5BrqB,EAAQiS,GAAK,IACf1R,IACA0R,GAAK,GAGH1R,EAAI8pB,GAASD,GACf1jB,EAAI,EACJnG,EAAI6pB,GACK7pB,EAAI8pB,GAAS,GACtB3jB,GAAM1G,EAAQiS,EAAK,GAAKxM,KAAKilB,IAAI,EAAGT,GACpC1pB,GAAQ8pB,IAER3jB,EAAI1G,EAAQyF,KAAKilB,IAAI,EAAGL,EAAQ,GAAK5kB,KAAKilB,IAAI,EAAGT,GACjD1pB,EAAI,IAID0pB,GAAQ,EAAGnkB,EAAOikB,EAASjb,GAAS,IAAJpI,EAAUoI,GAAKyb,EAAG7jB,GAAK,IAAKujB,GAAQ,GAI3E,IAFA1pB,EAAKA,GAAK0pB,EAAQvjB,EAClByjB,GAAQF,EACDE,EAAO,EAAGrkB,EAAOikB,EAASjb,GAAS,IAAJvO,EAAUuO,GAAKyb,EAAGhqB,GAAK,IAAK4pB,GAAQ,GAE1ErkB,EAAOikB,EAASjb,EAAIyb,IAAU,IAAJjZ,CAC5B;;;;;;;aC1EA,MAAMwZ,EAAS1C,GACT2C,EAAUjB,GACVkB,EACe,oBAAXC,QAAkD,oBAAlBA,OAAO,OAC3CA,OAAO,OAAO,8BACd,KAENC,EAAAC,OAAiBA,EACjBD,EAAAE,WAAqBA,EACrBF,EAAAG,kBAA4B,GAE5B,MAAMC,EAAe,WA2BrB,SAASC,IAEP,IACE,MAAMtC,EAAM,IAAIznB,WAAW,GACrBgqB,EAAQ,CAAEC,IAAK,WAAc,OAAO,EAAE,GAG5C,OAFA3nB,OAAO4nB,eAAeF,EAAOhqB,WAAWgQ,WACxC1N,OAAO4nB,eAAezC,EAAKuC,GACN,KAAdvC,EAAIwC,KACZ,OAAQlrB,GACP,OAAO,CACR,CACH,CAkBA,SAASorB,EAAcrmB,GACrB,GAAIA,EAASgmB,EACX,MAAM,IAAIM,WAAW,cAAgBtmB,EAAS,kCAGhD,MAAMumB,EAAM,IAAIrqB,WAAW8D,GAE3B,OADAxB,OAAO4nB,eAAeG,EAAKV,EAAO3Z,WAC3Bqa,CACT,CAYA,SAASV,EAAQW,EAAKC,EAAkBzmB,GAEtC,GAAmB,kBAARwmB,EAAkB,CAC3B,GAAgC,kBAArBC,EACT,MAAM,IAAIpd,UACR,sEAGJ,OAAOqd,EAAYF,EACpB,CACD,OAAOjc,EAAKic,EAAKC,EAAkBzmB,EACrC,CAIA,SAASuK,EAAM7P,EAAO+rB,EAAkBzmB,GACtC,GAAqB,kBAAVtF,EACT,OAAOisB,EAAWjsB,EAAO+rB,GAG3B,GAAIhqB,YAAYyN,OAAOxP,GACrB,OAAOksB,EAAclsB,GAGvB,GAAa,MAATA,EACF,MAAM,IAAI2O,UACR,yHACiD3O,GAIrD,GAAImsB,GAAWnsB,EAAO+B,cACjB/B,GAASmsB,GAAWnsB,EAAMyP,OAAQ1N,aACrC,OAAOqqB,EAAgBpsB,EAAO+rB,EAAkBzmB,GAGlD,GAAiC,qBAAtB+mB,oBACNF,GAAWnsB,EAAOqsB,oBAClBrsB,GAASmsB,GAAWnsB,EAAMyP,OAAQ4c,oBACrC,OAAOD,EAAgBpsB,EAAO+rB,EAAkBzmB,GAGlD,GAAqB,kBAAVtF,EACT,MAAM,IAAI2O,UACR,yEAIJ,MAAM2d,EAAUtsB,EAAMssB,SAAWtsB,EAAMssB,UACvC,GAAe,MAAXA,GAAmBA,IAAYtsB,EACjC,OAAOmrB,EAAOtb,KAAKyc,EAASP,EAAkBzmB,GAGhD,MAAMkc,EAAI+K,EAAWvsB,GACrB,GAAIwhB,EAAG,OAAOA,EAEd,GAAsB,qBAAXyJ,QAAgD,MAAtBA,OAAOuB,aACH,oBAA9BxsB,EAAMirB,OAAOuB,aACtB,OAAOrB,EAAOtb,KAAK7P,EAAMirB,OAAOuB,aAAa,UAAWT,EAAkBzmB,GAG5E,MAAM,IAAIqJ,UACR,yHACiD3O,EAErD,CAmBA,SAASysB,EAAYxc,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAItB,UAAU,0CACxB,GAAasB,EAAO,EAChB,MAAM,IAAI2b,WAAW,cAAgB3b,EAAO,iCAEhD,CAEA,SAASyc,EAAOzc,EAAM0c,EAAMC,GAE1B,OADAH,EAAWxc,GACPA,GAAQ,EACH0b,EAAa1b,QAET,IAAT0c,EAIyB,kBAAbC,EACVjB,EAAa1b,GAAM0c,KAAKA,EAAMC,GAC9BjB,EAAa1b,GAAM0c,KAAKA,GAEvBhB,EAAa1b,EACtB,CAUA,SAAS+b,EAAa/b,GAEpB,OADAwc,EAAWxc,GACJ0b,EAAa1b,EAAO,EAAI,EAAoB,EAAhB4c,EAAQ5c,GAC7C,CAeA,SAASgc,EAAYjb,EAAQ4b,GAK3B,GAJwB,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGRzB,EAAO2B,WAAWF,GACrB,MAAM,IAAIje,UAAU,qBAAuBie,GAG7C,MAAMtnB,EAAwC,EAA/BynB,EAAW/b,EAAQ4b,GAClC,IAAIf,EAAMF,EAAarmB,GAEvB,MAAM0nB,EAASnB,EAAIrH,MAAMxT,EAAQ4b,GASjC,OAPII,IAAW1nB,IAIbumB,EAAMA,EAAIroB,MAAM,EAAGwpB,IAGdnB,CACT,CAEA,SAASoB,EAAeC,GACtB,MAAM5nB,EAAS4nB,EAAM5nB,OAAS,EAAI,EAA4B,EAAxBunB,EAAQK,EAAM5nB,QAC9CumB,EAAMF,EAAarmB,GACzB,IAAK,IAAIwJ,EAAI,EAAGA,EAAIxJ,EAAQwJ,GAAK,EAC/B+c,EAAI/c,GAAgB,IAAXoe,EAAMpe,GAEjB,OAAO+c,CACT,CAEA,SAASK,EAAeiB,GACtB,GAAIhB,GAAWgB,EAAW3rB,YAAa,CACrC,MAAM4rB,EAAO,IAAI5rB,WAAW2rB,GAC5B,OAAOf,EAAgBgB,EAAK3d,OAAQ2d,EAAK1d,WAAY0d,EAAK3rB,WAC3D,CACD,OAAOwrB,EAAcE,EACvB,CAEA,SAASf,EAAiBc,EAAOxd,EAAYpK,GAC3C,GAAIoK,EAAa,GAAKwd,EAAMzrB,WAAaiO,EACvC,MAAM,IAAIkc,WAAW,wCAGvB,GAAIsB,EAAMzrB,WAAaiO,GAAcpK,GAAU,GAC7C,MAAM,IAAIsmB,WAAW,wCAGvB,IAAIC,EAYJ,OAVEA,OADiB,IAAfnc,QAAuC,IAAXpK,EACxB,IAAI9D,WAAW0rB,QACD,IAAX5nB,EACH,IAAI9D,WAAW0rB,EAAOxd,GAEtB,IAAIlO,WAAW0rB,EAAOxd,EAAYpK,GAI1CxB,OAAO4nB,eAAeG,EAAKV,EAAO3Z,WAE3Bqa,CACT,CAEA,SAASU,EAAYtL,GACnB,GAAIkK,EAAOkC,SAASpM,GAAM,CACxB,MAAMhb,EAA4B,EAAtB4mB,EAAQ5L,EAAI3b,QAClBumB,EAAMF,EAAa1lB,GAEzB,OAAmB,IAAf4lB,EAAIvmB,QAIR2b,EAAImM,KAAKvB,EAAK,EAAG,EAAG5lB,GAHX4lB,CAKV,CAED,YAAmB,IAAf5K,EAAI3b,OACoB,kBAAf2b,EAAI3b,QAAuBgoB,GAAYrM,EAAI3b,QAC7CqmB,EAAa,GAEfsB,EAAchM,GAGN,WAAbA,EAAI0E,MAAqBhW,MAAMC,QAAQqR,EAAI7hB,MACtC6tB,EAAchM,EAAI7hB,WAD3B,CAGF,CAEA,SAASytB,EAASvnB,GAGhB,GAAIA,GAAUgmB,EACZ,MAAM,IAAIM,WAAW,0DACaN,EAAazhB,SAAS,IAAM,UAEhE,OAAgB,EAATvE,CACT,CAEA,SAAS8lB,EAAY9lB,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJ6lB,EAAOuB,OAAOpnB,EACvB,CA+FA,SAASynB,EAAY/b,EAAQ4b,GAC3B,GAAIzB,EAAOkC,SAASrc,GAClB,OAAOA,EAAO1L,OAEhB,GAAIvD,YAAYyN,OAAOwB,IAAWmb,GAAWnb,EAAQjP,aACnD,OAAOiP,EAAOvP,WAEhB,GAAsB,kBAAXuP,EACT,MAAM,IAAIrC,UACR,kGAC0BqC,GAI9B,MAAM/K,EAAM+K,EAAO1L,OACbioB,EAAalvB,UAAUiH,OAAS,IAAsB,IAAjBjH,UAAU,GACrD,IAAKkvB,GAAqB,IAARtnB,EAAW,OAAO,EAGpC,IAAIunB,GAAc,EAClB,OACE,OAAQZ,GAAA,IACD,YACA,aACA,SACH,OAAO3mB,EAAA,IACJ,WACA,QACH,OAAOwnB,EAAYzc,GAAQ1L,OAAA,IACxB,WACA,YACA,cACA,WACH,OAAa,EAANW,EAAM,IACV,MACH,OAAOA,IAAQ,MACZ,SACH,OAAOynB,GAAc1c,GAAQ1L,OAAA,QAE7B,GAAIkoB,EACF,OAAOD,GAAa,EAAIE,EAAYzc,GAAQ1L,OAE9CsnB,GAAY,GAAKA,GAAU5e,cAC3Bwf,GAAc,EAGtB,CAGA,SAASG,EAAcf,EAAUrD,EAAOC,GACtC,IAAIgE,GAAc,EAclB,SALc,IAAVjE,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQjqB,KAAKgG,OACf,MAAO,GAOT,SAJY,IAARkkB,GAAqBA,EAAMlqB,KAAKgG,UAClCkkB,EAAMlqB,KAAKgG,QAGTkkB,GAAO,EACT,MAAO,GAOT,GAHAA,KAAS,EACTD,KAAW,EAEPC,GAAOD,EACT,MAAO,GAGJqD,IAAUA,EAAW,QAE1B,MAAO,EACL,OAAQA,GAAA,IACD,MACH,OAAOgB,EAAStuB,KAAMiqB,EAAOC,GAAG,IAE7B,WACA,QACH,OAAOqE,EAAUvuB,KAAMiqB,EAAOC,GAAG,IAE9B,QACH,OAAOsE,EAAWxuB,KAAMiqB,EAAOC,GAAG,IAE/B,aACA,SACH,OAAOuE,EAAYzuB,KAAMiqB,EAAOC,GAAG,IAEhC,SACH,OAAOwE,EAAY1uB,KAAMiqB,EAAOC,GAAG,IAEhC,WACA,YACA,cACA,WACH,OAAOyE,EAAa3uB,KAAMiqB,EAAOC,GAAG,QAGpC,GAAIgE,EAAa,MAAM,IAAI7e,UAAU,qBAAuBie,GAC5DA,GAAYA,EAAW,IAAI5e,cAC3Bwf,GAAc,EAGtB,CAUA,SAASU,EAAM1M,EAAG2M,EAAGznB,GACnB,MAAMoI,EAAI0S,EAAE2M,GACZ3M,EAAE2M,GAAK3M,EAAE9a,GACT8a,EAAE9a,GAAKoI,CACT,CA2IA,SAASsf,EAAsBtoB,EAAQuoB,EAAK3e,EAAYkd,EAAU0B,GAEhE,GAAsB,IAAlBxoB,EAAOR,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfoK,GACTkd,EAAWld,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV4d,GAAY5d,KAEdA,EAAa4e,EAAM,EAAKxoB,EAAOR,OAAS,GAItCoK,EAAa,IAAGA,EAAa5J,EAAOR,OAASoK,GAC7CA,GAAc5J,EAAOR,OAAQ,CAC/B,GAAIgpB,EAAK,OAAQ,EACZ5e,EAAa5J,EAAOR,OAAS,CACtC,SAAaoK,EAAa,EAAG,CACzB,IAAI4e,EACC,OAAQ,EADJ5e,EAAa,CAEvB,CAQD,GALmB,kBAAR2e,IACTA,EAAMlD,EAAOtb,KAAKwe,EAAKzB,IAIrBzB,EAAOkC,SAASgB,GAElB,OAAmB,IAAfA,EAAI/oB,QACE,EAEHipB,EAAazoB,EAAQuoB,EAAK3e,EAAYkd,EAAU0B,GAC3D,GAA4B,kBAARD,EAEhB,OADAA,GAAY,IACgC,oBAAjC7sB,WAAWgQ,UAAU/I,QAC1B6lB,EACK9sB,WAAWgQ,UAAU/I,QAAQzE,KAAK8B,EAAQuoB,EAAK3e,GAE/ClO,WAAWgQ,UAAUgd,YAAYxqB,KAAK8B,EAAQuoB,EAAK3e,GAGvD6e,EAAazoB,EAAQ,CAACuoB,GAAM3e,EAAYkd,EAAU0B,GAG3D,MAAM,IAAI3f,UAAU,uCACtB,CAEA,SAAS4f,EAActF,EAAKoF,EAAK3e,EAAYkd,EAAU0B,GACrD,IA0BIxf,EA1BA2f,EAAY,EACZC,EAAYzF,EAAI3jB,OAChBqpB,EAAYN,EAAI/oB,OAEpB,QAAiB,IAAbsnB,IACFA,EAAWzmB,OAAOymB,GAAU5e,cACX,SAAb4e,GAAoC,UAAbA,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI3D,EAAI3jB,OAAS,GAAK+oB,EAAI/oB,OAAS,EACjC,OAAQ,EAEVmpB,EAAY,EACZC,GAAa,EACbC,GAAa,EACbjf,GAAc,CACf,CAGH,SAAS4U,EAAMuH,EAAKzb,GAClB,OAAkB,IAAdqe,EACK5C,EAAIzb,GAEJyb,EAAI+C,aAAaxe,EAAIqe,EAE/B,CAGD,GAAIH,EAAK,CACP,IAAIO,GAAc,EAClB,IAAK/f,EAAIY,EAAYZ,EAAI4f,EAAW5f,IAClC,GAAIwV,EAAK2E,EAAKna,KAAOwV,EAAK+J,GAAqB,IAAhBQ,EAAoB,EAAI/f,EAAI+f,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa/f,GAChCA,EAAI+f,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmB/f,GAAKA,EAAI+f,GAChCA,GAAc,CAGtB,MAEI,IADInf,EAAaif,EAAYD,IAAWhf,EAAagf,EAAYC,GAC5D7f,EAAIY,EAAYZ,GAAK,EAAGA,IAAK,CAChC,IAAIggB,GAAQ,EACZ,IAAK,IAAIjgB,EAAI,EAAGA,EAAI8f,EAAW9f,IAC7B,GAAIyV,EAAK2E,EAAKna,EAAID,KAAOyV,EAAK+J,EAAKxf,GAAI,CACrCigB,GAAQ,EACR,KACD,CAEH,GAAIA,EAAO,OAAOhgB,CACnB,CAGH,OAAQ,CACV,CAcA,SAASigB,EAAUlD,EAAK7a,EAAQ+Y,EAAQzkB,GACtCykB,EAASnG,OAAOmG,IAAW,EAC3B,MAAMiF,EAAYnD,EAAIvmB,OAASykB,EAC1BzkB,GAGHA,EAASse,OAAOte,GACZA,EAAS0pB,IACX1pB,EAAS0pB,IAJX1pB,EAAS0pB,EAQX,MAAMC,EAASje,EAAO1L,OAKtB,IAAIwJ,EACJ,IAJIxJ,EAAS2pB,EAAS,IACpB3pB,EAAS2pB,EAAS,GAGfngB,EAAI,EAAGA,EAAIxJ,IAAUwJ,EAAG,CAC3B,MAAMogB,EAASC,SAASne,EAAOoe,OAAW,EAAJtgB,EAAO,GAAI,IACjD,GAAIwe,GAAY4B,GAAS,OAAOpgB,EAChC+c,EAAI9B,EAASjb,GAAKogB,CACnB,CACD,OAAOpgB,CACT,CAEA,SAASugB,EAAWxD,EAAK7a,EAAQ+Y,EAAQzkB,GACvC,OAAOgqB,GAAW7B,EAAYzc,EAAQ6a,EAAIvmB,OAASykB,GAAS8B,EAAK9B,EAAQzkB,EAC3E,CAEA,SAASiqB,EAAY1D,EAAK7a,EAAQ+Y,EAAQzkB,GACxC,OAAOgqB,GAAWE,GAAaxe,GAAS6a,EAAK9B,EAAQzkB,EACvD,CAEA,SAASmqB,EAAa5D,EAAK7a,EAAQ+Y,EAAQzkB,GACzC,OAAOgqB,GAAW5B,GAAc1c,GAAS6a,EAAK9B,EAAQzkB,EACxD,CAEA,SAASoqB,EAAW7D,EAAK7a,EAAQ+Y,EAAQzkB,GACvC,OAAOgqB,GAAWK,GAAe3e,EAAQ6a,EAAIvmB,OAASykB,GAAS8B,EAAK9B,EAAQzkB,EAC9E,CA8EA,SAAS0oB,EAAanC,EAAKtC,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQqC,EAAIvmB,OACtBwlB,EAAOxC,cAAcuD,GAErBf,EAAOxC,cAAcuD,EAAIroB,MAAM+lB,EAAOC,GAEjD,CAEA,SAASqE,EAAWhC,EAAKtC,EAAOC,GAC9BA,EAAM/jB,KAAKmqB,IAAI/D,EAAIvmB,OAAQkkB,GAC3B,MAAMqG,EAAM,GAEZ,IAAI/gB,EAAIya,EACR,MAAOza,EAAI0a,EAAK,CACd,MAAMsG,EAAYjE,EAAI/c,GACtB,IAAIihB,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAIhhB,EAAIkhB,GAAoBxG,EAAK,CAC/B,IAAIyG,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GAAA,KACD,EACCF,EAAY,MACdC,EAAYD,GAEd,WACG,EACHG,EAAapE,EAAI/c,EAAI,GACO,OAAV,IAAbmhB,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,WACG,EACHH,EAAapE,EAAI/c,EAAI,GACrBohB,EAAYrE,EAAI/c,EAAI,GACQ,OAAV,IAAbmhB,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,WACG,EACHH,EAAapE,EAAI/c,EAAI,GACrBohB,EAAYrE,EAAI/c,EAAI,GACpBqhB,EAAatE,EAAI/c,EAAI,GACO,OAAV,IAAbmhB,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,IAIrB,CAEiB,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAIhN,KAAKkN,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBF,EAAIhN,KAAKkN,GACTjhB,GAAKkhB,CACN,CAED,OAAOK,EAAsBR,EAC/B,CA3+BA3E,EAAAoF,WAAqBhF,EAgBrBH,EAAOoF,oBAAsBhF,IAExBJ,EAAOoF,qBAA0C,qBAAZtkB,SACb,oBAAlBA,QAAQhI,OACjBgI,QAAQhI,MACN,iJAkBJH,OAAOuK,eAAe8c,EAAO3Z,UAAW,SAAU,CAChD2P,YAAY,EACZxT,IAAK,WACH,GAAKwd,EAAOkC,SAAS/tB,MACrB,OAAOA,KAAKmQ,MACb,IAGH3L,OAAOuK,eAAe8c,EAAO3Z,UAAW,SAAU,CAChD2P,YAAY,EACZxT,IAAK,WACH,GAAKwd,EAAOkC,SAAS/tB,MACrB,OAAOA,KAAKoQ,UACb,IAoCHyb,EAAOqF,SAAW,KA8DlBrF,EAAOtb,KAAO,SAAU7P,EAAO+rB,EAAkBzmB,GAC/C,OAAOuK,EAAK7P,EAAO+rB,EAAkBzmB,EACvC,EAIAxB,OAAO4nB,eAAeP,EAAO3Z,UAAWhQ,WAAWgQ,WACnD1N,OAAO4nB,eAAeP,EAAQ3pB,YA8B9B2pB,EAAOuB,MAAQ,SAAUzc,EAAM0c,EAAMC,GACnC,OAAOF,EAAMzc,EAAM0c,EAAMC,EAC3B,EAUAzB,EAAOa,YAAc,SAAU/b,GAC7B,OAAO+b,EAAY/b,EACrB,EAIAkb,EAAOsF,gBAAkB,SAAUxgB,GACjC,OAAO+b,EAAY/b,EACrB,EA6GAkb,EAAOkC,SAAW,SAAmB7L,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEkP,WACpBlP,IAAM2J,EAAO3Z,SACjB,EAEA2Z,EAAOwF,QAAU,SAAkBpP,EAAGC,GAGpC,GAFI2K,GAAW5K,EAAG/f,cAAa+f,EAAI4J,EAAOtb,KAAK0R,EAAGA,EAAEwI,OAAQxI,EAAE9f,aAC1D0qB,GAAW3K,EAAGhgB,cAAaggB,EAAI2J,EAAOtb,KAAK2R,EAAGA,EAAEuI,OAAQvI,EAAE/f,cACzD0pB,EAAOkC,SAAS9L,KAAO4J,EAAOkC,SAAS7L,GAC1C,MAAM,IAAI7S,UACR,yEAIJ,GAAI4S,IAAMC,EAAG,OAAO,EAEpB,IAAInZ,EAAIkZ,EAAEjc,OACNsrB,EAAIpP,EAAElc,OAEV,IAAK,IAAIwJ,EAAI,EAAG7I,EAAMR,KAAKmqB,IAAIvnB,EAAGuoB,GAAI9hB,EAAI7I,IAAO6I,EAC/C,GAAIyS,EAAEzS,KAAO0S,EAAE1S,GAAI,CACjBzG,EAAIkZ,EAAEzS,GACN8hB,EAAIpP,EAAE1S,GACN,KACD,CAGH,OAAIzG,EAAIuoB,GAAW,EACfA,EAAIvoB,EAAU,EACX,CACT,EAEA8iB,EAAO2B,WAAa,SAAqBF,GACvC,OAAQzmB,OAAOymB,GAAU5e,eAAa,IAC/B,UACA,WACA,YACA,YACA,aACA,aACA,aACA,WACA,YACA,cACA,WACH,OAAO,UAEP,OAAO,EAEb,EAEAmd,EAAO0F,OAAS,SAAiBC,EAAMxrB,GACrC,IAAKqK,MAAMC,QAAQkhB,GACjB,MAAM,IAAIniB,UAAU,+CAGtB,GAAoB,IAAhBmiB,EAAKxrB,OACP,OAAO6lB,EAAOuB,MAAM,GAGtB,IAAI5d,EACJ,QAAe,IAAXxJ,EAEF,IADAA,EAAS,EACJwJ,EAAI,EAAGA,EAAIgiB,EAAKxrB,SAAUwJ,EAC7BxJ,GAAUwrB,EAAKhiB,GAAGxJ,OAItB,MAAMQ,EAASqlB,EAAOa,YAAY1mB,GAClC,IAAIyrB,EAAM,EACV,IAAKjiB,EAAI,EAAGA,EAAIgiB,EAAKxrB,SAAUwJ,EAAG,CAChC,IAAI+c,EAAMiF,EAAKhiB,GACf,GAAIqd,GAAWN,EAAKrqB,YACduvB,EAAMlF,EAAIvmB,OAASQ,EAAOR,QACvB6lB,EAAOkC,SAASxB,KAAMA,EAAMV,EAAOtb,KAAKgc,IAC7CA,EAAIuB,KAAKtnB,EAAQirB,IAEjBvvB,WAAWgQ,UAAU9P,IAAIsC,KACvB8B,EACA+lB,EACAkF,OAGL,KAAW5F,EAAOkC,SAASxB,GAC1B,MAAM,IAAIld,UAAU,+CAEpBkd,EAAIuB,KAAKtnB,EAAQirB,EAClB,CACDA,GAAOlF,EAAIvmB,MACZ,CACD,OAAOQ,CACT,EAiDAqlB,EAAO1pB,WAAasrB,EA8EpB5B,EAAO3Z,UAAUkf,WAAY,EAQ7BvF,EAAO3Z,UAAUwf,OAAS,WACxB,MAAM/qB,EAAM3G,KAAKgG,OACjB,GAAIW,EAAM,IAAM,EACd,MAAM,IAAI2lB,WAAW,6CAEvB,IAAK,IAAI9c,EAAI,EAAGA,EAAI7I,EAAK6I,GAAK,EAC5Bof,EAAK5uB,KAAMwP,EAAGA,EAAI,GAEpB,OAAOxP,IACT,EAEA6rB,EAAO3Z,UAAUyf,OAAS,WACxB,MAAMhrB,EAAM3G,KAAKgG,OACjB,GAAIW,EAAM,IAAM,EACd,MAAM,IAAI2lB,WAAW,6CAEvB,IAAK,IAAI9c,EAAI,EAAGA,EAAI7I,EAAK6I,GAAK,EAC5Bof,EAAK5uB,KAAMwP,EAAGA,EAAI,GAClBof,EAAK5uB,KAAMwP,EAAI,EAAGA,EAAI,GAExB,OAAOxP,IACT,EAEA6rB,EAAO3Z,UAAU0f,OAAS,WACxB,MAAMjrB,EAAM3G,KAAKgG,OACjB,GAAIW,EAAM,IAAM,EACd,MAAM,IAAI2lB,WAAW,6CAEvB,IAAK,IAAI9c,EAAI,EAAGA,EAAI7I,EAAK6I,GAAK,EAC5Bof,EAAK5uB,KAAMwP,EAAGA,EAAI,GAClBof,EAAK5uB,KAAMwP,EAAI,EAAGA,EAAI,GACtBof,EAAK5uB,KAAMwP,EAAI,EAAGA,EAAI,GACtBof,EAAK5uB,KAAMwP,EAAI,EAAGA,EAAI,GAExB,OAAOxP,IACT,EAEA6rB,EAAO3Z,UAAU3H,SAAW,WAC1B,MAAMvE,EAAShG,KAAKgG,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArBjH,UAAUiH,OAAqBuoB,EAAUvuB,KAAM,EAAGgG,GAC/CqoB,EAAa/sB,MAAMtB,KAAMjB,UAClC,EAEA8sB,EAAO3Z,UAAU2f,eAAiBhG,EAAO3Z,UAAU3H,SAEnDshB,EAAO3Z,UAAU4f,OAAS,SAAiB5P,GACzC,IAAK2J,EAAOkC,SAAS7L,GAAI,MAAM,IAAI7S,UAAU,6BAC7C,OAAIrP,OAASkiB,GACsB,IAA5B2J,EAAOwF,QAAQrxB,KAAMkiB,EAC9B,EAEA2J,EAAO3Z,UAAU6f,QAAU,WACzB,IAAI9gB,EAAM,GACV,MAAM+gB,EAAMpG,EAAQG,kBAGpB,OAFA9a,EAAMjR,KAAKuK,SAAS,MAAO,EAAGynB,GAAK7qB,QAAQ,UAAW,OAAO8qB,OACzDjyB,KAAKgG,OAASgsB,IAAK/gB,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACIya,IACFG,EAAO3Z,UAAUwZ,GAAuBG,EAAO3Z,UAAU6f,SAG3DlG,EAAO3Z,UAAUmf,QAAU,SAAkB/iB,EAAQ2b,EAAOC,EAAKgI,EAAWC,GAI1E,GAHItF,GAAWve,EAAQpM,cACrBoM,EAASud,EAAOtb,KAAKjC,EAAQA,EAAOmc,OAAQnc,EAAOnM,cAEhD0pB,EAAOkC,SAASzf,GACnB,MAAM,IAAIe,UACR,wFAC2Bf,GAiB/B,QAbc,IAAV2b,IACFA,EAAQ,QAEE,IAARC,IACFA,EAAM5b,EAASA,EAAOtI,OAAS,QAEf,IAAdksB,IACFA,EAAY,QAEE,IAAZC,IACFA,EAAUnyB,KAAKgG,QAGbikB,EAAQ,GAAKC,EAAM5b,EAAOtI,QAAUksB,EAAY,GAAKC,EAAUnyB,KAAKgG,OACtE,MAAM,IAAIsmB,WAAW,sBAGvB,GAAI4F,GAAaC,GAAWlI,GAASC,EACnC,OAAO,EAET,GAAIgI,GAAaC,EACf,OAAQ,EAEV,GAAIlI,GAASC,EACX,OAAO,EAQT,GALAD,KAAW,EACXC,KAAS,EACTgI,KAAe,EACfC,KAAa,EAETnyB,OAASsO,EAAQ,OAAO,EAE5B,IAAIvF,EAAIopB,EAAUD,EACdZ,EAAIpH,EAAMD,EACd,MAAMtjB,EAAMR,KAAKmqB,IAAIvnB,EAAGuoB,GAElBc,EAAWpyB,KAAKkE,MAAMguB,EAAWC,GACjCE,EAAa/jB,EAAOpK,MAAM+lB,EAAOC,GAEvC,IAAK,IAAI1a,EAAI,EAAGA,EAAI7I,IAAO6I,EACzB,GAAI4iB,EAAS5iB,KAAO6iB,EAAW7iB,GAAI,CACjCzG,EAAIqpB,EAAS5iB,GACb8hB,EAAIe,EAAW7iB,GACf,KACD,CAGH,OAAIzG,EAAIuoB,GAAW,EACfA,EAAIvoB,EAAU,EACX,CACT,EA2HA8iB,EAAO3Z,UAAUqW,SAAW,SAAmBwG,EAAK3e,EAAYkd,GAC9D,OAAoD,IAA7CttB,KAAKmJ,QAAQ4lB,EAAK3e,EAAYkd,EACvC,EAEAzB,EAAO3Z,UAAU/I,QAAU,SAAkB4lB,EAAK3e,EAAYkd,GAC5D,OAAOwB,EAAqB9uB,KAAM+uB,EAAK3e,EAAYkd,GAAU,EAC/D,EAEAzB,EAAO3Z,UAAUgd,YAAc,SAAsBH,EAAK3e,EAAYkd,GACpE,OAAOwB,EAAqB9uB,KAAM+uB,EAAK3e,EAAYkd,GAAU,EAC/D,EA4CAzB,EAAO3Z,UAAUgT,MAAQ,SAAgBxT,EAAQ+Y,EAAQzkB,EAAQsnB,GAE/D,QAAe,IAAX7C,EACF6C,EAAW,OACXtnB,EAAShG,KAAKgG,OACdykB,EAAS,OAEV,QAAqB,IAAXzkB,GAA0C,kBAAXykB,EACxC6C,EAAW7C,EACXzkB,EAAShG,KAAKgG,OACdykB,EAAS,MAEb,KAAa6H,SAAS7H,GAUlB,MAAM,IAAI/qB,MACR,2EAVF+qB,KAAoB,EAChB6H,SAAStsB,IACXA,KAAoB,OACH,IAAbsnB,IAAwBA,EAAW,UAEvCA,EAAWtnB,EACXA,OAAS,EAMZ,CAED,MAAM0pB,EAAY1vB,KAAKgG,OAASykB,EAGhC,SAFe,IAAXzkB,GAAwBA,EAAS0pB,KAAW1pB,EAAS0pB,GAEpDhe,EAAO1L,OAAS,IAAMA,EAAS,GAAKykB,EAAS,IAAOA,EAASzqB,KAAKgG,OACrE,MAAM,IAAIsmB,WAAW,0CAGlBgB,IAAUA,EAAW,QAE1B,IAAIY,GAAc,EAClB,OACE,OAAQZ,GAAA,IACD,MACH,OAAOmC,EAASzvB,KAAM0R,EAAQ+Y,EAAQzkB,GAAM,IAEzC,WACA,QACH,OAAO+pB,EAAU/vB,KAAM0R,EAAQ+Y,EAAQzkB,GAAM,IAE1C,YACA,aACA,SACH,OAAOiqB,EAAWjwB,KAAM0R,EAAQ+Y,EAAQzkB,GAAM,IAE3C,SAEH,OAAOmqB,EAAYnwB,KAAM0R,EAAQ+Y,EAAQzkB,GAAM,IAE5C,WACA,YACA,cACA,WACH,OAAOoqB,EAAUpwB,KAAM0R,EAAQ+Y,EAAQzkB,GAAM,QAG7C,GAAIkoB,EAAa,MAAM,IAAI7e,UAAU,qBAAuBie,GAC5DA,GAAY,GAAKA,GAAU5e,cAC3Bwf,GAAc,EAGtB,EAEArC,EAAO3Z,UAAUqgB,OAAS,WACxB,MAAO,CACLlM,KAAM,SACNvmB,KAAMuQ,MAAM6B,UAAUhO,MAAMQ,KAAK1E,KAAKwyB,MAAQxyB,KAAM,GAExD,EAyFA,MAAMyyB,EAAuB,KAE7B,SAAS1B,EAAuB2B,GAC9B,MAAM/rB,EAAM+rB,EAAW1sB,OACvB,GAAIW,GAAO8rB,EACT,OAAO5rB,OAAOC,aAAaxF,MAAMuF,OAAQ6rB,GAI3C,IAAInC,EAAM,GACN/gB,EAAI,EACR,MAAOA,EAAI7I,EACT4pB,GAAO1pB,OAAOC,aAAaxF,MACzBuF,OACA6rB,EAAWxuB,MAAMsL,EAAGA,GAAKijB,IAG7B,OAAOlC,CACT,CAEA,SAAS/B,EAAYjC,EAAKtC,EAAOC,GAC/B,IAAIyI,EAAM,GACVzI,EAAM/jB,KAAKmqB,IAAI/D,EAAIvmB,OAAQkkB,GAE3B,IAAK,IAAI1a,EAAIya,EAAOza,EAAI0a,IAAO1a,EAC7BmjB,GAAO9rB,OAAOC,aAAsB,IAATylB,EAAI/c,IAEjC,OAAOmjB,CACT,CAEA,SAASlE,EAAalC,EAAKtC,EAAOC,GAChC,IAAIyI,EAAM,GACVzI,EAAM/jB,KAAKmqB,IAAI/D,EAAIvmB,OAAQkkB,GAE3B,IAAK,IAAI1a,EAAIya,EAAOza,EAAI0a,IAAO1a,EAC7BmjB,GAAO9rB,OAAOC,aAAaylB,EAAI/c,IAEjC,OAAOmjB,CACT,CAEA,SAASrE,EAAU/B,EAAKtC,EAAOC,GAC7B,MAAMvjB,EAAM4lB,EAAIvmB,SAEXikB,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMvjB,KAAKujB,EAAMvjB,GAExC,IAAIisB,EAAM,GACV,IAAK,IAAIpjB,EAAIya,EAAOza,EAAI0a,IAAO1a,EAC7BojB,GAAOC,GAAoBtG,EAAI/c,IAEjC,OAAOojB,CACT,CAEA,SAASjE,EAAcpC,EAAKtC,EAAOC,GACjC,MAAMxjB,EAAQ6lB,EAAIroB,MAAM+lB,EAAOC,GAC/B,IAAIqG,EAAM,GAEV,IAAK,IAAI/gB,EAAI,EAAGA,EAAI9I,EAAMV,OAAS,EAAGwJ,GAAK,EACzC+gB,GAAO1pB,OAAOC,aAAaJ,EAAM8I,GAAqB,IAAf9I,EAAM8I,EAAI,IAEnD,OAAO+gB,CACT,CAiCA,SAASuC,EAAarI,EAAQsI,EAAK/sB,GACjC,GAAKykB,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI6B,WAAW,sBAC3D,GAAI7B,EAASsI,EAAM/sB,EAAQ,MAAM,IAAIsmB,WAAW,wCAClD,CAyQA,SAAS0G,EAAUzG,EAAK7rB,EAAO+pB,EAAQsI,EAAKf,EAAK1B,GAC/C,IAAKzE,EAAOkC,SAASxB,GAAM,MAAM,IAAIld,UAAU,+CAC/C,GAAI3O,EAAQsxB,GAAOtxB,EAAQ4vB,EAAK,MAAM,IAAIhE,WAAW,qCACrD,GAAI7B,EAASsI,EAAMxG,EAAIvmB,OAAQ,MAAM,IAAIsmB,WAAW,qBACtD,CA+FA,SAAS2G,EAAgB1G,EAAK7rB,EAAO+pB,EAAQ6F,EAAK0B,GAChDkB,EAAWxyB,EAAO4vB,EAAK0B,EAAKzF,EAAK9B,EAAQ,GAEzC,IAAI0I,EAAK7O,OAAO5jB,EAAQ0yB,OAAO,aAC/B7G,EAAI9B,KAAY0I,EAChBA,IAAW,EACX5G,EAAI9B,KAAY0I,EAChBA,IAAW,EACX5G,EAAI9B,KAAY0I,EAChBA,IAAW,EACX5G,EAAI9B,KAAY0I,EAChB,IAAIE,EAAK/O,OAAO5jB,GAAS0yB,OAAO,IAAMA,OAAO,aAQ7C,OAPA7G,EAAI9B,KAAY4I,EAChBA,IAAW,EACX9G,EAAI9B,KAAY4I,EAChBA,IAAW,EACX9G,EAAI9B,KAAY4I,EAChBA,IAAW,EACX9G,EAAI9B,KAAY4I,EACT5I,CACT,CAEA,SAAS6I,EAAgB/G,EAAK7rB,EAAO+pB,EAAQ6F,EAAK0B,GAChDkB,EAAWxyB,EAAO4vB,EAAK0B,EAAKzF,EAAK9B,EAAQ,GAEzC,IAAI0I,EAAK7O,OAAO5jB,EAAQ0yB,OAAO,aAC/B7G,EAAI9B,EAAS,GAAK0I,EAClBA,IAAW,EACX5G,EAAI9B,EAAS,GAAK0I,EAClBA,IAAW,EACX5G,EAAI9B,EAAS,GAAK0I,EAClBA,IAAW,EACX5G,EAAI9B,EAAS,GAAK0I,EAClB,IAAIE,EAAK/O,OAAO5jB,GAAS0yB,OAAO,IAAMA,OAAO,aAQ7C,OAPA7G,EAAI9B,EAAS,GAAK4I,EAClBA,IAAW,EACX9G,EAAI9B,EAAS,GAAK4I,EAClBA,IAAW,EACX9G,EAAI9B,EAAS,GAAK4I,EAClBA,IAAW,EACX9G,EAAI9B,GAAU4I,EACP5I,EAAS,CAClB,CAkHA,SAAS8I,EAAchH,EAAK7rB,EAAO+pB,EAAQsI,EAAKf,EAAK1B,GACnD,GAAI7F,EAASsI,EAAMxG,EAAIvmB,OAAQ,MAAM,IAAIsmB,WAAW,sBACpD,GAAI7B,EAAS,EAAG,MAAM,IAAI6B,WAAW,qBACvC,CAEA,SAASkH,EAAYjH,EAAK7rB,EAAO+pB,EAAQgJ,EAAcC,GAOrD,OANAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GACHH,EAAahH,EAAK7rB,EAAO+pB,EAAQ,GAEnCgB,EAAQvG,MAAMqH,EAAK7rB,EAAO+pB,EAAQgJ,EAAc,GAAI,GAC7ChJ,EAAS,CAClB,CAUA,SAASkJ,EAAapH,EAAK7rB,EAAO+pB,EAAQgJ,EAAcC,GAOtD,OANAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GACHH,EAAahH,EAAK7rB,EAAO+pB,EAAQ,GAEnCgB,EAAQvG,MAAMqH,EAAK7rB,EAAO+pB,EAAQgJ,EAAc,GAAI,GAC7ChJ,EAAS,CAClB,CAzkBAoB,EAAO3Z,UAAUhO,MAAQ,SAAgB+lB,EAAOC,GAC9C,MAAMvjB,EAAM3G,KAAKgG,OACjBikB,IAAUA,EACVC,OAAc,IAARA,EAAoBvjB,IAAQujB,EAE9BD,EAAQ,GACVA,GAAStjB,EACLsjB,EAAQ,IAAGA,EAAQ,IACdA,EAAQtjB,IACjBsjB,EAAQtjB,GAGNujB,EAAM,GACRA,GAAOvjB,EACHujB,EAAM,IAAGA,EAAM,IACVA,EAAMvjB,IACfujB,EAAMvjB,GAGJujB,EAAMD,IAAOC,EAAMD,GAEvB,MAAM2J,EAAS5zB,KAAK6zB,SAAS5J,EAAOC,GAIpC,OAFA1lB,OAAO4nB,eAAewH,EAAQ/H,EAAO3Z,WAE9B0hB,CACT,EAUA/H,EAAO3Z,UAAU4hB,WACjBjI,EAAO3Z,UAAU6hB,WAAa,SAAqBtJ,EAAQuJ,EAAYN,GACrEjJ,KAAoB,EACpBuJ,KAA4B,EACvBN,GAAUZ,EAAYrI,EAAQuJ,EAAYh0B,KAAKgG,QAEpD,IAAI+oB,EAAM/uB,KAAKyqB,GACXwJ,EAAM,EACNzkB,EAAI,EACR,QAASA,EAAIwkB,IAAeC,GAAO,KACjClF,GAAO/uB,KAAKyqB,EAASjb,GAAKykB,EAG5B,OAAOlF,CACT,EAEAlD,EAAO3Z,UAAUgiB,WACjBrI,EAAO3Z,UAAUiiB,WAAa,SAAqB1J,EAAQuJ,EAAYN,GACrEjJ,KAAoB,EACpBuJ,KAA4B,EACvBN,GACHZ,EAAYrI,EAAQuJ,EAAYh0B,KAAKgG,QAGvC,IAAI+oB,EAAM/uB,KAAKyqB,IAAWuJ,GACtBC,EAAM,EACV,MAAOD,EAAa,IAAMC,GAAO,KAC/BlF,GAAO/uB,KAAKyqB,IAAWuJ,GAAcC,EAGvC,OAAOlF,CACT,EAEAlD,EAAO3Z,UAAUkiB,UACjBvI,EAAO3Z,UAAUmiB,UAAY,SAAoB5J,EAAQiJ,GAGvD,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACpChG,KAAKyqB,EACd,EAEAoB,EAAO3Z,UAAUoiB,aACjBzI,EAAO3Z,UAAUqiB,aAAe,SAAuB9J,EAAQiJ,GAG7D,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACpChG,KAAKyqB,GAAWzqB,KAAKyqB,EAAS,IAAM,CAC7C,EAEAoB,EAAO3Z,UAAUsiB,aACjB3I,EAAO3Z,UAAUod,aAAe,SAAuB7E,EAAQiJ,GAG7D,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACnChG,KAAKyqB,IAAW,EAAKzqB,KAAKyqB,EAAS,EAC7C,EAEAoB,EAAO3Z,UAAUuiB,aACjB5I,EAAO3Z,UAAUwiB,aAAe,SAAuBjK,EAAQiJ,GAI7D,OAHAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,SAElChG,KAAKyqB,GACTzqB,KAAKyqB,EAAS,IAAM,EACpBzqB,KAAKyqB,EAAS,IAAM,IACD,SAAnBzqB,KAAKyqB,EAAS,EACrB,EAEAoB,EAAO3Z,UAAUyiB,aACjB9I,EAAO3Z,UAAU0iB,aAAe,SAAuBnK,EAAQiJ,GAI7D,OAHAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QAEpB,SAAfhG,KAAKyqB,IACTzqB,KAAKyqB,EAAS,IAAM,GACrBzqB,KAAKyqB,EAAS,IAAM,EACrBzqB,KAAKyqB,EAAS,GAClB,EAEAoB,EAAO3Z,UAAU2iB,gBAAkBC,IAAmB,SAA0BrK,GAC9EA,KAAoB,EACpBsK,EAAetK,EAAQ,UACvB,MAAMuK,EAAQh1B,KAAKyqB,GACbwK,EAAOj1B,KAAKyqB,EAAS,QACb,IAAVuK,QAAgC,IAATC,GACzBC,EAAYzK,EAAQzqB,KAAKgG,OAAS,GAGpC,MAAMmtB,EAAK6B,EACQ,IAAjBh1B,OAAOyqB,GACU,MAAjBzqB,OAAOyqB,GACPzqB,OAAOyqB,GAAU,GAAK,GAElB4I,EAAKrzB,OAAOyqB,GACC,IAAjBzqB,OAAOyqB,GACU,MAAjBzqB,OAAOyqB,GACPwK,EAAO,GAAK,GAEd,OAAO7B,OAAOD,IAAOC,OAAOC,IAAOD,OAAO,IAC5C,IAEAvH,EAAO3Z,UAAUijB,gBAAkBL,IAAmB,SAA0BrK,GAC9EA,KAAoB,EACpBsK,EAAetK,EAAQ,UACvB,MAAMuK,EAAQh1B,KAAKyqB,GACbwK,EAAOj1B,KAAKyqB,EAAS,QACb,IAAVuK,QAAgC,IAATC,GACzBC,EAAYzK,EAAQzqB,KAAKgG,OAAS,GAGpC,MAAMqtB,EAAK2B,EAAQ,GAAK,GACL,MAAjBh1B,OAAOyqB,GACU,IAAjBzqB,OAAOyqB,GACPzqB,OAAOyqB,GAEH0I,EAAKnzB,OAAOyqB,GAAU,GAAK,GACd,MAAjBzqB,OAAOyqB,GACU,IAAjBzqB,OAAOyqB,GACPwK,EAEF,OAAQ7B,OAAOC,IAAOD,OAAO,KAAOA,OAAOD,EAC7C,IAEAtH,EAAO3Z,UAAUkjB,UAAY,SAAoB3K,EAAQuJ,EAAYN,GACnEjJ,KAAoB,EACpBuJ,KAA4B,EACvBN,GAAUZ,EAAYrI,EAAQuJ,EAAYh0B,KAAKgG,QAEpD,IAAI+oB,EAAM/uB,KAAKyqB,GACXwJ,EAAM,EACNzkB,EAAI,EACR,QAASA,EAAIwkB,IAAeC,GAAO,KACjClF,GAAO/uB,KAAKyqB,EAASjb,GAAKykB,EAM5B,OAJAA,GAAO,IAEHlF,GAAOkF,IAAKlF,GAAO5oB,KAAKilB,IAAI,EAAG,EAAI4I,IAEhCjF,CACT,EAEAlD,EAAO3Z,UAAUmjB,UAAY,SAAoB5K,EAAQuJ,EAAYN,GACnEjJ,KAAoB,EACpBuJ,KAA4B,EACvBN,GAAUZ,EAAYrI,EAAQuJ,EAAYh0B,KAAKgG,QAEpD,IAAIwJ,EAAIwkB,EACJC,EAAM,EACNlF,EAAM/uB,KAAKyqB,IAAWjb,GAC1B,MAAOA,EAAI,IAAMykB,GAAO,KACtBlF,GAAO/uB,KAAKyqB,IAAWjb,GAAKykB,EAM9B,OAJAA,GAAO,IAEHlF,GAAOkF,IAAKlF,GAAO5oB,KAAKilB,IAAI,EAAG,EAAI4I,IAEhCjF,CACT,EAEAlD,EAAO3Z,UAAUojB,SAAW,SAAmB7K,EAAQiJ,GAGrD,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACtB,IAAfhG,KAAKyqB,IAC0B,GAA5B,IAAOzqB,KAAKyqB,GAAU,GADKzqB,KAAKyqB,EAE3C,EAEAoB,EAAO3Z,UAAUqjB,YAAc,SAAsB9K,EAAQiJ,GAC3DjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QAC3C,MAAM+oB,EAAM/uB,KAAKyqB,GAAWzqB,KAAKyqB,EAAS,IAAM,EAChD,OAAc,MAANsE,EAAsB,WAANA,EAAmBA,CAC7C,EAEAlD,EAAO3Z,UAAUsjB,YAAc,SAAsB/K,EAAQiJ,GAC3DjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QAC3C,MAAM+oB,EAAM/uB,KAAKyqB,EAAS,GAAMzqB,KAAKyqB,IAAW,EAChD,OAAc,MAANsE,EAAsB,WAANA,EAAmBA,CAC7C,EAEAlD,EAAO3Z,UAAUujB,YAAc,SAAsBhL,EAAQiJ,GAI3D,OAHAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QAEnChG,KAAKyqB,GACVzqB,KAAKyqB,EAAS,IAAM,EACpBzqB,KAAKyqB,EAAS,IAAM,GACpBzqB,KAAKyqB,EAAS,IAAM,EACzB,EAEAoB,EAAO3Z,UAAUwjB,YAAc,SAAsBjL,EAAQiJ,GAI3D,OAHAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QAEnChG,KAAKyqB,IAAW,GACrBzqB,KAAKyqB,EAAS,IAAM,GACpBzqB,KAAKyqB,EAAS,IAAM,EACpBzqB,KAAKyqB,EAAS,EACnB,EAEAoB,EAAO3Z,UAAUyjB,eAAiBb,IAAmB,SAAyBrK,GAC5EA,KAAoB,EACpBsK,EAAetK,EAAQ,UACvB,MAAMuK,EAAQh1B,KAAKyqB,GACbwK,EAAOj1B,KAAKyqB,EAAS,QACb,IAAVuK,QAAgC,IAATC,GACzBC,EAAYzK,EAAQzqB,KAAKgG,OAAS,GAGpC,MAAM+oB,EAAM/uB,KAAKyqB,EAAS,GACL,IAAnBzqB,KAAKyqB,EAAS,GACK,MAAnBzqB,KAAKyqB,EAAS,IACbwK,GAAQ,IAEX,OAAQ7B,OAAOrE,IAAQqE,OAAO,KAC5BA,OAAO4B,EACU,IAAjBh1B,OAAOyqB,GACU,MAAjBzqB,OAAOyqB,GACPzqB,OAAOyqB,GAAU,GAAK,GAC1B,IAEAoB,EAAO3Z,UAAU0jB,eAAiBd,IAAmB,SAAyBrK,GAC5EA,KAAoB,EACpBsK,EAAetK,EAAQ,UACvB,MAAMuK,EAAQh1B,KAAKyqB,GACbwK,EAAOj1B,KAAKyqB,EAAS,QACb,IAAVuK,QAAgC,IAATC,GACzBC,EAAYzK,EAAQzqB,KAAKgG,OAAS,GAGpC,MAAM+oB,GAAOiG,GAAS,IACH,MAAjBh1B,OAAOyqB,GACU,IAAjBzqB,OAAOyqB,GACPzqB,OAAOyqB,GAET,OAAQ2I,OAAOrE,IAAQqE,OAAO,KAC5BA,OAAOpzB,OAAOyqB,GAAU,GAAK,GACZ,MAAjBzqB,OAAOyqB,GACU,IAAjBzqB,OAAOyqB,GACPwK,EACJ,IAEApJ,EAAO3Z,UAAU2jB,YAAc,SAAsBpL,EAAQiJ,GAG3D,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACpCylB,EAAQzG,KAAKhlB,KAAMyqB,GAAQ,EAAM,GAAI,EAC9C,EAEAoB,EAAO3Z,UAAU4jB,YAAc,SAAsBrL,EAAQiJ,GAG3D,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACpCylB,EAAQzG,KAAKhlB,KAAMyqB,GAAQ,EAAO,GAAI,EAC/C,EAEAoB,EAAO3Z,UAAU6jB,aAAe,SAAuBtL,EAAQiJ,GAG7D,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACpCylB,EAAQzG,KAAKhlB,KAAMyqB,GAAQ,EAAM,GAAI,EAC9C,EAEAoB,EAAO3Z,UAAU8jB,aAAe,SAAuBvL,EAAQiJ,GAG7D,OAFAjJ,KAAoB,EACfiJ,GAAUZ,EAAYrI,EAAQ,EAAGzqB,KAAKgG,QACpCylB,EAAQzG,KAAKhlB,KAAMyqB,GAAQ,EAAO,GAAI,EAC/C,EAQAoB,EAAO3Z,UAAU+jB,YACjBpK,EAAO3Z,UAAUgkB,YAAc,SAAsBx1B,EAAO+pB,EAAQuJ,EAAYN,GAI9E,GAHAhzB,GAASA,EACT+pB,KAAoB,EACpBuJ,KAA4B,GACvBN,EAAU,CACb,MAAMyC,EAAWhwB,KAAKilB,IAAI,EAAG,EAAI4I,GAAc,EAC/ChB,EAAShzB,KAAMU,EAAO+pB,EAAQuJ,EAAYmC,EAAU,EACrD,CAED,IAAIlC,EAAM,EACNzkB,EAAI,EACRxP,KAAKyqB,GAAkB,IAAR/pB,EACf,QAAS8O,EAAIwkB,IAAeC,GAAO,KACjCj0B,KAAKyqB,EAASjb,GAAM9O,EAAQuzB,EAAO,IAGrC,OAAOxJ,EAASuJ,CAClB,EAEAnI,EAAO3Z,UAAUkkB,YACjBvK,EAAO3Z,UAAUmkB,YAAc,SAAsB31B,EAAO+pB,EAAQuJ,EAAYN,GAI9E,GAHAhzB,GAASA,EACT+pB,KAAoB,EACpBuJ,KAA4B,GACvBN,EAAU,CACb,MAAMyC,EAAWhwB,KAAKilB,IAAI,EAAG,EAAI4I,GAAc,EAC/ChB,EAAShzB,KAAMU,EAAO+pB,EAAQuJ,EAAYmC,EAAU,EACrD,CAED,IAAI3mB,EAAIwkB,EAAa,EACjBC,EAAM,EACVj0B,KAAKyqB,EAASjb,GAAa,IAAR9O,EACnB,QAAS8O,GAAK,IAAMykB,GAAO,KACzBj0B,KAAKyqB,EAASjb,GAAM9O,EAAQuzB,EAAO,IAGrC,OAAOxJ,EAASuJ,CAClB,EAEAnI,EAAO3Z,UAAUokB,WACjBzK,EAAO3Z,UAAUqkB,WAAa,SAAqB71B,EAAO+pB,EAAQiJ,GAKhE,OAJAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,IAAM,GACtDzqB,KAAKyqB,GAAmB,IAAR/pB,EACT+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUskB,cACjB3K,EAAO3Z,UAAUukB,cAAgB,SAAwB/1B,EAAO+pB,EAAQiJ,GAMtE,OALAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,MAAQ,GACxDzqB,KAAKyqB,GAAmB,IAAR/pB,EAChBV,KAAKyqB,EAAS,GAAM/pB,IAAU,EACvB+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUwkB,cACjB7K,EAAO3Z,UAAUykB,cAAgB,SAAwBj2B,EAAO+pB,EAAQiJ,GAMtE,OALAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,MAAQ,GACxDzqB,KAAKyqB,GAAW/pB,IAAU,EAC1BV,KAAKyqB,EAAS,GAAc,IAAR/pB,EACb+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAU0kB,cACjB/K,EAAO3Z,UAAU2kB,cAAgB,SAAwBn2B,EAAO+pB,EAAQiJ,GAQtE,OAPAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,WAAY,GAC5DzqB,KAAKyqB,EAAS,GAAM/pB,IAAU,GAC9BV,KAAKyqB,EAAS,GAAM/pB,IAAU,GAC9BV,KAAKyqB,EAAS,GAAM/pB,IAAU,EAC9BV,KAAKyqB,GAAmB,IAAR/pB,EACT+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAU4kB,cACjBjL,EAAO3Z,UAAU6kB,cAAgB,SAAwBr2B,EAAO+pB,EAAQiJ,GAQtE,OAPAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,WAAY,GAC5DzqB,KAAKyqB,GAAW/pB,IAAU,GAC1BV,KAAKyqB,EAAS,GAAM/pB,IAAU,GAC9BV,KAAKyqB,EAAS,GAAM/pB,IAAU,EAC9BV,KAAKyqB,EAAS,GAAc,IAAR/pB,EACb+pB,EAAS,CAClB,EA8CAoB,EAAO3Z,UAAU8kB,iBAAmBlC,IAAmB,SAA2Bp0B,EAAO+pB,EAAS,GAChG,OAAOwI,EAAejzB,KAAMU,EAAO+pB,EAAQ2I,OAAO,GAAIA,OAAO,sBAC/D,IAEAvH,EAAO3Z,UAAU+kB,iBAAmBnC,IAAmB,SAA2Bp0B,EAAO+pB,EAAS,GAChG,OAAO6I,EAAetzB,KAAMU,EAAO+pB,EAAQ2I,OAAO,GAAIA,OAAO,sBAC/D,IAEAvH,EAAO3Z,UAAUglB,WAAa,SAAqBx2B,EAAO+pB,EAAQuJ,EAAYN,GAG5E,GAFAhzB,GAASA,EACT+pB,KAAoB,GACfiJ,EAAU,CACb,MAAMyD,EAAQhxB,KAAKilB,IAAI,EAAI,EAAI4I,EAAc,GAE7ChB,EAAShzB,KAAMU,EAAO+pB,EAAQuJ,EAAYmD,EAAQ,GAAIA,EACvD,CAED,IAAI3nB,EAAI,EACJykB,EAAM,EACNmD,EAAM,EACVp3B,KAAKyqB,GAAkB,IAAR/pB,EACf,QAAS8O,EAAIwkB,IAAeC,GAAO,KAC7BvzB,EAAQ,GAAa,IAAR02B,GAAsC,IAAzBp3B,KAAKyqB,EAASjb,EAAI,KAC9C4nB,EAAM,GAERp3B,KAAKyqB,EAASjb,IAAO9O,EAAQuzB,GAAQ,GAAKmD,EAAM,IAGlD,OAAO3M,EAASuJ,CAClB,EAEAnI,EAAO3Z,UAAUmlB,WAAa,SAAqB32B,EAAO+pB,EAAQuJ,EAAYN,GAG5E,GAFAhzB,GAASA,EACT+pB,KAAoB,GACfiJ,EAAU,CACb,MAAMyD,EAAQhxB,KAAKilB,IAAI,EAAI,EAAI4I,EAAc,GAE7ChB,EAAShzB,KAAMU,EAAO+pB,EAAQuJ,EAAYmD,EAAQ,GAAIA,EACvD,CAED,IAAI3nB,EAAIwkB,EAAa,EACjBC,EAAM,EACNmD,EAAM,EACVp3B,KAAKyqB,EAASjb,GAAa,IAAR9O,EACnB,QAAS8O,GAAK,IAAMykB,GAAO,KACrBvzB,EAAQ,GAAa,IAAR02B,GAAsC,IAAzBp3B,KAAKyqB,EAASjb,EAAI,KAC9C4nB,EAAM,GAERp3B,KAAKyqB,EAASjb,IAAO9O,EAAQuzB,GAAQ,GAAKmD,EAAM,IAGlD,OAAO3M,EAASuJ,CAClB,EAEAnI,EAAO3Z,UAAUolB,UAAY,SAAoB52B,EAAO+pB,EAAQiJ,GAM9D,OALAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,KAAO,KACnD/pB,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCV,KAAKyqB,GAAmB,IAAR/pB,EACT+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUqlB,aAAe,SAAuB72B,EAAO+pB,EAAQiJ,GAMpE,OALAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,OAAS,OACzDzqB,KAAKyqB,GAAmB,IAAR/pB,EAChBV,KAAKyqB,EAAS,GAAM/pB,IAAU,EACvB+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUslB,aAAe,SAAuB92B,EAAO+pB,EAAQiJ,GAMpE,OALAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,OAAS,OACzDzqB,KAAKyqB,GAAW/pB,IAAU,EAC1BV,KAAKyqB,EAAS,GAAc,IAAR/pB,EACb+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUulB,aAAe,SAAuB/2B,EAAO+pB,EAAQiJ,GAQpE,OAPAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,YAAa,YAC7DzqB,KAAKyqB,GAAmB,IAAR/pB,EAChBV,KAAKyqB,EAAS,GAAM/pB,IAAU,EAC9BV,KAAKyqB,EAAS,GAAM/pB,IAAU,GAC9BV,KAAKyqB,EAAS,GAAM/pB,IAAU,GACvB+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUwlB,aAAe,SAAuBh3B,EAAO+pB,EAAQiJ,GASpE,OARAhzB,GAASA,EACT+pB,KAAoB,EACfiJ,GAAUV,EAAShzB,KAAMU,EAAO+pB,EAAQ,EAAG,YAAa,YACzD/pB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5CV,KAAKyqB,GAAW/pB,IAAU,GAC1BV,KAAKyqB,EAAS,GAAM/pB,IAAU,GAC9BV,KAAKyqB,EAAS,GAAM/pB,IAAU,EAC9BV,KAAKyqB,EAAS,GAAc,IAAR/pB,EACb+pB,EAAS,CAClB,EAEAoB,EAAO3Z,UAAUylB,gBAAkB7C,IAAmB,SAA0Bp0B,EAAO+pB,EAAS,GAC9F,OAAOwI,EAAejzB,KAAMU,EAAO+pB,GAAS2I,OAAO,sBAAuBA,OAAO,sBACnF,IAEAvH,EAAO3Z,UAAU0lB,gBAAkB9C,IAAmB,SAA0Bp0B,EAAO+pB,EAAS,GAC9F,OAAO6I,EAAetzB,KAAMU,EAAO+pB,GAAS2I,OAAO,sBAAuBA,OAAO,sBACnF,IAiBAvH,EAAO3Z,UAAU2lB,aAAe,SAAuBn3B,EAAO+pB,EAAQiJ,GACpE,OAAOF,EAAWxzB,KAAMU,EAAO+pB,GAAQ,EAAMiJ,EAC/C,EAEA7H,EAAO3Z,UAAU4lB,aAAe,SAAuBp3B,EAAO+pB,EAAQiJ,GACpE,OAAOF,EAAWxzB,KAAMU,EAAO+pB,GAAQ,EAAOiJ,EAChD,EAYA7H,EAAO3Z,UAAU6lB,cAAgB,SAAwBr3B,EAAO+pB,EAAQiJ,GACtE,OAAOC,EAAY3zB,KAAMU,EAAO+pB,GAAQ,EAAMiJ,EAChD,EAEA7H,EAAO3Z,UAAU8lB,cAAgB,SAAwBt3B,EAAO+pB,EAAQiJ,GACtE,OAAOC,EAAY3zB,KAAMU,EAAO+pB,GAAQ,EAAOiJ,EACjD,EAGA7H,EAAO3Z,UAAU4b,KAAO,SAAexf,EAAQ2pB,EAAahO,EAAOC,GACjE,IAAK2B,EAAOkC,SAASzf,GAAS,MAAM,IAAIe,UAAU,+BAQlD,GAPK4a,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMlqB,KAAKgG,QAC9BiyB,GAAe3pB,EAAOtI,SAAQiyB,EAAc3pB,EAAOtI,QAClDiyB,IAAaA,EAAc,GAC5B/N,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB3b,EAAOtI,QAAgC,IAAhBhG,KAAKgG,OAAc,OAAO,EAGrD,GAAIiyB,EAAc,EAChB,MAAM,IAAI3L,WAAW,6BAEvB,GAAIrC,EAAQ,GAAKA,GAASjqB,KAAKgG,OAAQ,MAAM,IAAIsmB,WAAW,sBAC5D,GAAIpC,EAAM,EAAG,MAAM,IAAIoC,WAAW,2BAG9BpC,EAAMlqB,KAAKgG,SAAQkkB,EAAMlqB,KAAKgG,QAC9BsI,EAAOtI,OAASiyB,EAAc/N,EAAMD,IACtCC,EAAM5b,EAAOtI,OAASiyB,EAAchO,GAGtC,MAAMtjB,EAAMujB,EAAMD,EAalB,OAXIjqB,OAASsO,GAAqD,oBAApCpM,WAAWgQ,UAAUgmB,WAEjDl4B,KAAKk4B,WAAWD,EAAahO,EAAOC,GAEpChoB,WAAWgQ,UAAU9P,IAAIsC,KACvB4J,EACAtO,KAAK6zB,SAAS5J,EAAOC,GACrB+N,GAIGtxB,CACT,EAMAklB,EAAO3Z,UAAUmb,KAAO,SAAe0B,EAAK9E,EAAOC,EAAKoD,GAEtD,GAAmB,kBAARyB,EAAkB,CAS3B,GARqB,kBAAV9E,GACTqD,EAAWrD,EACXA,EAAQ,EACRC,EAAMlqB,KAAKgG,QACa,kBAARkkB,IAChBoD,EAAWpD,EACXA,EAAMlqB,KAAKgG,aAEI,IAAbsnB,GAA8C,kBAAbA,EACnC,MAAM,IAAIje,UAAU,6BAEtB,GAAwB,kBAAbie,IAA0BzB,EAAO2B,WAAWF,GACrD,MAAM,IAAIje,UAAU,qBAAuBie,GAE7C,GAAmB,IAAfyB,EAAI/oB,OAAc,CACpB,MAAMpG,EAAOmvB,EAAIpf,WAAW,IACV,SAAb2d,GAAuB1tB,EAAO,KAClB,WAAb0tB,KAEFyB,EAAMnvB,EAET,CACL,KAA4B,kBAARmvB,EAChBA,GAAY,IACY,mBAARA,IAChBA,EAAMzK,OAAOyK,IAIf,GAAI9E,EAAQ,GAAKjqB,KAAKgG,OAASikB,GAASjqB,KAAKgG,OAASkkB,EACpD,MAAM,IAAIoC,WAAW,sBAGvB,GAAIpC,GAAOD,EACT,OAAOjqB,KAQT,IAAIwP,EACJ,GANAya,KAAkB,EAClBC,OAAc,IAARA,EAAoBlqB,KAAKgG,OAASkkB,IAAQ,EAE3C6E,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAKvf,EAAIya,EAAOza,EAAI0a,IAAO1a,EACzBxP,KAAKwP,GAAKuf,MAEP,CACL,MAAMroB,EAAQmlB,EAAOkC,SAASgB,GAC1BA,EACAlD,EAAOtb,KAAKwe,EAAKzB,GACf3mB,EAAMD,EAAMV,OAClB,GAAY,IAARW,EACF,MAAM,IAAI0I,UAAU,cAAgB0f,EAClC,qCAEJ,IAAKvf,EAAI,EAAGA,EAAI0a,EAAMD,IAASza,EAC7BxP,KAAKwP,EAAIya,GAASvjB,EAAM8I,EAAI7I,EAE/B,CAED,OAAO3G,IACT,EAMA,MAAMm4B,EAAS,CAAE,EACjB,SAASC,EAAGC,EAAKC,EAAYC,GAC3BJ,EAAOE,GAAO,cAAwBE,EACpCz5B,cACEiB,QAEAyE,OAAOuK,eAAe/O,KAAM,UAAW,CACrCU,MAAO43B,EAAWh3B,MAAMtB,KAAMjB,WAC9BgjB,UAAU,EACVD,cAAc,IAIhB9hB,KAAKhB,KAAO,GAAGgB,KAAKhB,SAASq5B,KAG7Br4B,KAAKw4B,aAEEx4B,KAAKhB,IACb,CAEGiB,WACF,OAAOo4B,CACR,CAEGp4B,SAAMS,GACR8D,OAAOuK,eAAe/O,KAAM,OAAQ,CAClC8hB,cAAc,EACdD,YAAY,EACZnhB,QACAqhB,UAAU,GAEb,CAEDxX,WACE,MAAO,GAAGvK,KAAKhB,SAASq5B,OAASr4B,KAAKH,SACvC,EAEL,CA+BA,SAAS44B,EAAuB1J,GAC9B,IAAIwB,EAAM,GACN/gB,EAAIuf,EAAI/oB,OACZ,MAAMikB,EAAmB,MAAX8E,EAAI,GAAa,EAAI,EACnC,KAAOvf,GAAKya,EAAQ,EAAGza,GAAK,EAC1B+gB,EAAM,IAAIxB,EAAI7qB,MAAMsL,EAAI,EAAGA,KAAK+gB,IAElC,MAAO,GAAGxB,EAAI7qB,MAAM,EAAGsL,KAAK+gB,GAC9B,CAKA,SAASmI,EAAanM,EAAK9B,EAAQuJ,GACjCe,EAAetK,EAAQ,eACH,IAAhB8B,EAAI9B,SAAsD,IAA7B8B,EAAI9B,EAASuJ,IAC5CkB,EAAYzK,EAAQ8B,EAAIvmB,QAAUguB,EAAa,GAEnD,CAEA,SAASd,EAAYxyB,EAAO4vB,EAAK0B,EAAKzF,EAAK9B,EAAQuJ,GACjD,GAAItzB,EAAQsxB,GAAOtxB,EAAQ4vB,EAAK,CAC9B,MAAMzB,EAAmB,kBAARyB,EAAmB,IAAM,GAC1C,IAAIqI,EAWJ,MARIA,EAFA3E,EAAa,EACH,IAAR1D,GAAaA,IAAQ8C,OAAO,GACtB,OAAOvE,YAAYA,QAA2B,GAAlBmF,EAAa,KAASnF,IAElD,SAASA,QAA2B,GAAlBmF,EAAa,GAAS,IAAInF,iBACtB,GAAlBmF,EAAa,GAAS,IAAInF,IAGhC,MAAMyB,IAAMzB,YAAYmD,IAAMnD,IAElC,IAAIsJ,EAAOS,iBAAiB,QAASD,EAAOj4B,EACnD,CACDg4B,EAAYnM,EAAK9B,EAAQuJ,EAC3B,CAEA,SAASe,EAAgBr0B,EAAO1B,GAC9B,GAAqB,kBAAV0B,EACT,MAAM,IAAIy3B,EAAOU,qBAAqB75B,EAAM,SAAU0B,EAE1D,CAEA,SAASw0B,EAAax0B,EAAOsF,EAAQqgB,GACnC,GAAIlgB,KAAKC,MAAM1F,KAAWA,EAExB,MADAq0B,EAAer0B,EAAO2lB,GAChB,IAAI8R,EAAOS,iBAAiBvS,GAAQ,SAAU,aAAc3lB,GAGpE,GAAIsF,EAAS,EACX,MAAM,IAAImyB,EAAOW,yBAGnB,MAAM,IAAIX,EAAOS,iBAAiBvS,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAYrgB,IAC7BtF,EACpC,CAvFA03B,EAAE,4BACA,SAAUp5B,GACR,OAAIA,EACK,GAAGA,gCAGL,gDACR,GAAEstB,YACL8L,EAAE,wBACA,SAAUp5B,EAAM0uB,GACd,MAAO,QAAQ1uB,4DAA+D0uB,GAC/E,GAAEre,WACL+oB,EAAE,oBACA,SAAUnnB,EAAK0nB,EAAOI,GACpB,IAAIC,EAAM,iBAAiB/nB,sBACvBgoB,EAAWF,EAWf,OAVIzU,OAAO4U,UAAUH,IAAU5yB,KAAKmlB,IAAIyN,GAAS,GAAK,GACpDE,EAAWR,EAAsB5xB,OAAOkyB,IACd,kBAAVA,IAChBE,EAAWpyB,OAAOkyB,IACdA,EAAQ3F,OAAO,IAAMA,OAAO,KAAO2F,IAAU3F,OAAO,IAAMA,OAAO,QACnE6F,EAAWR,EAAsBQ,IAEnCA,GAAY,KAEdD,GAAO,eAAeL,eAAmBM,IAClCD,CACR,GAAE1M,YAiEL,MAAM6M,EAAoB,oBAE1B,SAASC,EAAanoB,GAMpB,GAJAA,EAAMA,EAAIzJ,MAAM,KAAK,GAErByJ,EAAMA,EAAIghB,OAAO9qB,QAAQgyB,EAAmB,IAExCloB,EAAIjL,OAAS,EAAG,MAAO,GAE3B,MAAOiL,EAAIjL,OAAS,IAAM,EACxBiL,GAAY,IAEd,OAAOA,CACT,CAEA,SAASkd,EAAazc,EAAQ2nB,GAE5B,IAAI5I,EADJ4I,EAAQA,GAASlO,IAEjB,MAAMnlB,EAAS0L,EAAO1L,OACtB,IAAIszB,EAAgB,KACpB,MAAM5yB,EAAQ,GAEd,IAAK,IAAI8I,EAAI,EAAGA,EAAIxJ,IAAUwJ,EAAG,CAI/B,GAHAihB,EAAY/e,EAAO/B,WAAWH,GAG1BihB,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAK6I,EAAe,CAElB,GAAI7I,EAAY,MAAQ,EAEjB4I,GAAS,IAAM,GAAG3yB,EAAM6c,KAAK,IAAM,IAAM,KAC9C,QACV,IAAmB/T,EAAI,IAAMxJ,EAAQ,EAEtBqzB,GAAS,IAAM,GAAG3yB,EAAM6c,KAAK,IAAM,IAAM,KAC9C,QACD,CAGD+V,EAAgB7I,EAEhB,QACD,CAGD,GAAIA,EAAY,MAAQ,EACjB4I,GAAS,IAAM,GAAG3yB,EAAM6c,KAAK,IAAM,IAAM,KAC9C+V,EAAgB7I,EAChB,QACD,CAGDA,EAAkE,OAArD6I,EAAgB,OAAU,GAAK7I,EAAY,MACzD,MAAU6I,IAEJD,GAAS,IAAM,GAAG3yB,EAAM6c,KAAK,IAAM,IAAM,KAMhD,GAHA+V,EAAgB,KAGZ7I,EAAY,IAAM,CACpB,IAAK4I,GAAS,GAAK,EAAG,MACtB3yB,EAAM6c,KAAKkN,EACjB,SAAeA,EAAY,KAAO,CAC5B,IAAK4I,GAAS,GAAK,EAAG,MACtB3yB,EAAM6c,KACJkN,GAAa,EAAM,IACP,GAAZA,EAAmB,IAE3B,SAAeA,EAAY,MAAS,CAC9B,IAAK4I,GAAS,GAAK,EAAG,MACtB3yB,EAAM6c,KACJkN,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAE3B,WAAeA,EAAY,SASrB,MAAM,IAAI/wB,MAAM,sBARhB,IAAK25B,GAAS,GAAK,EAAG,MACtB3yB,EAAM6c,KACJkN,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAItB,CACF,CAED,OAAO/pB,CACT,CAEA,SAASwpB,GAAcjf,GACrB,MAAMzO,EAAY,GAClB,IAAK,IAAIgN,EAAI,EAAGA,EAAIyB,EAAIjL,SAAUwJ,EAEhChN,EAAU+gB,KAAyB,IAApBtS,EAAItB,WAAWH,IAEhC,OAAOhN,CACT,CAEA,SAAS6tB,GAAgBpf,EAAKooB,GAC5B,IAAI1mB,EAAG0gB,EAAIF,EACX,MAAM3wB,EAAY,GAClB,IAAK,IAAIgN,EAAI,EAAGA,EAAIyB,EAAIjL,SAAUwJ,EAAG,CACnC,IAAK6pB,GAAS,GAAK,EAAG,MAEtB1mB,EAAI1B,EAAItB,WAAWH,GACnB6jB,EAAK1gB,GAAK,EACVwgB,EAAKxgB,EAAI,IACTnQ,EAAU+gB,KAAK4P,GACf3wB,EAAU+gB,KAAK8P,EAChB,CAED,OAAO7wB,CACT,CAEA,SAAS4rB,GAAend,GACtB,OAAOua,EAAOzC,YAAYqQ,EAAYnoB,GACxC,CAEA,SAAS+e,GAAYuJ,EAAKC,EAAK/O,EAAQzkB,GACrC,IAAIwJ,EACJ,IAAKA,EAAI,EAAGA,EAAIxJ,IAAUwJ,EAAG,CAC3B,GAAKA,EAAIib,GAAU+O,EAAIxzB,QAAYwJ,GAAK+pB,EAAIvzB,OAAS,MACrDwzB,EAAIhqB,EAAIib,GAAU8O,EAAI/pB,EACvB,CACD,OAAOA,CACT,CAKA,SAASqd,GAAYlL,EAAK0E,GACxB,OAAO1E,aAAe0E,GACZ,MAAP1E,GAAkC,MAAnBA,EAAI7iB,aAA+C,MAAxB6iB,EAAI7iB,YAAYE,MACzD2iB,EAAI7iB,YAAYE,OAASqnB,EAAKrnB,IACpC,CACA,SAASgvB,GAAarM,GAEpB,OAAOA,IAAQA,CACjB,CAIA,MAAMkR,GAAuB,WAC3B,MAAM4G,EAAW,mBACXC,EAAQ,IAAIrpB,MAAM,KACxB,IAAK,IAAIb,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAMmqB,EAAU,GAAJnqB,EACZ,IAAK,IAAID,EAAI,EAAGA,EAAI,KAAMA,EACxBmqB,EAAMC,EAAMpqB,GAAKkqB,EAASjqB,GAAKiqB,EAASlqB,EAE3C,CACD,OAAOmqB,CACT,CAV6B,GAa7B,SAAS5E,GAAoB3V,GAC3B,MAAyB,qBAAXiU,OAAyBwG,GAAyBza,CAClE,CAEA,SAASya,KACP,MAAM,IAAIl6B,MAAM,uBAClB,C;;cCvjEA,IAAIm6B,EAAS1pB,GACT0b,EAASgO,EAAOhO,OAGpB,SAASiO,EAAWP,EAAKC,GACvB,IAAK,IAAI5X,KAAO2X,EACdC,EAAI5X,GAAO2X,EAAI3X,EAEnB,CASA,SAASmY,EAAYvN,EAAKC,EAAkBzmB,GAC1C,OAAO6lB,EAAOW,EAAKC,EAAkBzmB,EACvC,CAVI6lB,EAAOtb,MAAQsb,EAAOuB,OAASvB,EAAOa,aAAeb,EAAOsF,gBAC9D6I,EAAApO,QAAiBiO,GAGjBC,EAAUD,EAAQjO,GAClBA,EAAAC,OAAiBkO,GAOnBA,EAAW7nB,UAAY1N,OAAOy1B,OAAOpO,EAAO3Z,WAG5C4nB,EAAUjO,EAAQkO,GAElBA,EAAWxpB,KAAO,SAAUic,EAAKC,EAAkBzmB,GACjD,GAAmB,kBAARwmB,EACT,MAAM,IAAInd,UAAU,iCAEtB,OAAOwc,EAAOW,EAAKC,EAAkBzmB,EACvC,EAEA+zB,EAAW3M,MAAQ,SAAUzc,EAAM0c,EAAMC,GACvC,GAAoB,kBAAT3c,EACT,MAAM,IAAItB,UAAU,6BAEtB,IAAIkd,EAAMV,EAAOlb,GAUjB,YATa,IAAT0c,EACsB,kBAAbC,EACTf,EAAIc,KAAKA,EAAMC,GAEff,EAAIc,KAAKA,GAGXd,EAAIc,KAAK,GAEJd,CACT,EAEAwN,EAAWrN,YAAc,SAAU/b,GACjC,GAAoB,kBAATA,EACT,MAAM,IAAItB,UAAU,6BAEtB,OAAOwc,EAAOlb,EAChB,EAEAopB,EAAW5I,gBAAkB,SAAUxgB,GACrC,GAAoB,kBAATA,EACT,MAAM,IAAItB,UAAU,6BAEtB,OAAOwqB,EAAO/N,WAAWnb,EAC3B,C,iBCzDA,IAAIupB,GAAUC,GAAsBvO,QAACC,OACrC,SAASuO,GAAMhrB,GACb,GAAIA,EAASpJ,QAAU,IAAO,MAAM,IAAIqJ,UAAU,qBAElD,IADA,IAAIC,EAAW,IAAIpN,WAAW,KACrBqN,EAAI,EAAGA,EAAID,EAAStJ,OAAQuJ,IACnCD,EAASC,GAAK,IAEhB,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAASpJ,OAAQwJ,IAAK,CACxC,IAAIzG,EAAIqG,EAASK,OAAOD,GACpBE,EAAK3G,EAAE4G,WAAW,GACtB,GAAqB,MAAjBL,EAASI,GAAe,MAAM,IAAIL,UAAUtG,EAAI,iBACpDuG,EAASI,GAAMF,CAChB,CACD,IAAII,EAAOR,EAASpJ,OAChB6J,EAAST,EAASK,OAAO,GACzBK,EAAS3J,KAAK4J,IAAIH,GAAQzJ,KAAK4J,IAAI,KACnCC,EAAU7J,KAAK4J,IAAI,KAAO5J,KAAK4J,IAAIH,GACvC,SAAS5L,EAAQiM,GAEf,IADII,MAAMC,QAAQL,IAAWA,aAAkB/N,cAAc+N,EAASiqB,GAAQ3pB,KAAKN,KAC9EiqB,GAAQnM,SAAS9d,GAAW,MAAM,IAAIZ,UAAU,mBACrD,GAAsB,IAAlBY,EAAOjK,OAAgB,MAAO,GAElC,IAAIwK,EAAS,EACTxK,EAAS,EACTyK,EAAS,EACTC,EAAOT,EAAOjK,OAClB,MAAOyK,IAAWC,GAA2B,IAAnBT,EAAOQ,GAC/BA,IACAD,IAGF,IAAIG,GAASD,EAAOD,GAAUT,EAAU,IAAO,EAC3CY,EAAM,IAAI1O,WAAWyO,GAEzB,MAAOF,IAAWC,EAAM,CAItB,IAHA,IAAIG,EAAQZ,EAAOQ,GAEfK,EAAI,EACCC,EAAMJ,EAAO,GAAc,IAAVE,GAAeC,EAAI9K,KAAqB,IAAT+K,EAAaA,IAAOD,IAC3ED,GAAU,IAAMD,EAAIG,KAAU,EAC9BH,EAAIG,GAAQF,EAAQjB,IAAU,EAC9BiB,EAASA,EAAQjB,IAAU,EAE7B,GAAc,IAAViB,EAAe,MAAM,IAAInR,MAAM,kBACnCsG,EAAS8K,EACTL,GACD,CAED,IAAIO,EAAML,EAAO3K,EACjB,MAAOgL,IAAQL,GAAqB,IAAbC,EAAII,GACzBA,IAIF,IADA,IAAIC,EAAMpB,EAAOqB,OAAOV,GACjBQ,EAAML,IAAQK,EAAOC,GAAO7B,EAASK,OAAOmB,EAAII,IACvD,OAAOC,CACR,CACD,SAASE,EAAclB,GACrB,GAAsB,kBAAXA,EAAuB,MAAM,IAAIZ,UAAU,mBACtD,GAAsB,IAAlBY,EAAOjK,OAAgB,OAAOk0B,GAAQ9M,MAAM,GAChD,IAAIhc,EAAM,EAENZ,EAAS,EACTxK,EAAS,EACb,MAAOiK,EAAOmB,KAASvB,EACrBW,IACAY,IAGF,IAAIT,GAAUV,EAAOjK,OAASoL,GAAOtB,EAAU,IAAO,EAClDuB,EAAO,IAAInP,WAAWyO,GAE1B,MAAOV,EAAOmB,GAAM,CAElB,IAAIP,EAAQvB,EAASW,EAAON,WAAWyB,IAEvC,GAAc,MAAVP,EAAiB,OAErB,IADA,IAAIC,EAAI,EACCQ,EAAMX,EAAO,GAAc,IAAVE,GAAeC,EAAI9K,KAAqB,IAATsL,EAAaA,IAAOR,IAC3ED,GAAUjB,EAAOyB,EAAKC,KAAU,EAChCD,EAAKC,GAAQT,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE5B,GAAc,IAAVA,EAAe,MAAM,IAAInR,MAAM,kBACnCsG,EAAS8K,EACTM,GACD,CAED,IAAIG,EAAMZ,EAAO3K,EACjB,MAAOuL,IAAQZ,GAAsB,IAAdU,EAAKE,GAC1BA,IAEF,IAAIC,EAAM0oB,GAAQxN,YAAYlc,GAAUG,EAAOY,IAC/CC,EAAI6b,KAAK,EAAM,EAAG7c,GAClB,IAAIiB,EAAIjB,EACR,MAAOe,IAAQZ,EACba,EAAIC,KAAOJ,EAAKE,KAElB,OAAOC,CACR,CACD,SAASlN,EAAQoN,GACf,IAAIlL,EAAS2K,EAAaO,GAC1B,GAAIlL,EAAU,OAAOA,EACrB,MAAM,IAAI9G,MAAM,WAAakQ,EAAO,aACrC,CACD,MAAO,CACL5L,SACAmN,eACA7M,SAEJ,CACA,IC3GI+1B,GAAkCC,GAAgCC,GAAkCC,GAAmCC,GAAsCC,GAA4BC,GAAqDC,GAA+BC,GAAmCC,GAAgCC,GAAkCC,GAAqCC,GAA8BC,GAAgCC,GAAwCC,GAA4CC,GAAoCC,GD2GjmBC,GAAiBnB,GEtHboB,GAAQD,GACRE,GAAW,6DAEfC,GAAiBF,GAAMC,IDHnBE,GAA0B7d,YAAQA,WAAK8K,wBAA2B,SAAUgT,EAAUtvB,EAAO5L,EAAOm7B,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIxsB,UAAU,kCACtC,GAAa,MAATwsB,IAAiBC,EAAG,MAAM,IAAIzsB,UAAU,iDAC5C,GAAqB,oBAAV/C,EAAuBsvB,IAAatvB,IAAUwvB,GAAKxvB,EAAMyvB,IAAIH,GAAW,MAAM,IAAIvsB,UAAU,2EACvG,MAAiB,MAATwsB,EAAeC,EAAEp3B,KAAKk3B,EAAUl7B,GAASo7B,EAAIA,EAAEp7B,MAAQA,EAAQ4L,EAAMlK,IAAIw5B,EAAUl7B,GAASA,CACxG,EACIs7B,GAA0Ble,YAAQA,WAAK+K,wBAA2B,SAAU+S,EAAUtvB,EAAOuvB,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIzsB,UAAU,iDAC5C,GAAqB,oBAAV/C,EAAuBsvB,IAAatvB,IAAUwvB,GAAKxvB,EAAMyvB,IAAIH,GAAW,MAAM,IAAIvsB,UAAU,4EACvG,MAAgB,MAATwsB,EAAeC,EAAa,MAATD,EAAeC,EAAEp3B,KAAKk3B,GAAYE,EAAIA,EAAEp7B,MAAQ4L,EAAM+B,IAAIutB,EACxF,EAUO,MAAMK,WAA8BC,EAAAA,GACvCp9B,aAAY,OAAEqP,IACVpO,QACAs6B,GAAiC8B,IAAIn8B,MACrCs6B,GAA+Bl4B,IAAIpC,UAAM,GACzCu6B,GAAiCn4B,IAAIpC,UAAM,GAC3Cw6B,GAAkCp4B,IAAIpC,UAAM,GAC5Cy6B,GAAqCr4B,IAAIpC,UAAM,GAC/C06B,GAA2Bt4B,IAAIpC,UAAM,GACrC26B,GAAoDv4B,IAAIpC,UAAM,GAC9D46B,GAA8Bx4B,IAAIpC,UAAM,GACxC66B,GAAkCz4B,IAAIpC,KAAwB,qBAAX+G,QAA8C,qBAAb+C,SAC9EqM,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,WACN+kB,GAA+B94B,IAAIpC,MAAOo8B,IAEtC,GAAI,aAAcA,EAAY,CAC1B,MAAM/jB,EAAU2jB,GAAuBh8B,KAAM46B,GAA+B,KAAKziB,SAAS,GAEtF6jB,GAAuBh8B,KAAMs6B,GAAgC,OAAS0B,GAAuBh8B,KAAMy6B,GAAsC,MAAQpiB,IAAY2jB,GAAuBh8B,KAAMs6B,GAAgC,OAEtNjiB,EAEA2jB,GAAuBh8B,KAAMq6B,GAAkC,IAAKU,IAAkCr2B,KAAK1E,KAAMqY,IAIjHrY,KAAKuX,KAAK,QAAS,IAAIsB,EAAAA,IAEvBmjB,GAAuBh8B,KAAMq6B,GAAkC,IAAKW,IAAqCt2B,KAAK1E,OAGzH,CAEG,aAAco8B,GACdJ,GAAuBh8B,KAAMq6B,GAAkC,IAAKY,IAA8Bv2B,KAAK1E,KAC1G,IAEL27B,GAAuB37B,KAAM46B,GAA+BzsB,EAAQ,KACpEwtB,GAAuB37B,KAAMs6B,GAAgC,KAAM,KACnEqB,GAAuB37B,KAAMu6B,GAAkC,KAAM,KACrEoB,GAAuB37B,KAAMw6B,IAAmC,EAAO,KACvEmB,GAAuB37B,KAAMy6B,IAAsC,EAAO,KAC1EkB,GAAuB37B,KAAM06B,GAA4BsB,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAAS3T,IAAgB9L,GAAG,SAAUof,GAAuBh8B,KAAMk7B,GAAgC,MAAO,KACpOc,GAAuBh8B,KAAMq6B,GAAkC,IAAKY,IAA8Bv2B,KAAK1E,KAC1G,CACGhB,WACA,OAAOg9B,GAAuBh8B,KAAM46B,GAA+B,KAAK57B,IAC3E,CACGyJ,UACA,MAAO,gDACV,CACGsN,WACA,OAAOimB,GAAuBh8B,KAAM46B,GAA+B,KAAK7kB,IAC3E,CACGuB,iBACA,OAAO0kB,GAAuBh8B,KAAM66B,GAAmC,IAC1E,CACGhvB,gBACA,OAAOmwB,GAAuBh8B,KAAMu6B,GAAkC,IACzE,CACGljB,iBACA,OAAO2kB,GAAuBh8B,KAAMw6B,GAAmC,IAC1E,CACG3kB,mCACA,OAAOmmB,GAAuBh8B,KAAM26B,GAAqD,IAC5F,CACGxsB,aACA,OAAO6tB,GAAuBh8B,KAAM46B,GAA+B,IACtE,CACG0B,eACA,OAAO,CACV,CACDC,UACIZ,GAAuB37B,KAAMs6B,GAAgC,KAAM,KACnEqB,GAAuB37B,KAAMu6B,GAAkC,KAAM,KACrEoB,GAAuB37B,KAAMw6B,IAAmC,EAAO,KACvEmB,GAAuB37B,KAAMy6B,IAAsC,EAAO,KAC1E,MAAM5d,EAAMmf,GAAuBh8B,KAAM06B,GAA4B,KACjE7d,IACA8e,GAAuB37B,KAAM06B,GAA4B,KAAM,KAC/D7d,IAEP,CACD2f,oBACI,OAAOR,GAAuBh8B,KAAMq6B,GAAkC,IAAKS,IAAgCp2B,KAAK1E,KAAM,CAAEy8B,QAAQ,GACnI,CACDD,gBACI,OAAOR,GAAuBh8B,KAAMq6B,GAAkC,IAAKS,IAAgCp2B,KAAK1E,KACnH,CACDw8B,mBACI,GAAI/T,MAAsBuT,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SACvF,IACIV,GAAuB37B,KAAMy6B,IAAsC,EAAM,WACnEuB,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAAS5T,IAAoB7P,YACvG,OACMjU,GACH3E,KAAKuX,KAAK,QAAS,IAAImlB,EAAAA,GAAyB,MAAA/3B,OAAA,EAAAA,EAAO9E,QAAS8E,GACnE,SAEGg3B,GAAuB37B,KAAMy6B,IAAsC,EAAO,IAC7E,CAELuB,GAAuBh8B,KAAMq6B,GAAkC,IAAKW,IAAqCt2B,KAAK1E,KACjH,CACDw8B,sBAAsB3pB,EAAayG,EAAYjF,EAAU,CAAC,GACtD,IACI,MAAMgE,EAAU2jB,GAAuBh8B,KAAMs6B,GAAgC,KAC7E,IAAKjiB,EACD,MAAM,IAAIY,EAAAA,GACd,IAAI0jB,EACJ,GAAIhV,MAAgCqU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SACjG,GAAIhkB,EAAQgkB,SAAS9T,SAASZ,IAC1BgV,EAAUhV,OACb,MACQG,MAAyBkU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,YAC/FhkB,EAAQgkB,SAAS9T,SAAST,IAI1B,MAAM,IAAI8U,EAAAA,GAHVD,EAAU7U,EAIb,KACJ,MACQA,MAAyBkU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,UAM/F,MAAM,IAAIQ,EAAAA,GALV,IAAKxkB,EAAQgkB,SAAS9T,SAAST,IAC3B,MAAM,IAAI8U,EAAAA,GACdD,EAAU7U,EAIb,CACD,MAAMgV,EAAQzU,GAAoB/O,EAAWyjB,aAC7C,IAAK1kB,EAAQ2kB,OAAOzU,SAASuU,GACzB,MAAM,IAAIriB,EAAAA,GACd,IACI,MAAM,QAAEwiB,KAAYC,GAAgB7oB,EACpC,IAAIvB,EAaJ,IAZIqqB,EAAAA,EAAAA,GAAuBtqB,KACvB,MAAAoqB,OAAA,EAAAA,EAASj3B,SAAU6M,EAAY9Q,KAAKk7B,GACpCnqB,EAAwBD,EAAYE,cAGpCF,QAAqB7S,KAAKo9B,mBAAmBvqB,EAAayG,EAAY4jB,IACtE,MAAAD,OAAA,EAAAA,EAASj3B,SAAU6M,EAAYwqB,eAAeJ,GAC9CnqB,EAAwB,IAAI5Q,WAAW2Q,EAAYE,UAAU,CACzDC,sBAAsB,EACtBC,kBAAkB,MAGtB0pB,IAAYhV,GAA8B,CAC1C,MAAOwC,SAAgB6R,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAAS1U,IAA8B2V,uBAAuB,CAClJjlB,UACAykB,QACAjqB,YAAaC,EACbuB,QAAS,CACLsF,oBAAqBoO,GAAcmV,EAAYvjB,qBAAuBL,EAAWI,YACjF6jB,cAAeL,EAAYK,cAC3BC,WAAYN,EAAYM,WACxB1pB,eAAgBopB,EAAYppB,kBAIpC,OAAO4nB,GAAK13B,OAAOmmB,EAAOpP,UAC7B,CACI,CACD,MAAOoP,SAAgB6R,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAASvU,IAAuBpN,gBAAgB,CACpIrC,UACAykB,QACAjqB,YAAaC,EACbuB,QAAS,CACLsF,oBAAqBoO,GAAcmV,EAAYvjB,qBAAuBL,EAAWI,YACjF5F,eAAgBopB,EAAYppB,kBAIpC,aAAawF,EAAWkB,mBAAmB2P,EAAO5P,kBAAmB,IAC9D2iB,EACHvjB,oBAAqBoO,GAAcmV,EAAYvjB,qBAAuBL,EAAWI,aAExF,CACJ,OACM/U,GACH,GAAIA,aAAiB9F,EAAAA,GACjB,MAAM8F,EACV,MAAM,IAAI8V,EAAAA,GAA2B,MAAA9V,OAAA,EAAAA,EAAO9E,QAAS8E,EACxD,CACJ,OACMA,GAEH,MADA3E,KAAKuX,KAAK,QAAS5S,GACbA,CACT,CACJ,EAEL21B,GAAiC,IAAImD,QAAWlD,GAAmC,IAAIkD,QAAWjD,GAAoC,IAAIiD,QAAWhD,GAAuC,IAAIgD,QAAW/C,GAA6B,IAAI+C,QAAW9C,GAAsD,IAAI8C,QAAW7C,GAAgC,IAAI6C,QAAW5C,GAAoC,IAAI4C,QAAWvC,GAAiC,IAAIuC,QAAWpD,GAAmC,IAAIqD,QAAW5C,GAAiC0B,eAA8CzD,GAC3kB,IACI,GAAI/4B,KAAKmX,WAAanX,KAAKqX,WACvB,OACJ,GAAI2kB,GAAuBh8B,KAAM66B,GAAmC,OAAS1kB,EAAAA,GAAAA,UACzE,MAAM,IAAIwB,EAAAA,GAEd,GADAgkB,GAAuB37B,KAAMw6B,IAAmC,EAAM,MACjEwB,GAAuBh8B,KAAM46B,GAA+B,KAAKziB,SAASnS,OAC3E,UACUg2B,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAAS7T,IAAiBzQ,QAAQghB,EAC5G,OACMp0B,GACH,MAAM,IAAImT,EAAAA,GAAsB,MAAAnT,OAAA,EAAAA,EAAO9E,QAAS8E,EACnD,CAEL,MAAM0T,EAAU2jB,GAAuBh8B,KAAM46B,GAA+B,KAAKziB,SAAS,GAC1F,IAAKE,EACD,MAAM,IAAIukB,EAAAA,GACdZ,GAAuBh8B,KAAMq6B,GAAkC,IAAKU,IAAkCr2B,KAAK1E,KAAMqY,EACpH,OACM1T,GAEH,MADA3E,KAAKuX,KAAK,QAAS5S,GACbA,CACT,SAEGg3B,GAAuB37B,KAAMw6B,IAAmC,EAAO,IAC1E,CACL,EAAGO,GAAmC,SAA0C1iB,GAC5E,IAAIxM,EACJ,IAEIA,EAAY,IAAI4J,EAAAA,UAAU4C,EAAQ9C,QACrC,OACM5Q,GACH,MAAM,IAAIuS,EAAAA,GAAqB,MAAAvS,OAAA,EAAAA,EAAO9E,QAAS8E,EAClD,CACDg3B,GAAuB37B,KAAMs6B,GAAgCjiB,EAAS,KACtEsjB,GAAuB37B,KAAMu6B,GAAkC1uB,EAAW,KAC1EmwB,GAAuBh8B,KAAMq6B,GAAkC,IAAKY,IAA8Bv2B,KAAK1E,MACvGA,KAAKuX,KAAK,UAAW1L,EACzB,EAAGmvB,GAAsC,WACrCW,GAAuB37B,KAAMs6B,GAAgC,KAAM,KACnEqB,GAAuB37B,KAAMu6B,GAAkC,KAAM,KACrEyB,GAAuBh8B,KAAMq6B,GAAkC,IAAKY,IAA8Bv2B,KAAK1E,MACvGA,KAAKuX,KAAK,aACd,EAAG0jB,GAA+B,W,QAC9B,MAAMplB,EAA+B8R,MAAgCqU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAChIL,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAAS1U,IAA8B9R,6BACxGmmB,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAASvU,IAAuBjS,6BACvG8lB,GAAuB37B,KAAM26B,GAAqDhS,GAAY9S,EAA8B,CAAC,WACvH,KACA,IAAIC,IAAID,GAA+B,KACzCiS,MAAyBkU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,WAAY,OAAAv0B,EAAAk0B,GAAuBh8B,KAAMs6B,GAAgC,WAA7D,EAAAxyB,EAAmEu0B,SAAS9T,SAAST,MAC3L9nB,KAAK0a,gBAAkBshB,GAAuBh8B,KAAMq6B,GAAkC,IAAKc,IAC3Fn7B,KAAK2a,oBAAsBqhB,GAAuBh8B,KAAMq6B,GAAkC,IAAKe,aAGxFp7B,KAAK0a,uBACL1a,KAAK2a,qBAEZkN,MAAqBmU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,WAAY,OAAAxe,EAAAme,GAAuBh8B,KAAMs6B,GAAgC,WAA7D,EAAAzc,EAAmEwe,SAAS9T,SAASV,KACvL7nB,KAAK4a,YAAcohB,GAAuBh8B,KAAMq6B,GAAkC,IAAKgB,WAGhFr7B,KAAK4a,YAEZgN,MAAgBoU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SACjFr8B,KAAK29B,OAAS3B,GAAuBh8B,KAAMq6B,GAAkC,IAAKiB,WAG3Et7B,KAAK29B,MAEpB,EAAGxC,GAAyCqB,eAAsD3pB,GAC9F,IACI,MAAMwF,EAAU2jB,GAAuBh8B,KAAMs6B,GAAgC,KAC7E,IAAKjiB,EACD,MAAM,IAAIY,EAAAA,GACd,KAAM6O,MAAyBkU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,UAC5F,MAAM,IAAIQ,EAAAA,GACd,IAAKxkB,EAAQgkB,SAAS9T,SAAST,IAC3B,MAAM,IAAI8U,EAAAA,GACd,IACI,MAAM7nB,QAA2BinB,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAASvU,IAAuBpN,gBAAgB,CAC9IrC,UACAxF,aAAasqB,EAAAA,EAAAA,GAAuBtqB,GAC9BA,EAAYE,YACZ,IAAI7Q,WAAW2Q,EAAYE,UAAU,CACnCC,sBAAsB,EACtBC,kBAAkB,OAIxBH,EAAwBiC,EAAmB,GAAGwF,kBACpD,OAAQ4iB,EAAAA,EAAAA,GAAuBtqB,GACzBa,EAAAA,qBAAAA,YAAiCZ,GACjCW,EAAAA,YAAAA,KAAiBX,EAC1B,OACMnO,GACH,GAAIA,aAAiB9F,EAAAA,GACjB,MAAM8F,EACV,MAAM,IAAIyU,EAAAA,GAA2B,MAAAzU,OAAA,EAAAA,EAAO9E,QAAS8E,EACxD,CACJ,OACMA,GAEH,MADA3E,KAAKuX,KAAK,QAAS5S,GACbA,CACT,CACL,EAAGy2B,GAA6CoB,eAA0DzoB,GACtG,IACI,MAAMsE,EAAU2jB,GAAuBh8B,KAAMs6B,GAAgC,KAC7E,IAAKjiB,EACD,MAAM,IAAIY,EAAAA,GACd,KAAM6O,MAAyBkU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,UAC5F,MAAM,IAAIQ,EAAAA,GACd,IAAKxkB,EAAQgkB,SAAS9T,SAAST,IAC3B,MAAM,IAAI8U,EAAAA,GACd,IACI,MAAM7nB,QAA2BinB,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAASvU,IAAuBpN,mBAAmB3G,EAAarB,KAAKG,IAAA,CACnKwF,UACAxF,aAAasqB,EAAAA,EAAAA,GAAuBtqB,GAC9BA,EAAYE,YACZ,IAAI7Q,WAAW2Q,EAAYE,UAAU,CACnCC,sBAAsB,EACtBC,kBAAkB,UAG9B,OAAOc,EAAarB,KAAI,CAACG,EAAakM,KAElC,MAAMxE,EAAoBxF,EAAmBgK,GAAOxE,kBACpD,OAAQ4iB,EAAAA,EAAAA,GAAuBtqB,GACzBa,EAAAA,qBAAAA,YAAiC6G,GACjC9G,EAAAA,YAAAA,KAAiB8G,EAAkB,GAEhD,OACM5V,GACH,MAAM,IAAIyU,EAAAA,GAA2B,MAAAzU,OAAA,EAAAA,EAAO9E,QAAS8E,EACxD,CACJ,OACMA,GAEH,MADA3E,KAAKuX,KAAK,QAAS5S,GACbA,CACT,CACL,EAAG02B,GAAqCmB,eAAkD38B,GACtF,IACI,MAAMwY,EAAU2jB,GAAuBh8B,KAAMs6B,GAAgC,KAC7E,IAAKjiB,EACD,MAAM,IAAIY,EAAAA,GACd,KAAM4O,MAAqBmU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,UACxF,MAAM,IAAIQ,EAAAA,GACd,IAAKxkB,EAAQgkB,SAAS9T,SAASV,IAC3B,MAAM,IAAI+U,EAAAA,GACd,IACI,MAAMjoB,QAAuBqnB,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAASxU,IAAmBjN,YAAY,CAClIvC,UACAxY,YAGJ,OAAO8U,EAAe,GAAGoG,SAC5B,OACMpW,GACH,MAAM,IAAIqW,EAAAA,GAAuB,MAAArW,OAAA,EAAAA,EAAO9E,QAAS8E,EACpD,CACJ,OACMA,GAEH,MADA3E,KAAKuX,KAAK,QAAS5S,GACbA,CACT,CACL,EAAG22B,GAAgCkB,eAA6CzD,EAAQ,CAAC,GACrF,IACI,KAAMnR,MAAgBoU,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,UACnF,MAAM,IAAIQ,EAAAA,GACd,IAAI1S,EACJ,KACKA,SAAgB6R,GAAuBh8B,KAAM46B,GAA+B,KAAKyB,SAASzU,IAAc+V,OAAO5E,EACnH,OACMp0B,GACH,MAAM,IAAIi5B,EAAAA,GAAkB,MAAAj5B,OAAA,EAAAA,EAAO9E,QAAS8E,EAC/C,CACD,IAAKwlB,EACD,MAAM,IAAIyT,EAAAA,GAEd,OADA5B,GAAuBh8B,KAAMq6B,GAAkC,IAAKU,IAAkCr2B,KAAK1E,KAAMmqB,EAAO9R,SACjH8R,CACV,OACMxlB,GAEH,MADA3E,KAAKuX,KAAK,QAAS5S,GACbA,CACT,CACL,EEhZA,IAWIk5B,GAXAjV,GAA0B9K,YAAQA,WAAK8K,wBAA2B,SAAUgT,EAAUtvB,EAAO5L,EAAOm7B,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIxsB,UAAU,kCACtC,GAAa,MAATwsB,IAAiBC,EAAG,MAAM,IAAIzsB,UAAU,iDAC5C,GAAqB,oBAAV/C,EAAuBsvB,IAAatvB,IAAUwvB,GAAKxvB,EAAMyvB,IAAIH,GAAW,MAAM,IAAIvsB,UAAU,2EACvG,MAAiB,MAATwsB,EAAeC,EAAEp3B,KAAKk3B,EAAUl7B,GAASo7B,EAAIA,EAAEp7B,MAAQA,EAAQ4L,EAAMlK,IAAIw5B,EAAUl7B,GAASA,CACxG,EACImoB,GAA0B/K,YAAQA,WAAK+K,wBAA2B,SAAU+S,EAAUtvB,EAAOuvB,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIzsB,UAAU,iDAC5C,GAAqB,oBAAV/C,EAAuBsvB,IAAatvB,IAAUwvB,GAAKxvB,EAAMyvB,IAAIH,GAAW,MAAM,IAAIvsB,UAAU,4EACvG,MAAgB,MAATwsB,EAAeC,EAAa,MAATD,EAAeC,EAAEp3B,KAAKk3B,GAAYE,EAAIA,EAAEp7B,MAAQ4L,EAAM+B,IAAIutB,EACxF,EAEA,IAAIkC,GACJ,MAAMC,GAAa,IAAIjoB,IACjBkoB,GAAY,CAAC,EAoBZ,SAASC,KACZ,GAAIH,GACA,OAAOA,GAEX,GADAA,GAAUt5B,OAAO05B,OAAO,CAAEjb,YAAU5U,OAAKuO,QACnB,qBAAX7V,OACP,OAAO+2B,GACX,MAAMK,EAAM35B,OAAO05B,OAAO,CAAEjb,cAC5B,IACIlc,OAAO2C,iBAAiB,mCAAmC,EAAGqd,OAAQtb,KAAeA,EAAS0yB,IACjG,OACMx5B,GACHgI,QAAQhI,MAAM,sEAAuEA,EACxF,CACD,IACIoC,OAAO8f,cAAc,IAAIuX,GAAcD,GAC1C,OACMx5B,GACHgI,QAAQhI,MAAM,4DAA6DA,EAC9E,CACD,OAAOm5B,EACX,CACA,SAAS7a,MAAYrE,G,MAOjB,OAHAA,EAAUA,EAAQiB,QAAQ1R,IAAY4vB,GAAWhC,IAAI5tB,KAGhDyQ,EAAQ5Y,QAEb4Y,EAAQK,SAAS9Q,GAAW4vB,GAAW5B,IAAIhuB,KAC3C,OAAArG,EAAAk2B,GAAU,cAAVl2B,EAAuBmX,SAASmE,GAAaib,IAAM,IAAMjb,KAAYxE,OAE9D,W,MACHA,EAAQK,SAAS9Q,GAAW4vB,GAAWO,OAAOnwB,KAC9C,OAAAiY,EAAA4X,GAAU,gBAAV5X,EAAyBnH,SAASmE,GAAaib,IAAM,IAAMjb,KAAYxE,MAC/E,GAPe,MAQf,CACA,SAASvQ,KACL,MAAO,IAAI0vB,GACf,CACA,SAASnhB,GAAGuG,EAAOC,G,MAGf,OAFA,OAAAtb,EAAAk2B,GAAU7a,SAAV,EAAArb,EAAkByb,KAAKH,MAAc4a,GAAU7a,GAAS,CAACC,IAElD,W,MACH4a,GAAU7a,GAAS,OAAAiD,EAAA4X,GAAU7a,SAAV,EAAAiD,EAAkBvG,QAAQ0e,GAAqBnb,IAAamb,GACvF,CACA,CACA,SAASF,GAAM5yB,GACX,IACIA,GACH,OACM9G,GACHgI,QAAQhI,MAAMA,EACjB,CACL,CACA,MAAMy5B,WAAsBI,MACxB1/B,YAAYq/B,GACRp+B,MAAM,4BAA6B,CAC/B0+B,SAAS,EACTC,YAAY,EACZC,UAAU,IAEdd,GAAsBz7B,IAAIpC,UAAM,GAChC4oB,GAAuB5oB,KAAM69B,GAAuBM,EAAK,IAC5D,CACGpX,aACA,OAAO8B,GAAuB7oB,KAAM69B,GAAuB,IAC9D,CACGxX,WACA,MAAO,2BACV,CAEDuY,iBACI,MAAM,IAAIl/B,MAAM,kCACnB,CAEDm/B,2BACI,MAAM,IAAIn/B,MAAM,4CACnB,CAEDo/B,kBACI,MAAM,IAAIp/B,MAAM,mCACnB,ECxGE,SAASq/B,GACd3hB,GAEM,MAAA4hB,EAAA,IAAelpB,KACbzH,IAAA4wB,EAAKriB,GAAAsiB,GAAOjB,KACdkB,GAAchZ,EAAAA,EAAAA,YAClBiZ,GAAsBH,MAqBxB,OAlBA1iB,EAAAA,EAAAA,cAAaC,IACX,MAAMsG,EAAY,CAChBoc,EAAG,YAAY,IAAItgB,IACTugB,EAAYz+B,MAAQ,IACvBy+B,EAAYz+B,SACZ0+B,GAAsBxgB,MAG7BsgB,EAAG,cAAc,IAAItgB,IACXugB,EAAYz+B,MAAQy+B,EAAYz+B,MAAMmf,QAAQwf,GACpDzgB,EAAQxG,MAAMjK,GAAWA,IAAWkxB,EAAWlxB,cAKrDqO,GAAa,IAAMsG,EAAU7D,SAASsd,GAAYA,OAAW,KAGxD9e,EAAAA,EAAAA,WAAoB,IAAM,IAC3B0hB,EAAYz+B,SACb0c,EAAS1c,MAAMmf,QAAO,EAAG7gB,WACtBmgC,EAAYz+B,MAAM0X,MAAMinB,GAAeA,EAAWrgC,OAASA,MACxDggC,EAASjD,IAAI/8B,KAChBggC,EAAS7C,IAAIn9B,GACL2N,QAAAC,KACN,GAAG5N,iEAAoEA,qCAGpE,OAKf,CAEA,SAASogC,GACPxgB,GAEA,OAAOA,EACJiB,OAAOyf,EAAAA,GACP5sB,KAAKvE,GAAW,IAAI8tB,GAAsB,CAAE9tB,YACjD,CCrDgB,SAAAoxB,GACfpxB,EACAZ,GAGA,MAAM8L,EAAyDmjB,MAC9D3pB,EACAyG,EACAjF,K,MAEM,MAAAgI,EAAU,OAAAvU,EAAAqG,EAAOzN,YAAP,EAAAoH,EAAcuU,QAE9B,GADA1P,QAAQoD,IAAI,gCAAiC,CAAC5B,SAAQkO,aACjDA,EAAe,MAAA9O,EAAY,IAAI3O,GACpC,IAAKyd,EAAQlF,UACZ,MAAM5J,EAAY,IAAI0L,EAAAA,GAA2BoD,GAIlD,OAAIA,EAAQmjB,kBAEQlmB,EAAWe,mBAAmB,mBAGpCgC,EAAQihB,uBAAuBzqB,UAGhCwJ,EAAQhD,gBAAgBxG,EAAayG,EAAYjF,EAAQ,EAIjEqG,GAAkB+C,EAAAA,EAAAA,WAEtB,K,MACK,MAAApB,EAAU,OAAAvU,EAAAqG,EAAOzN,YAAP,EAAAoH,EAAcuU,QAC1B,GAAEA,GAAW,oBAAqBA,EAEtC,OADQ1P,QAAAoD,IAAI,0BAA2BsM,GAChCmgB,UACN,IAAKngB,EAAQlF,UAAiB,MAAA5J,EAAY,IAAI0L,EAAAA,IACvC,aAAMoD,EAAQ3B,gBAAgB7H,EAAY,CAAD,IAK5C8H,GAAsB8C,EAAAA,EAAAA,WAE1B,K,MACK,MAAApB,EAAU,OAAAvU,EAAAqG,EAAOzN,YAAP,EAAAoH,EAAcuU,QAC1B,GAAEA,GAAW,wBAAyBA,EAE1C,OADQ1P,QAAAoD,IAAI,8BAA+BsM,GACpCmgB,UACN,IAAKngB,EAAQlF,UAAiB,MAAA5J,EAAY,IAAI0L,EAAAA,IACvC,aAAMoD,EAAQ1B,oBAAoB5G,EAAa,CAAD,IAKjD6G,GAAc6C,EAAAA,EAAAA,WAElB,K,MACK,MAAApB,EAAU,OAAAvU,EAAAqG,EAAOzN,YAAP,EAAAoH,EAAcuU,QAC1B,GAAEA,GAAW,gBAAiBA,EAElC,OADQ1P,QAAAoD,IAAI,sBAAuBsM,GAC5BmgB,UACN,IAAKngB,EAAQlF,UAAiB,MAAA5J,EAAY,IAAI0L,EAAAA,IACvC,aAAMoD,EAAQzB,YAAY/a,EAAQ,CAAD,IAInC,OACNwZ,kBACAqB,kBACAC,sBACAC,cAEF,CC9EO,SAAS6kB,GACd3jB,GAEM,MAAAD,GAAkBoB,EAAAA,EAAAA,MAAa,GAEjC,MAAkB,qBAAXlW,SAIXwV,EAAAA,EAAAA,cAAaC,IACX,GAAIV,EAA0Bpb,MAC5B,OAGI,MAAAg/B,EAAUA,IAAO7jB,EAAgBnb,OAAQ,EACxCqG,OAAA2C,iBAAiB,eAAgBg2B,GACxCljB,GAAa,IAAMzV,OAAOyC,oBAAoB,eAAgBk2B,IAAS,IAVhE7jB,CAcX,CCjBgB,SAAA8jB,GACf/gB,EACA5f,GAOM,MAAAmP,GAASgY,EAAAA,EAAAA,YAA0B,MACnCta,GAAYoR,EAAAA,EAAAA,KAAsB,MAClC9F,GAAY8F,EAAAA,EAAAA,MAAa,GACzB3F,GAAa2F,EAAAA,EAAAA,KAAsB9G,EAAAA,GAAAA,aACnC6G,GAAQS,EAAAA,EAAAA,WACb,IACCnG,EAAW5W,QAAUyV,EAAAA,GAAAA,WACrBmB,EAAW5W,QAAUyV,EAAAA,GAAAA,WAGjB6F,EAAqBA,K,gBAC1BnQ,EAAUnL,MAAQ,OAAAmd,EAAA,OAAA/V,EAAAqG,EAAOzN,YAAP,EAAAoH,EAAcuU,QAAQxQ,WAAtBgS,EAAmC,KACrD1G,EAAUzW,MAAQ,OAAAk/B,EAAA,OAAAC,EAAA1xB,EAAOzN,YAAP,EAAAm/B,EAAcxjB,QAAQlF,YAAtByoB,EAClBtoB,EAAW5W,MAAQ,OAAAo/B,EAAA,OAAAC,EAAA5xB,EAAOzN,YAAP,EAAAq/B,EAAczoB,YAAdwoB,EAA4B3pB,EAAAA,GAAAA,WAAiB,EAY1D,OAPPoG,EAAAA,EAAAA,cAAY,K,MACXpO,EAAOzN,MAAQ1B,EAAK0B,OACjB,OAAAoH,EAAA8W,EAAQle,MAAM+d,MAAK,EAAEpC,aAAaA,EAAQrd,OAASA,EAAK0B,SAAxDoH,EACA,KACgBkU,GAAA,IAGb,CACN7N,SACAtC,YACAsL,YACAG,aACA0F,QACAhB,qBAEF,CC5CO,SAASgkB,GACd5iB,GAEM,MAAAwB,GAAUuH,EAAAA,EAAAA,YAAqB,IAS9B,OAPP5J,EAAAA,EAAAA,cAAY,KACVqC,EAAQle,MAAQ0c,EAAS1c,MAAMgS,KAAK0J,IAAA,CAClCC,QAASD,EACT9E,WAAY8E,EAAW9E,cACvB,IAGGsH,CACT,CLmGAif,GAAwB,IAAIJ,QMjGrB,MAAMwC,GAAoBA,EACtBnC,QAASoC,EAAkB,GAC3BxoB,YAAaqF,GAAqB,EAClCpG,QAASwpB,EAAiB,eAC1B/hB,UACAmJ,kBAAkB,iBAGtB,MAAA5Q,GAAwBsG,EAAAA,EAAAA,KAAIkjB,GAC5B9oB,GAAa4F,EAAAA,EAAAA,MAAa,GAC1BmjB,GAAgBnjB,EAAAA,EAAAA,MAAa,GAG7BojB,GAA8Bla,EAAAA,EAAAA,YAAW+Z,GACzCI,EAAqBvB,GAA0BsB,IAC/C,SAAC1iB,EAAA,kBAAUL,GAAqBH,GAAemjB,GAC/CljB,EAAWkB,GAChBgiB,EACA3iB,EACAL,EACA3G,GAEKiI,EAAUohB,GAAyB5iB,IAGnC,KAACpe,EAAA,0BAAM8c,EAAA,OAA2BvD,EAAA,SAAQwD,GAAYuL,GAAoBC,EAAiB5J,IAC3F,OACLxP,EAAA,UACAtC,EAAA,UACAsL,EAAA,WACAG,EAAA0F,MACAA,EAAA,mBACAhB,GACG2jB,GAAe/gB,EAAS5f,GAGtB6c,EAAkB4jB,GAAmB3jB,GACrCvO,EAAc4Q,GAAgBtC,EAAiBuC,GAGrDO,GAAuBC,GACvBhD,GACCzN,EACA0N,EACAC,EACAC,EACAC,EACAzO,GAID,MAAMmK,EAAcoF,GACnBC,EACA5O,EACA2N,EACAzE,EACAF,EACA6F,EACAjB,IAIK,gBAAC1C,EAAA,gBAAiBqB,EAAA,oBAAiBC,EAAA,YAAqBC,GAC7D2kB,GAAsBpxB,EAAQZ,GAGzBwK,EAAUykB,UAGf,GAFQ7vB,QAAAoD,IAAI,iBAAkB5B,EAAOzN,OAEjCyW,EAAUzW,OAAS2W,EAAW3W,OAAS0/B,EAAc1/B,MAAO,OAChE,IAAKyN,EAAOzN,MAAa,MAAA6M,EAAY,IAAI3O,GACnC,MAAAyd,EAAUlO,EAAOzN,MAAM2b,QAC7B,IAAKW,EAAMtc,MAAO,MAAM6M,EAAY,IAAIoK,EAAAA,GAAuB0E,GAEvD1P,QAAAoD,IAAI,wBAAyBsM,GACjC,IACHhF,EAAW3W,OAAQ,QACb2b,EAAQtE,S,OACNpT,GAGF,MAFGoX,IAEHpX,CAAA,SAEN0S,EAAW3W,OAAQ,CACpB,GAIKkY,EAAa4jB,UAEd,GADJ7vB,QAAQoD,IAAI,2BAA4B5B,EAAOzN,MAAO0/B,EAAc1/B,QAChE0/B,EAAc1/B,OAAUyN,EAAOzN,MAC/B,IACH0/B,EAAc1/B,OAAQ,QAChByN,EAAOzN,MAAM2b,QAAQzD,aAC3BzK,EAAOzN,MAAQ,aAGf0/B,EAAc1/B,OAAQ,CACvB,GAIM,OAENo9B,QAAAlf,EACAlH,cACAf,UAGAxI,SACAtC,YACAyL,aACA0F,QACA7F,YACAE,aACA+oB,gBAGA7nB,SACAR,UACAa,aACAS,kBACAqB,kBACAC,sBACAC,cAAA,EC9IF,IAAI2lB,GAAkC,KAE/B,MAAMC,GAAYA,KACnB,GAAAD,GAAoB,OAAAA,GACxB,MAAM,IAAIthC,EACR,yFAISwhC,GAAcC,IACzBH,GAAcN,GAAkBS,EAAiB,ECdnD,IAAIC,GAAS,WACX,IAAIC,EAAI,KACJC,EAAGD,EAAIE,eACPjB,EAAGe,EAAIG,MAAMlB,IAAIgB,EAErB,OAAOhB,EAAG,IAAK,CACbmB,YAAa,mBACZ,CAACJ,EAAIzyB,OAAS0xB,EAAG,MAAO,CACzBoB,MAAO,CACL,IAAOL,EAAIzyB,OAAO4H,MAAQ6qB,EAAIzyB,OAAOkO,QAAQtG,KAC7C,IAAO,GAAG6qB,EAAIzyB,OAAOnP,MAAQ4hC,EAAIzyB,OAAOkO,QAAQrd,eAE/C4hC,EAAIb,MACX,EACImB,GAAkB,G,yuBCPtB,MAAAC,GAAA,CACAniC,KAAA,aACAoiC,MAAA,CACAjzB,OAAA3J,S,mICLA68B,IAAAC,EAAAA,EAAAA,iBAAA,CACAC,WAAA,CACAC,eAEAJ,MAAA,CACAK,SAAAC,SAEAC,MAAAP,GAAA,KAAA7pB,IACA,eAAAkqB,IAAAG,EAAAA,EAAAA,QAAAR,IACA,OAAAjzB,EAAA,QAAA4J,EAAA,WAAAV,EAAA,UAAAF,GAAAqpB,KACA7zB,QAAAoD,IAAA,6BACA5B,SAAAkJ,aAAAF,cAGA,MAAA0qB,GAAApkB,EAAAA,EAAAA,WAAA,IACApG,EAAA3W,MAAA,iBACAyW,EAAAzW,MAAA,YACAyN,EAAAzN,MAAA,UACA,mBAGAohC,EAAA3e,IACA5L,EAAA,QAAA4L,GACAA,EAAA4e,kBACAhqB,IAAAgI,OAAA,QACA,EAGAiiB,EAAA,CACA7zB,SACAszB,WACApqB,aACAF,YACA0qB,UACAC,WAGA,OACAE,WACAA,EAEA,IC9CIC,GAAS,WACX,IAAIrB,EAAI,KACJC,EAAGD,EAAIE,eACPjB,EAAGe,EAAIG,MAAMlB,IAAIgB,EAErB,OAAOD,EAAIsB,GAAG,WAAW,WACvB,MAAO,CAACrC,EAAG,SAAU,CACnBmB,YAAa,2DACbC,MAAO,CACL,SAAYL,EAAIa,WAAab,EAAIzyB,QAAUyyB,EAAIvpB,YAAcupB,EAAIzpB,WAEnEyF,GAAI,CACF,MAASgkB,EAAIkB,UAEd,CAAClB,EAAIzyB,OAAS0xB,EAAG,cAAe,CACjCoB,MAAO,CACL,OAAUL,EAAIzyB,UAEbyyB,EAAIb,KAAMF,EAAG,IAAK,CACrBsC,SAAU,CACR,YAAevB,EAAIwB,GAAGxB,EAAIiB,aAEzB,GACT,GAAK,KAAMjB,EAAIoB,MACf,EACIK,GAAkB,G,yICHtBX,Q,ICtBIY,GAAS,WACX,IAAI1B,EAAI,KACJC,EAAGD,EAAIE,eACPjB,EAAGe,EAAIG,MAAMlB,IAAIgB,EAErB,OAAOhB,EAAG,MAAO,CAACA,EAAG,MAAO,CAC1B0C,MAAO3B,EAAI4B,KAAO,WAAa,IAC9B,CAAC5B,EAAIsB,GAAG,YAAa,GAAItB,EAAIviB,KAAOwhB,EAAG,SAAU,CAClDoB,MAAO,CACL,GAAML,EAAI6B,YAEX,CAAC5C,EAAG,MAAO,CACZmB,YAAa,YACbuB,MAAO3B,EAAI4B,KAAO,WAAa,GAC/BvB,MAAO,CACL,kBAAmB,kBACnB,aAAc,OACd,KAAQ,WAET,CAACL,EAAIsB,GAAG,WAAW,WACpB,MAAO,CAACrC,EAAG,MAAO,CAChBmB,YAAa,oBACbpkB,GAAI,CACF,MAASgkB,EAAI8B,cAGrB,IAAM7C,EAAG,MAAO,CACZ5iB,IAAK,aACL+jB,YAAa,uBACZ,CAACJ,EAAIsB,GAAG,SAAS,WAClB,MAAO,CAACrC,EAAG,MAAO,CAChBmB,YAAa,oBACbuB,MAAO,CACL,6BAA8B3B,EAAI+B,UAEnC,CAAC/B,EAAI+B,QAAU9C,EAAG,MAAO,CAC1BmB,YAAa,0BACZ,CAACJ,EAAIsB,GAAG,QAAQ,WACjB,MAAO,CAACrC,EAAG,MAAO,CAChBmB,YAAa,iBACbC,MAAO,CACL,IAAO,OACP,IAAOL,EAAIgC,QAGrB,KAAS,GAAKhC,EAAIb,KAAMF,EAAG,KAAM,CAC3BmB,YAAa,kBACbC,MAAO,CACL,GAAM,oBAEP,CAACL,EAAIiC,GAAG,sBAAuBhD,EAAG,SAAU,CAC7CmB,YAAa,yBACbpkB,GAAI,CACF,MAAS,SAAUkmB,GAEjB,OADAA,EAAOlE,iBACAgC,EAAI8B,WAAWphC,MAAM,KAAMvC,UACnC,IAEF,CAAC8gC,EAAG,MAAO,CACZoB,MAAO,CACL,MAAS,KACT,OAAU,OAEX,CAACpB,EAAG,OAAQ,CACboB,MAAO,CACL,EAAK,6IAEDpB,EAAG,KAAM,CACfmB,YAAa,kBACZJ,EAAImC,GAAGnC,EAAIoC,kBAAkB,SAAU70B,GACxC,OAAO0xB,EAAG,KAAM,CACdje,IAAKzT,EAAOnP,MAAQmP,EAAOkO,QAAQrd,KACnC4d,GAAI,CACF,MAAS,WACP,OAAOgkB,EAAIqC,SAAS90B,EAAOnP,MAAQmP,EAAOkO,QAAQrd,KACnD,IAEF,CAAC6gC,EAAG,SAAU,CACfmB,YAAa,cACZ,CAACnB,EAAG,IAAK,CACVsC,SAAU,CACR,YAAevB,EAAIwB,GAAGj0B,EAAOnP,MAAQmP,EAAOkO,QAAQrd,SAEpD6gC,EAAG,cAAe,CACpBoB,MAAO,CACL,OAAU9yB,MAET,IACX,IAAQ,GAAIyyB,EAAIsC,cAAcl9B,OAAS,EAAI65B,EAAG,SAAU,CAClDmB,YAAa,uCACbuB,MAAO,CACL,mCAAoC3B,EAAIuC,iBAE1ClC,MAAO,CACL,gBAAiB,qBACjB,gBAAiBL,EAAIuC,iBAEvBvmB,GAAI,CACF,MAAS,WACP,OAAOgkB,EAAIuC,iBAAmBvC,EAAIuC,eACnC,IAEF,CAACvC,EAAIiC,GAAG,IAAMjC,EAAIwB,GAAGxB,EAAIuC,gBAAkB,OAAS,QAAU,aAActD,EAAG,IAAK,CACrFmB,YAAa,mBACZ,CAACnB,EAAG,MAAO,CACZoB,MAAO,CACL,MAAS,KACT,OAAU,IACV,MAAS,+BAEV,CAACpB,EAAG,OAAQ,CACboB,MAAO,CACL,EAAK,4LAEEL,EAAIb,OAChB,KAAI,IAAK,KAAOa,EAAIb,MAAO,EAC9B,EACIqD,GAAkB,GC1CtB,MAAAC,GAAA,CACArkC,KAAA,sBACAuiC,WAAA,CACAC,eAEAJ,MAAA,CACA/iB,KAAA,CAAAgI,KAAAqb,SACA4B,SAAA,CAAAjd,KAAA/B,OAAAif,QAAA,GACAd,UAAA,CAAApc,KAAAxf,OAAA08B,QAAA,QACAX,KAAA,CAAAvc,KAAAxf,QACA27B,KAAA,CAAAnc,KAAAqb,SACA5D,QAAA,CAAAzX,KAAAhW,QAEAvQ,OACA,OACA0jC,WAAA,KACAL,iBAAA,EACAM,aAAA,KAEA,EACAhmB,SAAA,CAEAklB,QAAA,WACA,aAAAC,IACA,EAEAc,gBAAA,WACA,YAAA5F,QAAA55B,MAAA,OAAAo/B,SACA,EACAJ,cAAA,WACA,YAAApF,QAAA55B,MAAA,KAAAo/B,SACA,EACAN,iBAAA,WACA,YAAAG,gBAAA,KAAArF,QAAA,KAAA4F,eACA,GAEAC,QAAA,CACAjB,WAAA,WACA,KAAAkB,MAAA,QACA,EAEAX,SAAA,SAAAxb,GACA9a,QAAAk3B,MAAA,kBAAApc,GAEA,KAAAmc,MAAA,SAAAnc,GACA,KAAAib,YACA,I,mICzHIoB,GAAS,WACX,IAAIlD,EAAI,KACJC,EAAGD,EAAIE,eACPjB,EAAGe,EAAIG,MAAMlB,IAAIgB,EAErB,OAAOhB,EAAG,wBAAyB,CACjCoB,MAAO,CACL,SAAYL,EAAI0C,SAChB,UAAa1C,EAAI6B,UACjB,KAAQ7B,EAAIgC,KACZ,KAAQhC,EAAI4B,KACZ,KAAQ5B,EAAImD,mBACZ,QAAWnD,EAAIvkB,QAAQyhB,SAEzBlhB,GAAI,CACF,MAAS,SAAUkmB,GACjBlC,EAAImD,oBAAsBnD,EAAImD,kBAC/B,EACD,OAAUnD,EAAIqC,WAEf,CAAC,CAACrC,EAAIsB,GAAG,WAAW,WACrB,MAAO,EAAEtB,EAAIvkB,QAAQlO,QAAUyyB,EAAIoD,aAAenE,EAAG,SAAU,CAC7DmB,YAAa,2DACbpkB,GAAI,CACF,MAAS,SAAU3b,GACjB,OAAO2/B,EAAIqD,iBAAiBhjC,EAC7B,IAEF,CAAC2/B,EAAIiC,GAAG,qBAAwBjC,EAAIsD,gBAY7BrE,EAAG,MAAO,CAClBmB,YAAa,gBACZ,CAACJ,EAAIsB,GAAG,mBAAmB,WAC5B,MAAO,CAACrC,EAAG,SAAU,CACnBmB,YAAa,2DACbh3B,MAAO,CACLm6B,cAAevD,EAAIwD,eAAiB,OAAS,QAE/CnD,MAAO,CACL,gBAAiBL,EAAIwD,eACrB,MAASxD,EAAIsD,iBAEftnB,GAAI,CACF,MAASgkB,EAAIyD,eAEd,CAACxE,EAAG,cAAe,CACpBoB,MAAO,CACL,OAAUL,EAAIvkB,QAAQlO,UAEtB0xB,EAAG,OAAQ,CACbsC,SAAU,CACR,YAAevB,EAAIwB,GAAGxB,EAAI0D,sBAEzB,GACX,KAAS,GApCoDzE,EAAG,MAAO,CACjEjjB,GAAI,CACF,UAAagkB,EAAIyD,eAElB,CAACxE,EAAG,wBAAyB,CAC9BoB,MAAO,CACL,WAAcL,EAAIvpB,WAClB,OAAUupB,EAAIvkB,QAAQlO,QAExByO,GAAI,CACF,MAASgkB,EAAI2D,cAEZ,GAwBI3D,EAAIwD,eAAiBxD,EAAIsB,GAAG,YAAY,WAC/C,MAAO,CAACrC,EAAG,KAAM,CACf5iB,IAAK,gBACL+jB,YAAa,oBACbuB,MAAO,CACL,2BAA4B3B,EAAIwD,gBAElCnD,MAAO,CACL,aAAc,gBACd,KAAQ,SAET,CAACL,EAAIsB,GAAG,iBAAiB,WAC1B,MAAO,CAACtB,EAAI4D,QAAU3E,EAAG,KAAM,CAC7BmB,YAAa,yBACbC,MAAO,CACL,KAAQ,YAEVrkB,GAAI,CACF,MAAS,SAAU3b,GACjB2/B,EAAI6D,YAAYxjC,GAChB2/B,EAAI8D,cAAczjC,EACnB,IAEF,CAAC2/B,EAAIiC,GAAG,IAAMjC,EAAIwB,GAAGxB,EAAI+D,cAAgB,SAAW,gBAAkB,OAAS/D,EAAIb,KAAMF,EAAG,KAAM,CACnGmB,YAAa,yBACbC,MAAO,CACL,KAAQ,YAEVrkB,GAAI,CACF,MAAS,SAAU3b,GACjB2/B,EAAIqD,iBAAiBhjC,GACrB2/B,EAAI8D,cAAczjC,EACnB,IAEF,CAAC2/B,EAAIiC,GAAG,qBAAsBhD,EAAG,KAAM,CACxCmB,YAAa,yBACbC,MAAO,CACL,KAAQ,YAEVrkB,GAAI,CACF,MAAS,SAAU3b,GACjB2/B,EAAIgE,aAAa3jC,GACjB2/B,EAAI8D,cAAczjC,EACnB,IAEF,CAAC2/B,EAAIiC,GAAG,kBACnB,KAAW,GACX,IAASjC,EAAIb,KACV,KAAI,CAACa,EAAIsB,GAAG,kBAAmB,CAACtB,EAAIsB,GAAG,WAAY,EACtD,EACI2C,GAAkB,GChDtB,MAAAC,GAAA,CACA9lC,KAAA,oBACAuiC,WAAA,CACAwD,uBACAvD,cACAwD,wBAEA5D,MAAA,CACAkC,SAAA,CAAAjd,KAAA/B,OAAAif,QAAA,GACAd,UAAA,CAAApc,KAAAxf,OAAA08B,QAAA,QACAX,KAAA,CAAAvc,KAAAxf,QACA27B,KAAA,CAAAnc,KAAAqb,SACArqB,WAAA,CAAAgP,KAAAqb,SACAhqB,YAAA,CAAA2O,KAAAqb,QAAA6B,SAAA,GACA0B,mBAAA,CAAA5e,KAAAqb,QAAA6B,SAAA,GACAzF,QAAA,CAAAzX,KAAAhW,MAAA60B,UAAA,IAEAplC,OACA,OACAkkC,cAAA,EACA3nB,QAAA,KACAmoB,SAAA,EACAG,eAAA,EACAQ,cAAA,KACAf,gBAAA,EACAL,oBAAA,EAEA,EACA9nB,MAAA,CACA,+BACAtP,QAAAoD,IAAA,yBAAAsM,QAAAlF,WAEA,KAAAkF,QAAAlF,UACA,KAAAysB,MAAA,eAAAvnB,QAAAlO,QACA,KAAAkO,QAAAlO,QAAA,KAAAkO,QAAAlF,WACA,KAAAysB,MAAA,aACA,GAEAnmB,SAAA,CACAymB,gBAAA,W,QACA,cAAArmB,EAAA,OAAA/V,EAAA,KAAAuU,cAAA,EAAAvU,EAAA+D,gBAAA,EAAAgS,EAAAunB,UACA,EAEAd,iBAAA,WACA,YAAAjoB,QAAAlO,QAAA,KAAA+1B,gBACA,KAAAA,gBAAAhgC,MAAA,eAAAggC,gBAAAhgC,OAAA,GADA,IAEA,GAEAy/B,QAAA,CAIAV,SAAA,SAAAhiC,GACA0L,QAAAoD,IAAA,WAAA9O,GAEA,KAAAob,QAAA9D,OAAAtX,GAEA,KAAAokC,WAAA,KACA14B,QAAAoD,IAAA,wBACA,KAAAw0B,WAAA,GAEA,EAMAK,aAAA,SAAA3jC,GACA0L,QAAAoD,IAAA,oBAAA9O,GACA,KAAAob,QAAAzD,aACA,KAAAgrB,MAAA,cACA,KAAAI,cAAA,CACA,EAKAO,UAAA,iBACA,KAAAloB,QAAAtE,UAAA1W,MAAA,KACA,KAAA2iC,cAAA,EACAr3B,QAAAoD,IAAA,yBAAAsM,SACA,KAAAunB,MAAA,eAAAvnB,QAAAlO,OAAA,IACA4R,OAAA9e,IACA0L,QAAAhI,MAAA,+BAAA1D,EAAA,GAEA,EAEAqkC,cAAA,SAAArkC,EAAAghB,GACAtV,QAAAhI,MAAA,gBAAA1D,EAAAghB,GACA,KAAA2hB,MAAA,QAAA3iC,EACA,EAEAwjC,YAAA,SAAAxjC,GACAgI,UAAAs8B,UAAAC,UAAA,KAAAtB,iBACA,KAAAN,MAAA,YAAAM,gBACA,EAIAD,iBAAA,SAAAhjC,GACA,KAAA8iC,oBAAA,CACA,EAIAM,aAAA,SAAApjC,GACA,KAAAob,QAAAlO,SAGA,KAAAi2B,gBAAA,EACA,EAIAM,cAAA,SAAAzjC,GACA,KAAAmjC,gBAAA,CACA,GAEAqB,cACAhF,GAAA,CACA3C,QAAA,KAAAA,QACApmB,YAAA,KAAAA,YACAutB,mBAAA,KAAAA,qBAEA,KAAA5oB,QAAAmkB,IACA,G,mKC5LA,IAAIkF,EAAY,CACVC,MAAiB,GACjBC,MAAiB,GACjBC,KAAiB,GACjBC,KAAiB,GACjBC,MAAiB,GACjBC,QAAiB,GACjBC,IAAiB,GACjBC,OAAiB,GACjBC,YAAiB,GACjBC,UAAiB,GACjBC,YAAiB,GACjBC,aAAiB,GACjBC,WAAiB,GACjBC,cAAiB,GACjBC,WAAiB,GACjBC,YAAiB,IAEnBC,EAAsB,CACpBC,QAAmB,GACnBC,MAAmB,GACnBC,QAAmB,GACnBC,SAAmB,GACnBC,OAAmB,GACnBC,UAAmB,GACnBC,OAAmB,GACnBC,QAAmB,GACnBC,cAAmB,IACnBC,YAAmB,IACnBC,cAAmB,IACnBC,eAAmB,IACnBC,aAAmB,IACnBC,gBAAmB,IACnBC,aAAmB,IACnBC,cAAmB,KAErBtpB,EAAU,CAAC,EACXpP,EAAU,CAAC,EACX24B,EAAU,CAAC,EAGfpjC,OAAOqjC,KAAKnC,GAAWzmB,SAAQ,SAAU6oB,GACvC,IAAIC,EAAK1pB,EAAKypB,GAAO,KAAYpC,EAAUoC,GAAK,IAC5Cn1B,EAAK1D,EAAM64B,GAAM,QAErBF,EAAOE,GAAK,SAAU91B,GACpB,OAAO+1B,EAAI/1B,EAAIW,CACjB,CACF,IAEAnO,OAAOqjC,KAAKlB,GAAqB1nB,SAAQ,SAAU6oB,GACjD,IAAIC,EAAK1pB,EAAKypB,GAAO,KAAYnB,EAAoBmB,GAAK,IACtDn1B,EAAK1D,EAAM64B,GAAM,QAErBF,EAAOE,GAAK,SAAU91B,GACpB,OAAO+1B,EAAI/1B,EAAIW,CACjB,CACF,IAEAqnB,EAAOpO,QAAWgc,EAClBA,EAAOvpB,KAAWA,EAClBupB,EAAO34B,MAAWA,C,qCC9DlB,MAAM+4B,EAAOpc,EAEboc,EAAKC,OAASC,EAAQ,OAEtBF,EAAKG,OAASD,EAAAA,OAAAA,OACdF,EAAK5N,KAAO8N,EAAQ,OACpBF,EAAKI,UAAYF,EAAQ,OACzBF,EAAKK,SAAWH,EAAQ,OACxBF,EAAKM,SAAWJ,EAAQ,M,qCCRxB,MAAMI,EAAWJ,EAAQ,OACnBG,EAAWH,EAAQ,OACnBK,EAAWL,EAAQ,OAEnB/J,EAAMvS,EAMZ,SAAS4c,EAAOxpC,EAAMkL,GACpBlK,KAAKhB,KAAOA,EACZgB,KAAKkK,KAAOA,EAEZlK,KAAKqoC,SAAW,CAAC,EACjBroC,KAAKsoC,SAAW,CAAC,CACnB,CAVAnK,EAAIgK,OAAS,SAAgBnpC,EAAMkL,GACjC,OAAO,IAAIs+B,EAAOxpC,EAAMkL,EAC1B,EAUAs+B,EAAOt2B,UAAUu2B,aAAe,SAAqBlQ,GACnD,MAAMv5B,EAAOgB,KAAKhB,KAElB,SAAS0pC,EAAUC,GACjB3oC,KAAK4oC,WAAWD,EAAQ3pC,EAC1B,CAMA,OALAupC,EAASG,EAAWnQ,GACpBmQ,EAAUx2B,UAAU02B,WAAa,SAAoBD,EAAQ3pC,GAC3Du5B,EAAK7zB,KAAK1E,KAAM2oC,EAAQ3pC,EAC1B,EAEO,IAAI0pC,EAAU1oC,KACvB,EAEAwoC,EAAOt2B,UAAU22B,YAAc,SAAqBC,GAKlD,OAJAA,EAAMA,GAAO,MAER9oC,KAAKqoC,SAAS5jC,eAAeqkC,KAChC9oC,KAAKqoC,SAASS,GAAO9oC,KAAKyoC,aAAaJ,EAASS,KAC3C9oC,KAAKqoC,SAASS,EACvB,EAEAN,EAAOt2B,UAAU5N,OAAS,SAAgBxE,EAAMgpC,EAAKz0B,GACnD,OAAOrU,KAAK6oC,YAAYC,GAAKxkC,OAAOxE,EAAMuU,EAC5C,EAEAm0B,EAAOt2B,UAAU62B,YAAc,SAAqBD,GAKlD,OAJAA,EAAMA,GAAO,MAER9oC,KAAKsoC,SAAS7jC,eAAeqkC,KAChC9oC,KAAKsoC,SAASQ,GAAO9oC,KAAKyoC,aAAaH,EAASQ,KAC3C9oC,KAAKsoC,SAASQ,EACvB,EAEAN,EAAOt2B,UAAUlO,OAAS,SAAgBlE,EAAMgpC,EAAoBE,GAClE,OAAOhpC,KAAK+oC,YAAYD,GAAK9kC,OAAOlE,EAAMkpC,EAC5C,C,qCCtDA,MAAMT,EAAWL,EAAQ,OACnBe,EAAWf,EAAAA,OAAAA,EACXrc,EAASqc,EAAAA,OAAAA,OAEf,SAASgB,EAAc9O,EAAM/lB,GAC3B40B,EAASvkC,KAAK1E,KAAMqU,GACfwX,EAAOkC,SAASqM,IAKrBp6B,KAAKo6B,KAAOA,EACZp6B,KAAKyqB,OAAS,EACdzqB,KAAKgG,OAASo0B,EAAKp0B,QANjBhG,KAAK2E,MAAM,mBAOf,CAuEA,SAASwkC,EAAczoC,EAAOsoC,GAC5B,GAAI34B,MAAMC,QAAQ5P,GAChBV,KAAKgG,OAAS,EACdhG,KAAKU,MAAQA,EAAMgS,KAAI,SAAS02B,GAI9B,OAHKD,EAAcE,gBAAgBD,KACjCA,EAAO,IAAID,EAAcC,EAAMJ,IACjChpC,KAAKgG,QAAUojC,EAAKpjC,OACbojC,CACT,GAAGppC,WACE,GAAqB,kBAAVU,EAAoB,CACpC,KAAM,GAAKA,GAASA,GAAS,KAC3B,OAAOsoC,EAASrkC,MAAM,gCACxB3E,KAAKU,MAAQA,EACbV,KAAKgG,OAAS,CAChB,MAAO,GAAqB,kBAAVtF,EAChBV,KAAKU,MAAQA,EACbV,KAAKgG,OAAS6lB,EAAO1pB,WAAWzB,OAC3B,KAAImrB,EAAOkC,SAASrtB,GAIzB,OAAOsoC,EAASrkC,MAAM,4BAA8BjE,GAHpDV,KAAKU,MAAQA,EACbV,KAAKgG,OAAStF,EAAMsF,MAGtB,CACF,CA7FAuiC,EAASW,EAAeD,GACxBrd,EAAQ,EAAgBsd,EAExBA,EAAcI,gBAAkB,SAAyBxpC,GACvD,GAAIA,aAAgBopC,EAClB,OAAO,EAIT,MAAMK,EAA+B,kBAATzpC,GAC1B+rB,EAAOkC,SAASjuB,EAAKs6B,OACK,kBAA1Bt6B,EAAKhB,YAAYE,MACM,kBAAhBc,EAAK2qB,QACW,kBAAhB3qB,EAAKkG,QACS,oBAAdlG,EAAK0pC,MACY,oBAAjB1pC,EAAK2pC,SACY,oBAAjB3pC,EAAK4pC,SACc,oBAAnB5pC,EAAKu0B,WACS,oBAAdv0B,EAAK6pC,MACQ,oBAAb7pC,EAAK8pC,IAEd,OAAOL,CACT,EAEAL,EAAch3B,UAAUs3B,KAAO,WAC7B,MAAO,CAAE/e,OAAQzqB,KAAKyqB,OAAQue,SAAUC,EAAS/2B,UAAUs3B,KAAK9kC,KAAK1E,MACvE,EAEAkpC,EAAch3B,UAAUu3B,QAAU,SAAiBD,GAEjD,MAAMjZ,EAAM,IAAI2Y,EAAclpC,KAAKo6B,MAOnC,OANA7J,EAAI9F,OAAS+e,EAAK/e,OAClB8F,EAAIvqB,OAAShG,KAAKyqB,OAElBzqB,KAAKyqB,OAAS+e,EAAK/e,OACnBwe,EAAS/2B,UAAUu3B,QAAQ/kC,KAAK1E,KAAMwpC,EAAKR,UAEpCzY,CACT,EAEA2Y,EAAch3B,UAAUw3B,QAAU,WAChC,OAAO1pC,KAAKyqB,SAAWzqB,KAAKgG,MAC9B,EAEAkjC,EAAch3B,UAAUmiB,UAAY,SAAmBwV,GACrD,OAAI7pC,KAAKyqB,OAAS,GAAKzqB,KAAKgG,OACnBhG,KAAKo6B,KAAK/F,UAAUr0B,KAAKyqB,UAAU,GAEnCzqB,KAAK2E,MAAMklC,GAAQ,wBAC9B,EAEAX,EAAch3B,UAAUy3B,KAAO,SAAcjjC,EAAOmjC,GAClD,KAAM7pC,KAAKyqB,OAAS/jB,GAAS1G,KAAKgG,QAChC,OAAOhG,KAAK2E,MAAMklC,GAAQ,yBAE5B,MAAMtZ,EAAM,IAAI2Y,EAAclpC,KAAKo6B,MAQnC,OALA7J,EAAIuZ,eAAiB9pC,KAAK8pC,eAE1BvZ,EAAI9F,OAASzqB,KAAKyqB,OAClB8F,EAAIvqB,OAAShG,KAAKyqB,OAAS/jB,EAC3B1G,KAAKyqB,QAAU/jB,EACR6pB,CACT,EAEA2Y,EAAch3B,UAAU03B,IAAM,SAAaJ,GACzC,OAAOxpC,KAAKo6B,KAAKl2B,MAAMslC,EAAOA,EAAK/e,OAASzqB,KAAKyqB,OAAQzqB,KAAKgG,OAChE,EA0BA4lB,EAAQ,EAAgBud,EAExBA,EAAcE,gBAAkB,SAAyBvpC,GACvD,GAAIA,aAAgBqpC,EAClB,OAAO,EAIT,MAAMI,EAA+B,kBAATzpC,GACA,kBAA1BA,EAAKhB,YAAYE,MACM,kBAAhBc,EAAKkG,QACS,oBAAdlG,EAAKoI,KAEd,OAAOqhC,CACT,EAEAJ,EAAcj3B,UAAUhK,KAAO,SAAc0qB,EAAKnI,GAMhD,OALKmI,IACHA,EAAM/G,EAAOuB,MAAMptB,KAAKgG,SACrBykB,IACHA,EAAS,GAES,IAAhBzqB,KAAKgG,SAGLqK,MAAMC,QAAQtQ,KAAKU,OACrBV,KAAKU,MAAMue,SAAQ,SAASmqB,GAC1BA,EAAKlhC,KAAK0qB,EAAKnI,GACfA,GAAU2e,EAAKpjC,MACjB,KAE0B,kBAAfhG,KAAKU,MACdkyB,EAAInI,GAAUzqB,KAAKU,MACU,kBAAfV,KAAKU,MACnBkyB,EAAI1N,MAAMllB,KAAKU,MAAO+pB,GACfoB,EAAOkC,SAAS/tB,KAAKU,QAC5BV,KAAKU,MAAMotB,KAAK8E,EAAKnI,GACvBA,GAAUzqB,KAAKgG,SAdR4sB,CAkBX,C,qCCtJA,MAAMwH,EAAOxO,EAEbwO,EAAK6O,SAAWf,EAAAA,OAAAA,EAChB9N,EAAK8O,cAAgBhB,EAAAA,OAAAA,EACrB9N,EAAK+O,cAAgBjB,EAAAA,OAAAA,EACrB9N,EAAK2P,KAAO7B,EAAQ,M,qCCPPA,EAAA,OAEb,MAAMe,EAAWf,EAAAA,OAAAA,EACXiB,EAAgBjB,EAAAA,OAAAA,EAChBgB,EAAgBhB,EAAAA,OAAAA,EAChB8B,EAAS9B,EAAQ,OAGjB+B,EAAO,CACX,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,YAI3DtG,EAAU,CACd,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,YACPpS,OAAO0Y,GAGHC,EAAY,CAChB,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,eAG/B,SAASH,EAAKjB,EAAKqB,EAAQnrC,GACzB,MAAMsN,EAAQ,CAAC,EACftM,KAAKoqC,WAAa99B,EAElBA,EAAMtN,KAAOA,EACbsN,EAAMw8B,IAAMA,EAEZx8B,EAAM69B,OAASA,GAAU,KACzB79B,EAAM+9B,SAAW,KAGjB/9B,EAAMg+B,IAAM,KACZh+B,EAAM3M,KAAO,KACb2M,EAAMi+B,YAAc,KACpBj+B,EAAMk+B,OAAS,KACfl+B,EAAMm+B,UAAW,EACjBn+B,EAAMgZ,KAAM,EACZhZ,EAAMqV,KAAM,EACZrV,EAAMo+B,IAAM,KACZp+B,EAAMq+B,WAAa,KACnBr+B,EAAMsV,IAAM,KACZtV,EAAM,WAAa,KACnBA,EAAMs+B,SAAW,KACjBt+B,EAAMu+B,SAAW,KACjBv+B,EAAMw+B,SAAW,KAGZx+B,EAAM69B,SACT79B,EAAM+9B,SAAW,GACjBrqC,KAAK+qC,QAET,CACA/Q,EAAOpO,QAAUme,EAEjB,MAAMiB,EAAa,CACjB,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,YAGdjB,EAAK73B,UAAU+4B,MAAQ,WACrB,MAAM3+B,EAAQtM,KAAKoqC,WACbc,EAAS,CAAC,EAChBF,EAAW/rB,SAAQ,SAAS6B,GAC1BoqB,EAAOpqB,GAAQxU,EAAMwU,EACvB,IACA,MAAMyP,EAAM,IAAIvwB,KAAKlB,YAAYosC,EAAOf,QAExC,OADA5Z,EAAI6Z,WAAac,EACV3a,CACT,EAEAwZ,EAAK73B,UAAU64B,MAAQ,WACrB,MAAMz+B,EAAQtM,KAAKoqC,WACnBzG,EAAQ1kB,SAAQ,SAASzQ,GACvBxO,KAAKwO,GAAU,WACb,MAAMy8B,EAAQ,IAAIjrC,KAAKlB,YAAYkB,MAEnC,OADAsM,EAAM+9B,SAAS9mB,KAAK0nB,GACbA,EAAMz8B,GAAQlN,MAAM2pC,EAAOlsC,UACpC,CACF,GAAGiB,KACL,EAEA+pC,EAAK73B,UAAUi5B,MAAQ,SAAcjhC,GACnC,MAAMoC,EAAQtM,KAAKoqC,WAEnBJ,EAAwB,OAAjB19B,EAAM69B,QACbjgC,EAAKxF,KAAK1E,MAGVsM,EAAM+9B,SAAW/9B,EAAM+9B,SAASxqB,QAAO,SAASurB,GAC9C,OAAOA,EAAMhB,WAAWD,SAAWnqC,IACrC,GAAGA,MACHgqC,EAAOqB,MAAM/+B,EAAM+9B,SAASrkC,OAAQ,EAAG,oCACzC,EAEA+jC,EAAK73B,UAAUo5B,SAAW,SAAiB3rC,GACzC,MAAM2M,EAAQtM,KAAKoqC,WAGbC,EAAW1qC,EAAKkgB,QAAO,SAAS2M,GACpC,OAAOA,aAAexsB,KAAKlB,WAC7B,GAAGkB,MACHL,EAAOA,EAAKkgB,QAAO,SAAS2M,GAC1B,QAASA,aAAexsB,KAAKlB,YAC/B,GAAGkB,MAEqB,IAApBqqC,EAASrkC,SACXgkC,EAA0B,OAAnB19B,EAAM+9B,UACb/9B,EAAM+9B,SAAWA,EAGjBA,EAASprB,SAAQ,SAASmsB,GACxBA,EAAMhB,WAAWD,OAASnqC,IAC5B,GAAGA,OAEe,IAAhBL,EAAKqG,SACPgkC,EAAsB,OAAf19B,EAAM3M,MACb2M,EAAM3M,KAAOA,EACb2M,EAAMi+B,YAAc5qC,EAAK+S,KAAI,SAAS8Z,GACpC,GAAmB,kBAARA,GAAoBA,EAAI1tB,cAAgB0F,OACjD,OAAOgoB,EAET,MAAM+D,EAAM,CAAC,EAOb,OANA/rB,OAAOqjC,KAAKrb,GAAKvN,SAAQ,SAAS2C,GAC5BA,IAAc,EAANA,KACVA,GAAO,GACT,MAAMlhB,EAAQ8rB,EAAI5K,GAClB2O,EAAI7vB,GAASkhB,CACf,IACO2O,CACT,IAEJ,EAMA2Z,EAAUjrB,SAAQ,SAASzQ,GACzBu7B,EAAK73B,UAAU1D,GAAU,WACvB,MAAMlC,EAAQtM,KAAKoqC,WACnB,MAAM,IAAI1qC,MAAM8O,EAAS,kCAAoClC,EAAMw8B,IACrE,CACF,IAMAmB,EAAKhrB,SAAQ,SAASqrB,GACpBP,EAAK73B,UAAUo4B,GAAO,WACpB,MAAMh+B,EAAQtM,KAAKoqC,WACbzqC,EAAO0Q,MAAM6B,UAAUhO,MAAMQ,KAAK3F,WAOxC,OALAirC,EAAqB,OAAd19B,EAAMg+B,KACbh+B,EAAMg+B,IAAMA,EAEZtqC,KAAKsrC,SAAS3rC,GAEPK,IACT,CACF,IAEA+pC,EAAK73B,UAAUw4B,IAAM,SAAatB,GAChCY,EAAOZ,GACP,MAAM98B,EAAQtM,KAAKoqC,WAKnB,OAHAJ,EAAqB,OAAd19B,EAAMo+B,KACbp+B,EAAMo+B,IAAMtB,EAELppC,IACT,EAEA+pC,EAAK73B,UAAUu4B,SAAW,WACxB,MAAMn+B,EAAQtM,KAAKoqC,WAInB,OAFA99B,EAAMm+B,UAAW,EAEVzqC,IACT,EAEA+pC,EAAK73B,UAAUq5B,IAAM,SAAaxc,GAChC,MAAMziB,EAAQtM,KAAKoqC,WAMnB,OAJAJ,EAA4B,OAArB19B,EAAM,YACbA,EAAM,WAAayiB,EACnBziB,EAAMm+B,UAAW,EAEVzqC,IACT,EAEA+pC,EAAK73B,UAAU04B,SAAW,SAAkB9gB,GAC1C,MAAMxd,EAAQtM,KAAKoqC,WAKnB,OAHAJ,EAA0B,OAAnB19B,EAAMs+B,UAAwC,OAAnBt+B,EAAMu+B,UACxCv+B,EAAMs+B,SAAW9gB,EAEV9pB,IACT,EAEA+pC,EAAK73B,UAAU24B,SAAW,SAAkB/gB,GAC1C,MAAMxd,EAAQtM,KAAKoqC,WAKnB,OAHAJ,EAA0B,OAAnB19B,EAAMs+B,UAAwC,OAAnBt+B,EAAMu+B,UACxCv+B,EAAMu+B,SAAW/gB,EAEV9pB,IACT,EAEA+pC,EAAK73B,UAAUyP,IAAM,WACnB,MAAMrV,EAAQtM,KAAKoqC,WACbzqC,EAAO0Q,MAAM6B,UAAUhO,MAAMQ,KAAK3F,WAOxC,OALAuN,EAAMqV,KAAM,EAEQ,IAAhBhiB,EAAKqG,QACPhG,KAAKsrC,SAAS3rC,GAETK,IACT,EAEA+pC,EAAK73B,UAAU0P,IAAM,SAAa4pB,GAChC,MAAMl/B,EAAQtM,KAAKoqC,WAKnB,OAHAJ,EAAqB,OAAd19B,EAAMsV,KACbtV,EAAMsV,IAAM4pB,EAELxrC,IACT,EAEA+pC,EAAK73B,UAAUoT,IAAM,WACnB,MAAMhZ,EAAQtM,KAAKoqC,WAInB,OAFA99B,EAAMgZ,KAAM,EAELtlB,IACT,EAEA+pC,EAAK73B,UAAUs4B,OAAS,SAAgB7oB,GACtC,MAAMrV,EAAQtM,KAAKoqC,WAQnB,OANAJ,EAAwB,OAAjB19B,EAAMk+B,QACbl+B,EAAMk+B,OAAS7oB,EACf3hB,KAAKsrC,SAAS9mC,OAAOqjC,KAAKlmB,GAAKjP,KAAI,SAASkP,GAC1C,OAAOD,EAAIC,EACb,KAEO5hB,IACT,EAEA+pC,EAAK73B,UAAU44B,SAAW,SAAkB1B,GAC1C,MAAM98B,EAAQtM,KAAKoqC,WAKnB,OAHAJ,EAAqB,OAAd19B,EAAMo+B,KACbp+B,EAAMw+B,SAAW1B,EAEVppC,IACT,EAMA+pC,EAAK73B,UAAUu5B,QAAU,SAAgB1S,EAAO1kB,GAC9C,MAAM/H,EAAQtM,KAAKoqC,WAGnB,GAAqB,OAAjB99B,EAAM69B,OACR,OAAOpR,EAAM2S,WAAWp/B,EAAM+9B,SAAS,GAAGoB,QAAQ1S,EAAO1kB,IAE3D,IAuCIs3B,EAvCAxqC,EAASmL,EAAM,WACfs/B,GAAU,EAEVC,EAAU,KAKd,GAJkB,OAAdv/B,EAAMsV,MACRiqB,EAAU9S,EAAM+S,SAASx/B,EAAMsV,MAG7BtV,EAAMm+B,SAAU,CAClB,IAAIH,EAAM,KAQV,GAPuB,OAAnBh+B,EAAMs+B,SACRN,EAAMh+B,EAAMs+B,SACc,OAAnBt+B,EAAMu+B,SACbP,EAAMh+B,EAAMu+B,SACS,OAAdv+B,EAAMg+B,MACbA,EAAMh+B,EAAMg+B,KAEF,OAARA,GAAiBh+B,EAAMgZ,KAgBzB,GAFAsmB,EAAU5rC,KAAK+rC,SAAShT,EAAOuR,EAAKh+B,EAAMgZ,KAEtCyT,EAAMiT,QAAQJ,GAChB,OAAOA,MAjBqB,CAE9B,MAAMpC,EAAOzQ,EAAMyQ,OACnB,IACuB,OAAjBl9B,EAAMk+B,OACRxqC,KAAKisC,eAAe3/B,EAAMg+B,IAAKvR,EAAO1kB,GAEtCrU,KAAKksC,cAAcnT,EAAO1kB,GAC5Bu3B,GAAU,CACZ,CAAE,MAAO3qC,GACP2qC,GAAU,CACZ,CACA7S,EAAM0Q,QAAQD,EAChB,CAMF,CAOA,GAHIl9B,EAAMqV,KAAOiqB,IACfD,EAAU5S,EAAMoT,eAEdP,EAAS,CAEX,GAAuB,OAAnBt/B,EAAMs+B,SAAmB,CAC3B,MAAMA,EAAW5qC,KAAKosC,WAAWrT,EAAOzsB,EAAMs+B,UAC9C,GAAI7R,EAAMiT,QAAQpB,GAChB,OAAOA,EACT7R,EAAQ6R,CACV,CAEA,MAAM3gB,EAAQ8O,EAAMtO,OAGpB,GAAkB,OAAdne,EAAMo+B,KAAiC,OAAjBp+B,EAAMk+B,OAAiB,CAC/C,IAAIhB,EACAl9B,EAAMgZ,MACRkkB,EAAOzQ,EAAMyQ,QACf,MAAMt/B,EAAOlK,KAAKosC,WAChBrT,EACmB,OAAnBzsB,EAAMu+B,SAAoBv+B,EAAMu+B,SAAWv+B,EAAMg+B,IACjDh+B,EAAMgZ,KAER,GAAIyT,EAAMiT,QAAQ9hC,GAChB,OAAOA,EAELoC,EAAMgZ,IACRnkB,EAAS43B,EAAM6Q,IAAIJ,GAEnBzQ,EAAQ7uB,CACZ,CAiBA,GAfImK,GAAWA,EAAQg4B,OAAuB,OAAd//B,EAAMg+B,KACpCj2B,EAAQg4B,MAAMtT,EAAMuT,OAAQriB,EAAO8O,EAAM/yB,OAAQ,UAE/CqO,GAAWA,EAAQg4B,OAAuB,OAAd//B,EAAMg+B,KACpCj2B,EAAQg4B,MAAMtT,EAAMuT,OAAQvT,EAAMtO,OAAQsO,EAAM/yB,OAAQ,WAGtDsG,EAAMgZ,MAGRnkB,EAD0B,OAAjBmL,EAAMk+B,OACNxqC,KAAKisC,eAAe3/B,EAAMg+B,IAAKvR,EAAO1kB,GAEtCrU,KAAKksC,cAAcnT,EAAO1kB,IAGjC0kB,EAAMiT,QAAQ7qC,GAChB,OAAOA,EAYT,GATKmL,EAAMgZ,KAAwB,OAAjBhZ,EAAMk+B,QAAsC,OAAnBl+B,EAAM+9B,UAC/C/9B,EAAM+9B,SAASprB,SAAQ,SAAwBmsB,GAG7CA,EAAMK,QAAQ1S,EAAO1kB,EACvB,IAIE/H,EAAMw+B,WAA2B,WAAdx+B,EAAMg+B,KAAkC,WAAdh+B,EAAMg+B,KAAmB,CACxE,MAAMxqC,EAAO,IAAIopC,EAAc/nC,GAC/BA,EAASnB,KAAKusC,QAAQjgC,EAAMw+B,SAAU/R,EAAM+Q,eAAenoB,KACxD8pB,QAAQ3rC,EAAMuU,EACnB,CACF,CAYA,OATI/H,EAAMqV,KAAOiqB,IACfzqC,EAAS43B,EAAMyT,YAAYb,IAGX,OAAdr/B,EAAMsV,KAA4B,OAAXzgB,IAA+B,IAAZyqC,EAEzB,OAAZC,GACP9S,EAAM0T,QAAQZ,GAFd9S,EAAM2T,SAASb,EAASv/B,EAAMsV,IAAKzgB,GAI9BA,CACT,EAEA4oC,EAAK73B,UAAU+5B,eAAiB,SAAuB3B,EAAKvR,EAAO1kB,GACjE,MAAM/H,EAAQtM,KAAKoqC,WAEnB,MAAY,QAARE,GAAyB,QAARA,EACZ,KACG,UAARA,GAA2B,UAARA,EACdtqC,KAAK2sC,YAAY5T,EAAOuR,EAAKh+B,EAAM3M,KAAK,GAAI0U,GAC5C,OAAOc,KAAKm1B,GACZtqC,KAAK4sC,WAAW7T,EAAOuR,EAAKj2B,GACpB,UAARi2B,GAAmBh+B,EAAM3M,KACzBK,KAAK6sC,aAAa9T,EAAOzsB,EAAM3M,KAAK,GAAI2M,EAAM3M,KAAK,GAAI0U,GAC/C,UAARi2B,EACAtqC,KAAK6sC,aAAa9T,EAAO,KAAM,KAAM1kB,GAC7B,YAARi2B,GAA6B,YAARA,EACrBtqC,KAAK8sC,YAAY/T,EAAOuR,EAAKj2B,GACrB,UAARi2B,EACAtqC,KAAK+sC,YAAYhU,EAAO1kB,GAChB,SAARi2B,EACAtqC,KAAKgtC,YAAYjU,EAAO1kB,GAChB,YAARi2B,EACAtqC,KAAK4sC,WAAW7T,EAAOuR,EAAKj2B,GACpB,QAARi2B,GAAyB,SAARA,EACjBtqC,KAAKitC,WAAWlU,EAAOzsB,EAAM3M,MAAQ2M,EAAM3M,KAAK,GAAI0U,GAE3C,OAAd/H,EAAMo+B,IACD1qC,KAAKusC,QAAQjgC,EAAMo+B,IAAK3R,EAAM+Q,eAAenoB,KACjD8pB,QAAQ1S,EAAO1kB,GAEX0kB,EAAMp0B,MAAM,gBAAkB2lC,EAEzC,EAEAP,EAAK73B,UAAUq6B,QAAU,SAAiB5D,EAAQhnB,GAEhD,MAAMrV,EAAQtM,KAAKoqC,WASnB,OAPA99B,EAAMq+B,WAAa3qC,KAAKktC,KAAKvE,EAAQhnB,GACrCqoB,EAA8C,OAAvC19B,EAAMq+B,WAAWP,WAAWD,QACnC79B,EAAMq+B,WAAar+B,EAAMq+B,WAAWP,WAAWC,SAAS,GACpD/9B,EAAMu+B,WAAav+B,EAAMq+B,WAAWP,WAAWS,WACjDv+B,EAAMq+B,WAAar+B,EAAMq+B,WAAWM,QACpC3+B,EAAMq+B,WAAWP,WAAWS,SAAWv+B,EAAMu+B,UAExCv+B,EAAMq+B,UACf,EAEAZ,EAAK73B,UAAUg6B,cAAgB,SAAsBnT,EAAO1kB,GAC1D,MAAM/H,EAAQtM,KAAKoqC,WACnB,IAAIjpC,EAAS,KACTgsC,GAAQ,EAmBZ,OAjBA3oC,OAAOqjC,KAAKv7B,EAAMk+B,QAAQpyB,MAAK,SAASwJ,GACtC,MAAM4nB,EAAOzQ,EAAMyQ,OACb4D,EAAO9gC,EAAMk+B,OAAO5oB,GAC1B,IACE,MAAMlhB,EAAQ0sC,EAAK3B,QAAQ1S,EAAO1kB,GAClC,GAAI0kB,EAAMiT,QAAQtrC,GAChB,OAAO,EAETS,EAAS,CAAEklB,KAAMzE,EAAKlhB,MAAOA,GAC7BysC,GAAQ,CACV,CAAE,MAAOlsC,GAEP,OADA83B,EAAM0Q,QAAQD,IACP,CACT,CACA,OAAO,CACT,GAAGxpC,MAEEmtC,EAGEhsC,EAFE43B,EAAMp0B,MAAM,qBAGvB,EAMAolC,EAAK73B,UAAUm7B,qBAAuB,SAA6BvtC,GACjE,OAAO,IAAIqpC,EAAcrpC,EAAME,KAAKgpC,SACtC,EAEAe,EAAK73B,UAAUo7B,QAAU,SAAgBxtC,EAAMkpC,EAAUmB,GACvD,MAAM79B,EAAQtM,KAAKoqC,WACnB,GAAyB,OAArB99B,EAAM,YAAuBA,EAAM,aAAexM,EACpD,OAEF,MAAMqB,EAASnB,KAAKutC,aAAaztC,EAAMkpC,EAAUmB,GACjD,YAAeqD,IAAXrsC,GAGAnB,KAAKytC,aAAatsC,EAAQ6nC,EAAUmB,QAHxC,EAMOhpC,CACT,EAEA4oC,EAAK73B,UAAUq7B,aAAe,SAAgBztC,EAAMkpC,EAAUmB,GAC5D,MAAM79B,EAAQtM,KAAKoqC,WAGnB,GAAqB,OAAjB99B,EAAM69B,OACR,OAAO79B,EAAM+9B,SAAS,GAAGiD,QAAQxtC,EAAMkpC,GAAY,IAAIC,GAEzD,IAAI9nC,EAAS,KAMb,GAHAnB,KAAKgpC,SAAWA,EAGZ18B,EAAMm+B,eAAqB+C,IAAT1tC,EAAoB,CACxC,GAAyB,OAArBwM,EAAM,WAGR,OAFAxM,EAAOwM,EAAM,UAGjB,CAGA,IAAIu1B,EAAU,KACV6L,GAAY,EAChB,GAAIphC,EAAMgZ,IAERnkB,EAASnB,KAAKqtC,qBAAqBvtC,QAC9B,GAAIwM,EAAMk+B,OACfrpC,EAASnB,KAAK2tC,cAAc7tC,EAAMkpC,QAC7B,GAAI18B,EAAMw+B,SACfjJ,EAAU7hC,KAAKusC,QAAQjgC,EAAMw+B,SAAUX,GAAQmD,QAAQxtC,EAAMkpC,GAC7D0E,GAAY,OACP,GAAIphC,EAAM+9B,SACfxI,EAAUv1B,EAAM+9B,SAAS33B,KAAI,SAAS04B,GACpC,GAA6B,UAAzBA,EAAMhB,WAAWE,IACnB,OAAOc,EAAMkC,QAAQ,KAAMtE,EAAUlpC,GAEvC,GAA6B,OAAzBsrC,EAAMhB,WAAWxoB,IACnB,OAAOonB,EAASrkC,MAAM,2BACxB,MAAMknC,EAAU7C,EAAS8C,SAASV,EAAMhB,WAAWxoB,KAEnD,GAAoB,kBAAT9hB,EACT,OAAOkpC,EAASrkC,MAAM,2CAExB,MAAM4rB,EAAM6a,EAAMkC,QAAQxtC,EAAKsrC,EAAMhB,WAAWxoB,KAAMonB,EAAUlpC,GAGhE,OAFAkpC,EAAS0D,SAASb,GAEXtb,CACT,GAAGvwB,MAAM6f,QAAO,SAASurB,GACvB,OAAOA,CACT,IACAvJ,EAAU7hC,KAAKqtC,qBAAqBxL,QAEpC,GAAkB,UAAdv1B,EAAMg+B,KAAiC,UAAdh+B,EAAMg+B,IAAiB,CAElD,IAAMh+B,EAAM3M,MAA8B,IAAtB2M,EAAM3M,KAAKqG,OAC7B,OAAOgjC,EAASrkC,MAAM,uBAAyB2H,EAAMg+B,KAEvD,IAAKj6B,MAAMC,QAAQxQ,GACjB,OAAOkpC,EAASrkC,MAAM,sCAExB,MAAMymC,EAAQprC,KAAKirC,QACnBG,EAAMhB,WAAWS,SAAW,KAC5BhJ,EAAU7hC,KAAKqtC,qBAAqBvtC,EAAK4S,KAAI,SAAS02B,GACpD,MAAM98B,EAAQtM,KAAKoqC,WAEnB,OAAOpqC,KAAKusC,QAAQjgC,EAAM3M,KAAK,GAAIG,GAAMwtC,QAAQlE,EAAMJ,EACzD,GAAGoC,GACL,MAAyB,OAAd9+B,EAAMo+B,IACfvpC,EAASnB,KAAKusC,QAAQjgC,EAAMo+B,IAAKP,GAAQmD,QAAQxtC,EAAMkpC,IAEvDnH,EAAU7hC,KAAK4tC,iBAAiBthC,EAAMg+B,IAAKxqC,GAC3C4tC,GAAY,GAKhB,IAAKphC,EAAMgZ,KAAwB,OAAjBhZ,EAAMk+B,OAAiB,CACvC,MAAMF,EAAyB,OAAnBh+B,EAAMu+B,SAAoBv+B,EAAMu+B,SAAWv+B,EAAMg+B,IACvDuD,EAAyB,OAAnBvhC,EAAMu+B,SAAoB,YAAc,UAExC,OAARP,EACgB,OAAdh+B,EAAMo+B,KACR1B,EAASrkC,MAAM,wCAEC,OAAd2H,EAAMo+B,MACRvpC,EAASnB,KAAK8tC,iBAAiBxD,EAAKoD,EAAWG,EAAKhM,GAE1D,CAMA,OAHuB,OAAnBv1B,EAAMs+B,WACRzpC,EAASnB,KAAK8tC,iBAAiBxhC,EAAMs+B,UAAU,EAAO,UAAWzpC,IAE5DA,CACT,EAEA4oC,EAAK73B,UAAUy7B,cAAgB,SAAsB7tC,EAAMkpC,GACzD,MAAM18B,EAAQtM,KAAKoqC,WAEbgD,EAAO9gC,EAAMk+B,OAAO1qC,EAAKumB,MAO/B,OANK+mB,GACHpD,GACE,EACAlqC,EAAKumB,KAAO,iBACN/iB,KAAKC,UAAUiB,OAAOqjC,KAAKv7B,EAAMk+B,UAEpC4C,EAAKE,QAAQxtC,EAAKY,MAAOsoC,EAClC,EAEAe,EAAK73B,UAAU07B,iBAAmB,SAAyBtD,EAAKxqC,GAC9D,MAAMwM,EAAQtM,KAAKoqC,WAEnB,GAAI,OAAOj1B,KAAKm1B,GACd,OAAOtqC,KAAK+tC,WAAWjuC,EAAMwqC,GAC1B,GAAY,UAARA,GAAmBh+B,EAAM3M,KAChC,OAAOK,KAAKguC,aAAaluC,EAAMwM,EAAMi+B,YAAY,GAAIj+B,EAAM3M,KAAK,IAC7D,GAAY,UAAR2qC,EACP,OAAOtqC,KAAKguC,aAAaluC,EAAM,KAAM,MAClC,GAAY,YAARwqC,GAA6B,YAARA,EAC5B,OAAOtqC,KAAKiuC,YAAYnuC,EAAMwqC,GAC3B,GAAY,UAARA,EACP,OAAOtqC,KAAKkuC,cACT,GAAY,QAAR5D,GAAyB,SAARA,EACxB,OAAOtqC,KAAKmuC,WAAWruC,EAAMwM,EAAM3M,MAAQ2M,EAAMi+B,YAAY,IAC1D,GAAY,SAARD,EACP,OAAOtqC,KAAKouC,YAAYtuC,GACrB,GAAY,YAARwqC,EACP,OAAOtqC,KAAK+tC,WAAWjuC,EAAMwqC,GAE7B,MAAM,IAAI5qC,MAAM,oBAAsB4qC,EAC1C,EAEAP,EAAK73B,UAAUm8B,UAAY,SAAkBp9B,GAC3C,MAAO,YAAYkE,KAAKlE,EAC1B,EAEA84B,EAAK73B,UAAUo8B,YAAc,SAAoBr9B,GAC/C,MAAO,6BAA6BkE,KAAKlE,EAC3C,C,qCC7nBai3B,EAAA,OAEb,MAAMK,EAAWL,EAAQ,OAEzB,SAASe,EAAS50B,GAChBrU,KAAK8pC,eAAiB,CACpBnoB,IAAK,KACL2qB,KAAM,GACNj4B,QAASA,GAAW,CAAC,EACrB8jB,OAAQ,GAEZ,CA2FA,SAASoW,EAAcjC,EAAMtT,GAC3Bh5B,KAAKssC,KAAOA,EACZtsC,KAAKwuC,QAAQxV,EACf,CA7FApN,EAAQ,EAAWqd,EAEnBA,EAAS/2B,UAAU85B,QAAU,SAAiBrqB,GAC5C,OAAOA,aAAe4sB,CACxB,EAEAtF,EAAS/2B,UAAUs3B,KAAO,WACxB,MAAMl9B,EAAQtM,KAAK8pC,eAEnB,MAAO,CAAEnoB,IAAKrV,EAAMqV,IAAK8sB,QAASniC,EAAMggC,KAAKtmC,OAC/C,EAEAijC,EAAS/2B,UAAUu3B,QAAU,SAAiB3pC,GAC5C,MAAMwM,EAAQtM,KAAK8pC,eAEnBx9B,EAAMqV,IAAM7hB,EAAK6hB,IACjBrV,EAAMggC,KAAOhgC,EAAMggC,KAAKpoC,MAAM,EAAGpE,EAAK2uC,QACxC,EAEAxF,EAAS/2B,UAAU45B,SAAW,SAAkBlqB,GAC9C,OAAO5hB,KAAK8pC,eAAewC,KAAK/oB,KAAK3B,EACvC,EAEAqnB,EAAS/2B,UAAUu6B,QAAU,SAAiB1tB,GAC5C,MAAMzS,EAAQtM,KAAK8pC,eAEnBx9B,EAAMggC,KAAOhgC,EAAMggC,KAAKpoC,MAAM,EAAG6a,EAAQ,EAC3C,EAEAkqB,EAAS/2B,UAAUw6B,SAAW,SAAkB3tB,EAAO6C,EAAKlhB,GAC1D,MAAM4L,EAAQtM,KAAK8pC,eAEnB9pC,KAAKysC,QAAQ1tB,GACK,OAAdzS,EAAMqV,MACRrV,EAAMqV,IAAIC,GAAOlhB,EACrB,EAEAuoC,EAAS/2B,UAAUo6B,KAAO,WACxB,OAAOtsC,KAAK8pC,eAAewC,KAAKpkC,KAAK,IACvC,EAEA+gC,EAAS/2B,UAAUi6B,YAAc,WAC/B,MAAM7/B,EAAQtM,KAAK8pC,eAEb4E,EAAOpiC,EAAMqV,IAEnB,OADArV,EAAMqV,IAAM,CAAC,EACN+sB,CACT,EAEAzF,EAAS/2B,UAAUs6B,YAAc,SAAqBkC,GACpD,MAAMpiC,EAAQtM,KAAK8pC,eAEbp8B,EAAMpB,EAAMqV,IAElB,OADArV,EAAMqV,IAAM+sB,EACLhhC,CACT,EAEAu7B,EAAS/2B,UAAUvN,MAAQ,SAAeq0B,GACxC,IAAI2V,EACJ,MAAMriC,EAAQtM,KAAK8pC,eAEb8E,EAAY5V,aAAeuV,EASjC,GAPEI,EADEC,EACI5V,EAEA,IAAIuV,EAAcjiC,EAAMggC,KAAK55B,KAAI,SAASm8B,GAC9C,MAAO,IAAMvrC,KAAKC,UAAUsrC,GAAQ,GACtC,IAAG3mC,KAAK,IAAK8wB,EAAIn5B,SAAWm5B,EAAKA,EAAIR,QAGlClsB,EAAM+H,QAAQy6B,QACjB,MAAMH,EAKR,OAHKC,GACHtiC,EAAM6rB,OAAO5U,KAAKorB,GAEbA,CACT,EAEA1F,EAAS/2B,UAAUw5B,WAAa,SAAoBvqC,GAClD,MAAMmL,EAAQtM,KAAK8pC,eACnB,OAAKx9B,EAAM+H,QAAQy6B,QAGZ,CACL3tC,OAAQnB,KAAKgsC,QAAQ7qC,GAAU,KAAOA,EACtCg3B,OAAQ7rB,EAAM6rB,QAJPh3B,CAMX,EAMAonC,EAASgG,EAAe7uC,OAExB6uC,EAAcr8B,UAAUs8B,QAAU,SAAiBxV,GAKjD,GAJAh5B,KAAKH,QAAUm5B,EAAM,SAAWh5B,KAAKssC,MAAQ,aACzC5sC,MAAMqvC,mBACRrvC,MAAMqvC,kBAAkB/uC,KAAMuuC,IAE3BvuC,KAAKw4B,MACR,IAEE,MAAM,IAAI94B,MAAMM,KAAKH,QACvB,CAAE,MAAOoB,GACPjB,KAAKw4B,MAAQv3B,EAAEu3B,KACjB,CAEF,OAAOx4B,IACT,C,mCCvHA,SAASgvC,EAAQt8B,GACf,MAAM6d,EAAM,CAAC,EAWb,OATA/rB,OAAOqjC,KAAKn1B,GAAKuM,SAAQ,SAAS2C,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,MAAMlhB,EAAQgS,EAAIkP,GAClB2O,EAAI7vB,GAASkhB,CACf,IAEO2O,CACT,CAEA3E,EAAQqjB,SAAW,CACjB,EAAG,YACH,EAAG,cACH,EAAG,UACH,EAAG,WAELrjB,EAAQsjB,eAAiBF,EAAQpjB,EAAQqjB,UAEzCrjB,EAAQ0e,IAAM,CACZ,EAAM,MACN,EAAM,OACN,EAAM,MACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,UACN,EAAM,WACN,EAAM,OACN,GAAM,OACN,GAAM,QACN,GAAM,UACN,GAAM,cACN,GAAM,MACN,GAAM,MACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,UACN,GAAM,UAER1e,EAAQujB,UAAYH,EAAQpjB,EAAQ0e,I,qCCvDpC,MAAMlC,EAAYxc,EAGlBwc,EAAUgH,SAAW,SAAiB18B,GACpC,MAAM6d,EAAM,CAAC,EAWb,OATA/rB,OAAOqjC,KAAKn1B,GAAKuM,SAAQ,SAAS2C,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,MAAMlhB,EAAQgS,EAAIkP,GAClB2O,EAAI7vB,GAASkhB,CACf,IAEO2O,CACT,EAEA6X,EAAUiH,IAAMnH,EAAQ,M,mCCpBXA,EAAA,OAEb,MAAMK,EAAWL,EAAQ,OAEnBD,EAASC,EAAQ,OACjBgB,EAAgBhB,EAAAA,OAAAA,EAChB6B,EAAO7B,EAAQ,OAGfmH,EAAMnH,EAAQ,OAEpB,SAASoH,EAAW3G,GAClB3oC,KAAK8oC,IAAM,MACX9oC,KAAKhB,KAAO2pC,EAAO3pC,KACnBgB,KAAK2oC,OAASA,EAGd3oC,KAAKuvC,KAAO,IAAIC,EAChBxvC,KAAKuvC,KAAKpE,MAAMxC,EAAOz+B,KACzB,CAaA,SAASslC,EAAQrF,GACfJ,EAAKrlC,KAAK1E,KAAM,MAAOmqC,EACzB,CA6OA,SAASsF,EAAaljB,EAAKsd,GACzB,IAAIS,EAAM/d,EAAI8H,UAAUwV,GACxB,GAAItd,EAAIyf,QAAQ1B,GACd,OAAOA,EAET,MAAMuD,EAAMwB,EAAIJ,SAAS3E,GAAO,GAC1BoD,EAA6B,KAAV,GAANpD,GAGnB,GAAqB,MAAV,GAANA,GAAsB,CACzB,IAAIoF,EAAMpF,EACVA,EAAM,EACN,MAAwB,OAAV,IAANoF,GAAsB,CAE5B,GADAA,EAAMnjB,EAAI8H,UAAUwV,GAChBtd,EAAIyf,QAAQ0D,GACd,OAAOA,EAETpF,IAAQ,EACRA,GAAa,IAANoF,CACT,CACF,MACEpF,GAAO,GAET,MAAMqF,EAASN,EAAI/E,IAAIA,GAEvB,MAAO,CACLuD,IAAKA,EACLH,UAAWA,EACXpD,IAAKA,EACLqF,OAAQA,EAEZ,CAEA,SAASC,EAAarjB,EAAKmhB,EAAW7D,GACpC,IAAIljC,EAAM4lB,EAAI8H,UAAUwV,GACxB,GAAItd,EAAIyf,QAAQrlC,GACd,OAAOA,EAGT,IAAK+mC,GAAqB,MAAR/mC,EAChB,OAAO,KAGT,GAAqB,KAAV,IAANA,GAEH,OAAOA,EAIT,MAAMmjB,EAAY,IAANnjB,EACZ,GAAImjB,EAAM,EACR,OAAOyC,EAAI5nB,MAAM,6BAEnBgC,EAAM,EACN,IAAK,IAAI6I,EAAI,EAAGA,EAAIsa,EAAKta,IAAK,CAC5B7I,IAAQ,EACR,MAAM4I,EAAIgd,EAAI8H,UAAUwV,GACxB,GAAItd,EAAIyf,QAAQz8B,GACd,OAAOA,EACT5I,GAAO4I,CACT,CAEA,OAAO5I,CACT,CA1TAqzB,EAAOpO,QAAU0jB,EAEjBA,EAAWp9B,UAAU5N,OAAS,SAAgBxE,EAAMuU,GAKlD,OAJK60B,EAAcI,gBAAgBxpC,KACjCA,EAAO,IAAIopC,EAAcppC,EAAMuU,IAG1BrU,KAAKuvC,KAAK9D,QAAQ3rC,EAAMuU,EACjC,EAOAk0B,EAASiH,EAASzF,GAElByF,EAAQt9B,UAAU65B,SAAW,SAAiB57B,EAAQm6B,EAAKhlB,GACzD,GAAInV,EAAOu5B,UACT,OAAO,EAET,MAAMp9B,EAAQ6D,EAAOq5B,OACfqG,EAAaJ,EAAat/B,EAAQ,wBAA0Bm6B,EAAM,KACxE,OAAIn6B,EAAO67B,QAAQ6D,GACVA,GAET1/B,EAAOs5B,QAAQn9B,GAERujC,EAAWvF,MAAQA,GAAOuF,EAAWF,SAAWrF,GACpDuF,EAAWF,OAAS,OAAUrF,GAAOhlB,EAC1C,EAEAkqB,EAAQt9B,UAAUk6B,WAAa,SAAmBj8B,EAAQm6B,EAAKhlB,GAC7D,MAAMuqB,EAAaJ,EAAat/B,EAC9B,4BAA8Bm6B,EAAM,KACtC,GAAIn6B,EAAO67B,QAAQ6D,GACjB,OAAOA,EAET,IAAIlpC,EAAMipC,EAAaz/B,EACrB0/B,EAAWnC,UACX,4BAA8BpD,EAAM,KAGtC,GAAIn6B,EAAO67B,QAAQrlC,GACjB,OAAOA,EAET,IAAK2e,GACDuqB,EAAWvF,MAAQA,GACnBuF,EAAWF,SAAWrF,GACtBuF,EAAWF,OAAS,OAASrF,EAC/B,OAAOn6B,EAAOxL,MAAM,yBAA2B2lC,EAAM,KAGvD,GAAIuF,EAAWnC,WAAqB,OAAR/mC,EAC1B,OAAOwJ,EAAOw5B,KAAKhjC,EAAK,6BAA+B2jC,EAAM,KAG/D,MAAMh+B,EAAQ6D,EAAOq5B,OACfjZ,EAAMvwB,KAAK8vC,cACf3/B,EACA,2CAA6CnQ,KAAKsqC,IAAM,KAC1D,OAAIn6B,EAAO67B,QAAQzb,GACVA,GAET5pB,EAAMwJ,EAAOsa,OAASne,EAAMme,OAC5Bta,EAAOs5B,QAAQn9B,GACR6D,EAAOw5B,KAAKhjC,EAAK,6BAA+B2jC,EAAM,KAC/D,EAEAkF,EAAQt9B,UAAU49B,cAAgB,SAAsB3/B,EAAQ05B,GAC9D,OAAS,CACP,MAAMS,EAAMmF,EAAat/B,EAAQ05B,GACjC,GAAI15B,EAAO67B,QAAQ1B,GACjB,OAAOA,EACT,MAAM3jC,EAAMipC,EAAaz/B,EAAQm6B,EAAIoD,UAAW7D,GAChD,GAAI15B,EAAO67B,QAAQrlC,GACjB,OAAOA,EAET,IAAI4pB,EAOJ,GALEA,EADE+Z,EAAIoD,WAAqB,OAAR/mC,EACbwJ,EAAOw5B,KAAKhjC,GAEZ3G,KAAK8vC,cAAc3/B,EAAQ05B,GAG/B15B,EAAO67B,QAAQzb,GACjB,OAAOA,EAET,GAAmB,QAAf+Z,EAAIqF,OACN,KACJ,CACF,EAEAH,EAAQt9B,UAAUy6B,YAAc,SAAoBx8B,EAAQm6B,EAAKyF,EAC/D17B,GACA,MAAMlT,EAAS,GACf,OAAQgP,EAAOu5B,UAAW,CACxB,MAAMsG,EAAchwC,KAAK+rC,SAAS57B,EAAQ,OAC1C,GAAIA,EAAO67B,QAAQgE,GACjB,OAAOA,EAET,MAAMzf,EAAMwf,EAAQzrC,OAAO6L,EAAQ,MAAOkE,GAC1C,GAAIlE,EAAO67B,QAAQzb,IAAQyf,EACzB,MACF7uC,EAAOoiB,KAAKgN,EACd,CACA,OAAOpvB,CACT,EAEAquC,EAAQt9B,UAAU06B,WAAa,SAAmBz8B,EAAQm6B,GACxD,GAAY,WAARA,EAAkB,CACpB,MAAM2F,EAAS9/B,EAAOkkB,YACtB,OAAIlkB,EAAO67B,QAAQiE,GACVA,EACF,CAAEA,OAAQA,EAAQnwC,KAAMqQ,EAAOy5B,MACxC,CAAO,GAAY,WAARU,EAAkB,CAC3B,MAAMV,EAAMz5B,EAAOy5B,MACnB,GAAIA,EAAI5jC,OAAS,IAAM,EACrB,OAAOmK,EAAOxL,MAAM,mDAEtB,IAAIsM,EAAM,GACV,IAAK,IAAIzB,EAAI,EAAGA,EAAIo6B,EAAI5jC,OAAS,EAAGwJ,IAClCyB,GAAOpK,OAAOC,aAAa8iC,EAAIta,aAAiB,EAAJ9f,IAE9C,OAAOyB,CACT,CAAO,GAAY,WAARq5B,EAAkB,CAC3B,MAAM4F,EAAS//B,EAAOy5B,MAAMr/B,SAAS,SACrC,OAAKvK,KAAKquC,UAAU6B,GAIbA,EAHE//B,EAAOxL,MAAM,yDAIxB,CAAO,GAAY,WAAR2lC,EACT,OAAOn6B,EAAOy5B,MACT,GAAY,YAARU,EACT,OAAOn6B,EAAOy5B,MACT,GAAY,aAARU,EAAoB,CAC7B,MAAM6F,EAAWhgC,EAAOy5B,MAAMr/B,SAAS,SACvC,OAAKvK,KAAKsuC,YAAY6B,GAIfA,EAHEhgC,EAAOxL,MAAM,2DAIxB,CAAO,MAAI,OAAOwQ,KAAKm1B,GACdn6B,EAAOy5B,MAAMr/B,WAEb4F,EAAOxL,MAAM,4BAA8B2lC,EAAM,eAE5D,EAEAkF,EAAQt9B,UAAU26B,aAAe,SAAqB18B,EAAQigC,EAAQC,GACpE,IAAIlvC,EACJ,MAAMmvC,EAAc,GACpB,IAAIC,EAAQ,EACRC,EAAW,EACf,OAAQrgC,EAAOu5B,UACb8G,EAAWrgC,EAAOkkB,YAClBkc,IAAU,EACVA,GAAoB,IAAXC,EACiB,KAAV,IAAXA,KACHF,EAAY/sB,KAAKgtB,GACjBA,EAAQ,GAGG,IAAXC,GACFF,EAAY/sB,KAAKgtB,GAEnB,MAAMvb,EAASsb,EAAY,GAAK,GAAM,EAChCG,EAASH,EAAY,GAAK,GAOhC,GAJEnvC,EADEkvC,EACOC,EAEA,CAACtb,EAAOyb,GAAQlf,OAAO+e,EAAYpsC,MAAM,IAEhDksC,EAAQ,CACV,IAAI1mB,EAAM0mB,EAAOjvC,EAAO+G,KAAK,WACjBslC,IAAR9jB,IACFA,EAAM0mB,EAAOjvC,EAAO+G,KAAK,YACfslC,IAAR9jB,IACFvoB,EAASuoB,EACb,CAEA,OAAOvoB,CACT,EAEAquC,EAAQt9B,UAAU46B,YAAc,SAAoB38B,EAAQm6B,GAC1D,MAAMr5B,EAAMd,EAAOy5B,MAAMr/B,WAEzB,IAAImmC,EACAC,EACAC,EACAC,EACAvgB,EACAwgB,EACJ,GAAY,YAARxG,EACFoG,EAAyB,EAAlBz/B,EAAI/M,MAAM,EAAG,GACpBysC,EAAwB,EAAlB1/B,EAAI/M,MAAM,EAAG,GACnB0sC,EAAwB,EAAlB3/B,EAAI/M,MAAM,EAAG,GACnB2sC,EAA0B,EAAnB5/B,EAAI/M,MAAM,EAAG,IACpBosB,EAA0B,EAApBrf,EAAI/M,MAAM,GAAI,IACpB4sC,EAA0B,EAApB7/B,EAAI/M,MAAM,GAAI,QACf,IAAY,YAARomC,EAYT,OAAOn6B,EAAOxL,MAAM,YAAc2lC,EAAM,8BAXxCoG,EAAyB,EAAlBz/B,EAAI/M,MAAM,EAAG,GACpBysC,EAAwB,EAAlB1/B,EAAI/M,MAAM,EAAG,GACnB0sC,EAAwB,EAAlB3/B,EAAI/M,MAAM,EAAG,GACnB2sC,EAAyB,EAAlB5/B,EAAI/M,MAAM,EAAG,GACpBosB,EAAyB,EAAnBrf,EAAI/M,MAAM,EAAG,IACnB4sC,EAA0B,EAApB7/B,EAAI/M,MAAM,GAAI,IAElBwsC,EADEA,EAAO,GACF,IAAOA,EAEP,KAAOA,CAGlB,CAEA,OAAOjjC,KAAKsjC,IAAIL,EAAMC,EAAM,EAAGC,EAAKC,EAAMvgB,EAAKwgB,EAAK,EACtD,EAEAtB,EAAQt9B,UAAU66B,YAAc,WAC9B,OAAO,IACT,EAEAyC,EAAQt9B,UAAU86B,YAAc,SAAoB78B,GAClD,MAAMogB,EAAMpgB,EAAOkkB,YACnB,OAAIlkB,EAAO67B,QAAQzb,GACVA,EAEQ,IAARA,CACX,EAEAif,EAAQt9B,UAAU+6B,WAAa,SAAmB98B,EAAQigC,GAExD,MAAMxG,EAAMz5B,EAAOy5B,MACnB,IAAIrZ,EAAM,IAAI0X,EAAO2B,GAKrB,OAHIwG,IACF7f,EAAM6f,EAAO7f,EAAIhmB,SAAS,MAAQgmB,GAE7BA,CACT,EAEAif,EAAQt9B,UAAUg7B,KAAO,SAAavE,EAAQhnB,GAG5C,MAFsB,oBAAXgnB,IACTA,EAASA,EAAOhnB,IACXgnB,EAAOE,YAAY,OAAO0G,IACnC,C,qCCzQA,MAAMlH,EAAWzc,EAEjByc,EAASgH,IAAMnH,EAAQ,KACvBG,EAAS2I,IAAM9I,EAAQ,M,qCCHvB,MAAMK,EAAWL,EAAQ,OACnBrc,EAASqc,EAAAA,OAAAA,OAEToH,EAAapH,EAAQ,KAE3B,SAAS+I,EAAWtI,GAClB2G,EAAW5qC,KAAK1E,KAAM2oC,GACtB3oC,KAAK8oC,IAAM,KACb,CACAP,EAAS0I,EAAY3B,GACrBtV,EAAOpO,QAAUqlB,EAEjBA,EAAW/+B,UAAU5N,OAAS,SAAgBxE,EAAMuU,GAClD,MAAM68B,EAAQpxC,EAAKyK,WAAW/C,MAAM,YAE9B2pC,EAAQ98B,EAAQ88B,MAAMC,cAEtBC,EAAK,kCACX,IAAIpnB,GAAS,EACTC,GAAO,EACX,IAAK,IAAI1a,EAAI,EAAGA,EAAI0hC,EAAMlrC,OAAQwJ,IAAK,CACrC,MAAM29B,EAAQ+D,EAAM1hC,GAAG29B,MAAMkE,GAC7B,GAAc,OAAVlE,GAGAA,EAAM,KAAOgE,EAAjB,CAGA,IAAe,IAAXlnB,EAIG,CACL,GAAiB,QAAbkjB,EAAM,GACR,MACFjjB,EAAM1a,EACN,KACF,CARE,GAAiB,UAAb29B,EAAM,GACR,MACFljB,EAAQza,CALA,CAYZ,CACA,IAAe,IAAXya,IAAyB,IAATC,EAClB,MAAM,IAAIxqB,MAAM,8BAAgCyxC,GAElD,MAAM3lB,EAAS0lB,EAAMhtC,MAAM+lB,EAAQ,EAAGC,GAAKhiB,KAAK,IAEhDsjB,EAAOrkB,QAAQ,kBAAmB,IAElC,MAAM4xB,EAAQlN,EAAOtb,KAAKib,EAAQ,UAClC,OAAO8jB,EAAWp9B,UAAU5N,OAAOI,KAAK1E,KAAM+4B,EAAO1kB,EACvD,C,qCClDa6zB,EAAA,OAEb,MAAMK,EAAWL,EAAQ,OACnBrc,EAASqc,EAAAA,OAAAA,OACT6B,EAAO7B,EAAQ,OAGfmH,EAAMnH,EAAQ,OAEpB,SAASoJ,EAAW3I,GAClB3oC,KAAK8oC,IAAM,MACX9oC,KAAKhB,KAAO2pC,EAAO3pC,KACnBgB,KAAK2oC,OAASA,EAGd3oC,KAAKuvC,KAAO,IAAIC,EAChBxvC,KAAKuvC,KAAKpE,MAAMxC,EAAOz+B,KACzB,CASA,SAASslC,EAAQrF,GACfJ,EAAKrlC,KAAK1E,KAAM,MAAOmqC,EACzB,CAkHA,SAASoH,EAAIznB,GACX,OAAIA,EAAM,GACD,IAAMA,EAENA,CACX,CA2HA,SAAS0nB,EAAUlH,EAAKoD,EAAWG,EAAK7E,GACtC,IAAIzY,EAOJ,GALY,UAAR+Z,EACFA,EAAM,MACS,UAARA,IACPA,EAAM,OAEJ+E,EAAIF,UAAU1qC,eAAe6lC,GAC/B/Z,EAAM8e,EAAIF,UAAU7E,OACjB,IAAmB,kBAARA,IAA2B,EAANA,KAAaA,EAGhD,OAAOtB,EAASrkC,MAAM,gBAAkB2lC,GAFxC/Z,EAAM+Z,CAEsC,CAE9C,OAAI/Z,GAAO,GACFyY,EAASrkC,MAAM,yCAEnB+oC,IACHnd,GAAO,IAETA,GAAQ8e,EAAIH,eAAerB,GAAO,cAAgB,EAE3Ctd,EACT,CApRAyJ,EAAOpO,QAAU0lB,EAEjBA,EAAWp/B,UAAUlO,OAAS,SAAgBlE,EAAMkpC,GAClD,OAAOhpC,KAAKuvC,KAAKjC,QAAQxtC,EAAMkpC,GAAU9gC,MAC3C,EAOAqgC,EAASiH,EAASzF,GAElByF,EAAQt9B,UAAU47B,iBAAmB,SAAyBxD,EAC5DoD,EACAG,EACAhM,GACA,MAAM4P,EAAaD,EAAUlH,EAAKoD,EAAWG,EAAK7tC,KAAKgpC,UAGvD,GAAInH,EAAQ77B,OAAS,IAAM,CACzB,MAAM0rC,EAAS7lB,EAAOuB,MAAM,GAG5B,OAFAskB,EAAO,GAAKD,EACZC,EAAO,GAAK7P,EAAQ77B,OACbhG,KAAKqtC,qBAAqB,CAAEqE,EAAQ7P,GAC7C,CAIA,IAAI8P,EAAY,EAChB,IAAK,IAAIniC,EAAIqyB,EAAQ77B,OAAQwJ,GAAK,IAAOA,IAAM,EAC7CmiC,IAEF,MAAMD,EAAS7lB,EAAOuB,MAAM,EAAQukB,GACpCD,EAAO,GAAKD,EACZC,EAAO,GAAK,IAAOC,EAEnB,IAAK,IAAIniC,EAAI,EAAImiC,EAAWpiC,EAAIsyB,EAAQ77B,OAAQuJ,EAAI,EAAGC,IAAKD,IAAM,EAChEmiC,EAAOliC,GAAS,IAAJD,EAEd,OAAOvP,KAAKqtC,qBAAqB,CAAEqE,EAAQ7P,GAC7C,EAEA2N,EAAQt9B,UAAU67B,WAAa,SAAmB98B,EAAKq5B,GACrD,GAAY,WAARA,EACF,OAAOtqC,KAAKqtC,qBAAqB,CAAe,EAAbp8B,EAAIg/B,OAAYh/B,EAAInR,OAClD,GAAY,WAARwqC,EAAkB,CAC3B,MAAM/d,EAAMV,EAAOuB,MAAmB,EAAbnc,EAAIjL,QAC7B,IAAK,IAAIwJ,EAAI,EAAGA,EAAIyB,EAAIjL,OAAQwJ,IAC9B+c,EAAIoK,cAAc1lB,EAAItB,WAAWH,GAAQ,EAAJA,GAEvC,OAAOxP,KAAKqtC,qBAAqB9gB,EACnC,CAAO,MAAY,WAAR+d,EACJtqC,KAAKquC,UAAUp9B,GAIbjR,KAAKqtC,qBAAqBp8B,GAHxBjR,KAAKgpC,SAASrkC,MAAM,kEAIZ,aAAR2lC,EACJtqC,KAAKsuC,YAAYr9B,GAQfjR,KAAKqtC,qBAAqBp8B,GAPxBjR,KAAKgpC,SAASrkC,MAAM,qNAQpB,OAAOwQ,KAAKm1B,IAEJ,YAARA,EADFtqC,KAAKqtC,qBAAqBp8B,GAI1BjR,KAAKgpC,SAASrkC,MAAM,4BAA8B2lC,EAC9B,eAE/B,EAEAkF,EAAQt9B,UAAU87B,aAAe,SAAqBvqC,EAAI2sC,EAAQC,GAChE,GAAkB,kBAAP5sC,EAAiB,CAC1B,IAAK2sC,EACH,OAAOpwC,KAAKgpC,SAASrkC,MAAM,+CAC7B,IAAKyrC,EAAO3rC,eAAehB,GACzB,OAAOzD,KAAKgpC,SAASrkC,MAAM,iCAC7BlB,EAAK2sC,EAAO3sC,GAAI+D,MAAM,WACtB,IAAK,IAAIgI,EAAI,EAAGA,EAAI/L,EAAGuC,OAAQwJ,IAC7B/L,EAAG+L,IAAM,CACb,MAAO,GAAIa,MAAMC,QAAQ7M,GAAK,CAC5BA,EAAKA,EAAGS,QACR,IAAK,IAAIsL,EAAI,EAAGA,EAAI/L,EAAGuC,OAAQwJ,IAC7B/L,EAAG+L,IAAM,CACb,CAEA,IAAKa,MAAMC,QAAQ7M,GACjB,OAAOzD,KAAKgpC,SAASrkC,MAAM,kDACUrB,KAAKC,UAAUE,IAGtD,IAAK4sC,EAAU,CACb,GAAI5sC,EAAG,IAAM,GACX,OAAOzD,KAAKgpC,SAASrkC,MAAM,+BAC7BlB,EAAGmuC,OAAO,EAAG,EAAW,GAARnuC,EAAG,GAAUA,EAAG,GAClC,CAGA,IAAIkN,EAAO,EACX,IAAK,IAAInB,EAAI,EAAGA,EAAI/L,EAAGuC,OAAQwJ,IAAK,CAClC,IAAI+gC,EAAQ9sC,EAAG+L,GACf,IAAKmB,IAAQ4/B,GAAS,IAAMA,IAAU,EACpC5/B,GACJ,CAEA,MAAMkhC,EAAQhmB,EAAOuB,MAAMzc,GAC3B,IAAI8Z,EAASonB,EAAM7rC,OAAS,EAC5B,IAAK,IAAIwJ,EAAI/L,EAAGuC,OAAS,EAAGwJ,GAAK,EAAGA,IAAK,CACvC,IAAI+gC,EAAQ9sC,EAAG+L,GACfqiC,EAAMpnB,KAAoB,IAAR8lB,EAClB,OAAQA,IAAU,GAAK,EACrBsB,EAAMpnB,KAAY,IAAgB,IAAR8lB,CAC9B,CAEA,OAAOvwC,KAAKqtC,qBAAqBwE,EACnC,EASArC,EAAQt9B,UAAU+7B,YAAc,SAAoB6D,EAAMxH,GACxD,IAAIr5B,EACJ,MAAMuU,EAAO,IAAI/X,KAAKqkC,GA0BtB,MAxBY,YAARxH,EACFr5B,EAAM,CACJsgC,EAAI/rB,EAAKusB,kBACTR,EAAI/rB,EAAKwsB,cAAgB,GACzBT,EAAI/rB,EAAKysB,cACTV,EAAI/rB,EAAK0sB,eACTX,EAAI/rB,EAAK2sB,iBACTZ,EAAI/rB,EAAK4sB,iBACT,KACAlqC,KAAK,IACU,YAARoiC,EACTr5B,EAAM,CACJsgC,EAAI/rB,EAAKusB,iBAAmB,KAC5BR,EAAI/rB,EAAKwsB,cAAgB,GACzBT,EAAI/rB,EAAKysB,cACTV,EAAI/rB,EAAK0sB,eACTX,EAAI/rB,EAAK2sB,iBACTZ,EAAI/rB,EAAK4sB,iBACT,KACAlqC,KAAK,IAEPlI,KAAKgpC,SAASrkC,MAAM,YAAc2lC,EAAM,8BAGnCtqC,KAAK+tC,WAAW98B,EAAK,SAC9B,EAEAu+B,EAAQt9B,UAAUg8B,YAAc,WAC9B,OAAOluC,KAAKqtC,qBAAqB,GACnC,EAEAmC,EAAQt9B,UAAUi8B,WAAa,SAAmBrkB,EAAKsmB,GACrD,GAAmB,kBAARtmB,EAAkB,CAC3B,IAAKsmB,EACH,OAAOpwC,KAAKgpC,SAASrkC,MAAM,+CAC7B,IAAKyrC,EAAO3rC,eAAeqlB,GACzB,OAAO9pB,KAAKgpC,SAASrkC,MAAM,+BACArB,KAAKC,UAAUumB,IAE5CA,EAAMsmB,EAAOtmB,EACf,CAGA,GAAmB,kBAARA,IAAqB+B,EAAOkC,SAASjE,GAAM,CACpD,MAAMuoB,EAAWvoB,EAAIwoB,WAChBxoB,EAAI/nB,MAAsB,IAAdswC,EAAS,IACxBA,EAASE,QAAQ,GAEnBzoB,EAAM+B,EAAOtb,KAAK8hC,EACpB,CAEA,GAAIxmB,EAAOkC,SAASjE,GAAM,CACxB,IAAInZ,EAAOmZ,EAAI9jB,OACI,IAAf8jB,EAAI9jB,QACN2K,IAEF,MAAMiiB,EAAM/G,EAAOuB,MAAMzc,GAIzB,OAHAmZ,EAAIgE,KAAK8E,GACU,IAAf9I,EAAI9jB,SACN4sB,EAAI,GAAK,GACJ5yB,KAAKqtC,qBAAqBza,EACnC,CAEA,GAAI9I,EAAM,IACR,OAAO9pB,KAAKqtC,qBAAqBvjB,GAEnC,GAAIA,EAAM,IACR,OAAO9pB,KAAKqtC,qBAAqB,CAAC,EAAGvjB,IAEvC,IAAInZ,EAAO,EACX,IAAK,IAAInB,EAAIsa,EAAKta,GAAK,IAAOA,IAAM,EAClCmB,IAEF,MAAMiiB,EAAM,IAAIviB,MAAMM,GACtB,IAAK,IAAInB,EAAIojB,EAAI5sB,OAAS,EAAGwJ,GAAK,EAAGA,IACnCojB,EAAIpjB,GAAW,IAANsa,EACTA,IAAQ,EAMV,OAJY,IAAT8I,EAAI,IACLA,EAAI2f,QAAQ,GAGPvyC,KAAKqtC,qBAAqBxhB,EAAOtb,KAAKqiB,GAC/C,EAEA4c,EAAQt9B,UAAUk8B,YAAc,SAAoB1tC,GAClD,OAAOV,KAAKqtC,qBAAqB3sC,EAAQ,IAAO,EAClD,EAEA8uC,EAAQt9B,UAAUg7B,KAAO,SAAavE,EAAQhnB,GAG5C,MAFsB,oBAAXgnB,IACTA,EAASA,EAAOhnB,IACXgnB,EAAOI,YAAY,OAAOwG,IACnC,EAEAC,EAAQt9B,UAAUu7B,aAAe,SAAqB+E,EAAYxJ,EAAUmB,GAC1E,MAAM79B,EAAQtM,KAAKoqC,WACnB,IAAI56B,EACJ,GAAyB,OAArBlD,EAAM,WACR,OAAO,EAET,MAAMxM,EAAO0yC,EAAWtqC,OAIxB,QAH4BslC,IAAxBlhC,EAAMmmC,gBACRnmC,EAAMmmC,cAAgBzyC,KAAKutC,aAAajhC,EAAM,WAAY08B,EAAUmB,GAAQjiC,QAE1EpI,EAAKkG,SAAWsG,EAAMmmC,cAAczsC,OACtC,OAAO,EAET,IAAKwJ,EAAE,EAAGA,EAAI1P,EAAKkG,OAAQwJ,IACzB,GAAI1P,EAAK0P,KAAOlD,EAAMmmC,cAAcjjC,GAClC,OAAO,EAEX,OAAO,CACT,C,qCCxQA,MAAM84B,EAAW1c,EAEjB0c,EAAS+G,IAAMnH,EAAQ,OACvBI,EAAS0I,IAAM9I,EAAQ,M,qCCLVA,EAAA,OAEb,MAAMK,EAAWL,EAAQ,OAEnBoJ,EAAapJ,EAAQ,OAE3B,SAASwK,EAAW/J,GAClB2I,EAAW5sC,KAAK1E,KAAM2oC,GACtB3oC,KAAK8oC,IAAM,KACb,CACAP,EAASmK,EAAYpB,GACrBtX,EAAOpO,QAAU8mB,EAEjBA,EAAWxgC,UAAUlO,OAAS,SAAgBlE,EAAMuU,GAClD,MAAMkY,EAAM+kB,EAAWp/B,UAAUlO,OAAOU,KAAK1E,KAAMF,GAE7CyO,EAAIge,EAAIhiB,SAAS,UACjBqoB,EAAM,CAAE,cAAgBve,EAAQ88B,MAAQ,SAC9C,IAAK,IAAI3hC,EAAI,EAAGA,EAAIjB,EAAEvI,OAAQwJ,GAAK,GACjCojB,EAAIrP,KAAKhV,EAAErK,MAAMsL,EAAGA,EAAI,KAE1B,OADAojB,EAAIrP,KAAK,YAAclP,EAAQ88B,MAAQ,SAChCve,EAAI1qB,KAAK,KAClB,C,mCCtBA,SAAW8xB,EAAQpO,GACjB,aAGA,SAASoe,EAAQjb,EAAKiK,GACpB,IAAKjK,EAAK,MAAM,IAAIrvB,MAAMs5B,GAAO,mBACnC,CAIA,SAASuP,EAAUoK,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAAS5gC,UAAY0gC,EAAU1gC,UAC/BygC,EAAKzgC,UAAY,IAAI4gC,EACrBH,EAAKzgC,UAAUpT,YAAc6zC,CAC/B,CAIA,SAASI,EAAI3tB,EAAQgV,EAAM4Y,GACzB,GAAID,EAAGE,KAAK7tB,GACV,OAAOA,EAGTplB,KAAKkzC,SAAW,EAChBlzC,KAAKmzC,MAAQ,KACbnzC,KAAKgG,OAAS,EAGdhG,KAAKimC,IAAM,KAEI,OAAX7gB,IACW,OAATgV,GAA0B,OAATA,IACnB4Y,EAAS5Y,EACTA,EAAO,IAGTp6B,KAAKmrC,MAAM/lB,GAAU,EAAGgV,GAAQ,GAAI4Y,GAAU,MAElD,CAUA,IAAInnB,EATkB,kBAAXmO,EACTA,EAAOpO,QAAUmnB,EAEjBnnB,EAAQmnB,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGK,SAAW,GAGd,IAEIvnB,EADoB,qBAAX9kB,QAAmD,qBAAlBA,OAAO8kB,OACxC9kB,OAAO8kB,OAEPqc,EAAAA,OAAAA,MAEb,CAAE,MAAOjnC,GACT,CA+HA,SAASoyC,EAAe3hC,EAAQqN,GAC9B,IAAIpM,EAAIjB,EAAO/B,WAAWoP,GAE1B,OAAIpM,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,EAEtB,CAEA,SAAS2gC,EAAc5hC,EAAQ6hC,EAAYx0B,GACzC,IAAIQ,EAAI8zB,EAAc3hC,EAAQqN,GAI9B,OAHIA,EAAQ,GAAKw0B,IACfh0B,GAAK8zB,EAAc3hC,EAAQqN,EAAQ,IAAM,GAEpCQ,CACT,CA6CA,SAASi0B,EAAWviC,EAAKgZ,EAAOC,EAAK+J,GAGnC,IAFA,IAAI1U,EAAI,EACJ5Y,EAAMR,KAAKmqB,IAAIrf,EAAIjL,OAAQkkB,GACtB1a,EAAIya,EAAOza,EAAI7I,EAAK6I,IAAK,CAChC,IAAImD,EAAI1B,EAAItB,WAAWH,GAAK,GAE5B+P,GAAK0U,EAIH1U,GADE5M,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,CAET,CACA,OAAO4M,CACT,CApNAwzB,EAAGE,KAAO,SAAenpB,GACvB,OAAIA,aAAeipB,GAIJ,OAARjpB,GAA+B,kBAARA,GAC5BA,EAAIhrB,YAAYs0C,WAAaL,EAAGK,UAAY/iC,MAAMC,QAAQwZ,EAAIqpB,MAClE,EAEAJ,EAAG/gB,IAAM,SAAcyhB,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEAX,EAAGziB,IAAM,SAAcmjB,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEAX,EAAG7gC,UAAUi5B,MAAQ,SAAe/lB,EAAQgV,EAAM4Y,GAChD,GAAsB,kBAAX5tB,EACT,OAAOplB,KAAK4zC,YAAYxuB,EAAQgV,EAAM4Y,GAGxC,GAAsB,kBAAX5tB,EACT,OAAOplB,KAAK6zC,WAAWzuB,EAAQgV,EAAM4Y,GAG1B,QAAT5Y,IACFA,EAAO,IAET4P,EAAO5P,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAEnDhV,EAASA,EAAO7a,WAAWpD,QAAQ,OAAQ,IAC3C,IAAI8iB,EAAQ,EACM,MAAd7E,EAAO,KACT6E,IACAjqB,KAAKkzC,SAAW,GAGdjpB,EAAQ7E,EAAOpf,SACJ,KAATo0B,EACFp6B,KAAK8zC,UAAU1uB,EAAQ6E,EAAO+oB,IAE9BhzC,KAAK+zC,WAAW3uB,EAAQgV,EAAMnQ,GACf,OAAX+oB,GACFhzC,KAAK6zC,WAAW7zC,KAAKsyC,UAAWlY,EAAM4Y,IAI9C,EAEAD,EAAG7gC,UAAU0hC,YAAc,SAAsBxuB,EAAQgV,EAAM4Y,GACzD5tB,EAAS,IACXplB,KAAKkzC,SAAW,EAChB9tB,GAAUA,GAERA,EAAS,UACXplB,KAAKmzC,MAAQ,CAAW,SAAT/tB,GACfplB,KAAKgG,OAAS,GACLof,EAAS,kBAClBplB,KAAKmzC,MAAQ,CACF,SAAT/tB,EACCA,EAAS,SAAa,UAEzBplB,KAAKgG,OAAS,IAEdgkC,EAAO5kB,EAAS,kBAChBplB,KAAKmzC,MAAQ,CACF,SAAT/tB,EACCA,EAAS,SAAa,SACvB,GAEFplB,KAAKgG,OAAS,GAGD,OAAXgtC,GAGJhzC,KAAK6zC,WAAW7zC,KAAKsyC,UAAWlY,EAAM4Y,EACxC,EAEAD,EAAG7gC,UAAU2hC,WAAa,SAAqBzuB,EAAQgV,EAAM4Y,GAG3D,GADAhJ,EAAgC,kBAAlB5kB,EAAOpf,QACjBof,EAAOpf,QAAU,EAGnB,OAFAhG,KAAKmzC,MAAQ,CAAE,GACfnzC,KAAKgG,OAAS,EACPhG,KAGTA,KAAKgG,OAASG,KAAK6tC,KAAK5uB,EAAOpf,OAAS,GACxChG,KAAKmzC,MAAQ,IAAI9iC,MAAMrQ,KAAKgG,QAC5B,IAAK,IAAIwJ,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAC/BxP,KAAKmzC,MAAM3jC,GAAK,EAGlB,IAAID,EAAG0kC,EACHp3B,EAAM,EACV,GAAe,OAAXm2B,EACF,IAAKxjC,EAAI4V,EAAOpf,OAAS,EAAGuJ,EAAI,EAAGC,GAAK,EAAGA,GAAK,EAC9CykC,EAAI7uB,EAAO5V,GAAM4V,EAAO5V,EAAI,IAAM,EAAM4V,EAAO5V,EAAI,IAAM,GACzDxP,KAAKmzC,MAAM5jC,IAAO0kC,GAAKp3B,EAAO,SAC9B7c,KAAKmzC,MAAM5jC,EAAI,GAAM0kC,IAAO,GAAKp3B,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPtN,UAGC,GAAe,OAAXyjC,EACT,IAAKxjC,EAAI,EAAGD,EAAI,EAAGC,EAAI4V,EAAOpf,OAAQwJ,GAAK,EACzCykC,EAAI7uB,EAAO5V,GAAM4V,EAAO5V,EAAI,IAAM,EAAM4V,EAAO5V,EAAI,IAAM,GACzDxP,KAAKmzC,MAAM5jC,IAAO0kC,GAAKp3B,EAAO,SAC9B7c,KAAKmzC,MAAM5jC,EAAI,GAAM0kC,IAAO,GAAKp3B,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPtN,KAIN,OAAOvP,KAAKk0C,OACd,EAwBAnB,EAAG7gC,UAAU4hC,UAAY,SAAoB1uB,EAAQ6E,EAAO+oB,GAE1DhzC,KAAKgG,OAASG,KAAK6tC,MAAM5uB,EAAOpf,OAASikB,GAAS,GAClDjqB,KAAKmzC,MAAQ,IAAI9iC,MAAMrQ,KAAKgG,QAC5B,IAAK,IAAIwJ,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAC/BxP,KAAKmzC,MAAM3jC,GAAK,EAIlB,IAGIykC,EAHAp3B,EAAM,EACNtN,EAAI,EAGR,GAAe,OAAXyjC,EACF,IAAKxjC,EAAI4V,EAAOpf,OAAS,EAAGwJ,GAAKya,EAAOza,GAAK,EAC3CykC,EAAIX,EAAaluB,EAAQ6E,EAAOza,IAAMqN,EACtC7c,KAAKmzC,MAAM5jC,IAAU,SAAJ0kC,EACbp3B,GAAO,IACTA,GAAO,GACPtN,GAAK,EACLvP,KAAKmzC,MAAM5jC,IAAM0kC,IAAM,IAEvBp3B,GAAO,MAGN,CACL,IAAIs3B,EAAc/uB,EAAOpf,OAASikB,EAClC,IAAKza,EAAI2kC,EAAc,IAAM,EAAIlqB,EAAQ,EAAIA,EAAOza,EAAI4V,EAAOpf,OAAQwJ,GAAK,EAC1EykC,EAAIX,EAAaluB,EAAQ6E,EAAOza,IAAMqN,EACtC7c,KAAKmzC,MAAM5jC,IAAU,SAAJ0kC,EACbp3B,GAAO,IACTA,GAAO,GACPtN,GAAK,EACLvP,KAAKmzC,MAAM5jC,IAAM0kC,IAAM,IAEvBp3B,GAAO,CAGb,CAEA7c,KAAKk0C,OACP,EA0BAnB,EAAG7gC,UAAU6hC,WAAa,SAAqB3uB,EAAQgV,EAAMnQ,GAE3DjqB,KAAKmzC,MAAQ,CAAE,GACfnzC,KAAKgG,OAAS,EAGd,IAAK,IAAIouC,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWja,EAClEga,IAEFA,IACAC,EAAWA,EAAUja,EAAQ,EAO7B,IALA,IAAIka,EAAQlvB,EAAOpf,OAASikB,EACxBsqB,EAAMD,EAAQF,EACdlqB,EAAM/jB,KAAKmqB,IAAIgkB,EAAOA,EAAQC,GAAOtqB,EAErCuqB,EAAO,EACFhlC,EAAIya,EAAOza,EAAI0a,EAAK1a,GAAK4kC,EAChCI,EAAOhB,EAAUpuB,EAAQ5V,EAAGA,EAAI4kC,EAASha,GAEzCp6B,KAAKy0C,MAAMJ,GACPr0C,KAAKmzC,MAAM,GAAKqB,EAAO,SACzBx0C,KAAKmzC,MAAM,IAAMqB,EAEjBx0C,KAAK00C,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAInpB,EAAM,EAGV,IAFAopB,EAAOhB,EAAUpuB,EAAQ5V,EAAG4V,EAAOpf,OAAQo0B,GAEtC5qB,EAAI,EAAGA,EAAI+kC,EAAK/kC,IACnB4b,GAAOgP,EAGTp6B,KAAKy0C,MAAMrpB,GACPprB,KAAKmzC,MAAM,GAAKqB,EAAO,SACzBx0C,KAAKmzC,MAAM,IAAMqB,EAEjBx0C,KAAK00C,OAAOF,EAEhB,CAEAx0C,KAAKk0C,OACP,EAEAnB,EAAG7gC,UAAU4b,KAAO,SAAe6mB,GACjCA,EAAKxB,MAAQ,IAAI9iC,MAAMrQ,KAAKgG,QAC5B,IAAK,IAAIwJ,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAC/BmlC,EAAKxB,MAAM3jC,GAAKxP,KAAKmzC,MAAM3jC,GAE7BmlC,EAAK3uC,OAAShG,KAAKgG,OACnB2uC,EAAKzB,SAAWlzC,KAAKkzC,SACrByB,EAAK1O,IAAMjmC,KAAKimC,GAClB,EAEA8M,EAAG7gC,UAAU+4B,MAAQ,WACnB,IAAI1rB,EAAI,IAAIwzB,EAAG,MAEf,OADA/yC,KAAK8tB,KAAKvO,GACHA,CACT,EAEAwzB,EAAG7gC,UAAU0iC,QAAU,SAAkBjkC,GACvC,MAAO3Q,KAAKgG,OAAS2K,EACnB3Q,KAAKmzC,MAAMnzC,KAAKgG,UAAY,EAE9B,OAAOhG,IACT,EAGA+yC,EAAG7gC,UAAUgiC,MAAQ,WACnB,MAAOl0C,KAAKgG,OAAS,GAAqC,IAAhChG,KAAKmzC,MAAMnzC,KAAKgG,OAAS,GACjDhG,KAAKgG,SAEP,OAAOhG,KAAK60C,WACd,EAEA9B,EAAG7gC,UAAU2iC,UAAY,WAKvB,OAHoB,IAAhB70C,KAAKgG,QAAkC,IAAlBhG,KAAKmzC,MAAM,KAClCnzC,KAAKkzC,SAAW,GAEXlzC,IACT,EAEA+yC,EAAG7gC,UAAU6f,QAAU,WACrB,OAAQ/xB,KAAKimC,IAAM,UAAY,SAAWjmC,KAAKuK,SAAS,IAAM,GAChE,EAgCA,IAAIuqC,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAyM9D,SAASC,EAAYnrB,GAGnB,IAFA,IAAImqB,EAAI,IAAI5jC,MAAMyZ,EAAIorB,aAEbC,EAAM,EAAGA,EAAMlB,EAAEjuC,OAAQmvC,IAAO,CACvC,IAAIt4B,EAAOs4B,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBlB,EAAEkB,IAAQrrB,EAAIqpB,MAAMt2B,GAAQ,GAAKu4B,KAAWA,CAC9C,CAEA,OAAOnB,CACT,CAkWA,SAASoB,EAAYxxB,EAAMiG,EAAK8I,GAC9BA,EAAIsgB,SAAWppB,EAAIopB,SAAWrvB,EAAKqvB,SACnC,IAAIvsC,EAAOkd,EAAK7d,OAAS8jB,EAAI9jB,OAAU,EACvC4sB,EAAI5sB,OAASW,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIsb,EAAoB,EAAhB4B,EAAKsvB,MAAM,GACfjxB,EAAmB,EAAf4H,EAAIqpB,MAAM,GACd5zB,EAAI0C,EAAIC,EAERiR,EAAS,SAAJ5T,EACL1O,EAAS0O,EAAI,SAAa,EAC9BqT,EAAIugB,MAAM,GAAKhgB,EAEf,IAAK,IAAI2U,EAAI,EAAGA,EAAInhC,EAAKmhC,IAAK,CAM5B,IAHA,IAAIwN,EAASzkC,IAAU,GACnB0kC,EAAgB,SAAR1kC,EACR2kC,EAAOrvC,KAAKmqB,IAAIwX,EAAGhe,EAAI9jB,OAAS,GAC3BuJ,EAAIpJ,KAAK6rB,IAAI,EAAG8V,EAAIjkB,EAAK7d,OAAS,GAAIuJ,GAAKimC,EAAMjmC,IAAK,CAC7D,IAAIC,EAAKs4B,EAAIv4B,EAAK,EAClB0S,EAAoB,EAAhB4B,EAAKsvB,MAAM3jC,GACf0S,EAAmB,EAAf4H,EAAIqpB,MAAM5jC,GACdgQ,EAAI0C,EAAIC,EAAIqzB,EACZD,GAAW/1B,EAAI,SAAa,EAC5Bg2B,EAAY,SAAJh2B,CACV,CACAqT,EAAIugB,MAAMrL,GAAa,EAARyN,EACf1kC,EAAiB,EAATykC,CACV,CAOA,OANc,IAAVzkC,EACF+hB,EAAIugB,MAAMrL,GAAa,EAARj3B,EAEf+hB,EAAI5sB,SAGC4sB,EAAIshB,OACb,CA1lBAnB,EAAG7gC,UAAU3H,SAAW,SAAmB6vB,EAAMqb,GAI/C,IAAI7iB,EACJ,GAJAwH,EAAOA,GAAQ,GACfqb,EAAoB,EAAVA,GAAe,EAGZ,KAATrb,GAAwB,QAATA,EAAgB,CACjCxH,EAAM,GAGN,IAFA,IAAI/V,EAAM,EACNhM,EAAQ,EACHrB,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAAK,CACpC,IAAIykC,EAAIj0C,KAAKmzC,MAAM3jC,GACfglC,GAA+B,UAArBP,GAAKp3B,EAAOhM,IAAmBtG,SAAS,IACtDsG,EAASojC,IAAO,GAAKp3B,EAAQ,SAE3B+V,EADY,IAAV/hB,GAAerB,IAAMxP,KAAKgG,OAAS,EAC/B8uC,EAAM,EAAIN,EAAKxuC,QAAUwuC,EAAO5hB,EAEhC4hB,EAAO5hB,EAEf/V,GAAO,EACHA,GAAO,KACTA,GAAO,GACPrN,IAEJ,CACc,IAAVqB,IACF+hB,EAAM/hB,EAAMtG,SAAS,IAAMqoB,GAE7B,MAAOA,EAAI5sB,OAASyvC,IAAY,EAC9B7iB,EAAM,IAAMA,EAKd,OAHsB,IAAlB5yB,KAAKkzC,WACPtgB,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIwH,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIsb,EAAYX,EAAW3a,GAEvBub,EAAYX,EAAW5a,GAC3BxH,EAAM,GACN,IAAIjgB,EAAI3S,KAAKirC,QACbt4B,EAAEugC,SAAW,EACb,OAAQvgC,EAAEijC,SAAU,CAClB,IAAIr2B,EAAI5M,EAAEkjC,KAAKF,GAAWprC,SAAS6vB,GACnCznB,EAAIA,EAAEmjC,MAAMH,GAKV/iB,EAHGjgB,EAAEijC,SAGCr2B,EAAIqT,EAFJkiB,EAAMY,EAAYn2B,EAAEvZ,QAAUuZ,EAAIqT,CAI5C,CACI5yB,KAAK41C,WACPhjB,EAAM,IAAMA,GAEd,MAAOA,EAAI5sB,OAASyvC,IAAY,EAC9B7iB,EAAM,IAAMA,EAKd,OAHsB,IAAlB5yB,KAAKkzC,WACPtgB,EAAM,IAAMA,GAEPA,CACT,CAEAoX,GAAO,EAAO,kCAChB,EAEA+I,EAAG7gC,UAAU6jC,SAAW,WACtB,IAAIpjB,EAAM3yB,KAAKmzC,MAAM,GASrB,OARoB,IAAhBnzC,KAAKgG,OACP2sB,GAAuB,SAAhB3yB,KAAKmzC,MAAM,GACO,IAAhBnzC,KAAKgG,QAAkC,IAAlBhG,KAAKmzC,MAAM,GAEzCxgB,GAAO,iBAAoC,SAAhB3yB,KAAKmzC,MAAM,GAC7BnzC,KAAKgG,OAAS,GACvBgkC,GAAO,EAAO,8CAEU,IAAlBhqC,KAAKkzC,UAAmBvgB,EAAMA,CACxC,EAEAogB,EAAG7gC,UAAUqgB,OAAS,WACpB,OAAOvyB,KAAKuK,SAAS,GACvB,EAEAwoC,EAAG7gC,UAAU8jC,SAAW,SAAmBhD,EAAQhtC,GAEjD,OADAgkC,EAAyB,qBAAXne,GACP7rB,KAAKi2C,YAAYpqB,EAAQmnB,EAAQhtC,EAC1C,EAEA+sC,EAAG7gC,UAAUogC,QAAU,SAAkBU,EAAQhtC,GAC/C,OAAOhG,KAAKi2C,YAAY5lC,MAAO2iC,EAAQhtC,EACzC,EAEA+sC,EAAG7gC,UAAU+jC,YAAc,SAAsBC,EAAWlD,EAAQhtC,GAClE,IAAI7D,EAAanC,KAAKmC,aAClBg0C,EAAYnwC,GAAUG,KAAK6rB,IAAI,EAAG7vB,GACtC6nC,EAAO7nC,GAAcg0C,EAAW,yCAChCnM,EAAOmM,EAAY,EAAG,+BAEtBn2C,KAAKk0C,QACL,IAGIhyB,EAAG1S,EAHHikB,EAA0B,OAAXuf,EACfziB,EAAM,IAAI2lB,EAAUC,GAGpBC,EAAIp2C,KAAKirC,QACb,GAAKxX,EAYE,CACL,IAAKjkB,EAAI,GAAI4mC,EAAER,SAAUpmC,IACvB0S,EAAIk0B,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAET/lB,EAAI/gB,GAAK0S,EAGX,KAAO1S,EAAI2mC,EAAW3mC,IACpB+gB,EAAI/gB,GAAK,CAEb,KAvBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAI2mC,EAAYh0C,EAAYqN,IACtC+gB,EAAI/gB,GAAK,EAGX,IAAKA,EAAI,GAAI4mC,EAAER,SAAUpmC,IACvB0S,EAAIk0B,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAET/lB,EAAI4lB,EAAY3mC,EAAI,GAAK0S,CAE7B,CAaA,OAAOqO,CACT,EAEIpqB,KAAKowC,MACPxD,EAAG7gC,UAAUskC,WAAa,SAAqBvC,GAC7C,OAAO,GAAK9tC,KAAKowC,MAAMtC,EACzB,EAEAlB,EAAG7gC,UAAUskC,WAAa,SAAqBvC,GAC7C,IAAIhiC,EAAIgiC,EACJ10B,EAAI,EAiBR,OAhBItN,GAAK,OACPsN,GAAK,GACLtN,KAAO,IAELA,GAAK,KACPsN,GAAK,EACLtN,KAAO,GAELA,GAAK,IACPsN,GAAK,EACLtN,KAAO,GAELA,GAAK,IACPsN,GAAK,EACLtN,KAAO,GAEFsN,EAAItN,CACb,EAGF8gC,EAAG7gC,UAAUukC,UAAY,SAAoBxC,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIhiC,EAAIgiC,EACJ10B,EAAI,EAoBR,OAnBqB,KAAZ,KAAJtN,KACHsN,GAAK,GACLtN,KAAO,IAEU,KAAV,IAAJA,KACHsN,GAAK,EACLtN,KAAO,GAES,KAAT,GAAJA,KACHsN,GAAK,EACLtN,KAAO,GAES,KAAT,EAAJA,KACHsN,GAAK,EACLtN,KAAO,GAES,KAAT,EAAJA,IACHsN,IAEKA,CACT,EAGAwzB,EAAG7gC,UAAUgjC,UAAY,WACvB,IAAIjB,EAAIj0C,KAAKmzC,MAAMnzC,KAAKgG,OAAS,GAC7BqtB,EAAKrzB,KAAKw2C,WAAWvC,GACzB,OAA2B,IAAnBj0C,KAAKgG,OAAS,GAAUqtB,CAClC,EAgBA0f,EAAG7gC,UAAUwkC,SAAW,WACtB,GAAI12C,KAAK41C,SAAU,OAAO,EAG1B,IADA,IAAIr2B,EAAI,EACC/P,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAAK,CACpC,IAAI0S,EAAIliB,KAAKy2C,UAAUz2C,KAAKmzC,MAAM3jC,IAElC,GADA+P,GAAK2C,EACK,KAANA,EAAU,KAChB,CACA,OAAO3C,CACT,EAEAwzB,EAAG7gC,UAAU/P,WAAa,WACxB,OAAOgE,KAAK6tC,KAAKh0C,KAAKk1C,YAAc,EACtC,EAEAnC,EAAG7gC,UAAUykC,OAAS,SAAiBC,GACrC,OAAsB,IAAlB52C,KAAKkzC,SACAlzC,KAAKsrB,MAAMurB,MAAMD,GAAOE,MAAM,GAEhC92C,KAAKirC,OACd,EAEA8H,EAAG7gC,UAAU6kC,SAAW,SAAmBH,GACzC,OAAI52C,KAAKg3C,MAAMJ,EAAQ,GACd52C,KAAKi3C,KAAKL,GAAOE,MAAM,GAAGI,OAE5Bl3C,KAAKirC,OACd,EAEA8H,EAAG7gC,UAAUilC,MAAQ,WACnB,OAAyB,IAAlBn3C,KAAKkzC,QACd,EAGAH,EAAG7gC,UAAUklC,IAAM,WACjB,OAAOp3C,KAAKirC,QAAQiM,MACtB,EAEAnE,EAAG7gC,UAAUglC,KAAO,WAKlB,OAJKl3C,KAAK41C,WACR51C,KAAKkzC,UAAY,GAGZlzC,IACT,EAGA+yC,EAAG7gC,UAAUmlC,KAAO,SAAevtB,GACjC,MAAO9pB,KAAKgG,OAAS8jB,EAAI9jB,OACvBhG,KAAKmzC,MAAMnzC,KAAKgG,UAAY,EAG9B,IAAK,IAAIwJ,EAAI,EAAGA,EAAIsa,EAAI9jB,OAAQwJ,IAC9BxP,KAAKmzC,MAAM3jC,GAAKxP,KAAKmzC,MAAM3jC,GAAKsa,EAAIqpB,MAAM3jC,GAG5C,OAAOxP,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAUolC,IAAM,SAAcxtB,GAE/B,OADAkgB,EAA0C,KAAlChqC,KAAKkzC,SAAWppB,EAAIopB,WACrBlzC,KAAKq3C,KAAKvtB,EACnB,EAGAipB,EAAG7gC,UAAUqlC,GAAK,SAAaztB,GAC7B,OAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQqM,IAAIxtB,GAC/CA,EAAImhB,QAAQqM,IAAIt3C,KACzB,EAEA+yC,EAAG7gC,UAAUslC,IAAM,SAAc1tB,GAC/B,OAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQoM,KAAKvtB,GAChDA,EAAImhB,QAAQoM,KAAKr3C,KAC1B,EAGA+yC,EAAG7gC,UAAUulC,MAAQ,SAAgB3tB,GAEnC,IAAI5H,EAEFA,EADEliB,KAAKgG,OAAS8jB,EAAI9jB,OAChB8jB,EAEA9pB,KAGN,IAAK,IAAIwP,EAAI,EAAGA,EAAI0S,EAAElc,OAAQwJ,IAC5BxP,KAAKmzC,MAAM3jC,GAAKxP,KAAKmzC,MAAM3jC,GAAKsa,EAAIqpB,MAAM3jC,GAK5C,OAFAxP,KAAKgG,OAASkc,EAAElc,OAEThG,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAUwlC,KAAO,SAAe5tB,GAEjC,OADAkgB,EAA0C,KAAlChqC,KAAKkzC,SAAWppB,EAAIopB,WACrBlzC,KAAKy3C,MAAM3tB,EACpB,EAGAipB,EAAG7gC,UAAUylC,IAAM,SAAc7tB,GAC/B,OAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQyM,KAAK5tB,GAChDA,EAAImhB,QAAQyM,KAAK13C,KAC1B,EAEA+yC,EAAG7gC,UAAU0lC,KAAO,SAAe9tB,GACjC,OAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQwM,MAAM3tB,GACjDA,EAAImhB,QAAQwM,MAAMz3C,KAC3B,EAGA+yC,EAAG7gC,UAAU2lC,MAAQ,SAAgB/tB,GAEnC,IAAI7H,EACAC,EACAliB,KAAKgG,OAAS8jB,EAAI9jB,QACpBic,EAAIjiB,KACJkiB,EAAI4H,IAEJ7H,EAAI6H,EACJ5H,EAAIliB,MAGN,IAAK,IAAIwP,EAAI,EAAGA,EAAI0S,EAAElc,OAAQwJ,IAC5BxP,KAAKmzC,MAAM3jC,GAAKyS,EAAEkxB,MAAM3jC,GAAK0S,EAAEixB,MAAM3jC,GAGvC,GAAIxP,OAASiiB,EACX,KAAOzS,EAAIyS,EAAEjc,OAAQwJ,IACnBxP,KAAKmzC,MAAM3jC,GAAKyS,EAAEkxB,MAAM3jC,GAM5B,OAFAxP,KAAKgG,OAASic,EAAEjc,OAEThG,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAU4lC,KAAO,SAAehuB,GAEjC,OADAkgB,EAA0C,KAAlChqC,KAAKkzC,SAAWppB,EAAIopB,WACrBlzC,KAAK63C,MAAM/tB,EACpB,EAGAipB,EAAG7gC,UAAU6lC,IAAM,SAAcjuB,GAC/B,OAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQ6M,KAAKhuB,GAChDA,EAAImhB,QAAQ6M,KAAK93C,KAC1B,EAEA+yC,EAAG7gC,UAAU8lC,KAAO,SAAeluB,GACjC,OAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQ4M,MAAM/tB,GACjDA,EAAImhB,QAAQ4M,MAAM73C,KAC3B,EAGA+yC,EAAG7gC,UAAU2kC,MAAQ,SAAgBD,GACnC5M,EAAwB,kBAAV4M,GAAsBA,GAAS,GAE7C,IAAIqB,EAAsC,EAAxB9xC,KAAK6tC,KAAK4C,EAAQ,IAChCsB,EAAWtB,EAAQ,GAGvB52C,KAAK40C,QAAQqD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIzoC,EAAI,EAAGA,EAAIyoC,EAAazoC,IAC/BxP,KAAKmzC,MAAM3jC,GAAsB,UAAhBxP,KAAKmzC,MAAM3jC,GAS9B,OALI0oC,EAAW,IACbl4C,KAAKmzC,MAAM3jC,IAAMxP,KAAKmzC,MAAM3jC,GAAM,UAAc,GAAK0oC,GAIhDl4C,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAU+kC,KAAO,SAAeL,GACjC,OAAO52C,KAAKirC,QAAQ4L,MAAMD,EAC5B,EAGA7D,EAAG7gC,UAAUimC,KAAO,SAAehD,EAAKpmB,GACtCib,EAAsB,kBAARmL,GAAoBA,GAAO,GAEzC,IAAIt4B,EAAOs4B,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAn1C,KAAK40C,QAAQ/3B,EAAM,GAGjB7c,KAAKmzC,MAAMt2B,GADTkS,EACgB/uB,KAAKmzC,MAAMt2B,GAAQ,GAAKu4B,EAExBp1C,KAAKmzC,MAAMt2B,KAAS,GAAKu4B,GAGtCp1C,KAAKk0C,OACd,EAGAnB,EAAG7gC,UAAUkmC,KAAO,SAAetuB,GACjC,IAAIvK,EAkBA0C,EAAGC,EAfP,GAAsB,IAAlBliB,KAAKkzC,UAAmC,IAAjBppB,EAAIopB,SAI7B,OAHAlzC,KAAKkzC,SAAW,EAChB3zB,EAAIvf,KAAKq4C,KAAKvuB,GACd9pB,KAAKkzC,UAAY,EACVlzC,KAAK60C,YAGP,GAAsB,IAAlB70C,KAAKkzC,UAAmC,IAAjBppB,EAAIopB,SAIpC,OAHAppB,EAAIopB,SAAW,EACf3zB,EAAIvf,KAAKq4C,KAAKvuB,GACdA,EAAIopB,SAAW,EACR3zB,EAAEs1B,YAKP70C,KAAKgG,OAAS8jB,EAAI9jB,QACpBic,EAAIjiB,KACJkiB,EAAI4H,IAEJ7H,EAAI6H,EACJ5H,EAAIliB,MAIN,IADA,IAAI6Q,EAAQ,EACHrB,EAAI,EAAGA,EAAI0S,EAAElc,OAAQwJ,IAC5B+P,GAAkB,EAAb0C,EAAEkxB,MAAM3jC,KAAwB,EAAb0S,EAAEixB,MAAM3jC,IAAUqB,EAC1C7Q,KAAKmzC,MAAM3jC,GAAS,SAAJ+P,EAChB1O,EAAQ0O,IAAM,GAEhB,KAAiB,IAAV1O,GAAerB,EAAIyS,EAAEjc,OAAQwJ,IAClC+P,GAAkB,EAAb0C,EAAEkxB,MAAM3jC,IAAUqB,EACvB7Q,KAAKmzC,MAAM3jC,GAAS,SAAJ+P,EAChB1O,EAAQ0O,IAAM,GAIhB,GADAvf,KAAKgG,OAASic,EAAEjc,OACF,IAAV6K,EACF7Q,KAAKmzC,MAAMnzC,KAAKgG,QAAU6K,EAC1B7Q,KAAKgG,cAEA,GAAIic,IAAMjiB,KACf,KAAOwP,EAAIyS,EAAEjc,OAAQwJ,IACnBxP,KAAKmzC,MAAM3jC,GAAKyS,EAAEkxB,MAAM3jC,GAI5B,OAAOxP,IACT,EAGA+yC,EAAG7gC,UAAUiqB,IAAM,SAAcrS,GAC/B,IAAIyG,EACJ,OAAqB,IAAjBzG,EAAIopB,UAAoC,IAAlBlzC,KAAKkzC,UAC7BppB,EAAIopB,SAAW,EACf3iB,EAAMvwB,KAAKo3B,IAAItN,GACfA,EAAIopB,UAAY,EACT3iB,GACmB,IAAjBzG,EAAIopB,UAAoC,IAAlBlzC,KAAKkzC,UACpClzC,KAAKkzC,SAAW,EAChB3iB,EAAMzG,EAAIsN,IAAIp3B,MACdA,KAAKkzC,SAAW,EACT3iB,GAGLvwB,KAAKgG,OAAS8jB,EAAI9jB,OAAehG,KAAKirC,QAAQmN,KAAKtuB,GAEhDA,EAAImhB,QAAQmN,KAAKp4C,KAC1B,EAGA+yC,EAAG7gC,UAAUmmC,KAAO,SAAevuB,GAEjC,GAAqB,IAAjBA,EAAIopB,SAAgB,CACtBppB,EAAIopB,SAAW,EACf,IAAI3zB,EAAIvf,KAAKo4C,KAAKtuB,GAElB,OADAA,EAAIopB,SAAW,EACR3zB,EAAEs1B,WAGX,CAAO,GAAsB,IAAlB70C,KAAKkzC,SAId,OAHAlzC,KAAKkzC,SAAW,EAChBlzC,KAAKo4C,KAAKtuB,GACV9pB,KAAKkzC,SAAW,EACTlzC,KAAK60C,YAId,IAWI5yB,EAAGC,EAXHyxB,EAAM3zC,KAAK2zC,IAAI7pB,GAGnB,GAAY,IAAR6pB,EAIF,OAHA3zC,KAAKkzC,SAAW,EAChBlzC,KAAKgG,OAAS,EACdhG,KAAKmzC,MAAM,GAAK,EACTnzC,KAKL2zC,EAAM,GACR1xB,EAAIjiB,KACJkiB,EAAI4H,IAEJ7H,EAAI6H,EACJ5H,EAAIliB,MAIN,IADA,IAAI6Q,EAAQ,EACHrB,EAAI,EAAGA,EAAI0S,EAAElc,OAAQwJ,IAC5B+P,GAAkB,EAAb0C,EAAEkxB,MAAM3jC,KAAwB,EAAb0S,EAAEixB,MAAM3jC,IAAUqB,EAC1CA,EAAQ0O,GAAK,GACbvf,KAAKmzC,MAAM3jC,GAAS,SAAJ+P,EAElB,KAAiB,IAAV1O,GAAerB,EAAIyS,EAAEjc,OAAQwJ,IAClC+P,GAAkB,EAAb0C,EAAEkxB,MAAM3jC,IAAUqB,EACvBA,EAAQ0O,GAAK,GACbvf,KAAKmzC,MAAM3jC,GAAS,SAAJ+P,EAIlB,GAAc,IAAV1O,GAAerB,EAAIyS,EAAEjc,QAAUic,IAAMjiB,KACvC,KAAOwP,EAAIyS,EAAEjc,OAAQwJ,IACnBxP,KAAKmzC,MAAM3jC,GAAKyS,EAAEkxB,MAAM3jC,GAU5B,OANAxP,KAAKgG,OAASG,KAAK6rB,IAAIhyB,KAAKgG,OAAQwJ,GAEhCyS,IAAMjiB,OACRA,KAAKkzC,SAAW,GAGXlzC,KAAKk0C,OACd,EAGAnB,EAAG7gC,UAAUklB,IAAM,SAActN,GAC/B,OAAO9pB,KAAKirC,QAAQoN,KAAKvuB,EAC3B,EA8CA,IAAIwuB,EAAc,SAAsBz0B,EAAMiG,EAAK8I,GACjD,IAIIO,EACAolB,EACAllB,EANApR,EAAI4B,EAAKsvB,MACTjxB,EAAI4H,EAAIqpB,MACRpL,EAAInV,EAAIugB,MACRxgC,EAAI,EAIJ6lC,EAAY,EAAPv2B,EAAE,GACPw2B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP12B,EAAE,GACP22B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP72B,EAAE,GACP82B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPh3B,EAAE,GACPi3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPn3B,EAAE,GACPo3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPt3B,EAAE,GACPu3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPz3B,EAAE,GACP03B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP53B,EAAE,GACP63B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/3B,EAAE,GACPg4B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPl4B,EAAE,GACPm4B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPp4B,EAAE,GACPq4B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPv4B,EAAE,GACPw4B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP14B,EAAE,GACP24B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP74B,EAAE,GACP84B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPh5B,EAAE,GACPi5B,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPn5B,EAAE,GACPo5B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPt5B,EAAE,GACPu5B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPz5B,EAAE,GACP05B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP55B,EAAE,GACP65B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/5B,EAAE,GACPg6B,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjBrpB,EAAIsgB,SAAWrvB,EAAKqvB,SAAWppB,EAAIopB,SACnCtgB,EAAI5sB,OAAS,GAEbmtB,EAAKhtB,KAAKi2C,KAAK3D,EAAK8B,GACpBhC,EAAMpyC,KAAKi2C,KAAK3D,EAAK+B,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAK6B,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAK1D,EAAK8B,GACpB,IAAI6B,IAAQ1pC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAENlpB,EAAKhtB,KAAKi2C,KAAKxD,EAAK2B,GACpBhC,EAAMpyC,KAAKi2C,KAAKxD,EAAK4B,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAK0B,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAKvD,EAAK2B,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKiC,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAKkC,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKgC,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKiC,GAAQ,EAClC,IAAI2B,IAAQ3pC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENnpB,EAAKhtB,KAAKi2C,KAAKrD,EAAKwB,GACpBhC,EAAMpyC,KAAKi2C,KAAKrD,EAAKyB,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAKuB,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAKpD,EAAKwB,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAK8B,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAK+B,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAK6B,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAK8B,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKoC,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAKqC,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKmC,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKoC,GAAQ,EAClC,IAAIyB,IAAQ5pC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENppB,EAAKhtB,KAAKi2C,KAAKlD,EAAKqB,GACpBhC,EAAMpyC,KAAKi2C,KAAKlD,EAAKsB,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAKoB,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAKjD,EAAKqB,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAK2B,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAK4B,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAK0B,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAK2B,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAKiC,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAKkC,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAKgC,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAKiC,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKuC,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAKwC,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKsC,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKuC,GAAQ,EAClC,IAAIuB,IAAQ7pC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENrpB,EAAKhtB,KAAKi2C,KAAK/C,EAAKkB,GACpBhC,EAAMpyC,KAAKi2C,KAAK/C,EAAKmB,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKiB,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAK9C,EAAKkB,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAKwB,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAKyB,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAKuB,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAKwB,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAK8B,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAK+B,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAK6B,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAK8B,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAKoC,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAKqC,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAKmC,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAKoC,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAK0C,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAK2C,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKyC,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAK0C,IAAQ,EAClC,IAAIqB,IAAQ9pC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENtpB,EAAKhtB,KAAKi2C,KAAK5C,EAAKe,GACpBhC,EAAMpyC,KAAKi2C,KAAK5C,EAAKgB,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKc,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAK3C,EAAKe,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAKqB,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAKsB,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKoB,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAKqB,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAK2B,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAK4B,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAK0B,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAK2B,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAKiC,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAKkC,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAKgC,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAKiC,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAKuC,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAKwC,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAKsC,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAKuC,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAK6C,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAK8C,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAK4C,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAK6C,IAAQ,EAClC,IAAImB,IAAQ/pC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENvpB,EAAKhtB,KAAKi2C,KAAKzC,EAAKY,GACpBhC,EAAMpyC,KAAKi2C,KAAKzC,EAAKa,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKW,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAKxC,EAAKY,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAKkB,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAKmB,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKiB,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAKkB,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAKwB,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAKyB,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKuB,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAKwB,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAK8B,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAK+B,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAK6B,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAK8B,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAKoC,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAKqC,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAKmC,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAKoC,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAK0C,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAK2C,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAKyC,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAK0C,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKgD,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAKiD,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAK+C,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKgD,IAAQ,EAClC,IAAIiB,IAAQhqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENxpB,EAAKhtB,KAAKi2C,KAAKtC,EAAKS,GACpBhC,EAAMpyC,KAAKi2C,KAAKtC,EAAKU,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKQ,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAKrC,EAAKS,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKe,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKgB,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKc,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKe,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAKqB,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAKsB,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKoB,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAKqB,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAK2B,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAK4B,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAK0B,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAK2B,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAKiC,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAKkC,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAKgC,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAKiC,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAKuC,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAKwC,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAKsC,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAKuC,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAK6C,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAK8C,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAK4C,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAK6C,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKmD,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAKoD,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKkD,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKmD,IAAQ,EAClC,IAAIe,IAAQjqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENzpB,EAAKhtB,KAAKi2C,KAAKnC,EAAKM,GACpBhC,EAAMpyC,KAAKi2C,KAAKnC,EAAKO,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKK,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAKlC,EAAKM,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKY,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKa,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKW,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKY,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKkB,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKmB,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKiB,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKkB,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAKwB,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAKyB,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKuB,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAKwB,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAK8B,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAK+B,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAK6B,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAK8B,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAKoC,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAKqC,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAKmC,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAKoC,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAK0C,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAK2C,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAKyC,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAK0C,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAKgD,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAKiD,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAK+C,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAKgD,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKsD,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAKuD,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKqD,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKsD,IAAQ,EAClC,IAAIa,IAAQlqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN1pB,EAAKhtB,KAAKi2C,KAAKhC,EAAKG,GACpBhC,EAAMpyC,KAAKi2C,KAAKhC,EAAKI,GACrBjC,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKE,GAAQ,EACpClnB,EAAKltB,KAAKi2C,KAAK/B,EAAKG,GACpBrnB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKS,GAAQ,EAClCnC,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKU,GAAQ,EACpCpC,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKQ,GAAQ,EACpCrnB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKS,GAAQ,EAClCxnB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKe,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKgB,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKc,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKe,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKqB,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKsB,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKoB,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKqB,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAK2B,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAK4B,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAK0B,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAK2B,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAKiC,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAKkC,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKgC,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAKiC,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAKuC,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAKwC,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAKsC,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAKuC,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAK6C,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAK8C,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAK4C,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAK6C,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAKmD,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAKoD,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAKkD,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAKmD,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAK3D,EAAKyD,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAK3D,EAAK0D,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAK1D,EAAKwD,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAK1D,EAAKyD,IAAQ,EAClC,IAAIW,IAAQnqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACrD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAEN3pB,EAAKhtB,KAAKi2C,KAAKhC,EAAKM,GACpBnC,EAAMpyC,KAAKi2C,KAAKhC,EAAKO,GACrBpC,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKK,GAAQ,EACpCrnB,EAAKltB,KAAKi2C,KAAK/B,EAAKM,GACpBxnB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKY,GAAQ,EAClCtC,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKa,GAAQ,EACpCvC,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKW,GAAQ,EACpCxnB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKY,GAAQ,EAClC3nB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKkB,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKmB,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKiB,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKkB,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKwB,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKyB,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKuB,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKwB,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAK8B,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAK+B,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAK6B,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAK8B,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAKoC,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAKqC,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKmC,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAKoC,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAK0C,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAK2C,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAKyC,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAK0C,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAKgD,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAKiD,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAK+C,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAKgD,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAKxD,EAAKsD,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAKxD,EAAKuD,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAKvD,EAAKqD,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAKvD,EAAKsD,IAAQ,EAClC,IAAIY,IAASpqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP5pB,EAAKhtB,KAAKi2C,KAAKhC,EAAKS,GACpBtC,EAAMpyC,KAAKi2C,KAAKhC,EAAKU,GACrBvC,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKQ,GAAQ,EACpCxnB,EAAKltB,KAAKi2C,KAAK/B,EAAKS,GACpB3nB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKe,GAAQ,EAClCzC,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKgB,GAAQ,EACpC1C,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKc,GAAQ,EACpC3nB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKe,GAAQ,EAClC9nB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKqB,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKsB,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKoB,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKqB,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAK2B,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAK4B,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAK0B,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAK2B,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAKiC,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAKkC,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKgC,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAKiC,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAKuC,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAKwC,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKsC,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAKuC,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAK6C,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAK8C,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAK4C,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAK6C,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAKrD,EAAKmD,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAKrD,EAAKoD,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAKpD,EAAKkD,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAKpD,EAAKmD,IAAQ,EAClC,IAAIa,IAASrqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP7pB,EAAKhtB,KAAKi2C,KAAKhC,EAAKY,GACpBzC,EAAMpyC,KAAKi2C,KAAKhC,EAAKa,GACrB1C,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKW,GAAQ,EACpC3nB,EAAKltB,KAAKi2C,KAAK/B,EAAKY,GACpB9nB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKkB,GAAQ,EAClC5C,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKmB,IAAQ,EACpC7C,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKiB,GAAQ,EACpC9nB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKkB,IAAQ,EAClCjoB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKwB,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKyB,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKuB,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKwB,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAK8B,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAK+B,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAK6B,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAK8B,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAKoC,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAKqC,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKmC,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAKoC,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAK0C,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAK2C,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAKyC,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAK0C,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAKlD,EAAKgD,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAKlD,EAAKiD,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAKjD,EAAK+C,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAKjD,EAAKgD,IAAQ,EAClC,IAAIc,IAAStqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEP9pB,EAAKhtB,KAAKi2C,KAAKhC,EAAKe,GACpB5C,EAAMpyC,KAAKi2C,KAAKhC,EAAKgB,IACrB7C,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKc,GAAQ,EACpC9nB,EAAKltB,KAAKi2C,KAAK/B,EAAKe,IACpBjoB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKqB,IAAQ,EAClC/C,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKsB,IAAQ,EACpChD,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKoB,IAAQ,EACpCjoB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKqB,IAAQ,EAClCpoB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAK2B,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAK4B,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAK0B,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAK2B,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKiC,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKkC,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKgC,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKiC,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAKuC,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAKwC,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKsC,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAKuC,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAK/C,EAAK6C,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAK/C,EAAK8C,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAK9C,EAAK4C,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAK9C,EAAK6C,IAAQ,EAClC,IAAIe,IAASvqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP/pB,EAAKhtB,KAAKi2C,KAAKhC,EAAKkB,IACpB/C,EAAMpyC,KAAKi2C,KAAKhC,EAAKmB,IACrBhD,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKiB,IAAQ,EACpCjoB,EAAKltB,KAAKi2C,KAAK/B,EAAKkB,IACpBpoB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKwB,IAAQ,EAClClD,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKyB,IAAQ,EACpCnD,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKuB,IAAQ,EACpCpoB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKwB,IAAQ,EAClCvoB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAK8B,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAK+B,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAK6B,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAK8B,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKoC,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKqC,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKmC,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKoC,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAK5C,EAAK0C,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAK5C,EAAK2C,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAK3C,EAAKyC,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAK3C,EAAK0C,IAAQ,EAClC,IAAIgB,IAASxqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPhqB,EAAKhtB,KAAKi2C,KAAKhC,EAAKqB,IACpBlD,EAAMpyC,KAAKi2C,KAAKhC,EAAKsB,IACrBnD,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKoB,IAAQ,EACpCpoB,EAAKltB,KAAKi2C,KAAK/B,EAAKqB,IACpBvoB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAK2B,IAAQ,EAClCrD,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAK4B,IAAQ,EACpCtD,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAK0B,IAAQ,EACpCvoB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAK2B,IAAQ,EAClC1oB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKiC,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKkC,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKgC,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKiC,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAKzC,EAAKuC,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAKzC,EAAKwC,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAKxC,EAAKsC,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAKxC,EAAKuC,IAAQ,EAClC,IAAIiB,IAASzqC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPjqB,EAAKhtB,KAAKi2C,KAAKhC,EAAKwB,IACpBrD,EAAMpyC,KAAKi2C,KAAKhC,EAAKyB,IACrBtD,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAKuB,IAAQ,EACpCvoB,EAAKltB,KAAKi2C,KAAK/B,EAAKwB,IACpB1oB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAK8B,IAAQ,EAClCxD,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAK+B,IAAQ,EACpCzD,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAK6B,IAAQ,EACpC1oB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAK8B,IAAQ,EAClC7oB,EAAMA,EAAKhtB,KAAKi2C,KAAKtC,EAAKoC,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAKtC,EAAKqC,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAKrC,EAAKmC,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAKrC,EAAKoC,IAAQ,EAClC,IAAIkB,IAAS1qC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPlqB,EAAKhtB,KAAKi2C,KAAKhC,EAAK2B,IACpBxD,EAAMpyC,KAAKi2C,KAAKhC,EAAK4B,IACrBzD,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAK0B,IAAQ,EACpC1oB,EAAKltB,KAAKi2C,KAAK/B,EAAK2B,IACpB7oB,EAAMA,EAAKhtB,KAAKi2C,KAAKnC,EAAKiC,IAAQ,EAClC3D,EAAOA,EAAMpyC,KAAKi2C,KAAKnC,EAAKkC,IAAQ,EACpC5D,EAAOA,EAAMpyC,KAAKi2C,KAAKlC,EAAKgC,IAAQ,EACpC7oB,EAAMA,EAAKltB,KAAKi2C,KAAKlC,EAAKiC,IAAQ,EAClC,IAAImB,IAAS3qC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EACtD5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEPnqB,EAAKhtB,KAAKi2C,KAAKhC,EAAK8B,IACpB3D,EAAMpyC,KAAKi2C,KAAKhC,EAAK+B,IACrB5D,EAAOA,EAAMpyC,KAAKi2C,KAAK/B,EAAK6B,IAAQ,EACpC7oB,EAAKltB,KAAKi2C,KAAK/B,EAAK8B,IACpB,IAAIoB,IAAS5qC,EAAIwgB,EAAM,KAAa,KAANolB,IAAiB,IAAO,EA0BtD,OAzBA5lC,GAAO0gB,GAAMklB,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPxV,EAAE,GAAKsU,GACPtU,EAAE,GAAKuU,GACPvU,EAAE,GAAKwU,GACPxU,EAAE,GAAKyU,GACPzU,EAAE,GAAK0U,GACP1U,EAAE,GAAK2U,GACP3U,EAAE,GAAK4U,GACP5U,EAAE,GAAK6U,GACP7U,EAAE,GAAK8U,GACP9U,EAAE,GAAK+U,GACP/U,EAAE,IAAMgV,GACRhV,EAAE,IAAMiV,GACRjV,EAAE,IAAMkV,GACRlV,EAAE,IAAMmV,GACRnV,EAAE,IAAMoV,GACRpV,EAAE,IAAMqV,GACRrV,EAAE,IAAMsV,GACRtV,EAAE,IAAMuV,GACRvV,EAAE,IAAMwV,GACE,IAAN5qC,IACFo1B,EAAE,IAAMp1B,EACRigB,EAAI5sB,UAEC4sB,CACT,EAOA,SAAS4qB,EAAU35B,EAAMiG,EAAK8I,GAC5BA,EAAIsgB,SAAWppB,EAAIopB,SAAWrvB,EAAKqvB,SACnCtgB,EAAI5sB,OAAS6d,EAAK7d,OAAS8jB,EAAI9jB,OAI/B,IAFA,IAAI6K,EAAQ,EACR4sC,EAAU,EACL3V,EAAI,EAAGA,EAAIlV,EAAI5sB,OAAS,EAAG8hC,IAAK,CAGvC,IAAIwN,EAASmI,EACbA,EAAU,EAGV,IAFA,IAAIlI,EAAgB,SAAR1kC,EACR2kC,EAAOrvC,KAAKmqB,IAAIwX,EAAGhe,EAAI9jB,OAAS,GAC3BuJ,EAAIpJ,KAAK6rB,IAAI,EAAG8V,EAAIjkB,EAAK7d,OAAS,GAAIuJ,GAAKimC,EAAMjmC,IAAK,CAC7D,IAAIC,EAAIs4B,EAAIv4B,EACR0S,EAAoB,EAAhB4B,EAAKsvB,MAAM3jC,GACf0S,EAAmB,EAAf4H,EAAIqpB,MAAM5jC,GACdgQ,EAAI0C,EAAIC,EAERiR,EAAS,SAAJ5T,EACT+1B,EAAUA,GAAW/1B,EAAI,SAAa,GAAM,EAC5C4T,EAAMA,EAAKoiB,EAAS,EACpBA,EAAa,SAALpiB,EACRmiB,EAAUA,GAAUniB,IAAO,IAAO,EAElCsqB,GAAWnI,IAAW,GACtBA,GAAU,QACZ,CACA1iB,EAAIugB,MAAMrL,GAAKyN,EACf1kC,EAAQykC,EACRA,EAASmI,CACX,CAOA,OANc,IAAV5sC,EACF+hB,EAAIugB,MAAMrL,GAAKj3B,EAEf+hB,EAAI5sB,SAGC4sB,EAAIshB,OACb,CAEA,SAASwJ,EAAY75B,EAAMiG,EAAK8I,GAC9B,IAAI+qB,EAAO,IAAIC,EACf,OAAOD,EAAKE,KAAKh6B,EAAMiG,EAAK8I,EAC9B,CAqBA,SAASgrB,EAAM70C,EAAGuoB,GAChBtxB,KAAK+I,EAAIA,EACT/I,KAAKsxB,EAAIA,CACX,CAxEKnrB,KAAKi2C,OACR9D,EAAcjD,GAiDhBtC,EAAG7gC,UAAU4rC,MAAQ,SAAgBh0B,EAAK8I,GACxC,IAAIrC,EACA5pB,EAAM3G,KAAKgG,OAAS8jB,EAAI9jB,OAW5B,OATEuqB,EADkB,KAAhBvwB,KAAKgG,QAAgC,KAAf8jB,EAAI9jB,OACtBsyC,EAAYt4C,KAAM8pB,EAAK8I,GACpBjsB,EAAM,GACT0uC,EAAWr1C,KAAM8pB,EAAK8I,GACnBjsB,EAAM,KACT62C,EAASx9C,KAAM8pB,EAAK8I,GAEpB8qB,EAAW19C,KAAM8pB,EAAK8I,GAGvBrC,CACT,EAUAqtB,EAAK1rC,UAAU6rC,QAAU,SAAkBC,GAGzC,IAFA,IAAI/rC,EAAI,IAAI5B,MAAM2tC,GACdC,EAAIlL,EAAG7gC,UAAUskC,WAAWwH,GAAK,EAC5BxuC,EAAI,EAAGA,EAAIwuC,EAAGxuC,IACrByC,EAAEzC,GAAKxP,KAAKk+C,OAAO1uC,EAAGyuC,EAAGD,GAG3B,OAAO/rC,CACT,EAGA2rC,EAAK1rC,UAAUgsC,OAAS,SAAiBn1C,EAAGk1C,EAAGD,GAC7C,GAAU,IAANj1C,GAAWA,IAAMi1C,EAAI,EAAG,OAAOj1C,EAGnC,IADA,IAAIo1C,EAAK,EACA3uC,EAAI,EAAGA,EAAIyuC,EAAGzuC,IACrB2uC,IAAW,EAAJp1C,IAAWk1C,EAAIzuC,EAAI,EAC1BzG,IAAM,EAGR,OAAOo1C,CACT,EAIAP,EAAK1rC,UAAUksC,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIxuC,EAAI,EAAGA,EAAIwuC,EAAGxuC,IACrBgvC,EAAKhvC,GAAK8uC,EAAID,EAAI7uC,IAClBivC,EAAKjvC,GAAK+uC,EAAIF,EAAI7uC,GAEtB,EAEAouC,EAAK1rC,UAAUwsC,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtEr+C,KAAKo+C,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIhsC,EAAI,EAAGA,EAAIgsC,EAAGhsC,IAAM,EAM3B,IALA,IAAIisC,EAAIjsC,GAAK,EAET2sC,EAAQx4C,KAAKy4C,IAAI,EAAIz4C,KAAK04C,GAAKZ,GAC/Ba,EAAQ34C,KAAK44C,IAAI,EAAI54C,KAAK04C,GAAKZ,GAE1B1vC,EAAI,EAAGA,EAAIyvC,EAAGzvC,GAAK0vC,EAI1B,IAHA,IAAIe,EAASL,EACTM,EAASH,EAEJvvC,EAAI,EAAGA,EAAIyC,EAAGzC,IAAK,CAC1B,IAAI8hC,EAAKmN,EAAKjwC,EAAIgB,GACd2vC,EAAKT,EAAKlwC,EAAIgB,GAEd4vC,EAAKX,EAAKjwC,EAAIgB,EAAIyC,GAClBotC,EAAKX,EAAKlwC,EAAIgB,EAAIyC,GAElBqtC,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELb,EAAKjwC,EAAIgB,GAAK8hC,EAAK8N,EACnBV,EAAKlwC,EAAIgB,GAAK2vC,EAAKE,EAEnBZ,EAAKjwC,EAAIgB,EAAIyC,GAAKq/B,EAAK8N,EACvBV,EAAKlwC,EAAIgB,EAAIyC,GAAKktC,EAAKE,EAGnB7vC,IAAM0uC,IACRoB,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,EAEb,CAGN,EAEAzB,EAAK1rC,UAAUotC,YAAc,SAAsBzwB,EAAGznB,GACpD,IAAI42C,EAAqB,EAAjB73C,KAAK6rB,IAAI5qB,EAAGynB,GAChB0wB,EAAU,EAAJvB,EACNxuC,EAAI,EACR,IAAKwuC,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BxuC,IAGF,OAAO,GAAKA,EAAI,EAAI+vC,CACtB,EAEA3B,EAAK1rC,UAAUstC,UAAY,SAAoBlB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIxuC,EAAI,EAAGA,EAAIwuC,EAAI,EAAGxuC,IAAK,CAC9B,IAAIyC,EAAIqsC,EAAI9uC,GAEZ8uC,EAAI9uC,GAAK8uC,EAAIN,EAAIxuC,EAAI,GACrB8uC,EAAIN,EAAIxuC,EAAI,GAAKyC,EAEjBA,EAAIssC,EAAI/uC,GAER+uC,EAAI/uC,IAAM+uC,EAAIP,EAAIxuC,EAAI,GACtB+uC,EAAIP,EAAIxuC,EAAI,IAAMyC,CACpB,CACF,EAEA2rC,EAAK1rC,UAAUutC,aAAe,SAAuBC,EAAI1B,GAEvD,IADA,IAAIntC,EAAQ,EACHrB,EAAI,EAAGA,EAAIwuC,EAAI,EAAGxuC,IAAK,CAC9B,IAAIykC,EAAoC,KAAhC9tC,KAAKw5C,MAAMD,EAAG,EAAIlwC,EAAI,GAAKwuC,GACjC73C,KAAKw5C,MAAMD,EAAG,EAAIlwC,GAAKwuC,GACvBntC,EAEF6uC,EAAGlwC,GAAS,SAAJykC,EAGNpjC,EADEojC,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAOyL,CACT,EAEA9B,EAAK1rC,UAAU0tC,WAAa,SAAqBF,EAAI/4C,EAAK23C,EAAKN,GAE7D,IADA,IAAIntC,EAAQ,EACHrB,EAAI,EAAGA,EAAI7I,EAAK6I,IACvBqB,GAAyB,EAAR6uC,EAAGlwC,GAEpB8uC,EAAI,EAAI9uC,GAAa,KAARqB,EAAgBA,KAAkB,GAC/CytC,EAAI,EAAI9uC,EAAI,GAAa,KAARqB,EAAgBA,KAAkB,GAIrD,IAAKrB,EAAI,EAAI7I,EAAK6I,EAAIwuC,IAAKxuC,EACzB8uC,EAAI9uC,GAAK,EAGXw6B,EAAiB,IAAVn5B,GACPm5B,EAA6B,MAAb,KAARn5B,GACV,EAEA+sC,EAAK1rC,UAAU2tC,KAAO,SAAe7B,GAEnC,IADA,IAAI8B,EAAK,IAAIzvC,MAAM2tC,GACVxuC,EAAI,EAAGA,EAAIwuC,EAAGxuC,IACrBswC,EAAGtwC,GAAK,EAGV,OAAOswC,CACT,EAEAlC,EAAK1rC,UAAU2rC,KAAO,SAAe90C,EAAGuoB,EAAGsB,GACzC,IAAIorB,EAAI,EAAIh+C,KAAKs/C,YAAYv2C,EAAE/C,OAAQsrB,EAAEtrB,QAErCq4C,EAAMr+C,KAAK+9C,QAAQC,GAEnB+B,EAAI//C,KAAK6/C,KAAK7B,GAEdM,EAAM,IAAIjuC,MAAM2tC,GAChBgC,EAAO,IAAI3vC,MAAM2tC,GACjBiC,EAAO,IAAI5vC,MAAM2tC,GAEjBkC,EAAO,IAAI7vC,MAAM2tC,GACjBmC,EAAQ,IAAI9vC,MAAM2tC,GAClBoC,EAAQ,IAAI/vC,MAAM2tC,GAElBqC,EAAOztB,EAAIugB,MACfkN,EAAKr6C,OAASg4C,EAEdh+C,KAAK4/C,WAAW72C,EAAEoqC,MAAOpqC,EAAE/C,OAAQs4C,EAAKN,GACxCh+C,KAAK4/C,WAAWtuB,EAAE6hB,MAAO7hB,EAAEtrB,OAAQk6C,EAAMlC,GAEzCh+C,KAAK0+C,UAAUJ,EAAKyB,EAAGC,EAAMC,EAAMjC,EAAGK,GACtCr+C,KAAK0+C,UAAUwB,EAAMH,EAAGI,EAAOC,EAAOpC,EAAGK,GAEzC,IAAK,IAAI7uC,EAAI,EAAGA,EAAIwuC,EAAGxuC,IAAK,CAC1B,IAAI6vC,EAAKW,EAAKxwC,GAAK2wC,EAAM3wC,GAAKywC,EAAKzwC,GAAK4wC,EAAM5wC,GAC9CywC,EAAKzwC,GAAKwwC,EAAKxwC,GAAK4wC,EAAM5wC,GAAKywC,EAAKzwC,GAAK2wC,EAAM3wC,GAC/CwwC,EAAKxwC,GAAK6vC,CACZ,CASA,OAPAr/C,KAAKw/C,UAAUQ,EAAMC,EAAMjC,GAC3Bh+C,KAAK0+C,UAAUsB,EAAMC,EAAMI,EAAMN,EAAG/B,EAAGK,GACvCr+C,KAAKw/C,UAAUa,EAAMN,EAAG/B,GACxBh+C,KAAKy/C,aAAaY,EAAMrC,GAExBprB,EAAIsgB,SAAWnqC,EAAEmqC,SAAW5hB,EAAE4hB,SAC9BtgB,EAAI5sB,OAAS+C,EAAE/C,OAASsrB,EAAEtrB,OACnB4sB,EAAIshB,OACb,EAGAnB,EAAG7gC,UAAU+hB,IAAM,SAAcnK,GAC/B,IAAI8I,EAAM,IAAImgB,EAAG,MAEjB,OADAngB,EAAIugB,MAAQ,IAAI9iC,MAAMrQ,KAAKgG,OAAS8jB,EAAI9jB,QACjChG,KAAK89C,MAAMh0B,EAAK8I,EACzB,EAGAmgB,EAAG7gC,UAAUouC,KAAO,SAAex2B,GACjC,IAAI8I,EAAM,IAAImgB,EAAG,MAEjB,OADAngB,EAAIugB,MAAQ,IAAI9iC,MAAMrQ,KAAKgG,OAAS8jB,EAAI9jB,QACjC03C,EAAW19C,KAAM8pB,EAAK8I,EAC/B,EAGAmgB,EAAG7gC,UAAUkqC,KAAO,SAAetyB,GACjC,OAAO9pB,KAAKirC,QAAQ6S,MAAMh0B,EAAK9pB,KACjC,EAEA+yC,EAAG7gC,UAAUuiC,MAAQ,SAAgB3qB,GACnCkgB,EAAsB,kBAARlgB,GACdkgB,EAAOlgB,EAAM,UAIb,IADA,IAAIjZ,EAAQ,EACHrB,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAAK,CACpC,IAAIykC,GAAqB,EAAhBj0C,KAAKmzC,MAAM3jC,IAAUsa,EAC1BqJ,GAAU,SAAJ8gB,IAA0B,SAARpjC,GAC5BA,IAAU,GACVA,GAAUojC,EAAI,SAAa,EAE3BpjC,GAASsiB,IAAO,GAChBnzB,KAAKmzC,MAAM3jC,GAAU,SAAL2jB,CAClB,CAOA,OALc,IAAVtiB,IACF7Q,KAAKmzC,MAAM3jC,GAAKqB,EAChB7Q,KAAKgG,UAGAhG,IACT,EAEA+yC,EAAG7gC,UAAUquC,KAAO,SAAez2B,GACjC,OAAO9pB,KAAKirC,QAAQwJ,MAAM3qB,EAC5B,EAGAipB,EAAG7gC,UAAUsuC,IAAM,WACjB,OAAOxgD,KAAKi0B,IAAIj0B,KAClB,EAGA+yC,EAAG7gC,UAAUuuC,KAAO,WAClB,OAAOzgD,KAAKo8C,KAAKp8C,KAAKirC,QACxB,EAGA8H,EAAG7gC,UAAUkZ,IAAM,SAActB,GAC/B,IAAImqB,EAAIgB,EAAWnrB,GACnB,GAAiB,IAAbmqB,EAAEjuC,OAAc,OAAO,IAAI+sC,EAAG,GAIlC,IADA,IAAIxiB,EAAMvwB,KACDwP,EAAI,EAAGA,EAAIykC,EAAEjuC,OAAQwJ,IAAK+gB,EAAMA,EAAIiwB,MAC3C,GAAa,IAATvM,EAAEzkC,GAAU,MAGlB,KAAMA,EAAIykC,EAAEjuC,OACV,IAAK,IAAIowC,EAAI7lB,EAAIiwB,MAAOhxC,EAAIykC,EAAEjuC,OAAQwJ,IAAK4mC,EAAIA,EAAEoK,MAClC,IAATvM,EAAEzkC,KAEN+gB,EAAMA,EAAI0D,IAAImiB,IAIlB,OAAO7lB,CACT,EAGAwiB,EAAG7gC,UAAUwuC,OAAS,SAAiBC,GACrC3W,EAAuB,kBAAT2W,GAAqBA,GAAQ,GAC3C,IAGInxC,EAHA+P,EAAIohC,EAAO,GACX3uC,GAAK2uC,EAAOphC,GAAK,GACjBqhC,EAAa,WAAe,GAAKrhC,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAI1O,EAAQ,EAEZ,IAAKrB,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAAK,CAChC,IAAIqxC,EAAW7gD,KAAKmzC,MAAM3jC,GAAKoxC,EAC3BjuC,GAAsB,EAAhB3S,KAAKmzC,MAAM3jC,IAAUqxC,GAAathC,EAC5Cvf,KAAKmzC,MAAM3jC,GAAKmD,EAAI9B,EACpBA,EAAQgwC,IAAc,GAAKthC,CAC7B,CAEI1O,IACF7Q,KAAKmzC,MAAM3jC,GAAKqB,EAChB7Q,KAAKgG,SAET,CAEA,GAAU,IAANgM,EAAS,CACX,IAAKxC,EAAIxP,KAAKgG,OAAS,EAAGwJ,GAAK,EAAGA,IAChCxP,KAAKmzC,MAAM3jC,EAAIwC,GAAKhS,KAAKmzC,MAAM3jC,GAGjC,IAAKA,EAAI,EAAGA,EAAIwC,EAAGxC,IACjBxP,KAAKmzC,MAAM3jC,GAAK,EAGlBxP,KAAKgG,QAAUgM,CACjB,CAEA,OAAOhS,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAU4uC,MAAQ,SAAgBH,GAGnC,OADA3W,EAAyB,IAAlBhqC,KAAKkzC,UACLlzC,KAAK0gD,OAAOC,EACrB,EAKA5N,EAAG7gC,UAAUokC,OAAS,SAAiBqK,EAAMI,EAAMC,GAEjD,IAAIC,EADJjX,EAAuB,kBAAT2W,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIxhC,EAAIohC,EAAO,GACX3uC,EAAI7L,KAAKmqB,KAAKqwB,EAAOphC,GAAK,GAAIvf,KAAKgG,QACnCk7C,EAAO,SAAc,WAAc3hC,GAAMA,EACzC4hC,EAAcH,EAMlB,GAJAC,GAAKjvC,EACLivC,EAAI96C,KAAK6rB,IAAI,EAAGivB,GAGZE,EAAa,CACf,IAAK,IAAI3xC,EAAI,EAAGA,EAAIwC,EAAGxC,IACrB2xC,EAAYhO,MAAM3jC,GAAKxP,KAAKmzC,MAAM3jC,GAEpC2xC,EAAYn7C,OAASgM,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIhS,KAAKgG,OAASgM,EAEvB,IADAhS,KAAKgG,QAAUgM,EACVxC,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAC3BxP,KAAKmzC,MAAM3jC,GAAKxP,KAAKmzC,MAAM3jC,EAAIwC,QAGjChS,KAAKmzC,MAAM,GAAK,EAChBnzC,KAAKgG,OAAS,EAGhB,IAAI6K,EAAQ,EACZ,IAAKrB,EAAIxP,KAAKgG,OAAS,EAAGwJ,GAAK,IAAgB,IAAVqB,GAAerB,GAAKyxC,GAAIzxC,IAAK,CAChE,IAAIglC,EAAuB,EAAhBx0C,KAAKmzC,MAAM3jC,GACtBxP,KAAKmzC,MAAM3jC,GAAMqB,GAAU,GAAK0O,EAAOi1B,IAASj1B,EAChD1O,EAAQ2jC,EAAO0M,CACjB,CAYA,OATIC,GAAyB,IAAVtwC,IACjBswC,EAAYhO,MAAMgO,EAAYn7C,UAAY6K,GAGxB,IAAhB7Q,KAAKgG,SACPhG,KAAKmzC,MAAM,GAAK,EAChBnzC,KAAKgG,OAAS,GAGThG,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAUkvC,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAhX,EAAyB,IAAlBhqC,KAAKkzC,UACLlzC,KAAKs2C,OAAOqK,EAAMI,EAAMC,EACjC,EAGAjO,EAAG7gC,UAAUmvC,KAAO,SAAeV,GACjC,OAAO3gD,KAAKirC,QAAQ6V,MAAMH,EAC5B,EAEA5N,EAAG7gC,UAAUovC,MAAQ,SAAgBX,GACnC,OAAO3gD,KAAKirC,QAAQyV,OAAOC,EAC7B,EAGA5N,EAAG7gC,UAAUqvC,KAAO,SAAeZ,GACjC,OAAO3gD,KAAKirC,QAAQmW,MAAMT,EAC5B,EAEA5N,EAAG7gC,UAAUsvC,MAAQ,SAAgBb,GACnC,OAAO3gD,KAAKirC,QAAQqL,OAAOqK,EAC7B,EAGA5N,EAAG7gC,UAAU8kC,MAAQ,SAAgB7B,GACnCnL,EAAsB,kBAARmL,GAAoBA,GAAO,GACzC,IAAI51B,EAAI41B,EAAM,GACVnjC,GAAKmjC,EAAM51B,GAAK,GAChB62B,EAAI,GAAK72B,EAGb,GAAIvf,KAAKgG,QAAUgM,EAAG,OAAO,EAG7B,IAAIiiC,EAAIj0C,KAAKmzC,MAAMnhC,GAEnB,SAAUiiC,EAAImC,EAChB,EAGArD,EAAG7gC,UAAUuvC,OAAS,SAAiBd,GACrC3W,EAAuB,kBAAT2W,GAAqBA,GAAQ,GAC3C,IAAIphC,EAAIohC,EAAO,GACX3uC,GAAK2uC,EAAOphC,GAAK,GAIrB,GAFAyqB,EAAyB,IAAlBhqC,KAAKkzC,SAAgB,2CAExBlzC,KAAKgG,QAAUgM,EACjB,OAAOhS,KAQT,GALU,IAANuf,GACFvN,IAEFhS,KAAKgG,OAASG,KAAKmqB,IAAIte,EAAGhS,KAAKgG,QAErB,IAANuZ,EAAS,CACX,IAAI2hC,EAAO,SAAc,WAAc3hC,GAAMA,EAC7Cvf,KAAKmzC,MAAMnzC,KAAKgG,OAAS,IAAMk7C,CACjC,CAEA,OAAOlhD,KAAKk0C,OACd,EAGAnB,EAAG7gC,UAAUwvC,MAAQ,SAAgBf,GACnC,OAAO3gD,KAAKirC,QAAQwW,OAAOd,EAC7B,EAGA5N,EAAG7gC,UAAU4kC,MAAQ,SAAgBhtB,GAGnC,OAFAkgB,EAAsB,kBAARlgB,GACdkgB,EAAOlgB,EAAM,UACTA,EAAM,EAAU9pB,KAAK2hD,OAAO73B,GAGV,IAAlB9pB,KAAKkzC,SACa,IAAhBlzC,KAAKgG,SAAiC,EAAhBhG,KAAKmzC,MAAM,IAAUrpB,GAC7C9pB,KAAKmzC,MAAM,GAAKrpB,GAAuB,EAAhB9pB,KAAKmzC,MAAM,IAClCnzC,KAAKkzC,SAAW,EACTlzC,OAGTA,KAAKkzC,SAAW,EAChBlzC,KAAK2hD,MAAM73B,GACX9pB,KAAKkzC,SAAW,EACTlzC,MAIFA,KAAK00C,OAAO5qB,EACrB,EAEAipB,EAAG7gC,UAAUwiC,OAAS,SAAiB5qB,GACrC9pB,KAAKmzC,MAAM,IAAMrpB,EAGjB,IAAK,IAAIta,EAAI,EAAGA,EAAIxP,KAAKgG,QAAUhG,KAAKmzC,MAAM3jC,IAAM,SAAWA,IAC7DxP,KAAKmzC,MAAM3jC,IAAM,SACbA,IAAMxP,KAAKgG,OAAS,EACtBhG,KAAKmzC,MAAM3jC,EAAI,GAAK,EAEpBxP,KAAKmzC,MAAM3jC,EAAI,KAKnB,OAFAxP,KAAKgG,OAASG,KAAK6rB,IAAIhyB,KAAKgG,OAAQwJ,EAAI,GAEjCxP,IACT,EAGA+yC,EAAG7gC,UAAUyvC,MAAQ,SAAgB73B,GAGnC,GAFAkgB,EAAsB,kBAARlgB,GACdkgB,EAAOlgB,EAAM,UACTA,EAAM,EAAG,OAAO9pB,KAAK82C,OAAOhtB,GAEhC,GAAsB,IAAlB9pB,KAAKkzC,SAIP,OAHAlzC,KAAKkzC,SAAW,EAChBlzC,KAAK82C,MAAMhtB,GACX9pB,KAAKkzC,SAAW,EACTlzC,KAKT,GAFAA,KAAKmzC,MAAM,IAAMrpB,EAEG,IAAhB9pB,KAAKgG,QAAgBhG,KAAKmzC,MAAM,GAAK,EACvCnzC,KAAKmzC,MAAM,IAAMnzC,KAAKmzC,MAAM,GAC5BnzC,KAAKkzC,SAAW,OAGhB,IAAK,IAAI1jC,EAAI,EAAGA,EAAIxP,KAAKgG,QAAUhG,KAAKmzC,MAAM3jC,GAAK,EAAGA,IACpDxP,KAAKmzC,MAAM3jC,IAAM,SACjBxP,KAAKmzC,MAAM3jC,EAAI,IAAM,EAIzB,OAAOxP,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAU0vC,KAAO,SAAe93B,GACjC,OAAO9pB,KAAKirC,QAAQ6L,MAAMhtB,EAC5B,EAEAipB,EAAG7gC,UAAU2vC,KAAO,SAAe/3B,GACjC,OAAO9pB,KAAKirC,QAAQ0W,MAAM73B,EAC5B,EAEAipB,EAAG7gC,UAAU4vC,KAAO,WAGlB,OAFA9hD,KAAKkzC,SAAW,EAETlzC,IACT,EAEA+yC,EAAG7gC,UAAUoZ,IAAM,WACjB,OAAOtrB,KAAKirC,QAAQ6W,MACtB,EAEA/O,EAAG7gC,UAAU6vC,aAAe,SAAuBj4B,EAAKmK,EAAK9nB,GAC3D,IACIqD,EAIAykC,EALAttC,EAAMmjB,EAAI9jB,OAASmG,EAGvBnM,KAAK40C,QAAQjuC,GAGb,IAAIkK,EAAQ,EACZ,IAAKrB,EAAI,EAAGA,EAAIsa,EAAI9jB,OAAQwJ,IAAK,CAC/BykC,GAA6B,EAAxBj0C,KAAKmzC,MAAM3jC,EAAIrD,IAAc0E,EAClC,IAAI6iC,GAAwB,EAAf5pB,EAAIqpB,MAAM3jC,IAAUykB,EACjCggB,GAAa,SAARP,EACL7iC,GAASojC,GAAK,KAAQP,EAAQ,SAAa,GAC3C1zC,KAAKmzC,MAAM3jC,EAAIrD,GAAa,SAAJ8nC,CAC1B,CACA,KAAOzkC,EAAIxP,KAAKgG,OAASmG,EAAOqD,IAC9BykC,GAA6B,EAAxBj0C,KAAKmzC,MAAM3jC,EAAIrD,IAAc0E,EAClCA,EAAQojC,GAAK,GACbj0C,KAAKmzC,MAAM3jC,EAAIrD,GAAa,SAAJ8nC,EAG1B,GAAc,IAAVpjC,EAAa,OAAO7Q,KAAKk0C,QAK7B,IAFAlK,GAAkB,IAAXn5B,GACPA,EAAQ,EACHrB,EAAI,EAAGA,EAAIxP,KAAKgG,OAAQwJ,IAC3BykC,IAAsB,EAAhBj0C,KAAKmzC,MAAM3jC,IAAUqB,EAC3BA,EAAQojC,GAAK,GACbj0C,KAAKmzC,MAAM3jC,GAAS,SAAJykC,EAIlB,OAFAj0C,KAAKkzC,SAAW,EAETlzC,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAU8vC,SAAW,SAAmBl4B,EAAKm4B,GAC9C,IAAI91C,EAAQnM,KAAKgG,OAAS8jB,EAAI9jB,OAE1Bic,EAAIjiB,KAAKirC,QACT/oB,EAAI4H,EAGJo4B,EAA8B,EAAxBhgC,EAAEixB,MAAMjxB,EAAElc,OAAS,GACzBm8C,EAAUniD,KAAKw2C,WAAW0L,GAC9B/1C,EAAQ,GAAKg2C,EACC,IAAVh2C,IACF+V,EAAIA,EAAEo/B,MAAMn1C,GACZ8V,EAAEy+B,OAAOv0C,GACT+1C,EAA8B,EAAxBhgC,EAAEixB,MAAMjxB,EAAElc,OAAS,IAI3B,IACIowC,EADAhvC,EAAI6a,EAAEjc,OAASkc,EAAElc,OAGrB,GAAa,QAATi8C,EAAgB,CAClB7L,EAAI,IAAIrD,EAAG,MACXqD,EAAEpwC,OAASoB,EAAI,EACfgvC,EAAEjD,MAAQ,IAAI9iC,MAAM+lC,EAAEpwC,QACtB,IAAK,IAAIwJ,EAAI,EAAGA,EAAI4mC,EAAEpwC,OAAQwJ,IAC5B4mC,EAAEjD,MAAM3jC,GAAK,CAEjB,CAEA,IAAI4yC,EAAOngC,EAAEgpB,QAAQ8W,aAAa7/B,EAAG,EAAG9a,GAClB,IAAlBg7C,EAAKlP,WACPjxB,EAAImgC,EACAhM,IACFA,EAAEjD,MAAM/rC,GAAK,IAIjB,IAAK,IAAImI,EAAInI,EAAI,EAAGmI,GAAK,EAAGA,IAAK,CAC/B,IAAI8yC,EAAmC,UAAL,EAAxBpgC,EAAEkxB,MAAMjxB,EAAElc,OAASuJ,KACE,EAA5B0S,EAAEkxB,MAAMjxB,EAAElc,OAASuJ,EAAI,IAI1B8yC,EAAKl8C,KAAKmqB,IAAK+xB,EAAKH,EAAO,EAAG,UAE9BjgC,EAAE8/B,aAAa7/B,EAAGmgC,EAAI9yC,GACtB,MAAsB,IAAf0S,EAAEixB,SACPmP,IACApgC,EAAEixB,SAAW,EACbjxB,EAAE8/B,aAAa7/B,EAAG,EAAG3S,GAChB0S,EAAE2zB,WACL3zB,EAAEixB,UAAY,GAGdkD,IACFA,EAAEjD,MAAM5jC,GAAK8yC,EAEjB,CAWA,OAVIjM,GACFA,EAAElC,QAEJjyB,EAAEiyB,QAGW,QAAT+N,GAA4B,IAAV91C,GACpB8V,EAAEq0B,OAAOnqC,GAGJ,CACLm2C,IAAKlM,GAAK,KACV7B,IAAKtyB,EAET,EAMA8wB,EAAG7gC,UAAUqwC,OAAS,SAAiBz4B,EAAKm4B,EAAMO,GAGhD,OAFAxY,GAAQlgB,EAAI8rB,UAER51C,KAAK41C,SACA,CACL0M,IAAK,IAAIvP,EAAG,GACZwB,IAAK,IAAIxB,EAAG,IAKM,IAAlB/yC,KAAKkzC,UAAmC,IAAjBppB,EAAIopB,UAC7B3iB,EAAMvwB,KAAKo3C,MAAMmL,OAAOz4B,EAAKm4B,GAEhB,QAATA,IACFK,EAAM/xB,EAAI+xB,IAAIlL,OAGH,QAAT6K,IACF1N,EAAMhkB,EAAIgkB,IAAI6C,MACVoL,GAA6B,IAAjBjO,EAAIrB,UAClBqB,EAAI6D,KAAKtuB,IAIN,CACLw4B,IAAKA,EACL/N,IAAKA,IAIa,IAAlBv0C,KAAKkzC,UAAmC,IAAjBppB,EAAIopB,UAC7B3iB,EAAMvwB,KAAKuiD,OAAOz4B,EAAIstB,MAAO6K,GAEhB,QAATA,IACFK,EAAM/xB,EAAI+xB,IAAIlL,OAGT,CACLkL,IAAKA,EACL/N,IAAKhkB,EAAIgkB,MAI0B,KAAlCv0C,KAAKkzC,SAAWppB,EAAIopB,WACvB3iB,EAAMvwB,KAAKo3C,MAAMmL,OAAOz4B,EAAIstB,MAAO6K,GAEtB,QAATA,IACF1N,EAAMhkB,EAAIgkB,IAAI6C,MACVoL,GAA6B,IAAjBjO,EAAIrB,UAClBqB,EAAI8D,KAAKvuB,IAIN,CACLw4B,IAAK/xB,EAAI+xB,IACT/N,IAAKA,IAOLzqB,EAAI9jB,OAAShG,KAAKgG,QAAUhG,KAAK2zC,IAAI7pB,GAAO,EACvC,CACLw4B,IAAK,IAAIvP,EAAG,GACZwB,IAAKv0C,MAKU,IAAf8pB,EAAI9jB,OACO,QAATi8C,EACK,CACLK,IAAKtiD,KAAKyiD,KAAK34B,EAAIqpB,MAAM,IACzBoB,IAAK,MAII,QAAT0N,EACK,CACLK,IAAK,KACL/N,IAAK,IAAIxB,EAAG/yC,KAAK61C,KAAK/rB,EAAIqpB,MAAM,MAI7B,CACLmP,IAAKtiD,KAAKyiD,KAAK34B,EAAIqpB,MAAM,IACzBoB,IAAK,IAAIxB,EAAG/yC,KAAK61C,KAAK/rB,EAAIqpB,MAAM,MAI7BnzC,KAAKgiD,SAASl4B,EAAKm4B,GAlF1B,IAAIK,EAAK/N,EAAKhkB,CAmFhB,EAGAwiB,EAAG7gC,UAAUowC,IAAM,SAAcx4B,GAC/B,OAAO9pB,KAAKuiD,OAAOz4B,EAAK,OAAO,GAAOw4B,GACxC,EAGAvP,EAAG7gC,UAAUqiC,IAAM,SAAczqB,GAC/B,OAAO9pB,KAAKuiD,OAAOz4B,EAAK,OAAO,GAAOyqB,GACxC,EAEAxB,EAAG7gC,UAAUwwC,KAAO,SAAe54B,GACjC,OAAO9pB,KAAKuiD,OAAOz4B,EAAK,OAAO,GAAMyqB,GACvC,EAGAxB,EAAG7gC,UAAUywC,SAAW,SAAmB74B,GACzC,IAAI84B,EAAK5iD,KAAKuiD,OAAOz4B,GAGrB,GAAI84B,EAAGrO,IAAIqB,SAAU,OAAOgN,EAAGN,IAE/B,IAAI/N,EAA0B,IAApBqO,EAAGN,IAAIpP,SAAiB0P,EAAGrO,IAAI8D,KAAKvuB,GAAO84B,EAAGrO,IAEpDsO,EAAO/4B,EAAI03B,MAAM,GACjBsB,EAAKh5B,EAAIusB,MAAM,GACf1C,EAAMY,EAAIZ,IAAIkP,GAGlB,OAAIlP,EAAM,GAAY,IAAPmP,GAAoB,IAARnP,EAAkBiP,EAAGN,IAGrB,IAApBM,EAAGN,IAAIpP,SAAiB0P,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIxL,MAAM,EAChE,EAEA/D,EAAG7gC,UAAU2jC,KAAO,SAAe/rB,GACjCkgB,EAAOlgB,GAAO,UAId,IAHA,IAAIvb,GAAK,GAAK,IAAMub,EAEhBi5B,EAAM,EACDvzC,EAAIxP,KAAKgG,OAAS,EAAGwJ,GAAK,EAAGA,IACpCuzC,GAAOx0C,EAAIw0C,GAAuB,EAAhB/iD,KAAKmzC,MAAM3jC,KAAWsa,EAG1C,OAAOi5B,CACT,EAGAhQ,EAAG7gC,UAAU4jC,MAAQ,SAAgBhsB,GACnCkgB,EAAOlgB,GAAO,UAGd,IADA,IAAIjZ,EAAQ,EACHrB,EAAIxP,KAAKgG,OAAS,EAAGwJ,GAAK,EAAGA,IAAK,CACzC,IAAIykC,GAAqB,EAAhBj0C,KAAKmzC,MAAM3jC,IAAkB,SAARqB,EAC9B7Q,KAAKmzC,MAAM3jC,GAAMykC,EAAInqB,EAAO,EAC5BjZ,EAAQojC,EAAInqB,CACd,CAEA,OAAO9pB,KAAKk0C,OACd,EAEAnB,EAAG7gC,UAAUuwC,KAAO,SAAe34B,GACjC,OAAO9pB,KAAKirC,QAAQ6K,MAAMhsB,EAC5B,EAEAipB,EAAG7gC,UAAU8wC,KAAO,SAAez0C,GACjCy7B,EAAsB,IAAfz7B,EAAE2kC,UACTlJ,GAAQz7B,EAAEqnC,UAEV,IAAI7sC,EAAI/I,KACJsxB,EAAI/iB,EAAE08B,QAGRliC,EADiB,IAAfA,EAAEmqC,SACAnqC,EAAE25C,KAAKn0C,GAEPxF,EAAEkiC,QAIR,IAAIgY,EAAI,IAAIlQ,EAAG,GACXmQ,EAAI,IAAInQ,EAAG,GAGXoQ,EAAI,IAAIpQ,EAAG,GACXqQ,EAAI,IAAIrQ,EAAG,GAEXsQ,EAAI,EAER,MAAOt6C,EAAEu6C,UAAYhyB,EAAEgyB,SACrBv6C,EAAEutC,OAAO,GACThlB,EAAEglB,OAAO,KACP+M,EAGJ,IAAIE,EAAKjyB,EAAE2Z,QACPuY,EAAKz6C,EAAEkiC,QAEX,OAAQliC,EAAE6sC,SAAU,CAClB,IAAK,IAAIpmC,EAAI,EAAGi0C,EAAK,EAAyB,KAArB16C,EAAEoqC,MAAM,GAAKsQ,IAAaj0C,EAAI,KAAMA,EAAGi0C,IAAO,GACvE,GAAIj0C,EAAI,EAAG,CACTzG,EAAEutC,OAAO9mC,GACT,MAAOA,KAAM,GACPyzC,EAAES,SAAWR,EAAEQ,WACjBT,EAAE7K,KAAKmL,GACPL,EAAE7K,KAAKmL,IAGTP,EAAE3M,OAAO,GACT4M,EAAE5M,OAAO,EAEb,CAEA,IAAK,IAAI/mC,EAAI,EAAGo0C,EAAK,EAAyB,KAArBryB,EAAE6hB,MAAM,GAAKwQ,IAAap0C,EAAI,KAAMA,EAAGo0C,IAAO,GACvE,GAAIp0C,EAAI,EAAG,CACT+hB,EAAEglB,OAAO/mC,GACT,MAAOA,KAAM,GACP4zC,EAAEO,SAAWN,EAAEM,WACjBP,EAAE/K,KAAKmL,GACPH,EAAE/K,KAAKmL,IAGTL,EAAE7M,OAAO,GACT8M,EAAE9M,OAAO,EAEb,CAEIvtC,EAAE4qC,IAAIriB,IAAM,GACdvoB,EAAEsvC,KAAK/mB,GACP2xB,EAAE5K,KAAK8K,GACPD,EAAE7K,KAAK+K,KAEP9xB,EAAE+mB,KAAKtvC,GACPo6C,EAAE9K,KAAK4K,GACPG,EAAE/K,KAAK6K,GAEX,CAEA,MAAO,CACLjhC,EAAGkhC,EACHjhC,EAAGkhC,EACHQ,IAAKtyB,EAAEovB,OAAO2C,GAElB,EAKAtQ,EAAG7gC,UAAU2xC,OAAS,SAAiBt1C,GACrCy7B,EAAsB,IAAfz7B,EAAE2kC,UACTlJ,GAAQz7B,EAAEqnC,UAEV,IAAI3zB,EAAIjiB,KACJkiB,EAAI3T,EAAE08B,QAGRhpB,EADiB,IAAfA,EAAEixB,SACAjxB,EAAEygC,KAAKn0C,GAEP0T,EAAEgpB,QAGR,IAuCI1a,EAvCAuzB,EAAK,IAAI/Q,EAAG,GACZgR,EAAK,IAAIhR,EAAG,GAEZiR,EAAQ9hC,EAAE+oB,QAEd,MAAOhpB,EAAEgiC,KAAK,GAAK,GAAK/hC,EAAE+hC,KAAK,GAAK,EAAG,CACrC,IAAK,IAAIz0C,EAAI,EAAGi0C,EAAK,EAAyB,KAArBxhC,EAAEkxB,MAAM,GAAKsQ,IAAaj0C,EAAI,KAAMA,EAAGi0C,IAAO,GACvE,GAAIj0C,EAAI,EAAG,CACTyS,EAAEq0B,OAAO9mC,GACT,MAAOA,KAAM,EACPs0C,EAAGJ,SACLI,EAAG1L,KAAK4L,GAGVF,EAAGxN,OAAO,EAEd,CAEA,IAAK,IAAI/mC,EAAI,EAAGo0C,EAAK,EAAyB,KAArBzhC,EAAEixB,MAAM,GAAKwQ,IAAap0C,EAAI,KAAMA,EAAGo0C,IAAO,GACvE,GAAIp0C,EAAI,EAAG,CACT2S,EAAEo0B,OAAO/mC,GACT,MAAOA,KAAM,EACPw0C,EAAGL,SACLK,EAAG3L,KAAK4L,GAGVD,EAAGzN,OAAO,EAEd,CAEIr0B,EAAE0xB,IAAIzxB,IAAM,GACdD,EAAEo2B,KAAKn2B,GACP4hC,EAAGzL,KAAK0L,KAER7hC,EAAEm2B,KAAKp2B,GACP8hC,EAAG1L,KAAKyL,GAEZ,CAaA,OATEvzB,EADgB,IAAdtO,EAAEgiC,KAAK,GACHH,EAEAC,EAGJxzB,EAAI0zB,KAAK,GAAK,GAChB1zB,EAAI6nB,KAAK7pC,GAGJgiB,CACT,EAEAwiB,EAAG7gC,UAAU0xC,IAAM,SAAc95B,GAC/B,GAAI9pB,KAAK41C,SAAU,OAAO9rB,EAAIwB,MAC9B,GAAIxB,EAAI8rB,SAAU,OAAO51C,KAAKsrB,MAE9B,IAAIrJ,EAAIjiB,KAAKirC,QACT/oB,EAAI4H,EAAImhB,QACZhpB,EAAEixB,SAAW,EACbhxB,EAAEgxB,SAAW,EAGb,IAAK,IAAI/mC,EAAQ,EAAG8V,EAAEqhC,UAAYphC,EAAEohC,SAAUn3C,IAC5C8V,EAAEq0B,OAAO,GACTp0B,EAAEo0B,OAAO,GAGX,EAAG,CACD,MAAOr0B,EAAEqhC,SACPrhC,EAAEq0B,OAAO,GAEX,MAAOp0B,EAAEohC,SACPphC,EAAEo0B,OAAO,GAGX,IAAI/2B,EAAI0C,EAAE0xB,IAAIzxB,GACd,GAAI3C,EAAI,EAAG,CAET,IAAItN,EAAIgQ,EACRA,EAAIC,EACJA,EAAIjQ,CACN,MAAO,GAAU,IAANsN,GAAyB,IAAd2C,EAAE+hC,KAAK,GAC3B,MAGFhiC,EAAEo2B,KAAKn2B,EACT,OAAS,GAET,OAAOA,EAAEw+B,OAAOv0C,EAClB,EAGA4mC,EAAG7gC,UAAUgyC,KAAO,SAAep6B,GACjC,OAAO9pB,KAAKgjD,KAAKl5B,GAAK7H,EAAEygC,KAAK54B,EAC/B,EAEAipB,EAAG7gC,UAAUoxC,OAAS,WACpB,OAA+B,KAAP,EAAhBtjD,KAAKmzC,MAAM,GACrB,EAEAJ,EAAG7gC,UAAUwxC,MAAQ,WACnB,OAA+B,KAAP,EAAhB1jD,KAAKmzC,MAAM,GACrB,EAGAJ,EAAG7gC,UAAUmkC,MAAQ,SAAgBvsB,GACnC,OAAO9pB,KAAKmzC,MAAM,GAAKrpB,CACzB,EAGAipB,EAAG7gC,UAAUiyC,MAAQ,SAAgBhP,GACnCnL,EAAsB,kBAARmL,GACd,IAAI51B,EAAI41B,EAAM,GACVnjC,GAAKmjC,EAAM51B,GAAK,GAChB62B,EAAI,GAAK72B,EAGb,GAAIvf,KAAKgG,QAAUgM,EAGjB,OAFAhS,KAAK40C,QAAQ5iC,EAAI,GACjBhS,KAAKmzC,MAAMnhC,IAAMokC,EACVp2C,KAKT,IADA,IAAI6Q,EAAQulC,EACH5mC,EAAIwC,EAAa,IAAVnB,GAAerB,EAAIxP,KAAKgG,OAAQwJ,IAAK,CACnD,IAAIykC,EAAoB,EAAhBj0C,KAAKmzC,MAAM3jC,GACnBykC,GAAKpjC,EACLA,EAAQojC,IAAM,GACdA,GAAK,SACLj0C,KAAKmzC,MAAM3jC,GAAKykC,CAClB,CAKA,OAJc,IAAVpjC,IACF7Q,KAAKmzC,MAAM3jC,GAAKqB,EAChB7Q,KAAKgG,UAEAhG,IACT,EAEA+yC,EAAG7gC,UAAU0jC,OAAS,WACpB,OAAuB,IAAhB51C,KAAKgG,QAAkC,IAAlBhG,KAAKmzC,MAAM,EACzC,EAEAJ,EAAG7gC,UAAU+xC,KAAO,SAAen6B,GACjC,IAOIyG,EAPA2iB,EAAWppB,EAAM,EAErB,GAAsB,IAAlB9pB,KAAKkzC,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBlzC,KAAKkzC,UAAkBA,EAAU,OAAO,EAK5C,GAHAlzC,KAAKk0C,QAGDl0C,KAAKgG,OAAS,EAChBuqB,EAAM,MACD,CACD2iB,IACFppB,GAAOA,GAGTkgB,EAAOlgB,GAAO,SAAW,qBAEzB,IAAImqB,EAAoB,EAAhBj0C,KAAKmzC,MAAM,GACnB5iB,EAAM0jB,IAAMnqB,EAAM,EAAImqB,EAAInqB,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlB9pB,KAAKkzC,SAA8B,GAAN3iB,EAC1BA,CACT,EAMAwiB,EAAG7gC,UAAUyhC,IAAM,SAAc7pB,GAC/B,GAAsB,IAAlB9pB,KAAKkzC,UAAmC,IAAjBppB,EAAIopB,SAAgB,OAAQ,EACvD,GAAsB,IAAlBlzC,KAAKkzC,UAAmC,IAAjBppB,EAAIopB,SAAgB,OAAO,EAEtD,IAAI3iB,EAAMvwB,KAAKokD,KAAKt6B,GACpB,OAAsB,IAAlB9pB,KAAKkzC,SAA8B,GAAN3iB,EAC1BA,CACT,EAGAwiB,EAAG7gC,UAAUkyC,KAAO,SAAet6B,GAEjC,GAAI9pB,KAAKgG,OAAS8jB,EAAI9jB,OAAQ,OAAO,EACrC,GAAIhG,KAAKgG,OAAS8jB,EAAI9jB,OAAQ,OAAQ,EAGtC,IADA,IAAIuqB,EAAM,EACD/gB,EAAIxP,KAAKgG,OAAS,EAAGwJ,GAAK,EAAGA,IAAK,CACzC,IAAIyS,EAAoB,EAAhBjiB,KAAKmzC,MAAM3jC,GACf0S,EAAmB,EAAf4H,EAAIqpB,MAAM3jC,GAElB,GAAIyS,IAAMC,EAAV,CACID,EAAIC,EACNqO,GAAO,EACEtO,EAAIC,IACbqO,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAwiB,EAAG7gC,UAAUmyC,IAAM,SAAcv6B,GAC/B,OAA0B,IAAnB9pB,KAAKikD,KAAKn6B,EACnB,EAEAipB,EAAG7gC,UAAUoyC,GAAK,SAAax6B,GAC7B,OAAyB,IAAlB9pB,KAAK2zC,IAAI7pB,EAClB,EAEAipB,EAAG7gC,UAAUqyC,KAAO,SAAez6B,GACjC,OAAO9pB,KAAKikD,KAAKn6B,IAAQ,CAC3B,EAEAipB,EAAG7gC,UAAUsyC,IAAM,SAAc16B,GAC/B,OAAO9pB,KAAK2zC,IAAI7pB,IAAQ,CAC1B,EAEAipB,EAAG7gC,UAAUuyC,IAAM,SAAc36B,GAC/B,OAA2B,IAApB9pB,KAAKikD,KAAKn6B,EACnB,EAEAipB,EAAG7gC,UAAUwyC,GAAK,SAAa56B,GAC7B,OAA0B,IAAnB9pB,KAAK2zC,IAAI7pB,EAClB,EAEAipB,EAAG7gC,UAAUyyC,KAAO,SAAe76B,GACjC,OAAO9pB,KAAKikD,KAAKn6B,IAAQ,CAC3B,EAEAipB,EAAG7gC,UAAU0yC,IAAM,SAAc96B,GAC/B,OAAO9pB,KAAK2zC,IAAI7pB,IAAQ,CAC1B,EAEAipB,EAAG7gC,UAAU2yC,IAAM,SAAc/6B,GAC/B,OAA0B,IAAnB9pB,KAAKikD,KAAKn6B,EACnB,EAEAipB,EAAG7gC,UAAU4yC,GAAK,SAAah7B,GAC7B,OAAyB,IAAlB9pB,KAAK2zC,IAAI7pB,EAClB,EAMAipB,EAAG9M,IAAM,SAAcnc,GACrB,OAAO,IAAIi7B,EAAIj7B,EACjB,EAEAipB,EAAG7gC,UAAU8yC,MAAQ,SAAgBC,GAGnC,OAFAjb,GAAQhqC,KAAKimC,IAAK,yCAClB+D,EAAyB,IAAlBhqC,KAAKkzC,SAAgB,iCACrB+R,EAAIC,UAAUllD,MAAMmlD,UAAUF,EACvC,EAEAlS,EAAG7gC,UAAUkzC,QAAU,WAErB,OADApb,EAAOhqC,KAAKimC,IAAK,wDACVjmC,KAAKimC,IAAIof,YAAYrlD,KAC9B,EAEA+yC,EAAG7gC,UAAUizC,UAAY,SAAoBF,GAE3C,OADAjlD,KAAKimC,IAAMgf,EACJjlD,IACT,EAEA+yC,EAAG7gC,UAAUozC,SAAW,SAAmBL,GAEzC,OADAjb,GAAQhqC,KAAKimC,IAAK,yCACXjmC,KAAKmlD,UAAUF,EACxB,EAEAlS,EAAG7gC,UAAUqzC,OAAS,SAAiBz7B,GAErC,OADAkgB,EAAOhqC,KAAKimC,IAAK,sCACVjmC,KAAKimC,IAAI9J,IAAIn8B,KAAM8pB,EAC5B,EAEAipB,EAAG7gC,UAAUszC,QAAU,SAAkB17B,GAEvC,OADAkgB,EAAOhqC,KAAKimC,IAAK,uCACVjmC,KAAKimC,IAAImS,KAAKp4C,KAAM8pB,EAC7B,EAEAipB,EAAG7gC,UAAUuzC,OAAS,SAAiB37B,GAErC,OADAkgB,EAAOhqC,KAAKimC,IAAK,sCACVjmC,KAAKimC,IAAI7O,IAAIp3B,KAAM8pB,EAC5B,EAEAipB,EAAG7gC,UAAUwzC,QAAU,SAAkB57B,GAEvC,OADAkgB,EAAOhqC,KAAKimC,IAAK,uCACVjmC,KAAKimC,IAAIoS,KAAKr4C,KAAM8pB,EAC7B,EAEAipB,EAAG7gC,UAAUyzC,OAAS,SAAiB77B,GAErC,OADAkgB,EAAOhqC,KAAKimC,IAAK,sCACVjmC,KAAKimC,IAAI2f,IAAI5lD,KAAM8pB,EAC5B,EAEAipB,EAAG7gC,UAAU2zC,OAAS,SAAiB/7B,GAGrC,OAFAkgB,EAAOhqC,KAAKimC,IAAK,sCACjBjmC,KAAKimC,IAAI6f,SAAS9lD,KAAM8pB,GACjB9pB,KAAKimC,IAAIhS,IAAIj0B,KAAM8pB,EAC5B,EAEAipB,EAAG7gC,UAAU6zC,QAAU,SAAkBj8B,GAGvC,OAFAkgB,EAAOhqC,KAAKimC,IAAK,sCACjBjmC,KAAKimC,IAAI6f,SAAS9lD,KAAM8pB,GACjB9pB,KAAKimC,IAAImW,KAAKp8C,KAAM8pB,EAC7B,EAEAipB,EAAG7gC,UAAU8zC,OAAS,WAGpB,OAFAhc,EAAOhqC,KAAKimC,IAAK,sCACjBjmC,KAAKimC,IAAIggB,SAASjmD,MACXA,KAAKimC,IAAIua,IAAIxgD,KACtB,EAEA+yC,EAAG7gC,UAAUg0C,QAAU,WAGrB,OAFAlc,EAAOhqC,KAAKimC,IAAK,uCACjBjmC,KAAKimC,IAAIggB,SAASjmD,MACXA,KAAKimC,IAAIwa,KAAKzgD,KACvB,EAGA+yC,EAAG7gC,UAAUi0C,QAAU,WAGrB,OAFAnc,EAAOhqC,KAAKimC,IAAK,uCACjBjmC,KAAKimC,IAAIggB,SAASjmD,MACXA,KAAKimC,IAAImgB,KAAKpmD,KACvB,EAEA+yC,EAAG7gC,UAAUm0C,QAAU,WAGrB,OAFArc,EAAOhqC,KAAKimC,IAAK,uCACjBjmC,KAAKimC,IAAIggB,SAASjmD,MACXA,KAAKimC,IAAIie,KAAKlkD,KACvB,EAGA+yC,EAAG7gC,UAAUo0C,OAAS,WAGpB,OAFAtc,EAAOhqC,KAAKimC,IAAK,sCACjBjmC,KAAKimC,IAAIggB,SAASjmD,MACXA,KAAKimC,IAAImR,IAAIp3C,KACtB,EAEA+yC,EAAG7gC,UAAUq0C,OAAS,SAAiBz8B,GAGrC,OAFAkgB,EAAOhqC,KAAKimC,MAAQnc,EAAImc,IAAK,qBAC7BjmC,KAAKimC,IAAIggB,SAASjmD,MACXA,KAAKimC,IAAI7a,IAAIprB,KAAM8pB,EAC5B,EAGA,IAAI08B,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQ7nD,EAAMuP,GAErBvO,KAAKhB,KAAOA,EACZgB,KAAKuO,EAAI,IAAIwkC,EAAGxkC,EAAG,IACnBvO,KAAK6uB,EAAI7uB,KAAKuO,EAAE2mC,YAChBl1C,KAAK8nC,EAAI,IAAIiL,EAAG,GAAG2N,OAAO1gD,KAAK6uB,GAAGwpB,KAAKr4C,KAAKuO,GAE5CvO,KAAK0pB,IAAM1pB,KAAK8mD,MAClB,CAgDA,SAASC,IACPF,EAAOniD,KACL1E,KACA,OACA,0EACJ,CA8DA,SAASgnD,IACPH,EAAOniD,KACL1E,KACA,OACA,iEACJ,CAGA,SAASinD,IACPJ,EAAOniD,KACL1E,KACA,OACA,wDACJ,CAGA,SAASknD,IAEPL,EAAOniD,KACL1E,KACA,QACA,sEACJ,CA6CA,SAAS+kD,EAAK39C,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI+/C,EAAQpU,EAAGqU,OAAOhgD,GACtBpH,KAAKoH,EAAI+/C,EAAM54C,EACfvO,KAAKmnD,MAAQA,CACf,MACEnd,EAAO5iC,EAAEi9C,IAAI,GAAI,kCACjBrkD,KAAKoH,EAAIA,EACTpH,KAAKmnD,MAAQ,IAEjB,CAgOA,SAASE,EAAMjgD,GACb29C,EAAIrgD,KAAK1E,KAAMoH,GAEfpH,KAAKmM,MAAQnM,KAAKoH,EAAE8tC,YAChBl1C,KAAKmM,MAAQ,KAAO,IACtBnM,KAAKmM,OAAS,GAAMnM,KAAKmM,MAAQ,IAGnCnM,KAAKuf,EAAI,IAAIwzB,EAAG,GAAG2N,OAAO1gD,KAAKmM,OAC/BnM,KAAK8iD,GAAK9iD,KAAKsnD,KAAKtnD,KAAKuf,EAAEihC,OAC3BxgD,KAAKunD,KAAOvnD,KAAKuf,EAAEskC,OAAO7jD,KAAKoH,GAE/BpH,KAAKwnD,KAAOxnD,KAAKunD,KAAKtzB,IAAIj0B,KAAKuf,GAAGoiC,MAAM,GAAGW,IAAItiD,KAAKoH,GACpDpH,KAAKwnD,KAAOxnD,KAAKwnD,KAAK9E,KAAK1iD,KAAKuf,GAChCvf,KAAKwnD,KAAOxnD,KAAKuf,EAAE6X,IAAIp3B,KAAKwnD,KAC9B,CA7aAX,EAAO30C,UAAU40C,KAAO,WACtB,IAAIp9B,EAAM,IAAIqpB,EAAG,MAEjB,OADArpB,EAAIypB,MAAQ,IAAI9iC,MAAMlK,KAAK6tC,KAAKh0C,KAAK6uB,EAAI,KAClCnF,CACT,EAEAm9B,EAAO30C,UAAUu1C,QAAU,SAAkB39B,GAG3C,IACI49B,EADAnoC,EAAIuK,EAGR,GACE9pB,KAAKwH,MAAM+X,EAAGvf,KAAK0pB,KACnBnK,EAAIvf,KAAK2nD,MAAMpoC,GACfA,EAAIA,EAAE64B,KAAKp4C,KAAK0pB,KAChBg+B,EAAOnoC,EAAE21B,kBACFwS,EAAO1nD,KAAK6uB,GAErB,IAAI8kB,EAAM+T,EAAO1nD,KAAK6uB,GAAK,EAAItP,EAAE6kC,KAAKpkD,KAAKuO,GAgB3C,OAfY,IAARolC,GACFp0B,EAAE4zB,MAAM,GAAK,EACb5zB,EAAEvZ,OAAS,GACF2tC,EAAM,EACfp0B,EAAE84B,KAAKr4C,KAAKuO,QAEIi/B,IAAZjuB,EAAE20B,MAEJ30B,EAAE20B,QAGF30B,EAAEqoC,SAICroC,CACT,EAEAsnC,EAAO30C,UAAU1K,MAAQ,SAAgBuxB,EAAOnG,GAC9CmG,EAAMud,OAAOt2C,KAAK6uB,EAAG,EAAG+D,EAC1B,EAEAi0B,EAAO30C,UAAUy1C,MAAQ,SAAgB79B,GACvC,OAAOA,EAAIsyB,KAAKp8C,KAAK8nC,EACvB,EAQAS,EAASwe,EAAMF,GAEfE,EAAK70C,UAAU1K,MAAQ,SAAgBuxB,EAAO5O,GAK5C,IAHA,IAAI+2B,EAAO,QAEP2G,EAAS1hD,KAAKmqB,IAAIyI,EAAM/yB,OAAQ,GAC3BwJ,EAAI,EAAGA,EAAIq4C,EAAQr4C,IAC1B2a,EAAOgpB,MAAM3jC,GAAKupB,EAAMoa,MAAM3jC,GAIhC,GAFA2a,EAAOnkB,OAAS6hD,EAEZ9uB,EAAM/yB,QAAU,EAGlB,OAFA+yB,EAAMoa,MAAM,GAAK,OACjBpa,EAAM/yB,OAAS,GAKjB,IAAI0oC,EAAO3V,EAAMoa,MAAM,GAGvB,IAFAhpB,EAAOgpB,MAAMhpB,EAAOnkB,UAAY0oC,EAAOwS,EAElC1xC,EAAI,GAAIA,EAAIupB,EAAM/yB,OAAQwJ,IAAK,CAClC,IAAIxO,EAAwB,EAAjB+3B,EAAMoa,MAAM3jC,GACvBupB,EAAMoa,MAAM3jC,EAAI,KAAQxO,EAAOkgD,IAAS,EAAMxS,IAAS,GACvDA,EAAO1tC,CACT,CACA0tC,KAAU,GACV3V,EAAMoa,MAAM3jC,EAAI,IAAMk/B,EACT,IAATA,GAAc3V,EAAM/yB,OAAS,GAC/B+yB,EAAM/yB,QAAU,GAEhB+yB,EAAM/yB,QAAU,CAEpB,EAEA+gD,EAAK70C,UAAUy1C,MAAQ,SAAgB79B,GAErCA,EAAIqpB,MAAMrpB,EAAI9jB,QAAU,EACxB8jB,EAAIqpB,MAAMrpB,EAAI9jB,OAAS,GAAK,EAC5B8jB,EAAI9jB,QAAU,EAId,IADA,IAAImtB,EAAK,EACA3jB,EAAI,EAAGA,EAAIsa,EAAI9jB,OAAQwJ,IAAK,CACnC,IAAIykC,EAAmB,EAAfnqB,EAAIqpB,MAAM3jC,GAClB2jB,GAAU,IAAJ8gB,EACNnqB,EAAIqpB,MAAM3jC,GAAU,SAAL2jB,EACfA,EAAS,GAAJ8gB,GAAa9gB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BrJ,EAAIqpB,MAAMrpB,EAAI9jB,OAAS,KACzB8jB,EAAI9jB,SAC8B,IAA9B8jB,EAAIqpB,MAAMrpB,EAAI9jB,OAAS,IACzB8jB,EAAI9jB,UAGD8jB,CACT,EAQAye,EAASye,EAAMH,GAQfte,EAAS0e,EAAMJ,GASfte,EAAS2e,EAAQL,GAEjBK,EAAOh1C,UAAUy1C,MAAQ,SAAgB79B,GAGvC,IADA,IAAIjZ,EAAQ,EACHrB,EAAI,EAAGA,EAAIsa,EAAI9jB,OAAQwJ,IAAK,CACnC,IAAI6jB,EAA0B,IAAL,EAAfvJ,EAAIqpB,MAAM3jC,IAAiBqB,EACjCsiB,EAAU,SAALE,EACTA,KAAQ,GAERvJ,EAAIqpB,MAAM3jC,GAAK2jB,EACftiB,EAAQwiB,CACV,CAIA,OAHc,IAAVxiB,IACFiZ,EAAIqpB,MAAMrpB,EAAI9jB,UAAY6K,GAErBiZ,CACT,EAGAipB,EAAGqU,OAAS,SAAgBpoD,GAE1B,GAAIwnD,EAAOxnD,GAAO,OAAOwnD,EAAOxnD,GAEhC,IAAImoD,EACJ,GAAa,SAATnoD,EACFmoD,EAAQ,IAAIJ,OACP,GAAa,SAAT/nD,EACTmoD,EAAQ,IAAIH,OACP,GAAa,SAAThoD,EACTmoD,EAAQ,IAAIF,MACP,IAAa,WAATjoD,EAGT,MAAM,IAAIU,MAAM,iBAAmBV,GAFnCmoD,EAAQ,IAAID,CAGd,CAGA,OAFAV,EAAOxnD,GAAQmoD,EAERA,CACT,EAiBApC,EAAI7yC,UAAU+zC,SAAW,SAAmBhkC,GAC1C+nB,EAAsB,IAAf/nB,EAAEixB,SAAgB,iCACzBlJ,EAAO/nB,EAAEgkB,IAAK,kCAChB,EAEA8e,EAAI7yC,UAAU4zC,SAAW,SAAmB7jC,EAAGC,GAC7C8nB,EAAqC,KAA7B/nB,EAAEixB,SAAWhxB,EAAEgxB,UAAiB,iCACxClJ,EAAO/nB,EAAEgkB,KAAOhkB,EAAEgkB,MAAQ/jB,EAAE+jB,IAC1B,kCACJ,EAEA8e,EAAI7yC,UAAUo1C,KAAO,SAAerlC,GAClC,OAAIjiB,KAAKmnD,MAAcnnD,KAAKmnD,MAAMM,QAAQxlC,GAAGkjC,UAAUnlD,MAChDiiB,EAAEygC,KAAK1iD,KAAKoH,GAAG+9C,UAAUnlD,KAClC,EAEA+kD,EAAI7yC,UAAUklC,IAAM,SAAcn1B,GAChC,OAAIA,EAAE2zB,SACG3zB,EAAEgpB,QAGJjrC,KAAKoH,EAAEgwB,IAAInV,GAAGkjC,UAAUnlD,KACjC,EAEA+kD,EAAI7yC,UAAUiqB,IAAM,SAAcla,EAAGC,GACnCliB,KAAK8lD,SAAS7jC,EAAGC,GAEjB,IAAIqO,EAAMtO,EAAEka,IAAIja,GAIhB,OAHIqO,EAAIojB,IAAI3zC,KAAKoH,IAAM,GACrBmpB,EAAI8nB,KAAKr4C,KAAKoH,GAETmpB,EAAI40B,UAAUnlD,KACvB,EAEA+kD,EAAI7yC,UAAUkmC,KAAO,SAAen2B,EAAGC,GACrCliB,KAAK8lD,SAAS7jC,EAAGC,GAEjB,IAAIqO,EAAMtO,EAAEm2B,KAAKl2B,GAIjB,OAHIqO,EAAIojB,IAAI3zC,KAAKoH,IAAM,GACrBmpB,EAAI8nB,KAAKr4C,KAAKoH,GAETmpB,CACT,EAEAw0B,EAAI7yC,UAAUklB,IAAM,SAAcnV,EAAGC,GACnCliB,KAAK8lD,SAAS7jC,EAAGC,GAEjB,IAAIqO,EAAMtO,EAAEmV,IAAIlV,GAIhB,OAHIqO,EAAI0zB,KAAK,GAAK,GAChB1zB,EAAI6nB,KAAKp4C,KAAKoH,GAETmpB,EAAI40B,UAAUnlD,KACvB,EAEA+kD,EAAI7yC,UAAUmmC,KAAO,SAAep2B,EAAGC,GACrCliB,KAAK8lD,SAAS7jC,EAAGC,GAEjB,IAAIqO,EAAMtO,EAAEo2B,KAAKn2B,GAIjB,OAHIqO,EAAI0zB,KAAK,GAAK,GAChB1zB,EAAI6nB,KAAKp4C,KAAKoH,GAETmpB,CACT,EAEAw0B,EAAI7yC,UAAU0zC,IAAM,SAAc3jC,EAAG6H,GAEnC,OADA9pB,KAAKimD,SAAShkC,GACPjiB,KAAKsnD,KAAKrlC,EAAEq/B,MAAMx3B,GAC3B,EAEAi7B,EAAI7yC,UAAUkqC,KAAO,SAAen6B,EAAGC,GAErC,OADAliB,KAAK8lD,SAAS7jC,EAAGC,GACVliB,KAAKsnD,KAAKrlC,EAAEm6B,KAAKl6B,GAC1B,EAEA6iC,EAAI7yC,UAAU+hB,IAAM,SAAchS,EAAGC,GAEnC,OADAliB,KAAK8lD,SAAS7jC,EAAGC,GACVliB,KAAKsnD,KAAKrlC,EAAEgS,IAAI/R,GACzB,EAEA6iC,EAAI7yC,UAAUuuC,KAAO,SAAex+B,GAClC,OAAOjiB,KAAKo8C,KAAKn6B,EAAGA,EAAEgpB,QACxB,EAEA8Z,EAAI7yC,UAAUsuC,IAAM,SAAcv+B,GAChC,OAAOjiB,KAAKi0B,IAAIhS,EAAGA,EACrB,EAEA8iC,EAAI7yC,UAAUk0C,KAAO,SAAenkC,GAClC,GAAIA,EAAE2zB,SAAU,OAAO3zB,EAAEgpB,QAEzB,IAAI6c,EAAO9nD,KAAKoH,EAAEivC,MAAM,GAIxB,GAHArM,EAAO8d,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI18B,EAAMprB,KAAKoH,EAAE+0B,IAAI,IAAI4W,EAAG,IAAIuD,OAAO,GACvC,OAAOt2C,KAAKorB,IAAInJ,EAAGmJ,EACrB,CAKA,IAAIgrB,EAAIp2C,KAAKoH,EAAEy6C,KAAK,GAChB7vC,EAAI,EACR,OAAQokC,EAAER,UAA2B,IAAfQ,EAAEC,MAAM,GAC5BrkC,IACAokC,EAAEE,OAAO,GAEXtM,GAAQoM,EAAER,UAEV,IAAImS,EAAM,IAAIhV,EAAG,GAAGiS,MAAMhlD,MACtBgoD,EAAOD,EAAIzB,SAIX2B,EAAOjoD,KAAKoH,EAAEy6C,KAAK,GAAGvL,OAAO,GAC7B4R,EAAIloD,KAAKoH,EAAE8tC,YACfgT,EAAI,IAAInV,EAAG,EAAImV,EAAIA,GAAGlD,MAAMhlD,MAE5B,MAAuC,IAAhCA,KAAKorB,IAAI88B,EAAGD,GAAMtU,IAAIqU,GAC3BE,EAAE1C,QAAQwC,GAGZ,IAAIr1C,EAAI3S,KAAKorB,IAAI88B,EAAG9R,GAChB72B,EAAIvf,KAAKorB,IAAInJ,EAAGm0B,EAAEwL,KAAK,GAAGtL,OAAO,IACjCrkC,EAAIjS,KAAKorB,IAAInJ,EAAGm0B,GAChBhvC,EAAI4K,EACR,MAAsB,IAAfC,EAAE0hC,IAAIoU,GAAY,CAEvB,IADA,IAAIr+B,EAAMzX,EACDzC,EAAI,EAAoB,IAAjBka,EAAIiqB,IAAIoU,GAAYv4C,IAClCka,EAAMA,EAAIs8B,SAEZhc,EAAOx6B,EAAIpI,GACX,IAAI8a,EAAIliB,KAAKorB,IAAIzY,EAAG,IAAIogC,EAAG,GAAG2N,OAAOt5C,EAAIoI,EAAI,IAE7C+P,EAAIA,EAAEsmC,OAAO3jC,GACbvP,EAAIuP,EAAE8jC,SACN/zC,EAAIA,EAAE4zC,OAAOlzC,GACbvL,EAAIoI,CACN,CAEA,OAAO+P,CACT,EAEAwlC,EAAI7yC,UAAUgyC,KAAO,SAAejiC,GAClC,IAAIkmC,EAAMlmC,EAAE4hC,OAAO7jD,KAAKoH,GACxB,OAAqB,IAAjB+gD,EAAIjV,UACNiV,EAAIjV,SAAW,EACRlzC,KAAKsnD,KAAKa,GAAK7B,UAEftmD,KAAKsnD,KAAKa,EAErB,EAEApD,EAAI7yC,UAAUkZ,IAAM,SAAcnJ,EAAG6H,GACnC,GAAIA,EAAI8rB,SAAU,OAAO,IAAI7C,EAAG,GAAGiS,MAAMhlD,MACzC,GAAoB,IAAhB8pB,EAAIm6B,KAAK,GAAU,OAAOhiC,EAAEgpB,QAEhC,IAAImd,EAAa,EACbC,EAAM,IAAIh4C,MAAM,GAAK+3C,GACzBC,EAAI,GAAK,IAAItV,EAAG,GAAGiS,MAAMhlD,MACzBqoD,EAAI,GAAKpmC,EACT,IAAK,IAAIzS,EAAI,EAAGA,EAAI64C,EAAIriD,OAAQwJ,IAC9B64C,EAAI74C,GAAKxP,KAAKi0B,IAAIo0B,EAAI74C,EAAI,GAAIyS,GAGhC,IAAIsO,EAAM83B,EAAI,GACVC,EAAU,EACVC,EAAa,EACbt+B,EAAQH,EAAIorB,YAAc,GAK9B,IAJc,IAAVjrB,IACFA,EAAQ,IAGLza,EAAIsa,EAAI9jB,OAAS,EAAGwJ,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIglC,EAAO1qB,EAAIqpB,MAAM3jC,GACZD,EAAI0a,EAAQ,EAAG1a,GAAK,EAAGA,IAAK,CACnC,IAAI4lC,EAAOX,GAAQjlC,EAAK,EACpBghB,IAAQ83B,EAAI,KACd93B,EAAMvwB,KAAKwgD,IAAIjwB,IAGL,IAAR4kB,GAAyB,IAAZmT,GAKjBA,IAAY,EACZA,GAAWnT,EACXoT,KACIA,IAAeH,GAAqB,IAAN54C,GAAiB,IAAND,KAE7CghB,EAAMvwB,KAAKi0B,IAAI1D,EAAK83B,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAt+B,EAAQ,EACV,CAEA,OAAOsG,CACT,EAEAw0B,EAAI7yC,UAAUgzC,UAAY,SAAoBp7B,GAC5C,IAAIvK,EAAIuK,EAAI44B,KAAK1iD,KAAKoH,GAEtB,OAAOmY,IAAMuK,EAAMvK,EAAE0rB,QAAU1rB,CACjC,EAEAwlC,EAAI7yC,UAAUmzC,YAAc,SAAsBv7B,GAChD,IAAIyG,EAAMzG,EAAImhB,QAEd,OADA1a,EAAI0V,IAAM,KACH1V,CACT,EAMAwiB,EAAGyV,KAAO,SAAe1+B,GACvB,OAAO,IAAIu9B,EAAKv9B,EAClB,EAkBAye,EAAS8e,EAAMtC,GAEfsC,EAAKn1C,UAAUgzC,UAAY,SAAoBp7B,GAC7C,OAAO9pB,KAAKsnD,KAAKx9B,EAAIw3B,MAAMthD,KAAKmM,OAClC,EAEAk7C,EAAKn1C,UAAUmzC,YAAc,SAAsBv7B,GACjD,IAAIvK,EAAIvf,KAAKsnD,KAAKx9B,EAAImK,IAAIj0B,KAAKunD,OAE/B,OADAhoC,EAAE0mB,IAAM,KACD1mB,CACT,EAEA8nC,EAAKn1C,UAAUkqC,KAAO,SAAen6B,EAAGC,GACtC,GAAID,EAAE2zB,UAAY1zB,EAAE0zB,SAGlB,OAFA3zB,EAAEkxB,MAAM,GAAK,EACblxB,EAAEjc,OAAS,EACJic,EAGT,IAAIhQ,EAAIgQ,EAAEm6B,KAAKl6B,GACXvP,EAAIV,EAAEyvC,MAAM1hD,KAAKmM,OAAO8nB,IAAIj0B,KAAKwnD,MAAM/F,OAAOzhD,KAAKmM,OAAO8nB,IAAIj0B,KAAKoH,GACnEqhD,EAAIx2C,EAAEomC,KAAK1lC,GAAG2jC,OAAOt2C,KAAKmM,OAC1BokB,EAAMk4B,EAQV,OANIA,EAAE9U,IAAI3zC,KAAKoH,IAAM,EACnBmpB,EAAMk4B,EAAEpQ,KAAKr4C,KAAKoH,GACTqhD,EAAExE,KAAK,GAAK,IACrB1zB,EAAMk4B,EAAErQ,KAAKp4C,KAAKoH,IAGbmpB,EAAI40B,UAAUnlD,KACvB,EAEAqnD,EAAKn1C,UAAU+hB,IAAM,SAAchS,EAAGC,GACpC,GAAID,EAAE2zB,UAAY1zB,EAAE0zB,SAAU,OAAO,IAAI7C,EAAG,GAAGoS,UAAUnlD,MAEzD,IAAIiS,EAAIgQ,EAAEgS,IAAI/R,GACVvP,EAAIV,EAAEyvC,MAAM1hD,KAAKmM,OAAO8nB,IAAIj0B,KAAKwnD,MAAM/F,OAAOzhD,KAAKmM,OAAO8nB,IAAIj0B,KAAKoH,GACnEqhD,EAAIx2C,EAAEomC,KAAK1lC,GAAG2jC,OAAOt2C,KAAKmM,OAC1BokB,EAAMk4B,EAOV,OANIA,EAAE9U,IAAI3zC,KAAKoH,IAAM,EACnBmpB,EAAMk4B,EAAEpQ,KAAKr4C,KAAKoH,GACTqhD,EAAExE,KAAK,GAAK,IACrB1zB,EAAMk4B,EAAErQ,KAAKp4C,KAAKoH,IAGbmpB,EAAI40B,UAAUnlD,KACvB,EAEAqnD,EAAKn1C,UAAUgyC,KAAO,SAAejiC,GAEnC,IAAIsO,EAAMvwB,KAAKsnD,KAAKrlC,EAAE4hC,OAAO7jD,KAAKoH,GAAG6sB,IAAIj0B,KAAK8iD,KAC9C,OAAOvyB,EAAI40B,UAAUnlD,KACvB,CACD,CAr3GD,CAq3GoCg6B,EAAQh6B,K","sources":["webpack://fluxbeam/../src/errors.ts","webpack://fluxbeam/../node_modules/@solana-mobile/mobile-wallet-adapter-protocol/lib/esm/index.browser.js","webpack://fluxbeam/../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/base-x/src/index.js","webpack://fluxbeam/../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/bs58/index.js","webpack://fluxbeam/../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/lib/esm/index.browser.js","webpack://fluxbeam/../node_modules/@solana-mobile/wallet-adapter-mobile/lib/esm/index.browser.js","webpack://fluxbeam/../src/composables/useAdapterListeners.ts","webpack://fluxbeam/../src/composables/useAutoConnect.ts","webpack://fluxbeam/../src/composables/useEnvironment.ts","webpack://fluxbeam/../src/composables/useErrorHandler.ts","webpack://fluxbeam/../src/composables/useMobileWalletAdapters.ts","webpack://fluxbeam/../src/composables/useReadyStateListeners.ts","webpack://fluxbeam/../node_modules/@vueuse/shared/index.mjs","webpack://fluxbeam/../node_modules/vue-demi/lib/index.mjs","webpack://fluxbeam/../node_modules/@vueuse/core/index.mjs","webpack://fluxbeam/../src/composables/useSelectWalletName.ts","webpack://fluxbeam/../node_modules/@solana/wallet-standard-features/lib/esm/signAndSendTransaction.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-features/lib/esm/signIn.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-features/lib/esm/signMessage.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-features/lib/esm/signTransaction.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-util/lib/esm/commitment.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-chains/lib/esm/index.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-util/lib/esm/endpoint.js","webpack://fluxbeam/../node_modules/@wallet-standard/features/lib/esm/connect.js","webpack://fluxbeam/../node_modules/@wallet-standard/features/lib/esm/disconnect.js","webpack://fluxbeam/../node_modules/@wallet-standard/features/lib/esm/events.js","webpack://fluxbeam/../node_modules/@wallet-standard/wallet/lib/esm/util.js","webpack://fluxbeam/../node_modules/base64-js/index.js","webpack://fluxbeam/../node_modules/ieee754/index.js","webpack://fluxbeam/../node_modules/buffer/index.js","webpack://fluxbeam/../node_modules/safe-buffer/index.js","webpack://fluxbeam/../node_modules/base-x/src/index.js","webpack://fluxbeam/../node_modules/@solana/wallet-standard-wallet-adapter-base/lib/esm/adapter.js","webpack://fluxbeam/../node_modules/bs58/index.js","webpack://fluxbeam/../node_modules/@wallet-standard/app/lib/esm/wallets.js","webpack://fluxbeam/../src/composables/useStandardWalletAdapters.ts","webpack://fluxbeam/../src/composables/useTransactionMethods.ts","webpack://fluxbeam/../src/composables/useUnloadingWindow.ts","webpack://fluxbeam/../src/composables/useWalletState.ts","webpack://fluxbeam/../src/composables/useWrapAdaptersInWallets.ts","webpack://fluxbeam/../src/createWalletStore.ts","webpack://fluxbeam/../src/useWallet.ts","webpack://fluxbeam/../src/components/WalletIcon.vue?1ac0","webpack://fluxbeam/../src/components/WalletIcon.vue","webpack://fluxbeam/../src/components/WalletConnectButton.vue","webpack://fluxbeam/../src/components/WalletConnectButton.vue?cfbd","webpack://fluxbeam/../src/components/WalletDisconnectButton.vue","webpack://fluxbeam/../src/components/WalletModalProvider.vue?2971","webpack://fluxbeam/../src/components/WalletModalProvider.vue","webpack://fluxbeam/../src/components/WalletMultiButton.vue?e5d7","webpack://fluxbeam/../src/components/WalletMultiButton.vue","webpack://fluxbeam/./node_modules/ansicolors/ansicolors.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/api.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://fluxbeam/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://fluxbeam/./node_modules/asn1.js/node_modules/bn.js/lib/bn.js"],"sourcesContent":["import { WalletError } from \"@solana/wallet-adapter-base\";\n\nexport class WalletNotSelectedError extends WalletError {\n name = \"WalletNotSelectedError\";\n}\n\nexport class WalletNotInitializedError extends WalletError {\n name = \"WalletNotSelectedError\";\n}\n","// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst SolanaMobileWalletAdapterErrorCode = {\n ERROR_ASSOCIATION_PORT_OUT_OF_RANGE: 'ERROR_ASSOCIATION_PORT_OUT_OF_RANGE',\n ERROR_FORBIDDEN_WALLET_BASE_URL: 'ERROR_FORBIDDEN_WALLET_BASE_URL',\n ERROR_SECURE_CONTEXT_REQUIRED: 'ERROR_SECURE_CONTEXT_REQUIRED',\n ERROR_SESSION_CLOSED: 'ERROR_SESSION_CLOSED',\n ERROR_SESSION_TIMEOUT: 'ERROR_SESSION_TIMEOUT',\n ERROR_WALLET_NOT_FOUND: 'ERROR_WALLET_NOT_FOUND',\n};\nclass SolanaMobileWalletAdapterError extends Error {\n constructor(...args) {\n const [code, message, data] = args;\n super(message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaMobileWalletAdapterError';\n }\n}\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst SolanaMobileWalletAdapterProtocolErrorCode = {\n // Keep these in sync with `mobilewalletadapter/common/ProtocolContract.java`.\n ERROR_AUTHORIZATION_FAILED: -1,\n ERROR_INVALID_PAYLOADS: -2,\n ERROR_NOT_SIGNED: -3,\n ERROR_NOT_SUBMITTED: -4,\n ERROR_TOO_MANY_PAYLOADS: -5,\n ERROR_ATTEST_ORIGIN_ANDROID: -100,\n};\nclass SolanaMobileWalletAdapterProtocolError extends Error {\n constructor(...args) {\n const [jsonRpcMessageId, code, message, data] = args;\n super(message);\n this.code = code;\n this.data = data;\n this.jsonRpcMessageId = jsonRpcMessageId;\n this.name = 'SolanaMobileWalletAdapterProtocolError';\n }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction createHelloReq(ecdhPublicKey, associationKeypairPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const publicKeyBuffer = yield crypto.subtle.exportKey('raw', ecdhPublicKey);\n const signatureBuffer = yield crypto.subtle.sign({ hash: 'SHA-256', name: 'ECDSA' }, associationKeypairPrivateKey, publicKeyBuffer);\n const response = new Uint8Array(publicKeyBuffer.byteLength + signatureBuffer.byteLength);\n response.set(new Uint8Array(publicKeyBuffer), 0);\n response.set(new Uint8Array(signatureBuffer), publicKeyBuffer.byteLength);\n return response;\n });\n}\n\nconst SEQUENCE_NUMBER_BYTES = 4;\nfunction createSequenceNumberVector(sequenceNumber) {\n if (sequenceNumber >= 4294967296) {\n throw new Error('Outbound sequence number overflow. The maximum sequence number is 32-bytes.');\n }\n const byteArray = new ArrayBuffer(SEQUENCE_NUMBER_BYTES);\n const view = new DataView(byteArray);\n view.setUint32(0, sequenceNumber, /* littleEndian */ false);\n return new Uint8Array(byteArray);\n}\n\nfunction generateAssociationKeypair() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield crypto.subtle.generateKey({\n name: 'ECDSA',\n namedCurve: 'P-256',\n }, false /* extractable */, ['sign'] /* keyUsages */);\n });\n}\n\nfunction generateECDHKeypair() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield crypto.subtle.generateKey({\n name: 'ECDH',\n namedCurve: 'P-256',\n }, false /* extractable */, ['deriveKey', 'deriveBits'] /* keyUsages */);\n });\n}\n\nconst INITIALIZATION_VECTOR_BYTES = 12;\nfunction encryptJsonRpcMessage(jsonRpcMessage, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const plaintext = JSON.stringify(jsonRpcMessage);\n const sequenceNumberVector = createSequenceNumberVector(jsonRpcMessage.id);\n const initializationVector = new Uint8Array(INITIALIZATION_VECTOR_BYTES);\n crypto.getRandomValues(initializationVector);\n const ciphertext = yield crypto.subtle.encrypt(getAlgorithmParams(sequenceNumberVector, initializationVector), sharedSecret, new TextEncoder().encode(plaintext));\n const response = new Uint8Array(sequenceNumberVector.byteLength + initializationVector.byteLength + ciphertext.byteLength);\n response.set(new Uint8Array(sequenceNumberVector), 0);\n response.set(new Uint8Array(initializationVector), sequenceNumberVector.byteLength);\n response.set(new Uint8Array(ciphertext), sequenceNumberVector.byteLength + initializationVector.byteLength);\n return response;\n });\n}\nfunction decryptJsonRpcMessage(message, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const sequenceNumberVector = message.slice(0, SEQUENCE_NUMBER_BYTES);\n const initializationVector = message.slice(SEQUENCE_NUMBER_BYTES, SEQUENCE_NUMBER_BYTES + INITIALIZATION_VECTOR_BYTES);\n const ciphertext = message.slice(SEQUENCE_NUMBER_BYTES + INITIALIZATION_VECTOR_BYTES);\n const plaintextBuffer = yield crypto.subtle.decrypt(getAlgorithmParams(sequenceNumberVector, initializationVector), sharedSecret, ciphertext);\n const plaintext = getUtf8Decoder().decode(plaintextBuffer);\n const jsonRpcMessage = JSON.parse(plaintext);\n if (Object.hasOwnProperty.call(jsonRpcMessage, 'error')) {\n throw new SolanaMobileWalletAdapterProtocolError(jsonRpcMessage.id, jsonRpcMessage.error.code, jsonRpcMessage.error.message);\n }\n return jsonRpcMessage;\n });\n}\nfunction getAlgorithmParams(sequenceNumber, initializationVector) {\n return {\n additionalData: sequenceNumber,\n iv: initializationVector,\n name: 'AES-GCM',\n tagLength: 128, // 16 byte tag => 128 bits\n };\n}\nlet _utf8Decoder;\nfunction getUtf8Decoder() {\n if (_utf8Decoder === undefined) {\n _utf8Decoder = new TextDecoder('utf-8');\n }\n return _utf8Decoder;\n}\n\nfunction parseHelloRsp(payloadBuffer, // The X9.62-encoded wallet endpoint ephemeral ECDH public keypoint.\nassociationPublicKey, ecdhPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const [associationPublicKeyBuffer, walletPublicKey] = yield Promise.all([\n crypto.subtle.exportKey('raw', associationPublicKey),\n crypto.subtle.importKey('raw', payloadBuffer, { name: 'ECDH', namedCurve: 'P-256' }, false /* extractable */, [] /* keyUsages */),\n ]);\n const sharedSecret = yield crypto.subtle.deriveBits({ name: 'ECDH', public: walletPublicKey }, ecdhPrivateKey, 256);\n const ecdhSecretKey = yield crypto.subtle.importKey('raw', sharedSecret, 'HKDF', false /* extractable */, ['deriveKey'] /* keyUsages */);\n const aesKeyMaterialVal = yield crypto.subtle.deriveKey({\n name: 'HKDF',\n hash: 'SHA-256',\n salt: new Uint8Array(associationPublicKeyBuffer),\n info: new Uint8Array(),\n }, ecdhSecretKey, { name: 'AES-GCM', length: 128 }, false /* extractable */, ['encrypt', 'decrypt']);\n return aesKeyMaterialVal;\n });\n}\n\nfunction getRandomAssociationPort() {\n return assertAssociationPort(49152 + Math.floor(Math.random() * (65535 - 49152 + 1)));\n}\nfunction assertAssociationPort(port) {\n if (port < 49152 || port > 65535) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_ASSOCIATION_PORT_OUT_OF_RANGE, `Association port number must be between 49152 and 65535. ${port} given.`, { port });\n }\n return port;\n}\n\n// https://stackoverflow.com/a/9458996/802047\nfunction arrayBufferToBase64String(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let ii = 0; ii < len; ii++) {\n binary += String.fromCharCode(bytes[ii]);\n }\n return window.btoa(binary);\n}\n\nfunction getStringWithURLUnsafeCharactersReplaced(unsafeBase64EncodedString) {\n return unsafeBase64EncodedString.replace(/[/+=]/g, (m) => ({\n '/': '_',\n '+': '-',\n '=': '.',\n }[m]));\n}\n\nconst INTENT_NAME = 'solana-wallet';\nfunction getPathParts(pathString) {\n return (pathString\n // Strip leading and trailing slashes\n .replace(/(^\\/+|\\/+$)/g, '')\n // Return an array of directories\n .split('/'));\n}\nfunction getIntentURL(methodPathname, intentUrlBase) {\n let baseUrl = null;\n if (intentUrlBase) {\n try {\n baseUrl = new URL(intentUrlBase);\n }\n catch (_a) { } // eslint-disable-line no-empty\n if ((baseUrl === null || baseUrl === void 0 ? void 0 : baseUrl.protocol) !== 'https:') {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Base URLs supplied by wallets must be valid `https` URLs');\n }\n }\n baseUrl || (baseUrl = new URL(`${INTENT_NAME}:/`));\n const pathname = methodPathname.startsWith('/')\n ? // Method is an absolute path. Replace it wholesale.\n methodPathname\n : // Method is a relative path. Merge it with the existing one.\n [...getPathParts(baseUrl.pathname), ...getPathParts(methodPathname)].join('/');\n return new URL(pathname, baseUrl);\n}\nfunction getAssociateAndroidIntentURL(associationPublicKey, putativePort, associationURLBase) {\n return __awaiter(this, void 0, void 0, function* () {\n const associationPort = assertAssociationPort(putativePort);\n const exportedKey = yield crypto.subtle.exportKey('raw', associationPublicKey);\n const encodedKey = arrayBufferToBase64String(exportedKey);\n const url = getIntentURL('v1/associate/local', associationURLBase);\n url.searchParams.set('association', getStringWithURLUnsafeCharactersReplaced(encodedKey));\n url.searchParams.set('port', `${associationPort}`);\n return url;\n });\n}\n\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst Browser = {\n Firefox: 0,\n Other: 1,\n};\nfunction assertUnreachable(x) {\n return x;\n}\nfunction getBrowser() {\n return navigator.userAgent.indexOf('Firefox/') !== -1 ? Browser.Firefox : Browser.Other;\n}\nfunction getDetectionPromise() {\n // Chrome and others silently fail if a custom protocol is not supported.\n // For these, we wait to see if the browser is navigated away from in\n // a reasonable amount of time (ie. the native wallet opened).\n return new Promise((resolve, reject) => {\n function cleanup() {\n clearTimeout(timeoutId);\n window.removeEventListener('blur', handleBlur);\n }\n function handleBlur() {\n cleanup();\n resolve();\n }\n window.addEventListener('blur', handleBlur);\n const timeoutId = setTimeout(() => {\n cleanup();\n reject();\n }, 2000);\n });\n}\nlet _frame = null;\nfunction launchUrlThroughHiddenFrame(url) {\n if (_frame == null) {\n _frame = document.createElement('iframe');\n _frame.style.display = 'none';\n document.body.appendChild(_frame);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _frame.contentWindow.location.href = url.toString();\n}\nfunction startSession(associationPublicKey, associationURLBase) {\n return __awaiter(this, void 0, void 0, function* () {\n const randomAssociationPort = getRandomAssociationPort();\n const associationUrl = yield getAssociateAndroidIntentURL(associationPublicKey, randomAssociationPort, associationURLBase);\n if (associationUrl.protocol === 'https:') {\n // The association URL is an Android 'App Link' or iOS 'Universal Link'.\n // These are regular web URLs that are designed to launch an app if it\n // is installed or load the actual target webpage if not.\n window.location.assign(associationUrl);\n }\n else {\n // The association URL has a custom protocol (eg. `solana-wallet:`)\n try {\n const browser = getBrowser();\n switch (browser) {\n case Browser.Firefox:\n // If a custom protocol is not supported in Firefox, it throws.\n launchUrlThroughHiddenFrame(associationUrl);\n // If we reached this line, it's supported.\n break;\n case Browser.Other: {\n const detectionPromise = getDetectionPromise();\n window.location.assign(associationUrl);\n yield detectionPromise;\n break;\n }\n default:\n assertUnreachable(browser);\n }\n }\n catch (e) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_WALLET_NOT_FOUND, 'Found no installed wallet that supports the mobile wallet protocol.');\n }\n }\n return randomAssociationPort;\n });\n}\n\nconst WEBSOCKET_CONNECTION_CONFIG = {\n /**\n * 300 milliseconds is a generally accepted threshold for what someone\n * would consider an acceptable response time for a user interface\n * after having performed a low-attention tapping task. We set the initial\n * interval at which we wait for the wallet to set up the websocket at\n * half this, as per the Nyquist frequency, with a progressive backoff\n * sequence from there. The total wait time is 30s, which allows for the\n * user to be presented with a disambiguation dialog, select a wallet, and\n * for the wallet app to subsequently start.\n */\n retryDelayScheduleMs: [150, 150, 200, 500, 500, 750, 750, 1000],\n timeoutMs: 30000,\n};\nconst WEBSOCKET_PROTOCOL = 'com.solana.mobilewalletadapter.v1';\nfunction assertSecureContext() {\n if (typeof window === 'undefined' || window.isSecureContext !== true) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SECURE_CONTEXT_REQUIRED, 'The mobile wallet adapter protocol must be used in a secure context (`https`).');\n }\n}\nfunction assertSecureEndpointSpecificURI(walletUriBase) {\n let url;\n try {\n url = new URL(walletUriBase);\n }\n catch (_a) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Invalid base URL supplied by wallet');\n }\n if (url.protocol !== 'https:') {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Base URLs supplied by wallets must be valid `https` URLs');\n }\n}\nfunction getSequenceNumberFromByteArray(byteArray) {\n const view = new DataView(byteArray);\n return view.getUint32(0, /* littleEndian */ false);\n}\nfunction transact(callback, config) {\n return __awaiter(this, void 0, void 0, function* () {\n assertSecureContext();\n const associationKeypair = yield generateAssociationKeypair();\n const sessionPort = yield startSession(associationKeypair.publicKey, config === null || config === void 0 ? void 0 : config.baseUri);\n const websocketURL = `ws://localhost:${sessionPort}/solana-wallet`;\n let connectionStartTime;\n const getNextRetryDelayMs = (() => {\n const schedule = [...WEBSOCKET_CONNECTION_CONFIG.retryDelayScheduleMs];\n return () => (schedule.length > 1 ? schedule.shift() : schedule[0]);\n })();\n let nextJsonRpcMessageId = 1;\n let lastKnownInboundSequenceNumber = 0;\n let state = { __type: 'disconnected' };\n return new Promise((resolve, reject) => {\n let socket;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const jsonRpcResponsePromises = {};\n const handleOpen = () => __awaiter(this, void 0, void 0, function* () {\n if (state.__type !== 'connecting') {\n console.warn('Expected adapter state to be `connecting` at the moment the websocket opens. ' +\n `Got \\`${state.__type}\\`.`);\n return;\n }\n const { associationKeypair } = state;\n socket.removeEventListener('open', handleOpen);\n const ecdhKeypair = yield generateECDHKeypair();\n socket.send(yield createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n });\n const handleClose = (evt) => {\n if (evt.wasClean) {\n state = { __type: 'disconnected' };\n }\n else {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session dropped unexpectedly (${evt.code}: ${evt.reason}).`, { closeEvent: evt }));\n }\n disposeSocket();\n };\n const handleError = (_evt) => __awaiter(this, void 0, void 0, function* () {\n disposeSocket();\n if (Date.now() - connectionStartTime >= WEBSOCKET_CONNECTION_CONFIG.timeoutMs) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_TIMEOUT, `Failed to connect to the wallet websocket on port ${sessionPort}.`));\n }\n else {\n yield new Promise((resolve) => {\n const retryDelayMs = getNextRetryDelayMs();\n retryWaitTimeoutId = window.setTimeout(resolve, retryDelayMs);\n });\n attemptSocketConnection();\n }\n });\n const handleMessage = (evt) => __awaiter(this, void 0, void 0, function* () {\n const responseBuffer = yield evt.data.arrayBuffer();\n switch (state.__type) {\n case 'connected':\n try {\n const sequenceNumberVector = responseBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n const jsonRpcMessage = yield decryptJsonRpcMessage(responseBuffer, state.sharedSecret);\n const responsePromise = jsonRpcResponsePromises[jsonRpcMessage.id];\n delete jsonRpcResponsePromises[jsonRpcMessage.id];\n responsePromise.resolve(jsonRpcMessage.result);\n }\n catch (e) {\n if (e instanceof SolanaMobileWalletAdapterProtocolError) {\n const responsePromise = jsonRpcResponsePromises[e.jsonRpcMessageId];\n delete jsonRpcResponsePromises[e.jsonRpcMessageId];\n responsePromise.reject(e);\n }\n else {\n throw e;\n }\n }\n break;\n case 'hello_req_sent': {\n const sharedSecret = yield parseHelloRsp(responseBuffer, state.associationPublicKey, state.ecdhPrivateKey);\n state = { __type: 'connected', sharedSecret };\n const wallet = new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n const method = p\n .toString()\n .replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`)\n .toLowerCase();\n target[p] = function (params) {\n return __awaiter(this, void 0, void 0, function* () {\n const id = nextJsonRpcMessageId++;\n socket.send(yield encryptJsonRpcMessage({\n id,\n jsonrpc: '2.0',\n method,\n params: params !== null && params !== void 0 ? params : {},\n }, sharedSecret));\n return new Promise((resolve, reject) => {\n jsonRpcResponsePromises[id] = {\n resolve(result) {\n switch (p) {\n case 'authorize':\n case 'reauthorize': {\n const { wallet_uri_base } = result;\n if (wallet_uri_base != null) {\n try {\n assertSecureEndpointSpecificURI(wallet_uri_base);\n }\n catch (e) {\n reject(e);\n return;\n }\n }\n break;\n }\n }\n resolve(result);\n },\n reject,\n };\n });\n });\n };\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n try {\n resolve(yield callback(wallet));\n }\n catch (e) {\n reject(e);\n }\n finally {\n disposeSocket();\n socket.close();\n }\n break;\n }\n }\n });\n let disposeSocket;\n let retryWaitTimeoutId;\n const attemptSocketConnection = () => {\n if (disposeSocket) {\n disposeSocket();\n }\n state = { __type: 'connecting', associationKeypair };\n if (connectionStartTime === undefined) {\n connectionStartTime = Date.now();\n }\n socket = new WebSocket(websocketURL, [WEBSOCKET_PROTOCOL]);\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('close', handleClose);\n socket.addEventListener('error', handleError);\n socket.addEventListener('message', handleMessage);\n disposeSocket = () => {\n window.clearTimeout(retryWaitTimeoutId);\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('close', handleClose);\n socket.removeEventListener('error', handleError);\n socket.removeEventListener('message', handleMessage);\n };\n };\n attemptSocketConnection();\n });\n });\n}\n\nexport { SolanaMobileWalletAdapterError, SolanaMobileWalletAdapterErrorCode, SolanaMobileWalletAdapterProtocolError, SolanaMobileWalletAdapterProtocolErrorCode, transact };\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","import { VersionedMessage, Transaction, VersionedTransaction, SIGNATURE_LENGTH_IN_BYTES } from '@solana/web3.js';\nimport { transact as transact$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport bs58 from 'bs58';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction fromUint8Array(byteArray) {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nfunction getPayloadFromTransaction(transaction) {\n const serializedTransaction = 'version' in transaction\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n const payload = fromUint8Array(serializedTransaction);\n return payload;\n}\nfunction getTransactionFromWireMessage(byteArray) {\n const numSignatures = byteArray[0];\n const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;\n const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));\n if (version === 'legacy') {\n return Transaction.from(byteArray);\n }\n else {\n return VersionedTransaction.deserialize(byteArray);\n }\n}\nfunction transact(callback, config) {\n return __awaiter(this, void 0, void 0, function* () {\n const augmentedCallback = (wallet) => {\n const augmentedAPI = new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = function (_a) {\n var { minContextSlot, transactions } = _a, rest = __rest(_a, [\"minContextSlot\", \"transactions\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signatures: base64EncodedSignatures } = yield wallet.signAndSendTransactions(Object.assign(Object.assign(Object.assign({}, rest), (minContextSlot != null\n ? { options: { min_context_slot: minContextSlot } }\n : null)), { payloads }));\n const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);\n return signatures;\n });\n };\n break;\n case 'signMessages':\n target[p] = function (_a) {\n var { payloads } = _a, rest = __rest(_a, [\"payloads\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = yield wallet.signMessages(Object.assign(Object.assign({}, rest), { payloads: base64EncodedPayloads }));\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n });\n };\n break;\n case 'signTransactions':\n target[p] = function (_a) {\n var { transactions } = _a, rest = __rest(_a, [\"transactions\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } = yield wallet.signTransactions(Object.assign(Object.assign({}, rest), { payloads }));\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n });\n };\n break;\n default: {\n target[p] = wallet[p];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n return callback(augmentedAPI);\n };\n return yield transact$1(augmentedCallback, config);\n });\n}\n\nexport { transact };\n","import { BaseMessageSignerWalletAdapter, WalletReadyState, WalletPublicKeyError, WalletNotReadyError, WalletConnectionError, WalletDisconnectedError, WalletNotConnectedError, WalletSignTransactionError, WalletSendTransactionError, WalletSignMessageError } from '@solana/wallet-adapter-base';\nimport { PublicKey } from '@solana/web3.js';\nimport { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nfunction getIsSupported() {\n return (typeof window !== 'undefined' &&\n window.isSecureContext &&\n typeof document !== 'undefined' &&\n /android/i.test(navigator.userAgent));\n}\n\nconst SolanaMobileWalletAdapterWalletName = 'Mobile Wallet Adapter';\nconst SIGNATURE_LENGTH_IN_BYTES = 64;\nfunction getPublicKeyFromAddress(address) {\n const publicKeyByteArray = toUint8Array(address);\n return new PublicKey(publicKeyByteArray);\n}\nfunction isVersionedTransaction(transaction) {\n return 'version' in transaction;\n}\nclass SolanaMobileWalletAdapter extends BaseMessageSignerWalletAdapter {\n constructor(config) {\n super();\n this.supportedTransactionVersions = new Set(\n // FIXME(#244): We can't actually know what versions are supported until we know which wallet we're talking to.\n ['legacy', 0]);\n this.name = SolanaMobileWalletAdapterWalletName;\n this.url = 'https://solanamobile.com/wallets';\n this.icon = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI4IiB3aWR0aD0iMjgiIHZpZXdCb3g9Ii0zIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0RDQjhGRiI+PHBhdGggZD0iTTE3LjQgMTcuNEgxNXYyLjRoMi40di0yLjRabTEuMi05LjZoLTIuNHYyLjRoMi40VjcuOFoiLz48cGF0aCBkPSJNMjEuNiAzVjBoLTIuNHYzaC0zLjZWMGgtMi40djNoLTIuNHY2LjZINC41YTIuMSAyLjEgMCAxIDEgMC00LjJoMi43VjNINC41QTQuNSA0LjUgMCAwIDAgMCA3LjVWMjRoMjEuNnYtNi42aC0yLjR2NC4ySDIuNFYxMS41Yy41LjMgMS4yLjQgMS44LjVoNy41QTYuNiA2LjYgMCAwIDAgMjQgOVYzaC0yLjRabTAgNS43YTQuMiA0LjIgMCAxIDEtOC40IDBWNS40aDguNHYzLjNaIi8+PC9nPjwvc3ZnPg==';\n this._connecting = false;\n /**\n * Every time the connection is recycled in some way (eg. `disconnect()` is called)\n * increment this and use it to make sure that `transact` calls from the previous\n * 'generation' don't continue to do work and throw exceptions.\n */\n this._connectionGeneration = 0;\n this._readyState = getIsSupported() ? WalletReadyState.Loadable : WalletReadyState.Unsupported;\n this._authorizationResultCache = config.authorizationResultCache;\n this._addressSelector = config.addressSelector;\n this._appIdentity = config.appIdentity;\n this._cluster = config.cluster;\n this._onWalletNotFound = config.onWalletNotFound;\n if (this._readyState !== WalletReadyState.Unsupported) {\n this._authorizationResultCache.get().then((authorizationResult) => {\n if (authorizationResult) {\n // Having a prior authorization result is, right now, the best\n // indication that a mobile wallet is installed. There is no API\n // we can use to test for whether the association URI is supported.\n this.declareWalletAsInstalled();\n }\n });\n }\n }\n get publicKey() {\n if (this._publicKey == null && this._selectedAddress != null) {\n try {\n this._publicKey = getPublicKeyFromAddress(this._selectedAddress);\n }\n catch (e) {\n throw new WalletPublicKeyError((e instanceof Error && (e === null || e === void 0 ? void 0 : e.message)) || 'Unknown error', e);\n }\n }\n return this._publicKey ? this._publicKey : null;\n }\n get connected() {\n return !!this._authorizationResult;\n }\n get connecting() {\n return this._connecting;\n }\n get readyState() {\n return this._readyState;\n }\n declareWalletAsInstalled() {\n if (this._readyState !== WalletReadyState.Installed) {\n this.emit('readyStateChange', (this._readyState = WalletReadyState.Installed));\n }\n }\n runWithGuard(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n return yield callback();\n }\n catch (e) {\n this.emit('error', e);\n throw e;\n }\n });\n }\n /** @deprecated Use `autoConnect()` instead. */\n autoConnect_DO_NOT_USE_OR_YOU_WILL_BE_FIRED() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.autoConnect();\n });\n }\n autoConnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connecting || this.connected) {\n return;\n }\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n const cachedAuthorizationResult = yield this._authorizationResultCache.get();\n if (cachedAuthorizationResult) {\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this.handleAuthorizationResult(cachedAuthorizationResult);\n }\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n connect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connecting || this.connected) {\n return;\n }\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n const cachedAuthorizationResult = yield this._authorizationResultCache.get();\n if (cachedAuthorizationResult) {\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this.handleAuthorizationResult(cachedAuthorizationResult);\n return;\n }\n yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n const authorizationResult = yield wallet.authorize({\n cluster: this._cluster,\n identity: this._appIdentity,\n });\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n Promise.all([\n this._authorizationResultCache.set(authorizationResult),\n this.handleAuthorizationResult(authorizationResult),\n ]);\n }));\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n handleAuthorizationResult(authorizationResult) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const didPublicKeysChange = \n // Case 1: We started from having no authorization.\n this._authorizationResult == null ||\n // Case 2: The number of authorized accounts changed.\n ((_a = this._authorizationResult) === null || _a === void 0 ? void 0 : _a.accounts.length) !== authorizationResult.accounts.length ||\n // Case 3: The new list of addresses isn't exactly the same as the old list, in the same order.\n this._authorizationResult.accounts.some((account, ii) => account.address !== authorizationResult.accounts[ii].address);\n this._authorizationResult = authorizationResult;\n this.declareWalletAsInstalled();\n if (didPublicKeysChange) {\n const nextSelectedAddress = yield this._addressSelector.select(authorizationResult.accounts.map(({ address }) => address));\n if (nextSelectedAddress !== this._selectedAddress) {\n this._selectedAddress = nextSelectedAddress;\n delete this._publicKey;\n this.emit('connect', \n // Having just set `this._selectedAddress`, `this.publicKey` is definitely non-null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.publicKey);\n }\n }\n });\n }\n performReauthorization(wallet, authToken) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const authorizationResult = yield wallet.reauthorize({\n auth_token: authToken,\n identity: this._appIdentity,\n });\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n Promise.all([\n this._authorizationResultCache.set(authorizationResult),\n this.handleAuthorizationResult(authorizationResult),\n ]);\n }\n catch (e) {\n this.disconnect();\n throw new WalletDisconnectedError((e instanceof Error && (e === null || e === void 0 ? void 0 : e.message)) || 'Unknown error', e);\n }\n });\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n this._authorizationResultCache.clear(); // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this._connecting = false;\n this._connectionGeneration++;\n delete this._authorizationResult;\n delete this._publicKey;\n delete this._selectedAddress;\n this.emit('disconnect');\n });\n }\n transact(callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const walletUriBase = (_a = this._authorizationResult) === null || _a === void 0 ? void 0 : _a.wallet_uri_base;\n const config = walletUriBase ? { baseUri: walletUriBase } : undefined;\n const currentConnectionGeneration = this._connectionGeneration;\n try {\n return yield transact(callback, config);\n }\n catch (e) {\n if (this._connectionGeneration !== currentConnectionGeneration) {\n yield new Promise(() => { }); // Never resolve.\n }\n if (e instanceof Error &&\n e.name === 'SolanaMobileWalletAdapterError' &&\n e.code === 'ERROR_WALLET_NOT_FOUND') {\n yield this._onWalletNotFound(this);\n }\n throw e;\n }\n });\n }\n assertIsAuthorized() {\n if (!this._authorizationResult || !this._selectedAddress)\n throw new WalletNotConnectedError();\n return {\n authToken: this._authorizationResult.auth_token,\n selectedAddress: this._selectedAddress,\n };\n }\n performSignTransactions(transactions) {\n return __awaiter(this, void 0, void 0, function* () {\n const { authToken } = this.assertIsAuthorized();\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n yield this.performReauthorization(wallet, authToken);\n const signedTransactions = yield wallet.signTransactions({\n transactions,\n });\n return signedTransactions;\n }));\n }\n catch (error) {\n throw new WalletSignTransactionError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n });\n }\n sendTransaction(transaction, connection, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const { authToken } = this.assertIsAuthorized();\n const minContextSlot = options === null || options === void 0 ? void 0 : options.minContextSlot;\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n function getTargetCommitment() {\n let targetCommitment;\n switch (connection.commitment) {\n case 'confirmed':\n case 'finalized':\n case 'processed':\n targetCommitment = connection.commitment;\n break;\n default:\n targetCommitment = 'finalized';\n }\n let targetPreflightCommitment;\n switch (options === null || options === void 0 ? void 0 : options.preflightCommitment) {\n case 'confirmed':\n case 'finalized':\n case 'processed':\n targetPreflightCommitment = options.preflightCommitment;\n break;\n case undefined:\n targetPreflightCommitment = targetCommitment;\n default:\n targetPreflightCommitment = 'finalized';\n }\n const preflightCommitmentScore = targetPreflightCommitment === 'finalized'\n ? 2\n : targetPreflightCommitment === 'confirmed'\n ? 1\n : 0;\n const targetCommitmentScore = targetCommitment === 'finalized' ? 2 : targetCommitment === 'confirmed' ? 1 : 0;\n return preflightCommitmentScore < targetCommitmentScore\n ? targetPreflightCommitment\n : targetCommitment;\n }\n const [capabilities, _1, _2] = yield Promise.all([\n wallet.getCapabilities(),\n this.performReauthorization(wallet, authToken),\n isVersionedTransaction(transaction)\n ? null\n : /**\n * Unlike versioned transactions, legacy `Transaction` objects\n * may not have an associated `feePayer` or `recentBlockhash`.\n * This code exists to patch them up in case they are missing.\n */\n (() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n transaction.feePayer || (transaction.feePayer = (_a = this.publicKey) !== null && _a !== void 0 ? _a : undefined);\n if (transaction.recentBlockhash == null) {\n const { blockhash } = yield connection.getLatestBlockhash({\n commitment: getTargetCommitment(),\n });\n transaction.recentBlockhash = blockhash;\n }\n }))(),\n ]);\n if (capabilities.supports_sign_and_send_transactions) {\n const signatures = yield wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n }\n else {\n const [signedTransaction] = yield wallet.signTransactions({\n transactions: [transaction],\n });\n if (isVersionedTransaction(signedTransaction)) {\n return yield connection.sendTransaction(signedTransaction);\n }\n else {\n const serializedTransaction = signedTransaction.serialize();\n return yield connection.sendRawTransaction(serializedTransaction, Object.assign(Object.assign({}, options), { preflightCommitment: getTargetCommitment() }));\n }\n }\n }));\n }\n catch (error) {\n throw new WalletSendTransactionError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n }));\n });\n }\n signTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const [signedTransaction] = yield this.performSignTransactions([transaction]);\n return signedTransaction;\n }));\n });\n }\n signAllTransactions(transactions) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const signedTransactions = yield this.performSignTransactions(transactions);\n return signedTransactions;\n }));\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const { authToken, selectedAddress } = this.assertIsAuthorized();\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n yield this.performReauthorization(wallet, authToken);\n const [signedMessage] = yield wallet.signMessages({\n addresses: [selectedAddress],\n payloads: [message],\n });\n const signature = signedMessage.slice(-SIGNATURE_LENGTH_IN_BYTES);\n return signature;\n }));\n }\n catch (error) {\n throw new WalletSignMessageError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n }));\n });\n }\n}\n\nfunction createDefaultAddressSelector() {\n return {\n select(addresses) {\n return __awaiter(this, void 0, void 0, function* () {\n return addresses[0];\n });\n },\n };\n}\n\nconst CACHE_KEY = 'SolanaMobileWalletAdapterDefaultAuthorizationCache';\nfunction createDefaultAuthorizationResultCache() {\n let storage;\n try {\n storage = window.localStorage;\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n return {\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!storage) {\n return;\n }\n try {\n storage.removeItem(CACHE_KEY);\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n },\n get() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!storage) {\n return;\n }\n try {\n return JSON.parse(storage.getItem(CACHE_KEY)) || undefined;\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n },\n set(authorizationResult) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!storage) {\n return;\n }\n try {\n storage.setItem(CACHE_KEY, JSON.stringify(authorizationResult));\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n },\n };\n}\n\nfunction defaultWalletNotFoundHandler(mobileWalletAdapter) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof window !== 'undefined') {\n window.location.assign(mobileWalletAdapter.url);\n }\n });\n}\nfunction createDefaultWalletNotFoundHandler() {\n return defaultWalletNotFoundHandler;\n}\n\nexport { SolanaMobileWalletAdapter, SolanaMobileWalletAdapterWalletName, createDefaultAddressSelector, createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler };\n","import type { Wallet } from \"@/types\";\nimport { SolanaMobileWalletAdapterWalletName } from \"@solana-mobile/wallet-adapter-mobile\";\nimport type { Adapter, WalletError } from \"@solana/wallet-adapter-base\";\nimport { Ref, watch, watchEffect } from \"vue\";\n\n/**\n * Handles the wallet adapter events.\n */\nexport function useAdapterListeners(\n wallet: Ref,\n unloadingWindow: Ref,\n isUsingMwaAdapterOnMobile: Ref,\n deselect: (force?: boolean) => void,\n refreshWalletState: () => void,\n handleError: (error: WalletError, adapter?: Adapter) => WalletError\n) {\n // Disconnect previous wallet when selecting a new one.\n watch(wallet, (newWallet, oldWallet) => {\n const newAdapter = newWallet?.adapter;\n const oldAdapter = oldWallet?.adapter;\n if (!newAdapter || !oldAdapter) return;\n if (newAdapter.name === oldAdapter.name) return;\n if (oldAdapter.name === SolanaMobileWalletAdapterWalletName) return;\n oldAdapter.disconnect();\n });\n\n // Add connect, disconnect and error listeners on the wallet adapter.\n watchEffect((onInvalidate) => {\n const adapter = wallet.value?.adapter;\n if (!adapter) return;\n\n const handleAdapterConnect = () => {\n refreshWalletState();\n };\n\n const handleAdapterDisconnect = () => {\n if (unloadingWindow.value || isUsingMwaAdapterOnMobile.value) return;\n deselect(true);\n };\n\n const handleAdapterError = (error: WalletError): WalletError => {\n return handleError(error, adapter);\n };\n\n adapter.on(\"connect\", handleAdapterConnect);\n adapter.on(\"disconnect\", handleAdapterDisconnect);\n adapter.on(\"error\", handleAdapterError);\n\n onInvalidate(() => {\n adapter.off(\"connect\", handleAdapterConnect);\n adapter.off(\"disconnect\", handleAdapterDisconnect);\n adapter.off(\"error\", handleAdapterError);\n });\n });\n}\n","import type { Wallet } from \"@/types\";\nimport type { SolanaMobileWalletAdapter } from \"@solana-mobile/wallet-adapter-mobile\";\nimport { ref, Ref, watch, watchEffect } from \"vue\";\n\n/**\n * Handles the auto-connect logic of the wallet.\n */\nexport function useAutoConnect(\n initialAutoConnect: boolean | Ref,\n wallet: Ref,\n isUsingMwaAdapterOnMobile: Ref,\n connecting: Ref,\n connected: Ref,\n ready: Ref,\n deselect: () => void\n) {\n const autoConnect = ref(initialAutoConnect);\n const hasAttemptedToAutoConnect = ref(false);\n\n // When the adapter changes, clear the `autoConnect` tracking flag.\n watch(wallet, () => {\n hasAttemptedToAutoConnect.value = false;\n });\n\n // If autoConnect is enabled, try to connect when the wallet adapter changes and is ready.\n watchEffect(() => {\n if (\n hasAttemptedToAutoConnect.value ||\n !autoConnect.value ||\n !wallet.value ||\n !ready.value ||\n connected.value ||\n connecting.value\n ) {\n return;\n }\n\n (async () => {\n if (!wallet.value || connecting.value) return;\n\n connecting.value = true;\n hasAttemptedToAutoConnect.value = true;\n try {\n if (isUsingMwaAdapterOnMobile.value) {\n await (\n wallet.value.adapter as SolanaMobileWalletAdapter\n ).autoConnect();\n } else {\n await wallet.value.adapter.connect();\n }\n } catch (error: any) {\n deselect();\n // Don't throw error, but handleError will still be called.\n } finally {\n connecting.value = false;\n }\n })();\n });\n\n return autoConnect;\n}\n","import { SolanaMobileWalletAdapterWalletName } from \"@solana-mobile/wallet-adapter-mobile\";\nimport type { Adapter } from \"@solana/wallet-adapter-base\";\nimport { WalletReadyState } from \"@solana/wallet-adapter-base\";\nimport { computed, Ref } from \"vue\";\n\nexport enum Environment {\n DESKTOP_WEB,\n MOBILE_WEB,\n}\n\nexport function useEnvironment(adapters: Ref): {\n userAgent: string | null;\n uriForAppIdentity: string | null;\n environment: Ref;\n isMobile: Ref;\n} {\n const userAgent = getUserAgent();\n const uriForAppIdentity = getUriForAppIdentity();\n const environment = computed(() => getEnvironment(adapters.value, userAgent));\n const isMobile = computed(() => environment.value === Environment.MOBILE_WEB);\n\n return {\n userAgent,\n uriForAppIdentity,\n environment,\n isMobile,\n };\n}\n\nlet _userAgent: string | null;\nfunction getUserAgent() {\n if (_userAgent === undefined) {\n _userAgent = globalThis.navigator?.userAgent ?? null;\n }\n return _userAgent;\n}\n\nfunction getUriForAppIdentity(): string | null {\n const location = globalThis.location;\n if (location == null) return null;\n return `${location.protocol}//${location.host}`;\n}\n\nfunction getEnvironment(\n adapters: Adapter[],\n userAgent: string | null\n): Environment {\n const hasInstalledAdapters = adapters.some(\n (adapter) =>\n adapter.name !== SolanaMobileWalletAdapterWalletName &&\n adapter.readyState === WalletReadyState.Installed\n );\n\n /**\n * There are only two ways a browser extension adapter should be able to reach `Installed` status:\n *\n * 1. Its browser extension is installed.\n * 2. The app is running on a mobile wallet's in-app browser.\n *\n * In either case, we consider the environment to be desktop-like.\n */\n if (hasInstalledAdapters) {\n return Environment.DESKTOP_WEB;\n }\n\n const isMobile =\n userAgent &&\n // Check we're on a platform that supports MWA.\n isOsThatSupportsMwa(userAgent) &&\n // Ensure we are *not* running in a WebView.\n !isWebView(userAgent);\n\n if (isMobile) {\n return Environment.MOBILE_WEB;\n }\n\n return Environment.DESKTOP_WEB;\n}\n\nfunction isOsThatSupportsMwa(userAgent: string) {\n return /android/i.test(userAgent);\n}\n\nfunction isWebView(userAgent: string) {\n return /(WebView|Version\\/.+(Chrome)\\/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)|; wv\\).+(Chrome)\\/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+))/i.test(\n userAgent\n );\n}\n","import {\n\tAdapter,\n\tWalletError,\n\tWalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport { Ref } from \"vue\";\n\n/**\n * Defines the logic that catches a given wallet error and handle it.\n */\nexport function useErrorHandler(\n\tunloadingWindow: Ref,\n\tonError?: (error: WalletError, adapter?: Adapter) => void\n): (error: WalletError, adapter?: Adapter) => WalletError {\n\treturn (error: WalletError, adapter?: Adapter) => {\n\t\tif (unloadingWindow.value) {\n\t\t\treturn error;\n\t\t}\n\n\t\tif (onError) {\n\t\t\tonError(error, adapter);\n\t\t\treturn error;\n\t\t}\n\n\t\tconsole.error(error, adapter);\n\n\t\tif (\n\t\t\terror instanceof WalletNotReadyError &&\n\t\t\ttypeof window !== \"undefined\" &&\n\t\t\tadapter\n\t\t) {\n\t\t\twindow.open(adapter.url, \"_blank\");\n\t\t}\n\n\t\treturn error;\n\t};\n}\n","import {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache,\n createDefaultWalletNotFoundHandler,\n SolanaMobileWalletAdapter,\n SolanaMobileWalletAdapterWalletName,\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport type { Adapter } from \"@solana/wallet-adapter-base\";\nimport type { Cluster } from \"@solana/web3.js\";\nimport { computed, Ref } from \"vue\";\n\n/**\n * Auto-discovers wallet adapters that follows the mobile wallet standard\n * and adds them to the list of registered adapters.\n */\nexport function useMobileWalletAdapters(\n adapters: Ref,\n isMobile: Ref,\n uriForAppIdentity: string | null,\n cluster: Ref\n): Ref {\n const mwaAdapter = computed(() => {\n if (!isMobile.value) return null;\n\n const existingMobileWalletAdapter = adapters.value.find(\n (adapter) => adapter.name === SolanaMobileWalletAdapterWalletName\n );\n if (existingMobileWalletAdapter) {\n return existingMobileWalletAdapter;\n }\n return new SolanaMobileWalletAdapter({\n addressSelector: createDefaultAddressSelector(),\n appIdentity: { uri: uriForAppIdentity || undefined },\n authorizationResultCache: createDefaultAuthorizationResultCache(),\n cluster: cluster.value,\n onWalletNotFound: createDefaultWalletNotFoundHandler(),\n });\n });\n\n return computed(() => {\n if (\n mwaAdapter.value == null ||\n adapters.value.indexOf(mwaAdapter.value) !== -1\n ) {\n return adapters.value;\n }\n\n return [mwaAdapter.value, ...adapters.value];\n });\n}\n","import type { Wallet } from \"@/types\";\nimport type { Adapter, WalletReadyState } from \"@solana/wallet-adapter-base\";\nimport { Ref, watchEffect } from \"vue\";\n\n/**\n * Listens for `readyState` changes in all registered wallets.\n */\nexport function useReadyStateListeners(wallets: Ref) {\n watchEffect((onInvalidate) => {\n function handleReadyStateChange(\n this: Adapter,\n readyState: WalletReadyState\n ) {\n const prevWallets = wallets.value;\n const index = prevWallets.findIndex(({ adapter }) => adapter === this);\n if (index === -1) return;\n\n wallets.value = [\n ...prevWallets.slice(0, index),\n { adapter: this, readyState },\n ...prevWallets.slice(index + 1),\n ];\n }\n\n wallets.value.forEach(({ adapter }) =>\n adapter.on(\"readyStateChange\", handleReadyStateChange, adapter)\n );\n\n onInvalidate(() =>\n wallets.value.forEach(({ adapter }) =>\n adapter.off(\"readyStateChange\", handleReadyStateChange, adapter)\n )\n );\n });\n}\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$8(__spreadValues$b({}, options), {\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n }));\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provide(key, state);\n return state;\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$a({}, obj);\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(\n () => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))\n );\n}\n\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction syncRef(left, right, options = {}) {\n var _a, _b;\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options;\n let watchLeft;\n let watchRight;\n const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n if (direction === \"both\" || direction === \"ltr\") {\n watchLeft = watch(\n left,\n (newValue) => right.value = transformLTR(newValue),\n { flush, deep, immediate }\n );\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchRight = watch(\n right,\n (newValue) => left.value = transformRTL(newValue),\n { flush, deep, immediate }\n );\n }\n return () => {\n watchLeft == null ? void 0 : watchLeft();\n watchRight == null ? void 0 : watchRight();\n };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$7(__spreadValues$9({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(\n () => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n )\n );\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(\n () => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n )\n );\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(\n () => toValue(list).slice(formIndex).some(\n (element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))\n )\n );\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = ref(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return __spreadValues$8({\n counter,\n reset\n }, controls);\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$7({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n ...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)\n ];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0,\n maxWait = void 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\",\n \"maxWait\"\n ]);\n return watchWithFilter(\n source,\n cb,\n __spreadProps$6(__spreadValues$6({}, watchOptions), {\n eventFilter: debounceFilter(debounce, { maxWait })\n })\n );\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n __spreadProps$5(__spreadValues$5({}, options), {\n deep: true\n })\n );\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n __spreadProps$4(__spreadValues$4({}, watchOptions), { flush: \"sync\" })\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n __spreadProps$3(__spreadValues$3({}, options), {\n immediate: true\n })\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n __spreadProps$2(__spreadValues$2({}, watchOptions), {\n eventFilter\n })\n );\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(\n source,\n cb,\n __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n })\n );\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return __spreadProps(__spreadValues({}, res), {\n trigger\n });\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(\n source,\n (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n },\n options\n );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isClient, isDef, isDefined, isIOS, isObject, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { noop, makeDestructurable, camelize, toValue, isClient, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, isObject, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, useTimeoutFn, pausableWatch, toRef, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nvar __defProp$q = Object.defineProperty;\nvar __defProps$d = Object.defineProperties;\nvar __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$t = Object.getOwnPropertySymbols;\nvar __hasOwnProp$t = Object.prototype.hasOwnProperty;\nvar __propIsEnum$t = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$q = (obj, key, value) => key in obj ? __defProp$q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$q = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$t.call(b, prop))\n __defNormalProp$q(a, prop, b[prop]);\n if (__getOwnPropSymbols$t)\n for (var prop of __getOwnPropSymbols$t(b)) {\n if (__propIsEnum$t.call(b, prop))\n __defNormalProp$q(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));\nfunction createReusableTemplate(options = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, __spreadProps$d(__spreadValues$q({}, keysToCamelKebabCase(attrs)), { $slots: slots }));\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, options2));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nvar __defProp$p = Object.defineProperty;\nvar __defProps$c = Object.defineProperties;\nvar __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$s = Object.getOwnPropertySymbols;\nvar __hasOwnProp$s = Object.prototype.hasOwnProperty;\nvar __propIsEnum$s = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$p = (obj, key, value) => key in obj ? __defProp$p(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$p = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$s.call(b, prop))\n __defNormalProp$p(a, prop, b[prop]);\n if (__getOwnPropSymbols$s)\n for (var prop of __getOwnPropSymbols$s(b)) {\n if (__propIsEnum$s.call(b, prop))\n __defNormalProp$p(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions);\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = computedWithControl(\n () => null,\n () => getDeepActiveElement()\n );\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - (previousFrameTimestamp || timestamp);\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n !animate.value && update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n el && update();\n });\n watch(() => keyframes, (value) => {\n !animate.value && update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => {\n nextTick(() => update(true));\n });\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (commitStyles)\n animate.value.commitStyles();\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options;\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nvar __defProp$o = Object.defineProperty;\nvar __defProps$b = Object.defineProperties;\nvar __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$r = Object.getOwnPropertySymbols;\nvar __hasOwnProp$r = Object.prototype.hasOwnProperty;\nvar __propIsEnum$r = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$o = (obj, key, value) => key in obj ? __defProp$o(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$o = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$r.call(b, prop))\n __defNormalProp$o(a, prop, b[prop]);\n if (__getOwnPropSymbols$r)\n for (var prop of __getOwnPropSymbols$r(b)) {\n if (__propIsEnum$r.call(b, prop))\n __defNormalProp$o(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return __spreadProps$b(__spreadValues$o({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n });\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery({ navigator = defaultNavigator } = {}) {\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = breakpoints[k];\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return Object.assign(shortcutMethods, {\n greater(k) {\n return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nvar __defProp$n = Object.defineProperty;\nvar __getOwnPropSymbols$q = Object.getOwnPropertySymbols;\nvar __hasOwnProp$q = Object.prototype.hasOwnProperty;\nvar __propIsEnum$q = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$n = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$q.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n if (__getOwnPropSymbols$q)\n for (var prop of __getOwnPropSymbols$q(b)) {\n if (__propIsEnum$q.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n }\n return a;\n};\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive(__spreadValues$n({\n trigger,\n state: state2,\n length,\n origin\n }, refs));\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value) {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value)\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nvar __defProp$m = Object.defineProperty;\nvar __defProps$a = Object.defineProperties;\nvar __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$p = Object.getOwnPropertySymbols;\nvar __hasOwnProp$p = Object.prototype.hasOwnProperty;\nvar __propIsEnum$p = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$m = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$p.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n if (__getOwnPropSymbols$p)\n for (var prop of __getOwnPropSymbols$p(b)) {\n if (__propIsEnum$p.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, __spreadProps$a(__spreadValues$m({}, options), {\n deep,\n immediate\n }));\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$l = Object.defineProperty;\nvar __getOwnPropSymbols$o = Object.getOwnPropertySymbols;\nvar __hasOwnProp$o = Object.prototype.hasOwnProperty;\nvar __propIsEnum$o = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$l = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$o.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n if (__getOwnPropSymbols$o)\n for (var prop of __getOwnPropSymbols$o(b)) {\n if (__propIsEnum$o.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n }\n return a;\n};\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n }\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return __spreadValues$l(__spreadValues$l({}, rawInit), value);\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropSymbols$n = Object.getOwnPropertySymbols;\nvar __hasOwnProp$n = Object.prototype.hasOwnProperty;\nvar __propIsEnum$n = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$k = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$n.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n if (__getOwnPropSymbols$n)\n for (var prop of __getOwnPropSymbols$n(b)) {\n if (__propIsEnum$n.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = __spreadValues$k({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(\n () => store.value === \"auto\" ? system.value : store.value\n );\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nvar __getOwnPropSymbols$m = Object.getOwnPropertySymbols;\nvar __hasOwnProp$m = Object.prototype.hasOwnProperty;\nvar __propIsEnum$m = Object.prototype.propertyIsEnumerable;\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$m.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$m)\n for (var prop of __getOwnPropSymbols$m(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$m.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$3(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$l = Object.getOwnPropertySymbols;\nvar __hasOwnProp$l = Object.prototype.hasOwnProperty;\nvar __propIsEnum$l = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$j = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n if (__getOwnPropSymbols$l)\n for (var prop of __getOwnPropSymbols$l(b)) {\n if (__propIsEnum$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode(__spreadProps$9(__spreadValues$j({}, options), {\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n }));\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (mode.system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$k = Object.getOwnPropertySymbols;\nvar __hasOwnProp$k = Object.prototype.hasOwnProperty;\nvar __propIsEnum$k = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$i = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n if (__getOwnPropSymbols$k)\n for (var prop of __getOwnPropSymbols$k(b)) {\n if (__propIsEnum$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, __spreadProps$8(__spreadValues$i({}, options), { clone: options.clone || deep, setSource }));\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return __spreadProps$8(__spreadValues$i({}, manualHistory), {\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n });\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n if (__getOwnPropSymbols$j)\n for (var prop of __getOwnPropSymbols$j(b)) {\n if (__propIsEnum$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, __spreadProps$7(__spreadValues$h({}, options), { eventFilter: filter }));\n return __spreadValues$h({}, history);\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio({\n window = defaultWindow\n} = {}) {\n const pixelRatio = ref(1);\n if (window) {\n let observe = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe, { once: true });\n }, cleanup = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe);\n };\n let media;\n observe();\n tryOnScopeDispose(cleanup);\n }\n return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nvar __defProp$g = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n if (__getOwnPropSymbols$i)\n for (var prop of __getOwnPropSymbols$i(b)) {\n if (__propIsEnum$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n handle: draggingHandle = target\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n if (!filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const rect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\")\n x = e.clientX - pressedDelta.value.x;\n if (axis === \"y\" || axis === \"both\")\n y = e.clientY - pressedDelta.value.y;\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return __spreadProps$6(__spreadValues$g({}, toRefs(position)), {\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n });\n}\n\nfunction useDropZone(target, options = {}) {\n const isOverDropZone = ref(false);\n const files = shallowRef(null);\n let counter = 0;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const getFiles = (event) => {\n var _a, _b;\n const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n return files.value = list.length === 0 ? null : list;\n };\n useEventListener(target, \"dragenter\", (event) => {\n var _a;\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n (_a = _options.onEnter) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener(target, \"dragover\", (event) => {\n var _a;\n event.preventDefault();\n (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener(target, \"dragleave\", (event) => {\n var _a;\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener(target, \"drop\", (event) => {\n var _a;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$h.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$h)\n for (var prop of __getOwnPropSymbols$h(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$h.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(\n () => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]\n );\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n }\n return a;\n};\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return __spreadValues$f({\n isSupported,\n element\n }, controls);\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n return {\n width,\n height\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return __spreadValues$e(__spreadValues$e({}, ctx), await callback(ctx));\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = __spreadValues$e(__spreadValues$e({}, ctx), await callback(ctx));\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, options), args[0]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n });\n } else {\n fetchOptions = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, fetchOptions), args[0]), {\n headers: __spreadValues$e(__spreadValues$e({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n });\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, options), args[1]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n });\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = { immediate: true, refetch: false, timeout: 0 };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = __spreadValues$e(__spreadValues$e({}, options), args[0]);\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = __spreadValues$e(__spreadValues$e({}, options), args[1]);\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = __spreadProps$5(__spreadValues$e({}, fetchOptions), {\n signal: controller.signal\n });\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n const execute = async (throwOnFailed = false) => {\n var _a2;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const payload = toValue(config.payload);\n if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: __spreadValues$e(__spreadValues$e({}, defaultFetchOptions), fetchOptions),\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return new Promise((resolve, reject) => {\n var _a3;\n fetch(\n context.url,\n __spreadProps$5(__spreadValues$e(__spreadValues$e({}, defaultFetchOptions), context.options), {\n headers: __spreadValues$e(__spreadValues$e({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n })\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch)\n ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError)\n ({ error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n error.value = errorData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n trigger(files.value);\n };\n }\n const reset = () => {\n files.value = null;\n if (input)\n input.value = \"\";\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = __spreadValues$d(__spreadValues$d(__spreadValues$d({}, DEFAULT_OPTIONS), options), localOptions);\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onChange\n };\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker(__spreadValues$c(__spreadValues$c({}, toValue(options)), _options));\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$c(__spreadValues$c({}, options), _options));\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$c(__spreadValues$c({}, options), _options));\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n });\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(\n () => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0\n );\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return __spreadProps$4(__spreadValues$b({}, gamepad), {\n id: gamepad.id,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n });\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n __spreadValues$a({\n resetOnExecute: true\n }, asyncStateOptions)\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n if (!window)\n return;\n const el = target === window ? target.document.documentElement : target === window.document ? target.documentElement : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n if (!window)\n return;\n const eventTarget = e.target === window.document ? e.target.documentElement : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = reactive(useScroll(\n element,\n __spreadProps$3(__spreadValues$9({}, options), {\n offset: __spreadValues$9({\n [direction]: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n const el = toValue(element);\n if (el instanceof Window)\n return window.document.documentElement;\n if (el instanceof Document)\n return document.documentElement;\n return el;\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value)\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = __spreadValues$8(__spreadValues$8({}, defaultOptions), options);\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return reactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return reactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst BuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n eventFilter\n } = options;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : BuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + window.pageXOffset;\n elementPositionY.value = top + window.pageYOffset;\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n useEventListener(window, \"mouseup\", onReleased, { passive: true });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"drop\", onReleased, { passive: true });\n useEventListener(window, \"dragend\", onReleased, { passive: true });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n useEventListener(window, \"touchend\", onReleased, { passive: true });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return __spreadValues$7({\n now\n }, controls);\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page))\n syncRef(page, currentPage);\n if (isRef(pageSize))\n syncRef(pageSize, currentPageSize);\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction usePerformanceObserver(options, callback) {\n const _a = options, {\n window = defaultWindow,\n immediate = true\n } = _a, performanceOptions = __objRest$1(_a, [\n \"window\",\n \"immediate\"\n ]);\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return __spreadProps$2(__spreadValues$6({}, toRefs(state)), {\n isInside\n });\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n })\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (!isSupported.value)\n return Promise.reject(new Error(\"Not supported\"));\n return screenOrientation.lock(type);\n };\n const unlockOrientation = () => {\n if (isSupported.value)\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = toValue(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n ele,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = toValue(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = __spreadValues$5(__spreadValues$5({}, toValue(shareOptions)), toValue(overrideOptions));\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = __spreadValues$4(__spreadValues$4({}, rawInit), value);\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const textareaScrollHeight = ref(1);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style.height = \"1px\";\n textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n if (options == null ? void 0 : options.styleTarget)\n toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style.height = height;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, __spreadProps$1(__spreadValues$3({}, options), { eventFilter: filter }));\n return __spreadValues$3({}, history);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return __spreadValues$2({\n timeAgo\n }, controls);\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval, { immediate: false });\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$1({\n timestamp: ts\n }, controls);\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument\n } = options;\n const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n return title;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, __spreadProps(__spreadValues({}, options), {\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n }));\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n watch(\n () => props[key],\n (v) => proxy.value = cloneFn(v)\n );\n watch(\n proxy,\n (v) => {\n if (v !== props[key] || deep)\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props)\n ret[key] = useVModel(props, key, emit, options);\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n}\n\nfunction useWebNotification(defaultOptions = {}) {\n const {\n window = defaultWindow\n } = defaultOptions;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const notification = ref(null);\n const requestPermission = async () => {\n if (!isSupported.value)\n return;\n if (\"permission\" in Notification && Notification.permission !== \"denied\")\n await Notification.requestPermission();\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value)\n return;\n await requestPermission();\n const options = Object.assign({}, defaultOptions, overrides);\n notification.value = new Notification(options.title || \"\", options);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n tryOnMounted(async () => {\n if (isSupported.value)\n await requestPermission();\n });\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const close = (code = 1e3, reason) => {\n if (!wsRef.value)\n return;\n explicitlyClosed = true;\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n useEventListener(window, \"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction depsParser(deps) {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus({ window = defaultWindow } = {}) {\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll({ window = defaultWindow } = {}) {\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const x = ref(window.scrollX);\n const y = ref(window.scrollY);\n useEventListener(\n window,\n \"scroll\",\n () => {\n x.value = window.scrollX;\n y.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { SolanaMobileWalletAdapterWalletName } from \"@solana-mobile/wallet-adapter-mobile\";\nimport type { WalletName } from \"@solana/wallet-adapter-base\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { computed, Ref } from \"vue\";\n\n/**\n * Selects a wallet from its name and stores it in local storage.\n */\nexport function useSelectWalletName(\n\tlocalStorageKey: string,\n\tisMobile: Ref\n): {\n\tname: Ref;\n\tisUsingMwaAdapter: Ref;\n\tisUsingMwaAdapterOnMobile: Ref;\n\tselect: (name: WalletName) => void;\n\tdeselect: (force?: boolean) => void;\n} {\n\tconst name: Ref = useLocalStorage(\n\t\tlocalStorageKey,\n\t\tisMobile.value ? SolanaMobileWalletAdapterWalletName : null\n\t);\n\n\tconst isUsingMwaAdapter = computed(\n\t\t() => name.value === SolanaMobileWalletAdapterWalletName\n\t);\n\n\tconst isUsingMwaAdapterOnMobile = computed(\n\t\t() => isUsingMwaAdapter.value && isMobile.value\n\t);\n\n\tconst select = (walletName: WalletName): void => {\n\t\tconsole.log(\"Setting Storage\", walletName)\n\t\tlocalStorage.setItem(localStorageKey, walletName)\n\t\tif (name.value !== walletName) {\n\t\t\tname.value = walletName;\n\t\t}\n\t};\n\n\tconst deselect = (force = true): void => {\n\t\tif (force || isUsingMwaAdapter.value) {\n\t\t\tname.value = null;\n\t\t}\n\t};\n\n\treturn {\n\t\tname,\n\t\tisUsingMwaAdapter,\n\t\tisUsingMwaAdapterOnMobile,\n\t\tselect,\n\t\tdeselect,\n\t};\n}\n","/** Name of the feature. */\nexport const SolanaSignAndSendTransaction = 'solana:signAndSendTransaction';\n//# sourceMappingURL=signAndSendTransaction.js.map","/** Name of the feature. */\nexport const SolanaSignIn = 'solana:signIn';\n//# sourceMappingURL=signIn.js.map","/** Name of the feature. */\nexport const SolanaSignMessage = 'solana:signMessage';\n//# sourceMappingURL=signMessage.js.map","/** Name of the feature. */\nexport const SolanaSignTransaction = 'solana:signTransaction';\n//# sourceMappingURL=signTransaction.js.map","/**\n * TODO: docs\n */\nexport function getCommitment(commitment) {\n switch (commitment) {\n case 'processed':\n case 'confirmed':\n case 'finalized':\n case undefined:\n return commitment;\n case 'recent':\n return 'processed';\n case 'single':\n case 'singleGossip':\n return 'confirmed';\n case 'max':\n case 'root':\n return 'finalized';\n default:\n return undefined;\n }\n}\n//# sourceMappingURL=commitment.js.map","/** Solana Mainnet (beta) cluster, e.g. https://api.mainnet-beta.solana.com */\nexport const SOLANA_MAINNET_CHAIN = 'solana:mainnet';\n/** Solana Devnet cluster, e.g. https://api.devnet.solana.com */\nexport const SOLANA_DEVNET_CHAIN = 'solana:devnet';\n/** Solana Testnet cluster, e.g. https://api.testnet.solana.com */\nexport const SOLANA_TESTNET_CHAIN = 'solana:testnet';\n/** Solana Localnet cluster, e.g. http://localhost:8899 */\nexport const SOLANA_LOCALNET_CHAIN = 'solana:localnet';\n/** Array of all Solana clusters */\nexport const SOLANA_CHAINS = [\n SOLANA_MAINNET_CHAIN,\n SOLANA_DEVNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n SOLANA_LOCALNET_CHAIN,\n];\n/**\n * Check if a chain corresponds with one of the Solana clusters.\n */\nexport function isSolanaChain(chain) {\n return SOLANA_CHAINS.includes(chain);\n}\n//# sourceMappingURL=index.js.map","import { SOLANA_DEVNET_CHAIN, SOLANA_LOCALNET_CHAIN, SOLANA_MAINNET_CHAIN, SOLANA_TESTNET_CHAIN, } from '@solana/wallet-standard-chains';\n/** TODO: docs */\nexport const MAINNET_ENDPOINT = 'https://api.mainnet-beta.solana.com';\n/** TODO: docs */\nexport const DEVNET_ENDPOINT = 'https://api.devnet.solana.com';\n/** TODO: docs */\nexport const TESTNET_ENDPOINT = 'https://api.testnet.solana.com';\n/** TODO: docs */\nexport const LOCALNET_ENDPOINT = 'http://localhost:8899';\n/**\n * TODO: docs\n */\nexport function getChainForEndpoint(endpoint) {\n if (endpoint.includes(MAINNET_ENDPOINT))\n return SOLANA_MAINNET_CHAIN;\n if (/\\bdevnet\\b/i.test(endpoint))\n return SOLANA_DEVNET_CHAIN;\n if (/\\btestnet\\b/i.test(endpoint))\n return SOLANA_TESTNET_CHAIN;\n if (/\\blocalhost\\b/i.test(endpoint) || /\\b127\\.0\\.0\\.1\\b/.test(endpoint))\n return SOLANA_LOCALNET_CHAIN;\n return SOLANA_MAINNET_CHAIN;\n}\n/**\n * TODO: docs\n */\nexport function getEndpointForChain(chain, endpoint) {\n if (endpoint)\n return endpoint;\n if (chain === SOLANA_MAINNET_CHAIN)\n return MAINNET_ENDPOINT;\n if (chain === SOLANA_DEVNET_CHAIN)\n return DEVNET_ENDPOINT;\n if (chain === SOLANA_TESTNET_CHAIN)\n return TESTNET_ENDPOINT;\n if (chain === SOLANA_LOCALNET_CHAIN)\n return LOCALNET_ENDPOINT;\n return MAINNET_ENDPOINT;\n}\n//# sourceMappingURL=endpoint.js.map","/** Name of the feature. */\nexport const StandardConnect = 'standard:connect';\n/**\n * @deprecated Use {@link StandardConnect} instead.\n *\n * @group Deprecated\n */\nexport const Connect = StandardConnect;\n//# sourceMappingURL=connect.js.map","/** Name of the feature. */\nexport const StandardDisconnect = 'standard:disconnect';\n/**\n * @deprecated Use {@link StandardDisconnect} instead.\n *\n * @group Deprecated\n */\nexport const Disconnect = StandardDisconnect;\n//# sourceMappingURL=disconnect.js.map","/** Name of the feature. */\nexport const StandardEvents = 'standard:events';\n/**\n * @deprecated Use {@link StandardEvents} instead.\n *\n * @group Deprecated\n */\nexport const Events = StandardEvents;\n//# sourceMappingURL=events.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ReadonlyWalletAccount_address, _ReadonlyWalletAccount_publicKey, _ReadonlyWalletAccount_chains, _ReadonlyWalletAccount_features, _ReadonlyWalletAccount_label, _ReadonlyWalletAccount_icon;\n/**\n * Base implementation of a {@link \"@wallet-standard/base\".WalletAccount} to be used or extended by a\n * {@link \"@wallet-standard/base\".Wallet}.\n *\n * `WalletAccount` properties must be read-only. This class enforces this by making all properties\n * [truly private](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields) and\n * read-only, using getters for access, returning copies instead of references, and calling\n * [Object.freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)\n * on the instance.\n *\n * @group Account\n */\nexport class ReadonlyWalletAccount {\n /**\n * Create and freeze a read-only account.\n *\n * @param account Account to copy properties from.\n */\n constructor(account) {\n _ReadonlyWalletAccount_address.set(this, void 0);\n _ReadonlyWalletAccount_publicKey.set(this, void 0);\n _ReadonlyWalletAccount_chains.set(this, void 0);\n _ReadonlyWalletAccount_features.set(this, void 0);\n _ReadonlyWalletAccount_label.set(this, void 0);\n _ReadonlyWalletAccount_icon.set(this, void 0);\n if (new.target === ReadonlyWalletAccount) {\n Object.freeze(this);\n }\n __classPrivateFieldSet(this, _ReadonlyWalletAccount_address, account.address, \"f\");\n __classPrivateFieldSet(this, _ReadonlyWalletAccount_publicKey, account.publicKey.slice(), \"f\");\n __classPrivateFieldSet(this, _ReadonlyWalletAccount_chains, account.chains.slice(), \"f\");\n __classPrivateFieldSet(this, _ReadonlyWalletAccount_features, account.features.slice(), \"f\");\n __classPrivateFieldSet(this, _ReadonlyWalletAccount_label, account.label, \"f\");\n __classPrivateFieldSet(this, _ReadonlyWalletAccount_icon, account.icon, \"f\");\n }\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.address | WalletAccount::address} */\n get address() {\n return __classPrivateFieldGet(this, _ReadonlyWalletAccount_address, \"f\");\n }\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.publicKey | WalletAccount::publicKey} */\n get publicKey() {\n return __classPrivateFieldGet(this, _ReadonlyWalletAccount_publicKey, \"f\").slice();\n }\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.chains | WalletAccount::chains} */\n get chains() {\n return __classPrivateFieldGet(this, _ReadonlyWalletAccount_chains, \"f\").slice();\n }\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.features | WalletAccount::features} */\n get features() {\n return __classPrivateFieldGet(this, _ReadonlyWalletAccount_features, \"f\").slice();\n }\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.label | WalletAccount::label} */\n get label() {\n return __classPrivateFieldGet(this, _ReadonlyWalletAccount_label, \"f\");\n }\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.icon | WalletAccount::icon} */\n get icon() {\n return __classPrivateFieldGet(this, _ReadonlyWalletAccount_icon, \"f\");\n }\n}\n_ReadonlyWalletAccount_address = new WeakMap(), _ReadonlyWalletAccount_publicKey = new WeakMap(), _ReadonlyWalletAccount_chains = new WeakMap(), _ReadonlyWalletAccount_features = new WeakMap(), _ReadonlyWalletAccount_label = new WeakMap(), _ReadonlyWalletAccount_icon = new WeakMap();\n/**\n * Efficiently compare {@link Indexed} arrays (e.g. `Array` and `Uint8Array`).\n *\n * @param a An array.\n * @param b Another array.\n *\n * @return `true` if the arrays have the same length and elements, `false` otherwise.\n *\n * @group Util\n */\nexport function arraysEqual(a, b) {\n if (a === b)\n return true;\n const length = a.length;\n if (length !== b.length)\n return false;\n for (let i = 0; i < length; i++) {\n if (a[i] !== b[i])\n return false;\n }\n return true;\n}\n/**\n * Efficiently compare byte arrays, using {@link arraysEqual}.\n *\n * @param a A byte array.\n * @param b Another byte array.\n *\n * @return `true` if the byte arrays have the same length and bytes, `false` otherwise.\n *\n * @group Util\n */\nexport function bytesEqual(a, b) {\n return arraysEqual(a, b);\n}\n/**\n * Efficiently concatenate byte arrays without modifying them.\n *\n * @param first A byte array.\n * @param others Additional byte arrays.\n *\n * @return New byte array containing the concatenation of all the byte arrays.\n *\n * @group Util\n */\nexport function concatBytes(first, ...others) {\n const length = others.reduce((length, bytes) => length + bytes.length, first.length);\n const bytes = new Uint8Array(length);\n bytes.set(first, 0);\n for (const other of others) {\n bytes.set(other, bytes.length);\n }\n return bytes;\n}\n/**\n * Create a new object with a subset of fields from a source object.\n *\n * @param source Object to pick fields from.\n * @param keys Names of fields to pick.\n *\n * @return New object with only the picked fields.\n *\n * @group Util\n */\nexport function pick(source, ...keys) {\n const picked = {};\n for (const key of keys) {\n picked[key] = source[key];\n }\n return picked;\n}\n/**\n * Call a callback function, catch an error if it throws, and log the error without rethrowing.\n *\n * @param callback Function to call.\n *\n * @group Util\n */\nexport function guard(callback) {\n try {\n callback();\n }\n catch (error) {\n console.error(error);\n }\n}\n//# sourceMappingURL=util.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _StandardWalletAdapter_instances, _StandardWalletAdapter_account, _StandardWalletAdapter_publicKey, _StandardWalletAdapter_connecting, _StandardWalletAdapter_disconnecting, _StandardWalletAdapter_off, _StandardWalletAdapter_supportedTransactionVersions, _StandardWalletAdapter_wallet, _StandardWalletAdapter_readyState, _StandardWalletAdapter_connect, _StandardWalletAdapter_connected, _StandardWalletAdapter_disconnected, _StandardWalletAdapter_reset, _StandardWalletAdapter_changed, _StandardWalletAdapter_signTransaction, _StandardWalletAdapter_signAllTransactions, _StandardWalletAdapter_signMessage, _StandardWalletAdapter_signIn;\nimport { BaseWalletAdapter, isVersionedTransaction, WalletAccountError, WalletConfigError, WalletConnectionError, WalletDisconnectedError, WalletDisconnectionError, WalletError, WalletNotConnectedError, WalletNotReadyError, WalletPublicKeyError, WalletReadyState, WalletSendTransactionError, WalletSignInError, WalletSignMessageError, WalletSignTransactionError, } from '@solana/wallet-adapter-base';\nimport { SolanaSignAndSendTransaction, SolanaSignIn, SolanaSignMessage, SolanaSignTransaction, } from '@solana/wallet-standard-features';\nimport { getChainForEndpoint, getCommitment } from '@solana/wallet-standard-util';\nimport { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';\nimport { StandardConnect, StandardDisconnect, StandardEvents, } from '@wallet-standard/features';\nimport { arraysEqual } from '@wallet-standard/wallet';\nimport bs58 from 'bs58';\n/** TODO: docs */\nexport class StandardWalletAdapter extends BaseWalletAdapter {\n constructor({ wallet }) {\n super();\n _StandardWalletAdapter_instances.add(this);\n _StandardWalletAdapter_account.set(this, void 0);\n _StandardWalletAdapter_publicKey.set(this, void 0);\n _StandardWalletAdapter_connecting.set(this, void 0);\n _StandardWalletAdapter_disconnecting.set(this, void 0);\n _StandardWalletAdapter_off.set(this, void 0);\n _StandardWalletAdapter_supportedTransactionVersions.set(this, void 0);\n _StandardWalletAdapter_wallet.set(this, void 0);\n _StandardWalletAdapter_readyState.set(this, typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.Installed);\n _StandardWalletAdapter_changed.set(this, (properties) => {\n // If accounts have changed on the wallet, reflect this on the adapter.\n if ('accounts' in properties) {\n const account = __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").accounts[0];\n // If the adapter isn't connected, or is disconnecting, or the first account hasn't changed, do nothing.\n if (__classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\") && !__classPrivateFieldGet(this, _StandardWalletAdapter_disconnecting, \"f\") && account !== __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\")) {\n // If there's a connected account, connect the adapter. Otherwise, disconnect it.\n if (account) {\n // Connect the adapter.\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_connected).call(this, account);\n }\n else {\n // Emit an error because the wallet spontaneously disconnected.\n this.emit('error', new WalletDisconnectedError());\n // Disconnect the adapter.\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_disconnected).call(this);\n }\n }\n }\n // After reflecting account changes, if features have changed on the wallet, reflect this on the adapter.\n if ('features' in properties) {\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_reset).call(this);\n }\n });\n __classPrivateFieldSet(this, _StandardWalletAdapter_wallet, wallet, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_account, null, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_publicKey, null, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_connecting, false, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_disconnecting, false, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_off, __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[StandardEvents].on('change', __classPrivateFieldGet(this, _StandardWalletAdapter_changed, \"f\")), \"f\");\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_reset).call(this);\n }\n get name() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").name;\n }\n get url() {\n return 'https://github.com/solana-labs/wallet-standard';\n }\n get icon() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").icon;\n }\n get readyState() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_readyState, \"f\");\n }\n get publicKey() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_publicKey, \"f\");\n }\n get connecting() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_connecting, \"f\");\n }\n get supportedTransactionVersions() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_supportedTransactionVersions, \"f\");\n }\n get wallet() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\");\n }\n get standard() {\n return true;\n }\n destroy() {\n __classPrivateFieldSet(this, _StandardWalletAdapter_account, null, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_publicKey, null, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_connecting, false, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_disconnecting, false, \"f\");\n const off = __classPrivateFieldGet(this, _StandardWalletAdapter_off, \"f\");\n if (off) {\n __classPrivateFieldSet(this, _StandardWalletAdapter_off, null, \"f\");\n off();\n }\n }\n async autoConnect() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_connect).call(this, { silent: true });\n }\n async connect() {\n return __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_connect).call(this);\n }\n async disconnect() {\n if (StandardDisconnect in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features) {\n try {\n __classPrivateFieldSet(this, _StandardWalletAdapter_disconnecting, true, \"f\");\n await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[StandardDisconnect].disconnect();\n }\n catch (error) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n finally {\n __classPrivateFieldSet(this, _StandardWalletAdapter_disconnecting, false, \"f\");\n }\n }\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_disconnected).call(this);\n }\n async sendTransaction(transaction, connection, options = {}) {\n try {\n const account = __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\");\n if (!account)\n throw new WalletNotConnectedError();\n let feature;\n if (SolanaSignAndSendTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features) {\n if (account.features.includes(SolanaSignAndSendTransaction)) {\n feature = SolanaSignAndSendTransaction;\n }\n else if (SolanaSignTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features &&\n account.features.includes(SolanaSignTransaction)) {\n feature = SolanaSignTransaction;\n }\n else {\n throw new WalletAccountError();\n }\n }\n else if (SolanaSignTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features) {\n if (!account.features.includes(SolanaSignTransaction))\n throw new WalletAccountError();\n feature = SolanaSignTransaction;\n }\n else {\n throw new WalletConfigError();\n }\n const chain = getChainForEndpoint(connection.rpcEndpoint);\n if (!account.chains.includes(chain))\n throw new WalletSendTransactionError();\n try {\n const { signers, ...sendOptions } = options;\n let serializedTransaction;\n if (isVersionedTransaction(transaction)) {\n signers?.length && transaction.sign(signers);\n serializedTransaction = transaction.serialize();\n }\n else {\n transaction = (await this.prepareTransaction(transaction, connection, sendOptions));\n signers?.length && transaction.partialSign(...signers);\n serializedTransaction = new Uint8Array(transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n }));\n }\n if (feature === SolanaSignAndSendTransaction) {\n const [output] = await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignAndSendTransaction].signAndSendTransaction({\n account,\n chain,\n transaction: serializedTransaction,\n options: {\n preflightCommitment: getCommitment(sendOptions.preflightCommitment || connection.commitment),\n skipPreflight: sendOptions.skipPreflight,\n maxRetries: sendOptions.maxRetries,\n minContextSlot: sendOptions.minContextSlot,\n },\n });\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return bs58.encode(output.signature);\n }\n else {\n const [output] = await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignTransaction].signTransaction({\n account,\n chain,\n transaction: serializedTransaction,\n options: {\n preflightCommitment: getCommitment(sendOptions.preflightCommitment || connection.commitment),\n minContextSlot: sendOptions.minContextSlot,\n },\n });\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return await connection.sendRawTransaction(output.signedTransaction, {\n ...sendOptions,\n preflightCommitment: getCommitment(sendOptions.preflightCommitment || connection.commitment),\n });\n }\n }\n catch (error) {\n if (error instanceof WalletError)\n throw error;\n throw new WalletSendTransactionError(error?.message, error);\n }\n }\n catch (error) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n_StandardWalletAdapter_account = new WeakMap(), _StandardWalletAdapter_publicKey = new WeakMap(), _StandardWalletAdapter_connecting = new WeakMap(), _StandardWalletAdapter_disconnecting = new WeakMap(), _StandardWalletAdapter_off = new WeakMap(), _StandardWalletAdapter_supportedTransactionVersions = new WeakMap(), _StandardWalletAdapter_wallet = new WeakMap(), _StandardWalletAdapter_readyState = new WeakMap(), _StandardWalletAdapter_changed = new WeakMap(), _StandardWalletAdapter_instances = new WeakSet(), _StandardWalletAdapter_connect = async function _StandardWalletAdapter_connect(input) {\n try {\n if (this.connected || this.connecting)\n return;\n if (__classPrivateFieldGet(this, _StandardWalletAdapter_readyState, \"f\") !== WalletReadyState.Installed)\n throw new WalletNotReadyError();\n __classPrivateFieldSet(this, _StandardWalletAdapter_connecting, true, \"f\");\n if (!__classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").accounts.length) {\n try {\n await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[StandardConnect].connect(input);\n }\n catch (error) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n const account = __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").accounts[0];\n if (!account)\n throw new WalletAccountError();\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_connected).call(this, account);\n }\n catch (error) {\n this.emit('error', error);\n throw error;\n }\n finally {\n __classPrivateFieldSet(this, _StandardWalletAdapter_connecting, false, \"f\");\n }\n}, _StandardWalletAdapter_connected = function _StandardWalletAdapter_connected(account) {\n let publicKey;\n try {\n // Use account.address instead of account.publicKey since address could be a PDA\n publicKey = new PublicKey(account.address);\n }\n catch (error) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n __classPrivateFieldSet(this, _StandardWalletAdapter_account, account, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_publicKey, publicKey, \"f\");\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_reset).call(this);\n this.emit('connect', publicKey);\n}, _StandardWalletAdapter_disconnected = function _StandardWalletAdapter_disconnected() {\n __classPrivateFieldSet(this, _StandardWalletAdapter_account, null, \"f\");\n __classPrivateFieldSet(this, _StandardWalletAdapter_publicKey, null, \"f\");\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_reset).call(this);\n this.emit('disconnect');\n}, _StandardWalletAdapter_reset = function _StandardWalletAdapter_reset() {\n const supportedTransactionVersions = SolanaSignAndSendTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features\n ? __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignAndSendTransaction].supportedTransactionVersions\n : __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignTransaction].supportedTransactionVersions;\n __classPrivateFieldSet(this, _StandardWalletAdapter_supportedTransactionVersions, arraysEqual(supportedTransactionVersions, ['legacy'])\n ? null\n : new Set(supportedTransactionVersions), \"f\");\n if (SolanaSignTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features && __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\")?.features.includes(SolanaSignTransaction)) {\n this.signTransaction = __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_signTransaction);\n this.signAllTransactions = __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_signAllTransactions);\n }\n else {\n delete this.signTransaction;\n delete this.signAllTransactions;\n }\n if (SolanaSignMessage in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features && __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\")?.features.includes(SolanaSignMessage)) {\n this.signMessage = __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_signMessage);\n }\n else {\n delete this.signMessage;\n }\n if (SolanaSignIn in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features) {\n this.signIn = __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_signIn);\n }\n else {\n delete this.signIn;\n }\n}, _StandardWalletAdapter_signTransaction = async function _StandardWalletAdapter_signTransaction(transaction) {\n try {\n const account = __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\");\n if (!account)\n throw new WalletNotConnectedError();\n if (!(SolanaSignTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features))\n throw new WalletConfigError();\n if (!account.features.includes(SolanaSignTransaction))\n throw new WalletAccountError();\n try {\n const signedTransactions = await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignTransaction].signTransaction({\n account,\n transaction: isVersionedTransaction(transaction)\n ? transaction.serialize()\n : new Uint8Array(transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })),\n });\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const serializedTransaction = signedTransactions[0].signedTransaction;\n return (isVersionedTransaction(transaction)\n ? VersionedTransaction.deserialize(serializedTransaction)\n : Transaction.from(serializedTransaction));\n }\n catch (error) {\n if (error instanceof WalletError)\n throw error;\n throw new WalletSignTransactionError(error?.message, error);\n }\n }\n catch (error) {\n this.emit('error', error);\n throw error;\n }\n}, _StandardWalletAdapter_signAllTransactions = async function _StandardWalletAdapter_signAllTransactions(transactions) {\n try {\n const account = __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\");\n if (!account)\n throw new WalletNotConnectedError();\n if (!(SolanaSignTransaction in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features))\n throw new WalletConfigError();\n if (!account.features.includes(SolanaSignTransaction))\n throw new WalletAccountError();\n try {\n const signedTransactions = await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignTransaction].signTransaction(...transactions.map((transaction) => ({\n account,\n transaction: isVersionedTransaction(transaction)\n ? transaction.serialize()\n : new Uint8Array(transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })),\n })));\n return transactions.map((transaction, index) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const signedTransaction = signedTransactions[index].signedTransaction;\n return (isVersionedTransaction(transaction)\n ? VersionedTransaction.deserialize(signedTransaction)\n : Transaction.from(signedTransaction));\n });\n }\n catch (error) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n }\n catch (error) {\n this.emit('error', error);\n throw error;\n }\n}, _StandardWalletAdapter_signMessage = async function _StandardWalletAdapter_signMessage(message) {\n try {\n const account = __classPrivateFieldGet(this, _StandardWalletAdapter_account, \"f\");\n if (!account)\n throw new WalletNotConnectedError();\n if (!(SolanaSignMessage in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features))\n throw new WalletConfigError();\n if (!account.features.includes(SolanaSignMessage))\n throw new WalletAccountError();\n try {\n const signedMessages = await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignMessage].signMessage({\n account,\n message,\n });\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return signedMessages[0].signature;\n }\n catch (error) {\n throw new WalletSignMessageError(error?.message, error);\n }\n }\n catch (error) {\n this.emit('error', error);\n throw error;\n }\n}, _StandardWalletAdapter_signIn = async function _StandardWalletAdapter_signIn(input = {}) {\n try {\n if (!(SolanaSignIn in __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features))\n throw new WalletConfigError();\n let output;\n try {\n [output] = await __classPrivateFieldGet(this, _StandardWalletAdapter_wallet, \"f\").features[SolanaSignIn].signIn(input);\n }\n catch (error) {\n throw new WalletSignInError(error?.message, error);\n }\n if (!output)\n throw new WalletSignInError();\n __classPrivateFieldGet(this, _StandardWalletAdapter_instances, \"m\", _StandardWalletAdapter_connected).call(this, output.account);\n return output;\n }\n catch (error) {\n this.emit('error', error);\n throw error;\n }\n};\n//# sourceMappingURL=adapter.js.map","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AppReadyEvent_detail;\nlet wallets = undefined;\nconst registered = new Set();\nconst listeners = {};\n/**\n * Get an API for {@link Wallets.get | getting}, {@link Wallets.on | listening for}, and\n * {@link Wallets.register | registering} {@link \"@wallet-standard/base\".Wallet | Wallets}.\n *\n * When called for the first time --\n *\n * This dispatches a {@link \"@wallet-standard/base\".WindowAppReadyEvent} to notify each Wallet that the app is ready\n * to register it.\n *\n * This also adds a listener for {@link \"@wallet-standard/base\".WindowRegisterWalletEvent} to listen for a notification\n * from each Wallet that the Wallet is ready to be registered by the app.\n *\n * This combination of event dispatch and listener guarantees that each Wallet will be registered synchronously as soon\n * as the app is ready whether the app loads before or after each Wallet.\n *\n * @return API for getting, listening for, and registering Wallets.\n *\n * @group App\n */\nexport function getWallets() {\n if (wallets)\n return wallets;\n wallets = Object.freeze({ register, get, on });\n if (typeof window === 'undefined')\n return wallets;\n const api = Object.freeze({ register });\n try {\n window.addEventListener('wallet-standard:register-wallet', ({ detail: callback }) => callback(api));\n }\n catch (error) {\n console.error('wallet-standard:register-wallet event listener could not be added\\n', error);\n }\n try {\n window.dispatchEvent(new AppReadyEvent(api));\n }\n catch (error) {\n console.error('wallet-standard:app-ready event could not be dispatched\\n', error);\n }\n return wallets;\n}\nfunction register(...wallets) {\n // Filter out wallets that have already been registered.\n // This prevents the same wallet from being registered twice, but it also prevents wallets from being\n // unregistered by reusing a reference to the wallet to obtain the unregister function for it.\n wallets = wallets.filter((wallet) => !registered.has(wallet));\n // If there are no new wallets to register, just return a no-op unregister function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n if (!wallets.length)\n return () => { };\n wallets.forEach((wallet) => registered.add(wallet));\n listeners['register']?.forEach((listener) => guard(() => listener(...wallets)));\n // Return a function that unregisters the registered wallets.\n return function unregister() {\n wallets.forEach((wallet) => registered.delete(wallet));\n listeners['unregister']?.forEach((listener) => guard(() => listener(...wallets)));\n };\n}\nfunction get() {\n return [...registered];\n}\nfunction on(event, listener) {\n listeners[event]?.push(listener) || (listeners[event] = [listener]);\n // Return a function that removes the event listener.\n return function off() {\n listeners[event] = listeners[event]?.filter((existingListener) => listener !== existingListener);\n };\n}\nfunction guard(callback) {\n try {\n callback();\n }\n catch (error) {\n console.error(error);\n }\n}\nclass AppReadyEvent extends Event {\n constructor(api) {\n super('wallet-standard:app-ready', {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n _AppReadyEvent_detail.set(this, void 0);\n __classPrivateFieldSet(this, _AppReadyEvent_detail, api, \"f\");\n }\n get detail() {\n return __classPrivateFieldGet(this, _AppReadyEvent_detail, \"f\");\n }\n get type() {\n return 'wallet-standard:app-ready';\n }\n /** @deprecated */\n preventDefault() {\n throw new Error('preventDefault cannot be called');\n }\n /** @deprecated */\n stopImmediatePropagation() {\n throw new Error('stopImmediatePropagation cannot be called');\n }\n /** @deprecated */\n stopPropagation() {\n throw new Error('stopPropagation cannot be called');\n }\n}\n_AppReadyEvent_detail = new WeakMap();\n/**\n * @deprecated Use {@link getWallets} instead.\n *\n * @group Deprecated\n */\nexport function DEPRECATED_getWallets() {\n if (wallets)\n return wallets;\n wallets = getWallets();\n if (typeof window === 'undefined')\n return wallets;\n const callbacks = window.navigator.wallets || [];\n if (!Array.isArray(callbacks)) {\n console.error('window.navigator.wallets is not an array');\n return wallets;\n }\n const { register } = wallets;\n const push = (...callbacks) => callbacks.forEach((callback) => guard(() => callback({ register })));\n try {\n Object.defineProperty(window.navigator, 'wallets', {\n value: Object.freeze({ push }),\n });\n }\n catch (error) {\n console.error('window.navigator.wallets could not be set');\n return wallets;\n }\n push(...callbacks);\n return wallets;\n}\n//# sourceMappingURL=wallets.js.map","import type { Adapter, WalletName } from \"@solana/wallet-adapter-base\";\nimport { computed, Ref, shallowRef, watchEffect } from \"vue\";\nimport {\n StandardWalletAdapter,\n} from \"@solana/wallet-standard-wallet-adapter-base\";\nimport { getWallets } from \"@wallet-standard/app\";\nimport type { Wallet } from \"@wallet-standard/base\";\nimport {isWalletAdapterCompatibleStandardWallet} from \"@solana/wallet-adapter-base\";\n\n/**\n * Auto-discovers wallet adapters that follows the wallet standard\n * and adds them to the list of registered adapters.\n */\nexport function useStandardWalletAdapters(\n adapters: Ref\n): Ref {\n const warnings = new Set();\n const { get, on } = getWallets();\n const swaAdapters = shallowRef>(\n wrapWalletsInAdapters(get())\n );\n\n watchEffect((onInvalidate) => {\n const listeners = [\n on(\"register\", (...wallets) => {\n return (swaAdapters.value = [\n ...swaAdapters.value,\n ...wrapWalletsInAdapters(wallets),\n ]);\n }),\n on(\"unregister\", (...wallets) => {\n return (swaAdapters.value = swaAdapters.value.filter((swaAdapter) =>\n wallets.some((wallet) => wallet === swaAdapter.wallet)\n ));\n }),\n ];\n\n onInvalidate(() => listeners.forEach((destroy) => destroy()));\n });\n\n return computed(() => [\n ...(swaAdapters.value as any),\n ...adapters.value.filter(({ name }: Adapter) => {\n if (swaAdapters.value.some((swaAdapter) => swaAdapter.name === name)) {\n if (!warnings.has(name)) {\n warnings.add(name);\n console.warn(\n `${name} was registered as a Standard Wallet. The Wallet Adapter for ${name} can be removed from your app.`\n );\n }\n return false;\n }\n return true;\n }),\n ]);\n}\n\nfunction wrapWalletsInAdapters(\n wallets: ReadonlyArray\n): ReadonlyArray {\n return wallets\n .filter(isWalletAdapterCompatibleStandardWallet)\n .map((wallet) => new StandardWalletAdapter({ wallet }));\n}\n","import type {Wallet} from \"@/types\";\nimport type {Adapter, MessageSignerWalletAdapterProps, SignerWalletAdapterProps, WalletAdapterProps, WalletError,} from \"@solana/wallet-adapter-base\";\nimport {WalletNotConnectedError} from \"@solana/wallet-adapter-base\";\nimport {computed, Ref} from \"vue\";\nimport {WalletNotSelectedError} from \"../errors\";\n\n/**\n * Gets all the methods that can be used to interact with the wallet.\n * This includes sending transactions, signing transaction and signing messages.\n */\nexport function useTransactionMethods(\n\twallet: Ref,\n\thandleError: (error: WalletError, adapter?: Adapter) => WalletError\n) {\n\t// Send a transaction using the provided connection.\n\tconst sendTransaction: WalletAdapterProps[\"sendTransaction\"] = async (\n\t\ttransaction,\n\t\tconnection,\n\t\toptions?\n\t) => {\n\t\tconst adapter = wallet.value?.adapter;\n\t\tconsole.log(\"useTransactionMethods:Adapter\", {wallet, adapter})\n\t\tif (!adapter) throw handleError(new WalletNotSelectedError());\n\t\tif (!adapter.connected)\n\t\t\tthrow handleError(new WalletNotConnectedError(), adapter);\n\n\n\t\t// @ts-ignore\n\t\tif (adapter.isSolflare) {\n\n\t\t\tconst hash = await connection.getLatestBlockhash(\"confirmed\")\n\n\t\t\t// @ts-ignore\n\t\t\treturn await adapter.signAndSendTransaction(transaction)\n\t\t}\n\n\t\treturn await adapter.sendTransaction(transaction, connection, options);\n\t};\n\n\t// Sign a transaction if the wallet supports it.\n\tconst signTransaction = computed<\n\t\tSignerWalletAdapterProps[\"signTransaction\"] | undefined\n\t>(() => {\n\t\tconst adapter = wallet.value?.adapter;\n\t\tif (!(adapter && \"signTransaction\" in adapter)) return;\n\t\tconsole.log(\"signTransaction:Adapter\", adapter)\n\t\treturn async (transaction) => {\n\t\t\tif (!adapter.connected) throw handleError(new WalletNotConnectedError());\n\t\t\treturn await adapter.signTransaction(transaction);\n\t\t};\n\t});\n\n\t// Sign multiple transactions if the wallet adapter supports it\n\tconst signAllTransactions = computed<\n\t\tSignerWalletAdapterProps[\"signAllTransactions\"] | undefined\n\t>(() => {\n\t\tconst adapter = wallet.value?.adapter;\n\t\tif (!(adapter && \"signAllTransactions\" in adapter)) return;\n\t\tconsole.log(\"signAllTransactions:Adapter\", adapter)\n\t\treturn async (transactions) => {\n\t\t\tif (!adapter.connected) throw handleError(new WalletNotConnectedError());\n\t\t\treturn await adapter.signAllTransactions(transactions);\n\t\t};\n\t});\n\n\t// Sign an arbitrary message if the wallet adapter supports it.\n\tconst signMessage = computed<\n\t\tMessageSignerWalletAdapterProps[\"signMessage\"] | undefined\n\t>(() => {\n\t\tconst adapter = wallet.value?.adapter;\n\t\tif (!(adapter && \"signMessage\" in adapter)) return;\n\t\tconsole.log(\"signMessage:Adapter\", adapter)\n\t\treturn async (message: Uint8Array) => {\n\t\t\tif (!adapter.connected) throw handleError(new WalletNotConnectedError());\n\t\t\treturn await adapter.signMessage(message);\n\t\t};\n\t});\n\n\treturn {\n\t\tsendTransaction,\n\t\tsignTransaction,\n\t\tsignAllTransactions,\n\t\tsignMessage,\n\t};\n}\n","import { ref, Ref, watchEffect } from \"vue\";\n\n/**\n * Provides a boolean that tells us if the window is unloading.\n * This is only relevant in the browser.\n */\nexport function useUnloadingWindow(\n isUsingMwaAdapterOnMobile: Ref\n): Ref {\n const unloadingWindow = ref(false);\n\n if (typeof window === \"undefined\") {\n return unloadingWindow;\n }\n\n watchEffect((onInvalidate) => {\n if (isUsingMwaAdapterOnMobile.value) {\n return;\n }\n\n const handler = () => (unloadingWindow.value = true);\n window.addEventListener(\"beforeunload\", handler);\n onInvalidate(() => window.removeEventListener(\"beforeunload\", handler));\n });\n\n return unloadingWindow;\n}\n","import type {Wallet, WalletStore} from \"@/types\";\nimport {WalletReadyState} from \"@solana/wallet-adapter-base\";\nimport type {PublicKey} from \"@solana/web3.js\";\nimport {computed, ref, Ref, shallowRef, watchEffect} from \"vue\";\n\n/**\n * Updates the wallet's instance when its name changes and\n * derives other properties from the wallet's instance.\n */\nexport function useWalletState(\n\twallets: Ref,\n\tname: Ref\n): Pick<\n\tWalletStore,\n\t\"wallet\" | \"publicKey\" | \"connected\" | \"readyState\" | \"ready\"\n> & {\n\trefreshWalletState: () => void,\n} {\n\tconst wallet = shallowRef(null);\n\tconst publicKey = ref(null);\n\tconst connected = ref(false);\n\tconst readyState = ref(WalletReadyState.Unsupported);\n\tconst ready = computed(\n\t\t() =>\n\t\t\treadyState.value === WalletReadyState.Installed ||\n\t\t\treadyState.value === WalletReadyState.Loadable\n\t);\n\n\tconst refreshWalletState = () => {\n\t\tpublicKey.value = wallet.value?.adapter.publicKey ?? null;\n\t\tconnected.value = wallet.value?.adapter.connected ?? false;\n\t\treadyState.value = wallet.value?.readyState ?? WalletReadyState.Unsupported;\n\t};\n\n\n\t// Set the active wallet if the name changes or different wallets are provided.\n\twatchEffect(() => {\n\t\twallet.value = name.value\n\t\t\t? wallets.value.find(({adapter}) => adapter.name === name.value) ?? null\n\t\t\t: null;\n\t\trefreshWalletState();\n\t});\n\n\treturn {\n\t\twallet,\n\t\tpublicKey,\n\t\tconnected,\n\t\treadyState,\n\t\tready,\n\t\trefreshWalletState,\n\t};\n}\n","import type { Wallet } from \"@/types\";\nimport type { Adapter } from \"@solana/wallet-adapter-base\";\nimport { Ref, shallowRef, watchEffect } from \"vue\";\n\n/**\n * Dynamically turns an array of Adapters into an array of Wallets.\n */\nexport function useWrapAdaptersInWallets(\n adapters: Ref\n): Ref {\n const wallets = shallowRef([]);\n\n watchEffect(() => {\n wallets.value = adapters.value.map((newAdapter) => ({\n adapter: newAdapter,\n readyState: newAdapter.readyState,\n }));\n });\n\n return wallets;\n}\n","import type {Adapter} from \"@solana/wallet-adapter-base\";\nimport {WalletNotReadyError, WalletReadyState} from \"@solana/wallet-adapter-base\";\nimport type {Cluster} from \"@solana/web3.js\";\nimport type {Ref} from \"vue\";\nimport {ref, shallowRef} from \"vue\";\nimport {\n\tuseAdapterListeners,\n\tuseAutoConnect,\n\tuseEnvironment,\n\tuseErrorHandler,\n\tuseMobileWalletAdapters,\n\tuseReadyStateListeners,\n\tuseSelectWalletName,\n\tuseStandardWalletAdapters,\n\tuseTransactionMethods,\n\tuseUnloadingWindow,\n\tuseWalletState,\n\tuseWrapAdaptersInWallets,\n} from \"./composables\";\nimport {WalletNotSelectedError} from \"./errors\";\nimport type {WalletStore, WalletStoreProps} from \"./types\";\n\nexport const createWalletStore = ({\n\t\t\t\t\t\t\t\t\t wallets: initialAdapters = [],\n\t\t\t\t\t\t\t\t\t autoConnect: initialAutoConnect = false,\n\t\t\t\t\t\t\t\t\t cluster: initialCluster = \"mainnet-beta\",\n\t\t\t\t\t\t\t\t\t onError,\n\t\t\t\t\t\t\t\t\t localStorageKey = \"walletName\",\n\t\t\t\t\t\t\t\t }: WalletStoreProps): WalletStore => {\n\t// Initial variables and loading states.\n\tconst cluster: Ref = ref(initialCluster);\n\tconst connecting = ref(false);\n\tconst disconnecting = ref(false);\n\n\t// From raw adapters to computed list of wallets.\n\tconst rawAdapters: Ref = shallowRef(initialAdapters);\n\tconst rawAdaptersWithSwa = useStandardWalletAdapters(rawAdapters);\n\tconst {isMobile, uriForAppIdentity} = useEnvironment(rawAdaptersWithSwa);\n\tconst adapters = useMobileWalletAdapters(\n\t\trawAdaptersWithSwa,\n\t\tisMobile,\n\t\turiForAppIdentity,\n\t\tcluster\n\t);\n\tconst wallets = useWrapAdaptersInWallets(adapters);\n\n\t// Wallet selection and state.\n\tconst {name, isUsingMwaAdapterOnMobile, select, deselect} = useSelectWalletName(localStorageKey, isMobile);\n\tconst {\n\t\twallet,\n\t\tpublicKey,\n\t\tconnected,\n\t\treadyState,\n\t\tready,\n\t\trefreshWalletState,\n\t} = useWalletState(wallets, name);\n\n\t// Window listeners and error handling.\n\tconst unloadingWindow = useUnloadingWindow(isUsingMwaAdapterOnMobile);\n\tconst handleError = useErrorHandler(unloadingWindow, onError);\n\n\t// Wallet listeners.\n\tuseReadyStateListeners(wallets);\n\tuseAdapterListeners(\n\t\twallet,\n\t\tunloadingWindow,\n\t\tisUsingMwaAdapterOnMobile,\n\t\tdeselect,\n\t\trefreshWalletState,\n\t\thandleError\n\t);\n\n\t// Auto-connect feature.\n\tconst autoConnect = useAutoConnect(\n\t\tinitialAutoConnect,\n\t\twallet,\n\t\tisUsingMwaAdapterOnMobile,\n\t\tconnecting,\n\t\tconnected,\n\t\tready,\n\t\tdeselect\n\t);\n\n\t// Transaction methods.\n\tconst {sendTransaction, signTransaction, signAllTransactions, signMessage} =\n\t\tuseTransactionMethods(wallet, handleError);\n\n\t// Connect the wallet.\n\tconst connect = async (): Promise => {\n\t\tconsole.log(\"Connect:Wallet\", wallet.value)\n\n\t\tif (connected.value || connecting.value || disconnecting.value) return;\n\t\tif (!wallet.value) throw handleError(new WalletNotSelectedError());\n\t\tconst adapter = wallet.value.adapter;\n\t\tif (!ready.value) throw handleError(new WalletNotReadyError(), adapter);\n\n\t\tconsole.log(\"Connecting to adapter\", adapter)\n\t\ttry {\n\t\t\tconnecting.value = true;\n\t\t\tawait adapter.connect();\n\t\t} catch (error: any) {\n\t\t\tdeselect();\n\t\t\t// handleError will also be called.\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tconnecting.value = false;\n\t\t}\n\t};\n\n\t// Disconnect the wallet adapter.\n\tconst disconnect = async (): Promise => {\n\t\tconsole.log(\"Disconnecting to adapter\", wallet.value, disconnecting.value)\n\t\tif (disconnecting.value || !wallet.value) return;\n\t\ttry {\n\t\t\tdisconnecting.value = true;\n\t\t\tawait wallet.value.adapter.disconnect();\n\t\t\twallet.value = null;\n\n\t\t} finally {\n\t\t\tdisconnecting.value = false;\n\t\t}\n\t};\n\n\t// Return the created store.\n\treturn {\n\t\t// Props.\n\t\twallets,\n\t\tautoConnect,\n\t\tcluster,\n\n\t\t// Data.\n\t\twallet,\n\t\tpublicKey,\n\t\treadyState,\n\t\tready,\n\t\tconnected,\n\t\tconnecting,\n\t\tdisconnecting,\n\n\t\t// Methods.\n\t\tselect,\n\t\tconnect,\n\t\tdisconnect,\n\t\tsendTransaction,\n\t\tsignTransaction,\n\t\tsignAllTransactions,\n\t\tsignMessage,\n\t};\n};\n","import { WalletNotInitializedError } from \"./errors\";\nimport { createWalletStore } from \"./createWalletStore\";\nimport type { WalletStore, WalletStoreProps } from \"./types\";\n\nlet walletStore: WalletStore | null = null;\n\nexport const useWallet = (): WalletStore => {\n if (walletStore) return walletStore;\n throw new WalletNotInitializedError(\n \"Wallet not initialized. Please use the `initWallet` method to initialize the wallet.\"\n );\n};\n\nexport const initWallet = (walletStoreProps: WalletStoreProps): void => {\n walletStore = createWalletStore(walletStoreProps);\n};\n","\n\n\t\n\n","\n\n\n","\n\n\n","\n\n\t\n\t\t\n\t\t

\n\t\n
\n","\n\n","\n
\n\t
\n\t\t\n\t
\n\t\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\"logo\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\tConnect Wallet\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t onSelect(wallet.name || wallet.adapter.name)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t 0\"\n\t\t\t\t\t\t\t\taria-controls=\"swv-modal-collapse\"\n\t\t\t\t\t\t\t\t:aria-expanded=\"expandedWallets\"\n\t\t\t\t\t\t\t\tclass=\"swv-button swv-modal-collapse-button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'swv-modal-collapse-button-active': expandedWallets }\"\n\t\t\t\t\t\t\t\t@click=\"() => expandedWallets = !expandedWallets\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ expandedWallets ? \"Less\" : \"More\" }} options\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\n\n","\n\n\n","\n\n\t\n\n\t\n\t\n\t\n\n","\n\n\n","// ColorCodes explained: http://www.termsys.demon.co.uk/vtansi.htm\n'use strict';\n\nvar colorNums = {\n white : 37\n , black : 30\n , blue : 34\n , cyan : 36\n , green : 32\n , magenta : 35\n , red : 31\n , yellow : 33\n , brightBlack : 90\n , brightRed : 91\n , brightGreen : 92\n , brightYellow : 93\n , brightBlue : 94\n , brightMagenta : 95\n , brightCyan : 96\n , brightWhite : 97\n }\n , backgroundColorNums = {\n bgBlack : 40\n , bgRed : 41\n , bgGreen : 42\n , bgYellow : 43\n , bgBlue : 44\n , bgMagenta : 45\n , bgCyan : 46\n , bgWhite : 47\n , bgBrightBlack : 100\n , bgBrightRed : 101\n , bgBrightGreen : 102\n , bgBrightYellow : 103\n , bgBrightBlue : 104\n , bgBrightMagenta : 105\n , bgBrightCyan : 106\n , bgBrightWhite : 107\n } \n , open = {}\n , close = {}\n , colors = {}\n ;\n\nObject.keys(colorNums).forEach(function (k) {\n var o = open[k] = '\\u001b[' + colorNums[k] + 'm';\n var c = close[k] = '\\u001b[39m';\n\n colors[k] = function (s) { \n return o + s + c;\n };\n});\n\nObject.keys(backgroundColorNums).forEach(function (k) {\n var o = open[k] = '\\u001b[' + backgroundColorNums[k] + 'm';\n var c = close[k] = '\\u001b[49m';\n\n colors[k] = function (s) { \n return o + s + c;\n };\n});\n\nmodule.exports = colors;\ncolors.open = open;\ncolors.close = close;\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n"],"names":["WalletNotSelectedError","WalletError","constructor","arguments","name","WalletNotInitializedError","SolanaMobileWalletAdapterErrorCode","ERROR_ASSOCIATION_PORT_OUT_OF_RANGE","ERROR_FORBIDDEN_WALLET_BASE_URL","ERROR_SECURE_CONTEXT_REQUIRED","ERROR_SESSION_CLOSED","ERROR_SESSION_TIMEOUT","ERROR_WALLET_NOT_FOUND","SolanaMobileWalletAdapterError","Error","args","code2","message","data","super","this","code","SolanaMobileWalletAdapterProtocolError","jsonRpcMessageId","__awaiter$2","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","createHelloReq","ecdhPublicKey","associationKeypairPrivateKey","publicKeyBuffer","crypto","subtle","exportKey","signatureBuffer","sign","hash","response","Uint8Array","byteLength","set","SEQUENCE_NUMBER_BYTES","createSequenceNumberVector","sequenceNumber","byteArray","ArrayBuffer","view","DataView","setUint32","generateAssociationKeypair","generateKey","namedCurve","generateECDHKeypair","INITIALIZATION_VECTOR_BYTES","encryptJsonRpcMessage","jsonRpcMessage","sharedSecret","plaintext","JSON","stringify","sequenceNumberVector","id","initializationVector","getRandomValues","ciphertext","encrypt","getAlgorithmParams","TextEncoder","encode","decryptJsonRpcMessage","slice","plaintextBuffer","decrypt","getUtf8Decoder","decode","parse","Object","hasOwnProperty","call","error","additionalData","iv","tagLength","_utf8Decoder","TextDecoder","parseHelloRsp","payloadBuffer","associationPublicKey","ecdhPrivateKey","associationPublicKeyBuffer","walletPublicKey","all","importKey","deriveBits","public","ecdhSecretKey","aesKeyMaterialVal","deriveKey","salt","info","length","getRandomAssociationPort","assertAssociationPort","Math","floor","random","port","arrayBufferToBase64String","buffer2","binary","bytes","len","ii","String","fromCharCode","window","btoa","getStringWithURLUnsafeCharactersReplaced","unsafeBase64EncodedString","replace","m","INTENT_NAME","getPathParts","pathString","split","getIntentURL","methodPathname","intentUrlBase","baseUrl","URL","_a","protocol","pathname","startsWith","join","getAssociateAndroidIntentURL","putativePort","associationURLBase","associationPort","exportedKey","encodedKey","url","searchParams","Browser","Firefox","Other","assertUnreachable","x","getBrowser","navigator","userAgent","indexOf","getDetectionPromise","cleanup","clearTimeout","timeoutId","removeEventListener","handleBlur","addEventListener","setTimeout","_frame","launchUrlThroughHiddenFrame","document","createElement","style","display","body","appendChild","contentWindow","location","href","toString","startSession","randomAssociationPort","associationUrl","assign","browser","detectionPromise","WEBSOCKET_CONNECTION_CONFIG","retryDelayScheduleMs","timeoutMs","WEBSOCKET_PROTOCOL","assertSecureContext","isSecureContext","assertSecureEndpointSpecificURI","walletUriBase","getSequenceNumberFromByteArray","getUint32","transact$1","callback","config","associationKeypair","sessionPort","publicKey","baseUri","websocketURL","connectionStartTime","getNextRetryDelayMs","schedule","shift","nextJsonRpcMessageId","lastKnownInboundSequenceNumber","state","__type","socket","jsonRpcResponsePromises","handleOpen","console","warn","associationKeypair2","ecdhKeypair","send","privateKey","handleClose","evt","wasClean","reason","closeEvent","disposeSocket","handleError","_evt","Date","now","resolve2","retryDelayMs","retryWaitTimeoutId","attemptSocketConnection","handleMessage","responseBuffer","arrayBuffer","responsePromise","wallet","Proxy","get","target","p","method","letter","toLowerCase","params","jsonrpc","reject2","wallet_uri_base","defineProperty","deleteProperty","close","WebSocket","base$1","ALPHABET2","TypeError","BASE_MAP","j","i","charAt","xc","charCodeAt","BASE","LEADER","FACTOR","log","iFACTOR","source","isView","buffer","byteOffset","Array","isArray","from","zeroes","pbegin","pend","size","b58","carry","i2","it1","it2","str","repeat","decodeUnsafe","psz","b256","it3","it4","vch","j2","string","src$1","basex$1","ALPHABET$1","bs58$1","__rest","s","t","prototype","getOwnPropertySymbols","propertyIsEnumerable","__awaiter$1","fromUint8Array","toUint8Array$1","base64EncodedByteArray","atob","map","c","getPayloadFromTransaction","transaction","serializedTransaction","serialize","requireAllSignatures","verifySignatures","payload","getTransactionFromWireMessage","numSignatures","messageOffset","SIGNATURE_LENGTH_IN_BYTES$1","version","VersionedMessage","Transaction","VersionedTransaction","transact","augmentedCallback","augmentedAPI","minContextSlot","transactions","rest","payloads","signatures","base64EncodedSignatures","signAndSendTransactions","options","min_context_slot","base64EncodedPayloads","signed_payloads","base64EncodedSignedMessages","signMessages","signedMessages","base64EncodedCompiledTransactions","signTransactions","compiledTransactions","signedTransactions","__awaiter","toUint8Array","getIsSupported","test","SolanaMobileWalletAdapterWalletName","SIGNATURE_LENGTH_IN_BYTES","getPublicKeyFromAddress","address","publicKeyByteArray","PublicKey","isVersionedTransaction","SolanaMobileWalletAdapter","BaseMessageSignerWalletAdapter","supportedTransactionVersions","Set","icon","_connecting","_connectionGeneration","_readyState","WalletReadyState","_authorizationResultCache","authorizationResultCache","_addressSelector","addressSelector","_appIdentity","appIdentity","_cluster","cluster","_onWalletNotFound","onWalletNotFound","authorizationResult","declareWalletAsInstalled","_publicKey","_selectedAddress","WalletPublicKeyError","connected","_authorizationResult","connecting","readyState","emit","runWithGuard","autoConnect_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","autoConnect","WalletNotReadyError","cachedAuthorizationResult","handleAuthorizationResult","WalletConnectionError","connect","authorize","identity","didPublicKeysChange","accounts","some","account","nextSelectedAddress","select","performReauthorization","authToken","reauthorize","auth_token","disconnect","WalletDisconnectedError","clear","currentConnectionGeneration","assertIsAuthorized","WalletNotConnectedError","selectedAddress","performSignTransactions","WalletSignTransactionError","sendTransaction","connection","getTargetCommitment","targetCommitment","targetPreflightCommitment","commitment","preflightCommitment","preflightCommitmentScore","targetCommitmentScore","capabilities","_1","_2","getCapabilities","feePayer","recentBlockhash","blockhash","getLatestBlockhash","supports_sign_and_send_transactions","signedTransaction","sendRawTransaction","WalletSendTransactionError","signTransaction","signAllTransactions","signMessage","signedMessage","addresses","signature","WalletSignMessageError","createDefaultAddressSelector","CACHE_KEY","createDefaultAuthorizationResultCache","storage","localStorage","removeItem","getItem","setItem","defaultWalletNotFoundHandler","mobileWalletAdapter","createDefaultWalletNotFoundHandler","useAdapterListeners","unloadingWindow","isUsingMwaAdapterOnMobile","deselect","refreshWalletState","watch","newWallet","oldWallet","newAdapter","adapter","oldAdapter","watchEffect","onInvalidate","handleAdapterConnect","handleAdapterDisconnect","handleAdapterError","on","off","useAutoConnect","initialAutoConnect","ready","ref","hasAttemptedToAutoConnect","useEnvironment","adapters","getUserAgent","uriForAppIdentity","getUriForAppIdentity","environment","computed","getEnvironment","isMobile","_userAgent","_b","globalThis","host","hasInstalledAdapters","isOsThatSupportsMwa","isWebView","useErrorHandler","onError","open","useMobileWalletAdapters","mwaAdapter","existingMobileWalletAdapter","find","uri","useReadyStateListeners","wallets2","handleReadyStateChange","prevWallets","index","findIndex","forEach","tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","toValue","r","unref","Vue","isClient","noop","createFilterWrapper","filter","wrapper","catch","bypassFilter","invoke","pausableFilter","extendFilter","isActive","pause","resume","eventFilter","readonly","__getOwnPropSymbols$8","__hasOwnProp$8","__propIsEnum$8","__objRest$5","exclude","prop","watchWithFilter","cb","watchOptions","__defProp$2","__defProps$2","defineProperties","__getOwnPropDescs$2","getOwnPropertyDescriptors","__getOwnPropSymbols$2","__hasOwnProp$2","__propIsEnum$2","__defNormalProp$2","obj","key","enumerable","configurable","writable","__spreadValues$2","a","b","__spreadProps$2","__objRest$1","watchPausable","stop","unrefElement","elRef","plain","$el","defaultWindow","useEventListener","events","listeners2","cleanups","register2","register","el","event","listener","options2","stopWatch","push","flatMap","immediate","flush","_global","global","self","globalKey","handlers","getHandlers","getSSRHandler","fallback","guessSerializerType","rawInit","Map","Number","isNaN","__defProp$l","__getOwnPropSymbols$o","__hasOwnProp$o","__propIsEnum$o","__defNormalProp$l","__spreadValues$l","StorageSerializers","boolean","read","v","write","object","number","parseFloat","any","entries","date","toISOString","customStorageEventName","useStorage","defaults","deep","listenToStorageChanges","writeDefaults","mergeDefaults","shallow","window2","shallowRef","_a2","type","serializer","pauseWatch","resumeWatch","update","updateFromCustomEvent","serialized","oldValue","dispatchEvent","CustomEvent","detail","newValue","storageArea","rawValue","nextTick","useLocalStorage","initialValue","useSelectWalletName","localStorageKey","isUsingMwaAdapter","walletName","force","SolanaSignAndSendTransaction","SolanaSignIn","SolanaSignMessage","SolanaSignTransaction","getCommitment","SOLANA_MAINNET_CHAIN","SOLANA_DEVNET_CHAIN","SOLANA_TESTNET_CHAIN","SOLANA_LOCALNET_CHAIN","MAINNET_ENDPOINT","getChainForEndpoint","endpoint","includes","StandardConnect","StandardDisconnect","StandardEvents","arraysEqual","__classPrivateFieldSet","__classPrivateFieldGet","base64Js","toByteArray","fromByteArray","lookup","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","ieee754","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","NaN","Infinity","pow","rt","abs","LN2","base64","ieee754$1","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","typedArraySupport","proto","foo","setPrototypeOf","createBuffer","RangeError","buf","arg","encodingOrOffset","allocUnsafe","fromString","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","fromObject","toPrimitive","assertSize","alloc","fill","encoding","checked","isEncoding","byteLength2","actual","fromArrayLike","array","arrayView","copy","isBuffer","numberIsNaN","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","poolSize","allocUnsafeSlow","_isBuffer","compare","y","concat","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","max","trim","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","lo","BigInt","hi","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","byteLength3","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","stack","addNumericalSeparator","checkBounds","range","ERR_OUT_OF_RANGE","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","base64clean","units","leadSurrogate","src2","dst","alphabet","table","i16","BufferBigIntNotDefined","buffer$1","copyProps","SafeBuffer","module","create","_Buffer","safeBuffer","base","_StandardWalletAdapter_instances","_StandardWalletAdapter_account","_StandardWalletAdapter_publicKey","_StandardWalletAdapter_connecting","_StandardWalletAdapter_disconnecting","_StandardWalletAdapter_off","_StandardWalletAdapter_supportedTransactionVersions","_StandardWalletAdapter_wallet","_StandardWalletAdapter_readyState","_StandardWalletAdapter_connect","_StandardWalletAdapter_connected","_StandardWalletAdapter_disconnected","_StandardWalletAdapter_reset","_StandardWalletAdapter_changed","_StandardWalletAdapter_signTransaction","_StandardWalletAdapter_signAllTransactions","_StandardWalletAdapter_signMessage","_StandardWalletAdapter_signIn","src","basex","ALPHABET","bs58","__classPrivateFieldSet$1","receiver","kind","f","has","__classPrivateFieldGet$1","StandardWalletAdapter","BaseWalletAdapter","add","properties","features","standard","destroy","async","silent","WalletDisconnectionError","feature","WalletAccountError","WalletConfigError","chain","rpcEndpoint","chains","signers","sendOptions","isVersionedTransaction$1","prepareTransaction","partialSign","signAndSendTransaction","skipPreflight","maxRetries","WeakMap","WeakSet","signIn","WalletSignInError","_AppReadyEvent_detail","wallets","registered","listeners","getWallets","freeze","api","AppReadyEvent","guard","delete","existingListener","Event","bubbles","cancelable","composed","preventDefault","stopImmediatePropagation","stopPropagation","useStandardWalletAdapters","warnings","get2","on2","swaAdapters","wrapWalletsInAdapters","swaAdapter","isWalletAdapterCompatibleStandardWallet","useTransactionMethods","isSolflare","useUnloadingWindow","handler","useWalletState","_d","_c","_f","_e","useWrapAdaptersInWallets","createWalletStore","initialAdapters","initialCluster","disconnecting","rawAdapters","rawAdaptersWithSwa","walletStore","useWallet","initWallet","walletStoreProps","render$4","_vm","_h","$createElement","_self","staticClass","attrs","staticRenderFns$4","__vue2_script$4","props","__vue2_script$3","defineComponent","components","WalletIcon","disabled","Boolean","setup","toRefs","content","onClick","defaultPrevented","scope","render$3","_t","domProps","_s","staticRenderFns$3","render$1","class","dark","container","closeModal","hasLogo","logo","_v","$event","_l","walletsToDisplay","onSelect","hiddenWallets","expandedWallets","staticRenderFns$1","__vue2_script$1","featured","default","modalPanel","selectWallet","featuredWallets","methods","$emit","debug","render","selectWalletOpened","disconnected","openSelectWallet","publicKeyBase58","pointerEvents","dropdownOpened","openDropdown","publicKeyTrimmed","doConnect","canCopy","copyAddress","closeDropdown","addressCopied","onDisconnect","staticRenderFns","__vue2_script","WalletConnectButton","WalletModalProvider","openOnboardingUrls","required","dropdownPanel","toBase58","$nextTick","onWalletError","clipboard","writeText","beforeMount","colorNums","white","black","blue","cyan","green","magenta","red","yellow","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","backgroundColorNums","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBrightBlack","bgBrightRed","bgBrightGreen","bgBrightYellow","bgBrightBlue","bgBrightMagenta","bgBrightCyan","bgBrightWhite","colors","keys","k","o","asn1","bignum","require","define","constants","decoders","encoders","inherits","Entity","_createNamed","Generated","entity","_initNamed","_getDecoder","enc","_getEncoder","reporter","Reporter","DecoderBuffer","EncoderBuffer","item","isEncoderBuffer","isDecoderBuffer","isCompatible","save","restore","isEmpty","skip","raw","fail","_reporterState","Node","assert","tags","overrided","parent","_baseState","children","tag","reverseArgs","choice","optional","use","useDecoder","explicit","implicit","contains","_wrap","stateProps","clone","cstate","_init","child","equal","_useArgs","def","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","match","node","_createEncoderBuffer","_encode","_encodeValue","undefined","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","rethrow","pathLen","prev","err","inherited","elem","partial","captureStackTrace","reverse","tagClass","tagClassByName","tagByName","_reverse","der","DERDecoder","tree","DERNode","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","decoder","possibleEnd","unused","numstr","printstr","values","relative","identifiers","ident","subident","second","year","mon","day","hour","sec","UTC","pem","PEMDecoder","lines","label","toUpperCase","re","DEREncoder","two","encodeTag","encodedTag","header","lenOctets","splice","objid","time","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","toArray","unshift","dataBuffer","defaultBuffer","PEMEncoder","ctor","superCtor","super_","TempCtor","BN","endian","isBN","negative","words","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","w","strip","parseLength","limbLen","limbPow","total","mod","word","imuln","_iaddn","dest","_expand","_normSign","zeros","groupSizes","groupBases","toBitArray","bitLength","bit","wbit","smallMulTo","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toBuffer","toArrayLike","ArrayType","reqLength","q","andln","iushrn","clz32","_countBits","_zeroBits","zeroBits","toTwos","width","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","iadd","isub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","imul","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","mulp","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","bhiBits","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","outLen","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","mont","u"],"sourceRoot":""}