{"version":3,"file":"static/js/vendors-aa8e71c9.285da215.js","mappings":"yGAAO,SAASA,EAAWC,GACzB,MAAO,GAAGC,OAAOD,EACnB,CCAO,SAASE,EAAiBC,GAC/B,OAAOA,EAASC,WAAW,IAC7B,CAEO,SAASC,EAAiBF,GAC/B,OACEG,EAASH,KACK,MAAbA,GACEA,EAASI,OAAS,GAAK,SAASC,SAASL,EAASM,MAAM,EAAG,KAC5DC,EAAyBP,GAE/B,CAEO,SAASQ,EACdC,EACAC,GAEA,OACGP,EAASO,IAA2B,iBAAVA,KAC1BC,EAAeF,KACfV,EAAiBU,KACjBG,EAAaH,EAElB,CAEO,SAASG,EAAaZ,GAC3B,OAAOA,EAASC,WAAW,SAC7B,CAMO,SAASU,EAAeX,GAC7B,MAAoB,OAAbA,CACT,CAEO,SAASG,EAASO,GACvB,OAAOA,EAAQ,KAAOA,CACxB,CAMO,SAASH,EACdG,GAEA,OAAOP,EAASO,KAAWA,EAAMT,WAAW,MAAQF,EAAiBW,GACvE,CCnDO,SAASG,EAAWC,GAAgD,IAAhCC,EAAAC,UAAAZ,OAAA,QAAAa,IAAAD,UAAA,GAAAA,UAAA,GAAoB,GAC7D,OAAOF,EAAII,OAAOC,SAASC,KAAKL,EAClC,CCDO,SAASM,EAAWC,EAAgBC,GACzC,IAAIC,EAAO,EACX,GAAoB,IAAhBD,EAAKnB,OAAc,OAAOoB,EAAKC,WACnC,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAKnB,OAAQsB,IAAK,CAEpCF,GAAQA,GAAQ,GAAKA,EADRD,EAAKI,WAAWD,GAE7BF,GAAOA,CACT,CACA,MAAO,GAAP1B,OAAUwB,QAAAA,EAAU,KAAI,KAAAxB,OAAI0B,EAAKC,SAAS,IAC5C,CCGO,SAASG,EAAenB,EAAkBC,GAC/C,MAAO,GAAPZ,OAAUW,EAAQ,KAAAX,OAAIY,EACxB,C,0BCHO,IAAMmB,EAAN,MAAMC,EAKXC,WAAAA,CACUC,EACDvB,EACAC,EACCV,GAHA,KAAAgC,MAAAA,EACD,KAAAvB,SAAAA,EACA,KAAAC,MAAAA,EACC,KAAAV,SAAAA,EAERiC,KAAKxB,SAAWA,EAChBwB,KAAKvB,MAAQA,EACbuB,KAAKC,OAASN,EAAenB,EAAUC,GACvC,MAAMyB,EAAmBF,KAAKjC,SAASoC,cAActC,OACnDmC,KAAKjC,SAASqC,gBAEhBJ,KAAKT,KAAOS,KAAKjC,SAASsC,cACrBL,KAAKjC,SAASuC,eACflB,EAAWY,KAAKD,MAAMQ,KAAMP,KAAKC,QACrCD,KAAKQ,IAAM5B,EAAW,CAACoB,KAAKC,OAAQC,EAAkBF,KAAKT,MAC7D,CAEOC,QAAAA,GACL,IAAIiB,EAAYC,EAAeV,KAAKjC,SAASoC,cAAe,CAC1DQ,MAAOX,KAAKT,OAOd,OAJAkB,EAAYC,EAAeV,KAAKjC,SAASqC,eAAgB,CACvDQ,KAAMH,IAGD,GAAP5C,OAAU4C,EAAS,MAAA5C,OAAKgC,EAAKgB,QAAQb,KAAKxB,SAAUwB,KAAKvB,OAAM,IACjE,CAEA,cAAOoC,CAAQrC,EAAkBC,GAE/B,OACEkB,EAF0CnB,EDtCnCsC,QAAQ,kBAAmB,SAASC,cAT1C,SAA6BvC,EAAkBC,GACpD,MAAiB,YAAbD,EACK,IAAPX,OAAWY,EAAK,KAGXA,CACT,CC6CQuC,CAAoBxC,EAAUC,IAC5B,GAER,GAGK,SAASiC,EACdD,GAEQ,IADR,KAAEG,EAAO,SAAID,EAAQ,IAAG5B,UAAAZ,OAAA,QAAAa,IAAAD,UAAA,GAAAA,UAAA,GAAuC,CAAC,EAEhE,MAAMkC,EAASR,EAAUS,QAAO,CAACC,EAAWC,IACtCtD,EAAiBsD,GACZD,EAAYC,EAGjB9C,EAAyB8C,GACpBD,EAAYC,EAAQ/C,MAAM,GAG5BO,EAAW,CAACuC,EAAWC,GAAU,MAGvCR,GAGH,OAAOhC,EAAW,CAACqC,GD5DGI,EC4DaV,ED3D5BU,EAAA,IAAAxD,OAAUwD,GAAQ,KC2DmB,KD5DvC,IAAiBA,CC6DxB,CAEO,IAAMC,EAAN,MAAMC,EAMXzB,WAAAA,CACUC,GASR,IARAyB,EAAAzC,UAAAZ,OAAA,QAAAa,IAAAD,UAAA,GAAAA,UAAA,GAA2B,MAC3B,cACEoB,EAAA,eACAC,GACFrB,UAAAZ,OAAA,QAAAa,IAAAD,UAAA,GAAAA,UAAA,GAGI,CAAC,EARG,KAAAgB,MAAAA,EANV,KAAOI,cAA0B,GACjC,KAAOG,eAAgC,KACvC,KAAOkB,UAA2B,KAClC,KAAOpB,eAA2B,GAahCJ,KAAKG,cAAgBA,EAAgBxC,EAAQwC,GAAiB,GAC9DH,KAAKI,eAAiBA,EAAiBzC,EAAQyC,GAAkB,GACjEJ,KAAKyB,SAASD,EAChB,CAEQC,QAAAA,CAASD,GACf,OAAKA,GAIAxB,KAAKM,iBACRN,KAAKwB,UAAYA,EACjBxB,KAAKM,eAAiBlB,EACpBY,KAAKD,MAAMQ,KAEXiB,EAAYxB,KAAKD,MAAM2B,QAIpB1B,MAZEA,IAaX,CAEA,iBAAIK,GACF,OAAOL,KAAKG,cAAchC,OAAS,GAAK6B,KAAKI,eAAejC,OAAS,CACvE,CAEAwD,QAAAA,CAASH,GACP,OAAO,IAAID,EAASvB,KAAKD,MAAOyB,EAAW,CACzCrB,cAAeH,KAAKG,cACpBC,eAAgBJ,KAAKI,gBAEzB,CAEAwB,eAAAA,CAAgBC,GACd,OAAO,IAAIN,EAASvB,KAAKD,MAAOC,KAAKM,eAAgB,CACnDF,eAAgBJ,KAAKI,eACrBD,cAAeH,KAAKG,cAActC,OAAOgE,IAE7C,CAEAC,gBAAAA,CAAiBC,GACf,OAAO,IAAIR,EAASvB,KAAKD,MAAOC,KAAKM,eAAgB,CACnDH,cAAeH,KAAKG,cACpBC,eAAgBJ,KAAKI,eAAevC,OAAOkE,IAE/C,CAEAC,UAAAA,CAAWxD,EAAkBC,GAC3B,OAAO,IAAImB,EAAKI,KAAKD,MAAOvB,EAAUC,EAAOuB,KAC/C,GC7IWiC,EAAN,MAYLnC,WAAAA,CACSS,EACC2B,GADD,KAAA3B,KAAAA,EACC,KAAA2B,SAAAA,EAVV,KAAQC,aAA6B,CAAC,EAGtC,KAAQC,cAAwC,CAAC,EACjD,KAAQC,MAAgB,GACxB,KAAOX,MAAQ,EAOb1B,KAAKsC,GAAA,WAAAzE,OAAgB0C,GAErBP,KAAKuC,SAAWvC,KAAKwC,gBACvB,CAEAC,QAAAA,GACE,OAAOzC,KAAKqC,KACd,CAEAK,MAAAA,CAAOC,GFTF,IAAsBC,EAAcC,EEUvC7C,KAAKqC,OFVoBO,EEUC5C,KAAKqC,MFVQQ,EEUDF,EFTjCC,EAAA,GAAA/E,OAAU+E,EAAI,MAAA/E,OAAKgF,GAASA,EEUnC,CAEAC,KAAAA,GACE9C,KAAK0B,QAEA1B,KAAKuC,WAIVvC,KAAKuC,SAASQ,UAAY/C,KAAKqC,MACjC,CAEAW,SAAAA,GACE,QAAShD,KAAKuC,QAChB,CAEAC,cAAAA,GAA+C,IAAAS,EAE7C,GACsB,oBAAbC,UACPlD,KAAKgD,aAEa,OAAlBhD,KAAKkC,SAEL,OAAOlC,KAAKuC,SAGd,MAAMA,EAAWW,SAASC,cAAc,SAIxC,OAHAZ,EAASa,KAAO,WAChBb,EAASD,GAAKtC,KAAKsC,IACb,QAANW,EAACjD,KAAKkC,gBAAA,IAAAe,EAAAA,EAAYC,SAASG,MAAMC,YAAYf,GACtCA,CACT,CAEAgB,OAAAA,CAAQC,GACN,MAAMC,EAAczD,KAAKoC,cAAcoB,EAAKhD,KAE5C,OAAItC,EAASuF,GACJA,GAGTzD,KAAKoC,cAAcoB,EAAKhD,KAAOgD,EAAKjE,KACpCS,KAAKmC,aAAaqB,EAAKjE,MAAQ,CAACiE,EAAKhF,SAAUgF,EAAK/E,OAEpDuB,KAAK0C,OAAOc,EAAKhE,YACVgE,EAAKjE,KACd,GC9EK,SAASmE,EACdC,EACAC,GAEA,IAAK,MAAMpD,KAAOmD,EAChBC,EAAGpD,EAAIqD,OAAQF,EAAInD,GAEvB,CCLO,SAASsD,IAA+B,QAAAC,EAAAhF,UAAAZ,OAAzB6F,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAAnF,UAAAmF,GAoBpB,OAAOtF,EAnBSoF,EAAK9C,QAAO,CAACiD,EAAmBC,KAC1CA,aAAeC,IACjBF,EAAQG,QAAQF,GACQ,iBAARA,EAChBD,EAAQG,KAAKF,GACJH,MAAMM,QAAQH,GACvBD,EAAQG,KAAKR,KAAMM,IACK,iBAARA,GAEhBI,OAAOC,QAAQL,GAAKM,SAAQC,IAAkB,IAAhBnE,EAAK/B,GAAKkG,EAClClG,GACF0F,EAAQG,KAAK9D,EACf,IAIG2D,IACN,IAEwB,KAAKN,MAClC,CCEO,SAASe,EACdrE,EACA2B,GAEA,MAAMnC,EAAQ,IAAIkC,EAAM1B,EAAM2B,GAE9B,MAAO,CACL2C,OAKF,SAAkCC,GAChC,MAAMC,EAAgC,CAAC,EAiBvC,OAfAC,EAAqBjF,EAAO+E,EAAQ,IAAIxD,EAASvB,IAAQ2E,SACvDO,IAAmC,IAAjCzD,EAAW0D,EAAQnH,GAAQkH,EAC3BE,EAAcpF,EAAOmF,EAAkBnH,GAAU2G,SAC9CU,KAcP,SAAwBC,EAASD,GAAmB,IAAAE,EAClDP,EAAaM,GAC+B,QADFC,EACxCP,EAAaM,UAA6B,IAAAC,EAAAA,EAAK,IAAIjB,IACrDU,EAAaM,GAA+BE,IAAIH,EAClD,CAjBQI,CAAehE,EAAgB4D,EAAU,GAE5C,IAOLrF,EAAM+C,QAECiC,CAOT,EA7BEtC,SAAU1C,EAAM0C,SAASgD,KAAK1F,GAC9BiD,UAAWjD,EAAMiD,UAAUyC,KAAK1F,GA6BpC,CAIA,SAASiF,EACPjF,EACA+E,EACA/G,GAEA,MAAMkD,EAA4C,GAgBlD,OAdAyC,EAAMoB,GAAQ,CAACtE,EAAa/B,KAC1B,GAAIR,EAAiBuC,GACnB,OAAOwE,EACLjF,EACAtB,EACAV,EAAS6D,gBAAgBpB,IACzBkE,SAASgB,GAASzE,EAAOqD,KAAKoB,KAKlCzE,EAAOqD,KAAK,CAAC9D,EAAKsE,EAAOtE,GAAMzC,EAAS4D,SAASnB,IAAM,IAGlDS,CACT,CAEA,SAASkE,EACPpF,EACA+E,EACA/G,GAEA,MAAMkD,EAAmB,IAAIoD,IAgC7B,OA9BAX,EAAMoB,GAAQ,CAACtG,EAAUC,KACvB,IAAIkH,EAA8B,GAGlC,GAAI1H,EAAiBO,GACnBmH,EAAMR,EACJpF,EACAtB,EACAV,EAAS+D,iBAAiBtD,SAGvB,GR9EJ,SAAuBT,GAC5B,MAAoB,MAAbA,CACT,CQ4Ee6H,CAAcpH,GACvBmH,EAAMhI,EAAQc,QACT,GAAIE,EAAaH,GACtBmH,EA2DN,SACE5F,EACA+E,EACAe,EACA9H,GAEAgC,EAAM2C,OAAOmD,EAAa,MAI1B,MAAM5E,EAASkE,EAAcpF,EAAO+E,EAAQ/G,GAI5C,OAFAgC,EAAM2C,OAAO,KAENzB,CACT,CA1EY6E,CAAiB/F,EAAOtB,EAAiBD,EAAUT,QAGpD,GAAIW,EAAeF,GACxBmH,EAqBN,SACE5F,EACA+E,EACA/G,GAEA,MAAMgI,EAAoB,IAAI1B,IAExB2B,EAAsB,GAU5B,GATAtC,EAAMoB,GAAQ,CAACtG,EAAkBC,KAC/B,GAAIF,EAAgBC,EAAUC,GAE5B,YADAuH,EAAU1B,KAAK1E,EAAKiB,QAAQrC,EAAUC,IAIxCwH,EADYd,EAAcpF,EAAOtB,QAAAA,EAAS,CAAC,EAAGV,GAC5BgI,EAAQ,KAGvBhI,EAASuC,eACZ,OAAOyF,EAGT,GAAIC,EAAU7H,OAAQ,CACpB,MAAM8C,EAAS+E,EAAU7G,KAAK,KAC9BY,EAAM2C,OAAA,GAAA7E,OACD6C,EAAe3C,EAASoC,cAAe,CACxCQ,MAAO5C,EAASuC,iBAChB,MAAAzC,OAAKoD,EAAM,KAEjB,CAGA,OADA8E,EAAQR,IAAIxH,EAASuC,gBACdyF,CACT,CArDYG,CAAkBnG,EAAOtB,EAA6BV,QAGvD,GAAIQ,EAAgBC,EAAUC,GAAQ,CAC3C,MAAM+E,EAAOzF,EAASiE,WAAWxD,EAAUC,GAC3CsB,EAAMwD,QAAQC,GACdvC,EAAOsE,IAAI/B,EAAKjE,KAClB,CAEA,OAAO0G,EAAaN,EAAK1E,EAAO,IAG3BA,CACT,CAEA,SAASgF,EAAaE,EAA8BC,GAElD,OADAD,EAAKzB,SAASU,GAAcgB,EAAGb,IAAIH,KAC5BgB,CACT,C,0bCnIA,SAASC,EAA2B1B,EAAM2B,EAAWC,GACnD,IAAI,UACFC,EAAS,SACTC,GACE9B,EACJ,MAAM+B,GAAWC,EAAAA,EAAAA,IAAYL,GACvBM,GAAgBC,EAAAA,EAAAA,IAAiBP,GACjCQ,GAAcC,EAAAA,EAAAA,IAAcH,GAC5BI,GAAOC,EAAAA,EAAAA,IAAQX,GACfY,EAA0B,MAAbR,EACbS,EAAUX,EAAUY,EAAIZ,EAAUa,MAAQ,EAAIZ,EAASY,MAAQ,EAC/DC,EAAUd,EAAUe,EAAIf,EAAUgB,OAAS,EAAIf,EAASe,OAAS,EACjEC,EAAcjB,EAAUM,GAAe,EAAIL,EAASK,GAAe,EACzE,IAAIY,EACJ,OAAQV,GACN,IAAK,MACHU,EAAS,CACPN,EAAGD,EACHI,EAAGf,EAAUe,EAAId,EAASe,QAE5B,MACF,IAAK,SACHE,EAAS,CACPN,EAAGD,EACHI,EAAGf,EAAUe,EAAIf,EAAUgB,QAE7B,MACF,IAAK,QACHE,EAAS,CACPN,EAAGZ,EAAUY,EAAIZ,EAAUa,MAC3BE,EAAGD,GAEL,MACF,IAAK,OACHI,EAAS,CACPN,EAAGZ,EAAUY,EAAIX,EAASY,MAC1BE,EAAGD,GAEL,MACF,QACEI,EAAS,CACPN,EAAGZ,EAAUY,EACbG,EAAGf,EAAUe,GAGnB,QAAQI,EAAAA,EAAAA,IAAarB,IACnB,IAAK,QACHoB,EAAOd,IAAkBa,GAAelB,GAAOW,GAAc,EAAI,GACjE,MACF,IAAK,MACHQ,EAAOd,IAAkBa,GAAelB,GAAOW,GAAc,EAAI,GAGrE,OAAOQ,CACT,CAqGAE,eAAeC,EAAeC,EAAOC,GACnC,IAAIC,OACY,IAAZD,IACFA,EAAU,CAAC,GAEb,MAAM,EACJX,EAAC,EACDG,EAAC,SACDU,EAAQ,MACRC,EAAK,SACLC,EAAQ,SACRC,GACEN,GACE,SACJO,EAAW,oBAAmB,aAC9BC,EAAe,WAAU,eACzBC,EAAiB,WAAU,YAC3BC,GAAc,EAAK,QACnBC,EAAU,IACRC,EAAAA,EAAAA,IAASX,EAASD,GAChBa,GAAgBC,EAAAA,EAAAA,IAAiBH,GAEjCI,EAAUV,EAASK,EADa,aAAnBD,EAAgC,YAAc,WACbA,GAC9CO,GAAqBC,EAAAA,EAAAA,UAAuBd,EAASe,gBAAgB,CACzEH,QAAiH,OAAtGb,QAAqD,MAAtBC,EAASgB,eAAoB,EAAShB,EAASgB,UAAUJ,MAAqBb,EAAgCa,EAAUA,EAAQK,sBAAyD,MAA/BjB,EAASkB,wBAA6B,EAASlB,EAASkB,mBAAmBhB,EAAS1B,WACxR4B,WACAC,eACAF,cAEIgB,EAA0B,aAAnBb,EAAgC,CAC3CnB,IACAG,IACAF,MAAOa,EAAMzB,SAASY,MACtBG,OAAQU,EAAMzB,SAASe,QACrBU,EAAM1B,UACJ6C,QAAkD,MAA5BpB,EAASqB,qBAA0B,EAASrB,EAASqB,gBAAgBnB,EAAS1B,WACpG8C,QAA4C,MAAtBtB,EAASgB,eAAoB,EAAShB,EAASgB,UAAUI,WAA+C,MAArBpB,EAASuB,cAAmB,EAASvB,EAASuB,SAASH,KAGlK,CACFjC,EAAG,EACHG,EAAG,GAECkC,GAAoBV,EAAAA,EAAAA,IAAiBd,EAASyB,4DAA8DzB,EAASyB,sDAAsD,CAC/KvB,WACAiB,OACAC,eACAjB,aACGgB,GACL,MAAO,CACLO,KAAMb,EAAmBa,IAAMF,EAAkBE,IAAMhB,EAAcgB,KAAOJ,EAAYhC,EACxFqC,QAASH,EAAkBG,OAASd,EAAmBc,OAASjB,EAAciB,QAAUL,EAAYhC,EACpG3G,MAAOkI,EAAmBlI,KAAO6I,EAAkB7I,KAAO+H,EAAc/H,MAAQ2I,EAAYnC,EAC5FzG,OAAQ8I,EAAkB9I,MAAQmI,EAAmBnI,MAAQgI,EAAchI,OAAS4I,EAAYnC,EAEpG,CAyTA,SAASyC,EAAeC,EAAUV,GAChC,MAAO,CACLO,IAAKG,EAASH,IAAMP,EAAK5B,OACzB7G,MAAOmJ,EAASnJ,MAAQyI,EAAK/B,MAC7BuC,OAAQE,EAASF,OAASR,EAAK5B,OAC/B5G,KAAMkJ,EAASlJ,KAAOwI,EAAK/B,MAE/B,CACA,SAAS0C,EAAsBD,GAC7B,OAAOE,EAAAA,GAAMC,MAAKjD,GAAQ8C,EAAS9C,IAAS,GAC9C,CA2DA,SAASkD,EAAgBhC,GACvB,MAAMiC,GAAOC,EAAAA,EAAAA,OAAOlC,EAAMmC,KAAIjB,GAAQA,EAAKxI,QACrC0J,GAAOF,EAAAA,EAAAA,OAAOlC,EAAMmC,KAAIjB,GAAQA,EAAKO,OAG3C,MAAO,CACLvC,EAAG+C,EACH5C,EAAG+C,EACHjD,OALWkD,EAAAA,EAAAA,OAAOrC,EAAMmC,KAAIjB,GAAQA,EAAKzI,SAK3BwJ,EACd3C,QALW+C,EAAAA,EAAAA,OAAOrC,EAAMmC,KAAIjB,GAAQA,EAAKQ,UAK1BU,EAEnB,C,gBCzlBA,SAASE,EAAiB3B,GACxB,MAAMlG,GAAM8H,EAAAA,EAAAA,IAAiB5B,GAG7B,IAAIxB,EAAQqD,WAAW/H,EAAI0E,QAAU,EACjCG,EAASkD,WAAW/H,EAAI6E,SAAW,EACvC,MAAMmD,GAAYC,EAAAA,EAAAA,IAAc/B,GAC1BgC,EAAcF,EAAY9B,EAAQgC,YAAcxD,EAChDyD,EAAeH,EAAY9B,EAAQiC,aAAetD,EAClDuD,GAAiBC,EAAAA,EAAAA,IAAM3D,KAAWwD,IAAeG,EAAAA,EAAAA,IAAMxD,KAAYsD,EAKzE,OAJIC,IACF1D,EAAQwD,EACRrD,EAASsD,GAEJ,CACLzD,QACAG,SACAyD,EAAGF,EAEP,CAEA,SAASG,EAAcrC,GACrB,OAAQI,EAAAA,EAAAA,IAAUJ,GAAoCA,EAAzBA,EAAQK,cACvC,CAEA,SAASM,EAASX,GAChB,MAAMsC,EAAaD,EAAcrC,GACjC,KAAK+B,EAAAA,EAAAA,IAAcO,GACjB,OAAOC,EAAAA,EAAAA,IAAa,GAEtB,MAAMhC,EAAO+B,EAAWE,yBAClB,MACJhE,EAAK,OACLG,EAAM,EACNyD,GACET,EAAiBW,GACrB,IAAI/D,GAAK6D,GAAID,EAAAA,EAAAA,IAAM5B,EAAK/B,OAAS+B,EAAK/B,OAASA,EAC3CE,GAAK0D,GAAID,EAAAA,EAAAA,IAAM5B,EAAK5B,QAAU4B,EAAK5B,QAAUA,EAUjD,OANKJ,GAAMkE,OAAOC,SAASnE,KACzBA,EAAI,GAEDG,GAAM+D,OAAOC,SAAShE,KACzBA,EAAI,GAEC,CACLH,IACAG,IAEJ,CAEA,MAAMiE,GAAyBJ,EAAAA,EAAAA,IAAa,GAC5C,SAASK,EAAiB5C,GACxB,MAAM6C,GAAMC,EAAAA,EAAAA,IAAU9C,GACtB,OAAK+C,EAAAA,EAAAA,OAAeF,EAAIG,eAGjB,CACLzE,EAAGsE,EAAIG,eAAeC,WACtBvE,EAAGmE,EAAIG,eAAeE,WAJfP,CAMX,CAWA,SAASH,EAAsBxC,EAASmD,EAAcC,EAAiB5C,QAChD,IAAjB2C,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,MAAMC,EAAarD,EAAQwC,wBACrBF,EAAaD,EAAcrC,GACjC,IAAIsD,GAAQf,EAAAA,EAAAA,IAAa,GACrBY,IACE3C,GACEJ,EAAAA,EAAAA,IAAUI,KACZ8C,EAAQ3C,EAASH,IAGnB8C,EAAQ3C,EAASX,IAGrB,MAAMuD,EA7BR,SAAgCvD,EAASwD,EAASC,GAIhD,YAHgB,IAAZD,IACFA,GAAU,MAEPC,GAAwBD,GAAWC,KAAyBX,EAAAA,EAAAA,IAAU9C,KAGpEwD,CACT,CAqBwBE,CAAuBpB,EAAYc,EAAiB5C,GAAgBoC,EAAiBN,IAAcC,EAAAA,EAAAA,IAAa,GACtI,IAAIhE,GAAK8E,EAAWtL,KAAOwL,EAAchF,GAAK+E,EAAM/E,EAChDG,GAAK2E,EAAWvC,IAAMyC,EAAc7E,GAAK4E,EAAM5E,EAC/CF,EAAQ6E,EAAW7E,MAAQ8E,EAAM/E,EACjCI,EAAS0E,EAAW1E,OAAS2E,EAAM5E,EACvC,GAAI4D,EAAY,CACd,MAAMO,GAAMC,EAAAA,EAAAA,IAAUR,GAChBqB,EAAYnD,IAAgBJ,EAAAA,EAAAA,IAAUI,IAAgBsC,EAAAA,EAAAA,IAAUtC,GAAgBA,EACtF,IAAIoD,EAAaf,EACbgB,GAAgBC,EAAAA,EAAAA,IAAgBF,GACpC,KAAOC,GAAiBrD,GAAgBmD,IAAcC,GAAY,CAChE,MAAMG,EAAcpD,EAASkD,GACvBG,EAAaH,EAAcrB,wBAC3B1I,GAAM8H,EAAAA,EAAAA,IAAiBiC,GACvB9L,EAAOiM,EAAWjM,MAAQ8L,EAAcI,WAAapC,WAAW/H,EAAIoK,cAAgBH,EAAYxF,EAChGuC,EAAMkD,EAAWlD,KAAO+C,EAAcM,UAAYtC,WAAW/H,EAAIsK,aAAeL,EAAYrF,EAClGH,GAAKwF,EAAYxF,EACjBG,GAAKqF,EAAYrF,EACjBF,GAASuF,EAAYxF,EACrBI,GAAUoF,EAAYrF,EACtBH,GAAKxG,EACL2G,GAAKoC,EACL8C,GAAad,EAAAA,EAAAA,IAAUe,GACvBA,GAAgBC,EAAAA,EAAAA,IAAgBF,EAClC,CACF,CACA,OAAO1D,EAAAA,EAAAA,IAAiB,CACtB1B,QACAG,SACAJ,IACAG,KAEJ,CAIA,SAAS2F,EAAoBrE,EAASO,GACpC,MAAM+D,GAAaC,EAAAA,EAAAA,IAAcvE,GAASwE,WAC1C,OAAKjE,EAGEA,EAAKxI,KAAOuM,EAFV9B,GAAsBlC,EAAAA,EAAAA,IAAmBN,IAAUjI,KAAOuM,CAGrE,CAEA,SAASG,EAAcC,EAAiBC,EAAQC,QACrB,IAArBA,IACFA,GAAmB,GAErB,MAAMC,EAAWH,EAAgBlC,wBAKjC,MAAO,CACLjE,EALQsG,EAAS9M,KAAO4M,EAAOH,YAAcI,EAAmB,EAElEP,EAAoBK,EAAiBG,IAInCnG,EAHQmG,EAAS/D,IAAM6D,EAAOG,UAKlC,CA6GA,SAASC,EAAkC/E,EAASgF,EAAkBzF,GACpE,IAAIgB,EACJ,GAAyB,aAArByE,EACFzE,EA7CJ,SAAyBP,EAAST,GAChC,MAAMsD,GAAMC,EAAAA,EAAAA,IAAU9C,GAChBiF,GAAO3E,EAAAA,EAAAA,IAAmBN,GAC1BgD,EAAiBH,EAAIG,eAC3B,IAAIxE,EAAQyG,EAAKC,YACbvG,EAASsG,EAAKE,aACd5G,EAAI,EACJG,EAAI,EACR,GAAIsE,EAAgB,CAClBxE,EAAQwE,EAAexE,MACvBG,EAASqE,EAAerE,OACxB,MAAMyG,GAAsBrC,EAAAA,EAAAA,QACvBqC,GAAuBA,GAAoC,UAAb7F,KACjDhB,EAAIyE,EAAeC,WACnBvE,EAAIsE,EAAeE,UAEvB,CACA,MAAO,CACL1E,QACAG,SACAJ,IACAG,IAEJ,CAsBW2G,CAAgBrF,EAAST,QAC3B,GAAyB,aAArByF,EACTzE,EAlEJ,SAAyBP,GACvB,MAAMiF,GAAO3E,EAAAA,EAAAA,IAAmBN,GAC1B2E,GAASJ,EAAAA,EAAAA,IAAcvE,GACvBsF,EAAOtF,EAAQuF,cAAcD,KAC7B9G,GAAQkD,EAAAA,EAAAA,IAAIuD,EAAKO,YAAaP,EAAKC,YAAaI,EAAKE,YAAaF,EAAKJ,aACvEvG,GAAS+C,EAAAA,EAAAA,IAAIuD,EAAKQ,aAAcR,EAAKE,aAAcG,EAAKG,aAAcH,EAAKH,cACjF,IAAI5G,GAAKoG,EAAOH,WAAaH,EAAoBrE,GACjD,MAAMtB,GAAKiG,EAAOG,UAIlB,MAHyC,SAArClD,EAAAA,EAAAA,IAAiB0D,GAAMI,YACzBnH,IAAKmD,EAAAA,EAAAA,IAAIuD,EAAKC,YAAaI,EAAKJ,aAAe1G,GAE1C,CACLA,QACAG,SACAJ,IACAG,IAEJ,CAiDWiH,EAAgBrF,EAAAA,EAAAA,IAAmBN,SACrC,IAAII,EAAAA,EAAAA,IAAU4E,GACnBzE,EAvBJ,SAAoCP,EAAST,GAC3C,MAAM8D,EAAab,EAAsBxC,GAAS,EAAmB,UAAbT,GAClDuB,EAAMuC,EAAWvC,IAAMd,EAAQmE,UAC/BpM,EAAOsL,EAAWtL,KAAOiI,EAAQiE,WACjCX,GAAQvB,EAAAA,EAAAA,IAAc/B,GAAWW,EAASX,IAAWuC,EAAAA,EAAAA,IAAa,GAKxE,MAAO,CACL/D,MALYwB,EAAQkF,YAAc5B,EAAM/E,EAMxCI,OALaqB,EAAQmF,aAAe7B,EAAM5E,EAM1CH,EALQxG,EAAOuL,EAAM/E,EAMrBG,EALQoC,EAAMwC,EAAM5E,EAOxB,CAQWkH,CAA2BZ,EAAkBzF,OAC/C,CACL,MAAMgE,EAAgBX,EAAiB5C,GACvCO,EAAO,CACLhC,EAAGyG,EAAiBzG,EAAIgF,EAAchF,EACtCG,EAAGsG,EAAiBtG,EAAI6E,EAAc7E,EACtCF,MAAOwG,EAAiBxG,MACxBG,OAAQqG,EAAiBrG,OAE7B,CACA,OAAOuB,EAAAA,EAAAA,IAAiBK,EAC1B,CACA,SAASsF,EAAyB7F,EAAS8F,GACzC,MAAMC,GAAaC,EAAAA,EAAAA,IAAchG,GACjC,QAAI+F,IAAeD,KAAa1F,EAAAA,EAAAA,IAAU2F,KAAeE,EAAAA,EAAAA,IAAsBF,MAG9B,WAA1CnE,EAAAA,EAAAA,IAAiBmE,GAAYG,UAAwBL,EAAyBE,EAAYD,GACnG,CA2EA,SAASK,EAA8BnG,EAASQ,EAAcjB,GAC5D,MAAM6G,GAA0BrE,EAAAA,EAAAA,IAAcvB,GACxCkE,GAAkBpE,EAAAA,EAAAA,IAAmBE,GACrCgD,EAAuB,UAAbjE,EACVgB,EAAOiC,EAAsBxC,GAAS,EAAMwD,EAAShD,GAC3D,IAAImE,EAAS,CACXH,WAAY,EACZM,UAAW,GAEb,MAAMuB,GAAU9D,EAAAA,EAAAA,IAAa,GAC7B,GAAI6D,IAA4BA,IAA4B5C,EAI1D,IAHkC,UAA9B8C,EAAAA,EAAAA,IAAY9F,KAA4B+F,EAAAA,EAAAA,IAAkB7B,MAC5DC,GAASJ,EAAAA,EAAAA,IAAc/D,IAErB4F,EAAyB,CAC3B,MAAMI,EAAahE,EAAsBhC,GAAc,EAAMgD,EAAShD,GACtE6F,EAAQ9H,EAAIiI,EAAWjI,EAAIiC,EAAayD,WACxCoC,EAAQ3H,EAAI8H,EAAW9H,EAAI8B,EAAa2D,SAC1C,MAAWO,IAGT2B,EAAQ9H,EAAI8F,EAAoBK,IAGpC,MAAM+B,GAAa/B,GAAoB0B,GAA4B5C,GAAmDjB,EAAAA,EAAAA,IAAa,GAAtDkC,EAAcC,EAAiBC,GAG5G,MAAO,CACLpG,EAHQgC,EAAKxI,KAAO4M,EAAOH,WAAa6B,EAAQ9H,EAAIkI,EAAWlI,EAI/DG,EAHQ6B,EAAKO,IAAM6D,EAAOG,UAAYuB,EAAQ3H,EAAI+H,EAAW/H,EAI7DF,MAAO+B,EAAK/B,MACZG,OAAQ4B,EAAK5B,OAEjB,CAEA,SAAS+H,EAAmB1G,GAC1B,MAA8C,YAAvC4B,EAAAA,EAAAA,IAAiB5B,GAASkG,QACnC,CAEA,SAASS,EAAoB3G,EAAS4G,GACpC,KAAK7E,EAAAA,EAAAA,IAAc/B,IAAmD,WAAvC4B,EAAAA,EAAAA,IAAiB5B,GAASkG,SACvD,OAAO,KAET,GAAIU,EACF,OAAOA,EAAS5G,GAElB,IAAI6G,EAAkB7G,EAAQQ,aAS9B,OAHIF,EAAAA,EAAAA,IAAmBN,KAAa6G,IAClCA,EAAkBA,EAAgBtB,cAAcD,MAE3CuB,CACT,CAIA,SAASpG,EAAgBT,EAAS4G,GAChC,MAAM/D,GAAMC,EAAAA,EAAAA,IAAU9C,GACtB,IAAI8G,EAAAA,EAAAA,IAAW9G,GACb,OAAO6C,EAET,KAAKd,EAAAA,EAAAA,IAAc/B,GAAU,CAC3B,IAAI+G,GAAkBf,EAAAA,EAAAA,IAAchG,GACpC,KAAO+G,KAAoBd,EAAAA,EAAAA,IAAsBc,IAAkB,CACjE,IAAI3G,EAAAA,EAAAA,IAAU2G,KAAqBL,EAAmBK,GACpD,OAAOA,EAETA,GAAkBf,EAAAA,EAAAA,IAAce,EAClC,CACA,OAAOlE,CACT,CACA,IAAIrC,EAAemG,EAAoB3G,EAAS4G,GAChD,KAAOpG,IAAgBwG,EAAAA,EAAAA,IAAexG,IAAiBkG,EAAmBlG,IACxEA,EAAemG,EAAoBnG,EAAcoG,GAEnD,OAAIpG,IAAgByF,EAAAA,EAAAA,IAAsBzF,IAAiBkG,EAAmBlG,MAAkByG,EAAAA,EAAAA,IAAkBzG,GACzGqC,EAEFrC,IAAgB0G,EAAAA,EAAAA,IAAmBlH,IAAY6C,CACxD,CAqBA,MAAMzD,EAAW,CACfyB,sDAxTF,SAA+D/E,GAC7D,IAAI,SACFwD,EAAQ,KACRiB,EAAI,aACJC,EAAY,SACZjB,GACEzD,EACJ,MAAM0H,EAAuB,UAAbjE,EACVmF,GAAkBpE,EAAAA,EAAAA,IAAmBE,GACrC2G,IAAW7H,IAAWwH,EAAAA,EAAAA,IAAWxH,EAAS1B,UAChD,GAAI4C,IAAiBkE,GAAmByC,GAAY3D,EAClD,OAAOjD,EAET,IAAIoE,EAAS,CACXH,WAAY,EACZM,UAAW,GAETxB,GAAQf,EAAAA,EAAAA,IAAa,GACzB,MAAM8D,GAAU9D,EAAAA,EAAAA,IAAa,GACvB6D,GAA0BrE,EAAAA,EAAAA,IAAcvB,GAC9C,IAAI4F,IAA4BA,IAA4B5C,MACxB,UAA9B8C,EAAAA,EAAAA,IAAY9F,KAA4B+F,EAAAA,EAAAA,IAAkB7B,MAC5DC,GAASJ,EAAAA,EAAAA,IAAc/D,KAErBuB,EAAAA,EAAAA,IAAcvB,IAAe,CAC/B,MAAMgG,EAAahE,EAAsBhC,GACzC8C,EAAQ3C,EAASH,GACjB6F,EAAQ9H,EAAIiI,EAAWjI,EAAIiC,EAAayD,WACxCoC,EAAQ3H,EAAI8H,EAAW9H,EAAI8B,EAAa2D,SAC1C,CAEF,MAAMsC,GAAa/B,GAAoB0B,GAA4B5C,GAAyDjB,EAAAA,EAAAA,IAAa,GAA5DkC,EAAcC,EAAiBC,GAAQ,GACpH,MAAO,CACLnG,MAAO+B,EAAK/B,MAAQ8E,EAAM/E,EAC1BI,OAAQ4B,EAAK5B,OAAS2E,EAAM5E,EAC5BH,EAAGgC,EAAKhC,EAAI+E,EAAM/E,EAAIoG,EAAOH,WAAalB,EAAM/E,EAAI8H,EAAQ9H,EAAIkI,EAAWlI,EAC3EG,EAAG6B,EAAK7B,EAAI4E,EAAM5E,EAAIiG,EAAOG,UAAYxB,EAAM5E,EAAI2H,EAAQ3H,EAAI+H,EAAW/H,EAE9E,EAmRE4B,mBAAkB,KAClBH,gBAhJF,SAAyBrE,GACvB,IAAI,QACFkE,EAAO,SACPR,EAAQ,aACRC,EAAY,SACZF,GACEzD,EACJ,MACMsL,EAAoB,IADoB,sBAAb5H,GAAmCsH,EAAAA,EAAAA,IAAW9G,GAAW,GAxC5F,SAAqCA,EAASqH,GAC5C,MAAMC,EAAeD,EAAME,IAAIvH,GAC/B,GAAIsH,EACF,OAAOA,EAET,IAAIE,GAASC,EAAAA,EAAAA,IAAqBzH,EAAS,IAAI,GAAO5J,QAAOsR,IAAMtH,EAAAA,EAAAA,IAAUsH,IAA2B,UAApBpB,EAAAA,EAAAA,IAAYoB,KAC5FC,EAAsC,KAC1C,MAAMC,EAAwD,WAAvChG,EAAAA,EAAAA,IAAiB5B,GAASkG,SACjD,IAAI2B,EAAcD,GAAiB5B,EAAAA,EAAAA,IAAchG,GAAWA,EAG5D,MAAOI,EAAAA,EAAAA,IAAUyH,MAAiB5B,EAAAA,EAAAA,IAAsB4B,IAAc,CACpE,MAAMC,GAAgBlG,EAAAA,EAAAA,IAAiBiG,GACjCE,GAA0Bd,EAAAA,EAAAA,IAAkBY,GAC7CE,GAAsD,UAA3BD,EAAc5B,WAC5CyB,EAAsC,OAEVC,GAAkBG,IAA4BJ,GAAuCI,GAAsD,WAA3BD,EAAc5B,UAA2ByB,GAAuC,CAAC,WAAY,SAASpS,SAASoS,EAAoCzB,YAAaK,EAAAA,EAAAA,IAAkBsB,KAAiBE,GAA2BlC,EAAyB7F,EAAS6H,IAG5YL,EAASA,EAAOpR,QAAO4R,GAAYA,IAAaH,IAGhDF,EAAsCG,EAExCD,GAAc7B,EAAAA,EAAAA,IAAc6B,EAC9B,CAEA,OADAR,EAAMY,IAAIjI,EAASwH,GACZA,CACT,CAWiGU,CAA4BlI,EAAS7I,KAAKgR,IAAM,GAAGnT,OAAOwK,GACjGC,GAClD2I,EAAwBhB,EAAkB,GAC1CiB,EAAejB,EAAkB/O,QAAO,CAACiQ,EAAStD,KACtD,MAAMzE,EAAOwE,EAAkC/E,EAASgF,EAAkBzF,GAK1E,OAJA+I,EAAQxH,KAAMY,EAAAA,EAAAA,IAAInB,EAAKO,IAAKwH,EAAQxH,KACpCwH,EAAQxQ,OAAQyJ,EAAAA,EAAAA,IAAIhB,EAAKzI,MAAOwQ,EAAQxQ,OACxCwQ,EAAQvH,QAASQ,EAAAA,EAAAA,IAAIhB,EAAKQ,OAAQuH,EAAQvH,QAC1CuH,EAAQvQ,MAAO2J,EAAAA,EAAAA,IAAInB,EAAKxI,KAAMuQ,EAAQvQ,MAC/BuQ,CAAO,GACbvD,EAAkC/E,EAASoI,EAAuB7I,IACrE,MAAO,CACLf,MAAO6J,EAAavQ,MAAQuQ,EAAatQ,KACzC4G,OAAQ0J,EAAatH,OAASsH,EAAavH,IAC3CvC,EAAG8J,EAAatQ,KAChB2G,EAAG2J,EAAavH,IAEpB,EAyHEL,kBACA8H,gBAxBsBxJ,eAAgByJ,GACtC,MAAMC,EAAoBtR,KAAKsJ,iBAAmBA,EAC5CiI,EAAkBvR,KAAKwR,cACvBC,QAA2BF,EAAgBF,EAAK5K,UACtD,MAAO,CACLD,UAAWwI,EAA8BqC,EAAK7K,gBAAiB8K,EAAkBD,EAAK5K,UAAW4K,EAAKjJ,UACtG3B,SAAU,CACRW,EAAG,EACHG,EAAG,EACHF,MAAOoK,EAAmBpK,MAC1BG,OAAQiK,EAAmBjK,QAGjC,EAYEkK,eArRF,SAAwB7I,GACtB,OAAO5E,MAAM0N,KAAK9I,EAAQ6I,iBAC5B,EAoREF,cA1HF,SAAuB3I,GACrB,MAAM,MACJxB,EAAK,OACLG,GACEgD,EAAiB3B,GACrB,MAAO,CACLxB,QACAG,SAEJ,EAkHEgC,WACAP,UAAS,KACT2I,MAdF,SAAe/I,GACb,MAA+C,SAAxC4B,EAAAA,EAAAA,IAAiB5B,GAAS0F,SACnC,GAeA,SAASsD,EAAcC,EAAGC,GACxB,OAAOD,EAAE1K,IAAM2K,EAAE3K,GAAK0K,EAAEvK,IAAMwK,EAAExK,GAAKuK,EAAEzK,QAAU0K,EAAE1K,OAASyK,EAAEtK,SAAWuK,EAAEvK,MAC7E,CAkGA,SAASwK,EAAWxL,EAAWC,EAAUwL,EAAQlK,QAC/B,IAAZA,IACFA,EAAU,CAAC,GAEb,MAAM,eACJmK,GAAiB,EAAI,eACrBC,GAAiB,EAAI,cACrBC,EAA0C,mBAAnBC,eAA6B,YACpDC,EAA8C,mBAAzBC,qBAAmC,eACxDC,GAAiB,GACfzK,EACE0K,EAAcvH,EAAc1E,GAC5BkM,EAAYR,GAAkBC,EAAiB,IAAKM,GAAcnC,EAAAA,EAAAA,IAAqBmC,GAAe,OAAQnC,EAAAA,EAAAA,IAAqB7J,IAAa,GACtJiM,EAAUhO,SAAQmM,IAChBqB,GAAkBrB,EAAS8B,iBAAiB,SAAUV,EAAQ,CAC5DW,SAAS,IAEXT,GAAkBtB,EAAS8B,iBAAiB,SAAUV,EAAO,IAE/D,MAAMY,EAAYJ,GAAeH,EAlHnC,SAAqBzJ,EAASiK,GAC5B,IACIC,EADAC,EAAK,KAET,MAAMC,GAAO9J,EAAAA,EAAAA,IAAmBN,GAChC,SAASqK,IACP,IAAIC,EACJC,aAAaL,GACC,OAAbI,EAAMH,IAAeG,EAAIE,aAC1BL,EAAK,IACP,CA2EA,OA1EA,SAASM,EAAQC,EAAMC,QACR,IAATD,IACFA,GAAO,QAES,IAAdC,IACFA,EAAY,GAEdN,IACA,MAAMO,EAA2B5K,EAAQwC,yBACnC,KACJzK,EAAI,IACJ+I,EAAG,MACHtC,EAAK,OACLG,GACEiM,EAIJ,GAHKF,GACHT,KAEGzL,IAAUG,EACb,OAEF,MAKMO,EAAU,CACd2L,aANeC,EAAAA,EAAAA,IAAMhK,GAIQ,QAHZgK,EAAAA,EAAAA,IAAMV,EAAKlF,aAAenN,EAAOyG,IAGC,QAFjCsM,EAAAA,EAAAA,IAAMV,EAAKjF,cAAgBrE,EAAMnC,IAEuB,QAD1DmM,EAAAA,EAAAA,IAAM/S,GACyE,KAG/F4S,WAAWjJ,EAAAA,EAAAA,IAAI,GAAGH,EAAAA,EAAAA,IAAI,EAAGoJ,KAAe,GAE1C,IAAII,GAAgB,EACpB,SAASC,EAAcpP,GACrB,MAAMqP,EAAQrP,EAAQ,GAAGsP,kBACzB,GAAID,IAAUN,EAAW,CACvB,IAAKI,EACH,OAAON,IAEJQ,EAOHR,GAAQ,EAAOQ,GAJff,EAAYiB,YAAW,KACrBV,GAAQ,EAAO,KAAK,GACnB,IAIP,CACc,IAAVQ,GAAgBjC,EAAc4B,EAA0B5K,EAAQwC,0BAQlEiI,IAEFM,GAAgB,CAClB,CAIA,IACEZ,EAAK,IAAIT,qBAAqBsB,GAAaI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACtClM,GAAO,IAEVkL,KAAMA,EAAK7E,gBAEf,CAAE,MAAO8F,GACPlB,EAAK,IAAIT,qBAAqBsB,EAAe9L,EAC/C,CACAiL,EAAGmB,QAAQtL,EACb,CACAyK,EAAQ,GACDJ,CACT,CA6BiDkB,CAAY3B,EAAaR,GAAU,KAClF,IAsBIoC,EAtBAC,GAAkB,EAClBC,EAAiB,KACjBnC,IACFmC,EAAiB,IAAIlC,gBAAe1N,IAClC,IAAK6P,GAAc7P,EACf6P,GAAcA,EAAWC,SAAWhC,GAAe8B,IAGrDA,EAAeG,UAAUjO,GACzBkO,qBAAqBL,GACrBA,EAAiBM,uBAAsB,KACrC,IAAIC,EACkC,OAArCA,EAAkBN,IAA2BM,EAAgBV,QAAQ1N,EAAS,KAGnFwL,GAAQ,IAENQ,IAAgBD,GAClB+B,EAAeJ,QAAQ1B,GAEzB8B,EAAeJ,QAAQ1N,IAGzB,IAAIqO,EAActC,EAAiBnH,EAAsB7E,GAAa,KAatE,OAZIgM,GAGJ,SAASuC,IACP,MAAMC,EAAc3J,EAAsB7E,GACtCsO,IAAgBjD,EAAciD,EAAaE,IAC7C/C,IAEF6C,EAAcE,EACdX,EAAUO,sBAAsBG,EAClC,CATEA,GAUF9C,IACO,KACL,IAAIgD,EACJvC,EAAUhO,SAAQmM,IAChBqB,GAAkBrB,EAASqE,oBAAoB,SAAUjD,GACzDE,GAAkBtB,EAASqE,oBAAoB,SAAUjD,EAAO,IAErD,MAAbY,GAAqBA,IACkB,OAAtCoC,EAAmBV,IAA2BU,EAAiB5B,aAChEkB,EAAiB,KACb/B,GACFmC,qBAAqBN,EACvB,CAEJ,CAUA,MAAMxM,EAAiBsN,EASjBC,ED2GS,SAAUrN,GAIvB,YAHgB,IAAZA,IACFA,EAAU,GAEL,CACLxH,KAAM,SACNwH,UACA,QAAMnE,CAAGkE,GACP,IAAIuN,EAAuBC,EAC3B,MAAM,EACJlO,EAAC,EACDG,EAAC,UACDjB,EAAS,eACTiP,GACEzN,EACE0N,QA9DZ5N,eAAoCE,EAAOC,GACzC,MAAM,UACJzB,EAAS,SACT2B,EAAQ,SACRE,GACEL,EACEvB,QAA+B,MAAlB0B,EAAS2J,WAAgB,EAAS3J,EAAS2J,MAAMzJ,EAAS1B,WACvEO,GAAOC,EAAAA,EAAAA,IAAQX,GACfmP,GAAY9N,EAAAA,EAAAA,IAAarB,GACzBY,EAAwC,OAA3BP,EAAAA,EAAAA,IAAYL,GACzBoP,EAAgB,CAAC,OAAQ,OAAOtX,SAAS4I,IAAS,EAAI,EACtD2O,EAAiBpP,GAAOW,GAAc,EAAI,EAC1C0O,GAAWlN,EAAAA,EAAAA,IAASX,EAASD,GAGnC,IAAI,SACF+N,EAAQ,UACRC,EAAS,cACTlP,GACsB,iBAAbgP,EAAwB,CACjCC,SAAUD,EACVE,UAAW,EACXlP,cAAe,MACb,CACFiP,SAAUD,EAASC,UAAY,EAC/BC,UAAWF,EAASE,WAAa,EACjClP,cAAegP,EAAShP,eAK1B,OAHI6O,GAAsC,iBAAlB7O,IACtBkP,EAA0B,QAAdL,GAAuC,EAAjB7O,EAAqBA,GAElDM,EAAa,CAClBE,EAAG0O,EAAYH,EACfpO,EAAGsO,EAAWH,GACZ,CACFtO,EAAGyO,EAAWH,EACdnO,EAAGuO,EAAYH,EAEnB,CAwB+BI,CAAqBjO,EAAOC,GAIrD,OAAIzB,KAAkE,OAAlD+O,EAAwBE,EAAeH,aAAkB,EAASC,EAAsB/O,YAAgE,OAAjDgP,EAAwBC,EAAeS,QAAkBV,EAAsBW,gBACjM,CAAC,EAEH,CACL7O,EAAGA,EAAIoO,EAAWpO,EAClBG,EAAGA,EAAIiO,EAAWjO,EAClB8J,MAAI4C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCuB,GAAU,IACblP,cAGN,EAEJ,ECnIM4P,ED7WgB,SAAUnO,GAI9B,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLxH,KAAM,gBACNwH,UACA,QAAMnE,CAAGkE,GACP,IAAIqO,EAAuBC,EAAwBC,EACnD,MAAM,MACJnO,EAAK,eACLqN,EAAc,UACdjP,EAAS,SACT2B,EAAQ,SACRE,GACEL,EACJwO,GAMI5N,EAAAA,EAAAA,IAASX,EAASD,IANhB,UACJgO,GAAY,EAAK,UACjBL,EAAS,kBACTc,EAAoBC,EAAAA,GAAU,cAC9BC,GAAgB,GAEjBH,EADII,GAAqBC,EAAAA,EAAAA,GAAAL,EAAAM,GAEpBC,OAA6B7X,IAAdyW,GAA2Bc,IAAsBC,EAAAA,GAtC5E,SAA0Bf,EAAWgB,EAAeF,GAElD,OAD2Cd,EAAY,IAAIc,EAAkBtX,QAAOqH,IAAaqB,EAAAA,EAAAA,IAAarB,KAAemP,OAAec,EAAkBtX,QAAOqH,IAAaqB,EAAAA,EAAAA,IAAarB,KAAemP,KAAcc,EAAkBtX,QAAOqH,IAAaW,EAAAA,EAAAA,IAAQX,KAAeA,KAC/OrH,QAAOqH,IAC3CmP,IACK9N,EAAAA,EAAAA,IAAarB,KAAemP,KAAcgB,IAAgBK,EAAAA,EAAAA,IAA8BxQ,KAAeA,GAIpH,CA8ByFyQ,CAAiBtB,GAAa,KAAMgB,EAAeF,GAAqBA,EACrJzM,QAAiBjC,EAAeC,EAAO4O,GACvCM,GAA0E,OAAzDb,EAAwBZ,EAAeW,oBAAyB,EAASC,EAAsBc,QAAU,EAC1HC,EAAmBL,EAAaG,GACtC,GAAwB,MAApBE,EACF,MAAO,CAAC,EAEV,MAAMC,GAAiBC,EAAAA,EAAAA,IAAkBF,EAAkBhP,QAAgC,MAAlBD,EAAS2J,WAAgB,EAAS3J,EAAS2J,MAAMzJ,EAAS1B,YAGnI,GAAIH,IAAc4Q,EAChB,MAAO,CACLG,MAAO,CACL/Q,UAAWuQ,EAAa,KAI9B,MAAMS,EAAmB,CAACxN,GAAS7C,EAAAA,EAAAA,IAAQiQ,IAAoBpN,EAASqN,EAAe,IAAKrN,EAASqN,EAAe,KAC9GI,EAAe,KAAiE,OAA1DnB,EAAyBb,EAAeW,oBAAyB,EAASE,EAAuBoB,YAAc,GAAK,CAC9IlR,UAAW4Q,EACXM,UAAWF,IAEPG,EAAgBZ,EAAaG,EAAe,GAGlD,GAAIS,EACF,MAAO,CACLpG,KAAM,CACJ4F,MAAOD,EAAe,EACtBQ,UAAWD,GAEbF,MAAO,CACL/Q,UAAWmR,IAIjB,MAAMC,EAA8BH,EAAalN,KAAIsN,IACnD,MAAMlC,GAAY9N,EAAAA,EAAAA,IAAagQ,EAAErR,WACjC,MAAO,CAACqR,EAAErR,UAAWmP,GAAaK,EAElC6B,EAAEH,UAAUnZ,MAAM,EAAG,GAAG6C,QAAO,CAAC0W,EAAKha,IAAMga,EAAMha,GAAG,GAEpD+Z,EAAEH,UAAU,GAAIG,EAAEH,UAAU,IAC3BK,MAAK,CAAC/F,EAAGC,IAAMD,EAAE,GAAKC,EAAE,KAKrB+F,GAA8E,OAA3DzB,EAJWqB,EAA4BzY,QAAO0Y,GAAKA,EAAE,GAAGtZ,MAAM,GAGvFsJ,EAAAA,EAAAA,IAAagQ,EAAE,IAAM,EAAI,GAAGI,OAAMna,GAAKA,GAAK,MACiC,SAAc,EAASyY,EAAsB,KAAOqB,EAA4B,GAAG,GAChK,OAAII,IAAmBxR,EACd,CACL+K,KAAM,CACJ4F,MAAOD,EAAe,EACtBQ,UAAWD,GAEbF,MAAO,CACL/Q,UAAWwR,IAIV,CAAC,CACV,EAEJ,EC8RME,EDmIQ,SAAUjQ,GAItB,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLxH,KAAM,QACNwH,UACA,QAAMnE,CAAGkE,GACP,MAAM,EACJV,EAAC,EACDG,EAAC,UACDjB,GACEwB,EACJmQ,GAgBIvP,EAAAA,EAAAA,IAASX,EAASD,IAfpB+N,SAAUqC,GAAgB,EAC1BpC,UAAWqC,GAAiB,EAAK,QACjCC,EAAU,CACRxU,GAAIe,IACF,IAAI,EACFyC,EAAC,EACDG,GACE5C,EACJ,MAAO,CACLyC,IACAG,IACD,IAIN0Q,EADIvB,GAAqBC,EAAAA,EAAAA,GAAAsB,EAAAI,GAEpB3Q,EAAS,CACbN,IACAG,KAEIuC,QAAiBjC,EAAeC,EAAO4O,GACvCZ,GAAYnP,EAAAA,EAAAA,KAAYM,EAAAA,EAAAA,IAAQX,IAChCuP,GAAWyC,EAAAA,EAAAA,IAAgBxC,GACjC,IAAIyC,EAAgB7Q,EAAOmO,GACvB2C,EAAiB9Q,EAAOoO,GAC5B,GAAIoC,EAAe,CACjB,MACMO,EAAuB,MAAb5C,EAAmB,SAAW,QACxCzL,EAAMmO,EAAgBzO,EAFC,MAAb+L,EAAmB,MAAQ,QAGrCtL,EAAMgO,EAAgBzO,EAAS2O,GACrCF,GAAgBG,EAAAA,EAAAA,IAAMtO,EAAKmO,EAAehO,EAC5C,CACA,GAAI4N,EAAgB,CAClB,MACMM,EAAwB,MAAd3C,EAAoB,SAAW,QACzC1L,EAAMoO,EAAiB1O,EAFC,MAAdgM,EAAoB,MAAQ,QAGtCvL,EAAMiO,EAAiB1O,EAAS2O,GACtCD,GAAiBE,EAAAA,EAAAA,IAAMtO,EAAKoO,EAAgBjO,EAC9C,CACA,MAAMoO,EAAgBP,EAAQxU,IAAEqQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAC7BnM,GAAK,IACR,CAAC+N,GAAW0C,EACZ,CAACzC,GAAY0C,KAEf,OAAAvE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACK0E,GAAa,IAChBtH,KAAM,CACJjK,EAAGuR,EAAcvR,EAAIA,EACrBG,EAAGoR,EAAcpR,EAAIA,EACrBqR,QAAS,CACP,CAAC/C,GAAWqC,EACZ,CAACpC,GAAYqC,KAIrB,EAEJ,EClMMU,ED9RO,SAAU9Q,GAIrB,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLxH,KAAM,OACNwH,UACA,QAAMnE,CAAGkE,GACP,IAAIwN,EAAuBwD,EAC3B,MAAM,UACJxS,EAAS,eACTiP,EAAc,MACdrN,EAAK,iBACL6Q,EAAgB,SAChB9Q,EAAQ,SACRE,GACEL,EACJkR,GAQItQ,EAAAA,EAAAA,IAASX,EAASD,IAPpB+N,SAAUqC,GAAgB,EAC1BpC,UAAWqC,GAAiB,EAC5Bc,mBAAoBC,EAA2B,iBAC/CC,EAAmB,UAAS,0BAC5BC,EAA4B,OAAM,cAClCC,GAAgB,GAEjBL,EADItC,GAAqBC,EAAAA,EAAAA,GAAAqC,EAAAM,GAO1B,GAAsD,OAAjDhE,EAAwBC,EAAeS,QAAkBV,EAAsBW,gBAClF,MAAO,CAAC,EAEV,MAAMjP,GAAOC,EAAAA,EAAAA,IAAQX,GACfiT,GAAkB5S,EAAAA,EAAAA,IAAYoS,GAC9BS,GAAkBvS,EAAAA,EAAAA,IAAQ8R,KAAsBA,EAChDxS,QAA+B,MAAlB0B,EAAS2J,WAAgB,EAAS3J,EAAS2J,MAAMzJ,EAAS1B,WACvEwS,EAAqBC,IAAgCM,IAAoBH,EAAgB,EAACI,EAAAA,EAAAA,IAAqBV,KAAqBW,EAAAA,EAAAA,IAAsBX,IAC1JY,EAA6D,SAA9BP,GAChCF,GAA+BS,GAClCV,EAAmB3U,SAAQsV,EAAAA,EAAAA,IAA0Bb,EAAkBM,EAAeD,EAA2B7S,IAEnH,MAAMiQ,EAAa,CAACuC,KAAqBE,GACnCnP,QAAiBjC,EAAeC,EAAO4O,GACvCc,EAAY,GAClB,IAAIqC,GAAiE,OAA/Cf,EAAuBvD,EAAesD,WAAgB,EAASC,EAAqBtB,YAAc,GAIxH,GAHIU,GACFV,EAAUlT,KAAKwF,EAAS9C,IAEtBmR,EAAgB,CAClB,MAAMnO,GAAQoN,EAAAA,EAAAA,IAAkB9Q,EAAW4B,EAAO3B,GAClDiR,EAAUlT,KAAKwF,EAASE,EAAM,IAAKF,EAASE,EAAM,IACpD,CAOA,GANA6P,EAAgB,IAAIA,EAAe,CACjCvT,YACAkR,eAIGA,EAAUO,OAAM/Q,GAAQA,GAAQ,IAAI,CACvC,IAAI8S,EAAuBC,EAC3B,MAAMC,IAA+D,OAAhDF,EAAwBvE,EAAesD,WAAgB,EAASiB,EAAsB7C,QAAU,GAAK,EACpHQ,EAAgBjB,EAAWwD,GACjC,GAAIvC,EAEF,MAAO,CACLpG,KAAM,CACJ4F,MAAO+C,EACPxC,UAAWqC,GAEbxC,MAAO,CACL/Q,UAAWmR,IAOjB,IAAIK,EAAgJ,OAA9HiC,EAAwBF,EAAc5a,QAAO0Y,GAAKA,EAAEH,UAAU,IAAM,IAAGK,MAAK,CAAC/F,EAAGC,IAAMD,EAAE0F,UAAU,GAAKzF,EAAEyF,UAAU,KAAI,SAAc,EAASuC,EAAsBzT,UAG1L,IAAKwR,EACH,OAAQqB,GACN,IAAK,UACH,CACE,IAAIc,EACJ,MAAM3T,EASmJ,OATtI2T,EAAyBJ,EAAc5a,QAAO0Y,IAC/D,GAAIgC,EAA8B,CAChC,MAAMO,GAAkBvT,EAAAA,EAAAA,IAAYgR,EAAErR,WACtC,OAAO4T,IAAoBX,GAGP,MAApBW,CACF,CACA,OAAO,CAAI,IACV7P,KAAIsN,GAAK,CAACA,EAAErR,UAAWqR,EAAEH,UAAUvY,QAAO6K,GAAYA,EAAW,IAAG5I,QAAO,CAAC0W,EAAK9N,IAAa8N,EAAM9N,GAAU,MAAK+N,MAAK,CAAC/F,EAAGC,IAAMD,EAAE,GAAKC,EAAE,KAAI,SAAc,EAASkI,EAAuB,GAC5L3T,IACFwR,EAAiBxR,GAEnB,KACF,CACF,IAAK,mBACHwR,EAAiBiB,EAIvB,GAAIzS,IAAcwR,EAChB,MAAO,CACLT,MAAO,CACL/Q,UAAWwR,GAInB,CACA,MAAO,CAAC,CACV,EAEJ,ECgLMqC,EDsQO,SAAUpS,GAIrB,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLxH,KAAM,OACNwH,UACA,QAAMnE,CAAGkE,GACP,IAAIsS,EAAuBC,EAC3B,MAAM,UACJ/T,EAAS,MACT4B,EAAK,SACLD,EAAQ,SACRE,GACEL,EACJwS,GAGI5R,EAAAA,EAAAA,IAASX,EAASD,IAHhB,MACJhF,EAAQA,QAETwX,EADI5D,GAAqBC,EAAAA,EAAAA,GAAA2D,EAAAC,GAEpBzQ,QAAiBjC,EAAeC,EAAO4O,GACvC1P,GAAOC,EAAAA,EAAAA,IAAQX,GACfmP,GAAY9N,EAAAA,EAAAA,IAAarB,GACzBkU,EAAqC,OAA3B7T,EAAAA,EAAAA,IAAYL,IACtB,MACJe,EAAK,OACLG,GACEU,EAAMzB,SACV,IAAIgU,EACAC,EACS,QAAT1T,GAA2B,WAATA,GACpByT,EAAazT,EACb0T,EAAYjF,WAAyC,MAAlBxN,EAAS2J,WAAgB,EAAS3J,EAAS2J,MAAMzJ,EAAS1B,WAAc,QAAU,OAAS,OAAS,UAEvIiU,EAAY1T,EACZyT,EAA2B,QAAdhF,EAAsB,MAAQ,UAE7C,MAAMkF,EAAwBnT,EAASsC,EAASH,IAAMG,EAASF,OACzDgR,EAAuBvT,EAAQyC,EAASlJ,KAAOkJ,EAASnJ,MACxDka,GAA0BzQ,EAAAA,EAAAA,IAAI5C,EAASsC,EAAS2Q,GAAaE,GAC7DG,GAAyB1Q,EAAAA,EAAAA,IAAI/C,EAAQyC,EAAS4Q,GAAYE,GAC1DG,GAAWjT,EAAMyN,eAAeyC,MACtC,IAAIgD,EAAkBH,EAClBI,EAAiBH,EAOrB,GAN4D,OAAvDV,EAAwBtS,EAAMyN,eAAeyC,QAAkBoC,EAAsBxB,QAAQxR,IAChG6T,EAAiBL,GAE0C,OAAxDP,EAAyBvS,EAAMyN,eAAeyC,QAAkBqC,EAAuBzB,QAAQrR,IAClGyT,EAAkBL,GAEhBI,IAAYtF,EAAW,CACzB,MAAMyF,GAAO3Q,EAAAA,EAAAA,IAAIT,EAASlJ,KAAM,GAC1Bua,GAAO5Q,EAAAA,EAAAA,IAAIT,EAASnJ,MAAO,GAC3Bya,GAAO7Q,EAAAA,EAAAA,IAAIT,EAASH,IAAK,GACzB0R,GAAO9Q,EAAAA,EAAAA,IAAIT,EAASF,OAAQ,GAC9B4Q,EACFS,EAAiB5T,EAAQ,GAAc,IAAT6T,GAAuB,IAATC,EAAaD,EAAOC,GAAO5Q,EAAAA,EAAAA,IAAIT,EAASlJ,KAAMkJ,EAASnJ,QAEnGqa,EAAkBxT,EAAS,GAAc,IAAT4T,GAAuB,IAATC,EAAaD,EAAOC,GAAO9Q,EAAAA,EAAAA,IAAIT,EAASH,IAAKG,EAASF,QAExG,OACM9G,GAAKmR,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACRnM,GAAK,IACRmT,iBACAD,qBAEF,MAAMM,QAAuBrT,EAASuJ,cAAcrJ,EAAS1B,UAC7D,OAAIY,IAAUiU,EAAejU,OAASG,IAAW8T,EAAe9T,OACvD,CACL6P,MAAO,CACLnP,OAAO,IAIN,CAAC,CACV,EAEJ,EC3UMqT,EDrKO,SAAUxT,GAIrB,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLxH,KAAM,OACNwH,UACA,QAAMnE,CAAGkE,GACP,MAAM,MACJI,GACEJ,EACJ0T,GAGI9S,EAAAA,EAAAA,IAASX,EAASD,IAHhB,SACJM,EAAW,mBAEZoT,EADI9E,GAAqBC,EAAAA,EAAAA,GAAA6E,EAAAC,GAE1B,OAAQrT,GACN,IAAK,kBACH,CACE,MAIM8G,EAAUrF,QAJOhC,EAAeC,GAAKmM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACtCyC,GAAqB,IACxBnO,eAAgB,eAEuBL,EAAM1B,WAC/C,MAAO,CACL6K,KAAM,CACJqK,uBAAwBxM,EACxByM,gBAAiB5R,EAAsBmF,IAG7C,CACF,IAAK,UACH,CACE,MAIMA,EAAUrF,QAJOhC,EAAeC,GAAKmM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACtCyC,GAAqB,IACxBlO,aAAa,KAE0BN,EAAMzB,UAC/C,MAAO,CACL4K,KAAM,CACJuK,eAAgB1M,EAChB2M,QAAS9R,EAAsBmF,IAGrC,CACF,QAEI,MAAO,CAAC,EAGhB,EAEJ,ECyHM8G,ED9eQjO,IAAW,CACvBxH,KAAM,QACNwH,UACA,QAAMnE,CAAGkE,GACP,MAAM,EACJV,EAAC,EACDG,EAAC,UACDjB,EAAS,MACT4B,EAAK,SACLD,EAAQ,SACRE,EAAQ,eACRoN,GACEzN,GAEE,QACJe,EAAO,QACPJ,EAAU,IACRC,EAAAA,EAAAA,IAASX,EAASD,IAAU,CAAC,EACjC,GAAe,MAAXe,EACF,MAAO,CAAC,EAEV,MAAMF,GAAgBC,EAAAA,EAAAA,IAAiBH,GACjCf,EAAS,CACbN,IACAG,KAEIuU,GAAOjV,EAAAA,EAAAA,IAAiBP,GACxBnI,GAAS4I,EAAAA,EAAAA,IAAc+U,GACvBC,QAAwB9T,EAASuJ,cAAc3I,GAC/C2R,EAAmB,MAATsB,EACVE,EAAUxB,EAAU,MAAQ,OAC5ByB,EAAUzB,EAAU,SAAW,QAC/B0B,EAAa1B,EAAU,eAAiB,cACxC2B,EAAUjU,EAAM1B,UAAUrI,GAAU+J,EAAM1B,UAAUsV,GAAQpU,EAAOoU,GAAQ5T,EAAMzB,SAAStI,GAC1Fie,EAAY1U,EAAOoU,GAAQ5T,EAAM1B,UAAUsV,GAC3CO,QAAuD,MAA5BpU,EAASqB,qBAA0B,EAASrB,EAASqB,gBAAgBT,IACtG,IAAIyT,EAAaD,EAAoBA,EAAkBH,GAAc,EAGhEI,SAA6C,MAAtBrU,EAASgB,eAAoB,EAAShB,EAASgB,UAAUoT,MACnFC,EAAanU,EAAS1B,SAASyV,IAAehU,EAAMzB,SAAStI,IAE/D,MAAMoe,EAAoBJ,EAAU,EAAIC,EAAY,EAI9CI,EAAyBF,EAAa,EAAIP,EAAgB5d,GAAU,EAAI,EACxEse,GAAarS,EAAAA,EAAAA,IAAIzB,EAAcqT,GAAUQ,GACzCE,GAAatS,EAAAA,EAAAA,IAAIzB,EAAcsT,GAAUO,GAIzCG,EAAQF,EACRlS,EAAM+R,EAAaP,EAAgB5d,GAAUue,EAC7CE,EAASN,EAAa,EAAIP,EAAgB5d,GAAU,EAAIoe,EACxDnH,GAASsD,EAAAA,EAAAA,IAAMiE,EAAOC,EAAQrS,GAM9BsS,GAAmBtH,EAAeS,OAAoC,OAA3BrO,EAAAA,EAAAA,IAAarB,IAAsBsW,IAAWxH,GAAUlN,EAAM1B,UAAUrI,GAAU,GAAKye,EAASD,EAAQF,EAAaC,GAAcX,EAAgB5d,GAAU,EAAI,EAC5M8X,EAAkB4G,EAAkBD,EAASD,EAAQC,EAASD,EAAQC,EAASrS,EAAM,EAC3F,MAAO,CACL,CAACuR,GAAOpU,EAAOoU,GAAQ7F,EACvB5E,MAAI4C,EAAAA,EAAAA,GAAA,CACF,CAAC6H,GAAO1G,EACR0H,aAAcF,EAASxH,EAASa,GAC5B4G,GAAmB,CACrB5G,oBAGJoB,MAAOwF,EAEX,IC2aIE,ED9FS,SAAUhV,GAIvB,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLxH,KAAM,SACNwH,UACA,QAAMnE,CAAGkE,GACP,MAAM,UACJxB,EAAS,SACT6B,EAAQ,MACRD,EAAK,SACLD,EAAQ,SACRG,GACEN,GAIE,QACJW,EAAU,EAAC,EACXrB,EAAC,EACDG,IACEmB,EAAAA,EAAAA,IAASX,EAASD,GAChBkV,EAAoB/Y,MAAM0N,WAAwC,MAA3B1J,EAASyJ,oBAAyB,EAASzJ,EAASyJ,eAAevJ,EAAS3B,aAAgB,IACnIyW,EA5CZ,SAAwB/U,GACtB,MAAMgV,EAAchV,EAAM7J,QAAQwZ,MAAK,CAAC/F,EAAGC,IAAMD,EAAEvK,EAAIwK,EAAExK,IACnD4V,EAAS,GACf,IAAIC,EAAW,KACf,IAAK,IAAI3d,EAAI,EAAGA,EAAIyd,EAAY/e,OAAQsB,IAAK,CAC3C,MAAM2J,EAAO8T,EAAYzd,IACpB2d,GAAYhU,EAAK7B,EAAI6V,EAAS7V,EAAI6V,EAAS5V,OAAS,EACvD2V,EAAO7Y,KAAK,CAAC8E,IAEb+T,EAAOA,EAAOhf,OAAS,GAAGmG,KAAK8E,GAEjCgU,EAAWhU,CACb,CACA,OAAO+T,EAAO9S,KAAIjB,IAAQL,EAAAA,EAAAA,IAAiBmB,EAAgBd,KAC7D,CA8B0BiU,CAAeL,GAC7BM,GAAWvU,EAAAA,EAAAA,IAAiBmB,EAAgB8S,IAC5CrU,GAAgBC,EAAAA,EAAAA,IAAiBH,GAsDvC,MAAM8U,QAAmBtV,EAASmJ,gBAAgB,CAChD5K,UAAW,CACT6E,sBAvDJ,WAEE,GAA2B,IAAvB4R,EAAY9e,QAAgB8e,EAAY,GAAGrc,KAAOqc,EAAY,GAAGtc,OAAc,MAALyG,GAAkB,MAALG,EAEzF,OAAO0V,EAAYO,MAAKpU,GAAQhC,EAAIgC,EAAKxI,KAAO+H,EAAc/H,MAAQwG,EAAIgC,EAAKzI,MAAQgI,EAAchI,OAAS4G,EAAI6B,EAAKO,IAAMhB,EAAcgB,KAAOpC,EAAI6B,EAAKQ,OAASjB,EAAciB,UAAW0T,EAI/L,GAAIL,EAAY9e,QAAU,EAAG,CAC3B,GAA+B,OAA3BwI,EAAAA,EAAAA,IAAYL,GAAoB,CAClC,MAAMmX,EAAYR,EAAY,GACxBS,EAAWT,EAAYA,EAAY9e,OAAS,GAC5Cwf,EAA+B,SAAvB1W,EAAAA,EAAAA,IAAQX,GAChBqD,EAAM8T,EAAU9T,IAChBC,EAAS8T,EAAS9T,OAClBhJ,EAAO+c,EAAQF,EAAU7c,KAAO8c,EAAS9c,KACzCD,EAAQgd,EAAQF,EAAU9c,MAAQ+c,EAAS/c,MAGjD,MAAO,CACLgJ,MACAC,SACAhJ,OACAD,QACA0G,MAPY1G,EAAQC,EAQpB4G,OAPaoC,EAASD,EAQtBvC,EAAGxG,EACH2G,EAAGoC,EAEP,CACA,MAAMiU,EAAoC,UAAvB3W,EAAAA,EAAAA,IAAQX,GACrBuX,GAAWtT,EAAAA,EAAAA,OAAO0S,EAAY5S,KAAIjB,GAAQA,EAAKzI,SAC/Cmd,GAAU1T,EAAAA,EAAAA,OAAO6S,EAAY5S,KAAIjB,GAAQA,EAAKxI,QAC9Cmd,EAAed,EAAYhe,QAAOmK,GAAQwU,EAAaxU,EAAKxI,OAASkd,EAAU1U,EAAKzI,QAAUkd,IAC9FlU,EAAMoU,EAAa,GAAGpU,IACtBC,EAASmU,EAAaA,EAAa5f,OAAS,GAAGyL,OAKrD,MAAO,CACLD,MACAC,SACAhJ,KAPWkd,EAQXnd,MAPYkd,EAQZxW,MARYwW,EADDC,EAUXtW,OAPaoC,EAASD,EAQtBvC,EAXW0W,EAYXvW,EAAGoC,EAEP,CACA,OAAO2T,CACT,GAKE7W,SAAU0B,EAAS1B,SACnB2B,aAEF,OAAIF,EAAM1B,UAAUY,IAAMmW,EAAW/W,UAAUY,GAAKc,EAAM1B,UAAUe,IAAMgW,EAAW/W,UAAUe,GAAKW,EAAM1B,UAAUa,QAAUkW,EAAW/W,UAAUa,OAASa,EAAM1B,UAAUgB,SAAW+V,EAAW/W,UAAUgB,OACnM,CACL6P,MAAO,CACLnP,MAAOqV,IAIN,CAAC,CACV,EAEJ,ECEMS,EDoKa,SAAUjW,GAI3B,YAHgB,IAAZA,IACFA,EAAU,CAAC,GAEN,CACLA,UACAnE,EAAAA,CAAGkE,GACD,MAAM,EACJV,EAAC,EACDG,EAAC,UACDjB,EAAS,MACT4B,EAAK,eACLqN,GACEzN,GACE,OACJsN,EAAS,EACTS,SAAUqC,GAAgB,EAC1BpC,UAAWqC,GAAiB,IAC1BzP,EAAAA,EAAAA,IAASX,EAASD,GAChBJ,EAAS,CACbN,IACAG,KAEIuO,GAAYnP,EAAAA,EAAAA,IAAYL,GACxBuP,GAAWyC,EAAAA,EAAAA,IAAgBxC,GACjC,IAAIyC,EAAgB7Q,EAAOmO,GACvB2C,EAAiB9Q,EAAOoO,GAC5B,MAAMmI,GAAYvV,EAAAA,EAAAA,IAAS0M,EAAQtN,GAC7BoW,EAAsC,iBAAdD,EAAyB,CACrDpI,SAAUoI,EACVnI,UAAW,IACZ7B,EAAAA,EAAAA,GAAA,CACC4B,SAAU,EACVC,UAAW,GACRmI,GAEL,GAAI/F,EAAe,CACjB,MAAMiG,EAAmB,MAAbtI,EAAmB,SAAW,QACpCuI,EAAWlW,EAAM1B,UAAUqP,GAAY3N,EAAMzB,SAAS0X,GAAOD,EAAerI,SAC5EwI,EAAWnW,EAAM1B,UAAUqP,GAAY3N,EAAM1B,UAAU2X,GAAOD,EAAerI,SAC/E0C,EAAgB6F,EAClB7F,EAAgB6F,EACP7F,EAAgB8F,IACzB9F,EAAgB8F,EAEpB,CACA,GAAIlG,EAAgB,CAClB,IAAI9C,EAAuBiJ,EAC3B,MAAMH,EAAmB,MAAbtI,EAAmB,QAAU,SACnC0I,EAAe,CAAC,MAAO,QAAQngB,UAAS6I,EAAAA,EAAAA,IAAQX,IAChD8X,EAAWlW,EAAM1B,UAAUsP,GAAa5N,EAAMzB,SAAS0X,IAAQI,IAAmE,OAAlDlJ,EAAwBE,EAAeH,aAAkB,EAASC,EAAsBS,KAAmB,IAAMyI,EAAe,EAAIL,EAAepI,WACnOuI,EAAWnW,EAAM1B,UAAUsP,GAAa5N,EAAM1B,UAAU2X,IAAQI,EAAe,GAAyD,OAAnDD,EAAyB/I,EAAeH,aAAkB,EAASkJ,EAAuBxI,KAAe,IAAMyI,EAAeL,EAAepI,UAAY,GAChP0C,EAAiB4F,EACnB5F,EAAiB4F,EACR5F,EAAiB6F,IAC1B7F,EAAiB6F,EAErB,CACA,MAAO,CACL,CAACxI,GAAW0C,EACZ,CAACzC,GAAY0C,EAEjB,EAEJ,EC9NMgG,EAAkBA,CAAChY,EAAWC,EAAUsB,KAI5C,MAAMmI,EAAQ,IAAIuO,IACZC,GAAazK,EAAAA,EAAAA,GAAA,CACjBhM,YACGF,GAEC4W,GAAiB1K,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClByK,EAAczW,UAAQ,IACzB+I,GAAId,IAEN,MDvqBsBtI,OAAOpB,EAAWC,EAAUmY,KAClD,MAAM,UACJtY,EAAY,SAAQ,SACpB8B,EAAW,WAAU,WACrByW,EAAa,GAAE,SACf5W,GACE2W,EACEE,EAAkBD,EAAW5f,OAAOC,SACpCqH,QAA+B,MAAlB0B,EAAS2J,WAAgB,EAAS3J,EAAS2J,MAAMnL,IACpE,IAAIyB,QAAcD,EAASmJ,gBAAgB,CACzC5K,YACAC,WACA2B,cAEE,EACFhB,EAAC,EACDG,GACElB,EAA2B6B,EAAO5B,EAAWC,GAC7CwY,EAAoBzY,EACpBiP,EAAiB,CAAC,EAClByJ,EAAa,EACjB,IAAK,IAAIvf,EAAI,EAAGA,EAAIqf,EAAgB3gB,OAAQsB,IAAK,CAC/C,MAAM,KACJc,EAAI,GACJqD,GACEkb,EAAgBrf,IAElB2H,EACAG,EAAG0X,EAAK,KACR5N,EAAI,MACJgG,SACQzT,EAAG,CACXwD,IACAG,IACAwR,iBAAkBzS,EAClBA,UAAWyY,EACX3W,WACAmN,iBACArN,QACAD,WACAE,SAAU,CACR3B,YACAC,cAGJW,EAAa,MAAT8X,EAAgBA,EAAQ9X,EAC5BG,EAAa,MAAT0X,EAAgBA,EAAQ1X,EAC5BgO,GAActB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsB,GAAc,IACjB,CAAChV,IAAI0T,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACAsB,EAAehV,IACf8Q,KAGHgG,GAAS2H,GAAc,KACzBA,IACqB,iBAAV3H,IACLA,EAAM/Q,YACRyY,EAAoB1H,EAAM/Q,WAExB+Q,EAAMnP,QACRA,GAAwB,IAAhBmP,EAAMnP,YAAuBD,EAASmJ,gBAAgB,CAC5D5K,YACAC,WACA2B,aACGiP,EAAMnP,SAGXd,IACAG,KACElB,EAA2B6B,EAAO6W,EAAmBxY,KAE3D9G,GAAK,EAET,CACA,MAAO,CACL2H,IACAG,IACAjB,UAAWyY,EACX3W,WACAmN,iBACD,ECslBM4J,CAAkB3Y,EAAWC,GAAQwN,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvCyK,GAAa,IAChBzW,SAAU0W,IACV,C","sources":["../node_modules/flairup/src/utils/asArray.ts","../node_modules/flairup/src/utils/is.ts","../node_modules/flairup/src/utils/joinTruthy.ts","../node_modules/flairup/src/utils/stableHash.ts","../node_modules/flairup/src/utils/stringManipulators.ts","../node_modules/flairup/src/Rule.ts","../node_modules/flairup/src/Sheet.ts","../node_modules/flairup/src/utils/forIn.ts","../node_modules/flairup/src/cx.ts","../node_modules/flairup/src/index.ts","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs"],"sourcesContent":["export function asArray(v: T | T[]): T[] {\n return [].concat(v as unknown as []);\n}\n","import { ClassName } from '../types.js';\n\nexport function isPsuedoSelector(selector: string): boolean {\n return selector.startsWith(':');\n}\n\nexport function isStyleCondition(selector: string): boolean {\n return (\n isString(selector) &&\n (selector === '*' ||\n (selector.length > 1 && ':>~.+*'.includes(selector.slice(0, 1))) ||\n isImmediatePostcondition(selector))\n );\n}\n\nexport function isValidProperty(\n property: string,\n value: unknown,\n): value is string {\n return (\n (isString(value) || typeof value === 'number') &&\n !isCssVariables(property) &&\n !isPsuedoSelector(property) &&\n !isMediaQuery(property)\n );\n}\n\nexport function isMediaQuery(selector: string): boolean {\n return selector.startsWith('@media');\n}\n\nexport function isDirectClass(selector: string): boolean {\n return selector === '.';\n}\n\nexport function isCssVariables(selector: string): boolean {\n return selector === '--';\n}\n\nexport function isString(value: unknown): value is string {\n return value + '' === value;\n}\n\nexport function isClassName(value: unknown): value is ClassName {\n return isString(value) && value.length > 1 && value.startsWith('.');\n}\n\nexport function isImmediatePostcondition(\n value: unknown,\n): value is `&${string}` {\n return isString(value) && (value.startsWith('&') || isPsuedoSelector(value));\n}\n","export function joinTruthy(arr: unknown[], delimiter: string = ''): string {\n return arr.filter(Boolean).join(delimiter);\n}\n","// Stable hash function.\nexport function stableHash(prefix: string, seed: string): string {\n let hash = 0;\n if (seed.length === 0) return hash.toString();\n for (let i = 0; i < seed.length; i++) {\n const char = seed.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return `${prefix ?? 'cl'}_${hash.toString(36)}`;\n}\n","// Some properties need special handling\nexport function handlePropertyValue(property: string, value: string): string {\n if (property === 'content') {\n return `\"${value}\"`;\n }\n\n return value;\n}\n\nexport function camelCaseToDash(str: string): string {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport function joinedProperty(property: string, value: string): string {\n return `${property}:${value}`;\n}\n\nexport function toClass(str: string): string {\n return str ? `.${str}` : '';\n}\n\nexport function appendString(base: string, line: string): string {\n return base ? `${base}\\n${line}` : line;\n}\n","import { Sheet } from './Sheet';\nimport { asArray } from './utils/asArray';\nimport { isImmediatePostcondition, isPsuedoSelector } from './utils/is';\nimport { joinTruthy } from './utils/joinTruthy';\nimport { stableHash } from './utils/stableHash';\nimport {\n camelCaseToDash,\n handlePropertyValue,\n joinedProperty,\n toClass,\n} from './utils/stringManipulators';\n\nexport class Rule {\n public hash: string;\n public joined: string;\n public key: string;\n\n constructor(\n private sheet: Sheet,\n public property: string,\n public value: string,\n private selector: Selector,\n ) {\n this.property = property;\n this.value = value;\n this.joined = joinedProperty(property, value);\n const joinedConditions = this.selector.preconditions.concat(\n this.selector.postconditions,\n );\n this.hash = this.selector.hasConditions\n ? (this.selector.scopeClassName as string)\n : stableHash(this.sheet.name, this.joined);\n this.key = joinTruthy([this.joined, joinedConditions, this.hash]);\n }\n\n public toString(): string {\n let selectors = mergeSelectors(this.selector.preconditions, {\n right: this.hash,\n });\n\n selectors = mergeSelectors(this.selector.postconditions, {\n left: selectors,\n });\n\n return `${selectors} {${Rule.genRule(this.property, this.value)}}`;\n }\n\n static genRule(property: string, value: string): string {\n const transformedProperty = camelCaseToDash(property);\n return (\n joinedProperty(\n transformedProperty,\n handlePropertyValue(property, value),\n ) + ';'\n );\n }\n}\n\nexport function mergeSelectors(\n selectors: string[],\n { left = '', right = '' }: { left?: string; right?: string } = {},\n): string {\n const output = selectors.reduce((selectors, current) => {\n if (isPsuedoSelector(current)) {\n return selectors + current;\n }\n\n if (isImmediatePostcondition(current)) {\n return selectors + current.slice(1);\n }\n\n return joinTruthy([selectors, current], ' ');\n\n // selector then postcondition\n }, left);\n\n // preconditions, then selector\n return joinTruthy([output, toClass(right)], ' ');\n}\n\nexport class Selector {\n public preconditions: string[] = [];\n public scopeClassName: string | null = null;\n public scopeName: string | null = null;\n public postconditions: string[] = [];\n\n constructor(\n private sheet: Sheet,\n scopeName: string | null = null,\n {\n preconditions,\n postconditions,\n }: {\n preconditions?: string[] | string | undefined;\n postconditions?: string[] | string | undefined;\n } = {},\n ) {\n this.preconditions = preconditions ? asArray(preconditions) : [];\n this.postconditions = postconditions ? asArray(postconditions) : [];\n this.setScope(scopeName);\n }\n\n private setScope(scopeName: string | null): Selector {\n if (!scopeName) {\n return this;\n }\n\n if (!this.scopeClassName) {\n this.scopeName = scopeName;\n this.scopeClassName = stableHash(\n this.sheet.name,\n // adding the count guarantees uniqueness across style.create calls\n scopeName + this.sheet.count,\n );\n }\n\n return this;\n }\n\n get hasConditions(): boolean {\n return this.preconditions.length > 0 || this.postconditions.length > 0;\n }\n\n addScope(scopeName: string): Selector {\n return new Selector(this.sheet, scopeName, {\n preconditions: this.preconditions,\n postconditions: this.postconditions,\n });\n }\n\n addPrecondition(precondition: string): Selector {\n return new Selector(this.sheet, this.scopeClassName, {\n postconditions: this.postconditions,\n preconditions: this.preconditions.concat(precondition),\n });\n }\n\n addPostcondition(postcondition: string): Selector {\n return new Selector(this.sheet, this.scopeClassName, {\n preconditions: this.preconditions,\n postconditions: this.postconditions.concat(postcondition),\n });\n }\n\n createRule(property: string, value: string): Rule {\n return new Rule(this.sheet, property, value, this);\n }\n}\n","import { Rule } from './Rule.js';\nimport { StoredStyles } from './types.js';\nimport { isString } from './utils/is.js';\nimport { appendString } from './utils/stringManipulators.js';\n\nexport class Sheet {\n private styleTag: HTMLStyleElement | undefined;\n\n // Hash->css\n private storedStyles: StoredStyles = {};\n\n // styles->hash\n private storedClasses: Record = {};\n private style: string = '';\n public count = 0;\n public id: string;\n\n constructor(\n public name: string,\n private rootNode?: HTMLElement | null,\n ) {\n this.id = `flairup-${name}`;\n\n this.styleTag = this.createStyleTag();\n }\n\n getStyle(): string {\n return this.style;\n }\n\n append(css: string): void {\n this.style = appendString(this.style, css);\n }\n\n apply(): void {\n this.count++;\n\n if (!this.styleTag) {\n return;\n }\n\n this.styleTag.innerHTML = this.style;\n }\n\n isApplied(): boolean {\n return !!this.styleTag;\n }\n\n createStyleTag(): HTMLStyleElement | undefined {\n // check that we're in the browser and have access to the DOM\n if (\n typeof document === 'undefined' ||\n this.isApplied() ||\n // Explicitly disallow mounting to the DOM\n this.rootNode === null\n ) {\n return this.styleTag;\n }\n\n const styleTag = document.createElement('style');\n styleTag.type = 'text/css';\n styleTag.id = this.id;\n (this.rootNode ?? document.head).appendChild(styleTag);\n return styleTag;\n }\n\n addRule(rule: Rule): string {\n const storedClass = this.storedClasses[rule.key];\n\n if (isString(storedClass)) {\n return storedClass;\n }\n\n this.storedClasses[rule.key] = rule.hash;\n this.storedStyles[rule.hash] = [rule.property, rule.value];\n\n this.append(rule.toString());\n return rule.hash;\n }\n}\n","export function forIn>(\n obj: O,\n fn: (key: string, value: O[string]) => void,\n): void {\n for (const key in obj) {\n fn(key.trim(), obj[key]);\n }\n}\n","import { joinTruthy } from './utils/joinTruthy';\n\nexport function cx(...args: unknown[]): string {\n const classes = args.reduce((classes: string[], arg) => {\n if (arg instanceof Set) {\n classes.push(...arg);\n } else if (typeof arg === 'string') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n classes.push(cx(...arg));\n } else if (typeof arg === 'object') {\n // @ts-expect-error - it is a string\n Object.entries(arg).forEach(([key, value]) => {\n if (value) {\n classes.push(key);\n }\n });\n }\n\n return classes;\n }, [] as string[]);\n\n return joinTruthy(classes, ' ').trim();\n}\n","import { Rule, Selector, mergeSelectors } from './Rule.js';\nimport { Sheet } from './Sheet.js';\nimport {\n CSSVariablesObject,\n ClassSet,\n CreateSheetInput,\n DirectClass,\n ScopedStyles,\n Styles,\n createSheetReturn,\n} from './types.js';\nimport { asArray } from './utils/asArray.js';\nimport { forIn } from './utils/forIn.js';\nimport {\n isCssVariables,\n isDirectClass,\n isMediaQuery,\n isStyleCondition,\n isValidProperty,\n} from './utils/is.js';\n\nexport { cx } from './cx.js';\n\nexport type { CreateSheetInput, Styles };\n\nexport function createSheet(\n name: string,\n rootNode?: HTMLElement | null,\n): createSheetReturn {\n const sheet = new Sheet(name, rootNode);\n\n return {\n create,\n getStyle: sheet.getStyle.bind(sheet),\n isApplied: sheet.isApplied.bind(sheet),\n };\n\n function create(styles: CreateSheetInput) {\n const scopedStyles: ScopedStyles = {} as ScopedStyles;\n\n iteratePreconditions(sheet, styles, new Selector(sheet)).forEach(\n ([scopeName, styles, selector]) => {\n iterateStyles(sheet, styles as Styles, selector).forEach(\n (className) => {\n addScopedStyle(scopeName as K, className);\n },\n );\n },\n );\n\n // Commit the styles to the sheet.\n // Done only once per create call.\n // This way we do not update the DOM on every style.\n sheet.apply();\n\n return scopedStyles;\n\n function addScopedStyle(name: K, className: string) {\n scopedStyles[name as keyof ScopedStyles] =\n scopedStyles[name as keyof ScopedStyles] ?? new Set();\n scopedStyles[name as keyof ScopedStyles].add(className);\n }\n }\n}\n\n// This one plucks out all of the preconditions\n// and creates selector objects from them\nfunction iteratePreconditions(\n sheet: Sheet,\n styles: Styles,\n selector: Selector,\n) {\n const output: Array<[string, Styles, Selector]> = [];\n\n forIn(styles, (key: string, value) => {\n if (isStyleCondition(key)) {\n return iteratePreconditions(\n sheet,\n value as Styles,\n selector.addPrecondition(key),\n ).forEach((item) => output.push(item));\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - this is a valid case\n output.push([key, styles[key], selector.addScope(key)]);\n });\n\n return output;\n}\n\nfunction iterateStyles(\n sheet: Sheet,\n styles: Styles,\n selector: Selector,\n): ClassSet {\n const output: ClassSet = new Set();\n // eslint-disable-next-line max-statements\n forIn(styles, (property, value) => {\n let res: string[] | Set = [];\n\n // Postconditions\n if (isStyleCondition(property)) {\n res = iterateStyles(\n sheet,\n value as Styles,\n selector.addPostcondition(property),\n );\n // Direct classes: \".\": \"className\"\n } else if (isDirectClass(property)) {\n res = asArray(value as DirectClass);\n } else if (isMediaQuery(property)) {\n res = handleMediaQuery(sheet, value as Styles, property, selector);\n\n // \"--\": { \"--variable\": \"value\" }\n } else if (isCssVariables(property)) {\n res = cssVariablesBlock(sheet, value as CSSVariablesObject, selector);\n\n // \"property\": \"value\"\n } else if (isValidProperty(property, value)) {\n const rule = selector.createRule(property, value);\n sheet.addRule(rule);\n output.add(rule.hash);\n }\n\n return addEachClass(res, output);\n });\n\n return output;\n}\n\nfunction addEachClass(list: string[] | Set, to: Set) {\n list.forEach((className) => to.add(className));\n return to;\n}\n\n// eslint-disable-next-line max-statements\nfunction cssVariablesBlock(\n sheet: Sheet,\n styles: CSSVariablesObject,\n selector: Selector,\n) {\n const classes: ClassSet = new Set();\n\n const chunkRows: string[] = [];\n forIn(styles, (property: string, value) => {\n if (isValidProperty(property, value)) {\n chunkRows.push(Rule.genRule(property, value));\n return;\n }\n const res = iterateStyles(sheet, value ?? {}, selector);\n addEachClass(res, classes);\n });\n\n if (!selector.scopeClassName) {\n return classes;\n }\n\n if (chunkRows.length) {\n const output = chunkRows.join(' ');\n sheet.append(\n `${mergeSelectors(selector.preconditions, {\n right: selector.scopeClassName,\n })} {${output}}`,\n );\n }\n\n classes.add(selector.scopeClassName);\n return classes;\n}\n\nfunction handleMediaQuery(\n sheet: Sheet,\n styles: Styles,\n mediaQuery: string,\n selector: Selector,\n) {\n sheet.append(mediaQuery + ' {');\n\n // iterateStyles will internally append each rule to the sheet\n // as needed. All we have to do is just open the block and close it after.\n const output = iterateStyles(sheet, styles, selector);\n\n sheet.append('}');\n\n return output;\n}\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle