{"version":3,"file":"1997.0e281cf29b101b30e623.js","mappings":";iMAcA,MAAMA,EACJC,YAAYC,EAAWC,GACrBC,KAAKF,UAAYA,EACjBE,KAAKD,OAASA,EACdC,KAAKC,MARc,CASrB,CACAC,WAAWC,GAET,GADAH,KAAKC,MAVmB,GAWnBD,KAAKI,QAAS,CACjB,MAAMN,EAAYE,KAAKF,UACvBE,KAAKI,cAAgB,IAAAC,GAAgBL,KAAKM,SAAUH,EAAWL,EAAW,CAAC,WAAY,sBAAuBE,KAAKD,OACrH,CACF,CAIAQ,YACE,OAnByB,IAmBlBP,KAAKC,MAAgC,+BAC5C,MAAMG,EAAUJ,KAAKI,QACjBA,IACEJ,KAAKM,SACPN,KAAKM,SAASE,kBAAkBJ,EAAQK,cAAeL,GAGvDA,EAAQM,UAGZV,KAAKW,SAAMC,EACXZ,KAAKC,MA9BoB,CA+B3B,EAEF,MAAMY,EAAU,CAACC,EAAMC,EAAIhB,MACpBe,IAGDA,EAAKhB,YAAciB,IAGhB,IAAAC,GAAsBF,EAAKf,OAAQA,IAEtCkB,EAAgB,CAACC,EAAMnB,IACtBmB,EAGDA,aAAgBtB,EACXsB,EAEF,IAAItB,EAAesB,EAAMnB,GALvB,KAuBLoB,GAAoB,QAAmB,cAAc,KACzDtB,cACEuB,QACApB,KAAKqB,iBACLrB,KAAKsB,iBACLtB,KAAKuB,gBAAiB,QAAYvB,KAAM,iBAAkB,GAC1DA,KAAKwB,kBAAmB,QAAYxB,KAAM,mBAAoB,GAC9DA,KAAKyB,iBAAkB,QAAYzB,KAAM,kBAAmB,GAC5DA,KAAK0B,WAAa,GAClB1B,KAAK2B,kBAAmB,EACxB3B,KAAK4B,WAAY,EACjB5B,KAAK6B,iBAAkB,EACvB7B,KAAK8B,WAAY,EACjB9B,KAAK+B,MAAQ,GAIb/B,KAAKgC,UAAW,CAClB,CACAC,sBACMjC,KAAKkC,SACPlC,KAAKkC,QAAQC,QAA6B,IAAtBnC,KAAKoC,aAE7B,CACAC,cACE,MAAMC,EAAQ,gBACI1B,IAAdZ,KAAKuC,OACFvC,KAAK4B,UAGDU,GACPE,QAAQC,KAAK,sEAHbzC,KAAK0C,QAAQ1C,KAAKuC,KAAMvC,KAAK2C,YAMnC,CACAC,oBAEE,GADA5C,KAAK4B,UAAqD,OAAzCiB,SAASC,cAAc,eAA6D,OAAnC9C,KAAK+C,GAAGC,QAAQ,oBACxDpC,IAAtBZ,KAAKoC,aAA4B,CACnC,MAAMa,GAAO,OAAWjD,MACxBA,KAAKoC,aAAe,EAAAc,EAAA,WAAkB,mBAA6B,QAATD,EAC5D,CACAjD,KAAKuB,eAAe4B,MACtB,CACAjD,yBACEF,KAAKqC,cACLrC,KAAKkC,eAAiB,iCAA2BkB,uBAAuBpD,KAAK+C,GAAI/C,KAAKqD,SAASC,KAAKtD,MAAOA,KAAKuD,QAAQD,KAAKtD,MAAOA,KAAKwD,OAAOF,KAAKtD,MAAOA,KAAKyD,MAAMH,KAAKtD,OAC5KA,KAAKiC,qBACP,CACAyB,oBACE1D,KAAK8B,WAAY,CACnB,CACA6B,uBACE,IAAK,MAAM7C,KAAQd,KAAK+B,OACtB,IAAA6B,GAAU9C,EAAKV,QAAS,KACxBU,EAAKP,WAGHP,KAAKkC,UACPlC,KAAKkC,QAAQ2B,UACb7D,KAAKkC,aAAUtB,GAEjBZ,KAAK0B,WAAWoC,OAAS,EACzB9D,KAAK+B,MAAM+B,OAAS,EACpB9D,KAAK8B,WAAY,CACnB,CAWAiC,KAAKjE,EAAWkE,EAAgBC,EAAMC,GACpC,OAAOlE,KAAKmE,QAAQ,EAAGrE,EAAWkE,EAAgBC,EAAMC,EAC1D,CAWAC,OAAOC,EAAatE,EAAWkE,EAAgBC,EAAMC,GACnD,OAAOlE,KAAKqE,YAAYD,EAAa,CAAC,CAAEtE,YAAWkE,mBAAmBC,EAAMC,EAC9E,CAWAG,YAAYD,EAAaE,EAAkBL,EAAMC,GAC/C,OAAOlE,KAAKuE,UAAU,CACpBC,YAAaJ,EACbK,YAAaH,EACbL,QACCC,EACL,CAQAQ,IAAIT,EAAMC,GACR,OAAOlE,KAAK2E,aAAa,EAAG,EAAGV,EAAMC,EACvC,CAQAU,MAAMC,EAAiBZ,EAAMC,GAC3B,MAAMY,EAAK,CACTC,aAAc,EACdC,aAAc,EACdf,QASF,MAP+B,iBAApBY,GAAgCA,EAAgB/E,WACzDgF,EAAGG,WAAaJ,EAChBC,EAAGC,YAAc,GAEiB,iBAApBF,IACdC,EAAGC,YAAcF,EAAkB,GAE9B7E,KAAKuE,UAAUO,EAAIZ,EAC5B,CAOAgB,UAAUjB,EAAMC,GACd,OAAOlE,KAAK2E,YAAY,GAAI,EAAGV,EAAMC,EACvC,CASAS,YAAYQ,EAAYH,EAAc,EAAGf,EAAMC,GAC7C,OAAOlE,KAAKuE,UAAU,CACpBQ,YAAaI,EACbH,cACAf,QACCC,EACL,CASAxB,QAAQ5C,EAAWkE,EAAgBC,EAAMC,GACvC,OAAOlE,KAAKoF,SAAS,CAAC,CAAEtF,YAAWkE,mBAAmBC,EAAMC,EAC9D,CAWAkB,SAASrD,EAAOkC,EAAMC,GAMpB,OALAD,UAA2CA,EAAO,CAAC,IAE7B,IAAlBA,EAAKjC,WACPiC,EAAKjC,UAAW,GAEXhC,KAAKuE,UAAU,CACpBC,YAAa,EACbC,YAAa1C,EACbgD,YAAa,EACbC,aAAc,EACdf,QACCC,EACL,CAYAmB,WAAWtE,EAAIhB,EAAQuF,EAAWC,GAChC,MAAMC,EAASxF,KAAKyF,gBACpB,GAAI5E,EAAQ2E,EAAQzE,EAAIhB,GACtB,OAAO2F,QAAQC,QAAQ,CACrBC,SAAS,EACTxF,QAASoF,EAAOpF,UAGpB,IAAIuF,EACJ,MAAME,EAAU,IAAIH,SAASI,GAAOH,EAAUG,IAC9C,IAAIC,EACJ,MAAMC,EAAa,CACjBC,WAAW,EACXC,YAAcC,IACZ,IAAIC,EACJ,MAAMC,EAAI,IAAIX,SAASI,GAAOM,EAAON,IASrC,OARAH,EAAQ,CACNC,SAAS,EACTxF,QAAS+F,EACTG,YAAapG,UACXkG,UACML,CAAM,IAGTM,CAAC,GAGZ,GAAkB,SAAdf,EACFS,EAAS/F,KAAK0C,QAAQ3B,EAAIhB,EAAQiG,OAE/B,CAEH,MAAMO,EAAiBvG,KAAK+B,MAAMyE,MAAMC,GAAM5F,EAAQ4F,EAAG1F,EAAIhB,KACzDwG,EACFR,EAAS/F,KAAK4E,MAAM2B,EAAgBG,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGX,GAAa,CAAEV,UAAW,OAAQsB,iBAAkBrB,KAEnG,YAAdD,EACPS,EAAS/F,KAAK+D,KAAKhD,EAAIhB,EAAQ2G,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGX,GAAa,CAAEY,iBAAkBrB,KAE3E,SAAdD,IACPS,EAAS/F,KAAK0C,QAAQ3B,EAAIhB,EAAQ2G,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGX,GAAa,CAAEV,UAAW,OAAQtD,UAAU,EAAM4E,iBAAkBrB,KAE1I,CACA,OAAOM,CACT,CAMA3F,mBACE,MAAMsF,EAASxF,KAAKyF,gBACpB,GAAID,EACF,MAAO,CACLzE,GAAIyE,EAAOpF,QAAQyG,QACnB9G,OAAQyF,EAAOzF,OACfK,QAASoF,EAAOpF,QAItB,CAIAF,kBACE,OAAOF,KAAKyF,eACd,CAMAvF,iBAAiB4G,GACf,OAAO9G,KAAK+B,MAAM+E,EACpB,CAMA5G,gBAAgBY,GACd,OAAOd,KAAK+G,cAAcjG,EAC5B,CAMAZ,kBAAkBY,GAChB,OAAOd,KAAKgH,gBAAgBlG,EAC9B,CACAmG,YACE,OAAOjH,KAAK+B,MAAM+B,MACpB,CACA2B,gBACE,OAAOzF,KAAK+B,MAAM/B,KAAK+B,MAAM+B,OAAS,EACxC,CACAiD,cAAcjG,EAAOd,KAAKyF,iBACxB,SAAU3E,IAAQd,KAAKgH,gBAAgBlG,GACzC,CACAkG,gBAAgBlG,EAAOd,KAAKyF,iBAC1B,IAAK3E,EACH,OAEF,MAAMiB,EAAQ/B,KAAK+B,MACb+E,EAAQ/E,EAAMmF,QAAQpG,GAC5B,OAAOgG,EAAQ,EAAI/E,EAAM+E,EAAQ,QAAKlG,CACxC,CAMAV,gBAAgB4E,EAAIZ,GAClB,IAAIiD,EAAIC,EACR,GAAIpH,KAAK6B,kBAAuC,QAAlBsF,EAAKrC,EAAGb,YAAyB,IAAPkD,OAAgB,EAASA,EAAGE,YAClF,OAAO,EAET,MAAMxB,EAAU,IAAIH,SAAQ,CAACC,EAAS2B,KACpCxC,EAAGa,QAAUA,EACbb,EAAGwC,OAASA,CAAM,IASpB,GAPAxC,EAAGZ,KAAOA,EAONY,EAAGb,OAA8B,IAAtBa,EAAGb,KAAKgC,WAAuBjG,KAAK4B,UAAW,CAC5D,MAAM2F,EAAS1E,SAASC,cAAc,cACtC,GAAIyE,EAAQ,CACV,MAAMC,QAAsBD,EAAOC,gBACnC,IAAsB,IAAlBA,EACF,OAAO,EAET,GAA6B,iBAAlBA,EAET,OADAD,EAAOxD,KAAKyD,EAAe1C,EAAGb,KAAKqB,WAAa,SACzC,CAEX,CACF,CAUA,OAR+E,KAAhD,QAAzB8B,EAAKtC,EAAGL,mBAAgC,IAAP2C,OAAgB,EAASA,EAAGtD,UACjEgB,EAAGL,iBAAc7D,GAGnBZ,KAAK0B,WAAWqC,KAAKe,GAGrB9E,KAAKyH,WACE5B,CACT,CACA6B,QAAQC,EAAQ7C,GACd,GAAI9E,KAAK8B,UACP9B,KAAK4H,UAAU,+BAAgC9C,QAOjD,GAJIA,EAAGZ,MACLY,EAAGZ,KAAKyD,EAAOE,aAAcF,EAAOG,mBAAoBH,EAAOI,aAAcJ,EAAOK,YAAaL,EAAOrC,WAE1GR,EAAGa,QAAQgC,EAAOE,eACQ,IAAtB/C,EAAGb,KAAKgC,WAAuBjG,KAAK4B,UAAW,CACjD,MAAM2F,EAAS1E,SAASC,cAAc,cACtC,GAAIyE,EAAQ,CACV,MAAMjC,EAAiC,SAArBqC,EAAOrC,UAAuB,OAAS,UACzDiC,EAAOU,WAAW3C,EACpB,CACF,CACF,CACA4C,OAAOC,EAAcrD,GACf9E,KAAK8B,UACP9B,KAAK4H,UAAU,+BAAgC9C,IAGjD9E,KAAK0B,WAAWoC,OAAS,EACzB9D,KAAK4H,UAAUO,EAAcrD,GAC/B,CACA8C,UAAUO,EAAcrD,GAClBA,EAAGZ,MACLY,EAAGZ,MAAK,GAAO,EAAOiE,GAEpBrD,EAAGwC,SAAWtH,KAAK8B,UACrBgD,EAAGwC,OAAOa,GAGVrD,EAAGa,SAAQ,EAEf,CAMA8B,WAGE,GAAIzH,KAAK6B,gBACP,OAAO,EAGT,MAAMiD,EAAK9E,KAAK0B,WAAW0G,QAC3B,QAAKtD,IAGL9E,KAAKqI,cAAcvD,IACZ,EACT,CAEA5E,oBAAoB4E,GAClB,IAEE9E,KAAKwB,iBAAiB2B,OACtBnD,KAAK6B,iBAAkB,EACvB7B,KAAKsI,UAAUxD,GACf,MAAMkD,EAAchI,KAAKyF,gBACnBsC,EAAe/H,KAAKuI,gBAAgBzD,EAAIkD,GAC9C,IAAKA,IAAgBD,EACnB,MAAM,IAAIS,MAAM,uCAEdT,GAnfa,IAmfGA,EAAa9H,aACzB8H,EAAaU,KAAKzI,KAAK+C,IAE/B/C,KAAK0I,aAAaX,EAAcC,EAAalD,GAE7C,MAAMgD,GAAsBhD,EAAG6D,4BAA8B7D,EAAG8D,4BAA8Bb,IAAiBC,EAC/G,GAAIF,GAAsBhD,EAAGb,MAAQ+D,EAAa,CACF,SAAtBlD,EAAGb,KAAKqB,YAM9BR,EAAGb,KAAK2C,iBAAmB9B,EAAGb,KAAK2C,mBAAqBmB,aAAmD,EAASA,EAAanB,mBAEnIoB,EAAYpB,iBAAmB9B,EAAGb,KAAK2C,gBACzC,CACA,IAAIe,EAEFA,EADEG,QACa9H,KAAK6I,WAAWd,EAAcC,EAAalD,GAOjD,CACP+C,cAAc,EACdC,oBAAoB,GAGxB9H,KAAK0H,QAAQC,EAAQ7C,GACrB9E,KAAKyB,gBAAgB0B,MACvB,CACA,MAAOgF,GACLnI,KAAKkI,OAAOC,EAAcrD,EAC5B,CACA9E,KAAK6B,iBAAkB,EACvB7B,KAAKyH,UACP,CACAa,UAAUxD,GACR,IAAIqC,EAAIC,EACJ0B,EACJ,MAAMC,EAAc/I,KAAK+B,MAAM+B,OAG/B,GAFmB,QAAlBqD,EAAKrC,EAAGb,YAAyB,IAAPkD,IAAsBrC,EAAGb,KAAO,CAAC,GACzB,QAAlCmD,GAAM0B,EAAKhE,EAAGb,MAAM3D,gBAA6B,IAAP8G,IAAsB0B,EAAGxI,SAAWN,KAAKM,eAC9DM,IAAlBkE,EAAGG,WAA0B,EAC/B,YAA0BrE,IAAnBkE,EAAGC,YAA2B,iCACrC,YAA0BnE,IAAnBkE,EAAGE,YAA2B,gCACrC,MAAM8B,EAAQ9G,KAAK+B,MAAMmF,QAAQpC,EAAGG,YACpC,GAAI6B,EAAQ,EACV,MAAM,IAAI0B,MAAM,4BAElB1D,EAAGC,aAAe+B,CACpB,MACuBlG,IAAnBkE,EAAGC,cACDD,EAAGC,YAAc,IACnBD,EAAGC,YAAcgE,EAAc,GAE7BjE,EAAGE,YAAc,IACnBF,EAAGE,YAAc+D,EAAcjE,EAAGC,aAEpCD,EAAG8D,0BAA4B9D,EAAGE,YAAc,GAAKF,EAAGC,YAAcD,EAAGE,cAAgB+D,GAEvFjE,EAAGL,eAGDK,EAAGN,YAAc,GAAKM,EAAGN,YAAcuE,KACzCjE,EAAGN,YAAcuE,GAEnBjE,EAAG6D,2BAA6B7D,EAAGN,cAAgBuE,GAErD,MAAMtE,EAAcK,EAAGL,YACvB,IAAKA,EACH,QAEF,OAAOA,EAAYX,OAAS,EAAG,0BAC/B,MAAMkF,EAAiCvE,EAzgBtCwE,KAAK/H,GACFA,aAAgBtB,EACXsB,EAEL,cAAeA,EACVD,EAAcC,EAAKpB,UAAmC,OAAxBoB,EAAK8C,oBAA0BpD,EAAYM,EAAK8C,gBAEhF/C,EAAcC,OAAMN,KAE1BsI,QAAQzC,GAAY,OAANA,IAigBf,GAA+B,IAA3BuC,EAAgBlF,OAClB,MAAM,IAAI0E,MAAM,2BAGlB,IAAK,MAAM1H,KAAQkI,EAAiB,CAClClI,EAAKR,SAAWwE,EAAGb,KAAK3D,SACxB,MAAMK,EAAMG,EAAKH,IACjB,GAAIA,GAAOA,IAAQX,KACjB,MAAM,IAAIwI,MAAM,sCAElB,GAzkBuB,IAykBnB1H,EAAKb,MACP,MAAM,IAAIuI,MAAM,sCAEpB,CACA1D,EAAGL,YAAcuE,CACnB,CASAT,gBAAgBzD,EAAIkD,GAElB,MAAMvD,EAAcK,EAAGL,YACvB,QAAoB7D,IAAhB6D,EACF,OAAOA,EAAYA,EAAYX,OAAS,GAG1C,MAAMiB,EAAcD,EAAGC,YACvB,QAAoBnE,IAAhBmE,EAA2B,CAC7B,MAAMhD,EAAQ/B,KAAK+B,MACboH,EAAYpE,EAAcD,EAAGE,YACnC,IAAK,IAAIoE,EAAIrH,EAAM+B,OAAS,EAAGsF,GAAK,EAAGA,IAAK,CAC1C,MAAMtI,EAAOiB,EAAMqH,GACnB,IAAKA,EAAIrE,GAAeqE,GAAKD,IAAcrI,IAASkH,EAClD,OAAOlH,CAEX,CACF,CAEF,CAQA4H,aAAaX,EAAcC,EAAalD,GACtC,IAAIqC,EAAIC,EAAI0B,GACZ,OAAOd,GAAeD,EAAc,+CACpC,OAAOjD,EAAGa,QAAS,0BACnB,OAAOb,EAAGwC,OAAQ,wBAElB,MAAMrD,EAAOa,EAAGb,MACV,YAAEQ,EAAW,YAAEM,EAAW,YAAEC,GAAgBF,EAElD,IAAIuE,EAEJ,QAAoBzI,IAAhBmE,QAA6CnE,IAAhBoE,EAA2B,EAC1D,OAAOD,GAAe,EAAG,oCACzB,OAAOC,GAAe,EAAG,mCACzBqE,EAAe,GACf,IAAK,IAAID,EAAIrE,EAAaqE,EAAIrE,EAAcC,EAAaoE,IAAK,CAC5D,MAAMtI,EAAOd,KAAK+B,MAAMqH,QACXxI,IAATE,GAAsBA,IAASiH,GAAgBjH,IAASkH,GAC1DqB,EAAatF,KAAKjD,EAEtB,CAE0B,QAAzBqG,EAAKlD,EAAKqB,iBAA8B,IAAP6B,IAAsBlD,EAAKqB,UAAY,OAC3E,CACA,MAAMgE,EAAgBtJ,KAAK+B,MAAM+B,QAAkG,QAAvFsD,EAAK3C,aAAiD,EAASA,EAAYX,cAA2B,IAAPsD,EAAgBA,EAAK,IAAMpC,QAAiDA,EAAc,GAErO,IADA,OAAOsE,GAAiB,EAAG,qCACL,IAAlBA,EAEF,MADA9G,QAAQC,KAAK,uGAAwGzC,KAAMA,KAAK+C,IAC1H,IAAIyF,MAAM,iDAIlB,GAAI/D,EAAa,CAEf,IAAIL,EAAcU,EAAGN,YACrB,IAAK,MAAM1D,KAAQ2D,EACjBzE,KAAKuJ,aAAazI,EAAMsD,GACxBA,IAEEU,EAAG6D,6BAEqB,QAAzBG,EAAK7E,EAAKqB,iBAA8B,IAAPwD,IAAsB7E,EAAKqB,UAAY,WAE7E,CAMA,GAAI+D,GAAgBA,EAAavF,OAAS,EAAG,CAC3C,IAAK,MAAMhD,KAAQuI,GACjB,IAAAzF,GAAU9C,EAAKV,QAAS,MACxB,IAAAwD,GAAU9C,EAAKV,QAAS,MACxB,IAAAwD,GAAU9C,EAAKV,QAAS,KAG1B,IAAK,MAAMU,KAAQuI,EACjBrJ,KAAKwJ,YAAY1I,EAErB,CACF,CACAZ,iBAAiB6H,EAAcC,EAAalD,GAG1C,MAAMb,EAAOa,EAAGb,KACVwF,EAAmBxF,EAAKyF,kBAAqBC,GAAS3J,KAAK4J,MAAQD,OAAO/I,EAC1EqC,GAAO,OAAWjD,MAClBmG,EAAa4B,EAAa3H,QAC1ByJ,EAAY7B,GAAeA,EAAY5H,QACvC0J,EAAgBpD,OAAOC,OAAOD,OAAOC,OAAO,CAAE1D,OAAM8G,WAAY/J,KAAK+G,cAAcgB,GAAeiC,OAAQhK,KAAK+C,GAAI0G,mBAAkBzH,SAAUhC,KAAKgC,UAAY,EAAAkB,EAAA,WAAkB,YAAY,GAAOiD,aACzM0D,aAAa5F,GAAO,CAAE2C,iBAAkB3C,EAAK2C,kBAAoB5G,KAAKuF,WAAa,EAAArC,EAAA,IAAW,mBAC1F,aAAE2E,SAAuB,IAAAoC,GAAWH,GAC1C,OAAO9J,KAAKkK,iBAAiBrC,EAAcE,EAAcC,EAAa/D,EACxE,CACAiG,iBAAiBrC,EAAcE,EAAcC,EAAa/D,GAKxD,MAAMkG,EAAatC,EAAeE,EAAeC,EAIjD,OAHImC,GACFnK,KAAKoK,qBAAqBD,GAErB,CACLtC,eACAC,oBAAoB,EACpBC,eACAC,cACA1C,UAAWrB,EAAKqB,UAEpB,CASAiE,aAAazI,EAAMgG,GACjB,MAAM/E,EAAQ/B,KAAK+B,MACbsI,EAAgBtI,EAAMmF,QAAQpG,GAChCuJ,GAAiB,IACnB,OAAOvJ,EAAKH,MAAQX,KAAM,+BAE1B+B,EAAMuI,OAAOD,EAAe,GAE5BtI,EAAMuI,OAAOxD,EAAO,EAAGhG,MAGvB,QAAQA,EAAKH,IAAK,eAGlBG,EAAKH,IAAMX,KACX+B,EAAMuI,OAAOxD,EAAO,EAAGhG,GAE3B,CAMAmE,WAAWnE,IACT,OA9uBwB,IA8uBjBA,EAAKb,OA7uBa,IA6uBoBa,EAAKb,MAAgC,4CAClF,MAAM8B,EAAQ/B,KAAK+B,MACb+E,EAAQ/E,EAAMmF,QAAQpG,IAC5B,OAAOgG,GAAS,EAAG,kCACfA,GAAS,GACX/E,EAAMuI,OAAOxD,EAAO,EAExB,CACA0C,YAAY1I,GACVA,EAAKP,WACLP,KAAKiF,WAAWnE,EAClB,CAQAsJ,qBAAqBD,GAInB,GAAInK,KAAK8B,UACP,OAEF,MAAMC,EAAQ/B,KAAK+B,MACbwI,EAAkBxI,EAAMmF,QAAQiD,GACtC,IAAK,IAAIf,EAAIrH,EAAM+B,OAAS,EAAGsF,GAAK,EAAGA,IAAK,CAC1C,MAAMtI,EAAOiB,EAAMqH,GASbhJ,EAAUU,EAAKV,QACjBA,IACEgJ,EAAImB,IAGN,IAAA3G,GAAUxD,EAAS,KACnBJ,KAAKwJ,YAAY1I,IAEVsI,EAAImB,IAGX,IAAAvJ,GAAcZ,GAAS,GAG7B,CACF,CACAiD,WACE,QAAUrD,KAAKoC,eACZpC,KAAK6B,iBACqB,IAA3B7B,KAAK0B,WAAWoC,QAChB9D,KAAK2B,kBACL3B,KAAK+G,eACT,CACAxD,UACEvD,KAAK0E,IAAI,CAAEY,UAAW,OAAQoE,mBAAmB,GACnD,CACAlG,OAAOgH,GACDxK,KAAK4J,OACP5J,KAAK4J,MAAMa,aAAaD,EAE5B,CACA/G,MAAMiH,EAAgBF,EAAWG,GAC/B,GAAI3K,KAAK4J,MAAO,CACd5J,KAAK2B,kBAAmB,EACxB3B,KAAK4J,MAAMgB,UAAS,KAClB5K,KAAK2B,kBAAmB,CAAI,GAC3B,CAAEkJ,iBAAiB,IAEtB,IAAIC,EAAeJ,GAAkB,KAAQ,KASxCA,EAKHI,IAAgB,IAAAC,GAAwB,CAAC,EAAG,GAAI,CAAC,IAAM,KAAO,CAAC,EAAG,GAAI,CAAC,EAAG,GAAIP,GAAW,IAJzFxK,KAAK4J,MAAMoB,OAAO,kCAClBF,IAAgB,IAAAC,GAAwB,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,IAAM,KAAO,CAAC,EAAG,GAAIP,GAAW,IAK3FxK,KAAK4J,MAAMqB,YAAYP,EAAiB,EAAI,EAAGI,EAAcH,EAC/D,CACF,CACAO,SACE,OAAO,IAAAC,GAAE,OAAQ,KACnB,CACIpI,SAAO,OAAO/C,IAAM,CACboL,sBAAa,MAAO,CAC7B,aAAgB,CAAC,uBACjB,KAAQ,CAAC,eACR,CACQC,mBAAU,MAnxBR,4GAmxBuB,GACnC,CAAC,EAAG,UAAW,CACd,SAAY,CAAC,IACb,aAAgB,CAAC,KAAM,iBACvB,SAAY,CAAC,GACb,UAAa,CAAC,IACd,WAAc,CAAC,IACf,KAAQ,CAAC,GACT,KAAQ,CAAC,IACT,OAAU,CAAC,IACX,YAAe,CAAC,IAChB,IAAO,CAAC,IACR,MAAS,CAAC,IACV,UAAa,CAAC,IACd,YAAe,CAAC,IAChB,QAAW,CAAC,IACZ,SAAY,CAAC,IACb,WAAc,CAAC,IACf,WAAc,CAAC,IACf,UAAa,CAAC,IACd,WAAc,CAAC,IACf,UAAa,CAAC,IACd,YAAe,CAAC,OAgBpB,MACMC,EAfN,WACE,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,WACTC,SAAQ3E,IAAa,GACzB,YADiCA,EAE/B0E,eAAeE,IAAI5E,IACtB0E,eAAeG,OAAO7E,EAAS1F,EAGrC,GACF,+HC13BA,MAEMwK,GAA6B,QAAmB,cAAc,KAClE9L,cACEuB,QACApB,KAAKqB,iBACLrB,KAAKsB,iBACLtB,KAAKuB,gBAAiB,QAAYvB,KAAM,iBAAkB,GAC1DA,KAAKwB,kBAAmB,QAAYxB,KAAM,mBAAoB,GAC9DA,KAAKyB,iBAAkB,QAAYzB,KAAM,kBAAmB,GAC5DA,KAAK4L,8BAA+B,EAIpC5L,KAAKiD,MAAO,OAAWjD,MAIvBA,KAAKgC,UAAW,CAClB,CACA6J,sBACM7L,KAAKkC,SACPlC,KAAKkC,QAAQC,YAA6BvB,IAAtBZ,KAAK8L,aAE7B,CACA5L,0BACE,MAAMqD,EAAU,KACdvD,KAAK4L,8BAA+B,EAChC5L,KAAK8L,cACP9L,KAAK8L,aAAavI,SACpB,EAEFvD,KAAKkC,eAAiB,iCAA2BkB,uBAAuBpD,KAAK+C,IAAI,KAAO/C,KAAK4L,gCAAkC5L,KAAK8L,cAAgB9L,KAAK8L,aAAazI,aAAY,IAAME,MAAYwI,IAAW,IAAI5E,EAAI,OAA2B,QAAnBA,EAAKnH,KAAK2J,WAAwB,IAAPxC,OAAgB,EAASA,EAAGsD,aAAasB,EAAK,IAAK,CAACrB,EAAgBqB,EAAMpB,KAClU,GAAI3K,KAAK2J,IAAK,CACZ3J,KAAK2J,IAAIiB,UAAS,KAChB5K,KAAK4L,8BAA+B,EAChC5L,KAAK8L,cACP9L,KAAK8L,aAAarI,MAAMiH,EAC1B,GACC,CAAEG,iBAAiB,IAEtB,IAAIC,EAAeJ,GAAkB,KAAQ,KASxCA,EAKHI,IAAgB,IAAAC,GAAwB,CAAC,EAAG,GAAI,CAAC,IAAM,KAAO,CAAC,EAAG,GAAI,CAAC,EAAG,GAAIgB,GAAM,IAJpF/L,KAAK2J,IAAIqB,OAAO,kCAChBF,IAAgB,IAAAC,GAAwB,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,IAAM,KAAO,CAAC,EAAG,GAAIgB,GAAM,IAKtF/L,KAAK2J,IAAIsB,YAAYP,EAAiB,EAAI,EAAGI,EAAcH,EAC7D,MAEE3K,KAAK4L,8BAA+B,CACtC,IAEF5L,KAAK6L,qBACP,CACAjJ,oBACE5C,KAAKuB,eAAe4B,MACtB,CACAQ,uBACM3D,KAAKkC,UACPlC,KAAKkC,QAAQ2B,UACb7D,KAAKkC,aAAUtB,EAEnB,CAEAV,aAAaiG,EAAY0D,EAAW5F,GAClC,MAAM+H,QAAehM,KAAKiM,OAC1B,IAAIrG,GAAU,EACd,IACEA,QAAgB5F,KAAK6I,WAAW1C,EAAY0D,EAAW5F,EACzD,CACA,MAAOiI,GACL1J,QAAQ2J,MAAMD,EAChB,CAEA,OADAF,IACOpG,CACT,CAEA1F,iBAAiBa,EAAIhB,EAAQuF,EAAWC,GAMtC,MAAO,CACLK,cANoB5F,KAAK0C,QAAQ3B,EAAIhB,EAAQ,CAC7CqM,SAAwB,SAAd9G,EAAuB,OAAI1E,EACrC0E,UAAyB,SAAdA,EAAuB,OAAS,UAC3CsB,iBAAkBrB,IAIlBnF,QAASJ,KAAKqM,SAElB,CAEAnM,mBACE,MAAMsF,EAASxF,KAAKqM,SACpB,OAAO7G,EACH,CACAzE,GAAIyE,EAAOqB,QACXzG,QAASoF,EACTzF,OAAQC,KAAKsM,mBAEb1L,CACN,CACAV,cAAcJ,EAAWC,EAAQkE,GAC/B,GAAIjE,KAAKuM,kBAAoBzM,IAAa,IAAAkB,GAAsBjB,EAAQC,KAAKsM,cAC3E,OAAO,EAGT,MAAMzC,EAAY7J,KAAKqM,SACjBlG,QAAmB,IAAA9F,GAAgBL,KAAKM,SAAUN,KAAK+C,GAAIjD,EAAW,CAAC,WAAY,sBAAuBC,GAOhH,OANAC,KAAKuM,gBAAkBzM,EACvBE,KAAKqM,SAAWlG,EAChBnG,KAAKsM,aAAevM,QAEdC,KAAKwM,OAAOrG,EAAY0D,EAAW5F,SACnC,IAAAwI,GAAgBzM,KAAKM,SAAUuJ,IAC9B,CACT,CACA3J,iBAAiBiG,EAAY0D,EAAW5F,EAAO,CAAC,GAC9C,GAAI4F,IAAc1D,EAChB,OAAO,EAGTnG,KAAKwB,iBAAiB2B,OACtB,MAAM,GAAEJ,EAAE,KAAEE,GAASjD,KACfgC,EAAWhC,KAAKgC,UAAY,EAAAkB,EAAA,WAAkB,YAAY,GAC1D0D,EAAmB3C,EAAK2C,kBAAoB5G,KAAKuF,WAAa,EAAArC,EAAA,IAAW,gBAoC/E,aAnCM,IAAA+G,GAAWvD,OAAOC,OAAOD,OAAOC,OAAO,CAAE1D,OAC7CjB,WACAmE,aACA0D,YAAWG,OAAQjH,EAAI0G,iBAAkBxF,EAAKyF,kBACzCC,SAQW/I,IAAR+I,GAAsB3J,KAAK4L,6BAiB7B5L,KAAK2J,IAAMA,GAhBX3J,KAAK4L,8BAA+B,EACpCjC,EAAIiB,UAAS,KACX5K,KAAK4L,8BAA+B,EAChC5L,KAAK8L,cACP9L,KAAK8L,aAAarI,OAAM,EAC1B,GACC,CAAEoH,iBAAiB,IAOtBlB,EAAIsB,YAAY,EAAG,EAAG,GAIxB,OAEArK,GAAaqD,GAAO,CAAE2C,sBAE5B5G,KAAKyB,gBAAgB0B,QACd,CACT,CACAjD,aACE,MAAMmG,EAAIrG,KAAK0M,YACf,IAAI/G,EAKJ,OAJA3F,KAAK0M,YAAc,IAAIhH,SAASI,GAAOH,EAAUG,SACvClF,IAANyF,SACIA,EAEDV,CACT,CACAuF,SACE,OAAO,IAAAC,GAAE,OAAQ,KACnB,CACIpI,SAAO,OAAO/C,IAAM,CACboL,sBAAa,MAAO,CAC7B,aAAgB,CAAC,uBAChB,CACQC,mBAAU,MA3LA,4GA2LuB,GAC3C,CAAC,EAAG,oBAAqB,CACxB,KAAQ,CAAC,MACT,SAAY,CAAC,IACb,SAAY,CAAC,GACb,UAAa,CAAC,IACd,aAAgB,CAAC,IACjB,OAAU,CAAC,IACX,WAAc,CAAC,IACf,WAAc,CAAC,OAgBnB,MACMC,EAfN,WACE,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,qBACTC,SAAQ3E,IAAa,GACzB,sBADiCA,EAE/B0E,eAAeE,IAAI5E,IACtB0E,eAAeG,OAAO7E,EAAS8E,EAGrC,GACF,yGCpNA,MAIMgB,GAAuB,QAAmB,cAAc,KAC5D9M,cACEuB,QACApB,KAAKqB,iBACLrB,KAAKsB,iBACLtB,KAAK4M,kBAAmB,QAAY5M,KAAM,mBAAoB,GAC9DA,KAAK6M,aAAe,KACpB7M,KAAK8M,iBAAkB,EAMvB9M,KAAK+M,aAAc,CACrB,CACAC,0BAC2BpM,IAArBZ,KAAKiN,aACPjN,KAAK4M,iBAAiBzJ,KAAK,CACzB+J,IAAKlN,KAAKiN,aAGhB,CACArK,oBACE5C,KAAKgN,oBACP,CACAtJ,oBACE1D,KAAK6M,cAAe,IAAA3J,IAA0BiK,IAC5CnN,KAAK8M,gBAAkBK,CAAY,GAEvC,CACAxJ,uBACM3D,KAAK6M,cACP7M,KAAK6M,aAAahJ,SAEtB,CACAqH,SACE,MAAM,MAAEkC,EAAK,YAAEL,EAAW,gBAAED,GAAoB9M,KAC1CiD,GAAO,OAAWjD,MAClBqN,EAAaP,GAAoD,QAAjC9M,KAAK+C,GAAGuK,aAAa,QAC3D,OAAQ,IAAAnC,GAAE,KAAM,CAAEoC,KAAM,UAAW,cAAeF,EAAa,OAAS,KAAMG,OAAO,IAAAtK,GAAmBkK,EAAO,CAC3G,CAACnK,IAAO,EACR,sBAAuB8J,EACvB,iBAAkBM,MACd,IAAAlC,GAAE,OAAQ,MACpB,CACIpI,SAAO,OAAO/C,IAAM,CACboL,sBAAa,MAAO,CAC7B,YAAe,CAAC,sBACf,CACQC,mBAAU,MAAO,CAC1BoC,IAtDiB,ujFAuDjBC,GArDgB,2kEAsDf,GACF,CAAC,GAAI,cAAe,CACnB,MAAS,CAAC,KACV,YAAe,CAAC,EAAG,gBACnB,YAAe,CAAC,GAChB,gBAAmB,CAAC,OAgBxB,MACMpC,EAfN,WACE,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,eACTC,SAAQ3E,IAAa,GACzB,gBADiCA,EAE/B0E,eAAeE,IAAI5E,IACtB0E,eAAeG,OAAO7E,EAAS8F,EAGrC,GACF,wGC3EA,MAIMgB,GAA0B,QAAmB,cAAc,KAC/D9N,cACEuB,QACApB,KAAKqB,iBACLrB,KAAKsB,iBACLtB,KAAK4N,mBAAoB,QAAY5N,KAAM,oBAAqB,GAChEA,KAAK6N,oBAAsB,CAAC,EAI5B7N,KAAK8N,UAAW,EAIhB9N,KAAK+N,UAAW,EAChB/N,KAAKgO,QAAWC,IACC,UAAXA,EAAGC,KAA8B,MAAXD,EAAGC,KAC3BlO,KAAKmO,UAAUF,EACjB,EAEFjO,KAAKoO,QAAWH,IACdjO,KAAKmO,UAAUF,EAAG,CAEtB,CACAI,gBAAgBJ,GACd,MAAMK,EAAiBL,EAAGM,OACpBC,EAASxO,KAAK+C,GAAGtC,eACnBwN,EAAGQ,eAAeC,SAASF,KAAYF,aAAuD,EAASA,EAAeK,SAAS3O,KAAK+C,QACtI/C,KAAK+N,SAAW/N,KAAKkN,MAAQe,EAAGW,OAAO1B,IAE3C,CACAtK,oBACE5C,KAAK6N,oBAAsBnH,OAAOC,OAAO,CAAC,GAAG,OAAkB3G,KAAK+C,GAAI,CAAC,qBACrDnC,IAAhBZ,KAAK6O,SACP7O,KAAK6O,OAAS,EAAA3L,EAAA,IAAW,kBAAmB,YAEhD,CACAiL,UAAUF,QACSrN,IAAbZ,KAAKkN,MACFlN,KAAK8N,UACR9N,KAAK4N,kBAAkBzK,KAAK,CAC1B+J,IAAKlN,KAAKkN,IACV4B,KAAM9O,KAAK8O,KACXf,SAAU/N,KAAK+N,WAGnBE,EAAGc,iBAEP,CACIC,eACF,QAAShP,KAAK+C,GAAGD,cAAc,YACjC,CACImM,cACF,QAASjP,KAAK+C,GAAGD,cAAc,WACjC,CACAoI,SACE,MAAM,SAAE4C,EAAQ,QAAEmB,EAAO,SAAED,EAAQ,KAAEF,EAAI,IAAEI,EAAG,OAAEX,EAAM,OAAEM,EAAM,SAAEd,EAAQ,IAAEb,EAAG,oBAAEW,GAAwB7N,KACjGiD,GAAO,OAAWjD,MAClBmP,EAAQ,CACZC,SAAUpP,KAAKoP,SACfN,OACAI,MACAX,UAEF,OAAQ,IAAApD,GAAE,KAAM,CAAEiD,QAASpO,KAAKoO,QAASiB,QAASrP,KAAKgO,QAASjN,QAAYH,IAARsM,EAAoB,cAAcA,IAAQ,KAAMM,MAAO,CACvH,CAACvK,IAAO,EACR,eAAgB8K,EAChB,eAAgBD,EAChB,gBAAiBkB,EACjB,eAAgBC,EAChB,qBAAsBD,IAAaC,EACnC,oBAAqBA,IAAYD,EACjC,CAAC,cAAcH,MAAW,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,KACd,IAAA1D,GAAE,IAAKzE,OAAOC,OAAO,CAAC,EAAGwI,EAAO,CAAE3B,MAAO,gBAAiB8B,KAAM,SAAU/B,KAAM,MAAO,gBAAiBQ,EAAW,OAAS,KAAM,gBAAiBD,EAAW,OAAS,KAAMyB,SAAUzB,EAAW,UAAOlN,GAAaiN,IAAsB,IAAA1C,GAAE,OAAQ,CAAEqC,MAAO,iBAAkB,IAAArC,GAAE,OAAQ,OAAiB,OAATlI,IAAiB,IAAAkI,GAAE,oBAAqB,CAAEqE,KAAM,eAC5V,CACIzM,SAAO,OAAO/C,IAAM,CACbqL,mBAAU,MAAO,CAC1BoC,IApFoB,g5LAqFpBC,GAnFmB,0hNAoFlB,GACF,CAAC,GAAI,iBAAkB,CACtB,SAAY,CAAC,GACb,SAAY,CAAC,GACb,KAAQ,CAAC,GACT,IAAO,CAAC,GACR,OAAU,CAAC,MACX,SAAY,CAAC,MACb,IAAO,CAAC,GACR,OAAU,CAAC,IACV,CAAC,CAAC,EAAG,mBAAoB,sBAoB9B,MACMpC,EApBN,WACE,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,iBAAkB,qBAC3BC,SAAQ3E,IAAa,OAAQA,GACtC,IAAK,iBACE0E,eAAeE,IAAI5E,IACtB0E,eAAeG,OAAO7E,EAAS8G,GAEjC,MACF,IAAK,oBACEpC,eAAeE,IAAI5E,KACtB,IAAA4F,KAGN,GACF,8FCnHA,MAEMgD,GAAqB,QAAmB,cAAc,KAC1D5P,cACEuB,QACApB,KAAKqB,iBACLrB,KAAKsB,gBACP,CACA4J,SACE,MAAMjI,GAAO,OAAWjD,MACxB,OAAQ,IAAAmL,GAAE,KAAM,CAAEqC,OAAO,IAAAtK,GAAmBlD,KAAKoN,MAAO,CACpD,CAACnK,IAAO,MACJ,IAAAkI,GAAE,OAAQ,MACpB,CACWE,mBAAU,MAdP,gDAcuB,GACpC,CAAC,EAAG,WAAY,CACf,MAAS,CAAC,QAgBd,MACMC,EAfN,WACE,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,YACTC,SAAQ3E,IAAa,GACzB,aADiCA,EAE/B0E,eAAeE,IAAI5E,IACtB0E,eAAeG,OAAO7E,EAAS4I,EAGrC,GACF,8FC9BA,MAIMC,GAA6B,QAAmB,cAAc,KAClE7P,cACEuB,QACApB,KAAKqB,iBACLrB,KAAKsB,iBACLtB,KAAK2P,UAAW,QAAY3P,KAAM,WAAY,EAChD,CACA4P,cACE5P,KAAK6P,WACP,CACAnM,oBACE1D,KAAK6P,WACP,CACAA,YACE,MAAMC,EAAO9P,KAAK+P,UAClB/P,KAAK2P,SAASxM,KAAK,CACjB,CAAC,SAAS2M,MAAS,GAEvB,CACAC,UACE,YAAqBnP,IAAdZ,KAAK8P,KAAqB9P,KAAK8P,KAAO,SAC/C,CACA5E,SACE,MAAMjI,GAAO,OAAWjD,MAClB8P,EAAO9P,KAAK+P,UAClB,OAAQ,IAAA5E,GAAE,KAAM,CAAEqC,OAAO,IAAAtK,GAAmBlD,KAAKoN,MAAO,CACpD,CAACnK,IAAO,EACR,CAAC,SAAS6M,MAAS,EACnB,YAA8B,QAAjBjN,SAASmN,QAClB,IAAA7E,GAAE,MAAO,CAAEqC,MAAO,kBAAmB,IAAArC,GAAE,OAAQ,OACzD,CACIpI,SAAO,OAAO/C,IAAM,CACboL,sBAAa,MAAO,CAC7B,KAAQ,CAAC,eACR,CACQC,mBAAU,MAAO,CAC1BoC,IAxCgB,k5EAyChBC,GAvCe,21BAwCd,GACF,CAAC,GAAI,YAAa,CACjB,MAAS,CAAC,KACV,KAAQ,CAAC,MAgBb,MACMpC,EAfN,WACE,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,aACTC,SAAQ3E,IAAa,GACzB,cADiCA,EAE/B0E,eAAeE,IAAI5E,IACtB0E,eAAeG,OAAO7E,EAAS6I,EAGrC,GACF","sources":["webpack:///../node_modules/@ionic/core/components/ion-nav.js","webpack:///../node_modules/@ionic/core/components/ion-router-outlet.js","webpack:///../node_modules/@ionic/core/components/ion-tab-bar.js","webpack:///../node_modules/@ionic/core/components/ion-tab-button.js","webpack:///../node_modules/@ionic/core/components/ion-text.js","webpack:///../node_modules/@ionic/core/components/ion-title.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Build } from '@stencil/core/internal/client';\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { m as assert, s as shallowEqualStringMap } from './helpers.js';\nimport { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index3.js';\nimport { a as attachComponent } from './framework-delegate.js';\n\nconst VIEW_STATE_NEW = 1;\nconst VIEW_STATE_ATTACHED = 2;\nconst VIEW_STATE_DESTROYED = 3;\n// TODO(FW-2832): types\nclass ViewController {\n constructor(component, params) {\n this.component = component;\n this.params = params;\n this.state = VIEW_STATE_NEW;\n }\n async init(container) {\n this.state = VIEW_STATE_ATTACHED;\n if (!this.element) {\n const component = this.component;\n this.element = await attachComponent(this.delegate, container, component, ['ion-page', 'ion-page-invisible'], this.params);\n }\n }\n /**\n * DOM WRITE\n */\n _destroy() {\n assert(this.state !== VIEW_STATE_DESTROYED, 'view state must be ATTACHED');\n const element = this.element;\n if (element) {\n if (this.delegate) {\n this.delegate.removeViewFromDom(element.parentElement, element);\n }\n else {\n element.remove();\n }\n }\n this.nav = undefined;\n this.state = VIEW_STATE_DESTROYED;\n }\n}\nconst matches = (view, id, params) => {\n if (!view) {\n return false;\n }\n if (view.component !== id) {\n return false;\n }\n return shallowEqualStringMap(view.params, params);\n};\nconst convertToView = (page, params) => {\n if (!page) {\n return null;\n }\n if (page instanceof ViewController) {\n return page;\n }\n return new ViewController(page, params);\n};\nconst convertToViews = (pages) => {\n return pages\n .map((page) => {\n if (page instanceof ViewController) {\n return page;\n }\n if ('component' in page) {\n return convertToView(page.component, page.componentProps === null ? undefined : page.componentProps);\n }\n return convertToView(page, undefined);\n })\n .filter((v) => v !== null);\n};\n\nconst navCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;overflow:hidden;z-index:0}\";\n\nconst Nav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.transInstr = [];\n this.animationEnabled = true;\n this.useRouter = false;\n this.isTransitioning = false;\n this.destroyed = false;\n this.views = [];\n /**\n * If `true`, the nav should animate the transition of components.\n */\n this.animated = true;\n }\n swipeGestureChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeGesture === true);\n }\n }\n rootChanged() {\n const isDev = Build.isDev;\n if (this.root !== undefined) {\n if (!this.useRouter) {\n this.setRoot(this.root, this.rootParams);\n }\n else if (isDev) {\n console.warn(' does not support a root attribute when using ion-router.');\n }\n }\n }\n componentWillLoad() {\n this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;\n if (this.swipeGesture === undefined) {\n const mode = getIonMode(this);\n this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');\n }\n this.ionNavWillLoad.emit();\n }\n async componentDidLoad() {\n this.rootChanged();\n this.gesture = (await import('./swipe-back.js')).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));\n this.swipeGestureChanged();\n }\n connectedCallback() {\n this.destroyed = false;\n }\n disconnectedCallback() {\n for (const view of this.views) {\n lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);\n view._destroy();\n }\n // Release swipe back gesture and transition.\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.transInstr.length = 0;\n this.views.length = 0;\n this.destroyed = true;\n }\n /**\n * Push a new component onto the current navigation stack. Pass any additional\n * information along as an object. This additional information is accessible\n * through NavParams.\n *\n * @param component The component to push onto the navigation stack.\n * @param componentProps Any properties of the component.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n push(component, componentProps, opts, done) {\n return this.insert(-1, component, componentProps, opts, done);\n }\n /**\n * Inserts a component into the navigation stack at the specified index.\n * This is useful to add a component at any point in the navigation stack.\n *\n * @param insertIndex The index to insert the component at in the stack.\n * @param component The component to insert into the navigation stack.\n * @param componentProps Any properties of the component.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n insert(insertIndex, component, componentProps, opts, done) {\n return this.insertPages(insertIndex, [{ component, componentProps }], opts, done);\n }\n /**\n * Inserts an array of components into the navigation stack at the specified index.\n * The last component in the array will become instantiated as a view, and animate\n * in to become the active view.\n *\n * @param insertIndex The index to insert the components at in the stack.\n * @param insertComponents The components to insert into the navigation stack.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n insertPages(insertIndex, insertComponents, opts, done) {\n return this.queueTrns({\n insertStart: insertIndex,\n insertViews: insertComponents,\n opts,\n }, done);\n }\n /**\n * Pop a component off of the navigation stack. Navigates back from the current\n * component.\n *\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n pop(opts, done) {\n return this.removeIndex(-1, 1, opts, done);\n }\n /**\n * Pop to a specific index in the navigation stack.\n *\n * @param indexOrViewCtrl The index or view controller to pop to.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n popTo(indexOrViewCtrl, opts, done) {\n const ti = {\n removeStart: -1,\n removeCount: -1,\n opts,\n };\n if (typeof indexOrViewCtrl === 'object' && indexOrViewCtrl.component) {\n ti.removeView = indexOrViewCtrl;\n ti.removeStart = 1;\n }\n else if (typeof indexOrViewCtrl === 'number') {\n ti.removeStart = indexOrViewCtrl + 1;\n }\n return this.queueTrns(ti, done);\n }\n /**\n * Navigate back to the root of the stack, no matter how far back that is.\n *\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n popToRoot(opts, done) {\n return this.removeIndex(1, -1, opts, done);\n }\n /**\n * Removes a component from the navigation stack at the specified index.\n *\n * @param startIndex The number to begin removal at.\n * @param removeCount The number of components to remove.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n removeIndex(startIndex, removeCount = 1, opts, done) {\n return this.queueTrns({\n removeStart: startIndex,\n removeCount,\n opts,\n }, done);\n }\n /**\n * Set the root for the current navigation stack to a component.\n *\n * @param component The component to set as the root of the navigation stack.\n * @param componentProps Any properties of the component.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n setRoot(component, componentProps, opts, done) {\n return this.setPages([{ component, componentProps }], opts, done);\n }\n /**\n * Set the views of the current navigation stack and navigate to the last view.\n * By default animations are disabled, but they can be enabled by passing options\n * to the navigation controller. Navigation parameters can also be passed to the\n * individual pages in the array.\n *\n * @param views The list of views to set as the navigation stack.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n setPages(views, opts, done) {\n opts !== null && opts !== void 0 ? opts : (opts = {});\n // if animation wasn't set to true then default it to NOT animate\n if (opts.animated !== true) {\n opts.animated = false;\n }\n return this.queueTrns({\n insertStart: 0,\n insertViews: views,\n removeStart: 0,\n removeCount: -1,\n opts,\n }, done);\n }\n /**\n * Called by the router to update the view.\n *\n * @param id The component tag.\n * @param params The component params.\n * @param direction A direction hint.\n * @param animation an AnimationBuilder.\n *\n * @return the status.\n * @internal\n */\n setRouteId(id, params, direction, animation) {\n const active = this.getActiveSync();\n if (matches(active, id, params)) {\n return Promise.resolve({\n changed: false,\n element: active.element,\n });\n }\n let resolve;\n const promise = new Promise((r) => (resolve = r));\n let finish;\n const commonOpts = {\n updateURL: false,\n viewIsReady: (enteringEl) => {\n let mark;\n const p = new Promise((r) => (mark = r));\n resolve({\n changed: true,\n element: enteringEl,\n markVisible: async () => {\n mark();\n await finish;\n },\n });\n return p;\n },\n };\n if (direction === 'root') {\n finish = this.setRoot(id, params, commonOpts);\n }\n else {\n // Look for a view matching the target in the view stack.\n const viewController = this.views.find((v) => matches(v, id, params));\n if (viewController) {\n finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animationBuilder: animation }));\n }\n else if (direction === 'forward') {\n finish = this.push(id, params, Object.assign(Object.assign({}, commonOpts), { animationBuilder: animation }));\n }\n else if (direction === 'back') {\n finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animated: true, animationBuilder: animation }));\n }\n }\n return promise;\n }\n /**\n * Called by to retrieve the current component.\n *\n * @internal\n */\n async getRouteId() {\n const active = this.getActiveSync();\n if (active) {\n return {\n id: active.element.tagName,\n params: active.params,\n element: active.element,\n };\n }\n return undefined;\n }\n /**\n * Get the active view.\n */\n async getActive() {\n return this.getActiveSync();\n }\n /**\n * Get the view at the specified index.\n *\n * @param index The index of the view.\n */\n async getByIndex(index) {\n return this.views[index];\n }\n /**\n * Returns `true` if the current view can go back.\n *\n * @param view The view to check.\n */\n async canGoBack(view) {\n return this.canGoBackSync(view);\n }\n /**\n * Get the previous view.\n *\n * @param view The view to get.\n */\n async getPrevious(view) {\n return this.getPreviousSync(view);\n }\n getLength() {\n return this.views.length;\n }\n getActiveSync() {\n return this.views[this.views.length - 1];\n }\n canGoBackSync(view = this.getActiveSync()) {\n return !!(view && this.getPreviousSync(view));\n }\n getPreviousSync(view = this.getActiveSync()) {\n if (!view) {\n return undefined;\n }\n const views = this.views;\n const index = views.indexOf(view);\n return index > 0 ? views[index - 1] : undefined;\n }\n /**\n * Adds a navigation stack change to the queue and schedules it to run.\n *\n * @returns Whether the transition succeeds.\n */\n async queueTrns(ti, done) {\n var _a, _b;\n if (this.isTransitioning && ((_a = ti.opts) === null || _a === void 0 ? void 0 : _a.skipIfBusy)) {\n return false;\n }\n const promise = new Promise((resolve, reject) => {\n ti.resolve = resolve;\n ti.reject = reject;\n });\n ti.done = done;\n /**\n * If using router, check to see if navigation hooks\n * will allow us to perform this transition. This\n * is required in order for hooks to work with\n * the ion-back-button or swipe to go back.\n */\n if (ti.opts && ti.opts.updateURL !== false && this.useRouter) {\n const router = document.querySelector('ion-router');\n if (router) {\n const canTransition = await router.canTransition();\n if (canTransition === false) {\n return false;\n }\n if (typeof canTransition === 'string') {\n router.push(canTransition, ti.opts.direction || 'back');\n return false;\n }\n }\n }\n // Normalize empty\n if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.length) === 0) {\n ti.insertViews = undefined;\n }\n // Enqueue transition instruction\n this.transInstr.push(ti);\n // if there isn't a transition already happening\n // then this will kick off this transition\n this.nextTrns();\n return promise;\n }\n success(result, ti) {\n if (this.destroyed) {\n this.fireError('nav controller was destroyed', ti);\n return;\n }\n if (ti.done) {\n ti.done(result.hasCompleted, result.requiresTransition, result.enteringView, result.leavingView, result.direction);\n }\n ti.resolve(result.hasCompleted);\n if (ti.opts.updateURL !== false && this.useRouter) {\n const router = document.querySelector('ion-router');\n if (router) {\n const direction = result.direction === 'back' ? 'back' : 'forward';\n router.navChanged(direction);\n }\n }\n }\n failed(rejectReason, ti) {\n if (this.destroyed) {\n this.fireError('nav controller was destroyed', ti);\n return;\n }\n this.transInstr.length = 0;\n this.fireError(rejectReason, ti);\n }\n fireError(rejectReason, ti) {\n if (ti.done) {\n ti.done(false, false, rejectReason);\n }\n if (ti.reject && !this.destroyed) {\n ti.reject(rejectReason);\n }\n else {\n ti.resolve(false);\n }\n }\n /**\n * Consumes the next transition in the queue.\n *\n * @returns whether the transition is executed.\n */\n nextTrns() {\n // this is the framework's bread 'n butta function\n // only one transition is allowed at any given time\n if (this.isTransitioning) {\n return false;\n }\n // there is no transition happening right now, executes the next instructions.\n const ti = this.transInstr.shift();\n if (!ti) {\n return false;\n }\n this.runTransition(ti);\n return true;\n }\n /** Executes all the transition instruction from the queue. */\n async runTransition(ti) {\n try {\n // set that this nav is actively transitioning\n this.ionNavWillChange.emit();\n this.isTransitioning = true;\n this.prepareTI(ti);\n const leavingView = this.getActiveSync();\n const enteringView = this.getEnteringView(ti, leavingView);\n if (!leavingView && !enteringView) {\n throw new Error('no views in the stack to be removed');\n }\n if (enteringView && enteringView.state === VIEW_STATE_NEW) {\n await enteringView.init(this.el);\n }\n this.postViewInit(enteringView, leavingView, ti);\n // Needs transition?\n const requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) && enteringView !== leavingView;\n if (requiresTransition && ti.opts && leavingView) {\n const isBackDirection = ti.opts.direction === 'back';\n /**\n * If heading back, use the entering page's animation\n * unless otherwise specified by the developer.\n */\n if (isBackDirection) {\n ti.opts.animationBuilder = ti.opts.animationBuilder || (enteringView === null || enteringView === void 0 ? void 0 : enteringView.animationBuilder);\n }\n leavingView.animationBuilder = ti.opts.animationBuilder;\n }\n let result;\n if (requiresTransition) {\n result = await this.transition(enteringView, leavingView, ti);\n }\n else {\n // transition is not required, so we are already done!\n // they're inserting/removing the views somewhere in the middle or\n // beginning, so visually nothing needs to animate/transition\n // resolve immediately because there's no animation that's happening\n result = {\n hasCompleted: true,\n requiresTransition: false,\n };\n }\n this.success(result, ti);\n this.ionNavDidChange.emit();\n }\n catch (rejectReason) {\n this.failed(rejectReason, ti);\n }\n this.isTransitioning = false;\n this.nextTrns();\n }\n prepareTI(ti) {\n var _a, _b;\n var _c;\n const viewsLength = this.views.length;\n (_a = ti.opts) !== null && _a !== void 0 ? _a : (ti.opts = {});\n (_b = (_c = ti.opts).delegate) !== null && _b !== void 0 ? _b : (_c.delegate = this.delegate);\n if (ti.removeView !== undefined) {\n assert(ti.removeStart !== undefined, 'removeView needs removeStart');\n assert(ti.removeCount !== undefined, 'removeView needs removeCount');\n const index = this.views.indexOf(ti.removeView);\n if (index < 0) {\n throw new Error('removeView was not found');\n }\n ti.removeStart += index;\n }\n if (ti.removeStart !== undefined) {\n if (ti.removeStart < 0) {\n ti.removeStart = viewsLength - 1;\n }\n if (ti.removeCount < 0) {\n ti.removeCount = viewsLength - ti.removeStart;\n }\n ti.leavingRequiresTransition = ti.removeCount > 0 && ti.removeStart + ti.removeCount === viewsLength;\n }\n if (ti.insertViews) {\n // allow -1 to be passed in to auto push it on the end\n // and clean up the index if it's larger then the size of the stack\n if (ti.insertStart < 0 || ti.insertStart > viewsLength) {\n ti.insertStart = viewsLength;\n }\n ti.enteringRequiresTransition = ti.insertStart === viewsLength;\n }\n const insertViews = ti.insertViews;\n if (!insertViews) {\n return;\n }\n assert(insertViews.length > 0, 'length can not be zero');\n const viewControllers = convertToViews(insertViews);\n if (viewControllers.length === 0) {\n throw new Error('invalid views to insert');\n }\n // Check all the inserted view are correct\n for (const view of viewControllers) {\n view.delegate = ti.opts.delegate;\n const nav = view.nav;\n if (nav && nav !== this) {\n throw new Error('inserted view was already inserted');\n }\n if (view.state === VIEW_STATE_DESTROYED) {\n throw new Error('inserted view was already destroyed');\n }\n }\n ti.insertViews = viewControllers;\n }\n /**\n * Returns the view that will be entered considering the transition instructions.\n *\n * @param ti The instructions.\n * @param leavingView The view being left or undefined if none.\n *\n * @returns The view that will be entered, undefined if none.\n */\n getEnteringView(ti, leavingView) {\n // The last inserted view will be entered when view are inserted.\n const insertViews = ti.insertViews;\n if (insertViews !== undefined) {\n return insertViews[insertViews.length - 1];\n }\n // When views are deleted, we will enter the last view that is not removed and not the view being left.\n const removeStart = ti.removeStart;\n if (removeStart !== undefined) {\n const views = this.views;\n const removeEnd = removeStart + ti.removeCount;\n for (let i = views.length - 1; i >= 0; i--) {\n const view = views[i];\n if ((i < removeStart || i >= removeEnd) && view !== leavingView) {\n return view;\n }\n }\n }\n return undefined;\n }\n /**\n * Adds and Removes the views from the navigation stack.\n *\n * @param enteringView The view being entered.\n * @param leavingView The view being left.\n * @param ti The instructions.\n */\n postViewInit(enteringView, leavingView, ti) {\n var _a, _b, _c;\n assert(leavingView || enteringView, 'Both leavingView and enteringView are null');\n assert(ti.resolve, 'resolve must be valid');\n assert(ti.reject, 'reject must be valid');\n // Compute the views to remove.\n const opts = ti.opts;\n const { insertViews, removeStart, removeCount } = ti;\n /** Records the view to destroy */\n let destroyQueue;\n // there are views to remove\n if (removeStart !== undefined && removeCount !== undefined) {\n assert(removeStart >= 0, 'removeStart can not be negative');\n assert(removeCount >= 0, 'removeCount can not be negative');\n destroyQueue = [];\n for (let i = removeStart; i < removeStart + removeCount; i++) {\n const view = this.views[i];\n if (view !== undefined && view !== enteringView && view !== leavingView) {\n destroyQueue.push(view);\n }\n }\n // default the direction to \"back\"\n (_a = opts.direction) !== null && _a !== void 0 ? _a : (opts.direction = 'back');\n }\n const finalNumViews = this.views.length + ((_b = insertViews === null || insertViews === void 0 ? void 0 : insertViews.length) !== null && _b !== void 0 ? _b : 0) - (removeCount !== null && removeCount !== void 0 ? removeCount : 0);\n assert(finalNumViews >= 0, 'final balance can not be negative');\n if (finalNumViews === 0) {\n console.warn(`You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.`, this, this.el);\n throw new Error('navigation stack needs at least one root page');\n }\n // At this point the transition can not be rejected, any throw should be an error\n // Insert the new views in the stack.\n if (insertViews) {\n // add the views to the\n let insertIndex = ti.insertStart;\n for (const view of insertViews) {\n this.insertViewAt(view, insertIndex);\n insertIndex++;\n }\n if (ti.enteringRequiresTransition) {\n // default to forward if not already set\n (_c = opts.direction) !== null && _c !== void 0 ? _c : (opts.direction = 'forward');\n }\n }\n // if the views to be removed are in the beginning or middle\n // and there is not a view that needs to visually transition out\n // then just destroy them and don't transition anything\n // batch all of lifecycles together\n // let's make sure, callbacks are zoned\n if (destroyQueue && destroyQueue.length > 0) {\n for (const view of destroyQueue) {\n lifecycle(view.element, LIFECYCLE_WILL_LEAVE);\n lifecycle(view.element, LIFECYCLE_DID_LEAVE);\n lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);\n }\n // once all lifecycle events has been delivered, we can safely detroy the views\n for (const view of destroyQueue) {\n this.destroyView(view);\n }\n }\n }\n async transition(enteringView, leavingView, ti) {\n // we should animate (duration > 0) if the pushed page is not the first one (startup)\n // or if it is a portal (modal, actionsheet, etc.)\n const opts = ti.opts;\n const progressCallback = opts.progressAnimation ? (ani) => (this.sbAni = ani) : undefined;\n const mode = getIonMode(this);\n const enteringEl = enteringView.element;\n const leavingEl = leavingView && leavingView.element;\n const animationOpts = Object.assign(Object.assign({ mode, showGoBack: this.canGoBackSync(enteringView), baseEl: this.el, progressCallback, animated: this.animated && config.getBoolean('animated', true), enteringEl,\n leavingEl }, opts), { animationBuilder: opts.animationBuilder || this.animation || config.get('navAnimation') });\n const { hasCompleted } = await transition(animationOpts);\n return this.transitionFinish(hasCompleted, enteringView, leavingView, opts);\n }\n transitionFinish(hasCompleted, enteringView, leavingView, opts) {\n /**\n * If the transition did not complete, the leavingView will still be the active\n * view on the stack. Otherwise unmount all the views after the enteringView.\n */\n const activeView = hasCompleted ? enteringView : leavingView;\n if (activeView) {\n this.unmountInactiveViews(activeView);\n }\n return {\n hasCompleted,\n requiresTransition: true,\n enteringView,\n leavingView,\n direction: opts.direction,\n };\n }\n /**\n * Inserts a view at the specified index.\n *\n * When the view already is in the stack it will be moved to the new position.\n *\n * @param view The view to insert.\n * @param index The index where to insert the view.\n */\n insertViewAt(view, index) {\n const views = this.views;\n const existingIndex = views.indexOf(view);\n if (existingIndex > -1) {\n assert(view.nav === this, 'view is not part of the nav');\n // The view already in the stack, removes it.\n views.splice(existingIndex, 1);\n // and add it back at the requested index.\n views.splice(index, 0, view);\n }\n else {\n assert(!view.nav, 'nav is used');\n // this is a new view to add to the stack\n // create the new entering view\n view.nav = this;\n views.splice(index, 0, view);\n }\n }\n /**\n * Removes a view from the stack.\n *\n * @param view The view to remove.\n */\n removeView(view) {\n assert(view.state === VIEW_STATE_ATTACHED || view.state === VIEW_STATE_DESTROYED, 'view state should be loaded or destroyed');\n const views = this.views;\n const index = views.indexOf(view);\n assert(index > -1, 'view must be part of the stack');\n if (index >= 0) {\n views.splice(index, 1);\n }\n }\n destroyView(view) {\n view._destroy();\n this.removeView(view);\n }\n /**\n * Unmounts all inactive views after the specified active view.\n *\n * DOM WRITE\n *\n * @param activeView The view that is actively visible in the stack. Used to calculate which views to unmount.\n */\n unmountInactiveViews(activeView) {\n // ok, cleanup time!! Destroy all of the views that are\n // INACTIVE and come after the active view\n // only do this if the views exist, though\n if (this.destroyed) {\n return;\n }\n const views = this.views;\n const activeViewIndex = views.indexOf(activeView);\n for (let i = views.length - 1; i >= 0; i--) {\n const view = views[i];\n /**\n * When inserting multiple views via insertPages\n * the last page will be transitioned to, but the\n * others will not be. As a result, a DOM element\n * will only be created for the last page inserted.\n * As a result, it is possible to have views in the\n * stack that do not have `view.element` yet.\n */\n const element = view.element;\n if (element) {\n if (i > activeViewIndex) {\n // this view comes after the active view\n // let's unload it\n lifecycle(element, LIFECYCLE_WILL_UNLOAD);\n this.destroyView(view);\n }\n else if (i < activeViewIndex) {\n // this view comes before the active view\n // and it is not a portal then ensure it is hidden\n setPageHidden(element, true);\n }\n }\n }\n }\n canStart() {\n return (!!this.swipeGesture &&\n !this.isTransitioning &&\n this.transInstr.length === 0 &&\n this.animationEnabled &&\n this.canGoBackSync());\n }\n onStart() {\n this.pop({ direction: 'back', progressAnimation: true });\n }\n onMove(stepValue) {\n if (this.sbAni) {\n this.sbAni.progressStep(stepValue);\n }\n }\n onEnd(shouldComplete, stepValue, dur) {\n if (this.sbAni) {\n this.animationEnabled = false;\n this.sbAni.onFinish(() => {\n this.animationEnabled = true;\n }, { oneTimeCallback: true });\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n this.sbAni.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], stepValue)[0];\n }\n else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], stepValue)[0];\n }\n this.sbAni.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n }\n }\n render() {\n return h(\"slot\", null);\n }\n get el() { return this; }\n static get watchers() { return {\n \"swipeGesture\": [\"swipeGestureChanged\"],\n \"root\": [\"rootChanged\"]\n }; }\n static get style() { return navCss; }\n}, [1, \"ion-nav\", {\n \"delegate\": [16],\n \"swipeGesture\": [1028, \"swipe-gesture\"],\n \"animated\": [4],\n \"animation\": [16],\n \"rootParams\": [16],\n \"root\": [1],\n \"push\": [64],\n \"insert\": [64],\n \"insertPages\": [64],\n \"pop\": [64],\n \"popTo\": [64],\n \"popToRoot\": [64],\n \"removeIndex\": [64],\n \"setRoot\": [64],\n \"setPages\": [64],\n \"setRouteId\": [64],\n \"getRouteId\": [64],\n \"getActive\": [64],\n \"getByIndex\": [64],\n \"canGoBack\": [64],\n \"getPrevious\": [64]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-nav\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-nav\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Nav);\n }\n break;\n } });\n}\n\nconst IonNav = Nav;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonNav, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { a as attachComponent, d as detachComponent } from './framework-delegate.js';\nimport { s as shallowEqualStringMap } from './helpers.js';\nimport { t as transition } from './index3.js';\n\nconst routeOutletCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;overflow:hidden;z-index:0}\";\n\nconst RouterOutlet = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.gestureOrAnimationInProgress = false;\n /**\n * The mode determines which platform styles to use.\n */\n this.mode = getIonMode(this);\n /**\n * If `true`, the router-outlet should animate the transition of components.\n */\n this.animated = true;\n }\n swipeHandlerChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeHandler !== undefined);\n }\n }\n async connectedCallback() {\n const onStart = () => {\n this.gestureOrAnimationInProgress = true;\n if (this.swipeHandler) {\n this.swipeHandler.onStart();\n }\n };\n this.gesture = (await import('./swipe-back.js')).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {\n if (this.ani) {\n this.ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n if (this.swipeHandler) {\n this.swipeHandler.onEnd(shouldComplete);\n }\n }, { oneTimeCallback: true });\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n this.ani.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], step)[0];\n }\n else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], step)[0];\n }\n this.ani.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n }\n else {\n this.gestureOrAnimationInProgress = false;\n }\n });\n this.swipeHandlerChanged();\n }\n componentWillLoad() {\n this.ionNavWillLoad.emit();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /** @internal */\n async commit(enteringEl, leavingEl, opts) {\n const unlock = await this.lock();\n let changed = false;\n try {\n changed = await this.transition(enteringEl, leavingEl, opts);\n }\n catch (e) {\n console.error(e);\n }\n unlock();\n return changed;\n }\n /** @internal */\n async setRouteId(id, params, direction, animation) {\n const changed = await this.setRoot(id, params, {\n duration: direction === 'root' ? 0 : undefined,\n direction: direction === 'back' ? 'back' : 'forward',\n animationBuilder: animation,\n });\n return {\n changed,\n element: this.activeEl,\n };\n }\n /** @internal */\n async getRouteId() {\n const active = this.activeEl;\n return active\n ? {\n id: active.tagName,\n element: active,\n params: this.activeParams,\n }\n : undefined;\n }\n async setRoot(component, params, opts) {\n if (this.activeComponent === component && shallowEqualStringMap(params, this.activeParams)) {\n return false;\n }\n // attach entering view to DOM\n const leavingEl = this.activeEl;\n const enteringEl = await attachComponent(this.delegate, this.el, component, ['ion-page', 'ion-page-invisible'], params);\n this.activeComponent = component;\n this.activeEl = enteringEl;\n this.activeParams = params;\n // commit animation\n await this.commit(enteringEl, leavingEl, opts);\n await detachComponent(this.delegate, leavingEl);\n return true;\n }\n async transition(enteringEl, leavingEl, opts = {}) {\n if (leavingEl === enteringEl) {\n return false;\n }\n // emit nav will change event\n this.ionNavWillChange.emit();\n const { el, mode } = this;\n const animated = this.animated && config.getBoolean('animated', true);\n const animationBuilder = opts.animationBuilder || this.animation || config.get('navAnimation');\n await transition(Object.assign(Object.assign({ mode,\n animated,\n enteringEl,\n leavingEl, baseEl: el, progressCallback: opts.progressAnimation\n ? (ani) => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !this.gestureOrAnimationInProgress) {\n this.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n if (this.swipeHandler) {\n this.swipeHandler.onEnd(false);\n }\n }, { oneTimeCallback: true });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n }\n else {\n this.ani = ani;\n }\n }\n : undefined }, opts), { animationBuilder }));\n // emit nav changed event\n this.ionNavDidChange.emit();\n return true;\n }\n async lock() {\n const p = this.waitPromise;\n let resolve;\n this.waitPromise = new Promise((r) => (resolve = r));\n if (p !== undefined) {\n await p;\n }\n return resolve;\n }\n render() {\n return h(\"slot\", null);\n }\n get el() { return this; }\n static get watchers() { return {\n \"swipeHandler\": [\"swipeHandlerChanged\"]\n }; }\n static get style() { return routeOutletCss; }\n}, [1, \"ion-router-outlet\", {\n \"mode\": [1025],\n \"delegate\": [16],\n \"animated\": [4],\n \"animation\": [16],\n \"swipeHandler\": [16],\n \"commit\": [64],\n \"setRouteId\": [64],\n \"getRouteId\": [64]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-router-outlet\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-router-outlet\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, RouterOutlet);\n }\n break;\n } });\n}\n\nconst IonRouterOutlet = RouterOutlet;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonRouterOutlet, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\nimport { c as createKeyboardController } from './keyboard-controller.js';\nimport { c as createColorClasses } from './theme.js';\n\nconst tabBarIosCss = \":host{padding-left:var(--ion-safe-area-left);padding-right:var(--ion-safe-area-right);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-bottom:var(--ion-safe-area-bottom, 0);border-top:var(--border);background:var(--background);color:var(--color);text-align:center;contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:10;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--ion-safe-area-left);padding-inline-start:var(--ion-safe-area-left);-webkit-padding-end:var(--ion-safe-area-right);padding-inline-end:var(--ion-safe-area-right)}}:host(.ion-color) ::slotted(ion-tab-button){--background-focused:var(--ion-color-shade);--color-selected:var(--ion-color-contrast)}:host(.ion-color) ::slotted(.tab-selected){color:var(--ion-color-contrast)}:host(.ion-color),:host(.ion-color) ::slotted(ion-tab-button){color:rgba(var(--ion-color-contrast-rgb), 0.7)}:host(.ion-color),:host(.ion-color) ::slotted(ion-tab-button){background:var(--ion-color-base)}:host(.ion-color) ::slotted(ion-tab-button.ion-focused),:host(.tab-bar-translucent) ::slotted(ion-tab-button.ion-focused){background:var(--background-focused)}:host(.tab-bar-translucent) ::slotted(ion-tab-button){background:transparent}:host([slot=top]){padding-top:var(--ion-safe-area-top, 0);padding-bottom:0;border-top:0;border-bottom:var(--border)}:host(.tab-bar-hidden){display:none !important}:host{--background:var(--ion-tab-bar-background, var(--ion-color-step-50, #f7f7f7));--background-focused:var(--ion-tab-bar-background-focused, #e0e0e0);--border:0.55px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));--color:var(--ion-tab-bar-color, var(--ion-color-step-400, #999999));--color-selected:var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));height:50px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.tab-bar-translucent){--background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(210%) blur(20px);backdrop-filter:saturate(210%) blur(20px)}:host(.ion-color.tab-bar-translucent){background:rgba(var(--ion-color-base-rgb), 0.8)}:host(.tab-bar-translucent) ::slotted(ion-tab-button.ion-focused){background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.6)}}\";\n\nconst tabBarMdCss = \":host{padding-left:var(--ion-safe-area-left);padding-right:var(--ion-safe-area-right);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-bottom:var(--ion-safe-area-bottom, 0);border-top:var(--border);background:var(--background);color:var(--color);text-align:center;contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:10;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--ion-safe-area-left);padding-inline-start:var(--ion-safe-area-left);-webkit-padding-end:var(--ion-safe-area-right);padding-inline-end:var(--ion-safe-area-right)}}:host(.ion-color) ::slotted(ion-tab-button){--background-focused:var(--ion-color-shade);--color-selected:var(--ion-color-contrast)}:host(.ion-color) ::slotted(.tab-selected){color:var(--ion-color-contrast)}:host(.ion-color),:host(.ion-color) ::slotted(ion-tab-button){color:rgba(var(--ion-color-contrast-rgb), 0.7)}:host(.ion-color),:host(.ion-color) ::slotted(ion-tab-button){background:var(--ion-color-base)}:host(.ion-color) ::slotted(ion-tab-button.ion-focused),:host(.tab-bar-translucent) ::slotted(ion-tab-button.ion-focused){background:var(--background-focused)}:host(.tab-bar-translucent) ::slotted(ion-tab-button){background:transparent}:host([slot=top]){padding-top:var(--ion-safe-area-top, 0);padding-bottom:0;border-top:0;border-bottom:var(--border)}:host(.tab-bar-hidden){display:none !important}:host{--background:var(--ion-tab-bar-background, var(--ion-background-color, #fff));--background-focused:var(--ion-tab-bar-background-focused, #e0e0e0);--border:1px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.07))));--color:var(--ion-tab-bar-color, var(--ion-color-step-600, #666666));--color-selected:var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));height:56px}\";\n\nconst TabBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionTabBarChanged = createEvent(this, \"ionTabBarChanged\", 7);\n this.keyboardCtrl = null;\n this.keyboardVisible = false;\n /**\n * If `true`, the tab bar will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n */\n this.translucent = false;\n }\n selectedTabChanged() {\n if (this.selectedTab !== undefined) {\n this.ionTabBarChanged.emit({\n tab: this.selectedTab,\n });\n }\n }\n componentWillLoad() {\n this.selectedTabChanged();\n }\n connectedCallback() {\n this.keyboardCtrl = createKeyboardController((keyboardOpen) => {\n this.keyboardVisible = keyboardOpen; // trigger re-render by updating state\n });\n }\n disconnectedCallback() {\n if (this.keyboardCtrl) {\n this.keyboardCtrl.destroy();\n }\n }\n render() {\n const { color, translucent, keyboardVisible } = this;\n const mode = getIonMode(this);\n const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';\n return (h(Host, { role: \"tablist\", \"aria-hidden\": shouldHide ? 'true' : null, class: createColorClasses(color, {\n [mode]: true,\n 'tab-bar-translucent': translucent,\n 'tab-bar-hidden': shouldHide,\n }) }, h(\"slot\", null)));\n }\n get el() { return this; }\n static get watchers() { return {\n \"selectedTab\": [\"selectedTabChanged\"]\n }; }\n static get style() { return {\n ios: tabBarIosCss,\n md: tabBarMdCss\n }; }\n}, [33, \"ion-tab-bar\", {\n \"color\": [513],\n \"selectedTab\": [1, \"selected-tab\"],\n \"translucent\": [4],\n \"keyboardVisible\": [32]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-tab-bar\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-tab-bar\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, TabBar);\n }\n break;\n } });\n}\n\nconst IonTabBar = TabBar;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonTabBar, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';\nimport { c as config, b as getIonMode } from './ionic-global.js';\nimport { d as inheritAttributes } from './helpers.js';\nimport { d as defineCustomElement$2 } from './ripple-effect.js';\n\nconst tabButtonIosCss = \":host{--ripple-color:var(--color-selected);--background-focused-opacity:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;height:100%;outline:none;background:var(--background);color:var(--color)}.button-native{border-radius:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;height:100%;border:0;outline:none;background:transparent;text-decoration:none;cursor:pointer;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-drag:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:inherit;flex-flow:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;height:100%;z-index:1}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){a:hover{color:var(--color-selected)}}:host(.tab-selected){color:var(--color-selected)}:host(.tab-hidden){display:none !important}:host(.tab-disabled){pointer-events:none;opacity:0.4}::slotted(ion-label),::slotted(ion-icon){display:block;-ms-flex-item-align:center;align-self:center;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}::slotted(ion-label){-ms-flex-order:0;order:0}::slotted(ion-icon){-ms-flex-order:-1;order:-1;height:1em}:host(.tab-has-label-only) ::slotted(ion-label){white-space:normal}::slotted(ion-badge){-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;z-index:1}:host(.tab-layout-icon-start){-ms-flex-direction:row;flex-direction:row}:host(.tab-layout-icon-end){-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.tab-layout-icon-bottom){-ms-flex-direction:column-reverse;flex-direction:column-reverse}:host(.tab-layout-icon-hide) ::slotted(ion-icon){display:none}:host(.tab-layout-label-hide) ::slotted(ion-label){display:none}ion-ripple-effect{color:var(--ripple-color)}:host{--padding-top:0;--padding-end:2px;--padding-bottom:0;--padding-start:2px;max-width:240px;font-size:10px}::slotted(ion-badge){padding-left:6px;padding-right:6px;padding-top:1px;padding-bottom:1px;left:calc(50% + 6px);top:4px;height:auto;font-size:12px;line-height:16px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-badge){padding-left:unset;padding-right:unset;-webkit-padding-start:6px;padding-inline-start:6px;-webkit-padding-end:6px;padding-inline-end:6px}}[dir=rtl] ::slotted(ion-badge),:host-context([dir=rtl]) ::slotted(ion-badge){left:unset;right:unset;right:calc(50% + 6px)}::slotted(ion-icon){margin-top:2px;margin-bottom:2px;font-size:30px}::slotted(ion-icon::before){vertical-align:top}::slotted(ion-label){margin-top:0;margin-bottom:1px;min-height:11px;font-weight:500}:host(.tab-has-label-only) ::slotted(ion-label){margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:12px;font-size:14px;line-height:1.1}:host(.tab-layout-icon-end) ::slotted(ion-label),:host(.tab-layout-icon-start) ::slotted(ion-label),:host(.tab-layout-icon-hide) ::slotted(ion-label){margin-top:2px;margin-bottom:2px;font-size:14px;line-height:1.1}:host(.tab-layout-icon-end) ::slotted(ion-icon),:host(.tab-layout-icon-start) ::slotted(ion-icon){min-width:24px;height:26px;margin-top:2px;margin-bottom:1px;font-size:24px}:host(.tab-layout-icon-bottom) ::slotted(ion-badge){left:calc(50% + 12px)}:host-context([dir=rtl]):host(.tab-layout-icon-bottom) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-bottom ::slotted(ion-badge){left:unset;right:unset;right:calc(50% + 12px)}:host(.tab-layout-icon-bottom) ::slotted(ion-icon){margin-top:0;margin-bottom:1px}:host(.tab-layout-icon-bottom) ::slotted(ion-label){margin-top:4px}:host(.tab-layout-icon-start) ::slotted(ion-badge),:host(.tab-layout-icon-end) ::slotted(ion-badge){left:calc(50% + 35px);top:10px}:host-context([dir=rtl]):host(.tab-layout-icon-start) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-start ::slotted(ion-badge),:host-context([dir=rtl]):host(.tab-layout-icon-end) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-end ::slotted(ion-badge){left:unset;right:unset;right:calc(50% + 35px)}:host(.tab-layout-icon-hide) ::slotted(ion-badge),:host(.tab-has-label-only) ::slotted(ion-badge){left:calc(50% + 30px);top:10px}:host-context([dir=rtl]):host(.tab-layout-icon-hide) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-hide ::slotted(ion-badge),:host-context([dir=rtl]):host(.tab-has-label-only) ::slotted(ion-badge),:host-context([dir=rtl]).tab-has-label-only ::slotted(ion-badge){left:unset;right:unset;right:calc(50% + 30px)}:host(.tab-layout-label-hide) ::slotted(ion-badge),:host(.tab-has-icon-only) ::slotted(ion-badge){top:10px}:host(.tab-layout-label-hide) ::slotted(ion-icon){margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}\";\n\nconst tabButtonMdCss = \":host{--ripple-color:var(--color-selected);--background-focused-opacity:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;height:100%;outline:none;background:var(--background);color:var(--color)}.button-native{border-radius:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;height:100%;border:0;outline:none;background:transparent;text-decoration:none;cursor:pointer;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-drag:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:inherit;flex-flow:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;height:100%;z-index:1}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){a:hover{color:var(--color-selected)}}:host(.tab-selected){color:var(--color-selected)}:host(.tab-hidden){display:none !important}:host(.tab-disabled){pointer-events:none;opacity:0.4}::slotted(ion-label),::slotted(ion-icon){display:block;-ms-flex-item-align:center;align-self:center;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}::slotted(ion-label){-ms-flex-order:0;order:0}::slotted(ion-icon){-ms-flex-order:-1;order:-1;height:1em}:host(.tab-has-label-only) ::slotted(ion-label){white-space:normal}::slotted(ion-badge){-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;z-index:1}:host(.tab-layout-icon-start){-ms-flex-direction:row;flex-direction:row}:host(.tab-layout-icon-end){-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.tab-layout-icon-bottom){-ms-flex-direction:column-reverse;flex-direction:column-reverse}:host(.tab-layout-icon-hide) ::slotted(ion-icon){display:none}:host(.tab-layout-label-hide) ::slotted(ion-label){display:none}ion-ripple-effect{color:var(--ripple-color)}:host{--padding-top:0;--padding-end:12px;--padding-bottom:0;--padding-start:12px;max-width:168px;font-size:12px;font-weight:normal;letter-spacing:0.03em}::slotted(ion-label){margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;text-transform:none}::slotted(ion-icon){margin-left:0;margin-right:0;margin-top:16px;margin-bottom:16px;-webkit-transform-origin:center center;transform-origin:center center;font-size:22px}[dir=rtl] ::slotted(ion-icon),:host-context([dir=rtl]) ::slotted(ion-icon){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}::slotted(ion-badge){border-radius:8px;padding-left:2px;padding-right:2px;padding-top:3px;padding-bottom:2px;left:calc(50% + 6px);top:8px;min-width:12px;font-size:8px;font-weight:normal}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-badge){padding-left:unset;padding-right:unset;-webkit-padding-start:2px;padding-inline-start:2px;-webkit-padding-end:2px;padding-inline-end:2px}}[dir=rtl] ::slotted(ion-badge),:host-context([dir=rtl]) ::slotted(ion-badge){left:unset;right:unset;right:calc(50% + 6px)}::slotted(ion-badge:empty){display:block;min-width:8px;height:8px}:host(.tab-layout-icon-top) ::slotted(ion-icon){margin-top:6px;margin-bottom:2px}:host(.tab-layout-icon-top) ::slotted(ion-label){margin-top:0;margin-bottom:6px}:host(.tab-layout-icon-bottom) ::slotted(ion-badge){left:70%;top:8px}:host-context([dir=rtl]):host(.tab-layout-icon-bottom) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-bottom ::slotted(ion-badge){left:unset;right:unset;right:70%}:host(.tab-layout-icon-bottom) ::slotted(ion-icon){margin-top:0;margin-bottom:6px}:host(.tab-layout-icon-bottom) ::slotted(ion-label){margin-top:6px;margin-bottom:0}:host(.tab-layout-icon-start) ::slotted(ion-badge),:host(.tab-layout-icon-end) ::slotted(ion-badge){left:80%;top:16px}:host-context([dir=rtl]):host(.tab-layout-icon-start) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-start ::slotted(ion-badge),:host-context([dir=rtl]):host(.tab-layout-icon-end) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-end ::slotted(ion-badge){left:unset;right:unset;right:80%}:host(.tab-layout-icon-start) ::slotted(ion-icon){margin-right:6px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.tab-layout-icon-start) ::slotted(ion-icon){margin-right:unset;-webkit-margin-end:6px;margin-inline-end:6px}}:host(.tab-layout-icon-end) ::slotted(ion-icon){margin-left:6px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.tab-layout-icon-end) ::slotted(ion-icon){margin-left:unset;-webkit-margin-start:6px;margin-inline-start:6px}}:host(.tab-layout-icon-hide) ::slotted(ion-badge),:host(.tab-has-label-only) ::slotted(ion-badge){left:70%;top:16px}:host-context([dir=rtl]):host(.tab-layout-icon-hide) ::slotted(ion-badge),:host-context([dir=rtl]).tab-layout-icon-hide ::slotted(ion-badge),:host-context([dir=rtl]):host(.tab-has-label-only) ::slotted(ion-badge),:host-context([dir=rtl]).tab-has-label-only ::slotted(ion-badge){left:unset;right:unset;right:70%}:host(.tab-layout-icon-hide) ::slotted(ion-label),:host(.tab-has-label-only) ::slotted(ion-label){margin-top:0;margin-bottom:0}:host(.tab-layout-label-hide) ::slotted(ion-badge),:host(.tab-has-icon-only) ::slotted(ion-badge){top:16px}:host(.tab-layout-label-hide) ::slotted(ion-icon),:host(.tab-has-icon-only) ::slotted(ion-icon){margin-top:0;margin-bottom:0;font-size:24px}\";\n\nconst TabButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionTabButtonClick = createEvent(this, \"ionTabButtonClick\", 7);\n this.inheritedAttributes = {};\n /**\n * If `true`, the user cannot interact with the tab button.\n */\n this.disabled = false;\n /**\n * The selected tab component\n */\n this.selected = false;\n this.onKeyUp = (ev) => {\n if (ev.key === 'Enter' || ev.key === ' ') {\n this.selectTab(ev);\n }\n };\n this.onClick = (ev) => {\n this.selectTab(ev);\n };\n }\n onTabBarChanged(ev) {\n const dispatchedFrom = ev.target;\n const parent = this.el.parentElement;\n if (ev.composedPath().includes(parent) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(this.el))) {\n this.selected = this.tab === ev.detail.tab;\n }\n }\n componentWillLoad() {\n this.inheritedAttributes = Object.assign({}, inheritAttributes(this.el, ['aria-label']));\n if (this.layout === undefined) {\n this.layout = config.get('tabButtonLayout', 'icon-top');\n }\n }\n selectTab(ev) {\n if (this.tab !== undefined) {\n if (!this.disabled) {\n this.ionTabButtonClick.emit({\n tab: this.tab,\n href: this.href,\n selected: this.selected,\n });\n }\n ev.preventDefault();\n }\n }\n get hasLabel() {\n return !!this.el.querySelector('ion-label');\n }\n get hasIcon() {\n return !!this.el.querySelector('ion-icon');\n }\n render() {\n const { disabled, hasIcon, hasLabel, href, rel, target, layout, selected, tab, inheritedAttributes } = this;\n const mode = getIonMode(this);\n const attrs = {\n download: this.download,\n href,\n rel,\n target,\n };\n return (h(Host, { onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {\n [mode]: true,\n 'tab-selected': selected,\n 'tab-disabled': disabled,\n 'tab-has-label': hasLabel,\n 'tab-has-icon': hasIcon,\n 'tab-has-label-only': hasLabel && !hasIcon,\n 'tab-has-icon-only': hasIcon && !hasLabel,\n [`tab-layout-${layout}`]: true,\n 'ion-activatable': true,\n 'ion-selectable': true,\n 'ion-focusable': true,\n } }, h(\"a\", Object.assign({}, attrs, { class: \"button-native\", part: \"native\", role: \"tab\", \"aria-selected\": selected ? 'true' : null, \"aria-disabled\": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h(\"span\", { class: \"button-inner\" }, h(\"slot\", null)), mode === 'md' && h(\"ion-ripple-effect\", { type: \"unbounded\" }))));\n }\n get el() { return this; }\n static get style() { return {\n ios: tabButtonIosCss,\n md: tabButtonMdCss\n }; }\n}, [33, \"ion-tab-button\", {\n \"disabled\": [4],\n \"download\": [1],\n \"href\": [1],\n \"rel\": [1],\n \"layout\": [1025],\n \"selected\": [1028],\n \"tab\": [1],\n \"target\": [1]\n }, [[8, \"ionTabBarChanged\", \"onTabBarChanged\"]]]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-tab-button\", \"ion-ripple-effect\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-tab-button\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, TabButton);\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n defineCustomElement$2();\n }\n break;\n } });\n}\n\nconst IonTabButton = TabButton;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonTabButton, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\nimport { c as createColorClasses } from './theme.js';\n\nconst textCss = \":host(.ion-color){color:var(--ion-color-base)}\";\n\nconst Text = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { class: createColorClasses(this.color, {\n [mode]: true,\n }) }, h(\"slot\", null)));\n }\n static get style() { return textCss; }\n}, [1, \"ion-text\", {\n \"color\": [513]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-text\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-text\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Text);\n }\n break;\n } });\n}\n\nconst IonText = Text;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonText, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\nimport { c as createColorClasses } from './theme.js';\n\nconst titleIosCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{left:0;top:0;padding-left:90px;padding-right:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:17px;font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px}}:host(.title-small){padding-left:9px;padding-right:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:13px;font-weight:normal}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.title-small){padding-left:unset;padding-right:unset;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px}}:host(.title-large){padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:0;-webkit-transform-origin:left center;transform-origin:left center;bottom:0;-ms-flex-align:end;align-items:flex-end;min-width:100%;padding-bottom:6px;font-size:34px;font-weight:700;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.title-large){padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}\";\n\nconst titleMdCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{padding-left:20px;padding-right:20px;padding-top:0;padding-bottom:0;font-size:20px;font-weight:500;letter-spacing:0.0125em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px}}:host(.title-small){width:100%;height:100%;font-size:15px;font-weight:normal}\";\n\nconst ToolbarTitle = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n }\n sizeChanged() {\n this.emitStyle();\n }\n connectedCallback() {\n this.emitStyle();\n }\n emitStyle() {\n const size = this.getSize();\n this.ionStyle.emit({\n [`title-${size}`]: true,\n });\n }\n getSize() {\n return this.size !== undefined ? this.size : 'default';\n }\n render() {\n const mode = getIonMode(this);\n const size = this.getSize();\n return (h(Host, { class: createColorClasses(this.color, {\n [mode]: true,\n [`title-${size}`]: true,\n 'title-rtl': document.dir === 'rtl',\n }) }, h(\"div\", { class: \"toolbar-title\" }, h(\"slot\", null))));\n }\n get el() { return this; }\n static get watchers() { return {\n \"size\": [\"sizeChanged\"]\n }; }\n static get style() { return {\n ios: titleIosCss,\n md: titleMdCss\n }; }\n}, [33, \"ion-title\", {\n \"color\": [513],\n \"size\": [1]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-title\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-title\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, ToolbarTitle);\n }\n break;\n } });\n}\n\nconst IonTitle = ToolbarTitle;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonTitle, defineCustomElement };\n"],"names":["ViewController","constructor","component","params","this","state","async","container","element","a","delegate","_destroy","removeViewFromDom","parentElement","remove","nav","undefined","matches","view","id","s","convertToView","page","Nav","super","__registerHost","__attachShadow","ionNavWillLoad","ionNavWillChange","ionNavDidChange","transInstr","animationEnabled","useRouter","isTransitioning","destroyed","views","animated","swipeGestureChanged","gesture","enable","swipeGesture","rootChanged","isDev","root","console","warn","setRoot","rootParams","componentWillLoad","document","querySelector","el","closest","mode","c","emit","createSwipeBackGesture","canStart","bind","onStart","onMove","onEnd","connectedCallback","disconnectedCallback","l","destroy","length","push","componentProps","opts","done","insert","insertIndex","insertPages","insertComponents","queueTrns","insertStart","insertViews","pop","removeIndex","popTo","indexOrViewCtrl","ti","removeStart","removeCount","removeView","popToRoot","startIndex","setPages","setRouteId","direction","animation","active","getActiveSync","Promise","resolve","changed","promise","r","finish","commonOpts","updateURL","viewIsReady","enteringEl","mark","p","markVisible","viewController","find","v","Object","assign","animationBuilder","tagName","index","canGoBackSync","getPreviousSync","getLength","indexOf","_a","_b","skipIfBusy","reject","router","canTransition","nextTrns","success","result","fireError","hasCompleted","requiresTransition","enteringView","leavingView","navChanged","failed","rejectReason","shift","runTransition","prepareTI","getEnteringView","Error","init","postViewInit","enteringRequiresTransition","leavingRequiresTransition","transition","_c","viewsLength","viewControllers","map","filter","removeEnd","i","destroyQueue","finalNumViews","insertViewAt","destroyView","progressCallback","progressAnimation","ani","sbAni","leavingEl","animationOpts","showGoBack","baseEl","t","transitionFinish","activeView","unmountInactiveViews","existingIndex","splice","activeViewIndex","stepValue","progressStep","shouldComplete","dur","onFinish","oneTimeCallback","newStepValue","g","easing","progressEnd","render","h","watchers","style","defineCustomElement","customElements","forEach","get","define","RouterOutlet","gestureOrAnimationInProgress","swipeHandlerChanged","swipeHandler","step","unlock","lock","e","error","duration","activeEl","activeParams","activeComponent","commit","d","waitPromise","TabBar","ionTabBarChanged","keyboardCtrl","keyboardVisible","translucent","selectedTabChanged","selectedTab","tab","keyboardOpen","color","shouldHide","getAttribute","role","class","ios","md","TabButton","ionTabButtonClick","inheritedAttributes","disabled","selected","onKeyUp","ev","key","selectTab","onClick","onTabBarChanged","dispatchedFrom","target","parent","composedPath","includes","contains","detail","layout","href","preventDefault","hasLabel","hasIcon","rel","attrs","download","onKeyup","part","tabindex","type","Text","ToolbarTitle","ionStyle","sizeChanged","emitStyle","size","getSize","dir"],"sourceRoot":""}