{"version":3,"file":"main.bundle.js","mappings":";gBAAIA,ECCAC,EADAC,6ICAG,MAAMC,EAAqBA,CAACC,EAAWC,KACtB,mBAATC,MAEXA,KAAK,QAASF,EAAWC,EAAW,ECOlCE,EAAY,CACdC,QAASC,IAAAA,MAAgBC,WACzBC,UAAWF,IAAAA,OAAiBC,WAC5BE,IAAKH,IAAAA,OAAiBC,WACtBG,yBAA0BJ,IAAAA,KAAeC,WACzCI,uBAAwBL,IAAAA,KAAeC,WACvCK,uBAAwBN,IAAAA,KAAeC,WACvCM,4BAA6BP,IAAAA,KAAeC,WAC5CO,2BAA4BR,IAAAA,KAAeC,WAC3CQ,eAAgBT,IAAAA,OAAiBC,WACjCS,yBAA0BV,IAAAA,OAC1BW,QAASX,IAAAA,MAGb,SAASY,EAAqBC,GAY3B,IAZ4B,QAC3Bd,EAAO,UACPG,EAAS,IACTC,EAAG,yBACHC,EAAwB,uBACxBC,EAAsB,uBACtBC,EAAsB,4BACtBC,EAA2B,2BAC3BC,EAA0B,eAC1BC,EAAc,yBACdC,EAAwB,QACxBC,GACHE,EACG,MAAMC,GAAaH,GAA8B,IAAnBZ,EAAQgB,QAC/BC,EAAcC,IAAmBC,EAAAA,EAAAA,UAAS,OAC1CC,EAAYC,IAAiBF,EAAAA,EAAAA,UAAS,OACtCG,EAAYC,IAAiBJ,EAAAA,EAAAA,WAAS,GAE7C,IAAKK,EAAgBC,IAAqBN,EAAAA,EAAAA,UAAS,OAC9CO,EAASC,IAAcR,EAAAA,EAAAA,WAAS,IAChCS,EAAWC,IAAgBV,EAAAA,EAAAA,UAAS,gCACrCW,EAAsB,GAE1B,MAAMC,EAAe/B,EAAQgC,KAAIC,IAAA,IAAGC,KAAMC,EAAOC,YAAaC,EAAaC,SAAUC,EAAIC,mBAAoBC,GAAMR,EAAA,MAC9G,CACGM,GAAIA,EAAGG,WACPP,MAAOQ,EAAAA,cAAA,WAAKA,EAAAA,cAAA,KAAGC,UAAU,WAAWC,MAAO,CAACC,WAAY,MAAOC,SAAU,SAAUZ,GAAUQ,EAAAA,cAAA,KAAGC,UAAU,YAAYP,IACtHI,MAAOA,EACV,IA8GL,OAAIhC,IAA+BM,EAE3B4B,EAAAA,cAAA,OAAKC,UAAU,wCACXD,EAAAA,cAAA,OAAKC,UAAU,iCACXD,EAAAA,cAAA,OAAKC,UAAU,8BACXD,EAAAA,cAAA,UAAI,+CAERA,EAAAA,cAAA,KAAGC,UAAU,gDAA+C,kDAIhED,EAAAA,cAAA,OAAKC,UAAU,uCACXD,EAAAA,cAACK,EAAAA,GAAM,CAACC,aAnELC,KACfC,EAAE,iCAAiCC,KAAK,eAAeC,OAAO,EAkEhBC,KAAK,YAOnDX,EAAAA,cAAA,OAAKC,UAAU,wCACV7B,EACG4B,EAAAA,cAACY,EAAAA,GAAK,CACFC,QAAQ,+DACRC,MAAM,qBACNb,UAAU,kBAGdD,EAAAA,cAAAA,EAAAA,SAAA,KACKnC,EACGmC,EAAAA,cAAA,OAAKC,UAAU,iCACXD,EAAAA,cAAA,OAAKC,UAAU,8BACXD,EAAAA,cAAA,UAAI,mDAERA,EAAAA,cAAA,KAAGC,UAAU,+BAA8B,oJAG7BD,EAAAA,cAAA,SAAG,oBAAoB,wCAIzCA,EAAAA,cAAAA,EAAAA,SAAA,KAzFZtC,GAA4BC,GAA0BC,EAGlDoC,EAAAA,cAACe,EAAAA,GAAM,CACHnB,GAAG,UACHoB,YAAa,CAAE,YAAa,aAC5BC,WAAYjB,EAAAA,cAACkB,EAAAA,EAAa,CAACC,MAAM,cACjCC,gBAAgB,EAChBC,gBACIrB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,KAAGC,UAAU,YAAW,6FAEYlC,GAEpCiC,EAAAA,cAAA,KAAGC,UAAU,YAAW,2HAIxBD,EAAAA,cAAA,SACIA,EAAAA,cAAA,cAAQ,wFASrBtC,IAA6BC,EAGhCqC,EAAAA,cAACe,EAAAA,GAAM,CACHnB,GAAG,UACHoB,YAAa,CAAE,YAAa,aAC5BI,gBAAgB,EAChBE,SAAS,EACTD,gBACIrB,EAAAA,cAAA,SAAG,kEACiE,IAC/DjC,UAMjB,EA8CgBiC,EAAAA,cAAA,UAAQC,UAAU,kBAAiB,iCAGnCD,EAAAA,cAACuB,EAAAA,GAAU,CACP3B,GAAG,iBACH4B,KAAK,cACLC,SAAU1C,EACV2C,aAAczC,EACd0C,mBAAmB,GACnBC,YAAY,WACZC,SAjHFC,IACtB,MAAMC,EAAWD,EAAEE,OAAOpC,GAC1BZ,GAAW,GACXF,EAAkBiD,EAAS,EA+GH1E,QAAS+B,IAEZD,GAGTa,EAAAA,cAAA,OAAKC,UAAU,uCACXD,EAAAA,cAACK,EAAAA,GAAM,CACHM,KAAK,WACLL,aAzKL2B,KACf,GAAIpE,GAA+BC,GAA8Be,EAI7D,OAHAG,GAAW,GAUFY,KACbhB,GAAc,GAEd,MAAMsD,EAAYrE,GAA+BG,EAA4B,CACzEmE,aAAcnE,GACd,CACA+D,SAAUnC,GAGdwC,IAAAA,KACU,GAAG3E,KAAOD,IAAa0E,GAC5BG,MAAKC,IACEA,EAAS7B,MAAM8B,gBAAkBD,EAAS7B,MAAM+B,OAChDC,OAAOC,SAAWJ,EAAS7B,MAAM+B,OAC1BF,EAAS7B,MAAMkC,cAAgBL,EAAS7B,MAAMmC,SACrDrE,EAAgB+D,EAAS7B,KAAKkC,cAC9BjE,EAAc4D,EAAS7B,KAAKmC,SAC5BC,YAAW,IAAMC,SAASC,QAAQC,UAAU,OAE5CpE,GAAc,GACdI,GAAW,GACkB,iBAAzBsD,EAAS7B,MAAMG,MACf1B,EAAa,yDAEbA,EAAa,8CAErB,IAEH+D,OAAM,KACHrE,GAAc,GACdI,GAAW,GACXE,EAAa,6CAA6C,GAC5D,EAzCFgE,CAASrE,QACT7B,EAAmBK,EAAQ8F,MAAKC,GAAUA,EAAOzD,WAAad,IAAgBgB,oBAIlFb,GAAW,EACL,EAiKcqE,SAAU1E,KAGjBL,GAAgBG,GACbuB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMsD,OAAO,OAAO9B,KAAK,UAAUgB,OAAQ/D,GACvCuB,EAAAA,cAAA,SACIuD,KAAK,SACL/B,KAAK,eACL1B,MAAOxB,OAS3C,CAEAJ,EAAsBd,UAAYA,EAElC,QChPA,SAASoG,EAAUC,GACf,MAAOC,EAA0BC,IAA+BnF,EAAAA,EAAAA,WAAS,IAClEoF,EAAoBC,IAAyBrF,EAAAA,EAAAA,WAAS,IACtDsF,EAA2BC,IAAgCvF,EAAAA,EAAAA,WAAS,IACpEF,EAAcC,IAAmBC,EAAAA,EAAAA,UAAS,OAC1CC,EAAYC,IAAiBF,EAAAA,EAAAA,UAAS,OACtCG,EAAYC,IAAiBJ,EAAAA,EAAAA,WAAS,GAmC7C,OACIwB,EAAAA,cAAA,OAAKC,UAAU,aACXD,EAAAA,cAACK,EAAAA,GAAM,CACHC,aApCO0D,UACfpF,GAAc,GACd+E,GAA4B,GAC5BE,GAAsB,GACtBE,GAA6B,GAC7B,IAAIE,GAAW,EACf,GAAIR,EAAMS,kBAAmB,CACzB,IAAIC,QAA4B/B,IAAAA,KAAWqB,EAAMW,QAAU,wCAA0CX,EAAMY,cAAe,CAAE7B,OAAQiB,EAAMS,qBACrIC,EAAoB1D,MAAQ0D,EAAoB1D,MAAM6D,MACvDT,GAAsB,GAEhBM,EAAoB1D,KAAKwD,UAC/BN,GAA4B,GAEhCM,EAAWE,EAAoB1D,MAAMwD,WAAY,CACrD,CACA,GAAIA,EAAU,CACV,IAAIM,QAAoBnC,IAAAA,KAAWqB,EAAMW,QAAU,oCAAsCX,EAAMY,cAAe,CAAEG,eAAgBf,EAAMe,eAAgBC,eAAgBhB,EAAMgB,eAAgBC,gBAAiBjB,EAAMiB,kBAC/MH,EAAY9D,MAAMkC,cAAgB4B,EAAY9D,MAAMmC,SACpDrE,EAAgBgG,EAAY9D,KAAKkC,cACjCjE,EAAc6F,EAAY9D,KAAKmC,SAC/BC,YAAW,IAAMC,SAASC,QAAQC,UAAU,OAE5CpE,GAAc,GACkB,iBAA5B2F,EAAY9D,MAAMG,MAClBmD,GAA6B,GAE7BF,GAAsB,GAGlC,GAOQ7C,YAAa,CACT,aAAcyC,EAAMkB,YAExBhE,KAAM8C,EAAMkB,WACZtB,SAAU1E,EACVsB,UAAU,cAEb2D,GACG5D,EAAAA,cAACe,EAAAA,GAAM,CACHnB,GAAG,cACHwB,gBAAc,EACdwD,QAASA,KACLf,GAAsB,EAAM,EAEhChD,QAASb,EAAAA,cAAAA,EAAAA,SAAA,KAAE,8CACXuD,KAAK,UACLsB,YAAY,cAGnBnB,GACG1D,EAAAA,cAACe,EAAAA,GAAM,CACHnB,GAAG,mBACHwB,gBAAc,EACdwD,QAASA,KACLjB,GAA4B,EAAM,EAEtC9C,QAASb,EAAAA,cAAAA,EAAAA,SAAA,KAAGyD,EAAMqB,iBAClBD,YAAY,cAGnBf,GACG9D,EAAAA,cAACe,EAAAA,GAAM,CACHnB,GAAG,qBACHiF,YAAY,YACZzD,gBAAc,EACdwD,QAASA,KACLb,GAA6B,EAAM,EAEvClD,QAASb,EAAAA,cAAAA,EAAAA,SAAA,KAAE,2DAGlB1B,GAAgBG,GACbuB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMsD,OAAO,OAAO9B,KAAK,UAAUgB,OAAQ/D,GACvCuB,EAAAA,cAAA,SAAOuD,KAAK,SAAS/B,KAAK,eAAe1B,MAAOxB,MAMxE,CAEAkF,EAAUpG,UAAY,CAClBiH,cAAe/G,IAAAA,OAAiBC,WAChC6G,QAAS9G,IAAAA,OAAiBC,WAC1BoH,WAAYrH,IAAAA,OAAiBC,WAC7BwH,OAAQzH,IAAAA,OAAiBC,WACzByH,aAAc1H,IAAAA,OAAiBC,WAC/B2G,kBAAmB5G,IAAAA,OACnBwH,gBAAiBxH,IAAAA,OACjBoH,gBAAkBpH,IAAAA,QAGtBkG,EAAUyB,aAAe,CACrBC,gBAAiB,iDAGrB,kBC9GA,SAASC,EAAiBC,EAAYC,GAClCD,EAAWE,SAAQC,IACf,GAAIA,EAAUC,QAAQC,uBAClB,OAEJ,IAAIhC,GAUMiC,EAVWH,EAAUC,QAAQ/B,OAW9BkC,KAAKC,MAAMF,QAAOG,EADnC,IAAkBH,EATV,MAAMI,EAAYT,EAAWE,EAAUC,QAAQO,gBAC/C,GAAID,EAAW,CACX,MAAME,EAAUhG,EAAAA,cAAoB8F,EAAWrC,GAC/CwC,EAAAA,OAAgBD,EAAST,GACzBA,EAAUC,QAAQC,wBAAyB,CAC/C,IAER,CAsBA,MAAMS,EAAoB,IAAIC,IACJ,IAAIC,kBAAiBC,IACrBH,EAAkBI,KAAO,GAG3CD,EAAUE,MAAKC,GACc,cAAlBA,EAASjD,MAAwBiD,EAASC,WAAWpI,OAAS,KAIzE8G,EACIuB,MAAMC,KAAK7D,SAAS8D,iBAAiB,2BACrCC,OAAOC,YAAYZ,GAE3B,IAEca,QAAQjE,SAASkE,KAAM,CAAEC,WAAW,EAAMC,SAAS,IAyBrE,wBChFO,MAAMC,EAAgBC,IAClB,CACHC,OAAQ,SACRC,KAAMC,EAAcH,GACpBxH,GAAIwH,EAAQxH,GACZ4B,KAAM4F,EAAQI,EACdC,WAAYL,EAAQM,EACpBC,WAAYP,EAAQQ,EAAEC,SAAS,cAQ1BN,EAAgBH,GACrBA,EAAQQ,EAAEE,WAAW,2BACd,UACAV,EAAQQ,EAAEE,WAAW,wBACrB,OAEA,UAKFC,EAAiB3E,GACJ,WAAlBA,EAAOiE,OACAjE,EAAO5B,KAEP,kBAAkB4B,EAAO4E,GAAK,IAKhCC,EAAiB7E,GACJ,WAAlBA,EAAOiE,OACAjE,EAAOxD,GAEP,kBAAkBwD,EAAO4E,KAK3BE,EAAmB9E,GACN,WAAlBA,EAAOiE,QACAjE,EAAOuE,WChDTQ,EAAc,SACdC,EAAY,OAGZC,EAAoBrI,EAAAA,cAAoB,CACjDsI,KAAMF,EACN/K,QAAS,GACTkL,MAAO,UACPC,yBAAyB,EACzBC,mBAAoBA,OACpBC,YAAa,GACbC,kBAAmBA,OACnBC,WAAY,KACZ9I,MAAO,KACP+B,SAAUA,OACVgH,UAAW,CAAEC,QAAS,QAGX,SAASC,IACpB,OAAOC,EAAAA,EAAAA,YAAWX,EACtB,CCjBO,MAAMY,EAA+BA,CAACjB,EAAIkB,IACtCC,KAAKC,MAAMpB,EAAKkB,GAAY,EAiB1BG,EAAqBA,CAACC,EAAMJ,EAAUX,KAC/C,MAAMgB,EAVyBC,EAACF,EAAMJ,KAC9BI,EAAO,GAAKJ,EASNM,CAAoBF,EAAMJ,GAExC,MAAO,CAACK,EADIJ,KAAKM,IAAIF,EAAQL,EAAUX,GACpB,EAShB,SAASmB,EAAuBC,EAAOC,GAC1C,MAAMC,EAAa,IAAKF,EAAMG,OAC9B,IAAK,MAAMC,KAAcH,EACrBC,EAAWE,GAAc,CAAE1C,OAAQ,WAEvC,MAAO,IACAsC,EACHG,MAAOD,EAEf,CAQO,SAASG,EAAoBL,EAAOI,GACvC,MAAO,IACAJ,EACHG,MAAO,IACAH,EAAMG,MACT,CAACC,GAAa,CAAE1C,OAAQ,UAGpC,CAQO,SAAS4C,EAAmBN,EAAOO,GACtC,MAAM,WAAEH,EAAU,MAAEI,EAAK,MAAE5B,GAAU2B,EAC/BE,EAAMD,EAAM9K,KAAIgL,GAAQA,EAAKzK,KAEnC,MAAO,IACA+J,EACHG,MAAO,IACAH,EAAMG,MACT,CAACC,GAAa,CAAE1C,OAAQ,SAAU8C,MAAOC,IAE7C7B,QAER,CAOO,SAAS+B,EAAYX,EAAOT,EAAUqB,GACzC,MAAM,MAAEhC,EAAK,MAAEuB,GAAUH,EACzB,GAAc,YAAVpB,EAAqB,MAAO,GAGhC,IAAI4B,EAAQ,IAAIzD,MAAM6B,GAEtB,MAAMiC,EAAYrB,KAAKsB,KAAKlC,EAAQW,GACpC,IAAK,IAAIwB,EAAI,EAAGA,GAAKF,EAAWE,IAAK,CACjC,MAAMpB,EAAOQ,EAAMY,IACZnB,EAAOoB,GAAOtB,EAAmBqB,EAAGxB,EAAUX,GAErD,GAAKe,GAAwB,UAAhBA,EAAKjC,OAIX,GAAoB,YAAhBiC,EAAKjC,OACZ,IAAK,IAAIuD,EAAIrB,EAAOqB,EAAID,EAAKC,IACzBT,EAAMS,GAAK,CAAEvD,OAAQ,UAAWW,GAAI4C,QAGxCtB,EAAKa,MAAM7E,SAAQ,CAAC1F,EAAIgL,KACpBT,EAAMS,EAAIrB,GAASgB,EAAQ3K,EAAG,SATlC,IAAK,IAAIgL,EAAIrB,EAAOqB,EAAID,EAAKC,IACzBT,EAAMS,GAAK,CAAEvD,OAAQ,WAAYW,GAAI4C,EAWjD,CAEA,OAAOT,CACX,CAQO,SAASU,EAAqBlB,EAAOT,EAAU4B,GAGlD,MAAMC,EAAc,IAAIC,IAExB,IAAK,MAAMJ,KAAKE,EAAe,CAC3B,MAAMf,EAAad,EAA6B2B,EAAG1B,GAC7CI,EAAOK,EAAMG,MAAMC,GAEpBT,GAAwB,UAAhBA,EAAKjC,QACd0D,EAAYE,IAAIlB,EAExB,CAEA,MAAO,IAAIgB,EACf,CCtIO,MA6DMG,EAAelH,MAAOvG,EAAK0N,EAAQC,KAC5C,MAAMpE,EA9DqB7I,KAA4C,IAA3C,MAAEkN,EAAK,WAAEtB,EAAU,SAAEb,EAAQ,MAAEoC,GAAOnN,EAClE,MAAMgN,EAAS,CACXE,QACAE,KAAMrC,EACNsC,MAAOzB,EAAa,GAAKb,GAa7B,OAVIoC,GACAzE,OAAO4E,OAAON,EAAQ,CAClB,4BAA6BG,EAC7B,4BAA6B,IAC7B,+BAAgC,WAChC,kCAAkC,EAClC,gBAAiB,QAIlB,IAAII,gBAAgBP,EAAO,EA6CrBQ,CAAgBR,GAEvB7I,QAAiBsJ,MAAMnO,EAAK,CAC9B6F,OAAQ,OACR0D,OACA6E,QAAS,CACLC,OAAQ,kDAEZV,WAGJ,IAAK9I,EAASyJ,GACV,MAAM,IAAInL,MACN,oCAAoC+E,KAAKqG,UAAUb,QAAa7I,EAAS+E,UACrE/E,EAAS2J,cAKrB,OAAO3J,EAAS4J,MAAM,ECjFnBlI,eAAemI,EAAMC,GACxB,OAAO,IAAIC,SAAQC,IACfzJ,YAAW,IAAMyJ,KAAWF,EAAG,GAEvC,CCKO,MAAMG,EAAY,GAEZC,EAAqB,qBACrBC,EAAkB,kBAClBC,EAAmB,mBACnBC,EAAuB,uBACvBC,EAAoB,oBACpBC,EAAqB,qBACrBC,EAAsB,sBAG7BC,EAAe,CACjBC,UAAW,CAAC,EACZC,KAAM,CACFnD,MAAO,CAAC,EACRvB,MAAO,WAEX2E,OAAQ,CACJpD,MAAO,CAAC,EACRwB,MAAO,GACP/C,MAAO,YAKf,SAAS4E,EAAiBC,EAAW5K,GACjC,OAAQA,EAAOe,MACX,KAAKmJ,EACL,KAAKG,EAAoB,CACrB,MAAMQ,EAAW,IAAKD,IAEhB,MAAEjD,GAAU3H,EAAO0H,QACnBoD,EAAkBnD,EAAM9K,KAAIgL,GAAQlD,EAAckD,KAExD,IAAK,MAAMA,KAAQiD,EACfD,EAAShD,EAAKzK,IAAMyK,EAGxB,OAAOgD,CACX,CACA,QACI,OAAOD,EAEnB,CAGA,SAASG,EAAYH,EAAW5K,GAC5B,OAAQA,EAAOe,MACX,KAAKiJ,EACD,OAAO9C,EAAuB0D,EAAW5K,EAAO0H,QAAQN,aAC5D,KAAK6C,EACD,OAAOzC,EAAoBoD,EAAW5K,EAAO0H,QAAQH,YACzD,KAAK2C,EACD,OAAOzC,EAAmBmD,EAAW5K,EAAO0H,SAChD,QACI,OAAOkD,EAEnB,CAGA,SAASI,GAAcJ,EAAW5K,GAC9B,OAAQA,EAAOe,MACX,KAAKoJ,EACD,OAAOjD,EAAuB0D,EAAW5K,EAAO0H,QAAQN,aAC5D,KAAKgD,EACD,OAAO5C,EAAoBoD,EAAW5K,EAAO0H,QAAQH,YACzD,KAAK8C,EACD,OAAO5C,EAAmBmD,EAAW5K,EAAO0H,SAChD,KAAK4C,EACD,OAAItK,EAAO0H,QAAQoB,QAAU8B,EAAU9B,MAC5B8B,EAGA,IACAL,EAAaG,OAChB5B,MAAO9I,EAAO0H,QAAQoB,OAGlC,QACI,OAAO8B,EAEnB,CAMA,MAAMK,GAAajL,IACf,OAAQA,EAAOe,MACX,KAAKoJ,EACL,KAAKC,EACL,KAAKC,EACD,OAAO,EACX,QACI,OAAO,EACf,EAiBG,SAASa,GAAQN,EAAW5K,GAG/B,OAbJ,SAAuB4K,EAAW5K,GAC9B,SAAKiL,GAAWjL,IAIaA,EAAO0H,QAAQoB,QAAU8B,EAAUF,OAAO5B,MAE3E,CAMQqC,CAAcP,EAAW5K,GAClB4K,EAGJ,CACHJ,UAAWG,EAAiBC,EAAUJ,UAAWxK,GACjDyK,KAAMM,EAAYH,EAAUH,KAAMzK,GAClC0K,OAAQM,GAAcJ,EAAUF,OAAQ1K,GAEhD,CC/FO,SAASoL,GAAwB9H,GACpC,OAAO,WACH,MAAO,CACH+H,MAAO,CACHpK,MAAO,KAEXqK,KAAM,SAAUD,EAAO7H,GACnB,MAAM+H,EAAYjI,EAElB+H,EAAMG,OAAO,SAAUC,IACnBhI,EAAAA,OAAgBjG,EAAAA,cAAC+N,EAAcE,GAAcjI,EAAQ,GAAG,IAG5D6H,EAAMK,IAAI,YAAY,KAClBjI,EAAAA,uBAAgCD,EAAQ,GAAG,GAEnD,EAER,CACJ,CCzDA,MAAMmI,GAAYC,GAAOA,GAAO,SAAUA,GAA2B,mBAAbA,EAAI/L,KAM5D,SAASgM,GAAgBvF,EAASwF,GAC9B,MAAMC,EAAS,IAAIC,IAAI1F,GAEvB,OADAyF,EAAOE,aAAaC,IAAI,IAAKJ,EAAa1O,IACnC2O,CACX,CAcO,SAASI,GAAqBxQ,GAAmB,IAAlB,aAAEmQ,GAAcnQ,EAMlDqC,EAAE,oBAAoBoO,IAAIN,EAAa1O,GAC3C,CAGO,SAASiP,GAA2BvP,GAAmB,IAAlB,aAAEgP,GAAchP,EACxD,OAAQgP,EAAahH,MACjB,IAAK,UACDwH,IAAIC,kBAAkB,wBACtB,MACJ,IAAK,OACDD,IAAIC,kBAAkB,qBAMlC,CAGO,SAASC,GAAQC,GAAU,IAAT,IAAExR,GAAKwR,EAC5BxM,OAAOC,SAAWjF,EAAIyR,IAC1B,CAMAlL,eAAemL,GAAkBC,GACzB,MAAMC,QAAsBzD,MAAM,qCAAqCwD,EAAMd,aAAa1O,KAAM,CAC5F0D,OAAQ,SAGNgM,QAAkBD,EAAcnD,OAEhCqD,EAAmB/O,EAAE,yCACtBnB,KAAI,CAACuL,EAAG4E,KACL,MAAM/R,EAAM,IAAI+Q,IAAIgB,EAAON,MAE3B,OADAzR,EAAIgR,aAAaC,IAAI,KAAMY,EAAUG,WAC9BhS,EAAIyR,IAAI,IAChBQ,UASP,aAPMrD,QAAQsD,IACVJ,EAAiBlQ,KAAI2E,UACjB,MAAM1B,QAAiBsJ,MAAMnO,GAC7B,aAAa6E,EAAS3B,MAAM,KAI7B2O,CACf,CAwEAtL,eAAe4L,GAAaN,GAExB9O,EAAE,eACGqP,KAAK,MAAOP,EAAUQ,gBACtBC,YAAY,UAAWT,EAAUU,eACjCD,YAAY,UAAWT,EAAUU,eAClCV,EAAUW,eACVzP,EAAE,eAAeqP,KAAK,MAAOP,EAAUW,gBAAgBC,OAEvD1P,EAAE,eAAe2P,OAIrB3P,EAAE,yCAAyC4P,MAAKpM,MAAO4G,EAAG4E,KACtD,MAAM/R,EAAM,IAAI+Q,IAAIgB,EAAON,MAC3B,GAAImB,OAAO5S,EAAIgR,aAAa6B,IAAI,SAAWhB,EAAUG,UACjD,OAGJhS,EAAIgR,aAAaC,IAAI,KAAMY,EAAUG,WAErC,MAAMc,EAAUzN,SAAS0N,cAAc,QACvCD,EAAQrB,KAAOzR,EAAIyR,KACnBqB,EAAQE,IAAM,aACdF,EAAQ/K,QAAoB,WAAI,OAChC1C,SAAS4N,KAAKC,YAAYJ,GAM1B1N,YAAW,KACP2M,EAAOoB,QAAQ,GAChB,KAAK,GAGhB,CClLe,SAASC,GAAwB1S,GAAa,IAAZ,OAAEqE,GAAQrE,EACvD,OAAO2S,EAAAA,EAAAA,UAAQ,KACX,MAAMC,EAAU,CAAClC,GAA6BF,IAc9C,MAZoB,aAAhBnM,EAAO8E,KACPyJ,EAAQC,KAAKhC,IACU,aAAhBxM,EAAO8E,KACdyJ,EAAQC,KDsEb,SAA8BC,GAA6B,IAAnB,SAAEC,GAAUC,UAAA9S,OAAA,QAAAwH,IAAAsL,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE3D,OAAOnN,eAAqCoL,GACxC,MAAM,IAAE3R,GAAQ2R,EAEhB,IACI,IAAKgC,EAAkB9B,SAAmBjD,QAAQsD,IAAI,CAClD/D,MAAMnO,EAAK,CACPoO,QAAS,CACL,mBAAoB,oBAG5BsD,GAAkBC,KAEtB,MAAMiC,QAAaD,EAAiBzQ,OAG9B2Q,EAAS9Q,EAAE+Q,UAAUF,EAAM,MAAM,GACjCG,EAAwBhR,EAAE8Q,GAAQG,OAAO,gCDrGpDzN,eAAqCiN,EAAUI,GAClD,MAAMK,EAAW,IAAMT,EACjBjP,EAASxB,EAAE6Q,GAAMI,OAAOC,GAE9B,GAAsB,IAAlB1P,EAAO3D,OACP,MAAM,IAAIuC,MAAM,mBAAmB8Q,gDAGvC,OAAO,IAAIrF,SAAQC,IACfwC,IAAI6C,MAAMC,KAAKC,WAAWZ,EAAUjP,EAAQsK,EAAQ,GAE5D,CC2FkBwF,CAAsBb,EAAUO,SAChC5B,GAAaN,GAKnBR,IAAIiD,iBAAiBtU,EAAIyR,MAEzBJ,IAAI6C,MAAMC,KAAKI,eAAevU,EAAIgR,aAAa6B,IAAI,KAEvD,CAAE,MAAOxO,GACL,GAAIoP,EACA,OAAOA,EAAS9B,GAEhB,MAAMtN,CAEd,CACJ,CACJ,CC3GyBmQ,CAAqBzP,EAAOyO,SAAU,CAAEC,SAAUlC,MACxC,sBAAhBxM,EAAO8E,MACdyJ,EAAQC,KDiHb,SAAuCC,EAAUiB,GAA+B,IAAnB,SAAEhB,GAAUC,UAAA9S,OAAA,QAAAwH,IAAAsL,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEhF,OAAOnN,eAAuCoL,GAC1C,MAAM,IAAE3R,GAAQ2R,EAChB,KDvHD,SAA2B6B,EAAUiB,GACxC,MAAMR,EAAW,IAAMT,EACjBjP,EAASxB,EAAEkR,GAEjB,GAAsB,IAAlB1P,EAAO3D,OACP,MAAM,IAAIuC,MAAM,mBAAmB8Q,6CAGvC,MAAM7D,EAAQ7L,EAAO6L,QAErB,IAAKA,EACD,MAAM,IAAIjN,MAAM,mBAAmB8Q,qCAGvC,GAAiC,mBAAtB7D,EAAMqE,GACb,MAAM,IAAItR,MACN,IAAIsR,0DAAmER,MAE9E,QAAAS,EAAAhB,UAAA9S,OAlBsD+T,EAAI,IAAA1L,MAAAyL,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAA,GAAAlB,UAAAkB,GAmB3DxE,EAAMqE,GAAYI,MAAM,KAAMF,EAClC,CCoGYG,CAAkBtB,EAAUiB,EAAYzU,EAAIgR,aAAa6B,IAAI,MAC7D,MAAMhB,QAAkBH,GAAkBC,SACpCQ,GAAaN,EAEvB,CAAE,MAAOxN,GACL,GAAIoP,EACA,OAAOA,EAAS9B,GAEhB,MAAMtN,CAEd,CACJ,CACJ,CCjIgB0Q,CAA8BhQ,EAAOyO,SAAUzO,EAAO0P,WAAY,CAC9DhB,SAAUlC,MD+LvB,SAA6B+B,GAChC,OAAOzC,IACH,MAAMc,EArMd,SAA+Bd,GAC3B,MAAO,CACH7Q,IAAK4Q,GAAgB5L,OAAOC,SAASwM,KAAMZ,GAC3CA,eAER,CAgMsBmE,CAAsBnE,GACpC,OArBRtK,eAA0B+M,EAAS3B,GAC/BN,IAAI4D,oBACJ,IACI,IAAK,MAAMC,KAAU5B,EAAS,CAC1B,MAAM6B,EAASD,EAAOvD,GAClBjB,GAAUyE,UACJA,CAEd,CACJ,CAAE,QACE9D,IAAI+D,mBACR,CACJ,CASeC,CAAW/B,EAAS3B,EAAM,CAEzC,CC/Le2D,CAAoBhC,EAAQ,GACpC,CAACvO,GACR,CCnBA,SAASwQ,GAAuB7U,GAO7B,IAP8B,aAC7B8U,EAAY,OACZzQ,EAAM,UACN0Q,EAAS,UACTC,EAAS,aACTC,EAAY,SACZC,GACHlV,EACG,MAAOyK,EAAY0K,IAAiB9U,EAAAA,EAAAA,UAAS2U,KAEzC,UAAEnG,EAAS,KAAEC,EAAI,OAAEC,IACnB,aACIqG,EAAY,eACZC,EAAc,wBACdC,EAAuB,qBACvBC,EAAoB,oBACpBC,EAAmB,sBACnBC,EAAqB,uBACrBC,EACAlL,kBAAmBmL,IJkHxB,SAAyB3V,GAAiB,IAAhB,IAAEV,EAAG,MAAE4N,GAAOlN,EAC3C,MAAOwL,EAAOoK,IAAYC,EAAAA,EAAAA,YAAWtG,GAASX,IAGtCE,KAAMgH,EAAW/G,OAAQgH,EAAW,UAAElH,GAAcrD,GACpD2B,MAAO5C,GAAgBwL,EAGzBC,GAAeC,EAAAA,EAAAA,cACjB,CAACrK,EAAYqB,KACTF,EAAazN,EAAK,CAAE4N,QAAOtB,aAAYb,SAAUqD,GAAanB,GACzD/I,MAAKgS,IACGjJ,EAAOkJ,SACRP,EAAS,CACLxQ,KAAMmJ,EACNxC,QAAS,CACLH,aACAI,MAAOkK,EAAS5T,KAChB8H,MAAO8L,EAAS9L,QAG5B,IAEHtF,OAAM,KACEmI,EAAOkJ,SACRP,EAAS,CACLxQ,KAAMkJ,EACNvC,QAAS,CAAEH,eAEnB,GACF,GAEV,CAACsB,EAAO5N,IASNgW,GAA0BW,EAAAA,EAAAA,cAC5BxU,IACI,MAQMmK,EAR0BnK,IACrBiH,OAAO0N,KAAKN,EAAUnK,OACxB3G,MAAK4G,IACF,MAAM,MAAEI,GAAU8J,EAAUnK,MAAMC,GAClC,QAAOI,GAAQA,EAAMhH,MAAKqR,GAAUA,IAAW5U,GAAW,IAInD6U,CAAwB7U,QACxBiG,IAAfkE,GFtKc/F,OAAOvG,EAAK0N,EAAQC,KAC9C,MAAM,GAAExL,EAAE,MAAEyL,GAAUF,EAChBnE,EAAO,IAAI0E,gBAAgB,CAC7BL,QACAzL,KACAoI,IAAI,IAGF1F,QAAiBsJ,MAAMnO,EAAK,CAC9B6F,OAAQ,OACR0D,OACA6E,QAAS,CACLC,OAAQ,kDAEZV,WAGJ,IAAK9I,EAASyJ,GACV,MAAM,IAAInL,MACN,oCAAoC+E,KAAKqG,UAAUb,QAAa7I,EAAS+E,UACrE/E,EAAS2J,cAKrB,OAAO3J,EAAS4J,MAAM,EE+IdwI,CAAejX,EAAK,CAAEmC,KAAIyL,UACrBhJ,MAAM5B,IACH,MAAM,GAAEuH,GAAOvH,EACTkU,EAAa,IAAIC,gBACvBlB,EAAqB,CAAC1L,GAAK2M,EAAWvJ,OAAO,IAEhDnI,OAAMqB,IACHuQ,QAAQvQ,MAAMA,EAAM,GACtB,GAEV,CAAC7G,EAAK4N,EAAO4I,IAIXa,GAAiBV,EAAAA,EAAAA,cACnB,SAACrK,EAAYqB,GAA0C,IAAlC,iBAAE2J,EAAmB,GAAG5D,UAAA9S,OAAA,QAAAwH,IAAAsL,UAAA,GAAAA,UAAA,GAAG,CAAC,EACzC6D,EAAc9J,EACdzN,EACA,CAAE4N,QAAOtB,aAAYb,SAAUqD,EAAWjB,MAAO5C,GACjD0C,GAGA2J,EAAmB,IACnBC,EAAc3I,QAAQsD,IAAI,CAACqF,EAAa7I,EAAM4I,KAAoB1S,MAC9D/C,IAAA,IAAE+U,GAAS/U,EAAA,OAAK+U,CAAQ,KAIhCW,EACK3S,MAAKgS,IACGjJ,EAAOkJ,SACRP,EAAS,CACLxQ,KAAMsJ,EACN3C,QAAS,CACLH,aACAI,MAAOkK,EAAS5T,KAChB8H,MAAO8L,EAAS9L,MAChB+C,MAAO5C,IAGnB,IAEHzF,OAAM,KACEmI,EAAOkJ,SACRP,EAAS,CACLxQ,KAAMqJ,EACN1C,QAAS,CAAEH,eAEnB,GAEZ,GACA,CAACsB,EAAO5N,EAAKiL,IAIXiL,GAAsBS,EAAAA,EAAAA,cACxB,CAAChB,EAAchI,KACX,MAAM6J,EAAoBhM,EAA6BmK,GAAgB,EAAG7G,GACpE2I,EAAcjB,EAAUnK,MAAMmL,GAC/BC,GAAsC,UAAvBA,EAAY7N,QAC5B8M,EAAac,EAAmB7J,EACpC,GAEJ,CAAC6I,EAAWE,IAIVP,GAAwBQ,EAAAA,EAAAA,cAC1BhJ,IACI,MAAM+J,EAAYjB,EAAYpK,MAAM,GAC/BqL,GAAkC,UAArBA,EAAU9N,QAQxByN,EAAe,EAAG1J,EAAQ,CAAE2J,iBA1IV,KA2ItB,GAEJ,CAACb,EAAaY,IAIZvK,GAAU6J,EAAAA,EAAAA,cAAYxU,GAAMoN,EAAUpN,IAAK,CAACoN,IAE5CuG,GAAea,EAAAA,EAAAA,cAAY,IACtB9J,EAAY2J,EAAW1H,EAAWhC,IAC1C,CAAC0J,EAAW1J,IAGTmJ,GAAuBU,EAAAA,EAAAA,cACzB,CAACgB,EAAShK,KACN,MAAML,EAAcF,EAAqBoJ,EAAW1H,EAAW6I,GAC/D,GAAIrK,EAAY1M,OAAQ,CACpB0V,EAAS,CACLxQ,KAAMiJ,EACNtC,QAAS,CAAEN,YAAamB,KAE5B,IAAK,MAAMhB,KAAcgB,EACrBoJ,EAAapK,EAAYqB,EAEjC,IAEJ,CAAC6I,EAAWE,IAGVX,GAAiBY,EAAAA,EAAAA,cAAY,IACxB9J,EAAY4J,EAAa3H,EAAWhC,IAC5C,CAACA,EAAS2J,IAGPL,GAAyBO,EAAAA,EAAAA,cAC3B,CAACgB,EAAShK,KACN,MAAML,EAAcF,EAAqBqJ,EAAa3H,EAAW6I,GACjE,GAAIrK,EAAY1M,OAAQ,CACpB0V,EAAS,CACLxQ,KAAMoJ,EACNzC,QAAS,CAAEN,YAAamB,KAE5B,IAAK,MAAMhB,KAAcgB,EACrB+J,EAAe/K,EAAYqB,EAEnC,IAEJ,CAAC0J,EAAgBZ,IAIfvL,GAAoByL,EAAAA,EAAAA,cAAY9I,IAClCyI,EAAS,CACLxQ,KAAMuJ,EACN5C,QAAS,CAAEoB,UACb,GACH,IAEG+J,GAAUvE,EAAAA,EAAAA,UACZ,KAAM,CACF6C,sBACAJ,eACAE,0BACAC,uBACAE,wBACAJ,iBACAK,yBACAlL,uBAEJ,CACIA,EACA4K,EACAE,EACAD,EACAG,EACAC,EACAF,EACAG,IAIR,OAAO/C,EAAAA,EAAAA,UAAQ,IAAM,CAACnH,EAAO0L,IAAU,CAAC1L,EAAO0L,GACnD,CIvUQC,CAAiBpC,IAEb5H,MAAO5C,GAAgBwE,EACzBqI,EAAyB1E,GAAyB,CAAErO,WACpDqG,GAAY2M,EAAAA,EAAAA,QAAO,MAEnBlN,EAAOI,EAAcP,EAAcC,EACnC/K,GAAUyT,EAAAA,EAAAA,UACZ,IAAOxI,IAASH,EAAcqL,IAAmBD,KACjD,CAACA,EAAcC,EAAgBlL,IAE7BmN,EAAaxI,EAAK1E,MAElBmN,EAA2B,aADnBpN,IAASH,EAAc+E,EAAO3E,MAAQ0E,EAAK1E,QAGzDoN,EAAAA,EAAAA,YAAU,KACN,IAAKD,EAAgB,OAErB,MAAMf,EAAa,IAAIC,gBAQvB,OAPItM,IAASH,EACTyL,EAAsBe,EAAWvJ,QAEjCuI,EAAoBP,EAAcuB,EAAWvJ,QAI1C,KACHuJ,EAAWiB,OAAO,CACrB,GACF,CAACxC,EAAcsC,EAAgB/B,EAAqBC,EAAuBtL,IAE9E,MAAMxI,EAAQkN,EAAUpE,IAAe,KAGjC/G,GAAWuS,EAAAA,EAAAA,cACbhR,IACIkQ,EAAclQ,EAAOxD,IACrB6T,EAAwBrQ,EAAOxD,IAC/B2V,EAAuBnS,EAAO,GAElC,CAACmS,EAAwB9B,IAGvB9K,ECpEK,SAA8BkN,EAAUzJ,GACnD,MAAM0J,GAAcN,EAAAA,EAAAA,QAAOK,IAC3BF,EAAAA,EAAAA,YAAU,KACNG,EAAYhN,QAAU+M,CAAQ,IAGlC,MAAME,GAAgBP,EAAAA,EAAAA,UAKtB,OAJAG,EAAAA,EAAAA,YAAU,IACC,IAAMK,aAAaD,EAAcjN,UACzC,KAEIsL,EAAAA,EAAAA,cACH,WAAa,QAAAjC,EAAAhB,UAAA9S,OAAT+T,EAAI,IAAA1L,MAAAyL,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAlB,UAAAkB,GACJ2D,aAAaD,EAAcjN,SAC3BiN,EAAcjN,QAAUjG,YAAW,MAE/BoT,EADsBH,EAAYhN,YACjBsJ,EAAK,GDjBX,ICmBnB,GACA,CDpBmB,KCsB3B,CD+C8B8D,CAAqBpC,GAEzCqC,GAAerF,EAAAA,EAAAA,UACjB,KAAM,CACFmC,eACA3K,OACAjL,UACAkL,MAAOkN,EACPjN,wBAAyBkN,EACzBjN,mBACIH,IAASH,EAAc0L,EAAyBH,EACpDhL,cACAC,oBACAC,aACA9I,QACA+B,WACAgH,eAEJ,CACIoK,EACA5V,EACAoY,EACAC,EACApN,EACAzG,EACAgS,EACAH,EACAhL,EACAE,EACAD,EACA7I,IAIR,OAAOE,EAAAA,cAACqI,EAAkB+N,SAAQ,CAACtW,MAAOqW,GAAe9C,EAC7D,CAEAL,GAAwB5V,UAAY,CAChC6V,aAAc3V,IAAAA,MAAgB,CAAC,UAC/BkF,OAAQlF,IAAAA,OAAiBC,WACzB2V,UAAW5V,IAAAA,MAAgB,CACvBG,IAAKH,IAAAA,OAAiBC,WACtB8N,MAAO/N,IAAAA,OAAiBC,aACzBA,WACH4V,UAAW7V,IAAAA,OACX8V,aAAc9V,IAAAA,OACd+V,SAAU/V,IAAAA,MAGd,UEvHA,MAAM+Y,GAAOA,OAKb,SAASC,GAAsBnY,GAA0D,IAAzD,OAAEqE,EAAM,aAAEyQ,EAAY,aAAEG,EAAY,MAAEjJ,EAAK,SAAEkJ,GAAUlV,EACnF,MAAMoY,GAAWzF,EAAAA,EAAAA,UACb,IAAM3G,EAAMsH,QAAOpH,GAAoB,KAAZA,EAAKzK,KAAWP,KAAIgL,GAAQlD,EAAckD,MACrE,CAACF,KAEEzB,EAAa8N,IAAkBhY,EAAAA,EAAAA,UAAS,KACxCsB,EAAO2W,IAAYjY,EAAAA,EAAAA,UAAS+X,EAASnD,IACtCmC,EAAyB1E,GAAyB,CAAErO,WACpDqG,GAAY2M,EAAAA,EAAAA,QAAO,MAGnB3T,GAAWuS,EAAAA,EAAAA,cACb9F,IACImI,EAASnI,GACTiH,EAAuBjH,EAAa,GAExC,CAACiH,IAICY,GAAerF,EAAAA,EAAAA,UAAQ,KACzB,MAAMvI,EAAQgO,EAASlY,OACjBqY,EAAwBhO,EAAYiO,cAAcC,OAClDtO,EAAOoO,EAAwBvO,EAAcC,EAC7C/K,EACFiL,IAASH,EACHoO,EAAS9E,QAAOrO,GACLA,EAAO5B,KAAKmV,cAAcE,SAASH,KAE9CH,EAEV,MAAO,CACHtD,eACA3K,OACAjL,UACAkL,QACAC,yBAAyB,EACzBC,mBAAoB4N,GACpB3N,cACAC,kBAAmB6N,EACnB5N,WAAY9I,GAAOF,IAAM,KACzBE,QACA+B,WACAgH,YACH,GACF,CAAC0N,EAAUtD,EAAcpR,EAAU6G,EAAa5I,IAEnD,OAAOE,EAAAA,cAACqI,EAAkB+N,SAAQ,CAACtW,MAAOqW,GAAe9C,EAC7D,CAEAiD,GAAuBlZ,UAAY,CAC/B6V,aAAc3V,IAAAA,MAAgB,CAAC,SAC/BkF,OAAQlF,IAAAA,OACR8V,aAAc9V,IAAAA,OACd6M,MAAO7M,IAAAA,QAAkBA,IAAAA,QACzB+V,SAAU/V,IAAAA,MAGd,UC7DA,SAASwZ,GAAmBrT,GACxB,MAA2B,UAAvBA,EAAMwP,aACCjT,EAAAA,cAACgT,GAA4BvP,GAE7BzD,EAAAA,cAACsW,GAA2B7S,EAE3C,CAEAqT,GAAmB1Z,UAAY,CAC3B6V,aAAc3V,IAAAA,MAAgB,CAAC,QAAS,UAG5C,gPC6MA,OArHA,SAAsCgC,GAA8C,IAA7C,WAAEyX,EAAU,SAAEC,EAAQ,SAAE3D,KAAa4D,GAAM3X,EAC9E,MAAM,cAAE4X,EAAa,QAAE7Z,EAAO,YAAE8Z,GAAgBF,EAC1CG,GAAY5B,EAAAA,EAAAA,WAEZ,UAAE6B,EAAS,aAAEC,EAAY,cAAEC,IAAkBC,EAAAA,GAAAA,GAAW,CAC1DlR,KAAMjJ,EAAQgB,OACd+Y,YACAK,SAJa,EAKbC,cAActD,EAAAA,EAAAA,cAAY,IAAM,IAAI,OAElC,mBAAE3L,EAAkB,UAAEI,GAAcE,IAEpC4O,EAAaL,EAAaM,GAAG,IAAIC,QAAU,EAC3CC,EAAWR,EAAaM,IAAI,IAAIC,QAAU,EAC1CE,EAAe1a,EAAQ2a,QAAQd,GA2CrC,IAAIe,EACJ,GAvJJ,SAAgCpP,EAAWxL,GAEvC,MAAM6a,EAASrP,EAAUC,QACzB,GAAIoP,GAAUA,EAAOvO,MAAMuN,cAAe,CACtC,MAAMlV,EAASkW,EAAOvO,MAAMuN,cAG5B,IAAIA,EAAgB,KAEpB,GAAsB,WAAlBlV,EAAOqF,OAAqB,CAC5B,MAAM8Q,EAAclQ,EAAejG,GACnCkV,EAAgB7Z,EAAQ8F,MAAKiV,GAAKnQ,EAAemQ,KAAOD,KAAgB,IAC5E,MAGIjB,EAAgB7Z,EAAQ2E,EAAOgG,IAInCkQ,EAAOvO,MAAMuN,cAAgBA,EAQ7BgB,EAAOG,+BAAgC,CAC3C,CACJ,CAgFIC,CAAuBzP,EAAWxL,GAxEbc,KAA0E,IAAzE,aAAE4Z,EAAY,kBAAEQ,EAAiB,iBAAEC,EAAgB,cAAEjB,GAAepZ,EAC1F,MAAMsa,GAAyBjD,EAAAA,EAAAA,SAAO,GAChCkD,GAAyBtE,EAAAA,EAAAA,cAAY,KACvCqE,EAAuB3P,SAAU,CAAI,GACtC,IACG6P,GAA0BvE,EAAAA,EAAAA,cAAY,KACxCqE,EAAuB3P,SAAU,CAAK,GACvC,KAEH6M,EAAAA,EAAAA,YAAU,KACN,MAAMiD,EAAkB,CAAC,YAAa,UAAW,SAAU,WAAY,OAAQ,OAIzEC,EAAYzJ,IACVwJ,EAAgB/B,SAASzH,EAAM0J,MAC/BJ,GACJ,EAGEK,EAAcJ,EACdK,EAAUL,EAMhB,OAJA7V,SAASmW,iBAAiB,UAAWJ,EAAW,CAAEK,SAAS,IAC3DpW,SAASmW,iBAAiB,YAAaF,EAAa,CAAEG,SAAS,IAC/DpW,SAASmW,iBAAiB,QAASD,EAAS,CAAEE,SAAS,IAEhD,KACHpW,SAASqW,oBAAoB,UAAWN,EAAW,CAAEK,SAAS,IAC9DpW,SAASqW,oBAAoB,YAAaJ,EAAa,CAAEG,SAAS,IAClEpW,SAASqW,oBAAoB,QAASH,EAAS,CAAEE,SAAS,GAAO,CACpE,GACF,CAACP,EAAyBD,KAE7B/C,EAAAA,EAAAA,YAAU,KACsB8C,EAAuB3P,UAK7B,IAAlBiP,IAA8C,IAAvBQ,IAAkD,IAAtBC,IAInBT,EAAeQ,GACfR,EAAeS,IAG/CjB,EAAcQ,EAAc,CAAEqB,MAAO,SACzC,GACD,CAACb,EAAmBC,EAAkBT,EAAcR,GAAe,EAuBtE8B,CAAiB,CACbtB,eACAQ,kBAAmBZ,GAAc,EAAIA,EAhBxB,GAgBiD,EAC9Da,iBAAkBV,GAAY,EAAIA,EAjBrB,GAiB4C,EACzDP,mBAGJ5B,EAAAA,EAAAA,YAAU,KACN,IAAoB,IAAhBgC,IAAmC,IAAdG,EACrB,OAGJ,MAEMwB,EAFgBjc,EAAQkc,MAAM5B,EAAYG,EAAW,GAErB0B,QAAO,CAACpE,EAAShS,EAAQwH,KACrC,aAAlBxH,EAAOiE,QAEP+N,EAAQpE,KAAKpG,EAAI+M,GAGdvC,IACR,IAEH,GAAIkE,EAAgBjb,OAAQ,CACxB,MAAMsW,EAAa,IAAIC,gBACvBnM,EAAmB6Q,EAAiB3E,EAAWvJ,OAWnD,IACD,CAAC0M,EAAUrP,EAAoBpL,EAASsa,IAIvCR,EAAYsC,WAAgC,IAAnBpc,EAAQgB,OAEjC4Z,EAAS5E,MACN,CACH,MAAMqG,EAAkB1Z,EAAAA,SAAe0P,QAAQ2D,GAC/C4E,EACIjY,EAAAA,cAAA,OACIE,MAAO,CACHyZ,OAAQ,GAAGtC,MACXuC,MAAO,OACPC,SAAU,aAGbvC,EAAajY,KAAIya,IACd,MAAMC,EAAQL,EAAgBI,EAAYjC,OAE1C,OACI7X,EAAAA,cAAA,OACI8Y,IAAKgB,EAAYhB,IACjB7Y,UAAU,4BACVC,MAAO,CACH2Z,SAAU,WACVG,IAAK,EACLC,KAAM,EACNL,MAAO,OACPD,OAAQ,GAAGG,EAAYxT,SACvB4T,UAAW,cAAcJ,EAAYvQ,aAGxCwQ,EACC,IAK1B,CAEA,OACI/Z,EAAAA,cAACqF,EAAAA,EAAW8U,SAAQC,GAAA,GACZnD,EAAI,CACRF,WAAY,IACLA,EACH7W,MAAO,IACA6W,GAAY7W,MACf0Z,MAAO,OACPS,SAAU,OACVC,UAAW,UAGnBtD,SAAUuD,IACNnD,EAAUtO,QAAUyR,EACpBvD,EAASuD,EAAG,IAGftC,EAGb,gPCvNA,SAASuC,GAAiB/W,GACtB,MAAM,UAAExD,EAAS,KAAEQ,EAAI,MAAEjB,EAAK,WAAEmI,EAAU,UAAE8S,EAAS,WAAEC,GAAejX,EAEhEkX,EAAuBC,KACzB3a,EACA,gDACA,oDAAoDQ,EAAK4G,cACtC,IAAZ5G,EAAKuH,IACR,6BAA4BvH,EAAKuH,GAAK,GAAM,EAAI,OAAS,OAC7C,WAAhBvH,EAAK4G,QAAuB,4BAA4B5G,EAAK6G,OAC7D,CACI,8CAA+CK,EAC/C,iCAAkC8S,EAClC,kCAAmCC,IAI3C,OACI1a,EAAAA,cAACqF,EAAAA,EAAWwV,OAAMT,GAAA,GAAK3W,EAAK,CAAExD,UAAW0a,IACpB,WAAhBla,EAAK4G,OACFrH,EAAAA,cAAA,OAAKC,UAAU,uCACXD,EAAAA,cAAA,QAAMC,UAAU,iCAAiCT,GACjDQ,EAAAA,cAAA,QAAMC,UAAU,wCAAwCQ,EAAKgH,aAGjEzH,EAAAA,cAAA,OAAKC,UAAU,kDACXD,EAAAA,cAAA,QAAMC,UAAU,iBAAiBT,IAKrD,CAEAgb,GAAiBpd,UAAY,CACzB6C,UAAW3C,IAAAA,OACXmD,KAAMnD,IAAAA,OAAiBC,WACvBwZ,WAAYzZ,IAAAA,OACZqK,WAAYrK,IAAAA,KACZmd,UAAWnd,IAAAA,KACXod,WAAYpd,IAAAA,KACZkC,MAAOlC,IAAAA,OAAiBC,YAG5B,QAAeud,EAAAA,EAAAA,MAAKN,+NCrCpB,OAXA,SAAyB/W,GAQrB,OAAOzD,EAAAA,cAACqF,EAAAA,EAAW0V,MAAKX,GAAA,GAAK3W,EAAK,CAAEuX,aAAa,MAAMzX,KAAK,WAChE,ECFA,SAAS0X,GAAiBC,GACtB,MAAM,MAAE1b,EAAK,YAAE2b,EAAW,eAAEC,EAAc,iBAAEC,GAAqBH,GAE3D,KACF5S,EAAI,aACJ2K,EAAY,QACZ5V,EAAU,GAAE,MACZkL,EAAK,wBACLC,EAAuB,kBACvBG,EAAiB,WACjBC,EAAU,MACV9I,EAAK,SACL+B,EAAQ,UACRgH,GACAE,IAaEuS,EACe,UAAjBrI,GACS,SAAT3K,GACAE,GACe,OAAfI,EAEJ,OACI5I,EAAAA,cAAA,OAAKC,UAAU,mBACXD,EAAAA,cAACub,EAAAA,GAAM,CACH3b,GAAG,cACHJ,MAAOA,EACPgc,WAAS,EACTC,aAAwB,YAAVlT,GAAuBA,EAAQ,GAC7C4S,YAAaG,EAAwB,GAAKH,EAC1C9d,QAASA,EACTqe,oBAAoB5K,EAAAA,EAAAA,UAChB,KAAM,CACFiK,MAAOY,GACPxB,SACqB,UAAjBlH,EACM2I,GACAvW,EAAAA,EAAW8U,SACrBU,OAAQL,MAEZ,CAACvH,IAEL4I,iBAAkB,CACdC,IAAKjT,EACL/I,QACA+B,WAIAka,aAAc,KACdhU,eAAc,EACdE,eAAc,EACdC,iBAAgB,EAChBuR,UAAWjR,EACX4S,gBAAgBhH,EAAAA,EAAAA,cAAY,IAAMgH,GAAgB,IAClDC,kBAAkBjH,EAAAA,EAAAA,cAAY,IAAMiH,GAAkB,IACtDW,cAAerT,KAKnC,CAMA,MAAMsT,GAA4B9d,IAAsD,IAArD,aAAE+d,EAAY,qBAAEC,EAAoB,SAAElL,GAAU9S,EAC/E,OAAI+d,EACO,CACH5U,KAAM,oBACN4K,WAAYgK,EACZjL,SAAUkL,GAEPlL,EACA,CACH3J,KAAM,WACN2J,YAGG,CAAE3J,KAAM,WACnB,EAMJ,SAAS8U,GAAW3Y,GAChB,MAAM,UAAE4Y,EAAS,cAAEC,EAAa,UAAEnJ,EAAS,aAAEC,EAAY,MAAEjJ,EAAK,YAAE+Q,GAAgBzX,EAE5E8Y,EAAc,CAChB/Z,OAAQyZ,GAA0BxY,GAClC0P,YACAC,gBAIEoJ,EAAgBH,EAChB,IACOE,EACHtJ,aAAc,QACdC,UAAW,CAAEzV,IAAK,IAAM4e,EAAWhR,MAAOiR,IAE9C,IACOC,EACHtJ,aAAc,OACd9I,SAGV,OACInK,EAAAA,cAAC8W,GAAuB0F,EACpBxc,EAAAA,cAACib,GAAqBC,GAGlC,CAEAkB,GAAWhf,UAAY,CACnB+M,MAAO7M,IAAAA,QAAkBA,IAAAA,QACzB+e,UAAW/e,IAAAA,OACXgf,cAAehf,IAAAA,OACf6V,UAAW7V,IAAAA,OACX8V,aAAc9V,IAAAA,OACd4e,aAAc5e,IAAAA,OACd6e,qBAAsB7e,IAAAA,OACtB2T,SAAU3T,IAAAA,OACV4d,YAAa5d,IAAAA,QAGjB,UCjJA,MAAMF,GAAY,CACd4D,YAAa1D,IAAAA,OACb8D,eAAgB9D,IAAAA,KAChBuH,YAAavH,IAAAA,OACbuD,QAASvD,IAAAA,OACT+D,gBAAiB/D,IAAAA,OACjBiG,KAAMjG,IAAAA,QAGV,SAASmf,GAASte,GAA+E,IAA9E,YAAE6C,EAAW,eAAEI,EAAc,YAAEyD,EAAW,QAAEhE,EAAO,gBAAEQ,EAAe,KAAEkC,GAAMpF,EAM3F,OACI6B,EAAAA,cAAA,OAAKC,UAAU,4BACXD,EAAAA,cAACe,EAAAA,GAAM,CACHC,YAAaA,EACb6D,YAAaA,EACbzD,eAAgBA,EAChBP,QAASA,EACTQ,gBAZCV,MACT,MAAM+b,EAAS,CAAEC,OAAQtb,GACzB,OAAOrB,EAAAA,cAAA,OAAK4c,wBAAyBF,GAAU,EAUtB/b,GACjB4C,KAAMA,IAItB,CAEAkZ,GAAUrf,UAAYA,GAEtB,qOC/BA,MAAMA,GAAY,CACd+Z,YAAa7Z,IAAAA,MAAgB,CACzBuf,eAAgBvf,IAAAA,KAChBsC,GAAItC,IAAAA,OAAiBC,WACrBiC,MAAOlC,IAAAA,OAAiBC,WACxBie,UAAWle,IAAAA,KACXoE,aAAcpE,IAAAA,OACdqK,WAAYrK,IAAAA,KACZC,WAAYD,IAAAA,KACZ8d,eAAgB9d,IAAAA,OAChB+d,iBAAkB/d,IAAAA,OAClB6d,YAAa7d,IAAAA,SAEjBgR,aAAchR,IAAAA,MAAgB,CAC1BoC,YAAapC,IAAAA,OACbwC,MAAOxC,IAAAA,OACPiG,KAAMjG,IAAAA,SAEVwf,wBAAyBxf,IAAAA,OAAiBC,WAC1Cwf,mBAAoBzf,IAAAA,OAAiBC,YAKzC,SAASyf,GAAkB7e,GAIxB,IAHCgZ,aAAa,eAAEiE,EAAc,iBAAEC,KAAqB4B,GAAiB,aACrE3O,EAAcwO,wBAAyBI,EACvCH,mBAAoBI,GACvBhf,EACG,MAAO2B,EAAO2W,IAAYjY,EAAAA,EAAAA,UAAS8P,EAAa5O,aAAe4O,EAAaxO,MAAQwO,EAAe,CAAE5O,YAAa,GAAII,MAAO,GAAIyD,KAAM,MAChIkW,EAAW2D,IAAgB5e,EAAAA,EAAAA,WAAS,IACpCiD,EAAU4b,IAAe7e,EAAAA,EAAAA,WAAS,GAEnC8e,GAAgClJ,EAAAA,EAAAA,cAAY,CAACmJ,EAAa1c,IACxD0c,EAAYC,WAAWnf,OAAS,EACzB,mCAEAwC,GAEZ,CAACua,EAAgBC,IAEdoC,GAAcrJ,EAAAA,EAAAA,cAAamJ,GACzBA,EAAYlf,OAAS,OACrBgf,GAAY,GAGL,IAAIhR,SAAQrI,MAAOsI,EAASoR,KAC/B,MAAMC,EAAkB,IAAIjS,gBAAgB,CAAEkS,YAAaL,IACrDM,EAAc,GAAGX,KAAiCS,EAAgB5d,aAExEqd,GAAa,GAEb,IACI,MAAMU,QAAYlS,MAAMiS,EAAa,CACjChS,QAAS,CACL,mBAAoB,oBAIvBiS,EAAI/R,KACLsR,GAAY,GACZK,KAKJpR,QAFmBwR,EAAI5R,OAG3B,CACA,MAAOpK,GACHub,GAAY,GACZK,GACJ,CAEAN,GAAa,EAAM,KAG5B,CAACC,EAAaD,EAAcF,IAEzBrb,GAAWuS,EAAAA,EAAAA,cAAahR,IAC1B,IAAKA,EAED,YADAqT,EAAS,CAAE/W,YAAa,GAAII,MAAO,GAAIyD,KAAM,KAIjDuL,IAAI4D,oBAEJ+D,EAASrT,GAET,MAAM,MAAEtD,EAAK,KAAEyD,GAASH,EAClBua,EAAkB,IAAIjS,gBAAgB,CAAE5L,QAAOyD,SAErDd,OAAOC,SAASwM,KAAO,GAAGiO,KAA4BQ,EAAgB5d,YAAY,GACnF,CAACod,IAEJ,OACInd,EAAAA,cAAA,OAAKC,UAAU,mBACXD,EAAAA,cAAC+d,EAAAA,GAAY3D,GAAA,CACTxa,GAAG,2BACHJ,MAAM,YACNia,UAAWA,EACXhY,SAAUA,EACVgc,YAAaA,EACbrC,eAAiBmC,GAAgBD,EAA8BC,EAAanC,GAC5EC,iBAAmBkC,GAAgBD,EAA8BC,EAAalC,GAC9ExZ,SAAUA,EACVga,iBAAkB,CACd9T,eAAiB3E,GAAYA,EAAO1D,aAExCI,MAAOA,GACHmd,IAIpB,CAEAD,GAAmB5f,UAAYA,GAC/B4f,GAAmB/X,aA9FE,CAAC,EAgGtB,qBCpHA,MAAM7H,GAAY,CACd4gB,mBAAoB1gB,IAAAA,OAAiBC,WACrC0gB,OAAQ3gB,IAAAA,OAAiBC,WACzB2gB,oBAAqB5gB,IAAAA,OACrBuD,QAASvD,IAAAA,OAAiBC,WAC1B4gB,UAAW7gB,IAAAA,KACX8gB,UAAW9gB,IAAAA,QAOf,SAAS+gB,GAA0BlgB,GAAqF,IAApF,UAAEigB,EAAS,mBAAEJ,EAAkB,OAAEC,EAAM,oBAAEC,EAAmB,QAAErd,EAAO,UAAEsd,GAAWhgB,EAClH,MAAOmgB,EAAeC,IAAoB/f,EAAAA,EAAAA,WAAS,GAC7CggB,GAAmBhJ,EAAAA,EAAAA,UAUnBiJ,EAAgBN,OAAYtY,EAC9B7F,EAAAA,cAAA,KAAGC,UAAU,yBAAyBiP,KAAK,mCAAmCwP,QAL3DC,KACnB3hB,EAAmBohB,EAAU,GAKxBF,GAGT,OACIle,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACK,EAAAA,GAAM,CACHC,aAhBUse,KAClBL,GAAiB,EAAK,EAgBdte,UAAU,0BACVU,KAAMqd,EACNa,UAAWL,IAEfxe,EAAAA,cAAC8e,GAAAA,GAAK,CACFlf,GAAG,gCACHmf,WAAYd,EACZ1d,WAAYA,IAAMge,GAAiB,GACnCS,WAAS,EACTC,SAAUX,EACVE,iBAAkBA,EAClBU,eAAgBf,EAChBgB,sBAAuBjB,EACvBkB,yBAAyB,iBACzBC,gBAAgB,YAChBC,eAAgBb,GAEhBze,EAAAA,cAAA,OAAK4c,wBAAyB,CAACD,OAAQ9b,MAIvD,CAEAwd,GAA2BjhB,UAAYA,GACvCihB,GAA2BpZ,aAjDN,CACjBkZ,WAAW,GAiDf,0CC1DA,MAAM/gB,GAAY,CACdmiB,SAAUjiB,IAAAA,OACVkiB,OAAQliB,IAAAA,OACRmiB,kBAAmBniB,IAAAA,OACnBoiB,YAAapiB,IAAAA,OACbqiB,0BAA2BriB,IAAAA,OAC3BsiB,QAAStiB,IAAAA,OAAiBC,YAG9B,SAASsiB,GAAwB1hB,GAA2F,IAA1F,QAAEyhB,EAAO,SAAEL,EAAQ,OAAEC,EAAM,kBAAEC,EAAiB,YAAEC,EAAW,0BAAEC,GAA2BxhB,EACtH,GAAmB,IAAhBuhB,EACC,OAAQ1f,EAAAA,cAAAA,EAAAA,SAAA,MAGZ,MAAM8f,EAAiBlF,KAAW,yBAA0B,CAAC,kCAAoC6E,EAAoB,EAAG,oCAA2D,IAAtBA,IACvJM,EAAsB,kCACtBC,EAAoBhgB,EAAAA,cAAA,MAAIC,UAAU,wBAAwB2f,EAAQ9e,OAClEmf,EAAiBjgB,EAAAA,cAAA,KAAGC,UAAU,2BAA2B2c,wBAAyB,CAAED,OAAQ4C,KAElG,IAAIW,EACAC,EACAC,EAyCJ,OAvCGX,EAAoB,GACnBU,EAAc,4BAEY,IAAtBV,GAA2C,IAAhBC,GAC3BU,EAAgBR,EAAQS,SAASC,QACjCJ,EACIlgB,EAAAA,cAAA,OAAKC,UAAW8f,GACXC,EACAC,KAITC,EACIlgB,EAAAA,cAAA,OAAKC,UAAW8f,GACXC,GAILI,EADAX,IAAsBC,EACNE,EAAQS,SAASE,SAEjBX,EAAQS,SAASG,aAIzCJ,EAAgBR,EAAQa,YACxBN,EAAc,wBACK,IAAhBT,IACCQ,EACIlgB,EAAAA,cAAA,OAAKC,UAAW8f,GACXE,KAWbjgB,EAAAA,cAAC0gB,GAAAA,GAAI,CACDC,QAAM,EACNC,SAAS,EACT3gB,UAAW6f,GAEX9f,EAAAA,cAAC6gB,GAAAA,EAAa,CAAC1f,MAAM,UAAUmF,KAAK,OACnC4Z,GAAiBA,EAClBlgB,EAAAA,cAAA,OAAKC,UAAU,kCACXD,EAAAA,cAAA,KAAGC,UAAU,yBAAyBmgB,EAAcU,WAExD9gB,EAAAA,cAAA,KAAGC,UAAWkgB,EAAajR,KAAM,uCAAuCsQ,IAAUd,QAftEqC,KAChB/jB,EAAmB,MAAM0iB,EAAc,EAAI,IAAM,iBAAiBC,IAA4B,GAerFS,EAAcY,aAI/B,CAEAnB,GAAyBziB,UAAYA,GACrC,qOCnFA,MAAMA,GAAY,CACdwiB,QAAStiB,IAAAA,OACT2jB,SAAU3jB,IAAAA,QAGR4jB,IAAkCC,EAAAA,GAAAA,GAAYtB,IAA0B,IAAe7f,EAAAA,cAAAA,EAAAA,SAAA,QAE7F,SAASohB,GAAoBjjB,GAAwB,IAAvB,QAAEyhB,EAAO,SAAEqB,GAAU9iB,EAC/C,MAAOsb,EAAW2D,IAAgB5e,EAAAA,EAAAA,UAAS,SACpC6iB,EAAYC,IAAiB9iB,EAAAA,EAAAA,UAAS,CAAC,IAE9CmX,EAAAA,EAAAA,YAAU,KACN4L,GAAiB,GAClB,IAEH,MAAMA,EAAkBvd,UACpBoZ,EAAa,WACb,IACI,MAAMU,QAAYlS,MAAM,GAAGqV,IAAY,CACnC3d,OAAQ,MACRuI,QAAS,CACL,eAAgB,sBAIlBpL,QAAaqd,EAAI5R,OACvBkR,EAAa,YACbkE,EAAc7gB,EAClB,CAAE,MAAOqB,GACLsb,EAAa,WACjB,CACM,EAGV,OACIpd,EAAAA,cAACkhB,GAA+B9G,GAAA,CAAC/S,OAAQoS,EAAWmG,QAASA,GAAayB,GAElF,CAEAD,GAAqBhkB,UAAYA,GACjC,UCpCA,SAASokB,GAAgB/d,GACrB,MAAO6a,EAAeC,IAAoB/f,EAAAA,EAAAA,WAAS,GAC7CggB,GAAmBhJ,EAAAA,EAAAA,WAClBiE,EAAW2D,IAAgB5e,EAAAA,EAAAA,WAAS,IAEpCijB,EAAWC,IAAgBljB,EAAAA,EAAAA,UAAS,OACpCmjB,EAAOC,IAAYpjB,EAAAA,EAAAA,UAAS,OAC5BqjB,EAAMC,IAAWtjB,EAAAA,EAAAA,UAAS,OAC1BujB,EAAQC,IAAaxjB,EAAAA,EAAAA,UAAS,MA2BrC,OACIwB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACK,EAAAA,GAAM,CACHC,aA5BUse,KAClBL,GAAiB,EAAK,EA4Bd5d,KAAK,YACLke,UAAWL,EACXve,UAAU,iBACVgiB,YAAaxI,EACbpW,SAAUoW,IAEdzZ,EAAAA,cAAC8e,GAAAA,GAAK,CAAClf,GAAG,oBACNW,WAAYA,IAAMge,GAAiB,GACnCS,WAAW,EACXE,gBAAgB,EAChBD,SAAUX,EACVS,WAAW,qDAEX/e,EAAAA,cAAA,QAAMJ,GAAG,QAAQ4B,KAAK,QAAQ8B,OAAO,OAAOd,OAAQif,EAAWzf,OAAO,QAClEhC,EAAAA,cAAA,SAAOuD,KAAK,SAAS/B,KAAK,SAAS1B,MAAO6hB,IAC1C3hB,EAAAA,cAAA,SAAOuD,KAAK,SAAS/B,KAAK,OAAO1B,MAAO+hB,IACxC7hB,EAAAA,cAAA,SAAOuD,KAAK,SAAS/B,KAAK,UAAU1B,MAAOiiB,IAC3C/hB,EAAAA,cAAA,SAAG,iIACHA,EAAAA,cAAA,SAAG,YACHA,EAAAA,cAAA,SAAG,ubAIHA,EAAAA,cAAA,SAAG,8KACHA,EAAAA,cAAA,WACAA,EAAAA,cAAA,OAAKC,UAAU,iDACXD,EAAAA,cAAA,SAAOC,UAAU,0BAA0BsD,KAAK,SAASzD,MAAM,WAAW4e,QAASA,KAlDnGtB,GAAa,QACbhb,IAAAA,KACU,8DAAgEqB,EAAMye,eAC3E7f,MAAKC,IACF,IAAI7B,EAAO6B,EAAS7B,KACpBihB,EAAajhB,EAAK0hB,QAClBP,EAASnhB,EAAKkhB,OACdG,EAAQrhB,EAAKohB,MACbG,EAAUvhB,EAAKshB,OAAO,IAEzB9e,OAAM,KACHma,GAAa,EAAM,IAEtBgF,SAAQ,KACLtf,SAASuf,eAAe,SAASrf,SACjCub,GAAiB,GACjBnB,GAAa,EAAM,UAwCnC,CAEAoE,GAAgBvc,aA7EK,CACjBkZ,WAAW,GA6Ef,UCxEA,IAAImE,GAAyBA,KxBwB7B,IAA2Bjd,IwBvBL,CACdnH,sBAAqB,EACrBke,WAAU,GACV5Y,UAAS,EACTiZ,UAAS,GACTO,mBAAkB,GAClBoE,qBAAoB,GACpB/C,2BAA0B,GAC1BmD,gBAAeA,IxBgBG,oBAAX/e,QAEP0C,EADmBuB,MAAMC,KAAK7D,SAAS8D,iBAAiB,2BAC3BvB,EwBjB/B,EAGN5C,OAAOqM,IAAMrM,OAAOqM,KAAO,CAAC,EAC5BrM,OAAOqM,IAAIwT,uBAAyBA,GAGpCA,KAEI7f,OAAOqM,IAAI6C,QACXlP,OAAOqM,IAAI6C,MAAM4Q,UAAU,6BAA8B3U,GAAwByQ,KACjF5b,OAAOqM,IAAI6C,MAAM4Q,UAAU,uBAAwB3U,GAAwBwT,yCC9B/E,IAAIoB,EAAU,EAAQ,MAMlBC,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd3d,cAAc,EACd4d,aAAa,EACbC,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACR7lB,WAAW,EACXmG,MAAM,GAEJ2f,EAAgB,CAClB1hB,MAAM,EACNnD,QAAQ,EACR8kB,WAAW,EACXC,QAAQ,EACRC,QAAQ,EACRlS,WAAW,EACXmS,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTve,cAAc,EACd4d,aAAa,EACbzlB,WAAW,EACXmG,MAAM,GAEJkgB,EAAe,CAAC,EAIpB,SAASC,EAAW5d,GAElB,OAAI0c,EAAQmB,OAAO7d,GACVyd,EAIFE,EAAa3d,EAAoB,WAAM2c,CAChD,CAXAgB,EAAajB,EAAQoB,YAhBK,CACxB,UAAY,EACZC,QAAQ,EACR5e,cAAc,EACd4d,aAAa,EACbzlB,WAAW,GAYbqmB,EAAajB,EAAQsB,MAAQP,EAY7B,IAAIQ,EAAiBld,OAAOkd,eACxBC,EAAsBnd,OAAOmd,oBAC7BC,EAAwBpd,OAAOod,sBAC/BC,EAA2Brd,OAAOqd,yBAClCC,EAAiBtd,OAAOsd,eACxBC,EAAkBvd,OAAOsc,UAsC7BkB,EAAOC,QArCP,SAASC,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,iBAApBD,EAA8B,CAEvC,GAAIL,EAAiB,CACnB,IAAIO,EAAqBR,EAAeM,GAEpCE,GAAsBA,IAAuBP,GAC/CG,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAInQ,EAAOyP,EAAoBS,GAE3BR,IACF1P,EAAOA,EAAKqQ,OAAOX,EAAsBQ,KAM3C,IAHA,IAAII,EAAgBnB,EAAWc,GAC3BM,EAAgBpB,EAAWe,GAEtB7Z,EAAI,EAAGA,EAAI2J,EAAKlW,SAAUuM,EAAG,CACpC,IAAIkO,EAAMvE,EAAK3J,GAEf,KAAKsY,EAAcpK,IAAU4L,GAAaA,EAAU5L,IAAWgM,GAAiBA,EAAchM,IAAW+L,GAAiBA,EAAc/L,IAAO,CAC7I,IAAIiM,EAAab,EAAyBO,EAAiB3L,GAE3D,IAEEiL,EAAeS,EAAiB1L,EAAKiM,EACvC,CAAE,MAAOjjB,GAAI,CACf,CACF,CACF,CAEA,OAAO0iB,CACT,wBCpGA,IAGIQ,EAHO,EAAQ,MAGDA,OAElBX,EAAOC,QAAUU,wBCLjB,IAAIA,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAOzBC,EAAiBH,EAASA,EAAOI,iBAAcvf,EAkBnDwe,EAAOC,QATP,SAAoBxkB,GAClB,OAAa,MAATA,OACe+F,IAAV/F,EAdQ,qBADL,gBAiBJqlB,GAAkBA,KAAkBte,OAAO/G,GAC/CmlB,EAAUnlB,GACVolB,EAAeplB,EACrB,wBCzBA,IAAIulB,EAAkB,EAAQ,MAG1BC,EAAc,OAelBjB,EAAOC,QANP,SAAkBiB,GAChB,OAAOA,EACHA,EAAOhM,MAAM,EAAG8L,EAAgBE,GAAU,GAAGC,QAAQF,EAAa,IAClEC,CACN,wBCfA,IAAIE,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAO7e,SAAWA,QAAU,EAAA6e,EAEpFrB,EAAOC,QAAUmB,wBCHjB,IAAIT,EAAS,EAAQ,MAGjBW,EAAc9e,OAAOsc,UAGrByC,EAAiBD,EAAYC,eAO7BC,EAAuBF,EAAY5lB,SAGnColB,EAAiBH,EAASA,EAAOI,iBAAcvf,EA6BnDwe,EAAOC,QApBP,SAAmBxkB,GACjB,IAAIgmB,EAAQF,EAAeG,KAAKjmB,EAAOqlB,GACnCa,EAAMlmB,EAAMqlB,GAEhB,IACErlB,EAAMqlB,QAAkBtf,EACxB,IAAIogB,GAAW,CACjB,CAAE,MAAOnkB,GAAI,CAEb,IAAI8Q,EAASiT,EAAqBE,KAAKjmB,GAQvC,OAPImmB,IACEH,EACFhmB,EAAMqlB,GAAkBa,SAEjBlmB,EAAMqlB,IAGVvS,CACT,oBC1CA,IAOIiT,EAPchf,OAAOsc,UAOcpjB,SAavCskB,EAAOC,QAJP,SAAwBxkB,GACtB,OAAO+lB,EAAqBE,KAAKjmB,EACnC,wBCnBA,IAAI2lB,EAAa,EAAQ,MAGrBS,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKtf,SAAWA,QAAUsf,KAGxEC,EAAOX,GAAcS,GAAYG,SAAS,cAATA,GAErChC,EAAOC,QAAU8B,oBCPjB,IAAIE,EAAe,KAiBnBjC,EAAOC,QAPP,SAAyBiB,GAGvB,IAFA,IAAI1N,EAAQ0N,EAAOlnB,OAEZwZ,KAAWyO,EAAaC,KAAKhB,EAAOiB,OAAO3O,MAClD,OAAOA,CACT,wBChBA,IAAI4O,EAAW,EAAQ,MACnBC,EAAM,EAAQ,MACdC,EAAW,EAAQ,MAMnBC,EAAYzd,KAAK0d,IACjBC,EAAY3d,KAAKM,IAqLrB4a,EAAOC,QA7HP,SAAkByC,EAAMC,EAAM3pB,GAC5B,IAAI4pB,EACAC,EACAC,EACAvU,EACAwU,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIW,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIxV,EAAO6U,EACPY,EAAUX,EAKd,OAHAD,EAAWC,OAAWrhB,EACtByhB,EAAiBM,EACjBhV,EAASmU,EAAKzU,MAAMuV,EAASzV,EAE/B,CAqBA,SAAS0V,EAAaF,GACpB,IAAIG,EAAoBH,EAAOP,EAM/B,YAAyBxhB,IAAjBwhB,GAA+BU,GAAqBf,GACzDe,EAAoB,GAAOP,GANJI,EAAON,GAM8BH,CACjE,CAEA,SAASa,IACP,IAAIJ,EAAOlB,IACX,GAAIoB,EAAaF,GACf,OAAOK,EAAaL,GAGtBR,EAAUvkB,WAAWmlB,EA3BvB,SAAuBJ,GACrB,IAEIM,EAAclB,GAFMY,EAAOP,GAI/B,OAAOG,EACHV,EAAUoB,EAAaf,GAJDS,EAAON,IAK7BY,CACN,CAmBqCC,CAAcP,GACnD,CAEA,SAASK,EAAaL,GAKpB,OAJAR,OAAUvhB,EAIN4hB,GAAYR,EACPU,EAAWC,IAEpBX,EAAWC,OAAWrhB,EACf+M,EACT,CAcA,SAASwV,IACP,IAAIR,EAAOlB,IACP2B,EAAaP,EAAaF,GAM9B,GAJAX,EAAW9V,UACX+V,EAAWoB,KACXjB,EAAeO,EAEXS,EAAY,CACd,QAAgBxiB,IAAZuhB,EACF,OAzEN,SAAqBQ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUvkB,WAAWmlB,EAAchB,GAE5BO,EAAUI,EAAWC,GAAQhV,CACtC,CAkEa2V,CAAYlB,GAErB,GAAIG,EAIF,OAFAxR,aAAaoR,GACbA,EAAUvkB,WAAWmlB,EAAchB,GAC5BW,EAAWN,EAEtB,CAIA,YAHgBxhB,IAAZuhB,IACFA,EAAUvkB,WAAWmlB,EAAchB,IAE9BpU,CACT,CAGA,OA3GAoU,EAAOL,EAASK,IAAS,EACrBP,EAASppB,KACXkqB,IAAYlqB,EAAQkqB,QAEpBJ,GADAK,EAAS,YAAanqB,GACHupB,EAAUD,EAAStpB,EAAQ8pB,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcpqB,IAAYA,EAAQoqB,SAAWA,GAoG1DW,EAAUI,OApCV,gBACkB3iB,IAAZuhB,GACFpR,aAAaoR,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUvhB,CACjD,EA+BAuiB,EAAUK,MA7BV,WACE,YAAmB5iB,IAAZuhB,EAAwBxU,EAASqV,EAAavB,IACvD,EA4BO0B,CACT,oBC9JA/D,EAAOC,QALP,SAAkBxkB,GAChB,IAAIyD,SAAczD,EAClB,OAAgB,MAATA,IAA0B,UAARyD,GAA4B,YAARA,EAC/C,oBCAA8gB,EAAOC,QAJP,SAAsBxkB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,wBC1BA,IAAI4oB,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MA2B3BtE,EAAOC,QALP,SAAkBxkB,GAChB,MAAuB,iBAATA,GACX6oB,EAAa7oB,IArBF,mBAqBY4oB,EAAW5oB,EACvC,wBC1BA,IAAIsmB,EAAO,EAAQ,MAsBnB/B,EAAOC,QAJG,WACR,OAAO8B,EAAKwC,KAAKlC,KACnB,wBCpBA,IAAImC,EAAW,EAAQ,MACnBpC,EAAW,EAAQ,MAmEvBpC,EAAOC,QAlBP,SAAkByC,EAAMC,EAAM3pB,GAC5B,IAAIkqB,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIW,UAnDQ,uBAyDpB,OAJIjB,EAASppB,KACXkqB,EAAU,YAAalqB,IAAYA,EAAQkqB,QAAUA,EACrDE,EAAW,aAAcpqB,IAAYA,EAAQoqB,SAAWA,GAEnDoB,EAAS9B,EAAMC,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,GAEhB,wBClEA,IAAIqB,EAAW,EAAQ,MACnBrC,EAAW,EAAQ,MACnBsC,EAAW,EAAQ,MAMnBC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA8CnB/E,EAAOC,QArBP,SAAkBxkB,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIipB,EAASjpB,GACX,OA1CM,IA4CR,GAAI2mB,EAAS3mB,GAAQ,CACnB,IAAIupB,EAAgC,mBAAjBvpB,EAAMwpB,QAAwBxpB,EAAMwpB,UAAYxpB,EACnEA,EAAQ2mB,EAAS4C,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAATvpB,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQgpB,EAAShpB,GACjB,IAAIypB,EAAWN,EAAW1C,KAAKzmB,GAC/B,OAAQypB,GAAYL,EAAU3C,KAAKzmB,GAC/BqpB,EAAarpB,EAAMyZ,MAAM,GAAIgQ,EAAW,EAAI,GAC3CP,EAAWzC,KAAKzmB,GAvDb,KAuD6BA,CACvC,qEC7DA,IAAI0pB,EAAYnZ,OAAOoZ,OACnB,SAAkB3pB,GACd,MAAwB,iBAAVA,GAAsBA,GAAUA,CAClD,EAUJ,SAAS4pB,EAAeC,EAAWC,GAC/B,GAAID,EAAUtrB,SAAWurB,EAAWvrB,OAChC,OAAO,EAEX,IAAK,IAAIuM,EAAI,EAAGA,EAAI+e,EAAUtrB,OAAQuM,IAClC,MAdSif,EAcIF,EAAU/e,OAdPkf,EAcWF,EAAWhf,KAVtC4e,EAAUK,IAAUL,EAAUM,IAW1B,OAAO,EAfnB,IAAiBD,EAAOC,EAkBpB,OAAO,CACX,CAEA,SAASC,EAAWC,EAAUC,QACV,IAAZA,IAAsBA,EAAUP,GACpC,IAAIQ,EAAQ,KACZ,SAASC,IAEL,IADA,IAAIC,EAAU,GACLC,EAAK,EAAGA,EAAKlZ,UAAU9S,OAAQgsB,IACpCD,EAAQC,GAAMlZ,UAAUkZ,GAE5B,GAAIH,GAASA,EAAMhD,WAAaoB,MAAQ2B,EAAQG,EAASF,EAAMjD,UAC3D,OAAOiD,EAAMI,WAEjB,IAAIA,EAAaN,EAAS1X,MAAMgW,KAAM8B,GAMtC,OALAF,EAAQ,CACJI,WAAYA,EACZrD,SAAUmD,EACVlD,SAAUoB,MAEPgC,CACX,CAIA,OAHAH,EAASI,MAAQ,WACbL,EAAQ,IACZ,EACOC,CACX,iCCxCA,IAAIlG,EAAwBpd,OAAOod,sBAC/B2B,EAAiB/e,OAAOsc,UAAUyC,eAClC4E,EAAmB3jB,OAAOsc,UAAUsH,qBAsDxCpG,EAAOC,QA5CP,WACC,IACC,IAAKzd,OAAO4E,OACX,OAAO,EAMR,IAAIif,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzC7jB,OAAOmd,oBAAoB0G,GAAO,GACrC,OAAO,EAKR,IADA,IAAIE,EAAQ,CAAC,EACJhgB,EAAI,EAAGA,EAAI,GAAIA,IACvBggB,EAAM,IAAMD,OAAOE,aAAajgB,IAAMA,EAKvC,GAAwB,eAHX/D,OAAOmd,oBAAoB4G,GAAOvrB,KAAI,SAAUmI,GAC5D,OAAOojB,EAAMpjB,EACd,IACWsjB,KAAK,IACf,OAAO,EAIR,IAAIC,EAAQ,CAAC,EAIb,MAHA,uBAAuBC,MAAM,IAAI1lB,SAAQ,SAAU2lB,GAClDF,EAAME,GAAUA,CACjB,IAEE,yBADEpkB,OAAO0N,KAAK1N,OAAO4E,OAAO,CAAC,EAAGsf,IAAQD,KAAK,GAMhD,CAAE,MAAOI,GAER,OAAO,CACR,CACD,CAEiBC,GAAoBtkB,OAAO4E,OAAS,SAAUzJ,EAAQopB,GAKtE,IAJA,IAAIzkB,EAEA0kB,EADAC,EAtDL,SAAkB1c,GACjB,GAAIA,QACH,MAAM,IAAI8Y,UAAU,yDAGrB,OAAO7gB,OAAO+H,EACf,CAgDU2c,CAASvpB,GAGTwpB,EAAI,EAAGA,EAAIra,UAAU9S,OAAQmtB,IAAK,CAG1C,IAAK,IAAI1S,KAFTnS,EAAOE,OAAOsK,UAAUqa,IAGnB5F,EAAeG,KAAKpf,EAAMmS,KAC7BwS,EAAGxS,GAAOnS,EAAKmS,IAIjB,GAAImL,EAAuB,CAC1BoH,EAAUpH,EAAsBtd,GAChC,IAAK,IAAIiE,EAAI,EAAGA,EAAIygB,EAAQhtB,OAAQuM,IAC/B4f,EAAiBzE,KAAKpf,EAAM0kB,EAAQzgB,MACvC0gB,EAAGD,EAAQzgB,IAAMjE,EAAK0kB,EAAQzgB,IAGjC,CACD,CAEA,OAAO0gB,CACR,yCCvFIzT,UAAS4T,gBAEb,0ECJ6lFtiB,KAAKM,IAAMN,KAAK0d,ICAn7E,SAAS,EAAE6E,GAAG,IAAI5pB,EAAE,OAAO,OAAOA,EAAE4pB,EAAEC,oBAAe,EAAO7pB,EAAE8pB,cAAcnpB,MAAM,CAAC,SAAS,EAAEipB,GAAG,OAAO,EAAEA,GAAGG,iBAAiBH,EAAE,CAAC,SAAS,EAAEA,GAAG,OAAO,EAAEA,IAAIA,EAAEI,UAAU,IAAInV,cAAc,EAAE,CAAC,IAAI,EAA4K,SAAS,EAAE+U,GAAG,OAAOA,aAAa,EAAEA,GAAGK,WAAW,CAAC,SAAS,EAAEL,GAAG,OAAOA,aAAa,EAAEA,GAAGM,OAAO,CAAC,SAAS,EAAEN,GAAG,OAAOA,aAAa,EAAEA,GAAGO,IAAI,CAAC,SAAS,EAAEP,GAAG,MAAG,oBAAoBQ,aAA2BR,aAAa,EAAEA,GAAGQ,YAAYR,aAAaQ,WAAU,CAAC,SAAS,EAAER,GAAG,MAAMrR,SAASvY,EAAEqqB,UAAU3kB,EAAE4kB,UAAUxhB,EAAEyhB,QAAQC,GAAG,EAAEZ,GAAG,MAAM,kCAAkCnF,KAAKzkB,EAAE8I,EAAEpD,KAAK,CAAC,SAAS,YAAYqP,SAASyV,EAAE,CAA4b,SAAS,IAAI,OAAO,iCAAiC/F,KAA7jC,WAAa,GAAG,EAAE,OAAO,EAAE,MAAMmF,EAAEa,UAAUC,cAAc,OAAOd,GAAGhlB,MAAM+lB,QAAQf,EAAEgB,SAAS,EAAEhB,EAAEgB,OAAOrtB,KAAKqsB,GAAGA,EAAEiB,MAAM,IAAIjB,EAAEkB,UAAU9B,KAAK,KAAK,GAAGyB,UAAUM,SAAS,CAAy5B,GAAI,CDAg3D,CAAC,MAAM,QAAQ,SAAS,QAAYrT,QAAO,CAAEkS,EAAE5pB,IAAI4pB,EAAE9G,OAAO9iB,EAAEA,EAAE,SAASA,EAAE,SAAS,ICA53DqH,KAAKM,IAAMN,KAAK0d,IAAxB,MAA4B,EAAE1d,KAAK2jB,MAAgM,SAAS,EAAEpB,GAAG,OAAO,EAAEA,GAAGA,EAAEA,EAAEqB,cAAc,CAAC,MAAM,EAAE,CAACC,EAAE,EAAEC,EAAE,GAAG,SAAS,EAAEvB,GAAG,MAAM5pB,EAAE,EAAE4pB,GAAG,IAAI,EAAE5pB,GAAG,OAAO,EAAE,MAAM0F,EAAE1F,EAAEorB,yBAAyBtT,MAAMxB,EAAEuB,OAAO/O,EAAEsG,SAASob,GAAnW,SAAWZ,GAAG,MAAM5pB,EAAE,EAAE4pB,GAAG,IAAIlkB,EAAE2lB,WAAWrrB,EAAE8X,OAAOhP,EAAEuiB,WAAWrrB,EAAE6X,QAAQ,MAAM2S,EAAEZ,EAAE0B,YAAYC,EAAE3B,EAAE4B,aAAa1lB,EAAE,EAAEJ,KAAK8kB,GAAG,EAAE1hB,KAAKyiB,EAAE,OAAOzlB,IAAIJ,EAAE8kB,EAAE1hB,EAAEyiB,GAAG,CAACzT,MAAMpS,EAAEmS,OAAO/O,EAAEsG,SAAStJ,EAAE,CAA6K,CAAE9F,GAAG,IAAIurB,GAAGf,EAAE,EAAE9kB,EAAEoS,OAAOpS,EAAEoS,OAAOxB,EAAEoT,GAAGc,EAAE,EAAE9kB,EAAEmS,QAAQnS,EAAEmS,QAAQ/O,EAAE,OAAOyiB,GAAGhd,OAAOkd,SAASF,KAAKA,EAAE,GAAG7B,GAAGnb,OAAOkd,SAAS/B,KAAKA,EAAE,GAAG,CAACwB,EAAEK,EAAEJ,EAAEzB,EAAE,CAAC,SAAS,EAAEE,EAAE5pB,EAAEsW,EAAExN,GAAG,IAAI0hB,EAAEe,OAAE,IAASvrB,IAAIA,GAAE,QAAI,IAASsW,IAAIA,GAAE,GAAI,MAAMxQ,EAAE8jB,EAAEwB,wBAAwBM,EAAE,EAAE9B,GAAG,IAAI+B,EAAE,EAAE3rB,IAAI8I,EAAE,EAAEA,KAAK6iB,EAAE,EAAE7iB,IAAI6iB,EAAE,EAAE/B,IAAI,MAAMgC,EAAEF,EAAE,EAAEA,GAAG/qB,OAAOkrB,GAAG,KAAKvV,EAAE,IAAIwV,GAAGhmB,EAAEqS,MAAM0T,IAAI,OAAOrB,EAAEoB,EAAEG,qBAAgB,EAAOvB,EAAEwB,aAAa,IAAIL,EAAET,EAAEtH,GAAG9d,EAAEoS,KAAK2T,IAAI,OAAON,EAAEK,EAAEG,qBAAgB,EAAOR,EAAEU,YAAY,IAAIN,EAAER,EAAEe,EAAEpmB,EAAEgS,MAAM6T,EAAET,EAAEC,EAAErlB,EAAE+R,OAAO8T,EAAER,EAAE,GAAGO,EAAE,CAAC,MAAM9B,EAAE,EAAE8B,GAAG1rB,EAAE8I,GAAG,EAAEA,GAAG,EAAEA,GAAGA,EAAE,IAAIwN,EAAEsT,EAAEuC,aAAa,KAAK7V,GAAGxN,GAAG9I,IAAI4pB,GAAG,CAAC,MAAMA,EAAE,EAAEtT,GAAGtW,EAAEsW,EAAE8U,wBAAwBtiB,EAAEihB,iBAAiBzT,GAAGtW,EAAEkrB,IAAI5U,EAAE8V,WAAWf,WAAWviB,EAAEujB,cAAczC,EAAEsB,EAAElrB,EAAEmrB,IAAI7U,EAAEgW,UAAUjB,WAAWviB,EAAEyjB,aAAa3C,EAAEuB,EAAEW,GAAGlC,EAAEsB,EAAEtH,GAAGgG,EAAEuB,EAAEe,GAAGtC,EAAEsB,EAAEC,GAAGvB,EAAEuB,EAAEW,GAAG9rB,EAAEkrB,EAAEtH,GAAG5jB,EAAEmrB,EAAE7U,EAAE,EAAEA,GAAG6V,YAAY,CAAC,CAAC,MAAM,CAACrU,MAAMoU,EAAErU,OAAOsT,EAAEjT,IAAI0L,EAAE4I,MAAMV,EAAEI,EAAEO,OAAO7I,EAAEuH,EAAEhT,KAAK2T,EAAEZ,EAAEY,EAAEX,EAAEvH,EAAE,CAA6lB,SAAS8I,EAAE9C,GAAG,GAAG,SAAS,EAAEA,GAAG,OAAOA,EAAE,MAAM5pB,EAAE4pB,EAAE+C,cAAc/C,EAAEgD,aAAa,EAAEhD,GAAGA,EAAEiD,KAAK,OAAvrB,SAAWjD,GAAG,QAAQ,EAAEA,GAAGA,EAAEC,cAAcD,EAAE5oB,WAAWL,OAAOK,UAAU8rB,eAAe,CAAsmB,CAAElD,GAAG,OAAO,EAAE5pB,GAAGA,EAAE6sB,KAAK7sB,CAAC,CAAiU,SAAS,EAAE4pB,GAAG,MAAM5pB,EAAE0sB,EAAE9C,GAAG,OAA31E,SAAWA,GAAG,MAAM,CAAC,OAAO,OAAO,aAAa7U,SAAS,EAAE6U,GAAG,CAAoyE,CAAE5pB,GAAG4pB,EAAEC,cAAc3kB,KAAK,EAAElF,IAAI,EAAEA,GAAGA,EAAE,EAAEA,EAAE,CAAC,SAAS+sB,EAAEnD,EAAE5pB,GAAG,IAAIsW,OAAE,IAAStW,IAAIA,EAAE,IAAI,MAAM8I,EAAE,EAAE8gB,GAAGY,EAAE1hB,KAAK,OAAOwN,EAAEsT,EAAEC,oBAAe,EAAOvT,EAAEpR,MAAMqmB,EAAE,EAAEziB,GAAG,OAAO0hB,EAAExqB,EAAE8iB,OAAOyI,EAAEA,EAAEQ,gBAAgB,GAAG,EAAEjjB,GAAGA,EAAE,IAAI9I,EAAE8iB,OAAOha,EAAEikB,EAAEjkB,GAAG,CAAm3E,SAASkkB,EAAEpD,EAAE5pB,EAAE0F,EAAE4Q,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,MAAM2W,eAAenkB,GAAE,EAAGokB,eAAe1C,GAAE,EAAG2C,cAAc5B,GAAE,EAAG6B,eAAetnB,GAAE,GAAIwQ,EAAEoV,EAAE5iB,IAAIhD,EAAE6lB,EAAED,GAAGlB,EAAE,IAAI,EAAEZ,GAAGmD,EAAEnD,GAAGA,EAAEqB,eAAe8B,EAAEnD,EAAEqB,gBAAgB,MAAM8B,EAAE/sB,IAAI,GAAG2rB,EAAEnoB,SAASomB,IAAI8B,GAAG9B,EAAEzS,iBAAiB,SAASzR,EAAE,CAAC2nB,SAAQ,IAAK7C,GAAGZ,EAAEzS,iBAAiB,SAASzR,EAAG,IAAG,IAAIkmB,EAAEC,EAAE,KAAK,GAAGN,EAAE,CAAC,IAAIjV,GAAE,EAAGuV,EAAE,IAAIyB,gBAAe,KAAMhX,GAAG5Q,IAAI4Q,GAAE,CAAG,IAAG,EAAEsT,KAAK9jB,GAAG+lB,EAAE5mB,QAAQ2kB,GAAG,EAAEA,KAAKA,EAAEqB,gBAAgBnlB,GAAG+lB,EAAE5mB,QAAQ2kB,EAAEqB,gBAAgBY,EAAE5mB,QAAQjF,EAAE,CAAC,IAAI8rB,EAAEhmB,EAAE,EAAE8jB,GAAG,KAAK,OAAO9jB,GAAG,SAAS9F,IAAI,MAAMsW,EAAE,EAAEsT,IAAIkC,GAAGxV,EAAE4U,IAAIY,EAAEZ,GAAG5U,EAAE6U,IAAIW,EAAEX,GAAG7U,EAAEwB,QAAQgU,EAAEhU,OAAOxB,EAAEuB,SAASiU,EAAEjU,QAAQnS,IAAIomB,EAAExV,EAAEsV,EAAE2B,sBAAsBvtB,EAAE,CAA9H,GAAkI0F,IAAI,KAAK,IAAIkkB,EAAE+B,EAAEnoB,SAASomB,IAAI8B,GAAG9B,EAAEvS,oBAAoB,SAAS3R,GAAG8kB,GAAGZ,EAAEvS,oBAAoB,SAAS3R,EAAG,IAAG,OAAOkkB,EAAEiC,IAAIjC,EAAE4D,aAAa3B,EAAE,KAAK/lB,GAAG2nB,qBAAqB7B,EAAC,CAAE,qCCAnoO,SAAS8B,EAAgBphB,EAAK0K,EAAKhZ,GAYhD,OAXIgZ,KAAO1K,EACTvH,OAAOkd,eAAe3V,EAAK0K,EAAK,CAC9BhZ,MAAOA,EACP2vB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZvhB,EAAI0K,GAAOhZ,EAGNsO,CACT,6QCbO,IAAIwhB,EAAK,OACLC,EAAM,QACNC,EAAS,WAETC,EAAU,OACVC,EAAU,OACVC,EAAc,OAIdC,EAAS,UAMTC,EAAY,uHCNhB,SAASC,EAAYC,GAC3B,IAAIhyB,GAAS,QAAOgyB,GAEpB,OAAO,SAAUrqB,EAAS6R,EAAOxE,EAAUwC,GAG1C,IAFA,IAAIya,EAAS,GAEJ1lB,EAAI,EAAGA,EAAIvM,EAAQuM,IAC3B0lB,GAAUD,EAAWzlB,GAAG5E,EAAS6R,EAAOxE,EAAUwC,IAAa,GAEhE,OAAOya,CACR,CACD,CAMO,SAASC,EAAW1a,GAC1B,OAAO,SAAU7P,GACXA,EAAQogB,OACRpgB,EAAUA,EAAQwqB,SACrB3a,EAAS7P,EACZ,CACD,wGCzBO,SAASyqB,EAAS3wB,GACxB,OAAO,QAAQ8F,EAAM,GAAI,KAAM,KAAM,KAAM,CAAC,IAAK9F,GAAQ,QAAMA,GAAQ,EAAG,CAAC,GAAIA,GAChF,CAcO,SAAS8F,EAAO9F,EAAOsmB,EAAMsK,EAAQC,EAAMC,EAAOC,EAAUC,EAAQC,EAAQC,GAiBlF,IAhBA,IAAInZ,EAAQ,EACRoZ,EAAS,EACT5yB,EAASyyB,EACTI,EAAS,EACTC,EAAW,EACXC,EAAW,EACXC,EAAW,EACXC,EAAW,EACXC,EAAY,EACZC,EAAY,EACZjuB,EAAO,GACPE,EAAQmtB,EACRvd,EAAWwd,EACXY,EAAYd,EACZe,EAAanuB,EAEV+tB,UACEF,EAAWI,EAAWA,GAAY,WAEzC,KAAK,GACJ,GAAgB,KAAZJ,GAAqD,KAAlC,QAAOM,EAAYrzB,EAAS,GAAU,EACkB,IAA1E,QAAQqzB,IAAc,SAAQ,QAAQF,GAAY,IAAK,OAAQ,SAClED,GAAa,GACd,KACD,CAED,KAAK,GAAI,KAAK,GAAI,KAAK,GACtBG,IAAc,QAAQF,GACtB,MAED,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GAC9BE,IAAc,QAAWN,GACzB,MAED,KAAK,GACJM,IAAc,SAAS,UAAU,EAAG,GACpC,SAED,KAAK,GACJ,QAAQ,WACP,KAAK,GAAI,KAAK,IACb,QAAOC,GAAQ,SAAU,WAAQ,WAAUvL,EAAMsK,GAASM,GAC1D,MACD,QACCU,GAAc,IAEhB,MAED,KAAK,IAAML,EACVN,EAAOlZ,MAAW,QAAO6Z,GAAcH,EAExC,KAAK,IAAMF,EAAU,KAAK,GAAI,KAAK,EAClC,OAAQG,GAEP,KAAK,EAAG,KAAK,IAAKF,EAAW,EAE7B,KAAK,GAAKL,EACLE,EAAW,IAAM,QAAOO,GAAcrzB,IACzC,QAAO8yB,EAAW,GAAKS,EAAYF,EAAa,IAAKf,EAAMD,EAAQryB,EAAS,GAAKuzB,GAAY,QAAQF,EAAY,IAAK,IAAM,IAAKf,EAAMD,EAAQryB,EAAS,GAAI2yB,GAC7J,MAED,KAAK,GAAIU,GAAc,IAEvB,QAGC,IAFA,QAAOD,EAAYI,EAAQH,EAAYtL,EAAMsK,EAAQ7Y,EAAOoZ,EAAQL,EAAOG,EAAQxtB,EAAME,EAAQ,GAAI4P,EAAW,GAAIhV,GAASwyB,GAE3G,MAAdW,EACH,GAAe,IAAXP,EACHrrB,EAAM8rB,EAAYtL,EAAMqL,EAAWA,EAAWhuB,EAAOotB,EAAUxyB,EAAQ0yB,EAAQ1d,QAE/E,OAAmB,KAAX6d,GAA2C,OAA1B,QAAOQ,EAAY,GAAa,IAAMR,GAE9D,KAAK,IAAK,KAAK,IAAK,KAAK,IACxBtrB,EAAM9F,EAAO2xB,EAAWA,EAAWd,IAAQ,QAAOkB,EAAQ/xB,EAAO2xB,EAAWA,EAAW,EAAG,EAAGb,EAAOG,EAAQxtB,EAAMqtB,EAAOntB,EAAQ,GAAIpF,GAASgV,GAAWud,EAAOvd,EAAUhV,EAAQ0yB,EAAQJ,EAAOltB,EAAQ4P,GACzM,MACD,QACCzN,EAAM8rB,EAAYD,EAAWA,EAAWA,EAAW,CAAC,IAAKpe,EAAU,EAAG0d,EAAQ1d,IAIpFwE,EAAQoZ,EAASE,EAAW,EAAGE,EAAWE,EAAY,EAAGhuB,EAAOmuB,EAAa,GAAIrzB,EAASyyB,EAC1F,MAED,KAAK,GACJzyB,EAAS,GAAI,QAAOqzB,GAAaP,EAAWC,EAC7C,QACC,GAAIC,EAAW,EACd,GAAiB,KAAbG,IACDH,OACE,GAAiB,KAAbG,GAAkC,GAAdH,KAA6B,MAAV,UAC/C,SAEF,OAAQK,IAAc,QAAKF,GAAYA,EAAYH,GAElD,KAAK,GACJE,EAAYN,EAAS,EAAI,GAAKS,GAAc,MAAO,GACnD,MAED,KAAK,GACJX,EAAOlZ,OAAY,QAAO6Z,GAAc,GAAKH,EAAWA,EAAY,EACpE,MAED,KAAK,GAEW,MAAX,YACHG,IAAc,SAAQ,YAEvBR,GAAS,UAAQD,EAAS5yB,GAAS,QAAOkF,EAAOmuB,IAAc,SAAW,YAAWF,IACrF,MAED,KAAK,GACa,KAAbJ,GAAyC,IAAtB,QAAOM,KAC7BL,EAAW,IAIjB,OAAOR,CACR,CAgBO,SAASgB,EAAS/xB,EAAOsmB,EAAMsK,EAAQ7Y,EAAOoZ,EAAQL,EAAOG,EAAQxtB,EAAME,EAAO4P,EAAUhV,GAKlG,IAJA,IAAIyzB,EAAOb,EAAS,EAChBN,EAAkB,IAAXM,EAAeL,EAAQ,CAAC,IAC/BtqB,GAAO,QAAOqqB,GAET/lB,EAAI,EAAGmnB,EAAI,EAAGC,EAAI,EAAGpnB,EAAIiN,IAASjN,EAC1C,IAAK,IAAIoiB,EAAI,EAAGC,GAAI,QAAOntB,EAAOgyB,EAAO,EAAGA,GAAO,QAAIC,EAAIhB,EAAOnmB,KAAMkkB,EAAIhvB,EAAOktB,EAAI1mB,IAAQ0mB,GAC1F8B,GAAI,QAAKiD,EAAI,EAAIpB,EAAK3D,GAAK,IAAMC,GAAI,QAAQA,EAAG,OAAQ0D,EAAK3D,QAChEvpB,EAAMuuB,KAAOlD,GAEhB,OAAO,QAAKhvB,EAAOsmB,EAAMsK,EAAmB,IAAXO,EAAe,KAAU1tB,EAAME,EAAO4P,EAAUhV,EAClF,CAQO,SAASszB,EAAS7xB,EAAOsmB,EAAMsK,GACrC,OAAO,QAAK5wB,EAAOsmB,EAAMsK,EAAQ,MAAS,SAAK,YAAS,QAAO5wB,EAAO,GAAI,GAAI,EAC/E,CASO,SAAS8xB,EAAa9xB,EAAOsmB,EAAMsK,EAAQryB,GACjD,OAAO,QAAKyB,EAAOsmB,EAAMsK,EAAQ,MAAa,QAAO5wB,EAAO,EAAGzB,IAAS,QAAOyB,EAAOzB,EAAS,GAAI,GAAIA,EACxG,oHCtLO,SAAS4zB,EAAW5e,EAAUwC,GAIpC,IAHA,IAAIya,EAAS,GACTjyB,GAAS,QAAOgV,GAEXzI,EAAI,EAAGA,EAAIvM,EAAQuM,IAC3B0lB,GAAUza,EAASxC,EAASzI,GAAIA,EAAGyI,EAAUwC,IAAa,GAE3D,OAAOya,CACR,CASO,SAAStkB,EAAWhG,EAAS6R,EAAOxE,EAAUwC,GACpD,OAAQ7P,EAAQzC,MACf,KAAK,KAAQ,KAAK,KAAa,OAAOyC,EAAQwqB,OAASxqB,EAAQwqB,QAAUxqB,EAAQlG,MACjF,KAAK,KAAS,MAAO,GACrB,KAAK,KAAW,OAAOkG,EAAQwqB,OAASxqB,EAAQlG,MAAQ,IAAMmyB,EAAUjsB,EAAQqN,SAAUwC,GAAY,IACtG,KAAK,KAAS7P,EAAQlG,MAAQkG,EAAQvC,MAAMqnB,KAAK,KAGlD,OAAO,QAAOzX,EAAW4e,EAAUjsB,EAAQqN,SAAUwC,IAAa7P,EAAQwqB,OAASxqB,EAAQlG,MAAQ,IAAMuT,EAAW,IAAM,EAC3H,mdChCW6e,EAAO,EACPC,EAAS,EACT9zB,EAAS,EACTwb,EAAW,EACX2X,EAAY,EACZE,EAAa,GAWjB,SAASU,EAAMtyB,EAAOsmB,EAAMsK,EAAQntB,EAAME,EAAO4P,EAAUhV,GACjE,MAAO,CAACyB,MAAOA,EAAOsmB,KAAMA,EAAMsK,OAAQA,EAAQntB,KAAMA,EAAME,MAAOA,EAAO4P,SAAUA,EAAU6e,KAAMA,EAAMC,OAAQA,EAAQ9zB,OAAQA,EAAQmyB,OAAQ,GACrJ,CAOO,SAAS6B,EAAMjM,EAAM3iB,GAC3B,OAAO,QAAO2uB,EAAK,GAAI,KAAM,KAAM,GAAI,KAAM,KAAM,GAAIhM,EAAM,CAAC/nB,QAAS+nB,EAAK/nB,QAASoF,EACtF,CAKO,SAAS6uB,IACf,OAAOd,CACR,CAKO,SAASe,IAMf,OALAf,EAAY3X,EAAW,GAAI,QAAO6X,IAAc7X,GAAY,EAExDsY,IAAwB,KAAdX,IACbW,EAAS,EAAGD,KAENV,CACR,CAKO,SAASgB,IAMf,OALAhB,EAAY3X,EAAWxb,GAAS,QAAOqzB,EAAY7X,KAAc,EAE7DsY,IAAwB,KAAdX,IACbW,EAAS,EAAGD,KAENV,CACR,CAKO,SAASiB,IACf,OAAO,QAAOf,EAAY7X,EAC3B,CAKO,SAAS6Y,IACf,OAAO7Y,CACR,CAOO,SAASN,EAAOoZ,EAAOhoB,GAC7B,OAAO,QAAO+mB,EAAYiB,EAAOhoB,EAClC,CAMO,SAASU,EAAO9H,GACtB,OAAQA,GAEP,KAAK,EAAG,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GACtC,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,IAE3D,KAAK,GAAI,KAAK,IAAK,KAAK,IACvB,OAAO,EAER,KAAK,GACJ,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAC/B,OAAO,EAER,KAAK,GAAI,KAAK,GACb,OAAO,EAGT,OAAO,CACR,CAMO,SAASqvB,EAAO9yB,GACtB,OAAOoyB,EAAOC,EAAS,EAAG9zB,GAAS,QAAOqzB,EAAa5xB,GAAQ+Z,EAAW,EAAG,EAC9E,CAMO,SAASgZ,EAAS/yB,GACxB,OAAO4xB,EAAa,GAAI5xB,CACzB,CAMO,SAASgzB,EAASvvB,GACxB,OAAO,QAAKgW,EAAMM,EAAW,EAAGkZ,EAAmB,KAATxvB,EAAcA,EAAO,EAAa,KAATA,EAAcA,EAAO,EAAIA,IAC7F,CAcO,SAASyvB,EAAYzvB,GAC3B,MAAOiuB,EAAYiB,MACdjB,EAAY,IACfgB,IAIF,OAAOnnB,EAAM9H,GAAQ,GAAK8H,EAAMmmB,GAAa,EAAI,GAAK,GACvD,CAwBO,SAASyB,EAAUpb,EAAOqb,GAChC,OAASA,GAASV,OAEbhB,EAAY,IAAMA,EAAY,KAAQA,EAAY,IAAMA,EAAY,IAAQA,EAAY,IAAMA,EAAY,MAG/G,OAAOjY,EAAM1B,EAAO6a,KAAWQ,EAAQ,GAAe,IAAVT,KAA0B,IAAVD,KAC7D,CAMO,SAASO,EAAWxvB,GAC1B,KAAOivB,YACEhB,GAEP,KAAKjuB,EACJ,OAAOsW,EAER,KAAK,GAAI,KAAK,GACA,KAATtW,GAAwB,KAATA,GAClBwvB,EAAUvB,GACX,MAED,KAAK,GACS,KAATjuB,GACHwvB,EAAUxvB,GACX,MAED,KAAK,GACJivB,IAIH,OAAO3Y,CACR,CAOO,SAASsZ,EAAW5vB,EAAMsU,GAChC,KAAO2a,KAEFjvB,EAAOiuB,IAAc,KAGhBjuB,EAAOiuB,IAAc,IAAsB,KAAXiB,OAG1C,MAAO,KAAOlZ,EAAM1B,EAAOgC,EAAW,GAAK,KAAM,QAAc,KAATtW,EAAcA,EAAOivB,IAC5E,CAMO,SAASY,EAAYvb,GAC3B,MAAQxM,EAAMonB,MACbD,IAED,OAAOjZ,EAAM1B,EAAOgC,EACrB,8XCjPO,IAAIwZ,EAAMlqB,KAAKkqB,IAMX1sB,EAAOgkB,OAAOE,aAMdpf,EAAS5E,OAAO4E,OAOpB,SAAS6nB,EAAMxzB,EAAOzB,GAC5B,OAA0B,GAAnBk1B,EAAOzzB,EAAO,MAAiBzB,GAAU,EAAKk1B,EAAOzzB,EAAO,KAAO,EAAKyzB,EAAOzzB,EAAO,KAAO,EAAKyzB,EAAOzzB,EAAO,KAAO,EAAKyzB,EAAOzzB,EAAO,GAAK,CACvJ,CAMO,SAAS8W,EAAM9W,GACrB,OAAOA,EAAM8W,MACd,CAOO,SAAS4c,EAAO1zB,EAAO2zB,GAC7B,OAAQ3zB,EAAQ2zB,EAAQC,KAAK5zB,IAAUA,EAAM,GAAKA,CACnD,CAQO,SAAS0lB,EAAS1lB,EAAO2zB,EAASE,GACxC,OAAO7zB,EAAM0lB,QAAQiO,EAASE,EAC/B,CAOO,SAASC,EAAS9zB,EAAOoN,GAC/B,OAAOpN,EAAMkY,QAAQ9K,EACtB,CAOO,SAASqmB,EAAQzzB,EAAO+X,GAC9B,OAAiC,EAA1B/X,EAAM+zB,WAAWhc,EACzB,CAQO,SAASic,EAAQh0B,EAAO6yB,EAAOhoB,GACrC,OAAO7K,EAAMyZ,MAAMoZ,EAAOhoB,EAC3B,CAMO,SAASopB,EAAQj0B,GACvB,OAAOA,EAAMzB,MACd,CAMO,SAAS21B,EAAQl0B,GACvB,OAAOA,EAAMzB,MACd,CAOO,SAAS41B,EAAQn0B,EAAOo0B,GAC9B,OAAOA,EAAMljB,KAAKlR,GAAQA,CAC3B,CAOO,SAASq0B,EAASD,EAAOre,GAC/B,OAAOqe,EAAM70B,IAAIwW,GAAUiV,KAAK,GACjC,ICjHIsJ,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBzuB,IAAjB0uB,EACH,OAAOA,EAAajQ,QAGrB,IAAID,EAAS+P,EAAyBE,GAAY,CAGjDhQ,QAAS,CAAC,GAOX,OAHAkQ,EAAoBF,GAAUjQ,EAAQA,EAAOC,QAAS+P,GAG/ChQ,EAAOC,OACf,CAGA+P,EAAoBrG,EAAIwG,E1DzBpB33B,EAAW,GACfw3B,EAAoBI,EAAI,SAAS7hB,EAAQ8hB,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASlqB,EAAI,EAAGA,EAAI/N,EAASwB,OAAQuM,IAAK,CACrC8pB,EAAW73B,EAAS+N,GAAG,GACvB+pB,EAAK93B,EAAS+N,GAAG,GACjBgqB,EAAW/3B,EAAS+N,GAAG,GAE3B,IAJA,IAGImqB,GAAY,EACPhD,EAAI,EAAGA,EAAI2C,EAASr2B,OAAQ0zB,MACpB,EAAX6C,GAAsBC,GAAgBD,IAAa/tB,OAAO0N,KAAK8f,EAAoBI,GAAGO,OAAM,SAASlc,GAAO,OAAOub,EAAoBI,EAAE3b,GAAK4b,EAAS3C,GAAK,IAChK2C,EAASO,OAAOlD,IAAK,IAErBgD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbl4B,EAASo4B,OAAOrqB,IAAK,GACrB,IAAI0hB,EAAIqI,SACE9uB,IAANymB,IAAiB1Z,EAAS0Z,EAC/B,CACD,CACA,OAAO1Z,CArBP,CAJCgiB,EAAWA,GAAY,EACvB,IAAI,IAAIhqB,EAAI/N,EAASwB,OAAQuM,EAAI,GAAK/N,EAAS+N,EAAI,GAAG,GAAKgqB,EAAUhqB,IAAK/N,EAAS+N,GAAK/N,EAAS+N,EAAI,GACrG/N,EAAS+N,GAAK,CAAC8pB,EAAUC,EAAIC,EAwB/B,E2D5BAP,EAAoB7sB,EAAI,SAAS6c,GAChC,IAAI6Q,EAAS7Q,GAAUA,EAAO8Q,WAC7B,WAAa,OAAO9Q,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAgQ,EAAoB1G,EAAEuH,EAAQ,CAAExH,EAAGwH,IAC5BA,CACR,E1DPIn4B,EAAW8J,OAAOsd,eAAiB,SAAS/V,GAAO,OAAOvH,OAAOsd,eAAe/V,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIgnB,SAAW,EAQpIf,EAAoB3I,EAAI,SAAS5rB,EAAOwI,GAEvC,GADU,EAAPA,IAAUxI,EAAQwoB,KAAKxoB,IAChB,EAAPwI,EAAU,OAAOxI,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPwI,GAAaxI,EAAMq1B,WAAY,OAAOr1B,EAC1C,GAAW,GAAPwI,GAAoC,mBAAfxI,EAAMuC,KAAqB,OAAOvC,CAC5D,CACA,IAAIu1B,EAAKxuB,OAAOyuB,OAAO,MACvBjB,EAAoB/H,EAAE+I,GACtB,IAAIE,EAAM,CAAC,EACXz4B,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI+L,EAAiB,EAAPR,GAAYxI,EAAyB,iBAAXgJ,KAAyBhM,EAAekb,QAAQlP,GAAUA,EAAU/L,EAAS+L,GACxHjC,OAAOmd,oBAAoBlb,GAASxD,SAAQ,SAASwT,GAAOyc,EAAIzc,GAAO,WAAa,OAAOhZ,EAAMgZ,EAAM,CAAG,IAI3G,OAFAyc,EAAa,QAAI,WAAa,OAAOz1B,CAAO,EAC5Cu0B,EAAoB1G,EAAE0H,EAAIE,GACnBF,CACR,E2DxBAhB,EAAoB1G,EAAI,SAASrJ,EAASkR,GACzC,IAAI,IAAI1c,KAAO0c,EACXnB,EAAoBjc,EAAEod,EAAY1c,KAASub,EAAoBjc,EAAEkM,EAASxL,IAC5EjS,OAAOkd,eAAeO,EAASxL,EAAK,CAAE2W,YAAY,EAAMnf,IAAKklB,EAAW1c,IAG3E,ECJAub,EAAoBvyB,EAAI,WAAa,OAAOuK,QAAQC,SAAW,ECH/D+nB,EAAoB3O,EAAI,WACvB,GAA0B,iBAAf+P,WAAyB,OAAOA,WAC3C,IACC,OAAOnN,MAAQ,IAAIjC,SAAS,cAAb,EAChB,CAAE,MAAOvkB,GACR,GAAsB,iBAAXW,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB4xB,EAAoBjc,EAAI,SAAShK,EAAKsnB,GAAQ,OAAO7uB,OAAOsc,UAAUyC,eAAeG,KAAK3X,EAAKsnB,EAAO,ECCtGrB,EAAoB/H,EAAI,SAAShI,GACX,oBAAXU,QAA0BA,OAAOI,aAC1Cve,OAAOkd,eAAeO,EAASU,OAAOI,YAAa,CAAEtlB,MAAO,WAE7D+G,OAAOkd,eAAeO,EAAS,aAAc,CAAExkB,OAAO,GACvD,ECNAu0B,EAAoBtC,EAAI,eCKxB,IAAI4D,EAAkB,CACrB,IAAK,GAaNtB,EAAoBI,EAAE1C,EAAI,SAAS6D,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4Br1B,GAC/D,IAKI6zB,EAAUsB,EALVlB,EAAWj0B,EAAK,GAChBs1B,EAAct1B,EAAK,GACnBu1B,EAAUv1B,EAAK,GAGImK,EAAI,EAC3B,GAAG8pB,EAASnuB,MAAK,SAAS3G,GAAM,OAA+B,IAAxB+1B,EAAgB/1B,EAAW,IAAI,CACrE,IAAI00B,KAAYyB,EACZ1B,EAAoBjc,EAAE2d,EAAazB,KACrCD,EAAoBrG,EAAEsG,GAAYyB,EAAYzB,IAGhD,GAAG0B,EAAS,IAAIpjB,EAASojB,EAAQ3B,EAClC,CAEA,IADGyB,GAA4BA,EAA2Br1B,GACrDmK,EAAI8pB,EAASr2B,OAAQuM,IACzBgrB,EAAUlB,EAAS9pB,GAChBypB,EAAoBjc,EAAEud,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOvB,EAAoBI,EAAE7hB,EAC9B,EAEIqjB,EAAqB9P,KAAmB,aAAIA,KAAmB,cAAK,GACxE8P,EAAmB3wB,QAAQuwB,EAAqBK,KAAK,KAAM,IAC3DD,EAAmBjlB,KAAO6kB,EAAqBK,KAAK,KAAMD,EAAmBjlB,KAAKklB,KAAKD,OC/CvF,IAAIE,EAAsB9B,EAAoBI,OAAE5uB,EAAW,CAAC,MAAM,WAAa,OAAOwuB,EAAoB,KAAO,IACjH8B,EAAsB9B,EAAoBI,EAAE0B","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///./src/utils/analytics.js","webpack:///./src/components/ExploreMyOptionsModal/ExploreMyOptionsModal.jsx","webpack:///./src/components/SsoButton.jsx","webpack:///./src/render-react-client.js","webpack:///./src/components/PlanPicker/usePlanPickerApi/items.js","webpack:///./src/components/PlanPicker/PlanPickerContext/usePlanPickerContext.js","webpack:///./src/components/PlanPicker/usePlanPickerApi/pagination.js","webpack:///./src/components/PlanPicker/usePlanPickerApi/api.js","webpack:///./src/utils/timeout.js","webpack:///./src/components/PlanPicker/usePlanPickerApi/index.js","webpack:///./src/lib/interop/angular.js","webpack:///./src/components/PlanPicker/usePlanPickerSideEffects/effects.js","webpack:///./src/components/PlanPicker/usePlanPickerSideEffects/index.js","webpack:///./src/components/PlanPicker/PlanPickerContext/AsyncPlanPickerProvider.jsx","webpack:///./src/hooks/useDebouncedCallback.js","webpack:///./src/components/PlanPicker/PlanPickerContext/SyncPlanPickerProvider.jsx","webpack:///./src/components/PlanPicker/PlanPickerContext/PlanPickerProvider.jsx","webpack:///./src/components/PlanPicker/VirtualizedPlanPickerMenuList.jsx","webpack:///./src/components/PlanPicker/PlanPickerOption.jsx","webpack:///./src/components/PlanPicker/PlanPickerInput.jsx","webpack:///./src/components/PlanPicker/PlanPicker.jsx","webpack:///./src/components/Banner/PDXBanner.jsx","webpack:///./src/components/InternalPlanPicker/InternalPlanPicker.jsx","webpack:///./src/components/ManagedAccountWarningModal/ManagedAccountWarningModal.jsx","webpack:///./src/components/ManagedAccountBanner/ManagedAccountBannerBody.jsx","webpack:///./src/components/ManagedAccountBanner/ManagedAccountBanner.jsx","webpack:///./src/components/SchwabPCRAModal/SchwabPCRAModal.jsx","webpack:///./src/main.js","webpack:///../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///../node_modules/lodash/_Symbol.js","webpack:///../node_modules/lodash/_baseGetTag.js","webpack:///../node_modules/lodash/_baseTrim.js","webpack:///../node_modules/lodash/_freeGlobal.js","webpack:///../node_modules/lodash/_getRawTag.js","webpack:///../node_modules/lodash/_objectToString.js","webpack:///../node_modules/lodash/_root.js","webpack:///../node_modules/lodash/_trimmedEndIndex.js","webpack:///../node_modules/lodash/debounce.js","webpack:///../node_modules/lodash/isObject.js","webpack:///../node_modules/lodash/isObjectLike.js","webpack:///../node_modules/lodash/isSymbol.js","webpack:///../node_modules/lodash/now.js","webpack:///../node_modules/lodash/throttle.js","webpack:///../node_modules/lodash/toNumber.js","webpack:///../node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","webpack:///../node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs","webpack:///../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","webpack:///../node_modules/@swc/helpers/src/_define_property.mjs","webpack:///../node_modules/stylis/src/Enum.js","webpack:///../node_modules/stylis/src/Middleware.js","webpack:///../node_modules/stylis/src/Parser.js","webpack:///../node_modules/stylis/src/Serializer.js","webpack:///../node_modules/stylis/src/Tokenizer.js","webpack:///../node_modules/stylis/src/Utility.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/runtimeId","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","export const sendAnalyticsEvent = (eventName, parameters) => {\r\n if (typeof gtag !== 'function') return;\r\n\r\n gtag('event', eventName, parameters);\r\n}","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport axios from 'axios';\r\nimport { Button } from '@pattern-library/buttons';\r\nimport { RadioGroup } from '@pattern-library/radio';\r\nimport Banner from '@pattern-library/banner';\r\nimport { MagicWandIcon } from '@pattern-library/icon';\r\nimport { Error } from '@pattern-library/result';\r\nimport { sendAnalyticsEvent } from '../../utils/analytics';\r\n\r\nconst propTypes = {\r\n options: PropTypes.array.isRequired,\r\n requestId: PropTypes.string.isRequired,\r\n url: PropTypes.string.isRequired,\r\n isPPTInDefaultInvestment: PropTypes.bool.isRequired,\r\n isPlanGlidepathEnabled: PropTypes.bool.isRequired,\r\n isPPTGlidepathEnrolled: PropTypes.bool.isRequired,\r\n isPPTManagedAccountEnrolled: PropTypes.bool.isRequired,\r\n isPPTManagedAccountPending: PropTypes.bool.isRequired,\r\n investmentName: PropTypes.string.isRequired,\r\n managedAccountPlatformId: PropTypes.number,\r\n success: PropTypes.bool\r\n};\r\n\r\nfunction ExploreMyOptionsModal({\r\n options,\r\n requestId,\r\n url,\r\n isPPTInDefaultInvestment,\r\n isPlanGlidepathEnabled,\r\n isPPTGlidepathEnrolled,\r\n isPPTManagedAccountEnrolled,\r\n isPPTManagedAccountPending,\r\n investmentName,\r\n managedAccountPlatformId,\r\n success\r\n}) {\r\n const dataError = !success || options.length === 0;\r\n const [samlResponse, setSamlResponse] = useState(null);\r\n const [arkPostUrl, setArkPostUrl] = useState(null);\r\n const [requesting, setRequesting] = useState(false);\r\n\r\n let [selectedOption, setSelectedOption] = useState(null);\r\n let [isError, setIsError] = useState(false);\r\n let [errorText, setErrorText] = useState('Make a selection to proceed.');\r\n let manageAdviceContent = [];\r\n\r\n const radioOptions = options.map(({ Name: label, Description: description, OptionId: id, AnalyticsEventName: value}) => \r\n ({\r\n id: id.toString(),\r\n label:

{label}

{description}

,\r\n value: value\r\n }));\r\n\r\n const submitForm = () => {\r\n if (isPPTManagedAccountEnrolled || isPPTManagedAccountPending || selectedOption) {\r\n setIsError(false);\r\n sendData(selectedOption);\r\n sendAnalyticsEvent(options.find(option => option.OptionId === selectedOption).AnalyticsEventName);\r\n return;\r\n }\r\n\r\n setIsError(true);\r\n return;\r\n };\r\n\r\n const sendData = id => {\r\n setRequesting(true);\r\n\r\n const postBody = (isPPTManagedAccountEnrolled && managedAccountPlatformId) ? {\r\n maPlatformId: managedAccountPlatformId\r\n } : {\r\n optionId: id\r\n }\r\n\r\n axios\r\n .post(`${url}/${requestId}`, postBody)\r\n .then(response => {\r\n if (response.data?.hasNextStepUrl && response.data?.action) {\r\n window.location = response.data?.action;\r\n } else if (response.data?.SamlResponse && response.data?.PostURL) {\r\n setSamlResponse(response.data.SamlResponse);\r\n setArkPostUrl(response.data.PostURL);\r\n setTimeout(() => document.ssoForm.submit(), 100);\r\n } else {\r\n setRequesting(false);\r\n setIsError(true);\r\n if (response.data?.Error === 'proxiedAdmin') {\r\n setErrorText('This participant function is not available via proxy.');\r\n } else {\r\n setErrorText('An error occurred. Please try again later.');\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n setRequesting(false);\r\n setIsError(true);\r\n setErrorText('An error occurred. Please try again later.');\r\n });\r\n };\r\n\r\n const handleRadioChange = e => {\r\n const optionId = e.target.id;\r\n setIsError(false);\r\n setSelectedOption(optionId);\r\n };\r\n\r\n const closeModal = () => {\r\n $(\"#requestworkflow-popup-window\").data(\"kendoWindow\").close();\r\n }\r\n\r\n // Display a specific banner if one the following scenarios is true\r\n const getBanner = () => {\r\n if (isPPTInDefaultInvestment && isPlanGlidepathEnabled && isPPTGlidepathEnrolled) {\r\n // Scenario 1 - banner for an enrolled participant\r\n return (\r\n }\r\n hasCloseButton={false}\r\n messageRichText={\r\n <>\r\n

\r\n You are currently using your company's investment strategy\r\n appropriate for your age: 100% {investmentName}\r\n

\r\n

\r\n Your investments will be automatically adjusted over time to keep\r\n you appropriately invested from now until retirement.\r\n

\r\n

\r\n \r\n If you make a change to your investments, automatic adjustments\r\n will be stopped.\r\n \r\n

\r\n \r\n }\r\n />\r\n );\r\n } else if (isPPTInDefaultInvestment && !isPlanGlidepathEnabled) {\r\n // Scenario 2 - banner for a participant in default investments\r\n return (\r\n \r\n You are currently using your company's default investment: 100%{' '}\r\n {investmentName}\r\n

\r\n }\r\n />\r\n );\r\n } else {\r\n return;\r\n }\r\n };\r\n\r\n if (isPPTManagedAccountPending && !dataError) {\r\n return (\r\n
\r\n
\r\n
\r\n

Your managed account enrollment is pending

\r\n
\r\n

\r\n Check back in an hour to update your account.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {dataError ? (\r\n \r\n ) : (\r\n <>\r\n {isPPTManagedAccountEnrolled ? (\r\n
\r\n
\r\n

You're currently enrolled in a managed account

\r\n
\r\n

\r\n This option automatically updates your investment strategy for you.\r\n If you want to modify the funds you're invested in, you must first\r\n visit the Managed Accounts page and opt out of this offering.\r\n

\r\n
\r\n ) : (\r\n <>\r\n {getBanner()}\r\n \r\n How would you like to invest?\r\n \r\n \r\n {manageAdviceContent}\r\n \r\n )}\r\n
\r\n \r\n
\r\n {samlResponse && arkPostUrl && (\r\n <>\r\n
\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nExploreMyOptionsModal.propTypes = propTypes;\r\n\r\nexport default ExploreMyOptionsModal;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport axios from 'axios';\r\nimport { Button } from '@pattern-library/buttons';\r\nimport Banner from '@pattern-library/banner';\r\n\r\nfunction SsoButton(props) {\r\n const [bannerEligibilityVisible, setBannerEligibilityVisible] = useState(false);\r\n const [bannerErrorVisible, setBannerErrorVisible] = useState(false);\r\n const [bannerProxiedAdminVisible, setBannerProxiedAdminVisible] = useState(false);\r\n const [samlResponse, setSamlResponse] = useState(null);\r\n const [arkPostUrl, setArkPostUrl] = useState(null);\r\n const [requesting, setRequesting] = useState(false);\r\n\r\n const requestSso = async () => {\r\n setRequesting(true);\r\n setBannerEligibilityVisible(false);\r\n setBannerErrorVisible(false);\r\n setBannerProxiedAdminVisible(false);\r\n let eligible = true;\r\n if (props.eligibilityAction) {\r\n let eligibilityResponse = await axios.post(props.baseUrl + '/participant/ArkSso/SsoEligibility?p=' + props.navigationKey, { action: props.eligibilityAction });\r\n if (!eligibilityResponse.data || eligibilityResponse.data?.error) {\r\n setBannerErrorVisible(true);\r\n }\r\n else if (!eligibilityResponse.data.eligible) {\r\n setBannerEligibilityVisible(true);\r\n }\r\n eligible = eligibilityResponse.data?.eligible ?? false;\r\n }\r\n if (eligible) {\r\n let ssoResponse = await axios.post(props.baseUrl + '/participant/ArkSso/SsoRequest?p=' + props.navigationKey, { arkDeeplinkUrl: props.arkDeeplinkUrl, dcaDeeplinkUrl: props.dcaDeeplinkUrl, webExperienceId: props.webExperienceId });\r\n if (ssoResponse.data?.SamlResponse && ssoResponse.data?.PostURL) {\r\n setSamlResponse(ssoResponse.data.SamlResponse);\r\n setArkPostUrl(ssoResponse.data.PostURL);\r\n setTimeout(() => document.ssoForm.submit(), 100);\r\n } else {\r\n setRequesting(false);\r\n if (ssoResponse.data?.Error === 'proxiedAdmin') {\r\n setBannerProxiedAdminVisible(true);\r\n } else {\r\n setBannerErrorVisible(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n {bannerErrorVisible && (\r\n {\r\n setBannerErrorVisible(false);\r\n }}\r\n message={<>An error occurred. Please try again later.}\r\n type=\"warning\"\r\n customClass=\"asc-mtb-2\"\r\n />\r\n )}\r\n {bannerEligibilityVisible && (\r\n {\r\n setBannerEligibilityVisible(false);\r\n }}\r\n message={<>{props.eligibilityText}}\r\n customClass=\"asc-mtb-2\"\r\n />\r\n )}\r\n {bannerProxiedAdminVisible && (\r\n {\r\n setBannerProxiedAdminVisible(false);\r\n }}\r\n message={<>This participant function is not available via proxy.}\r\n />\r\n )}\r\n {samlResponse && arkPostUrl && (\r\n <>\r\n
\r\n \r\n
\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nSsoButton.propTypes = {\r\n navigationKey: PropTypes.string.isRequired,\r\n baseUrl: PropTypes.string.isRequired,\r\n buttonText: PropTypes.string.isRequired,\r\n arkUrl: PropTypes.string.isRequired,\r\n dcaReturnUrl: PropTypes.string.isRequired,\r\n eligibilityAction: PropTypes.string,\r\n eligibilityText: PropTypes.string,\r\n webExperienceId : PropTypes.number\r\n};\r\n\r\nSsoButton.defaultProps = {\r\n eligibilitytext: 'You are not eligibile to perform this action.'\r\n}\r\n\r\nexport default SsoButton;\r\n","/* globals Map */\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\n/**\r\n * @param {Element[]} containers\r\n * @param {Record} components\r\n */\r\nfunction renderComponents(containers, components) {\r\n containers.forEach(container => {\r\n if (container.dataset.renderedReactComponent) {\r\n return;\r\n }\r\n let props = tryParse(container.dataset.props);\r\n const component = components[container.dataset.reactComponent];\r\n if (component) {\r\n const element = React.createElement(component, props);\r\n ReactDOM.render(element, container);\r\n container.dataset.renderedReactComponent = true;\r\n }\r\n });\r\n}\r\n\r\nfunction tryParse(str) {\r\n return str ? JSON.parse(str) : undefined;\r\n}\r\n\r\n/**\r\n * Renders React components onto a page (client-side)\r\n * Pass in an object of the React components on the page to be rendered\r\n * In the HTML, use the [data-react-component] attribute on the element\r\n * you would like to render the component.\r\n * (e.g. data-react-component=\"MyComponent\")\r\n * @param {Record} components\r\n */\r\nfunction renderReactClient(components) {\r\n if (typeof window !== 'undefined') {\r\n const containers = Array.from(document.querySelectorAll('[data-react-component]'));\r\n renderComponents(containers, components);\r\n }\r\n}\r\n\r\n/** @type {Map} */\r\nconst componentRegistry = new Map();\r\nconst componentObserver = new MutationObserver(mutations => {\r\n const hasComponents = componentRegistry.size > 0;\r\n const shouldRender =\r\n hasComponents &&\r\n mutations.some(mutation => {\r\n return mutation.type === 'childList' && mutation.addedNodes.length > 0;\r\n });\r\n\r\n if (shouldRender) {\r\n renderComponents(\r\n Array.from(document.querySelectorAll('[data-react-component]')),\r\n Object.fromEntries(componentRegistry)\r\n );\r\n }\r\n});\r\ncomponentObserver.observe(document.body, { childList: true, subtree: true });\r\n\r\n/**\r\n * Renders React components onto a page (client-side), and watches for new elements\r\n * with the `data-react-component` attribute to render components into.\r\n *\r\n * Pass in an object of the React components on the page to be rendered\r\n * In the HTML, use the [data-react-component] attribute on the element\r\n * you would like to render the component.\r\n * (e.g. `data-react-component=\"MyComponent\"`)\r\n * @param {Record} components\r\n */\r\nexport function autoRenderReactClient(components) {\r\n for (const [key, component] of Object.entries(components)) {\r\n componentRegistry.set(key, component);\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n renderComponents(\r\n Array.from(document.querySelectorAll('[data-react-component]')),\r\n components\r\n );\r\n }\r\n}\r\n\r\nexport default renderReactClient;\r\n","/**\r\n * @param {RawPlanPickerItem} rawItem\r\n * @returns {PlanPickerItem}\r\n */\r\nexport const normalizeItem = rawItem => {\r\n return {\r\n status: 'loaded',\r\n kind: parseItemKind(rawItem),\r\n id: rawItem.id,\r\n name: rawItem.n,\r\n moneyValue: rawItem.b,\r\n isDisabled: rawItem.c.endsWith('Disabled')\r\n };\r\n};\r\n\r\n/**\r\n * @param {RawPlanPickerItem} rawItem\r\n * @returns {PlanPickerItem['kind']}\r\n */\r\nexport const parseItemKind = rawItem => {\r\n if (rawItem.c.startsWith('planDropDownItemCompany')) {\r\n return 'company';\r\n } else if (rawItem.c.startsWith('planDropDownItemPlan')) {\r\n return 'plan';\r\n } else {\r\n return 'unknown';\r\n }\r\n};\r\n\r\n/** @type {(option: import('./usePlanPickerApi/items').PlanPickerItemWithStatus) => string} */\r\nexport const getOptionLabel = option => {\r\n if (option.status === 'loaded') {\r\n return option.name;\r\n } else {\r\n return `Loading option ${option.ix + 1}`;\r\n }\r\n};\r\n\r\n/** @type {(option: import('./usePlanPickerApi/items').PlanPickerItemWithStatus) => string} */\r\nexport const getOptionValue = option => {\r\n if (option.status === 'loaded') {\r\n return option.id;\r\n } else {\r\n return `virtual-option-${option.ix}`;\r\n }\r\n};\r\n\r\n/** @type {(option: import('./usePlanPickerApi/items').PlanPickerItemWithStatus) => boolean} */\r\nexport const isOptionDisabled = option => {\r\n if (option.status === 'loaded') {\r\n return option.isDisabled;\r\n } else {\r\n return true;\r\n }\r\n};\r\n\r\n/**\r\n * @typedef {object} RawPlanPickerItem\r\n * @prop {string} id\r\n * @prop {string} c a combination of kind (\"company\" or \"plan\") and disabled status\r\n * @prop {string} n item name\r\n * @prop {string} b money value\r\n */\r\n\r\n/**\r\n * @typedef {object} PlanPickerItem\r\n * @prop {'loaded'} status\r\n * @prop {'company' | 'plan' | 'unknown'} kind\r\n * @prop {string} id\r\n * @prop {string} name\r\n * @prop {string} moneyValue\r\n * @prop {boolean} isDisabled\r\n */\r\n\r\n/** @typedef {VirtualPlanPickerItem | import('./items').PlanPickerItem} PlanPickerItemWithStatus */\r\n/** @typedef {{ status: 'loading' | 'unloaded', ix: import('./pagination').Index }} VirtualPlanPickerItem */\r\n","import React, { useContext } from 'react';\r\n\r\nexport const MODE_SEARCH = 'search';\r\nexport const MODE_LIST = 'list';\r\n\r\n/** @type {import('react').Context} */\r\nexport const PlanPickerContext = React.createContext({\r\n mode: MODE_LIST,\r\n options: [],\r\n total: 'unknown',\r\n isWaitingForInitialData: true,\r\n loadOptionsByIndex: () => {},\r\n searchQuery: '',\r\n updateSearchQuery: () => {},\r\n selectedId: null,\r\n value: null,\r\n onChange: () => {},\r\n selectRef: { current: null }\r\n});\r\n\r\nexport default function usePlanPickerContext() {\r\n return useContext(PlanPickerContext);\r\n}\r\n\r\n/**\r\n * @typedef {object} PlanPickerContextBag\r\n * @prop {'sync' | 'async'} dataStrategy\r\n * @prop {PlanPickerMode} mode\r\n * @prop {import('./usePlanPickerApi/items').PlanPickerItemWithStatus[]} options\r\n * @prop {number | 'unknown'} total\r\n * @prop {boolean} isWaitingForInitialData\r\n * @prop {(indexes: import('./usePlanPickerApi/pagination').Index[], signal: AbortSignal) => void} loadOptionsByIndex\r\n * @prop {string} searchQuery\r\n * @prop {(inputValue: string) => void} updateSearchQuery\r\n * @prop {string | null} selectedId\r\n * @prop {import('./usePlanPickerApi/items').PlanPickerItemWithStatus | null} value\r\n * @prop {(selectedItem: import('./usePlanPickerApi/items').PlanPickerItemWithStatus) => void} onChange\r\n * @prop {import('react').RefObject | null>} selectRef\r\n */\r\n\r\n/**\r\n * @typedef {typeof MODE_LIST | typeof MODE_SEARCH} PlanPickerMode\r\n */\r\n","/**\r\n * @param {Index} ix\r\n * @param {PageSize} pageSize\r\n * @returns {PageNumber}\r\n */\r\nexport const calculatePageContainingIndex = (ix, pageSize) => {\r\n return Math.floor(ix / pageSize) + 1;\r\n};\r\n\r\n/**\r\n * @param {PageNumber} page\r\n * @param {PageSize} pageSize\r\n * @returns {Index}\r\n */\r\nexport const calculatePageOffset = (page, pageSize) => {\r\n return (page - 1) * pageSize;\r\n};\r\n\r\n/**\r\n * @param {PageNumber} page\r\n * @param {PageSize} pageSize\r\n * @param {number} total\r\n */\r\nexport const calculatePageRange = (page, pageSize, total) => {\r\n const start = calculatePageOffset(page, pageSize);\r\n const end = Math.min(start + pageSize, total);\r\n return [start, end];\r\n};\r\n\r\n/**\r\n * @template {PaginationState} P\r\n * @param {P} state\r\n * @param {PageNumber[]} pageNumbers\r\n * @returns {P}\r\n */\r\nexport function updateWithPageRequests(state, pageNumbers) {\r\n const pagesClone = { ...state.pages };\r\n for (const pageNumber of pageNumbers) {\r\n pagesClone[pageNumber] = { status: 'loading' };\r\n }\r\n return {\r\n ...state,\r\n pages: pagesClone\r\n };\r\n}\r\n\r\n/**\r\n * @template {PaginationState} P\r\n * @param {P} state\r\n * @param {PageNumber} pageNumber\r\n * @returns {P}\r\n */\r\nexport function updateWithPageError(state, pageNumber) {\r\n return {\r\n ...state,\r\n pages: {\r\n ...state.pages,\r\n [pageNumber]: { status: 'error' }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * @template {PaginationState} P\r\n * @param {P} state\r\n * @param {PageLoadPayload} payload\r\n * @returns {P}\r\n */\r\nexport function updateWithPageLoad(state, payload) {\r\n const { pageNumber, items, total } = payload;\r\n const ids = items.map(item => item.id);\r\n\r\n return {\r\n ...state,\r\n pages: {\r\n ...state.pages,\r\n [pageNumber]: { status: 'loaded', items: ids }\r\n },\r\n total\r\n };\r\n}\r\n\r\n/**\r\n * @param {PaginationState} state\r\n * @param {PageSize} pageSize\r\n * @param {(id: string) => import(\"./items\").PlanPickerItem} getItem\r\n */\r\nexport function toItemArray(state, pageSize, getItem) {\r\n const { total, pages } = state;\r\n if (total === 'unknown') return [];\r\n\r\n /** @type {import(\"./items\").PlanPickerItemWithStatus[]} */\r\n let items = new Array(total);\r\n\r\n const pageCount = Math.ceil(total / pageSize);\r\n for (let p = 1; p <= pageCount; p++) {\r\n const page = pages[p];\r\n const [start, end] = calculatePageRange(p, pageSize, total);\r\n\r\n if (!page || page.status === 'error') {\r\n for (let i = start; i < end; i++) {\r\n items[i] = { status: 'unloaded', ix: i };\r\n }\r\n } else if (page.status === 'loading') {\r\n for (let i = start; i < end; i++) {\r\n items[i] = { status: 'loading', ix: i };\r\n }\r\n } else {\r\n page.items.forEach((id, i) => {\r\n items[i + start] = getItem(id);\r\n });\r\n }\r\n }\r\n\r\n return items;\r\n}\r\n\r\n/**\r\n * @param {PaginationState} state\r\n * @param {PageSize} pageSize\r\n * @param {Index[]} indexesToLoad\r\n * @returns {PageNumber[]}\r\n */\r\nexport function determinePagesToLoad(state, pageSize, indexesToLoad) {\r\n /** @type {Set} */\r\n // eslint-disable-next-line no-undef\r\n const pagesToLoad = new Set();\r\n\r\n for (const i of indexesToLoad) {\r\n const pageNumber = calculatePageContainingIndex(i, pageSize);\r\n const page = state.pages[pageNumber];\r\n\r\n if (!page || page.status === 'error') {\r\n pagesToLoad.add(pageNumber);\r\n }\r\n }\r\n\r\n return [...pagesToLoad];\r\n}\r\n\r\n/**\r\n * @typedef {object} PaginationState\r\n * @prop {Record} pages\r\n * @prop {number | 'unknown'} total\r\n */\r\n\r\n/**'\r\n * @typedef {{ status: 'loading' } | { status: 'error' } | { status: 'loaded', items: string[] }} Page\r\n */\r\n\r\n/**\r\n * @typedef {object} PageLoadPayload\r\n * @prop {string} [query]\r\n * @prop {PageNumber} pageNumber\r\n * @prop {number} total\r\n * @prop {import(\"./items\").RawPlanPickerItem[]} items\r\n */\r\n\r\n/** @typedef {number} PageNumber */\r\n/** @typedef {number} Index */\r\n/** @typedef {[start: Index, end: Index]} Range */\r\n/** @typedef {number} PageSize */\r\n","/**\r\n * @param {ApiParamsPage} params\r\n * @returns {URLSearchParams}\r\n */\r\nexport const createUrlParams = ({ token, pageNumber, pageSize, query }) => {\r\n const params = {\r\n token,\r\n take: pageSize,\r\n skip: (pageNumber - 1) * pageSize\r\n };\r\n\r\n if (query) {\r\n Object.assign(params, {\r\n 'filter[filters][0][value]': query,\r\n 'filter[filters][0][field]': 'n',\r\n 'filter[filters][0][operator]': 'contains',\r\n 'filter[filters][0][ignoreCase]': true,\r\n 'filter[logic]': 'and'\r\n });\r\n }\r\n\r\n return new URLSearchParams(params);\r\n};\r\n\r\n\r\n/**\r\n * @param {string} url\r\n * @param {ApiParamsItemIndex} params\r\n * @param {AbortSignal} [signal]\r\n * @returns {Promise}\r\n */\r\nexport const fetchItemIndex = async (url, params, signal) => {\r\n const { id, token } = params;\r\n const body = new URLSearchParams({\r\n token,\r\n id,\r\n ix: true\r\n });\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n body,\r\n headers: {\r\n Accept: 'application/json, text/javascript, */*; q=0.01'\r\n },\r\n signal\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `Could not fetch from API (params=${JSON.stringify(params)}): ${response.status} ${\r\n response.statusText\r\n }`\r\n );\r\n }\r\n\r\n return response.json();\r\n};\r\n\r\n/**\r\n * @param {string} url\r\n * @param {ApiParamsPage} params\r\n * @param {AbortSignal} [signal]\r\n * @returns {Promise}\r\n */\r\nexport const fetchApiPage = async (url, params, signal) => {\r\n const body = createUrlParams(params);\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n body,\r\n headers: {\r\n Accept: 'application/json, text/javascript, */*; q=0.01'\r\n },\r\n signal\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `Could not fetch from API (params=${JSON.stringify(params)}): ${response.status} ${\r\n response.statusText\r\n }`\r\n );\r\n }\r\n\r\n return response.json();\r\n};\r\n\r\n/**\r\n * @typedef {object} ApiParamsItemIndex\r\n * @prop {string} token\r\n * @prop {string} id\r\n */\r\n\r\n/**\r\n * @typedef {object} ApiParamsPage\r\n * @prop {string} token\r\n * @prop {import(\"./pagination\").PageNumber} pageNumber\r\n * @prop {import(\"./pagination\").PageSize} pageSize\r\n * @prop {string} [query]\r\n */\r\n\r\n/**\r\n * @typedef {object} ApiResponseData\r\n * @prop {import(\"./items\").RawPlanPickerItem[]} data\r\n * @prop {number} total\r\n */\r\n","/**\r\n * @param {number} ms\r\n * @returns {Promise}\r\n */\r\nexport async function sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(() => resolve(), ms);\r\n });\r\n}\r\n","import { useCallback, useMemo, useReducer } from 'react';\r\nimport {\r\n calculatePageContainingIndex,\r\n determinePagesToLoad,\r\n toItemArray,\r\n updateWithPageError,\r\n updateWithPageLoad,\r\n updateWithPageRequests\r\n} from './pagination';\r\nimport { normalizeItem } from './items';\r\nimport { fetchApiPage, fetchItemIndex } from './api';\r\nimport { sleep } from '../../../utils/timeout';\r\n\r\nexport const PAGE_SIZE = 40;\r\n\r\nexport const REQUEST_LIST_PAGES = 'REQUEST_LIST_PAGES';\r\nexport const LIST_PAGE_ERROR = 'LIST_PAGE_ERROR';\r\nexport const LIST_PAGE_LOADED = 'LIST_PAGE_LOADED';\r\nexport const REQUEST_SEARCH_PAGES = 'REQUEST_SEARCH_PAGES';\r\nexport const SEARCH_PAGE_ERROR = 'SEARCH_PAGE_ERROR';\r\nexport const SEARCH_PAGE_LOADED = 'SEARCH_PAGE_LOADED';\r\nexport const UPDATE_SEARCH_QUERY = 'UPDATE_SEARCH_QUERY';\r\n\r\n/** @type {PlanPickerApiState} */\r\nconst initialState = {\r\n itemsById: {},\r\n list: {\r\n pages: {},\r\n total: 'unknown'\r\n },\r\n search: {\r\n pages: {},\r\n query: '',\r\n total: 'unknown'\r\n }\r\n};\r\n\r\n/** @type {import(\"react\").Reducer normalizeItem(item));\r\n\r\n for (const item of normalizedItems) {\r\n newState[item.id] = item;\r\n }\r\n\r\n return newState;\r\n }\r\n default:\r\n return prevState;\r\n }\r\n}\r\n\r\n/** @type {import(\"react\").Reducer {\r\n switch (action.type) {\r\n case REQUEST_SEARCH_PAGES:\r\n case SEARCH_PAGE_ERROR:\r\n case SEARCH_PAGE_LOADED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * @param {PlanPickerApiState} prevState\r\n * @param {PlanPickerApiAction} action\r\n */\r\nfunction isStaleUpdate(prevState, action) {\r\n if (!canBeStale(action)) {\r\n return false;\r\n }\r\n\r\n const doesSearchQueryMatch = action.payload.query === prevState.search.query;\r\n return !doesSearchQueryMatch;\r\n}\r\n\r\n/** @type {import(\"react\").Reducer} */\r\nexport function reducer(prevState, action) {\r\n // Ignore stale actions that no longer apply to the current state (ex. page loads\r\n // for a previous search query).\r\n if (isStaleUpdate(prevState, action)) {\r\n return prevState;\r\n }\r\n\r\n return {\r\n itemsById: itemsByIdReducer(prevState.itemsById, action),\r\n list: listReducer(prevState.list, action),\r\n search: searchReducer(prevState.search, action)\r\n };\r\n}\r\n\r\nconst SEARCH_MINIMUM_LOADING_MS = 300;\r\n\r\n/**\r\n * @param {PlanPickerApiProps} props\r\n * @returns {[state: PlanPickerApiState, helpers: PlanPickerApiHelpers]}\r\n */\r\nexport function usePlanPickerApi({ url, token }) {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n // Selecting some nested state for use in helper callbacks\r\n const { list: listState, search: searchState, itemsById } = state;\r\n const { query: searchQuery } = searchState;\r\n\r\n /** @type {(pageNumber: import('./pagination').PageNumber, signal: AbortSignal) => Promise} */\r\n const loadListPage = useCallback(\r\n (pageNumber, signal) => {\r\n fetchApiPage(url, { token, pageNumber, pageSize: PAGE_SIZE }, signal)\r\n .then(pageData => {\r\n if (!signal.aborted) {\r\n dispatch({\r\n type: LIST_PAGE_LOADED,\r\n payload: {\r\n pageNumber,\r\n items: pageData.data,\r\n total: pageData.total\r\n }\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n if (!signal.aborted) {\r\n dispatch({\r\n type: LIST_PAGE_ERROR,\r\n payload: { pageNumber }\r\n });\r\n }\r\n });\r\n },\r\n [token, url]\r\n );\r\n\r\n /**\r\n * Loads the page containing the selected plan when necessary,\r\n * so that the selected plan is visible in the options menu list\r\n * e.g. when a plan is selected from search results\r\n */\r\n /** @type {(id: string) => void} */\r\n const loadPageForSelectedItem = useCallback(\r\n id => {\r\n const getPageNumberWithItemId = id => {\r\n return Object.keys(listState.pages)\r\n .find(pageNumber => {\r\n const { items } = listState.pages[pageNumber];\r\n return items ? items.find(itemId => itemId === id) : false;\r\n });\r\n };\r\n\r\n const pageNumber = getPageNumberWithItemId(id);\r\n if (pageNumber !== undefined) return;\r\n\r\n fetchItemIndex(url, { id, token })\r\n .then((data) => {\r\n const { ix } = data;\r\n const controller = new AbortController();\r\n loadListItemsByIndex([ix], controller.signal);\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n },\r\n [url, token, listState]\r\n );\r\n\r\n /** @type {(pageNumber: import('./pagination').PageNumber, signal: AbortSignal, config?: { minimumLoadingMs?: number }) => Promise} */\r\n const loadSearchPage = useCallback(\r\n (pageNumber, signal, { minimumLoadingMs = 0 } = {}) => {\r\n let pagePromise = fetchApiPage(\r\n url,\r\n { token, pageNumber, pageSize: PAGE_SIZE, query: searchQuery },\r\n signal\r\n );\r\n\r\n if (minimumLoadingMs > 0) {\r\n pagePromise = Promise.all([pagePromise, sleep(minimumLoadingMs)]).then(\r\n ([pageData]) => pageData\r\n );\r\n }\r\n\r\n pagePromise\r\n .then(pageData => {\r\n if (!signal.aborted) {\r\n dispatch({\r\n type: SEARCH_PAGE_LOADED,\r\n payload: {\r\n pageNumber,\r\n items: pageData.data,\r\n total: pageData.total,\r\n query: searchQuery\r\n }\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n if (!signal.aborted) {\r\n dispatch({\r\n type: SEARCH_PAGE_ERROR,\r\n payload: { pageNumber }\r\n });\r\n }\r\n });\r\n },\r\n [token, url, searchQuery]\r\n );\r\n\r\n /** @type {(initialIndex: import('./pagination').Index, signal: AbortSignal) => void} */\r\n const loadInitialListData = useCallback(\r\n (initialIndex, signal) => {\r\n const initialPageNumber = calculatePageContainingIndex(initialIndex ?? 0, PAGE_SIZE);\r\n const initialPage = listState.pages[initialPageNumber];\r\n if (!initialPage || initialPage.status === 'error') {\r\n loadListPage(initialPageNumber, signal);\r\n }\r\n },\r\n [listState, loadListPage]\r\n );\r\n\r\n /** @type {(signal: AbortSignal) => void} */\r\n const loadInitialSearchData = useCallback(\r\n signal => {\r\n const firstPage = searchState.pages[1];\r\n if (!firstPage || firstPage.status === 'error') {\r\n // To prevent jarring flashes where the plan picker shows a loading message\r\n // very briefly (< 100ms) before displaying the first page of loaded results,\r\n // we introduce a minimum amount of time to spend in the \"loading\" state\r\n // before showing results. This is only applicable when loading the initial\r\n // data because only the jump from loading message to loaded results is\r\n // visually jarring; lazy loading subsequent pages don't cause any layout\r\n // shifts or other noticeable jank.\r\n loadSearchPage(1, signal, { minimumLoadingMs: SEARCH_MINIMUM_LOADING_MS });\r\n }\r\n },\r\n [searchState, loadSearchPage]\r\n );\r\n\r\n /** @type {(id: string) => import('./items').PlanPickerItem} */\r\n const getItem = useCallback(id => itemsById[id], [itemsById]);\r\n\r\n const getListItems = useCallback(() => {\r\n return toItemArray(listState, PAGE_SIZE, getItem);\r\n }, [listState, getItem]);\r\n\r\n /** @type {(indexes: import('./pagination').Index[], signal: AbortSignal) => void} */\r\n const loadListItemsByIndex = useCallback(\r\n (indexes, signal) => {\r\n const pagesToLoad = determinePagesToLoad(listState, PAGE_SIZE, indexes);\r\n if (pagesToLoad.length) {\r\n dispatch({\r\n type: REQUEST_LIST_PAGES,\r\n payload: { pageNumbers: pagesToLoad }\r\n });\r\n for (const pageNumber of pagesToLoad) {\r\n loadListPage(pageNumber, signal);\r\n }\r\n }\r\n },\r\n [listState, loadListPage]\r\n );\r\n\r\n const getSearchItems = useCallback(() => {\r\n return toItemArray(searchState, PAGE_SIZE, getItem);\r\n }, [getItem, searchState]);\r\n\r\n /** @type {(indexes: import('./pagination').Index[], signal: AbortSignal) => void} */\r\n const loadSearchItemsByIndex = useCallback(\r\n (indexes, signal) => {\r\n const pagesToLoad = determinePagesToLoad(searchState, PAGE_SIZE, indexes);\r\n if (pagesToLoad.length) {\r\n dispatch({\r\n type: REQUEST_SEARCH_PAGES,\r\n payload: { pageNumbers: pagesToLoad }\r\n });\r\n for (const pageNumber of pagesToLoad) {\r\n loadSearchPage(pageNumber, signal);\r\n }\r\n }\r\n },\r\n [loadSearchPage, searchState]\r\n );\r\n\r\n /** @type {(query: string) => void} */\r\n const updateSearchQuery = useCallback(query => {\r\n dispatch({\r\n type: UPDATE_SEARCH_QUERY,\r\n payload: { query }\r\n });\r\n }, []);\r\n\r\n const helpers = useMemo(\r\n () => ({\r\n loadInitialListData,\r\n getListItems,\r\n loadPageForSelectedItem,\r\n loadListItemsByIndex,\r\n loadInitialSearchData,\r\n getSearchItems,\r\n loadSearchItemsByIndex,\r\n updateSearchQuery\r\n }),\r\n [\r\n updateSearchQuery,\r\n getListItems,\r\n loadPageForSelectedItem,\r\n getSearchItems,\r\n loadInitialListData,\r\n loadInitialSearchData,\r\n loadListItemsByIndex,\r\n loadSearchItemsByIndex\r\n ]\r\n );\r\n\r\n return useMemo(() => [state, helpers], [state, helpers]);\r\n}\r\n\r\n/**\r\n * @typedef {object} PlanPickerApiProps\r\n * @prop {string} url\r\n * @prop {string} token\r\n */\r\n\r\n/**\r\n * @typedef {object} PlanPickerApiState\r\n * @prop {Record} itemsById\r\n * @prop {import('./pagination').PaginationState} list\r\n * @prop {import('./pagination').PaginationState & { query: string }} search\r\n */\r\n\r\n/**\r\n * @typedef {object} PlanPickerApiHelpers\r\n * @prop {(initialIndex: number, signal: AbortSignal) => void} loadInitialListData\r\n * @prop {() => PlanPickerItemWithStatus[]} getListItems\r\n * @prop {(indexes: import('./pagination').Index[], signal: AbortSignal) => void} loadListItemsByIndex\r\n * @prop {(signal: AbortSignal) => void} loadInitialSearchData\r\n * @prop {() => PlanPickerItemWithStatus[]} getSearchItems\r\n * @prop {(indexes: import('./pagination').Index[], signal: AbortSignal) => void} loadSearchItemsByIndex\r\n * @prop {(query: string) => void} updateSearchQuery\r\n */\r\n\r\n/** @typedef {object} PlanPickerApiAction */\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\n/**\r\n * @param {string} targetId\r\n * @param {string} html\r\n */\r\nexport async function injectAngularFragment(targetId, html) {\r\n const selector = '#' + targetId;\r\n const target = $(html).filter(selector);\r\n\r\n if (target.length === 0) {\r\n throw new Error(`Target element (${selector}) is not present in the given HTML fragment`);\r\n }\r\n\r\n return new Promise(resolve => {\r\n npg.ngApp.util.injectHtml(targetId, target, resolve);\r\n });\r\n}\r\n\r\nexport function callAngularMethod(targetId, methodName, ...args) {\r\n const selector = '#' + targetId;\r\n const target = $(selector);\r\n\r\n if (target.length === 0) {\r\n throw new Error(`Target element (${selector}) is not present in the current document`);\r\n }\r\n\r\n const scope = target.scope();\r\n\r\n if (!scope) {\r\n throw new Error(`Target element (${selector}) does not have an Angular scope`);\r\n }\r\n\r\n if (typeof scope[methodName] !== 'function') {\r\n throw new Error(\r\n `\"${methodName}\" is not a method in the scope of the target element (${selector})`\r\n );\r\n }\r\n scope[methodName].apply(null, args);\r\n}\r\n\r\nexport function reactComponentDirective(component) {\r\n return function() {\r\n return {\r\n scope: {\r\n props: '='\r\n },\r\n link: function (scope, element) {\r\n const Component = component;\r\n\r\n scope.$watch('props', (newProps) => {\r\n ReactDOM.render(, element[0]);\r\n });\r\n\r\n scope.$on('$destroy', () => {\r\n ReactDOM.unmountComponentAtNode(element[0]);\r\n });\r\n }\r\n };\r\n }\r\n}","import { callAngularMethod, injectAngularFragment } from '../../../lib/interop/angular';\r\nimport { sleep } from '../../../utils/timeout';\r\n\r\n/** @type {(obj: unknown) => obj is PromiseLike} */\r\nconst isPromise = obj => obj && 'then' in obj && typeof obj.then === 'function';\r\n\r\n/**\r\n * @param {string | URL} current\r\n * @param {import('../usePlanPickerApi/items').PlanPickerItem} selectedItem\r\n */\r\nfunction constructNewUrl(current, selectedItem) {\r\n const newUrl = new URL(current);\r\n newUrl.searchParams.set('p', selectedItem.id);\r\n return newUrl;\r\n}\r\n\r\n/**\r\n * @param {import('../usePlanPickerApi/items').PlanPickerItem} selectedItem\r\n * @returns {PlanChangeEvent}\r\n */\r\nfunction createPlanChangeEvent(selectedItem) {\r\n return {\r\n url: constructNewUrl(window.location.href, selectedItem),\r\n selectedItem\r\n };\r\n}\r\n\r\n/** @type {PlanChangeEffect} */\r\nexport function updateHiddenPlanInput({ selectedItem }) {\r\n // Some other effects will try to get the current plan value by calling\r\n // `npg.getPlanValue()`. The implementation of that method checks the\r\n // plan picker value and, failing that, falls back to a hidden input,\r\n // #hidPlatformInput, that's included on every page in the PageHeader\r\n // partial.\r\n $('#hidPlatformName').val(selectedItem.id);\r\n}\r\n\r\n/** @type {PlanChangeEffect} */\r\nexport function logPlanChangeAnalyticsEvent({ selectedItem }) {\r\n switch (selectedItem.kind) {\r\n case 'company':\r\n npg.logAnalyticsEvent('global-companyselect');\r\n break;\r\n case 'plan':\r\n npg.logAnalyticsEvent('global-planselect');\r\n break;\r\n default:\r\n // \"unknown\" items and all others -- do nothing\r\n break;\r\n }\r\n}\r\n\r\n/** @type {PlanChangeEffect} */\r\nexport function redirect({ url }) {\r\n window.location = url.href;\r\n}\r\n\r\n/**\r\n * @param {PlanChangeEvent} event\r\n * @returns {Promise}\r\n*/\r\nasync function fetchStyleDetails(event) {\r\n const styleResponse = await fetch(`/Common/Navigation/StyleDetails?p=${event.selectedItem.id}`, {\r\n method: 'POST'\r\n })\r\n\r\n const styleData = await styleResponse.json();\r\n\r\n const styleUrlsToFetch = $('link[rel=stylesheet][data-palettized]')\r\n .map((i, linkEl) => {\r\n const url = new URL(linkEl.href);\r\n url.searchParams.set('id', styleData.PaletteId);\r\n return url.href;\r\n }).toArray();\r\n\r\n await Promise.all(\r\n styleUrlsToFetch.map(async url => {\r\n const response = await fetch(url);\r\n return await response.text();\r\n })\r\n );\r\n\r\n return styleData;\r\n}\r\n\r\n/**\r\n * @param {string} targetId\r\n * @param {{ fallback?: PlanChangeEffect }} [options]\r\n * @returns {PlanChangeEffect}\r\n */\r\nexport function createLoadHtmlEffect(targetId, { fallback } = {}) {\r\n // eslint-disable-next-line consistent-return\r\n return async function loadDynamicHtmlEffect(event) {\r\n const { url } = event;\r\n\r\n try {\r\n let [templateResponse, styleData] = await Promise.all([\r\n fetch(url, {\r\n headers: {\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n }\r\n }),\r\n fetchStyleDetails(event)\r\n ]);\r\n const html = await templateResponse.text();\r\n // To avoid the picker loading twice. We need to remove\r\n // the one from the response\r\n const parsed = $.parseHTML(html, null, true);\r\n const removedPlanPickerHTML = $(parsed).filter(':not(div#plandropdown)');\r\n await injectAngularFragment(targetId, removedPlanPickerHTML);\r\n await updateStyles(styleData);\r\n\r\n // The fetch request, Angular injection, and style update\r\n // can all fail, so only run these side effects at the end\r\n // once we know they've succeeded.\r\n npg.logAnalyticsView(url.href);\r\n\r\n npg.ngApp.util.setPlanIdInUrl(url.searchParams.get('p'));\r\n\r\n } catch (e) {\r\n if (fallback) {\r\n return fallback(event);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * @param {string} targetId\r\n * @param {string} methodName\r\n * @param {{ fallback?: PlanChangeEffect }} [options]\r\n * @returns {PlanChangeEffect}\r\n */\r\nexport function createCallAngularMethodEffect(targetId, methodName, { fallback } = {}) {\r\n // eslint-disable-next-line consistent-return\r\n return async function callAngularMethodEffect(event) {\r\n const { url } = event;\r\n try {\r\n callAngularMethod(targetId, methodName, url.searchParams.get('p'));\r\n const styleData = await fetchStyleDetails(event);\r\n await updateStyles(styleData);\r\n\r\n } catch (e) {\r\n if (fallback) {\r\n return fallback(event);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n };\r\n}\r\n\r\n/** @param {StyleData} styleData */\r\nasync function updateStyles(styleData) {\r\n // Update logos\r\n $('#headerLogo')\r\n .attr('src', styleData.HeaderLogoPath)\r\n .toggleClass('default', styleData.IsDefaultLogo)\r\n .toggleClass('custom', !styleData.IsDefaultLogo);\r\n if (styleData.FooterLogoPath) {\r\n $('#footerLogo').attr('src', styleData.FooterLogoPath).show();\r\n } else {\r\n $('#footerLogo').hide();\r\n }\r\n\r\n // update palette\r\n $('link[rel=stylesheet][data-palettized]').each(async (i, linkEl) => {\r\n const url = new URL(linkEl.href);\r\n if (Number(url.searchParams.get('id')) === styleData.PaletteId) {\r\n return;\r\n }\r\n // Reduce flicker by preloading\r\n url.searchParams.set('id', styleData.PaletteId);\r\n // add new link tag to head with new href value\r\n const newLink = document.createElement('link');\r\n newLink.href = url.href;\r\n newLink.rel = 'stylesheet';\r\n newLink.dataset['palettized'] = 'true';\r\n document.head.appendChild(newLink);\r\n\r\n // then remove old link tag\r\n // waiting for a few seconds in order to allow the new file to finish\r\n // downloading if it hasn't been cached, and also to separate the paints\r\n // to avoid FOUT\r\n setTimeout(() => {\r\n linkEl.remove();\r\n }, 2500);\r\n });\r\n\r\n}\r\n\r\n/**\r\n * @param {PlanChangeEffect[]} effects\r\n * @param {PlanChangeEvent} event\r\n */\r\nasync function runEffects(effects, event) {\r\n npg.showBusyIndicator();\r\n try {\r\n for (const effect of effects) {\r\n const result = effect(event);\r\n if (isPromise(result)) {\r\n await result;\r\n }\r\n }\r\n } finally {\r\n npg.hideBusyIndicator();\r\n }\r\n}\r\n\r\n/**\r\n * @param {PlanChangeEffect[]} effects\r\n * @returns {(selectedItem: import(\"../usePlanPickerApi/items\").PlanPickerItem) => Promise}\r\n */\r\nexport function createChangeHandler(effects) {\r\n return selectedItem => {\r\n const event = createPlanChangeEvent(selectedItem);\r\n return runEffects(effects, event);\r\n };\r\n}\r\n\r\n/**\r\n * @typedef {{ FooterLogoPath: string, HeaderLogoPath: string, IsDefaultLogo: boolean, PaletteId: number }} StyleData\r\n */\r\n\r\n/**\r\n * @typedef {(event: PlanChangeEvent) => (void | Promise)} PlanChangeEffect\r\n */\r\n\r\n/**\r\n * @typedef {{ url: URL, selectedItem: import('../usePlanPickerApi/items').PlanPickerItem }} PlanChangeEvent\r\n */\r\n","import { useMemo } from 'react';\r\nimport {\r\n createCallAngularMethodEffect,\r\n createChangeHandler,\r\n createLoadHtmlEffect,\r\n logPlanChangeAnalyticsEvent,\r\n redirect,\r\n updateHiddenPlanInput\r\n} from './effects';\r\n\r\n/**\r\n * @param {UsePlanPickerSideEffectProps} props\r\n */\r\nexport default function usePlanPickerSideEffects({ action }) {\r\n return useMemo(() => {\r\n const effects = [logPlanChangeAnalyticsEvent, updateHiddenPlanInput];\r\n\r\n if (action.kind === 'redirect') {\r\n effects.push(redirect);\r\n } else if (action.kind === 'loadHtml') {\r\n effects.push(createLoadHtmlEffect(action.targetId, { fallback: redirect }));\r\n } else if (action.kind === 'callAngularMethod') {\r\n effects.push(\r\n createCallAngularMethodEffect(action.targetId, action.methodName, {\r\n fallback: redirect\r\n })\r\n );\r\n }\r\n\r\n return createChangeHandler(effects);\r\n }, [action]);\r\n}\r\n\r\n/**\r\n * @typedef {object} UsePlanPickerSideEffectProps\r\n * @prop {PlanChangeAction} action\r\n */\r\n\r\n/**\r\n * @typedef {RedirectAction | LoadHtmlAction | CallAngularMethodAction} PlanChangeAction\r\n */\r\n\r\n/**\r\n * @typedef {object} RedirectAction\r\n * @prop {'redirect'} kind\r\n */\r\n\r\n/**\r\n * @typedef {object} LoadHtmlAction\r\n * @prop {'loadHtml'} kind\r\n * @prop {string} targetId\r\n */\r\n\r\n/**\r\n * @typedef {object} CallAngularMethodAction\r\n * @prop {'callAngularMethod'} kind\r\n * @prop {string} methodName\r\n * @prop {string} targetId\r\n */\r\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MODE_LIST, MODE_SEARCH, PlanPickerContext } from './usePlanPickerContext';\r\nimport { usePlanPickerApi } from '../usePlanPickerApi';\r\nimport usePlanPickerSideEffects from '../usePlanPickerSideEffects';\r\nimport useDebouncedCallback from '../../../hooks/useDebouncedCallback';\r\n\r\nconst SEARCH_DEBOUNCE_MS = 500;\r\n\r\n/**\r\n * @param {AsyncPlanPickerProviderProps} props\r\n */\r\nfunction AsyncPlanPickerProvider({\r\n dataStrategy,\r\n action,\r\n apiParams,\r\n initialId,\r\n initialIndex,\r\n children\r\n}) {\r\n const [selectedId, setSelectedId] = useState(initialId);\r\n const [\r\n { itemsById, list, search },\r\n {\r\n getListItems,\r\n getSearchItems,\r\n loadPageForSelectedItem,\r\n loadListItemsByIndex,\r\n loadInitialListData,\r\n loadInitialSearchData,\r\n loadSearchItemsByIndex,\r\n updateSearchQuery: updateSearchQueryImmediate\r\n }\r\n ] = usePlanPickerApi(apiParams);\r\n\r\n const { query: searchQuery } = search;\r\n const runSideEffectsOnChange = usePlanPickerSideEffects({ action });\r\n const selectRef = useRef(null);\r\n\r\n const mode = searchQuery ? MODE_SEARCH : MODE_LIST;\r\n const options = useMemo(\r\n () => (mode === MODE_SEARCH ? getSearchItems() : getListItems()),\r\n [getListItems, getSearchItems, mode]\r\n );\r\n const grandTotal = list.total;\r\n const total = mode === MODE_SEARCH ? search.total : list.total;\r\n const isTotalUnknown = total === 'unknown';\r\n\r\n useEffect(() => {\r\n if (!isTotalUnknown) return;\r\n\r\n const controller = new AbortController();\r\n if (mode === MODE_SEARCH) {\r\n loadInitialSearchData(controller.signal);\r\n } else {\r\n loadInitialListData(initialIndex, controller.signal);\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n return () => {\r\n controller.abort();\r\n };\r\n }, [initialIndex, isTotalUnknown, loadInitialListData, loadInitialSearchData, mode]);\r\n\r\n const value = itemsById[selectedId] ?? null;\r\n\r\n /** @type {(option: import('../usePlanPickerApi/items').PlanPickerItem) => void} */\r\n const onChange = useCallback(\r\n option => {\r\n setSelectedId(option.id);\r\n loadPageForSelectedItem(option.id);\r\n runSideEffectsOnChange(option);\r\n },\r\n [runSideEffectsOnChange, loadPageForSelectedItem]\r\n );\r\n\r\n const updateSearchQuery = useDebouncedCallback(updateSearchQueryImmediate, SEARCH_DEBOUNCE_MS);\r\n\r\n const contextValue = useMemo(\r\n () => ({\r\n dataStrategy,\r\n mode,\r\n options,\r\n total: grandTotal,\r\n isWaitingForInitialData: isTotalUnknown,\r\n loadOptionsByIndex:\r\n mode === MODE_SEARCH ? loadSearchItemsByIndex : loadListItemsByIndex,\r\n searchQuery,\r\n updateSearchQuery,\r\n selectedId,\r\n value,\r\n onChange,\r\n selectRef\r\n }),\r\n [\r\n dataStrategy,\r\n options,\r\n grandTotal,\r\n isTotalUnknown,\r\n mode,\r\n onChange,\r\n loadSearchItemsByIndex,\r\n loadListItemsByIndex,\r\n searchQuery,\r\n selectedId,\r\n updateSearchQuery,\r\n value\r\n ]\r\n );\r\n\r\n return {children};\r\n}\r\n\r\nAsyncPlanPickerProvider.propTypes = {\r\n dataStrategy: PropTypes.oneOf(['async']),\r\n action: PropTypes.object.isRequired,\r\n apiParams: PropTypes.shape({\r\n url: PropTypes.string.isRequired,\r\n token: PropTypes.string.isRequired\r\n }).isRequired,\r\n initialId: PropTypes.string,\r\n initialIndex: PropTypes.number,\r\n children: PropTypes.node\r\n};\r\n\r\nexport default AsyncPlanPickerProvider;\r\n\r\n/**\r\n * @typedef {object} AsyncPlanPickerProviderProps\r\n * @prop {'async'} dataStrategy\r\n * @prop {import('../usePlanPickerSideEffects').PlanChangeAction} action\r\n * @prop {import('../usePlanPickerApi').PlanPickerApiProps} apiParams\r\n * @prop {string} initialId\r\n * @prop {number} initialIndex\r\n * @prop {import('react').ReactNode} children\r\n */\r\n","import { useCallback, useEffect, useRef } from 'react';\r\n\r\n/**\r\n * @template {Function} C\r\n * @param {C} callback\r\n * @param {number} ms\r\n * @returns {C}\r\n */\r\nexport default function useDebouncedCallback(callback, ms) {\r\n const callbackRef = useRef(callback);\r\n useEffect(() => {\r\n callbackRef.current = callback;\r\n });\r\n\r\n const activeTimeout = useRef();\r\n useEffect(() => {\r\n return () => clearTimeout(activeTimeout.current);\r\n }, []);\r\n\r\n return useCallback(\r\n (...args) => {\r\n clearTimeout(activeTimeout.current);\r\n activeTimeout.current = setTimeout(() => {\r\n const innerCallback = callbackRef.current;\r\n innerCallback(...args);\r\n }, ms);\r\n },\r\n [ms]\r\n );\r\n}\r\n","import React, { useCallback, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MODE_LIST, MODE_SEARCH, PlanPickerContext } from './usePlanPickerContext';\r\nimport { normalizeItem } from '../usePlanPickerApi/items';\r\nimport usePlanPickerSideEffects from '../usePlanPickerSideEffects';\r\n\r\nconst noop = () => {};\r\n\r\n/**\r\n * @param {SyncPlanPickerProviderProps} props\r\n */\r\nfunction SyncPlanPickerProvider({ action, dataStrategy, initialIndex, items, children }) {\r\n const allItems = useMemo(\r\n () => items.filter(item => item.id !== '').map(item => normalizeItem(item)),\r\n [items]\r\n );\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const [value, setValue] = useState(allItems[initialIndex]);\r\n const runSideEffectsOnChange = usePlanPickerSideEffects({ action });\r\n const selectRef = useRef(null);\r\n\r\n /** @type {(selectedItem: import('../usePlanPickerApi/items').PlanPickerItem) => void} */\r\n const onChange = useCallback(\r\n selectedItem => {\r\n setValue(selectedItem);\r\n runSideEffectsOnChange(selectedItem);\r\n },\r\n [runSideEffectsOnChange]\r\n );\r\n\r\n /** @type {import(\"./usePlanPickerContext\").PlanPickerContextBag} */\r\n const contextValue = useMemo(() => {\r\n const total = allItems.length;\r\n const normalizedSearchQuery = searchQuery.toLowerCase().trim();\r\n const mode = normalizedSearchQuery ? MODE_SEARCH : MODE_LIST;\r\n const options =\r\n mode === MODE_SEARCH\r\n ? allItems.filter(option => {\r\n return option.name.toLowerCase().includes(normalizedSearchQuery);\r\n })\r\n : allItems;\r\n\r\n return {\r\n dataStrategy,\r\n mode,\r\n options,\r\n total,\r\n isWaitingForInitialData: false,\r\n loadOptionsByIndex: noop,\r\n searchQuery,\r\n updateSearchQuery: setSearchQuery,\r\n selectedId: value?.id ?? null,\r\n value,\r\n onChange,\r\n selectRef\r\n };\r\n }, [allItems, dataStrategy, onChange, searchQuery, value]);\r\n\r\n return {children};\r\n}\r\n\r\nSyncPlanPickerProvider.propTypes = {\r\n dataStrategy: PropTypes.oneOf(['sync']),\r\n action: PropTypes.object,\r\n initialIndex: PropTypes.number,\r\n items: PropTypes.arrayOf(PropTypes.object),\r\n children: PropTypes.node\r\n};\r\n\r\nexport default SyncPlanPickerProvider;\r\n\r\n/**\r\n * @typedef {object} SyncPlanPickerProviderProps\r\n * @prop {'sync'} dataStrategy\r\n * @prop {import('../usePlanPickerSideEffects').PlanChangeAction} action\r\n * @prop {string} initialId\r\n * @prop {number} initialIndex\r\n * @prop {import('../usePlanPickerApi/items').RawPlanPickerItem[]} items\r\n * @prop {import('react').ReactNode} [children]\r\n */\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport AsyncPlanPickerProvider from './AsyncPlanPickerProvider';\r\nimport SyncPlanPickerProvider from './SyncPlanPickerProvider';\r\n\r\n/**\r\n * @param {PlanPickerProviderProps} props\r\n */\r\nfunction PlanPickerProvider(props) {\r\n if (props.dataStrategy === 'async') {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n}\r\n\r\nPlanPickerProvider.propTypes = {\r\n dataStrategy: PropTypes.oneOf(['async', 'sync'])\r\n};\r\n\r\nexport default PlanPickerProvider;\r\n\r\n/**\r\n * @typedef {import('./AsyncPlanPickerProvider').AsyncPlanPickerProviderProps | import('./SyncPlanPickerProvider').SyncPlanPickerProviderProps} PlanPickerProviderProps\r\n */\r\n","/* eslint-disable react/prop-types */\r\nimport React, { useCallback, useEffect, useRef } from 'react';\r\nimport { components } from 'react-select';\r\nimport { useVirtual } from 'react-virtual';\r\nimport { getOptionValue } from './usePlanPickerApi/items';\r\nimport { usePlanPickerContext } from './PlanPickerContext';\r\n\r\n/**\r\n * Workaround for React Select issue \"Dynamically updating the option list rests the focus to the first element\"\r\n *\r\n * See: https://github.com/JedWatson/react-select/issues/5367\r\n *\r\n * @param {import('./PlanPickerContext').PlanPickerContextBag['selectRef']} selectRef\r\n * @param {import('./usePlanPickerApi/items').PlanPickerItemWithStatus[]} options\r\n */\r\nfunction useFixReactSelectFocus(selectRef, options) {\r\n // HACK: This accesses the select class via a ref\r\n const select = selectRef.current;\r\n if (select && select.state.focusedOption) {\r\n const target = select.state.focusedOption;\r\n\r\n /** @type {import('./usePlanPickerApi/items').PlanPickerItemWithStatus | null} */\r\n let focusedOption = null;\r\n\r\n if (target.status === 'loaded') {\r\n const targetValue = getOptionValue(target);\r\n focusedOption = options.find(o => getOptionValue(o) === targetValue) ?? null;\r\n } else {\r\n // The sort order of the options list is stable, so we can look up the correct\r\n // object by index when we don't know it's ID.\r\n focusedOption = options[target.ix];\r\n }\r\n\r\n // HACK: manipulating the state without setState is evil (but needed here as we are mid-transition)\r\n select.state.focusedOption = focusedOption;\r\n // HACK: react-select doesn't expect us to handle scrolling, and it doesn't expect items to be\r\n // virtualized. Those two facts means react-select will try to scroll the focused item into\r\n // view, even though we're already managing scroll, and when it does, it will miscalculate the\r\n // scroll offset -- causing the option list to jump to the top.\r\n //\r\n // But, we do have to mess with react-select's internals here to opt out of its scroll\r\n // management.\r\n select.scrollToFocusedOptionOnUpdate = false;\r\n }\r\n}\r\n\r\n/**\r\n * Scroll the menu list to the focused option only in cases where that behavior\r\n * makes sense (ex. for keyboard users using the arrow keys to scroll through\r\n * the list). Otherwise, leave the scroll uncontrolled.\r\n * @param {UseScrollManagerProps} props\r\n */\r\nconst useScrollManager = ({ focusedIndex, firstVisibleIndex, lastVisibleIndex, scrollToIndex }) => {\r\n const shouldControlScrollRef = useRef(true);\r\n const enableControlledScroll = useCallback(() => {\r\n shouldControlScrollRef.current = true;\r\n }, []);\r\n const disableControlledScroll = useCallback(() => {\r\n shouldControlScrollRef.current = false;\r\n }, []);\r\n\r\n useEffect(() => {\r\n const NAVIGATION_KEYS = ['ArrowDown', 'ArrowUp', 'PageUp', 'PageDown', 'Home', 'End'];\r\n /**\r\n * @param {KeyboardEvent} event\r\n */\r\n const onKeyDown = event => {\r\n if (NAVIGATION_KEYS.includes(event.key)) {\r\n enableControlledScroll();\r\n }\r\n };\r\n\r\n const onMouseMove = disableControlledScroll;\r\n const onWheel = disableControlledScroll;\r\n\r\n document.addEventListener('keydown', onKeyDown, { capture: true });\r\n document.addEventListener('mousemove', onMouseMove, { capture: true });\r\n document.addEventListener('wheel', onWheel, { capture: true });\r\n\r\n return () => {\r\n document.removeEventListener('keydown', onKeyDown, { capture: true });\r\n document.removeEventListener('mousemove', onMouseMove, { capture: true });\r\n document.removeEventListener('wheel', onWheel, { capture: true });\r\n };\r\n }, [disableControlledScroll, enableControlledScroll]);\r\n\r\n useEffect(() => {\r\n const shouldControlScroll = shouldControlScrollRef.current;\r\n if (!shouldControlScroll) {\r\n return;\r\n }\r\n\r\n if (focusedIndex === -1 || firstVisibleIndex === -1 || lastVisibleIndex === -1) {\r\n return;\r\n }\r\n\r\n const isFocusedOptionAboveVisible = focusedIndex < firstVisibleIndex;\r\n const isFocusedOptionBelowVisible = focusedIndex > lastVisibleIndex;\r\n const isFocusedOptionHidden = isFocusedOptionAboveVisible || isFocusedOptionBelowVisible;\r\n if (isFocusedOptionHidden) {\r\n scrollToIndex(focusedIndex, { align: 'start' });\r\n }\r\n }, [firstVisibleIndex, lastVisibleIndex, focusedIndex, scrollToIndex]);\r\n};\r\n\r\n/**\r\n * @param {import('react-select').MenuListProps} props\r\n */\r\nfunction VirtualizedPlanPickerMenuList({ innerProps, innerRef, children, ...rest }) {\r\n const { focusedOption, options, selectProps } = rest;\r\n const parentRef = useRef();\r\n const overscan = 1;\r\n const { totalSize, virtualItems, scrollToIndex } = useVirtual({\r\n size: options.length,\r\n parentRef,\r\n overscan,\r\n estimateSize: useCallback(() => 40, [])\r\n });\r\n const { loadOptionsByIndex, selectRef } = usePlanPickerContext();\r\n\r\n const startIndex = virtualItems.at(0)?.index ?? -1;\r\n const endIndex = virtualItems.at(-1)?.index ?? -1;\r\n const focusedIndex = options.indexOf(focusedOption);\r\n\r\n useFixReactSelectFocus(selectRef, options);\r\n useScrollManager({\r\n focusedIndex,\r\n firstVisibleIndex: startIndex > -1 ? startIndex + overscan : -1,\r\n lastVisibleIndex: endIndex > -1 ? endIndex - overscan : -1,\r\n scrollToIndex\r\n });\r\n\r\n useEffect(() => {\r\n if (startIndex === -1 || endIndex === -1) {\r\n return;\r\n }\r\n\r\n const optionsInView = options.slice(startIndex, endIndex + 1);\r\n /** @type {number[]} */\r\n const unloadedIndexes = optionsInView.reduce((indexes, option, i) => {\r\n if (option.status === 'unloaded') {\r\n // Remember to add startIndex back in to get the absolute index\r\n indexes.push(i + startIndex);\r\n }\r\n\r\n return indexes;\r\n }, []);\r\n\r\n if (unloadedIndexes.length) {\r\n const controller = new AbortController();\r\n loadOptionsByIndex(unloadedIndexes, controller.signal);\r\n\r\n // FIXME: Returning a cleanup function here is the \"correct\"\r\n // approach, according to React -- if the plan picker unmounts,\r\n // we want to abort the above async operation. But doing this\r\n // so far has actually broken lazy loading; the async load is\r\n // being aborted prematurely every time.\r\n // eslint-disable-next-line consistent-return\r\n // return () => {\r\n // controller.abort();\r\n // };\r\n }\r\n }, [endIndex, loadOptionsByIndex, options, startIndex]);\r\n\r\n /** @type {import('react').ReactNode} */\r\n let menuUI;\r\n if (selectProps.isLoading || options.length === 0) {\r\n // Fallback to the default LoadingMessage or NoOptionsMessage\r\n menuUI = children;\r\n } else {\r\n const childrenAsArray = React.Children.toArray(children);\r\n menuUI = (\r\n \r\n {virtualItems.map(virtualItem => {\r\n const child = childrenAsArray[virtualItem.index];\r\n\r\n return (\r\n \r\n {child}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n return (\r\n {\r\n parentRef.current = el;\r\n innerRef(el);\r\n }}\r\n >\r\n {menuUI}\r\n \r\n );\r\n}\r\n\r\nexport default VirtualizedPlanPickerMenuList;\r\n\r\n/**\r\n * @typedef {object} UseScrollManagerProps\r\n * @prop {number} focusedIndex\r\n * @prop {number} firstVisibleIndex\r\n * @prop {number} lastVisibleIndex\r\n * @prop {(index: number) => void} scrollToIndex\r\n */\r\n","import React, { memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { components } from 'react-select';\r\n\r\n/**\r\n * @param {import('react-select').OptionProps} props\r\n */\r\nfunction PlanPickerOption(props) {\r\n const { className, data, label, isDisabled, isFocused, isSelected } = props;\r\n\r\n const optionWrapperClasses = classNames(\r\n className,\r\n 'asc-select__option asc-select__option--custom',\r\n `dca-plan-picker__option dca-plan-picker__option--${data.status}`,\r\n typeof data.ix !== 'undefined' &&\r\n `dca-plan-picker__option--${data.ix % 2 === 0 ? 'even' : 'odd'}`,\r\n data.status === 'loaded' && `dca-plan-picker__option--${data.kind}`,\r\n {\r\n 'asc-select__option--is-disabled is-disabled': isDisabled,\r\n 'asc-select__option--is-focused': isFocused,\r\n 'asc-select__option--is-selected': isSelected\r\n }\r\n );\r\n\r\n return (\r\n \r\n {data.status === 'loaded' ? (\r\n
\r\n {label}\r\n {data.moneyValue}\r\n
\r\n ) : (\r\n
\r\n {label}\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nPlanPickerOption.propTypes = {\r\n className: PropTypes.string,\r\n data: PropTypes.object.isRequired,\r\n innerProps: PropTypes.object,\r\n isDisabled: PropTypes.bool,\r\n isFocused: PropTypes.bool,\r\n isSelected: PropTypes.bool,\r\n label: PropTypes.string.isRequired\r\n};\r\n\r\nexport default memo(PlanPickerOption);\r\n","import React from 'react';\r\nimport { components } from 'react-select';\r\n\r\nfunction PlanPickerInput(props) {\r\n /*\r\n Setting autoComplete to \"off\" and type to \"search\" seems to disable\r\n the browser autofill menu. See:\r\n\r\n - https://github.com/JedWatson/react-select/issues/3500\r\n - https://github.com/JedWatson/react-select/issues/3500#issuecomment-1246638994\r\n */\r\n return ;\r\n}\r\n\r\nexport default PlanPickerInput;\r\n","import React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { components } from 'react-select';\r\nimport Select from '@pattern-library/select';\r\nimport { getOptionValue, getOptionLabel, isOptionDisabled } from './usePlanPickerApi/items';\r\nimport { PlanPickerProvider, usePlanPickerContext } from './PlanPickerContext';\r\nimport VirtualizedPlanPickerMenuList from './VirtualizedPlanPickerMenuList';\r\nimport PlanPickerOption from './PlanPickerOption';\r\nimport PlanPickerInput from './PlanPickerInput';\r\n\r\nfunction PlanPickerSelect(textContent) {\r\n const { label, placeholder, loadingMessage, noOptionsMessage } = textContent;\r\n\r\n const {\r\n mode,\r\n dataStrategy,\r\n options = [],\r\n total,\r\n isWaitingForInitialData,\r\n updateSearchQuery,\r\n selectedId,\r\n value,\r\n onChange,\r\n selectRef\r\n } = usePlanPickerContext();\r\n\r\n // Under very specific circumstances, it's a better UX to\r\n // hide the placeholder temporarily while the initial data\r\n // is loading. Without this mitigation, the user could see\r\n // the placeholder flash briefly before the selected plan\r\n // name replaces it.\r\n //\r\n // We reference `selectedId` here rather than `value` because\r\n // in async mode, value always starts as `null` while we're\r\n // fetching the initial data. The true indicator of whether\r\n // there's a selected item or not is whether `selectedId`\r\n // exists.\r\n const shouldHidePlaceholder =\r\n dataStrategy === 'async' &&\r\n mode === 'list' &&\r\n isWaitingForInitialData &&\r\n selectedId !== null;\r\n\r\n return (\r\n
\r\n 10}\r\n placeholder={shouldHidePlaceholder ? '' : placeholder}\r\n options={options}\r\n componentsOverride={useMemo(\r\n () => ({\r\n Input: PlanPickerInput,\r\n MenuList:\r\n dataStrategy === 'async'\r\n ? VirtualizedPlanPickerMenuList\r\n : components.MenuList,\r\n Option: PlanPickerOption\r\n }),\r\n [dataStrategy]\r\n )}\r\n reactSelectProps={{\r\n ref: selectRef,\r\n value,\r\n onChange,\r\n // PlanPickerContext handles filtering for us, either by querying the\r\n // server or synchronously filtering the options before passing them down\r\n // to this component.\r\n filterOption: null,\r\n getOptionLabel,\r\n getOptionValue,\r\n isOptionDisabled,\r\n isLoading: isWaitingForInitialData,\r\n loadingMessage: useCallback(() => loadingMessage, []),\r\n noOptionsMessage: useCallback(() => noOptionsMessage, []),\r\n onInputChange: updateSearchQuery\r\n }}\r\n />\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * @param {PlanPickerProps} props\r\n * @returns {import('./usePlanPickerSideEffects').PlanChangeAction}\r\n */\r\nconst determinePlanChangeAction = ({ onPlanChange, onPlanChangeTargetId, targetId }) => {\r\n if (onPlanChange) {\r\n return {\r\n kind: 'callAngularMethod',\r\n methodName: onPlanChange,\r\n targetId: onPlanChangeTargetId\r\n };\r\n } else if (targetId) {\r\n return {\r\n kind: 'loadHtml',\r\n targetId\r\n };\r\n } else {\r\n return { kind: 'redirect' };\r\n }\r\n};\r\n\r\n/**\r\n * @param {PlanPickerProps} props\r\n */\r\nfunction PlanPicker(props) {\r\n const { filterUrl, planDataToken, initialId, initialIndex, items, textContent } = props;\r\n\r\n const sharedProps = {\r\n action: determinePlanChangeAction(props),\r\n initialId,\r\n initialIndex\r\n };\r\n\r\n /** @type {import('./PlanPickerContext/PlanPickerProvider').PlanPickerProviderProps} */\r\n const providerProps = filterUrl\r\n ? {\r\n ...sharedProps,\r\n dataStrategy: 'async',\r\n apiParams: { url: '/' + filterUrl, token: planDataToken }\r\n }\r\n : {\r\n ...sharedProps,\r\n dataStrategy: 'sync',\r\n items\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nPlanPicker.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.object),\r\n filterUrl: PropTypes.string,\r\n planDataToken: PropTypes.string,\r\n initialId: PropTypes.string,\r\n initialIndex: PropTypes.number,\r\n onPlanChange: PropTypes.string,\r\n onPlanChangeTargetId: PropTypes.string,\r\n targetId: PropTypes.string,\r\n textContent: PropTypes.object\r\n};\r\n\r\nexport default PlanPicker;\r\n\r\n/**\r\n * @typedef {object} PlanPickerProps\r\n * @prop {import('./usePlanPickerApi/items').RawPlanPickerItem[]} [items]\r\n * @prop {string} [filterUrl]\r\n * @prop {string} [planDataToken]\r\n * @prop {string} [initialId]\r\n * @prop {number} [initialIndex]\r\n * @prop {string} [onPlanChange]\r\n * @prop {string} [onPlanChangeTargetId]\r\n * @prop {string} [targetId]\r\n * @prop {PlanPickerTextContent} [textContent]\r\n */\r\n\r\n/**\r\n * @typedef {object} PlanPickerTextContent\r\n * @prop {string} label\r\n * @prop {string} placeholder\r\n * @prop {string} noOptionsMessage\r\n * @prop {string} loadingMessage\r\n */\r\n","import React from 'react';\r\nimport Banner from '@pattern-library/banner';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst propTypes = {\r\n customAttrs: PropTypes.string,\r\n hasCloseButton: PropTypes.bool,\r\n customClass: PropTypes.string,\r\n message: PropTypes.string,\r\n messageRichText: PropTypes.string,\r\n type: PropTypes.string\r\n};\r\n\r\nfunction PDXBanner({ customAttrs, hasCloseButton, customClass, message, messageRichText, type }) {\r\n const text = () => {\r\n const markup = { __html: messageRichText };\r\n return
;\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nPDXBanner.propTypes = propTypes;\r\n\r\nexport default PDXBanner;\r\n","import React, { useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { SearchSelect } from '@pattern-library/select';\r\n\r\nconst propTypes = {\r\n selectProps: PropTypes.shape({\r\n defaultOptions: PropTypes.bool,\r\n id: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n hideLabel: PropTypes.bool,\r\n errorMessage: PropTypes.string,\r\n isDisabled: PropTypes.bool,\r\n isRequired: PropTypes.bool,\r\n loadingMessage: PropTypes.string,\r\n noOptionsMessage: PropTypes.string,\r\n placeholder: PropTypes.string\r\n }),\r\n selectedItem: PropTypes.shape({\r\n description: PropTypes.string,\r\n value: PropTypes.string,\r\n type: PropTypes.string\r\n }),\r\n getPlansAndCompaniesUrl: PropTypes.string.isRequired,\r\n addToWorkingSetUrl: PropTypes.string.isRequired\r\n};\r\n\r\nconst defaultProps = {};\r\n\r\nfunction InternalPlanPicker({\r\n selectProps: { loadingMessage, noOptionsMessage, ...restSelectProps },\r\n selectedItem, getPlansAndCompaniesUrl: getPlansAndCompaniesUrlString,\r\n addToWorkingSetUrl: addToWorkingSetUrlString\r\n}) {\r\n const [value, setValue] = useState(selectedItem.description && selectedItem.value ? selectedItem : { description: '', value: '', type: '' });\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [hasError, setHasError] = useState(false);\r\n\r\n const showLessThanThreeCharsMessage = useCallback((queryString, message) => {\r\n if (queryString.inputValue.length < 3) {\r\n return \"Please type 3 or more characters\";\r\n } else {\r\n return message;\r\n }\r\n }, [loadingMessage, noOptionsMessage]);\r\n\r\n const loadOptions = useCallback((queryString) => {\r\n if (queryString.length < 3) {\r\n setHasError(false);\r\n return;\r\n } else {\r\n return new Promise(async (resolve, reject) => {\r\n const urlSearchParams = new URLSearchParams({ searchValue: queryString });\r\n const getPlansUrl = `${getPlansAndCompaniesUrlString}?${urlSearchParams.toString()}`;\r\n\r\n setIsLoading(true);\r\n\r\n try {\r\n const res = await fetch(getPlansUrl, {\r\n headers: {\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n }\r\n });\r\n\r\n if (!res.ok) {\r\n setHasError(true);\r\n reject();\r\n }\r\n\r\n const data = await res.json();\r\n\r\n resolve(data);\r\n }\r\n catch (e) {\r\n setHasError(true);\r\n reject();\r\n }\r\n\r\n setIsLoading(false);\r\n });\r\n }\r\n }, [setHasError, setIsLoading, getPlansAndCompaniesUrlString]);\r\n\r\n const onChange = useCallback((option) => {\r\n if (!option) {\r\n setValue({ description: '', value: '', type: '' });\r\n return;\r\n }\r\n\r\n npg.showBusyIndicator();\r\n\r\n setValue(option);\r\n\r\n const { value, type } = option;\r\n const urlSearchParams = new URLSearchParams({ value, type });\r\n\r\n window.location.href = `${addToWorkingSetUrlString}?${urlSearchParams.toString()}`;\r\n }, [addToWorkingSetUrlString]);\r\n\r\n return (\r\n
\r\n showLessThanThreeCharsMessage(queryString, loadingMessage)}\r\n noOptionsMessage={(queryString) => showLessThanThreeCharsMessage(queryString, noOptionsMessage)}\r\n onChange={onChange}\r\n reactSelectProps={{\r\n getOptionLabel: (option) => (option.description)\r\n }}\r\n value={value}\r\n {...restSelectProps}\r\n />\r\n
\r\n );\r\n}\r\n\r\nInternalPlanPicker.propTypes = propTypes;\r\nInternalPlanPicker.defaultProps = defaultProps;\r\n\r\nexport default InternalPlanPicker;","import React, { useState, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button } from '@pattern-library/buttons';\r\nimport Modal from '@pattern-library/modal';\r\nimport { sendAnalyticsEvent } from '../../utils/analytics';\r\n\r\nconst propTypes = {\r\n triggerButtonLabel: PropTypes.string.isRequired,\r\n header: PropTypes.string.isRequired,\r\n continueButtonLabel: PropTypes.string,\r\n message: PropTypes.string.isRequired,\r\n isPending: PropTypes.bool,\r\n analytics: PropTypes.string\r\n};\r\n\r\nconst defaultProps = {\r\n isPending: false\r\n};\r\n\r\nfunction ManagedAccountWarningModal({ analytics, triggerButtonLabel, header, continueButtonLabel, message, isPending }) {\r\n const [isModalActive, setIsModalActive] = useState(false);\r\n const triggerButtonRef = useRef();\r\n\r\n const onButtonClick = () => {\r\n setIsModalActive(true);\r\n };\r\n \r\n const handleContinue = () => {\r\n sendAnalyticsEvent(analytics);\r\n };\r\n\r\n const footerChilden = isPending ? undefined : (\r\n \r\n {continueButtonLabel}\r\n \r\n );\r\n return (\r\n <>\r\n \r\n setIsModalActive(false)}\r\n hasFooter\r\n isActive={isModalActive}\r\n triggerButtonRef={triggerButtonRef}\r\n hasFooterClose={isPending}\r\n footerCloseButtonText={continueButtonLabel}\r\n footerCloseButtonClasses='asc-btn--small'\r\n widthClassNames=\"asc-col-9\"\r\n footerChildren={footerChilden}\r\n >\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nManagedAccountWarningModal.propTypes = propTypes;\r\nManagedAccountWarningModal.defaultProps = defaultProps;\r\nexport default ManagedAccountWarningModal;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Card from '@pattern-library/card';\r\nimport { HandshakeIcon } from '@pattern-library/icon';\r\nimport classNames from 'classnames';\r\nimport { sendAnalyticsEvent } from '../../utils/analytics';\r\n\r\nconst propTypes = {\r\n planName: PropTypes.string,\r\n planId: PropTypes.string,\r\n maEnrollmentCount: PropTypes.number,\r\n maPlanCount: PropTypes.number,\r\n arkManagedAcctProductCode: PropTypes.string,\r\n content: PropTypes.object.isRequired\r\n};\r\n\r\nfunction ManagedAccountBannerBody({ content, planName, planId, maEnrollmentCount, maPlanCount, arkManagedAcctProductCode }) {\r\n if(maPlanCount === 0) { \r\n return (<>);\r\n }\r\n\r\n const cardClassNames = classNames('managed-account-banner', {'managed-account-banner_enrolled' : maEnrollmentCount > 0, 'managed-account-banner_unenrolled': maEnrollmentCount === 0});\r\n const bannerLabelsClassName=\"mananaged-account-banner-labels\"\r\n const bannerTitleMarkup =

{content.title}

;\r\n const planNameMarkup =

;\r\n \r\n let labelsContent;\r\n let buttonClass;\r\n let bannerContent;\r\n \r\n if(maEnrollmentCount > 0) {\r\n buttonClass = 'asc-btn asc-btn--tertiary';\r\n\r\n if (maEnrollmentCount === 1 && maPlanCount === 1) {\r\n bannerContent = content.enrolled.onePlan;\r\n labelsContent = (\r\n

\r\n {bannerTitleMarkup}\r\n {planNameMarkup}\r\n
\r\n );\r\n } else {\r\n labelsContent = (\r\n
\r\n {bannerTitleMarkup}\r\n
\r\n );\r\n if (maEnrollmentCount === maPlanCount) {\r\n bannerContent = content.enrolled.allPlans;\r\n } else {\r\n bannerContent = content.enrolled.somePlans;\r\n }\r\n }\r\n } else {\r\n bannerContent = content.notEnrolled;\r\n buttonClass = 'asc-btn asc-btn--pill';\r\n if(maPlanCount === 1) {\r\n labelsContent = (\r\n
\r\n {planNameMarkup}\r\n
\r\n );\r\n }\r\n }\r\n\r\n const handleClick = () => {\r\n sendAnalyticsEvent(`MA ${maPlanCount > 0 ? 'E' : 'U'} Dashboard ${arkManagedAcctProductCode}`);\r\n };\r\n\r\n return (\r\n \r\n \r\n {labelsContent && labelsContent}\r\n
\r\n

{bannerContent.bodyText}

\r\n
\r\n \r\n {bannerContent.buttonLabel}\r\n \r\n \r\n );\r\n}\r\n\r\nManagedAccountBannerBody.propTypes = propTypes;\r\nexport default ManagedAccountBannerBody;\r\n","import React, {useState, useEffect} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport withLoading from '@pattern-library/with-loading';\r\nimport ManagedAccountBannerBody from './ManagedAccountBannerBody'; \r\n\r\nconst propTypes = {\r\n content: PropTypes.object,\r\n endpoint: PropTypes.string\r\n};\r\n\r\nconst ManagedAccountBannerWithLoading = withLoading(ManagedAccountBannerBody, () => {return (<>);});\r\n\r\nfunction ManagedAccountBanner({ content, endpoint }) {\r\n const [isLoading, setIsLoading] = useState('init');\r\n const [bannerData, setBannerData] = useState({});\r\n\r\n useEffect(() => {\r\n fetchBannerData();\r\n }, []);\r\n\r\n const fetchBannerData = async () => {\r\n setIsLoading('pending');\r\n try{\r\n const res = await fetch(`${endpoint}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n\r\n const data = await res.json();\r\n setIsLoading('resolved');\r\n setBannerData(data);\r\n } catch (e) {\r\n setIsLoading('rejected');\r\n }\r\n return;\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nManagedAccountBanner.propTypes = propTypes;\r\nexport default ManagedAccountBanner;\r\n","import React, { useState, useRef } from 'react';\r\nimport { Button } from '@pattern-library/buttons';\r\nimport Modal from '@pattern-library/modal';\r\nimport axios from 'axios';\r\n\r\nconst defaultProps = {\r\n isPending: false\r\n};\r\n\r\nfunction SchwabPCRAModal(props) {\r\n const [isModalActive, setIsModalActive] = useState(false);\r\n const triggerButtonRef = useRef();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const [actionURL, setActionURL] = useState(null);\r\n const [APIID, setAPIID] = useState(null);\r\n const [DATA, setDATA] = useState(null);\r\n const [APIENC, setAPIENC] = useState(null);\r\n\r\n const onButtonClick = () => {\r\n setIsModalActive(true);\r\n };\r\n\r\n const OnFormSubmit = () => {\r\n setIsLoading(true);\r\n axios\r\n .post('/Participant/investment/SelfDirectedBrokerageAccountOpen?p=' + props.NavigationKey)\r\n .then(response => {\r\n var data = response.data;\r\n setActionURL(data.ACTION);\r\n setAPIID(data.APIID);\r\n setDATA(data.DATA);\r\n setAPIENC(data.APIENC);\r\n })\r\n .catch(() => {\r\n setIsLoading(false);\r\n })\r\n .finally(() => {\r\n document.getElementById('FORM1').submit();\r\n setIsModalActive(false);\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n setIsModalActive(false)}\r\n hasFooter={false}\r\n hasFooterClose={false}\r\n isActive={isModalActive}\r\n headerText=\"Schwab Personal Choice Retirement Account® (PCRA)\"\r\n >\r\n
\r\n \r\n \r\n \r\n

You are now leaving this website and will be entering a secure area of the Charles Schwab & Co., Inc. schwabpcra.com website.

\r\n

Privacy

\r\n

I acknowledge that by using the secured section of the PCRA website, Schwab will be gaining access to my\r\n personal financial information. Information that I provide and that I authorize my Retirement Plan Provider to\r\n provide by using the PCRA website and other Information provided by Schwab is subject to the use and\r\n disclosure conditions outlined in Schwab's privacy policy at www.schwab.com/public/schwab/nn/legal_compliance/privacy.

\r\n

I agree that, when I click on the \"Continue\" button, my agreement or consent will be legally binding and enforceable and the legal equivalent of my handwritten signature.

\r\n
\r\n
\r\n OnFormSubmit()} />\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nSchwabPCRAModal.defaultProps = defaultProps;\r\nexport default SchwabPCRAModal;","import ExploreMyOptionsModal from './components/ExploreMyOptionsModal/ExploreMyOptionsModal';\r\nimport SsoButton from './components/SsoButton';\r\nimport renderReactClient from './render-react-client';\r\nimport PlanPicker from './components/PlanPicker';\r\nimport PDXBanner from './components/Banner/PDXBanner';\r\nimport InternalPlanPicker from './components/InternalPlanPicker';\r\nimport ManagedAccountWarningModal from './components/ManagedAccountWarningModal/ManagedAccountWarningModal';\r\nimport ManagedAccountBanner from './components/ManagedAccountBanner/ManagedAccountBanner';\r\nimport SchwabPCRAModal from './components/SchwabPCRAModal/SchwabPCRAModal';\r\nimport { reactComponentDirective } from './lib/interop/angular';\r\n\r\nlet renderCommonComponents = () => {\r\n renderReactClient({\r\n ExploreMyOptionsModal,\r\n PlanPicker,\r\n SsoButton,\r\n PDXBanner,\r\n InternalPlanPicker,\r\n ManagedAccountBanner,\r\n ManagedAccountWarningModal,\r\n SchwabPCRAModal\r\n });\r\n};\r\n\r\nwindow.npg = window.npg || {};\r\nwindow.npg.renderCommonComponents = renderCommonComponents;\r\n\r\n// call once to render all components on a page\r\nrenderCommonComponents();\r\n\r\nif (window.npg.ngApp) {\r\n window.npg.ngApp.directive('managedAccountWarningModal', reactComponentDirective(ManagedAccountWarningModal));\r\n window.npg.ngApp.directive('managedAccountBanner', reactComponentDirective(ManagedAccountBanner));\r\n}\r\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport default index;\n","function t(t){return t.split(\"-\")[1]}function e(t){return\"y\"===t?\"height\":\"width\"}function n(t){return t.split(\"-\")[0]}function o(t){return[\"top\",\"bottom\"].includes(n(t))?\"x\":\"y\"}function i(i,r,a){let{reference:l,floating:s}=i;const c=l.x+l.width/2-s.width/2,f=l.y+l.height/2-s.height/2,u=o(r),m=e(u),g=l[m]/2-s[m]/2,d=\"x\"===u;let p;switch(n(r)){case\"top\":p={x:c,y:l.y-s.height};break;case\"bottom\":p={x:c,y:l.y+l.height};break;case\"right\":p={x:l.x+l.width,y:f};break;case\"left\":p={x:l.x-s.width,y:f};break;default:p={x:l.x,y:l.y}}switch(t(r)){case\"start\":p[u]-=g*(a&&d?-1:1);break;case\"end\":p[u]+=g*(a&&d?-1:1)}return p}const r=async(t,e,n)=>{const{placement:o=\"bottom\",strategy:r=\"absolute\",middleware:a=[],platform:l}=n,s=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(e));let f=await l.getElementRects({reference:t,floating:e,strategy:r}),{x:u,y:m}=i(f,o,c),g=o,d={},p=0;for(let n=0;n({name:\"arrow\",options:n,async fn(i){const{element:r,padding:l=0}=n||{},{x:s,y:c,placement:f,rects:m,platform:g}=i;if(null==r)return{};const d=a(l),p={x:s,y:c},h=o(f),y=e(h),x=await g.getDimensions(r),w=\"y\"===h?\"top\":\"left\",v=\"y\"===h?\"bottom\":\"right\",b=m.reference[y]+m.reference[h]-p[h]-m.floating[y],R=p[h]-m.reference[h],A=await(null==g.getOffsetParent?void 0:g.getOffsetParent(r));let P=A?\"y\"===h?A.clientHeight||0:A.clientWidth||0:0;0===P&&(P=m.floating[y]);const T=b/2-R/2,O=d[w],D=P-x[y]-d[v],E=P/2-x[y]/2+T,L=u(O,E,D),k=null!=t(f)&&E!=L&&m.reference[y]/2-(Et.concat(e,e+\"-start\",e+\"-end\")),[]),p={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function h(t){return t.replace(/left|right|bottom|top/g,(t=>p[t]))}function y(n,i,r){void 0===r&&(r=!1);const a=t(n),l=o(n),s=e(l);let c=\"x\"===l?a===(r?\"end\":\"start\")?\"right\":\"left\":\"start\"===a?\"bottom\":\"top\";return i.reference[s]>i.floating[s]&&(c=h(c)),{main:c,cross:h(c)}}const x={start:\"end\",end:\"start\"};function w(t){return t.replace(/start|end/g,(t=>x[t]))}const v=function(e){return void 0===e&&(e={}),{name:\"autoPlacement\",options:e,async fn(o){var i,r,a;const{rects:l,middlewareData:c,placement:f,platform:u,elements:m}=o,{alignment:g,allowedPlacements:p=d,autoAlignment:h=!0,...x}=e,v=void 0!==g||p===d?function(e,o,i){return(e?[...i.filter((n=>t(n)===e)),...i.filter((n=>t(n)!==e))]:i.filter((t=>n(t)===t))).filter((n=>!e||t(n)===e||!!o&&w(n)!==n))}(g||null,h,p):p,b=await s(o,x),R=(null==(i=c.autoPlacement)?void 0:i.index)||0,A=v[R];if(null==A)return{};const{main:P,cross:T}=y(A,l,await(null==u.isRTL?void 0:u.isRTL(m.floating)));if(f!==A)return{reset:{placement:v[0]}};const O=[b[n(A)],b[P],b[T]],D=[...(null==(r=c.autoPlacement)?void 0:r.overflows)||[],{placement:A,overflows:O}],E=v[R+1];if(E)return{data:{index:R+1,overflows:D},reset:{placement:E}};const L=D.slice().sort(((t,e)=>t.overflows[0]-e.overflows[0])),k=null==(a=L.find((t=>{let{overflows:e}=t;return e.every((t=>t<=0))})))?void 0:a.placement,B=k||L[0].placement;return B!==f?{data:{index:R+1,overflows:D},reset:{placement:B}}:{}}}};const b=function(e){return void 0===e&&(e={}),{name:\"flip\",options:e,async fn(o){var i;const{placement:r,middlewareData:a,rects:l,initialPlacement:c,platform:f,elements:u}=o,{mainAxis:m=!0,crossAxis:g=!0,fallbackPlacements:d,fallbackStrategy:p=\"bestFit\",fallbackAxisSideDirection:x=\"none\",flipAlignment:v=!0,...b}=e,R=n(r),A=n(c)===c,P=await(null==f.isRTL?void 0:f.isRTL(u.floating)),T=d||(A||!v?[h(c)]:function(t){const e=h(t);return[w(t),e,w(e)]}(c));d||\"none\"===x||T.push(...function(e,o,i,r){const a=t(e);let l=function(t,e,n){const o=[\"left\",\"right\"],i=[\"right\",\"left\"],r=[\"top\",\"bottom\"],a=[\"bottom\",\"top\"];switch(t){case\"top\":case\"bottom\":return n?e?i:o:e?o:i;case\"left\":case\"right\":return e?r:a;default:return[]}}(n(e),\"start\"===i,r);return a&&(l=l.map((t=>t+\"-\"+a)),o&&(l=l.concat(l.map(w)))),l}(c,v,x,P));const O=[c,...T],D=await s(o,b),E=[];let L=(null==(i=a.flip)?void 0:i.overflows)||[];if(m&&E.push(D[R]),g){const{main:t,cross:e}=y(r,l,P);E.push(D[t],D[e])}if(L=[...L,{placement:r,overflows:E}],!E.every((t=>t<=0))){var k;const t=((null==(k=a.flip)?void 0:k.index)||0)+1,e=O[t];if(e)return{data:{index:t,overflows:L},reset:{placement:e}};let n=\"bottom\";switch(p){case\"bestFit\":{var B;const t=null==(B=L.map((t=>[t,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:B[0].placement;t&&(n=t);break}case\"initialPlacement\":n=c}if(r!==n)return{reset:{placement:n}}}return{}}}};function R(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function A(t){return g.some((e=>t[e]>=0))}const P=function(t){return void 0===t&&(t={}),{name:\"hide\",options:t,async fn(e){const{strategy:n=\"referenceHidden\",...o}=t,{rects:i}=e;switch(n){case\"referenceHidden\":{const t=R(await s(e,{...o,elementContext:\"reference\"}),i.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:A(t)}}}case\"escaped\":{const t=R(await s(e,{...o,altBoundary:!0}),i.floating);return{data:{escapedOffsets:t,escaped:A(t)}}}default:return{}}}}},T=function(t){return void 0===t&&(t={}),{name:\"inline\",options:t,async fn(e){const{placement:i,elements:r,rects:s,platform:u,strategy:m}=e,{padding:g=2,x:d,y:p}=t,h=l(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({rect:s.reference,offsetParent:await(null==u.getOffsetParent?void 0:u.getOffsetParent(r.floating)),strategy:m}):s.reference),y=await(null==u.getClientRects?void 0:u.getClientRects(r.reference))||[],x=a(g);const w=await u.getElementRects({reference:{getBoundingClientRect:function(){if(2===y.length&&y[0].left>y[1].right&&null!=d&&null!=p)return y.find((t=>d>t.left-x.left&&dt.top-x.top&&p=2){if(\"x\"===o(i)){const t=y[0],e=y[y.length-1],o=\"top\"===n(i),r=t.top,a=e.bottom,l=o?t.left:e.left,s=o?t.right:e.right;return{top:r,bottom:a,left:l,right:s,width:s-l,height:a-r,x:l,y:r}}const t=\"left\"===n(i),e=f(...y.map((t=>t.right))),r=c(...y.map((t=>t.left))),a=y.filter((n=>t?n.left===r:n.right===e)),l=a[0].top,s=a[a.length-1].bottom;return{top:l,bottom:s,left:r,right:e,width:e-r,height:s-l,x:r,y:l}}return h}},floating:r.floating,strategy:m});return s.reference.x!==w.reference.x||s.reference.y!==w.reference.y||s.reference.width!==w.reference.width||s.reference.height!==w.reference.height?{reset:{rects:w}}:{}}}};const O=function(e){return void 0===e&&(e=0),{name:\"offset\",options:e,async fn(i){const{x:r,y:a}=i,l=await async function(e,i){const{placement:r,platform:a,elements:l}=e,s=await(null==a.isRTL?void 0:a.isRTL(l.floating)),c=n(r),f=t(r),u=\"x\"===o(r),m=[\"left\",\"top\"].includes(c)?-1:1,g=s&&u?-1:1,d=\"function\"==typeof i?i(e):i;let{mainAxis:p,crossAxis:h,alignmentAxis:y}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return f&&\"number\"==typeof y&&(h=\"end\"===f?-1*y:y),u?{x:h*g,y:p*m}:{x:p*m,y:h*g}}(i,e);return{x:r+l.x,y:a+l.y,data:l}}}};function D(t){return\"x\"===t?\"y\":\"x\"}const E=function(t){return void 0===t&&(t={}),{name:\"shift\",options:t,async fn(e){const{x:i,y:r,placement:a}=e,{mainAxis:l=!0,crossAxis:c=!1,limiter:f={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...m}=t,g={x:i,y:r},d=await s(e,m),p=o(n(a)),h=D(p);let y=g[p],x=g[h];if(l){const t=\"y\"===p?\"bottom\":\"right\";y=u(y+d[\"y\"===p?\"top\":\"left\"],y,y-d[t])}if(c){const t=\"y\"===h?\"bottom\":\"right\";x=u(x+d[\"y\"===h?\"top\":\"left\"],x,x-d[t])}const w=f.fn({...e,[p]:y,[h]:x});return{...w,data:{x:w.x-i,y:w.y-r}}}}},L=function(t){return void 0===t&&(t={}),{options:t,fn(e){const{x:i,y:r,placement:a,rects:l,middlewareData:s}=e,{offset:c=0,mainAxis:f=!0,crossAxis:u=!0}=t,m={x:i,y:r},g=o(a),d=D(g);let p=m[g],h=m[d];const y=\"function\"==typeof c?c(e):c,x=\"number\"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const t=\"y\"===g?\"height\":\"width\",e=l.reference[g]-l.floating[t]+x.mainAxis,n=l.reference[g]+l.reference[t]-x.mainAxis;pn&&(p=n)}if(u){var w,v;const t=\"y\"===g?\"width\":\"height\",e=[\"top\",\"left\"].includes(n(a)),o=l.reference[d]-l.floating[t]+(e&&(null==(w=s.offset)?void 0:w[d])||0)+(e?0:x.crossAxis),i=l.reference[d]+l.reference[t]+(e?0:(null==(v=s.offset)?void 0:v[d])||0)-(e?x.crossAxis:0);hi&&(h=i)}return{[g]:p,[d]:h}}}},k=function(e){return void 0===e&&(e={}),{name:\"size\",options:e,async fn(o){const{placement:i,rects:r,platform:a,elements:l}=o,{apply:c=(()=>{}),...u}=e,m=await s(o,u),g=n(i),d=t(i);let p,h;\"top\"===g||\"bottom\"===g?(p=g,h=d===(await(null==a.isRTL?void 0:a.isRTL(l.floating))?\"start\":\"end\")?\"left\":\"right\"):(h=g,p=\"end\"===d?\"top\":\"bottom\");const y=f(m.left,0),x=f(m.right,0),w=f(m.top,0),v=f(m.bottom,0),b={availableHeight:r.floating.height-([\"left\",\"right\"].includes(i)?2*(0!==w||0!==v?w+v:f(m.top,m.bottom)):m[p]),availableWidth:r.floating.width-([\"top\",\"bottom\"].includes(i)?2*(0!==y||0!==x?y+x:f(m.left,m.right)):m[h])};await c({...o,...b});const R=await a.getDimensions(l.floating);return r.floating.width!==R.width||r.floating.height!==R.height?{reset:{rects:!0}}:{}}}};export{m as arrow,v as autoPlacement,r as computePosition,s as detectOverflow,b as flip,P as hide,T as inline,L as limitShift,O as offset,l as rectToClientRect,E as shift,k as size};\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}function i(t){return f(t)?(t.nodeName||\"\").toLowerCase():\"\"}let r;function l(){if(r)return r;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(r=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),r):navigator.userAgent}function c(t){return t instanceof n(t).HTMLElement}function s(t){return t instanceof n(t).Element}function f(t){return t instanceof n(t).Node}function u(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function a(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function d(t){return[\"table\",\"td\",\"th\"].includes(i(t))}function h(t){const e=/firefox/i.test(l()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function p(){return!/^((?!chrome|android).)*safari/i.test(l())}function g(t){return[\"html\",\"body\",\"#document\"].includes(i(t))}const m=Math.min,y=Math.max,x=Math.round;function w(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=t.offsetWidth,l=t.offsetHeight,c=x(n)!==r||x(i)!==l;return c&&(n=r,i=l),{width:n,height:i,fallback:c}}function v(t){return s(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!c(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=w(e);let l=(r?x(n.width):n.width)/o,s=(r?x(n.height):n.height)/i;return l&&Number.isFinite(l)||(l=1),s&&Number.isFinite(s)||(s=1),{x:l,y:s}}function E(t,e,o,i){var r,l;void 0===e&&(e=!1),void 0===o&&(o=!1);const c=t.getBoundingClientRect(),f=v(t);let u=b;e&&(i?s(i)&&(u=L(i)):u=L(t));const a=f?n(f):window,d=!p()&&o;let h=(c.left+(d&&(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0))/u.x,g=(c.top+(d&&(null==(l=a.visualViewport)?void 0:l.offsetTop)||0))/u.y,m=c.width/u.x,y=c.height/u.y;if(f){const t=n(f),e=i&&s(i)?n(i):i;let o=t.frameElement;for(;o&&i&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,h*=t.x,g*=t.y,m*=t.x,y*=t.y,h+=e.x,g+=e.y,o=n(o).frameElement}}return{width:m,height:y,top:g,right:h+m,bottom:g+y,left:h,x:h,y:g}}function R(t){return((f(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return s(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(R(t)).left+T(t).scrollLeft}function F(t,e,n){const o=c(e),r=R(e),l=E(t,!0,\"fixed\"===n,e);let s={scrollLeft:0,scrollTop:0};const f={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==i(e)||a(r))&&(s=T(e)),c(e)){const t=E(e,!0);f.x=t.x+e.clientLeft,f.y=t.y+e.clientTop}else r&&(f.x=C(r));return{x:l.left+s.scrollLeft-f.x,y:l.top+s.scrollTop-f.y,width:l.width,height:l.height}}function W(t){if(\"html\"===i(t))return t;const e=t.assignedSlot||t.parentNode||(u(t)?t.host:null)||R(t);return u(e)?e.host:e}function D(t){return c(t)&&\"fixed\"!==o(t).position?t.offsetParent:null}function S(t){const e=n(t);let r=D(t);for(;r&&d(r)&&\"static\"===o(r).position;)r=D(r);return r&&(\"html\"===i(r)||\"body\"===i(r)&&\"static\"===o(r).position&&!h(r))?e:r||function(t){let e=W(t);for(;c(e)&&!g(e);){if(h(e))return e;e=W(e)}return null}(t)||e}function A(t){const e=W(t);return g(e)?t.ownerDocument.body:c(e)&&a(e)?e:A(e)}function H(t,e){var o;void 0===e&&(e=[]);const i=A(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],a(i)?i:[]):e.concat(i,H(i))}function O(e,i,r){return\"viewport\"===i?t(function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=p();(t||!t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,r)):s(i)?function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=c(t)?L(t):{x:1,y:1},l=t.clientWidth*r.x,s=t.clientHeight*r.y,f=i*r.x,u=o*r.y;return{top:u,left:f,right:f+l,bottom:u+s,x:f,y:u,width:l,height:s}}(i,r):t(function(t){var e;const n=R(t),i=T(t),r=null==(e=t.ownerDocument)?void 0:e.body,l=y(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),c=y(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0);let s=-i.scrollLeft+C(t);const f=-i.scrollTop;return\"rtl\"===o(r||n).direction&&(s+=y(n.clientWidth,r?r.clientWidth:0)-l),{width:l,height:c,x:s,y:f}}(R(e)))}const P={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:r,strategy:l}=t;const c=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let r=H(t).filter((t=>s(t)&&\"body\"!==i(t))),l=null;const c=\"fixed\"===o(t).position;let f=c?W(t):t;for(;s(f)&&!g(f);){const t=o(f),e=h(f);(c?e||l:e||\"static\"!==t.position||!l||![\"absolute\",\"fixed\"].includes(l.position))?l=t:r=r.filter((t=>t!==f)),f=W(f)}return e.set(t,r),r}(e,this._c):[].concat(n),f=[...c,r],u=f[0],a=f.reduce(((t,n)=>{const o=O(e,n,l);return t.top=y(o.top,t.top),t.right=m(o.right,t.right),t.bottom=m(o.bottom,t.bottom),t.left=y(o.left,t.left),t}),O(e,u,l));return{width:a.right-a.left,height:a.bottom-a.top,x:a.left,y:a.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const r=c(n),l=R(n);if(n===l)return e;let s={scrollLeft:0,scrollTop:0},f={x:1,y:1};const u={x:0,y:0};if((r||!r&&\"fixed\"!==o)&&((\"body\"!==i(n)||a(l))&&(s=T(n)),c(n))){const t=E(n);f=L(n),u.x=t.x+n.clientLeft,u.y=t.y+n.clientTop}return{width:e.width*f.x,height:e.height*f.y,x:e.x*f.x-s.scrollLeft*f.x+u.x,y:e.y*f.y-s.scrollTop*f.y+u.y}},isElement:s,getDimensions:function(t){return w(t)},getOffsetParent:S,getDocumentElement:R,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||S,r=this.getDimensions;return{reference:F(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,f=i&&!c,u=f||r?[...s(t)?H(t):t.contextElement?H(t.contextElement):[],...H(e)]:[];u.forEach((t=>{f&&t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let a,d=null;if(l){let o=!0;d=new ResizeObserver((()=>{o||n(),o=!1})),s(t)&&!c&&d.observe(t),s(t)||!t.contextElement||c||d.observe(t.contextElement),d.observe(e)}let h=c?E(t):null;return c&&function e(){const o=E(t);!h||o.x===h.x&&o.y===h.y&&o.width===h.width&&o.height===h.height||n();h=o,a=requestAnimationFrame(e)}(),n(),()=>{var t;u.forEach((t=>{f&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=d)||t.disconnect(),d=null,c&&cancelAnimationFrame(a)}}const V=(t,n,o)=>{const i=new Map,r={platform:P,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,V as computePosition,H as getOverflowAncestors,P as platform};\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = function() { return Promise.resolve(); };","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.j = 179;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], function() { return __webpack_require__(7274); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","sendAnalyticsEvent","eventName","parameters","gtag","propTypes","options","PropTypes","isRequired","requestId","url","isPPTInDefaultInvestment","isPlanGlidepathEnabled","isPPTGlidepathEnrolled","isPPTManagedAccountEnrolled","isPPTManagedAccountPending","investmentName","managedAccountPlatformId","success","ExploreMyOptionsModal","_ref","dataError","length","samlResponse","setSamlResponse","useState","arkPostUrl","setArkPostUrl","requesting","setRequesting","selectedOption","setSelectedOption","isError","setIsError","errorText","setErrorText","manageAdviceContent","radioOptions","map","_ref2","Name","label","Description","description","OptionId","id","AnalyticsEventName","value","toString","React","className","style","fontWeight","fontSize","Button","clickHandler","closeModal","$","data","close","text","Error","message","title","Banner","customAttrs","customIcon","MagicWandIcon","color","hasCloseButton","messageRichText","hasIcon","RadioGroup","name","hasError","errorMessage","optionalInputLabel","orientation","onChange","e","optionId","target","submitForm","postBody","maPlatformId","axios","then","response","hasNextStepUrl","action","window","location","SamlResponse","PostURL","setTimeout","document","ssoForm","submit","catch","sendData","find","option","disabled","method","type","SsoButton","props","bannerEligibilityVisible","setBannerEligibilityVisible","bannerErrorVisible","setBannerErrorVisible","bannerProxiedAdminVisible","setBannerProxiedAdminVisible","async","eligible","eligibilityAction","eligibilityResponse","baseUrl","navigationKey","error","ssoResponse","arkDeeplinkUrl","dcaDeeplinkUrl","webExperienceId","buttonText","onClose","customClass","eligibilityText","arkUrl","dcaReturnUrl","defaultProps","eligibilitytext","renderComponents","containers","components","forEach","container","dataset","renderedReactComponent","str","JSON","parse","undefined","component","reactComponent","element","ReactDOM","componentRegistry","Map","MutationObserver","mutations","size","some","mutation","addedNodes","Array","from","querySelectorAll","Object","fromEntries","observe","body","childList","subtree","normalizeItem","rawItem","status","kind","parseItemKind","n","moneyValue","b","isDisabled","c","endsWith","startsWith","getOptionLabel","ix","getOptionValue","isOptionDisabled","MODE_SEARCH","MODE_LIST","PlanPickerContext","mode","total","isWaitingForInitialData","loadOptionsByIndex","searchQuery","updateSearchQuery","selectedId","selectRef","current","usePlanPickerContext","useContext","calculatePageContainingIndex","pageSize","Math","floor","calculatePageRange","page","start","calculatePageOffset","min","updateWithPageRequests","state","pageNumbers","pagesClone","pages","pageNumber","updateWithPageError","updateWithPageLoad","payload","items","ids","item","toItemArray","getItem","pageCount","ceil","p","end","i","determinePagesToLoad","indexesToLoad","pagesToLoad","Set","add","fetchApiPage","params","signal","token","query","take","skip","assign","URLSearchParams","createUrlParams","fetch","headers","Accept","ok","stringify","statusText","json","sleep","ms","Promise","resolve","PAGE_SIZE","REQUEST_LIST_PAGES","LIST_PAGE_ERROR","LIST_PAGE_LOADED","REQUEST_SEARCH_PAGES","SEARCH_PAGE_ERROR","SEARCH_PAGE_LOADED","UPDATE_SEARCH_QUERY","initialState","itemsById","list","search","itemsByIdReducer","prevState","newState","normalizedItems","listReducer","searchReducer","canBeStale","reducer","isStaleUpdate","reactComponentDirective","scope","link","Component","$watch","newProps","$on","isPromise","obj","constructNewUrl","selectedItem","newUrl","URL","searchParams","set","updateHiddenPlanInput","val","logPlanChangeAnalyticsEvent","npg","logAnalyticsEvent","redirect","_ref3","href","fetchStyleDetails","event","styleResponse","styleData","styleUrlsToFetch","linkEl","PaletteId","toArray","all","updateStyles","attr","HeaderLogoPath","toggleClass","IsDefaultLogo","FooterLogoPath","show","hide","each","Number","get","newLink","createElement","rel","head","appendChild","remove","usePlanPickerSideEffects","useMemo","effects","push","targetId","fallback","arguments","templateResponse","html","parsed","parseHTML","removedPlanPickerHTML","filter","selector","ngApp","util","injectHtml","injectAngularFragment","logAnalyticsView","setPlanIdInUrl","createLoadHtmlEffect","methodName","_len","args","_key","apply","callAngularMethod","createCallAngularMethodEffect","createPlanChangeEvent","showBusyIndicator","effect","result","hideBusyIndicator","runEffects","createChangeHandler","AsyncPlanPickerProvider","dataStrategy","apiParams","initialId","initialIndex","children","setSelectedId","getListItems","getSearchItems","loadPageForSelectedItem","loadListItemsByIndex","loadInitialListData","loadInitialSearchData","loadSearchItemsByIndex","updateSearchQueryImmediate","dispatch","useReducer","listState","searchState","loadListPage","useCallback","pageData","aborted","keys","itemId","getPageNumberWithItemId","fetchItemIndex","controller","AbortController","console","loadSearchPage","minimumLoadingMs","pagePromise","initialPageNumber","initialPage","firstPage","indexes","helpers","usePlanPickerApi","runSideEffectsOnChange","useRef","grandTotal","isTotalUnknown","useEffect","abort","callback","callbackRef","activeTimeout","clearTimeout","innerCallback","useDebouncedCallback","contextValue","Provider","noop","SyncPlanPickerProvider","allItems","setSearchQuery","setValue","normalizedSearchQuery","toLowerCase","trim","includes","PlanPickerProvider","innerProps","innerRef","rest","focusedOption","selectProps","parentRef","totalSize","virtualItems","scrollToIndex","useVirtual","overscan","estimateSize","startIndex","at","index","endIndex","focusedIndex","indexOf","menuUI","select","targetValue","o","scrollToFocusedOptionOnUpdate","useFixReactSelectFocus","firstVisibleIndex","lastVisibleIndex","shouldControlScrollRef","enableControlledScroll","disableControlledScroll","NAVIGATION_KEYS","onKeyDown","key","onMouseMove","onWheel","addEventListener","capture","removeEventListener","align","useScrollManager","unloadedIndexes","slice","reduce","isLoading","childrenAsArray","height","width","position","virtualItem","child","top","left","transform","MenuList","_extends","overflow","maxHeight","el","PlanPickerOption","isFocused","isSelected","optionWrapperClasses","classNames","Option","memo","Input","autoComplete","PlanPickerSelect","textContent","placeholder","loadingMessage","noOptionsMessage","shouldHidePlaceholder","Select","hideLabel","isSearchable","componentsOverride","PlanPickerInput","VirtualizedPlanPickerMenuList","reactSelectProps","ref","filterOption","onInputChange","determinePlanChangeAction","onPlanChange","onPlanChangeTargetId","PlanPicker","filterUrl","planDataToken","sharedProps","providerProps","PDXBanner","markup","__html","dangerouslySetInnerHTML","defaultOptions","getPlansAndCompaniesUrl","addToWorkingSetUrl","InternalPlanPicker","restSelectProps","getPlansAndCompaniesUrlString","addToWorkingSetUrlString","setIsLoading","setHasError","showLessThanThreeCharsMessage","queryString","inputValue","loadOptions","reject","urlSearchParams","searchValue","getPlansUrl","res","SearchSelect","triggerButtonLabel","header","continueButtonLabel","isPending","analytics","ManagedAccountWarningModal","isModalActive","setIsModalActive","triggerButtonRef","footerChilden","onClick","handleContinue","onButtonClick","buttonRef","Modal","headerText","hasFooter","isActive","hasFooterClose","footerCloseButtonText","footerCloseButtonClasses","widthClassNames","footerChildren","planName","planId","maEnrollmentCount","maPlanCount","arkManagedAcctProductCode","content","ManagedAccountBannerBody","cardClassNames","bannerLabelsClassName","bannerTitleMarkup","planNameMarkup","labelsContent","buttonClass","bannerContent","enrolled","onePlan","allPlans","somePlans","notEnrolled","Card","border","padding","HandshakeIcon","bodyText","handleClick","buttonLabel","endpoint","ManagedAccountBannerWithLoading","withLoading","ManagedAccountBanner","bannerData","setBannerData","fetchBannerData","SchwabPCRAModal","actionURL","setActionURL","APIID","setAPIID","DATA","setDATA","APIENC","setAPIENC","showLoading","NavigationKey","ACTION","finally","getElementById","renderCommonComponents","directive","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","prototype","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","concat","targetStatics","sourceStatics","descriptor","Symbol","getRawTag","objectToString","symToStringTag","toStringTag","trimmedEndIndex","reTrimStart","string","replace","freeGlobal","g","objectProto","hasOwnProperty","nativeObjectToString","isOwn","call","tag","unmasked","freeSelf","self","root","Function","reWhitespace","test","charAt","isObject","now","toNumber","nativeMax","max","nativeMin","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","this","leadingEdge","cancel","flush","baseGetTag","isObjectLike","Date","debounce","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","safeIsNaN","isNaN","areInputsEqual","newInputs","lastInputs","first","second","memoizeOne","resultFn","isEqual","cache","memoized","newArgs","_i","lastResult","clear","propIsEnumerable","propertyIsEnumerable","test1","String","test2","fromCharCode","join","test3","split","letter","err","shouldUseNative","source","symbols","to","toObject","s","useLayoutEffect","t","ownerDocument","defaultView","getComputedStyle","nodeName","HTMLElement","Element","Node","ShadowRoot","overflowX","overflowY","display","r","navigator","userAgentData","isArray","brands","brand","version","userAgent","round","contextElement","x","y","getBoundingClientRect","parseFloat","offsetWidth","l","offsetHeight","isFinite","f","u","a","d","h","visualViewport","offsetLeft","offsetTop","m","frameElement","clientLeft","paddingLeft","clientTop","paddingTop","right","bottom","W","assignedSlot","parentNode","host","documentElement","H","z","ancestorScroll","ancestorResize","elementResize","animationFrame","passive","ResizeObserver","requestAnimationFrame","disconnect","cancelAnimationFrame","_defineProperty","enumerable","configurable","writable","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","middleware","collection","output","rulesheet","return","compile","parent","rule","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","character","reference","characters","comment","declaration","ruleset","post","j","k","serialize","line","column","node","copy","char","prev","next","peek","caret","begin","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","abs","hash","charat","match","pattern","exec","replacement","indexof","charCodeAt","substr","strlen","sizeof","append","array","combine","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","__proto__","ns","create","def","definition","globalThis","prop","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}