{"version":3,"file":"app.22987190bdbe4a2e44cc.js","mappings":"sMA0KA,QA7JAA,iBACE,IAAIC,EAAS,CACXC,YAAa,CAAC,GAGhB,IAME,MAAM,cAAEC,EAAa,kBAAEC,SAA4B,yCAtBvD,SAAoBH,EAAQI,EAAWC,GACjCD,KAAaJ,EAAOC,aAAgB,IACtCD,EAAOC,YAAYG,GAAa,CAC9BE,aAAa,EACbD,QAAS,KAIbL,EAAOC,YAAYG,GAAWC,QAAQE,QAAQF,EAChD,CA2EMG,CAAWR,EAAQ,cAAe,CAC5B,CACIS,GAAIN,EAAkBO,KACtBC,SAAU,oBAEd,CACIF,GAAIN,EAAkBS,OACtBC,OAAQ,CACJC,GAAI,mBACJC,KAAMb,EACNc,SAAU,EACVC,cAAcC,EAAAA,EAAAA,KAACC,aAAY,MAGnC,CACIV,GAAIN,EAAkBS,OACtBC,OAAQ,CACJC,GAAI,oBACJC,KAAMb,EACNc,SAAU,EACVC,aAAcG,gBA2DhC,CAAE,MAAQ,CAEV,OAAOpB,CACT,C,+8DCvKA,MAAMqB,EAAYA,CAACC,EAAQC,KACzB,GAAIA,IAASC,OAAOC,YAClB,OAAOH,EAGT,GAAa,aAATC,EACF,cAAcD,EAGhB,GAAIC,KAAQD,GAAmB,mBAATC,EACpB,OAAOD,EAAOC,GAGhBG,QAAQC,IAAIJ,EAAKK,YACjBF,QAAQG,MAAM,CAAEP,SAAQC,SACxB,MAAMO,EAAIC,MAAM,qBAAqBR,EAAKK,eAC1CF,QAAQG,MAAMC,EAAEE,MACA,EAKlB,EAFoBC,GAAS,IAAIC,MAAMD,EAAM,CAAEE,IAAKd,I,wBCnB7C,MAMP,EAN6Be,CAACC,EAAYC,IAASD,EAAWE,IAAOD,GAAME,SAAU,CACnFC,KAAM,UACNC,MAAO,OACPC,IAAK,YCLMC,EAAaA,KAAA,CAAS,GCEtBC,EAAgBC,EAAW,CACtCC,SAAU,WACVC,QAAS,UACTC,UAAW,YACXC,OAAQ,WAGGC,EAAcL,EAAW,CACpCM,WAAY,aACZC,YAAa,cACbC,yBAA0B,2BAC1BC,2BAA4B,6BAC5BC,yBAA0B,2BAC1BC,mBAAoB,qBACpBC,oBAAqB,sBACrBC,yBAA0B,2BAC1BC,wBAAyB,0BACzBC,WAAY,aACZC,mBAAoB,uBAOTC,GAJajB,EAAW,CACnCkB,aAAc,sBAGalB,EAAW,CACtCmB,WAAY,IACZC,aAAc,IACdC,UAAW,IACXC,SAAU,IACVC,SAAU,IACVC,YAAa,O,s+BC7Bf,MAYaC,EAAUC,GAAQ,QAAQA,IAE1BC,EAAQC,KAAKC,MAKpBC,GAAMC,EAAAA,EAAAA,IAAY,CACtBtD,KAAM,MACNuD,aArBmB,CACnBC,WAAY,EACZC,WAAY,CAAC,EACbC,YAAa,GACbC,kBAAmB,CAAC,EACpBC,oBAAqB,CAAC,EACtBC,iBAAkB,CAAC,EACnBC,iBAAkB,GAClBC,mBAAoB,CAAC,EACrBC,QAAS,IAaTC,SAAU,CACRC,YAAaA,CAACC,EAAKC,KAAA,IAAIC,SAAS,QAAEC,IAAWF,EAAA,OAAAG,EAAAA,EAAA,GACxCJ,GAAK,IACRV,WAAYa,EAAQE,QAClB,CAACC,EAAKC,EAAMC,KACV,MAAMC,EAAGL,EAAAA,EAAA,GAAQG,GAAI,IAAE1B,OAAQA,EAAO2B,KAItC,OAHoC,OAAhCC,EAAIC,WAAWC,eACjBF,EAAIC,WAAWC,aAAe5B,GAEhCqB,EAAAA,EAAA,GAAYE,GAAG,IAAE,CAACzB,EAAO2B,IAASC,GAAG,GAEvC,CAAC,IACF,EAEHG,eAAgBA,CAACZ,EAAKa,KAAA,IAAE,QAAEX,GAASW,EAAA,OAAAT,EAAAA,EAAA,GAC9BJ,GAAK,IACRR,kBAAmBU,EAAQV,kBAC3BC,oBAAqBS,EAAQT,oBAC7BC,iBAAkBQ,EAAQR,iBAC1BC,iBAAkBO,EAAQP,iBAC1BmB,oBAAqBZ,EAAQY,qBAAmB,EAElDC,yBAA0BA,CAACf,EAAKgB,KAAA,IAAE,QAAEd,GAASc,EAAA,OAAAZ,EAAAA,EAAA,GACxCJ,GAAK,IACRJ,mBAAoB,CAAEf,OAAQqB,IAAS,EAEzCe,cAAeA,CAACjB,EAAKkB,KAAA,IAAE,QAAEhB,GAASgB,EAAA,OAAAd,EAAAA,EAAA,GAAWJ,GAAK,IAAEX,WAAYa,GAAO,EACvEiB,WAAYA,CAACnB,EAAKoB,KAAA,IAAE,QAAElB,GAASkB,EAAA,OAAAhB,EAAAA,EAAA,GAC1BJ,GAAK,IACRH,QAASK,GAAO,EAElBmB,UAAWA,CAACrB,EAAKsB,KAAA,IAAE,QAAEpB,GAASoB,EAAA,OAAAlB,EAAAA,EAAA,GACzBJ,GAAK,IACRH,QAAS,IAAIG,EAAMH,QAASK,IAAQ,EAEtCqB,aAAcA,CAACvB,EAAKwB,KAAA,IAAE,QAAEtB,GAASsB,EAAA,OAAApB,EAAAA,EAAA,GAC5BJ,GAAK,IACRH,QAASG,EAAMH,QAAQ4B,QAAOC,GAAQA,IAASxB,KAAQ,EAEzDyB,aAAe3B,GAAKI,EAAAA,EAAA,GACfJ,GAAK,IACRH,QAAS,QAKT+B,EAAUxE,EAAW8B,EAAI0C,UAEzB,QAAEC,GAAY3C,E,eCrEb,MAAM4C,EAAe9B,GAAUA,EAAMd,IACtC6C,EAAoBC,IAAOC,EAAAA,EAAAA,IAAe,CAACC,GAAqBF,GAGzDG,EAAkB/E,EAAW,CACxCkC,WAAYyC,GAAiB7C,GAAOA,EAAII,aACxCI,iBAAkBqC,GAAiB7C,GAAOA,EAAIQ,mBAC9CC,iBAAkBoC,GAAiB7C,GAAOA,EAAIS,mBAC9CH,kBAAmBuC,GAAiB7C,GAAOA,EAAIM,oBAC/CC,oBAAqBsC,GAAiB7C,GAAOA,EAAIO,qBAAuB,CAAC,IACzEG,mBAAoBmC,GAAiB7C,GAAOA,EAAIU,qBAChDP,WAAY0C,GAAiB7C,GAAOA,EAAIG,aACxCQ,QAASkC,GAAiB7C,GAAOA,EAAIW,UACrCiB,oBAAqBiB,GAAiB7C,GAAOA,EAAI4B,wBAGtCsB,EAAsBhF,EAAW,CAC5CiF,YAAapC,IAAA,IAAC,YAAEoC,GAAapC,EAAA,OAAKoC,CAAW,EAC7CC,OAAQzB,IAAA,IAAC,OAAEyB,GAAQzB,EAAA,OAAKyB,CAAM,EAC9BC,eAAgBvB,IAAA,IAAC,eAAEuB,GAAgBvB,EAAA,OAAKuB,CAAc,EACtDC,UAAWtB,IAAA,IAAC,UAAEsB,GAAWtB,EAAA,OAAKsB,CAAS,EACvCC,OAAQrB,IAAA,IAAC,OAAEqB,GAAQrB,EAAA,OAAKqB,CAAM,EAC9B/B,WAAYY,IAAA,IAAC,WAAEZ,GAAYY,EAAA,OAAKZ,CAAU,EAC1CnB,YAAaiC,IAAA,IAAC,YAAEjC,GAAaiC,EAAA,OAAKjC,CAAW,EAC7CmD,UAAWC,IAAA,IAAC,UAAED,GAAWC,EAAA,OAAKD,CAAS,EACvCE,gBAAiBC,IAAA,IAAGC,UAAU,gBAAEF,IAAmBC,EAAA,OAAKD,CAAe,IAG5DG,EAAiBA,CAACC,EAAgBC,IAAa,CAACjD,EAAOnB,IAClEoE,EAASD,EAAed,EAAuB5C,WAAWU,GAAOnB,KAGnE,IC9BaqE,GAAajB,EAAAA,EAAAA,IACxB,CAACE,EAAgB7C,aAChBA,GAAe6D,OAAOC,KAAK9D,GAAY+D,SAY1C,EAAejG,EAAW,CACxB8F,aACAI,YAZwBrB,EAAAA,EAAAA,IAAe,CAACC,IAAqBqB,GAAQA,EAAM,IAa3EC,wBAZoCvB,EAAAA,EAAAA,IACpC,CAACE,EAAgB1C,sBAChBgE,GAAkB,OAATA,IAAiD,IAAhCA,EAAKC,yBAWhCC,wBAToC1B,EAAAA,EAAAA,IACpC,CAACE,EAAgBvC,qBAChB6D,GAAwB,MAAfA,EAAK5E,W,eCdV,MAED+E,EAAaA,KAAMC,EAAAA,EAAAA,MAAYC,aAExBC,EAAYA,IAAO,IAAGF,EAAAA,EAAAA,MAAYC,mBAUlCE,EAAYA,CAACC,EAAMC,IAAiB,MAAPA,GAAeA,EAAIC,WAAW,YAAcD,EAAIC,WAAW,YAAeD,EAAM,GAAGD,IAAOC,IAEvHE,EAAcF,GAAQF,EAAUJ,IAAcM,GAM9CG,EAAqBC,GAAa,IAtBVT,EAAAA,EAAAA,MAAYU,sCAsBsCD,KAGvF,EAAelH,EAAW,CACxB2G,YACAK,aACAI,eAnBqBA,IAAM,GAAGZ,wBAoB9BS,oBACAI,iBAP+BC,GAAe,GAAGX,2BAAmCW,aAQpFC,sBApB6BC,GAAS,GAAGb,oCAA4Ca,gBAqBrFC,MAxBYA,IAAM,GAAGjB,YAyBrBkB,cA3BoBA,IAAO,GAAGf,wBA4B9BgB,eAjB6Bb,GAAQF,GAAUH,EAAAA,EAAAA,MAAYmB,kBAAmBd,GAkB9Ee,YAfkBA,IAAMb,EAAW,uBAgBnCpG,oBA1B0BA,IAAM,GAAG+F,8BCFxBmB,EAAmC,CALzB,sBACK,2BACE,+BCFtB9C,GAAAA,GAAqBW,GAAAA,IAAmBZ,EAE1CpD,GAAQ,IAAIC,KACZmG,GAAuB,IAAInG,KACjCmG,GAAqBC,QAAQD,GAAqBE,UAAY,KAEvD,MAAMC,GAAe1I,GAAUA,EAAO,IAAIoC,KAAKpC,GAAQ,KAEjD2I,GAAanI,EAAW,CACnCiF,YAAaU,GACXX,GAAoBC,aACnBA,GAAiC,OAAhBA,EAAuB,CAAC,EAAK,CAC7CmD,cAAe,IAAIxG,KAAKqD,EAAYmD,eACpCC,eAAgBrB,EAAW/B,EAAYoD,gBACvCC,eAAgBrD,EAAYqD,eAC5BC,uBAAwBtD,EAAYuD,UAAY,IAAI5G,KAAKqD,EAAYmD,eAAiB,IAAIxG,KAC1F6G,aAAcxD,EAAYwD,aAC1BD,SAAUvD,EAAYuD,YAG1BtD,OAAQS,GACNX,GAAoBE,QACnBA,IAAM,CACLwD,aAAc1B,EAAW9B,EAAOwD,cAChCC,aAAczD,EAAOyD,aACrBC,WAAY1D,EAAO0D,WACnBC,eAAgB3D,EAAO2D,mBAG3B1D,eAAgBQ,GACdX,GAAoBG,gBACnBA,IAAc,CAAQ1G,KAAM0G,GAAgB1G,SAE/C2G,UAAWO,GACTX,GAAoBI,WACnBA,GAA6B,OAAdA,EAAqB,CAAC,EAAI,CACxC0D,QAAShE,GAAmBM,EAAU0D,SACtCC,UAAWjE,GAAmBM,EAAU2D,WAExC7B,SAAU9B,EAAU8B,SACpB8B,WAAY5D,EAAU4D,WACtBC,UAAW7D,EAAU6D,UAErBC,gBAAiBC,KAAKC,MAAkC,IAA5BhE,EAAU8D,iBAEtCG,QAASjE,EAAUiE,QACnBC,aAAclE,EAAUkE,aACxBC,WAAYnE,EAAUmE,WAEtBC,YAAaxC,EAAW5B,EAAUoE,aAClCC,UAAWzC,EAAW5B,EAAUqE,WAChCC,YAAa1C,EAAW5B,EAAUsE,gBAGtCrE,OAAQM,GACNX,GAAoBK,QACnBA,GACMA,GAAyC,IAA/BU,OAAOC,KAAKX,GAAQY,OAG5B,CACL0D,YAAY,EACZC,kBAAmBvE,EAAOuE,kBAC1BC,aAAcxE,EAAOwE,aACrBvC,WAAYjC,EAAOiC,WACnBvI,MAAOsG,EAAOtG,MACd+K,UAAWzE,EAAOyE,UAClBC,cAAe1E,EAAO0E,eATf,CAAEJ,YAAY,KAa3BrG,WAAYqC,GACVX,GAAoB1B,YACnBA,IACC,GAAkB,MAAdA,EACF,MAAO,CAAE0G,YAAY,GAEvB,MAAM,QAAEC,EAAO,gBAAEC,EAAe,WAAEC,GAAe7G,EAAW8G,iBAC5D,MAAO,CACLA,iBAAkB9G,EAAW8G,iBAC7BC,UAAWJ,KAAaC,GAAmBC,GAC3CH,WAAY1G,EAAW0G,WACvBzG,aAAcD,EAAWC,aACzB+G,WAAYhH,EAAWgH,WAEvBC,qBAAsBzF,GAAmBxB,EAAWiH,sBACpDC,WAAYlH,EAAWkH,WACvBC,QAASnH,EAAWmH,QACpBC,qBAAsBpH,EAAWoH,qBACjCC,WAAYrH,EAAWqH,WAEvBC,eAAgBtH,EAAWsH,eAC3BC,mBAAoBvH,EAAWuH,mBAC/BC,KAAMxH,EAAWwH,KACjBC,iBAAkBjD,EAAiCkD,SAAS1H,EAAWwH,MACxE,IAGL3I,YAAawD,GACXX,GAAoB7C,aACnBA,IACC,IAAKA,GAAmD,IAApC4D,OAAOC,KAAK7D,GAAa8D,OAC3C,MAAO,CAAEgF,eAAe,GAE1B,MAAMC,EAAW,IAAItJ,KAAKO,EAAYgJ,gBAChCC,EAAiBF,EAAWvJ,GAC5B0J,GACHlJ,EAAYmJ,cACTF,GACDF,GAAYnD,GAEjB,MAAO,CACLkD,eAAe,EAEfM,kBAAmBpJ,EAAYoJ,kBAC/BJ,eAAgBD,EAChBM,UAAWrJ,EAAYqJ,UACvBF,YAAanJ,EAAYmJ,YACzB9D,KAAMrF,EAAYqF,KAElBiE,YAAatJ,EAAYoJ,mBAAmBtF,OAAS,EACrDyF,WAAYN,EACZC,wBACD,IAGL/F,UAAWK,GACTX,GAAoBM,WACnBA,IAAS,CAAQqG,UAAWrG,EAAUqG,cAEzCnG,gBAAiBG,GACfX,GAAoBQ,iBACnBA,IAAe,CACdoG,KAAMpG,EAAgBqG,KAAIC,IAAW,CACnCpD,aAAcoD,EAAQpD,aACtBqD,WAAYD,EAAQC,WACpBC,gBAAiBF,EAAQE,gBACzBC,YAAaH,EAAQG,YACrBC,WAAYJ,EAAQI,WACpBC,SAAUL,EAAQK,SAClBC,MAAON,EAAQM,UAEjBnG,OAAQT,EAAgBS,aAK9B,MCpJaoG,IAFaC,OAAOC,SAASC,SAASC,MAAM,GAEjCzM,EAAW,CACjC0M,SAAU,WACVN,MAAO,WAGIO,GAAa3M,EAAW,CACnC4M,WAAY,aACZC,WAAY,aACZC,KAAM,OACNC,YAAa,cACbC,SAAU,aCJCC,GAAgBjN,EAAW,CACtC,CAAC2M,GAAWI,aAAe7H,IAAYA,EAAO5B,WAAW0G,WACzD,CAAC2C,GAAWG,MAAQ5H,GAAgC,OAArBA,EAAOE,WAAsBF,EAAOE,UAAU4D,WAC7E,CAAC2D,GAAWK,UAAY9H,GAAWA,EAAO5B,WAAWqH,WACrD,CAACgC,GAAWC,YAAc1H,GAAWA,EAAO5B,WAAWgH,WACvD,CAACqC,GAAWE,YAAc3H,IAAYA,EAAO5B,WAAWgH,aAG7C4C,GAAalN,EAAW,CACnC,CAACqM,GAASK,UAAWjJ,IAAA,IAAC,WAAEH,GAAYG,EAAA,OAAK,IAAI7B,KAAK0B,EAAWC,aAAa,EAC1E,CAAC8I,GAASD,OAAQxI,IAAA,IAAC,OAAEsB,GAAQtB,EAAA,OAAKsB,EAAO0D,WAAWuE,aAAa,I,89BCfnE,SAAenN,EAAUgD,GAAAA,GAAAA,GAAC,CAAC,EACtB+B,GACAqI,GAAY,IACfjF,WAAU,GACVkF,YDyByBC,CAAC1K,EAAKoB,KAI3B,IAJ6B,OACjCuJ,EAAM,QACN9K,EAAO,SACP+K,GACDxJ,EACC,MACM4H,EAbmByB,EAACI,EAAU3J,KAAA,IAAE,OACtCyJ,EAAM,QACN9K,GACDqB,EAAA,OAAK2J,EACHpJ,OAR2B5B,IAAYA,EAAQwD,OAC9Cf,GAAUzC,EAAQQ,QAAO,CAACyK,EAAOrJ,IAAWqJ,GAAST,GAAc5I,GAAQa,KAAS,GACpF,KAAM,EAMAJ,CAAsBrC,IAC7BkL,KA5BmBC,EAACC,EAAShL,KAAA,IAAE,QAAEiL,GAASjL,EAAA,MAAK,CAACkL,EAAIC,KACrD,MAAOC,EAAGC,GAAK,CAACH,EAAIC,GAAInC,IAAIgC,GAC5B,OAAII,IAAMC,EAAY,GACbD,EAAIC,EAAK,GAAK,IAAMJ,GAAW,EAAI,EAAE,CAC/C,EAwBOhJ,CAAcoI,GAAWK,GAAS,CAAEO,QAASP,IAAWlB,GAASK,WAAY,EAQtE5H,CADGiB,OAAOoI,OAAOpJ,EAAgB7C,WAAWU,IAChB,CAAE2K,SAAQ9K,YAC7CR,EAAa8C,EAAgB9C,WAAWW,GAE9C,OAAiB,IAAb4K,EACK,CACLY,QAASxC,EACTyC,SAAU,GAGP,CACLf,YAAa1B,EAAKa,OAAOxK,EAAa,GAAKuL,EAAUvL,EAAauL,GAClEa,SAAUlF,KAAKmF,KAAK1C,EAAK3F,OAASuH,GACnC,K,89BEhDH,MAAMxL,GAAe,CACnB,CAAC3B,EAAYC,YAAa,CAAEiO,OAAQxO,EAAcE,UAClD,CAACI,EAAYE,aAAc,CAAEgO,OAAQxO,EAAcE,UACnD,CAACI,EAAYQ,0BAA2B,CAAE0N,OAAQxO,EAAcE,UAChE,CAACI,EAAYS,yBAA0B,CAAEyN,OAAQxO,EAAcE,UAC/D,CAACI,EAAYU,YAAa,CAAEwN,OAAQxO,EAAcE,WAI9CuO,IAAWzM,EAAAA,EAAAA,IAAY,CAC3BtD,KAAM,WACNuD,aAAY,GACZU,SAAU,CACR+L,aAAcA,CAAC7L,EAAKC,KAAA,IAAE,QAAEC,GAASD,EAAA,OAAAG,GAAAA,GAAA,GAC5BJ,GAAK,IACR,CAACE,EAAQ4L,YAAa,CACpBH,OAAQxO,EAAcG,UACvB,EAEHyO,gBAAiBA,CAAC/L,EAAKa,KAAA,IAAE,QAAEX,GAASW,EAAA,OAAAT,GAAAA,GAAA,GAC/BJ,GAAK,IACR,CAACE,EAAQ4L,YAAa,CACpBH,OAAQxO,EAAcI,UACtByO,SAAU9L,EAAQ8L,WACnB,EAEHC,YAAaA,CAACjM,EAAKgB,KAAA,IAAE,QAAEd,GAASc,EAAA,OAAAZ,GAAAA,GAAA,GAC3BJ,GAAK,IACR,CAACE,EAAQ4L,YAAa,CACpBH,OAAQxO,EAAcK,OACtBrB,MAAO+D,EAAQ/D,QAChB,EAEH+P,aAAcA,CAAClM,EAAKkB,KAAA,IAAE,QAAEhB,GAASgB,EAAA,OAAAd,GAAAA,GAAA,GAC5BJ,GAAK,IACR,CAACE,EAAQ4L,YAAa,CAAC,GAAC,KAKxBlK,GAAUxE,EAAWwO,GAAShK,UAC5BC,QAAOA,IAAK+J,GC3CPzE,GAAgBA,CAACnH,EAAKC,KAAA,IAAE,WAAE6L,GAAY7L,EAAA,OAAKD,EAAM4L,SAASE,EAAW,EAE5EK,GAAkBC,GAAQN,GAAgB9L,GAAUoM,EAAGpM,EAAM4L,SAASE,IAG/DO,GAAYrL,IAAA,IAAC,OAAE2K,GAAQ3K,EAAA,OAAK2K,IAAWxO,EAAcG,OAAO,EAC5DgP,GAAcpL,IAAA,IAAC,OAAEyK,GAAQzK,EAAA,OAAKyK,IAAWxO,EAAcI,SAAS,EAChEgP,GAAWnL,IAAA,IAAC,OAAEuK,GAAQvK,EAAA,OAAKuK,IAAWxO,EAAcK,MAAM,EAE1DgP,GAAeC,GAAYA,EAAQtQ,OAAO6P,UAAUL,OAejE,GAAevO,EAAW,CACxB+J,iBACAuF,WAAYP,IAtBYtL,IAAA,IAAC,OAAE8K,GAAQ9K,EAAA,OAAK8K,IAAWxO,EAAcE,QAAQ,IAuBzEgP,UAAWF,GAAeE,IAC1BC,YAAaH,GAAeG,IAC5BC,SAAUJ,GAAeI,IACzBpQ,MAAOgQ,IAtBaM,GAAYA,EAAQtQ,QAuBxCwQ,UAAWR,IArBaM,GAAYA,EAAQtQ,OAAO6P,UAAUvI,OAsB7D+I,YAAaL,GAAeK,IAC5B/I,KAAM0I,IArBaM,GAAYA,EAAQhJ,OAsBvCtF,WApByB6B,IACzB,MAAMyM,EAAUtF,GAAcnH,EAAO,CAAE8L,WAAYrO,EAAYU,aAC/D,MAAO,CACLyO,eAAgBN,GAAYG,GAC5BI,qBAAsBN,GAASE,GAC/BK,sBAAuBT,GAAUI,GACjCM,sBAAuBP,GAAYC,GACpC,I,89BClBH,MAAMO,GAAU,CACd9N,IAAG,EACH0M,SAAQA,GAWJqB,GAAeC,GAAa/J,OAAOC,KAAK4J,IAAS3M,QACrD,CAACC,EAAK6M,KACJ,MAAMC,EAAQJ,GAAQG,GAAWD,GACjC,OAAOE,EAAKhN,GAAAA,GAAA,GAAQE,GAAG,IAAE,CAAC6M,GAAYC,IAAU9M,CAAG,GAErD,CAAC,GAGG+M,IAAcC,EAAAA,EAAAA,IAAgBL,GAAY,YAE1CrL,GAAUxE,EAAW6P,GAAY,YAEjCM,GAAYnQ,EAAW6P,GAAY,cAIzC,MCAA,IC7ByB,WAKxB,CAE+BO,CAAUnP,EAAcE,YDH7BkP,MACzB,MAAMC,GAAmBC,EAAAA,EAAAA,gBAEnBC,EAAa,CAACC,EAAAA,EAAiBH,GAiBrC,OAfcI,EAAAA,GACZjM,IACAkM,EAAAA,EAAAA,GAAuCD,EAAAA,MAAyBF,IAatD,EAGAH,I,uCElCd,MAAMO,GAAgB,CAEpBlK,aAAcmK,GACd1J,mBAAoB0J,GAOpBC,YAAaD,GAEbjJ,kBAAmBiJ,GACnBE,sBAAuBF,kBAAYE,uBAAyB,GAC5DC,YAAaH,GACbI,YAAwC,KACxCC,eAA8C,KAC9CC,gBAAgD,KAChDC,SAAUP,kBAAYO,SACtBC,+BAA+BR,EAC/BS,mBAAoBT,kBAAYS,oBAAsB,KACtDC,iBAAiBV,G,+1ICWnB,IACE,GAAMW,GACN,Q,mHACA,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,QAASC,GACT,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,QAASC,GACT,SAAUC,GACV,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,I,oqjJCxBR,IACE,GAAMvB,GACN,Q,uwHACA,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMiB,GACN,GAAMhB,GACN,QAASC,GACT,QAASC,GACT,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,QAASC,GACT,SAAUC,GACV,GAAMC,GACN,QAASC,GACT,GAAMI,GACN,GAAMH,I,ipzDC1BR,IACE,GAAMtB,GACN,Q,g3DACA,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMiB,GACN,GAAMhB,GACN,QAASC,GACT,QAASC,GACT,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,QAASC,GACT,SAAUC,GACV,GAAMC,GACN,QAASC,GACT,GAAMI,GACN,GAAMH,I,ypkVChDR,IACEI,GACAC,GACAC,GCqBF,CACE,GAAM5B,GACN,Q,0zRACA,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMiB,GACN,GAAMhB,GACN,GAAMqB,GACN,QAASpB,GACT,QAASC,GACT,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,GAAMC,GACN,GAAMC,GACN,QAASC,GACT,GAAMC,GACN,QAASC,GACT,SAAUC,GACV,GAAMC,GACN,QAASC,GACT,GAAMI,GACN,GAAMH,GACN,GAAMC,K,yHCzDF5C,GAAYO,GAAgB5O,IAC5B0C,GAAUkM,GAAc5O,IAGjBwR,GAAgBA,KAAMC,EAAAA,GAAAA,IAAYpD,GAAUlO,YAC5CuR,GAAaA,KAAMD,EAAAA,GAAAA,IAAYpD,GAAU1N,SACzCgR,GAA2BA,KAAMF,EAAAA,GAAAA,IAAYpD,GAAU/N,mBACvDsR,GAA6BA,KAAMH,EAAAA,GAAAA,IAAYpD,GAAU9N,qBACzDsR,GAA0BA,KAAMJ,EAAAA,GAAAA,IAAYpD,GAAU7N,kBACtDsR,GAA4BA,KAAML,EAAAA,GAAAA,IAAYpD,GAAU3N,oBACxDqR,GAAyBA,KAAMN,EAAAA,GAAAA,IAAYpD,GAAUzM,qBAGrDoQ,GAAgBA,KAAMP,EAAAA,GAAAA,IAAYpD,GAAUjK,YAC5C6N,GAA4BA,KAAMR,EAAAA,GAAAA,IAAYpD,GAAU/J,wBACxD4N,GAAwBC,IAASV,EAAAA,GAAAA,KAC5C3Q,GAASuN,GAAU9C,YAAYzK,EAAOqR,KAE3BC,GAA4BA,KAAMX,EAAAA,GAAAA,IAAYpD,GAAU5J,wBAGxD4N,GAAqBtO,GAAcpE,IAAW8R,EAAAA,GAAAA,KACxD3Q,GAAUiD,EAASjD,EAAOnB,MAGrB0G,WAAUA,IAAKgI,GACViE,GAAyBD,GAAkBhM,GAAWlD,aACtDoP,GAAoBF,GAAkBhM,GAAWjD,QACjDoP,GAAuBH,GAAkBhM,GAAW/C,WACpDmP,GAAoBJ,GAAkBhM,GAAW9C,QACjDmP,GAAwBL,GAAkBhM,GAAW7E,YACrDmR,GAAyBN,GAAkBhM,GAAWhG,aACtDuS,GAAmBP,GAAkBhM,GAAW7C,WAChDqP,GAAsBR,GAAkBhM,GAAWhD,gBACnDyP,GAA6BT,GAAkBhM,GAAW3C,iBAE1DqP,GAA6BpT,IACxC,MAAMiC,EAAsBoB,MACtB,eAAE+D,GAAmB/D,GAAyBrD,GAC9CqT,EAAkB,CAAEC,WAAW,EAAOC,SAAU,IAEtD,IAAKtR,EACH,MAAO,CAAEuR,SAAUH,EAAiBI,QAASJ,GAE/C,MAAM,SAAEG,EAAQ,QAAEC,GAAYxR,EACxByR,EAAgB3W,IAAM,CAC1BuW,UAAWvW,EAAOuW,UAClBC,SAAU,GAAGnM,KAAkBrK,EAAO4W,cAExC,MAAO,CAAEH,SAAUE,EAAaF,GAAWC,QAASC,EAAaD,GAAU,EAGhEG,GAA8B5T,IACzC,MAAM,iBAAEsJ,GAAqBjG,GAA6BrD,IACpD,UAAE6T,GAAcxQ,GAAkCrD,GACxD,OAAOsJ,EAAmB,WAAWuK,IAAc,EAAE,EAI1CC,GAAuC9T,IAClD,MAAM+T,GAAWC,EAAAA,GAAAA,MACjB,MAAO,IAAMD,EAAShR,GAAQb,yBAAyBlC,GAAQ,EAGpDiU,GAAsB,SAACC,EAASlU,GAAoB,QAAAmU,EAAAC,UAAA5P,OAAT6P,EAAI,IAAAC,MAAAH,EAAA,EAAAA,EAAA,KAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAJF,EAAIE,EAAA,GAAAH,UAAAG,GAC1D,MAAM,SAAE9O,GAAapC,GAA4BrD,GACjD,OAAQzC,GAAM2W,EAAQzO,KAAa4O,EAArBH,CAA2B3W,EAC3C,EAEaiX,GAAmBA,KAC9B,MAAMT,GAAWC,EAAAA,GAAAA,MACjB,OAAQzF,GAAUwF,EAAShR,GAAQX,cAAcmM,GAAO,EAG7CkG,GAAgBA,KAC3B,MAAMV,GAAWC,EAAAA,GAAAA,MACjB,OAAQzF,GAAUwF,EAAShR,GAAQT,WAAWiM,GAAO,EAG1CmG,GAAeA,KAC1B,MAAMX,GAAWC,EAAAA,GAAAA,MACjB,OAAQzF,GAAUwF,EAAShR,GAAQP,UAAU+L,GAAO,EAGzCoG,GAAkBA,KAC7B,MAAMZ,GAAWC,EAAAA,GAAAA,MACjB,OAAQzF,GAAUwF,EAAShR,GAAQL,aAAa6L,GAAO,EAG5CqG,GAAkBA,KAC7B,MAAMb,GAAWC,EAAAA,GAAAA,MACjB,OAAQzF,GAAUwF,EAAShR,GAAQD,aAAayL,GAAO,EAG5CsG,GAAcA,KACzB,MAAMd,GAAWC,EAAAA,GAAAA,MACjB,OAAO5S,IAAgC,IAA/B,QAAEE,GAAwBF,EAAZ0T,E,qWAAUC,CAAA3T,EAAA4T,IAC9BjB,EAAShR,GAAQX,cAAc,IAC/B2R,EAAShR,GAAQhB,eAAe+S,IAChCf,EAAShR,GAAQ7B,YAAY,CAAEI,YAAW,CAC3C,ECrGGoN,GAAYO,GAAgBlC,SAC5BhK,GAAUkM,GAAclC,SAEjBkI,GAAoBA,KAAMnD,EAAAA,GAAAA,IAAYpD,GAAUpP,YAEhDgO,GAAiBlJ,GAAa8Q,IAAgBpD,EAAAA,GAAAA,IAAY1N,EAAS8Q,IACnEC,GAAsB9R,GAAsBqL,GAAUlB,WACtD4H,GAAqB/R,GAAsBqL,GAAUhB,UACrD2H,GAAwBhS,GAAsBqL,GAAUjB,aACxD6H,GAAuBjS,GAAsBqL,GAAUb,YACvD0H,GAAkBlS,GAAsBqL,GAAUpR,OAClDkY,GAAsBnS,GAAsBqL,GAAUZ,WACtD2H,GAAwBpS,GAAsBqL,GAAUf,aACxD+H,GAAiBrS,GAAsBqL,GAAU9J,MAEjD+Q,GAAwBA,KACnC,MAAM5B,GAAWC,EAAAA,GAAAA,MACjB,OAAO5S,IAKD,IALE,WACN6L,EAAU,QACV2I,EAAO,UACPC,EAAS,UACTC,GACD1U,EAEC,OADA2S,EAAShR,GAAQiK,aAAa,CAAEC,gBACzB2I,EAAQG,MAAM5I,IACf0I,GAAaA,EAAU1I,GAC3B4G,EAAShR,GAAQmK,gBAAgB,CAAED,aAAYE,aAAY,IAC1D6I,OAAO1Y,IACJwY,GAAaA,EAAUxY,GAC3ByW,EAAShR,GAAQqK,YAAY,CAAEH,aAAY3P,UAAS,GACpD,CACH,EAGU2Y,GAAkBA,KAC7B,MAAMlC,GAAWC,EAAAA,GAAAA,MACjB,OAAQ/G,IACN8G,EAAShR,GAAQsK,aAAa,CAAEJ,eAAc,CAC/C,E,4BCnCI,MAQMiJ,GAAOA,CAAC7Q,EAAK8Q,KAASC,EAAAA,GAAAA,MAA6BF,KAAK7Q,EAAKgR,GAAAA,UAAsBF,IAEnFG,GAASF,GAAAA,GAQTG,GAAeA,CAAClR,EAAKmR,IAAUH,GAAAA,aAC1C,CAAEhR,MAAKmR,SACP,CAAEC,UAAU,EAAMC,iBAAiB,IC1BxBC,GAAapY,EAAW,CACnCqY,UAAW,YACXC,QAAS,UACTC,eAAgB,kBAChBC,aAAc,gBACdnT,OAAQ,SACRhB,OAAQ,WAuBJoU,IApBgBzY,EAAW,CAC/B0Y,mBAAoB,qBACpBC,mBAAoB,qBACpBC,mBAAoB,qBACpBC,6BAA8B,+BAC9BC,qBAAsB,uBACtBC,+BAAgC,iCAChCC,2BAA4B,6BAC5BC,aAAc,eACdC,oBAAqB,sBACrBC,WAAY,aACZC,cAAe,gBACfC,aAAc,eACdC,eAAgB,iBAChBC,0BAA2B,4BAC3BC,+BAAgC,iCAChCC,mCAAoC,qCACpCC,+BAAgC,mCAGZ,wDAETC,GAAa3Z,EAAW,CACnC0Y,mBAAoB,wCACpBC,mBAAoB,wCACpBC,mBAAoB,wCACpBC,6BAA8B,mDAC9BC,qBAAsB,0CACtBC,+BAAgC,wCAChCC,2BAA4B,wCAC5BC,aAAc,2BACdC,oBAAqB,4BACrBC,WAAY,+BACZC,cAAe,kCACfC,aAAc,iCACdC,eAAgB,+BAChBC,0BAA2B,2CAC3BC,+BAAgC,GAAGf,YACnCgB,mCAAoC,GAAGhB,2BACvCiB,+BAAgC,GAAGjB,YACnCmB,mBAAoB,+CACpBC,eAAgB,wCAChBC,cAAe,kCACfC,qBAAsB,4CAGXC,GAAYha,EAAW,CAClCia,sBAAuB,2BACvBC,8BAA+B,sCAKjC,MC9DaC,GAAUna,EAAW,CAChCoa,cAAe,iBACfC,iBAAkB,oBAClBC,YAAa,gBACbpT,SAAU,YACVqT,KAAM,OACNC,SAAU,cAGCC,GAAYza,EAAW,CAClC0a,GAAI,KACJC,SAAU,aAGCC,GAAqB,CAAE,CAACT,GAAQE,kBAAmBI,GAAUE,UAC7DE,GAAqB,CAAE,CAACV,GAAQC,eAAgBK,GAAUC,I,89BCChE,MA2BMI,GAAW9W,IAAA,IAAC,UAAE+W,EAAS,KAAE1U,EAAI,SAAEa,GAAUlD,EAAA,OAAK2T,GAAKqD,EAAKvT,QAAS,CAC5EwT,cAAe/T,EACfgU,WAAYH,EACZI,KAAM7O,OAAOC,SAAS6O,KACtB3T,MAAO4T,KAAKC,UAAUjV,IACtB,EAuBF,GAvD8B,eAAC,KAAEkU,GAAM1E,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OHVzB,kBAAagC,EAAAA,GAAAA,MAA6BxY,OAAIwW,UAAQ,CGUxBxW,CAC/C2Y,GAAagD,EAAKtT,gBAAiB,CAAE,CAACyS,GAAQI,MAAOA,IACtD,EAqDD,GAnD2C1X,IAAA,IAAC,KAAE2E,EAAI,SAAEN,GAAUrE,EAAA,OAAK8U,GACjEqD,EAAKzT,sBAAsBC,GAC3B,CAAE,CAAC2S,GAAQG,aAAcpT,GAC1B,E,ynBCdD,MAAQkQ,sBAAqBA,IAAKoE,EAErBC,GAAoBA,CAACC,EAAQ5F,KACxC,MAAM6F,EAAqBvE,KAC3B,OAAO,kBAAoBuE,E,kWAAkB3Y,CAAC,CAC5CqU,QAASqE,KAAO7F,YACbC,GACH,GAOS8F,GAAmBA,KAC9B,MAAMC,EAAWL,KACjB,OAAO1W,GAAyBgX,GAAoB,CAClDpN,WAAYrO,EAAYC,WACxBgX,UAAWzU,IAAA,IAAC,KAAEwD,GAAMxD,EAAA,OAAKgZ,EAASxV,EAAK,GACvC,EAGS0V,GAA+Bta,IAC1C,MAAM,KAAE+F,GAASgU,GAAkC/Z,GAC7C6V,EAAYxS,KAClB,OAAOA,IACJkX,GAAcF,GAAgC,CAAEtU,OAAMN,SAAU8U,KACjE,CAAE1E,YAAW5I,WAAYrO,EAAYG,0BACtC,EAGUyb,GAAkCxa,IAC7C,MAAM,KAAE+F,GAASgU,GAAkC/Z,GAC7C6V,EAAYxS,KAElB,OAAOA,IADSkX,GAAcF,GAAgC,CAAEtU,OAAMN,SAAU8U,KAG9E,CAAE1E,YAAW5I,WAAYrO,EAAYK,0BACtC,EAGUwb,GAA8Bza,IACzC,MAAM,KAAE+F,EAAI,aAAE2U,GAAiBX,GAAkC/Z,GAC3D6V,EAAYxS,KAClB,OAAOA,IACL,ID7BuCrB,KAAA,IAAC,KAAE+D,EAAI,aAAE2U,GAAc1Y,EAAA,OAAKsU,KACpEqE,OACCpE,GACEgD,EAAKzT,sBAAsBC,GAC3B,CAAE,CAAC2S,GAAQK,UAAW2B,IAEzB,ECuBOL,CAAgC,CAAEtU,OAAM2U,kBAC9C,CAAE7E,YAAW5I,WAAYrO,EAAYS,yBACtC,EAGUub,GAAyB5a,IACpC,MAAM,SAAEyF,GAAasU,GAAgC/Z,GACrD,OAAOqD,IACL,IDxB8BhB,KAAA,IAAC,SAAEoD,GAAUpD,EAAA,OAAK6T,GAClDqD,EAAK5T,iBAAgBpE,GAAA,CACnB,CAACmX,GAAQjT,UAAWA,GAAa0T,IACpC,ECqBSkB,CAAuB,CAAE5U,cAC/B,CAAEwH,WAAYrO,EAAYM,oBAC3B,EAGU2b,GAAkBA,KAC7B,MAAMT,EAAWL,KACjB,OAAO1W,IACJyV,GAASuB,GAAmB,CAAEvB,UAC/B,CAAEjD,UAAW7T,IAAA,IAAC,KAAE4C,GAAM5C,EAAA,OAAKoY,EAASxV,EAAK,EAAEqI,WAAYrO,EAAYU,YACpE,EAGUwb,GAAqBA,KAChC,MAAMzN,EAAe0M,KACfgB,EAAgB1X,KACtB,MAAO,KACLgK,EAAazO,EAAYU,YACzByb,GAAe,CAChB,EAGUC,GAA0Bhb,IACrC,MAAM,SAAEyF,GAAasU,GAAgC/Z,GACrD,OAAOqD,IACJ4X,GDtD8B9Y,KAAA,IAAC,SAAEsD,EAAQ,OAAEwV,GAAQ9Y,EAAA,OAAK+T,GAC3DqD,EAAKpa,sBAAqBoC,GAAA,CACxB,CAACmX,GAAQjT,UAAWA,GAAcwV,GAAU7B,IAC/C,ECmDeiB,CAAwB,CAAE5U,WAAUwV,YAChD,CAAEhO,WAAYrO,EAAYO,qBAC3B,EAGU+b,GAAsBA,KACjC,MAAM,aAAEC,GAAiBpB,KACzB,MAAO,IAAM7D,GAAKiF,EAAa,EAGpBC,GAA0Bpb,IACrC,MAAM,WAAE6F,GAAekU,GAA6B/Z,IAC5Cqb,mBAAmB,SAAEC,IAAeC,EAAAA,WAAiBC,GAAAA,IACvD,SAAE/V,GAAasU,GAAgC/Z,GACrD,MAAO,IDnC0B8D,KAAA,IAAC,WAAE+B,EAAU,SAAEJ,EAAQ,SAAE6V,GAAUxX,EAAA,OAAKoS,GACzEqD,EAAK3T,iBAAiBC,GACtB,CAAE4V,WAAYhW,EAAU6V,YACzB,ECgCcjB,CAAwB,CAAExU,aAAYJ,WAAU6V,YAAW,ECnG7DI,GAAmB,SAACvY,GAAE,IAAEwY,EAAOvH,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,GAAE,OAC/CmH,EAAAA,aAAkBhe,GAAK4F,EAAG5F,EAAER,OAAOwR,QAAQoN,EAAS,EAGzCC,GAAgBA,KAC3B,MAAM,WAAE9d,IAAe+d,EAAAA,GAAAA,KACvB,OAAQ9d,GAASF,EAAcC,EAAYC,EAAK,EAGlD,IACE6d,iBACAF,qBCXW3B,GAAa9K,EACb6M,GAAWzB,EACX0B,GAAYC,E,mDCJzB,MAuBA,IAvBiBC,EAAAA,GAAAA,IAAe,CAC9BC,uBAAwB,CACtB3f,GAAI,yCACJ4f,eAAgB,2CAChBC,YAAa,wCAEfC,qBAAsB,CACpB9f,GAAI,uCACJ4f,eAAgB,2FAChBC,YAAa,4CAEfE,8BAA+B,CAC7B/f,GAAI,gDACJ4f,eAAgB,UAChBC,YAAa,+CAEfG,8BAA+B,CAC7BhgB,GAAI,gDACJ4f,eAAgB,kBAChBC,YAAa,+C,8+BCjBV,MAEMI,GAAqB,SAACxf,GAAI,IAAEyf,EAAOrI,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,MAAK,KAAMsI,EAAAA,GAAAA,IAC9D1f,EAAIuE,GAAAA,GAAA,GACCkb,GAAO,IAAEE,SPsDO,iBOrDtB,EAEYC,GAAoBA,CAAC1I,EAASyF,IAAUpc,IACnDA,EAAEsf,iBACF3I,IACO4I,YAAW,KAAQC,EAAAA,EAAOjS,SAAS6O,KAAOA,CAAI,GAV3B,M,89BCCrB,MAAMqD,GAAgB,CAC3BC,SAAU,yBACVC,SAAU,SACVC,SAAU,mBACVC,aAAc,gBAUHC,GAAqB,SAAC/D,EAAW7T,GAAQ,IAAEgX,EAAOrI,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAKoI,GACvElD,EAAS/X,GAAA,CACP+b,SAAU3G,GAAWC,UAAW2G,MAAO9X,GAAagX,GACvD,EAOYe,GAAqBlE,GAAc,CAAC7T,EAAUkU,IACzDiD,GAAkBvZ,GAA0BiW,EAAW7T,GAAWkU,GAsCpE,IACEzC,mBAhBgC,kBAChC7T,GAAyB6U,GAAWhB,mBAApC7T,IAAwD+Q,UAAQ,EAgBhEgD,6BAtB2C3R,GAC3CpC,GAA0B6U,GAAWd,6BAA8B3R,GAsBnE0R,mBAhBgC,kBAChC9T,GAAyB6U,GAAWf,mBAApC9T,IAAwD+Q,UAAQ,EAgBhE6C,mBAfgC,kBAChC5T,GAAyB6U,GAAWjB,mBAApC5T,IAAwD+Q,UAAQ,EAehEqJ,eAd4BA,CAAChY,EAAUkU,IAASiD,IAChD,KAtBmCnX,IAAa+W,GAChDtE,GAAWb,qBACX,CAAEiG,SAAU3G,GAAWE,QAAS0G,MAAO9X,IAqBrCpC,CAA4BoC,EAA5BpC,GAnBuCoC,IAAa+W,GACtDtE,GAAWX,2BAA0BhW,GAAAA,GAAA,GAChCyb,IAAa,IAAEvX,cAkBlBpC,CAAkCoC,EAAlCpC,GNVsBZ,KAAA,IAAC,SAAEgD,GAAUhD,EAAKY,GAAgB,CAC1DiW,UAAWpB,GAAWZ,+BACtB7R,WACAb,KAAM,CAAEkG,SAAU,sBAClB,EMOEuP,CAAe,CAAE5U,YAAW,GAE9BkU,IChDF,IACE+D,SATuBjY,GAAamX,GACpCJ,GAAmBtE,GAAWE,eAAgB,CAC5CmF,MAAO9X,EACP6X,SAAU3G,GAAW/S,SAEvB4B,EAAkBC,K,ynBCXb,MAAMkY,GAAoB,CAC/BL,SAAU3G,GAAWG,eACrB8G,YAAa,M,ynBCFR,MCMP,IACEna,OAAM,GACNG,OAAM,GACNia,WFQF,CACEhG,eAN4BA,CAACpS,EAAUqY,EAAQtU,IAAkBgT,GACjEhT,EAAgB0O,GAAWJ,0BAA4BI,GAAWL,e,kWAActW,CAAA,CAC9Euc,SAAQC,UAAWtY,GAAakY,MEJlC/c,oBC0BF,CACEod,YA/B0BC,GAAmB,IAAMzB,GACnDtE,GAAWH,+BACX,CAAEkG,mBA8BFC,gBArB6BA,CAACD,EAAgBtE,IAASiD,GACvDJ,GACEtE,GAAWF,mCACX,CAAEiG,mBAEJtE,GAiBAwE,YARyBA,CAACF,EAAgBG,IAAW5B,GACrDtE,GAAWD,+BACX,CAAEgG,iBAAgBG,YDtBlBC,aEeF,CACEzG,aAtB2B0G,GAC3B9B,GAAmBtE,GAAWN,aAAc,CAAE0G,gBAAeC,YAAa,OAsB1E7G,WAfyB6G,GACzB/B,GAAmBtE,GAAWR,WAAY,CAAE4G,cAAe,KAAMC,gBAejE5G,cAP2BA,CAAC2G,EAAeC,IAC3C/B,GAAmBtE,GAAWP,cAAe,CAAE2G,gBAAeC,iBFX9DC,YGP0BhH,CAAC/R,EAAUgZ,IAAS,IbkDxB9b,KAAA,IAAC,SAAE8C,EAAQ,KAAEgZ,GAAM9b,EAAA,OAAKU,GAAgB,CAC9DiW,UAAWpB,GAAWV,aACtB/R,WACAb,KAAM,CACJmZ,UAAWtY,EACXiZ,kBAAmBD,EACnB3T,SAAU,cAEZ,Ea1DoDuP,CAAa,CAAE5U,WAAUgZ,SHQ7EE,YDHF,CACExG,mBAXgC,SAACwB,GAAI,IAAEtF,EAAID,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAKwI,GACrDJ,GAAmBtE,GAAWC,mB,kWAAkB5W,CAAA,CAC9C4b,SAAU,eACVD,SAAU,SACVE,aAAczG,GAAWI,cACtB1C,IAELsF,EACD,GCMC/W,OIAF,CACEyV,cAf2BA,IAAMmE,GACjCtE,GAAWG,cACX,CAAEiF,SAAU3G,GAAW/T,QAFU4Z,GAgBjClE,qBAXkC,eAACtX,EAAOoT,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,GAAE,OAAKoI,GACpDtE,GAAWI,qBACX,CACEgF,SAAU3G,GAAW/T,OAErB5B,QAAS,IAAIA,GAASkL,QAL4BsQ,EAOnD,ICPUrb,GAAQ5C,EAAW,CAC9BqgB,UAAY3e,GAAQsb,EAAAA,SAAetb,MAG7B+d,YAAW,GAAEG,YAAW,GAAED,gBAAeA,IAAKW,GAAMje,oB,gBCDrD,MAAMke,GAA2BA,KACtC,MAAM,cAAEC,IAAkBlD,EAAAA,GAAAA,MACpB,UACJ+C,EAAS,YACTI,EAAW,eACXC,EAAc,aACdC,EAAY,UACZtI,GDJsCuI,MACxC,MAAOP,EAAWQ,GAAgB/b,GAAaub,WAAU,GACnDhI,EAAYmD,GAAW9H,6BAEvBoN,EAAcrB,GAAYpH,EAAUqH,gBACpCqB,EAAanB,GAAYvH,EAAUqH,eAAgB,iBACnDsB,EAAcpB,GAAYvH,EAAUqH,eAAgB,UAEpDgB,EAAiBf,GAAgBtH,EAAUqH,eAAgBrH,EAAUvR,KAgB3E,OANAkW,EAAAA,WAAgB,KACV3E,GAAaA,EAAU2G,OACzB8B,GACF,GACC,IAEI,CACLT,YACAK,iBACAD,YAlBkBA,KAClBM,IACAF,GAAa,EAAM,EAiBnBF,aAfmBA,KACnBK,IACAH,GAAa,EAAM,EAcnBxI,YACD,ECzBGuI,GACJ,OAAKvI,GAAcA,EAAU2G,OAI3B5gB,EAAAA,GAAAA,KAAC6iB,GAAAA,EAAW,CACVC,OAAQb,EACRc,QAASR,EACTS,gBAAgB,EAChBhV,MAAM,GAAEiV,UAERC,EAAAA,GAAAA,MAAA,OACEC,UAAU,8BACVC,MAAO,CAAEC,UAAW,SAAUJ,SAAA,EAE9BjjB,EAAAA,GAAAA,KAAA,MAAAijB,SACGb,EAAckB,GAAS/D,uBAAwB,CAC9CqB,MAAO3G,EAAU2G,WAGrB5gB,EAAAA,GAAAA,KAAA,KAAAijB,SACGb,EAAckB,GAAS5D,qBAAsB,CAC5CkB,MAAO3G,EAAU2G,WAGrBsC,EAAAA,GAAAA,MAACK,GAAAA,EAAS,CAAAN,SAAA,EACRjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,WAAWC,QAASrB,EAAYY,SAC7Cb,EAAckB,GAAS3D,kCAE1B3f,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAAC3jB,KAAK,IAAImd,KAAM/C,EAAUvR,IAAKgb,QAASpB,EAAeW,SAC3Db,EAAckB,GAAS1D,yCA5BzB,IAgCO,EAIlBuC,GAAyBwB,UAAY,CAAC,EAEtC,Y,gBC1DO,MAAMC,GAAe,QCwC5B,IAtCiBtE,EAAAA,GAAAA,IAAe,CAC9BuE,oBAAqB,CACnBjkB,GAAI,iDACJ6f,YAAa,6CACbD,eAAgB,4BAElBsE,oBAAqB,CACnBlkB,GAAI,iDACJ6f,YAAa,qCACbD,eAAgB,oBAElBuE,kBAAmB,CACjBnkB,GAAI,+CACJ6f,YAAa,2CACbD,eAAgB,gHAElBwE,kBAAmB,CACjBpkB,GAAI,+CACJ6f,YAAa,oDACbD,eAAgB,kGAElByE,mBAAoB,CAClBrkB,GAAI,gDACJ6f,YAAa,iCACbD,eAAgB,iBAElB0E,UAAW,CACTtkB,GAAI,uCACJ6f,YAAa,yCACbD,eAAgB,cAElB2E,eAAgB,CACdvkB,GAAI,4CACJ6f,YAAa,0CACbD,eAAgB,qBCvBPhb,GAAQ5C,EAAW,CAC9BwiB,gBAAkB9gB,GAAQsb,EAAAA,SAAetb,KC2D3C,GAzDkC+gB,KAChC,MAAM,kBACJlX,EAAiB,UACjB8U,EAAS,kBACTqC,EAAiB,gBACjBC,EAAe,gBACfC,EAAe,aACfC,EAAY,OACZC,EAAM,KACNC,EAAI,gBACJP,GDTqC5O,MACvC,MAAM,cAAE4M,IAAkBlD,EAAAA,GAAAA,KAEpB0F,EAAiBxH,GAAW5H,4BAA4BnS,QACxD,kBACJ8J,EAAiB,YACjBD,GACEkQ,GAAW/G,uBAAuBuO,IAC9B5W,MAAO6W,GAAgBzH,GAAWnH,kBAAkB2O,IACtD,SAAE9b,GAAasU,GAAWlH,qBAAqB0O,IAAmB,CAAC,GACnE,WAAEhZ,GAAewR,GAAWhH,sBAAsBwO,GAClDliB,EAA0Byc,GAASrB,2BAA2B8G,GAC9DE,EAA8B3F,GAAStB,+BAA+B+G,GACtExiB,EAA2B+c,GAASxB,4BAA4BiH,IAE/DR,EAAiBW,GAAsBre,GAAa0d,gBAAgBtb,GAAY,MAEvF,IAAI4b,EACAC,EACAzX,GACFwX,EAAStC,EAAckB,GAASO,qBAChCc,EAAOvC,EAAckB,GAASS,qBAE9BW,EAAStC,EAAckB,GAASQ,oBAAqB,CAAEe,gBACvDF,EAAOvC,EAAckB,GAASU,oBAEhC,MAAMM,EAAoBlH,GAAWjG,oCAAoC,MAEnE6N,EAAkB9C,GAAMR,aAAa3G,WAAWqJ,GAChDa,EAAqB/C,GAAMR,aAAa1G,cAAc4J,EAAgBR,GACtEc,EAAoBhD,GAAMR,aAAazG,aAAa2J,GAiB1D,MAAO,CACL3C,UAA6B,MAAlB2C,EACXN,oBACAC,gBAAiBrX,EACjBC,oBACAwX,OACAD,SACAN,kBACAI,gBAvBsB/f,IAAA,IAAGrE,QAAQ,MAAEwR,IAASnN,EAAA,OAAKsgB,EAAmBnT,EAAM,EAwB1E6S,aAvBmBA,KACfL,IAAoBR,IACtBsB,IACAxiB,KACSkJ,GACTqZ,IACAH,EAA4BV,KAE5BY,IACA5iB,EAAyBgiB,IAE3BE,GAAmB,EAapB,EC/CG9O,GAEErU,EAAaie,GAAUH,iBACvB,cAAEmD,IAAkBlD,EAAAA,GAAAA,KAE1B,OACEgE,EAAAA,GAAAA,MAACL,GAAAA,EAAW,CACVC,OAAQb,EACRc,QAASrhB,EACTshB,gBAAgB,EAChBmC,sBAAoB,EACpBC,KAAK,KACLjC,UAAU,aACVnV,MAAO0W,EAAOzB,SAAA,EAEdjjB,EAAAA,GAAAA,KAAA,MAAAijB,SAAKyB,KACLxB,EAAAA,GAAAA,MAACmC,GAAAA,GAAKC,MAAK,CAACnC,UAAU,OAAMF,SAAA,EAC1BjjB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKE,MAAK,CAAAtC,SAAE0B,KACbzB,EAAAA,GAAAA,MAACmC,GAAAA,GAAKG,SAAQ,CACZnlB,KAAK,WACL8iB,UAAU,YACVsC,SAAUjB,EACV5S,MAAOwS,EAAgBnB,SAAA,CAEtB9V,GAAmBM,KAAKiY,IACvBxC,EAAAA,GAAAA,MAACmC,GAAAA,GAAKM,MAAK,CAAwB/T,MAAO8T,EAAQ5c,SAASma,SAAA,CACxD/hB,EAAcC,EAAYukB,EAAQ/a,WAAW,MAAIzJ,EAAcC,EAAYukB,EAAQhb,WADrEgb,EAAQ5c,YAI1Byb,IACCvkB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKM,MAAK,CAAC/T,MAAOgS,GAAaX,SAC7Bb,EAAckB,GAASW,6BAKhCf,EAAAA,GAAAA,MAACK,GAAAA,EAAS,CAAAN,SAAA,EACRjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,WAAWC,QAASY,EAAkBrB,SACnDb,EAAckB,GAASY,cAE1BlkB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACE,QAASe,EAAaxB,SAAEb,EAAckB,GAASa,uBAE7C,E,2HCpElB,MA0DA,IA1DiB7E,EAAAA,GAAAA,IAAe,CAC9BsG,aAAc,CACZhmB,GAAI,8CACJ6f,YAAa,oCACbD,eAAgB,iBAElBhR,WAAY,CACV5O,GAAI,4CACJ6f,YAAa,4DACbD,eAAgB,eAElB/Q,WAAY,CACV7O,GAAI,4CACJ6f,YAAa,4DACbD,eAAgB,eAElB9Q,KAAM,CACJ9O,GAAI,sCACJ6f,YAAa,qDACbD,eAAgB,QAElB7Q,YAAa,CACX/O,GAAI,6CACJ6f,YAAa,6DACbD,eAAgB,gBAElB5Q,SAAU,CACRhP,GAAI,0CACJ6f,YAAa,yDACbD,eAAgB,YAElBqG,SAAU,CACRjmB,GAAI,0CACJ6f,YAAa,gCACbD,eAAgB,aAElBjQ,KAAM,CACJ3P,GAAI,sCACJ6f,YAAa,0BACbD,eAAgB,QAElBsG,iBAAkB,CAChBlmB,GAAI,kDACJ6f,YAAa,iCACbD,eAAgB,iBAElBuG,UAAW,CACTnmB,GAAI,2CACJ6f,YAAa,yBACbD,eAAgB,eAElBwG,OAAQ,CACNpmB,GAAI,wCACJ6f,YAAa,+BACbD,eAAgB,YChDPyG,GAAWxhB,IAAmB,IAAlB,UAAEyhB,GAAWzhB,EACpC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAC1B,OACElf,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKY,SAAQ,CAAC9C,UAAU,OAAOvR,MAAOsU,EAAUjD,SAC9Cb,EAAckB,GAAS4C,KACV,EAGpBD,GAAStC,UAAY,CACnBuC,UAAWC,KAAAA,OAAiBC,YAG9B,YCTaC,GAAc,CACzB9X,GAAWC,WACXD,GAAWE,WACXF,GAAWG,KACXH,GAAWI,YACXJ,GAAWK,UAGA0X,GAAa7hB,IAGpB,IAHqB,QACzBJ,EAAO,mBACPkiB,GACD9hB,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAC1B,OACEgE,EAAAA,GAAAA,MAACmC,GAAAA,GAAKC,MAAK,CAAArC,SAAA,EACTjjB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,2BAA0BF,SAAEb,EAAckB,GAASsC,iBAClE5lB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKmB,YAAW,CACfnmB,KAAK,wBACLolB,SAAUc,EACV3U,MAAOvN,EAAQ4e,SAEdoD,GAAY5Y,KAAIyY,IACflmB,EAAAA,GAAAA,KAACimB,GAAQ,CAACC,UAAWA,GAAgBA,SAG9B,EAGjBI,GAAW3C,UAAY,CACrBtf,QAAS8hB,KAAAA,QAAkBA,KAAAA,QAAkBC,WAC7CG,mBAAoBJ,KAAAA,KAAeC,YAGrC,YClCaK,GAAWhiB,IAGlB,IAHmB,iBACvBiiB,EAAgB,OAChBvX,GACD1K,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAC1B,OACEgE,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,2BAA0BF,SAAEb,EAAckB,GAAS/T,SAClE2T,EAAAA,GAAAA,MAACmC,GAAAA,GAAKG,SAAQ,CACZnlB,KAAK,OACLolB,SAAUiB,EACV9U,MAAOzC,EAAO8T,SAAA,EAEdjjB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKM,MAAK,CAACxC,UAAU,OAAOvR,MAAO3D,GAASK,SAAS2U,SACnDb,EAAckB,GAASwC,qBAE1B9lB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKM,MAAK,CAACxC,UAAU,OAAOvR,MAAO3D,GAASD,MAAMiV,SAChDb,EAAckB,GAASyC,kBAG3B,EAGPU,GAAS9C,UAAY,CACnB+C,iBAAkBP,KAAAA,KAAeC,WACjCjX,OAAQgX,KAAAA,OAAiBC,YAG3B,Y,gBC7BO,MAAM5hB,GAAQ5C,EAAW,CAC9BxB,OAASkD,GAAQsb,EAAAA,SAAetb,KCerBsjB,GAAuBniB,IAI9B,IAJ+B,OACnC0K,EAAM,UACN0X,EAAS,QACTxiB,GACDI,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KACpBpX,EAAasV,GAAW1H,iBACxB,OACJoN,EAAM,KACNgE,EAAI,MACJC,EAAK,OACL3mB,EAAM,UACN4mB,EAAS,mBACTT,EAAkB,iBAClBG,GDnBuCjiB,KAGrC,IAHsC,QAC1CJ,EAAO,UACPwiB,GACDpiB,EACC,MAAOqe,EAAQmE,EAAYC,IAAeC,EAAAA,GAAAA,IAAU,IAC7C/mB,EAAQ4mB,GAAatgB,GAAatG,OAAO,MAE1CyF,EAAYuX,GAAWrF,eACvBhS,EAAeqX,GAAWpF,kBAoBhC,MAAO,CACL8K,SACAgE,KAZWA,KACX5E,GAAMjc,OAAOyV,gBACbuL,GAAY,EAWZF,MARYA,KACZ7E,GAAMjc,OAAO0V,qBAAqBtX,GAClC6iB,GAAa,EAOb9mB,SACA4mB,YACAT,mBAxByBlhB,IAAoC,IAAjCjF,QAAQ,QAAEgnB,EAAO,MAAExV,IAASvM,GACzC+hB,EAAUvhB,EAAYE,GAC9B6L,EAAM,EAuBb8U,iBArBuBlhB,IAA2B,IAAxBpF,QAAQ,MAAEwR,IAASpM,EAC7CqhB,EAAUjV,EAAM,EAqBjB,EChBGyV,CAA4B,CAC9BhjB,UACAwiB,eAEI,MAAES,IAAUC,EAAAA,GAAAA,KACZC,EAAWF,EAAQG,GAAAA,EAAYC,MAAMC,SAE3C,OACEzE,EAAAA,GAAAA,MAAA,OAAKtjB,GAAG,yBAAwBqjB,SAAA,EAC9BjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CACLoE,IAAKZ,EACLvD,QAAQ,kBACRoE,WAAYC,GAAAA,EACZpE,QAASoD,EACTiB,UAAWjgB,EAAWmb,SAErBb,EAAckB,GAAS0C,WAE1BhmB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAI,CAAApC,SACFuE,GAEGtE,EAAAA,GAAAA,MAAC8E,GAAAA,GAAK,CACJ7E,UAAU,OACV8E,SAAS,OACTC,KAAMpF,EACNC,QAASgE,EAAM9D,SAAA,EAEfjjB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,WAAUF,UACvBjjB,EAAAA,GAAAA,KAAA,KAAAijB,SAAIb,EAAckB,GAAS0C,aAE7BhmB,EAAAA,GAAAA,KAAA,UACAA,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,kBAAiBF,UAC9BjjB,EAAAA,GAAAA,KAACsmB,GAAU,CAAOjiB,UAASkiB,0BAE7BvmB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,gCAA+BF,UAC5CjjB,EAAAA,GAAAA,KAACymB,GAAQ,CAAOtX,SAAQuX,wBAE1B1mB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,6BAA4BF,UACzCjjB,EAAAA,GAAAA,KAACmoB,GAAAA,EAAgB,CAAC1E,QAAQ,WAAWC,QAASqD,EAAM9D,UAClDjjB,EAAAA,GAAAA,KAACooB,GAAAA,EAAI,CAACC,IAAKC,GAAAA,YAKjBtoB,EAAAA,GAAAA,KAACuoB,GAAAA,EAAU,CACTC,YAAapoB,EACb0iB,OAAQA,EACRC,QAASgE,EACT0B,UAAU,aAAYxF,UAEtBC,EAAAA,GAAAA,MAAA,OACEtjB,GAAG,8BACHujB,UAAU,8CAA6CF,SAAA,EAEvDjjB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,kBAAiBF,UAC9BjjB,EAAAA,GAAAA,KAACsmB,GAAU,CAAOjiB,UAASkiB,0BAE7BvmB,EAAAA,GAAAA,KAAA,MAAImjB,UAAU,oCACdnjB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,gCAA+BF,UAC5CjjB,EAAAA,GAAAA,KAACymB,GAAQ,CAAOtX,SAAQuX,gCAMhC,EAGVE,GAAqBjD,UAAY,CAC/BxU,OAAQgX,KAAAA,OAAiBC,WACzBS,UAAWV,KAAAA,KAAeC,WAC1B/hB,QAAS8hB,KAAAA,QAAkBA,KAAAA,QAAkBC,YAG/C,Y,4BCvGO,MAAMsC,GAAsBjkB,IAG7B,IAH8B,QAClCJ,EAAO,mBACPskB,GACDlkB,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KACpB/Y,EAAeiX,GAAWnF,kBAChC,OACEiL,EAAAA,GAAAA,MAAA,OAAKtjB,GAAG,6BAA4BqjB,SAAA,CACjC5e,EAAQoJ,KAAIxH,IACXjG,EAAAA,GAAAA,KAAC4oB,GAAAA,EAAI,CAEHC,UAAWC,GAAAA,EACXpF,QAASiF,EAAmB1iB,GAAQgd,SAEnCb,EAAckB,GAASrd,KAJnBA,MAOTjG,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,OAAOC,QAASvd,EAAa8c,SAC1Cb,EAAckB,GAASuC,cAEtB,EAGV6C,GAAoB/E,UAAY,CAC9Btf,QAAS8hB,KAAAA,QAAkBA,KAAAA,QAAkBC,WAC7CuC,mBAAoBxC,KAAAA,KAAeC,YAGrC,Y,gECjCO,MAAM2C,GAAStkB,IAAA,IAAC,SACrBwe,EAAQ,QAAEQ,EAAO,KAAEuF,EAAI,UAAE7F,GAC1B1e,EAAA,OACCzE,EAAAA,GAAAA,KAACipB,GAAAA,EAAK,CAACxF,QAASA,EAASN,UAAWA,EAAW6F,KAAMA,EAAK/F,SACvDA,GACK,EAEV8F,GAAOG,aAAe,CACpBF,KAAMG,GAAAA,EACN1F,QAAS,OACTN,UAAW,QAEb4F,GAAOpF,UAAY,CACjBF,QAAS0C,KAAAA,OACT6C,KAAM7C,KAAAA,KACNlD,SAAUkD,KAAAA,KAAeC,WACzBjD,UAAWgD,KAAAA,QAGb,YC+FA,IAtHiB7G,EAAAA,GAAAA,IAAe,CAC9B8J,mBAAoB,CAClBxpB,GAAI,qDACJ6f,YAAa,yCACbD,eAAgB,iDAElB6J,gBAAiB,CACfzpB,GAAI,kDACJ6f,YAAa,mEACbD,eAAgB,4CAElB8J,kBAAmB,CACjB1pB,GAAI,oDACJ6f,YAAa,sDACbD,eAAgB,uBAElB+J,sBAAuB,CACrB3pB,GAAI,wDACJ6f,YAAa,+CACbD,eAAgB,qHAElBgK,qBAAsB,CACpB5pB,GAAI,uDACJ6f,YAAa,uDACbD,eAAgB,2BAElBiK,eAAgB,CACd7pB,GAAI,wDACJ6f,YAAa,yCACbD,eAAgB,iVAElBkK,sBAAuB,CACrB9pB,GAAI,+DACJ6f,YAAa,yCACbD,eAAgB,oTAElBmK,yBAA0B,CACxB/pB,GAAI,kEACJ6f,YAAa,iEACbD,eAAgB,oHAElBoK,gCAAiC,CAC/BhqB,GAAI,yEACJ6f,YAAa,iEACbD,eAAgB,qFAElBqK,aAAc,CACZjqB,GAAI,+CACJ6f,YAAa,gEACbD,eAAgB,0DAElBsK,mBAAoB,CAClBlqB,GAAI,qDACJ6f,YAAa,qCACbD,eAAgB,2CAElBuK,WAAY,CACVnqB,GAAI,6CACJ6f,YAAa,oBACbD,eAAgB,gBAElBwK,UAAW,CACTpqB,GAAI,4CACJ6f,YAAa,4BACbD,eAAgB,gDAElByK,gBAAiB,CACfrqB,GAAI,kDACJ6f,YAAa,wBACbD,eAAgB,qBAElB0K,aAAc,CACZtqB,GAAI,+CACJ6f,YAAa,oCACbD,eAAgB,yDAElB2K,oBAAqB,CACnBvqB,GAAI,sDACJ6f,YAAa,iCACbD,eAAgB,yBAElB4K,uBAAwB,CACtBxqB,GAAI,0DACJ6f,YAAa,kDACbD,eAAgB,mEAElB6K,uBAAwB,CACtBzqB,GAAI,yDACJ6f,YAAa,4DACbD,eAAgB,sKAElB8K,wBAAyB,CACvB1qB,GAAI,0DACJ6f,YAAa,oEACbD,eAAgB,4EAElB+K,mBAAoB,CAClB3qB,GAAI,qDACJ6f,YAAa,8DACbD,eAAgB,sCAElBgL,cAAe,CACb5qB,GAAI,gDACJ6f,YAAa,0CACbD,eAAgB,oBAElBiL,oBAAqB,CACnB7qB,GAAI,sDACJ6f,YAAa,+CACbD,eAAgB,sFAElBkL,oBAAqB,CACnB9qB,GAAI,sDACJ6f,YAAa,iCACbD,eAAgB,wHC1GPmL,GAAelmB,IAAgB,IAAf,OAAEpB,GAAQoB,EACrC,MAAM,WACJ8H,EAAU,qBACVD,EAAoB,WACpBF,EAAU,iBACVJ,EAAmB,CAAC,GAClBoR,GAAWhH,sBAAsB/S,GAC/B2D,EAAYoW,GAAWlH,qBAAqB7S,IAC5C,cAAE+e,IAAkBlD,EAAAA,GAAAA,KACpB/d,EAAaie,GAAUH,iBAEvB,sBAAE2L,EAAqB,QAAE/e,EAAO,WAAEE,GAAeC,EAEvD,OAAIO,EAAqB,MAGvB2W,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,CACG3W,IACKF,GACF8W,EAAAA,GAAAA,MAAC6F,GAAM,CAAA9F,SAAA,CACJb,EAAckB,GAAS8F,oBACvB,KACAhH,EAAckB,GAAS+F,qBAG1BnG,EAAAA,GAAAA,MAAC6F,GAAM,CAAA9F,SAAA,CACJb,EAAckB,GAAS8F,oBACvB,MACDppB,EAAAA,GAAAA,KAAC6qB,GAAAA,GAAS,CAACC,UAAQ,EAACC,YAAY,GAAE9H,SAC/Bb,EAAckB,GAASgG,yBAK/BtiB,EAAUgkB,WAAa5e,IACtB8W,EAAAA,GAAAA,MAAC6F,GAAM,CAAA9F,SAAA,CACJb,EAAckB,GAASiG,uBACvB,MACDvpB,EAAAA,GAAAA,KAAC6qB,GAAAA,GAAS,CAACC,UAAQ,EAACC,YAAa/jB,EAAUkE,cAAgB,GAAG+X,SAC3Db,EAAckB,GAASkG,4BAK3B3d,GAAWE,GAAc/E,EAAU2D,YACpC3K,EAAAA,GAAAA,KAAC+oB,GAAM,CAAA9F,SACJb,EAAckB,GAASoH,oBAAqB,CAC3C/f,UAAWxJ,EAAW6F,EAAU2D,gBAInCkB,GAAW+e,IACZ5qB,EAAAA,GAAAA,KAAC+oB,GAAM,CAAA9F,SAAEb,EAAckB,GAASmH,yBAEjC,EAGPE,GAAahH,UAAY,CACvBtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,4BC1DA,MAAQnH,cAAaA,IAAKG,GAEb6L,GAAoBxmB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC1C,MAAMoC,EAAcuW,GAAWpH,uBAAuB3S,IAChD,QACJgJ,EAAO,WACPE,GACE6Q,GAAWhH,sBAAsB/S,IAC/B,UAAEkK,GAAc6P,GAAW9G,iBAAiBjT,IAC5C,WAAEuH,GAAewS,GAAWlH,qBAAqB7S,IACjD,gBAAEyH,EAAe,YAAEM,GAAgBgS,GAAWlH,qBAAqB7S,IACnE,aAAE6nB,EAAY,aAAEC,GAAiB/N,GAAW7H,2BAC5C,cAAE6M,IAAkBlD,EAAAA,GAAAA,KACpB/d,EAAa8d,KAEbmM,EAAYC,IAAWrrB,EAAAA,GAAAA,KAACsrB,GAAAA,GAAU,CAACC,GAAIF,EAAQpI,SAAEoI,IAEvD,OAAIxkB,EAAYwD,cAEZ6Y,EAAAA,GAAAA,MAAC6F,GAAM,CAACtF,QAAQ,SAAQR,SAAA,CACpBiI,EAAe9I,EAAckB,GAASmG,eAAgB,CAAEyB,aAAcE,EAAUF,KAAmB9I,EAAckB,GAASoG,uBAC3Hnd,GAAc,KACdA,IAAe4e,EAAe/I,EAAckB,GAASqG,yBAA0B,CAAEwB,aAAcC,EAAUD,KAAmB/I,EAAckB,GAASsG,qCAItJ/iB,EAAYqD,gBAEZgZ,EAAAA,GAAAA,MAAC6F,GAAM,CAACtF,QAAQ,UAAUuF,KAAMwC,GAAAA,EAAYvI,SAAA,CACzCb,EAAckB,GAAS0G,WACvBnjB,EAAYoD,iBACXiZ,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,CACG,MACDjjB,EAAAA,GAAAA,KAAC6qB,GAAAA,GAAS,CAACC,UAAQ,EAACC,YAAalkB,EAAYoD,eAAegZ,SACzDb,EAAckB,GAAS2G,yBAO/B1c,EAuBD1G,EAAYsD,wBAEZnK,EAAAA,GAAAA,KAAC+oB,GAAM,CAAA9F,SACJb,EACCkB,GAAS8G,uBACT,CAAEpgB,cAAe7I,EAAW0F,EAAYmD,mBAMzC,KAjCDqC,GAEArM,EAAAA,GAAAA,KAAC+oB,GAAM,CAAA9F,SACJb,EAAckB,GAASuG,aAAc,CAAE/e,sBAI1CF,GAEAsY,EAAAA,GAAAA,MAAC6F,GAAM,CAACtF,QAAQ,UAASR,SAAA,CACtBb,EAAckB,GAASwG,oBACvB,MACD9pB,EAAAA,GAAAA,KAAC6qB,GAAAA,GAAS,CAACC,UAAQ,EAACC,YAAa3f,EAAY6X,SAAEb,EAAckB,GAASyG,kBAK1E/pB,EAAAA,GAAAA,KAAC+oB,GAAM,CAACtF,QAAQ,UAASR,SACtBb,EAAckB,GAAS4G,aAAc,CAAEpf,qBAenC,EAEbmgB,GAAkBtH,UAAY,CAC5BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,gBC5FO,MCKMqF,GAAoBhnB,IAAqB,IAApB,YAAEinB,GAAajnB,EAC/C,MAAM,IAAEmjB,GDN+B8D,KACvC,MAAM9D,EAAMhJ,EAAAA,OAAa,MAMzB,OALAA,EAAAA,WAAgB,KACM,OAAhB8M,GACF9D,EAAI+D,QAAQC,OACd,GACC,CAACF,IACG,CAAE9D,MAAK,ECDEiE,CAAyBH,GACzC,GAAoB,OAAhBA,EACF,OAAO,KAET,MAAM,WAAEI,EAAU,IAAEpjB,GAAQgjB,EAC5B,OACExI,EAAAA,GAAAA,MAACmC,GAAAA,GAAI,CACH,gBAAc,QACd/H,OAAQ5U,EACRya,UAAU,SACV4I,OAAO,OAAM9I,SAAA,CAEZtb,OAAOC,KAAKkkB,GAAYre,KAAKue,IAC5BhsB,EAAAA,GAAAA,KAACisB,GAAAA,EAAW,CACVC,GAAG,WAEH7rB,KAAM2rB,EACNpa,MAAOka,EAAWE,IAFbA,MAKThsB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAAC3jB,KAAK,SAAS+nB,IAAKA,MACtB,EAGX6D,GAAkBvC,aAAe,CAC/BwC,YAAa,MAEfD,GAAkB9H,UAAY,CAC5B+H,YAAavF,KAAAA,MAAgB,CAC3B2F,WAAY3F,KAAAA,SAAmBA,KAAAA,QAC/Bzd,IAAKyd,KAAAA,UAIT,YCpCagG,GAAgB1nB,IAAA,IAAC,OAAE6Y,EAAM,QAAE8O,EAAO,YAAEV,GAAajnB,EAAA,OAC5Dye,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,0BAA0B,cAAY,aAAYF,SAC9DmJ,IAEF9O,IACCtd,EAAAA,GAAAA,KAACujB,GAAAA,EAAS,CAACJ,UAAU,OAAMF,UACzBjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CACL0I,GAAG,IACHnE,WAAYzK,EAAOyK,SAEnB/K,KAAMM,EAAON,MAAQ,IACrBqP,IAAI,WACJjsB,OAAO,SACPqjB,QAAQ,kBACRN,UAAU,kBACVO,QAASpG,EAAOoG,QAChB,cAAY,iBAAgBT,SAE3B3F,EAAO8O,aAIdpsB,EAAAA,GAAAA,KAACyrB,GAAiB,CAACC,YAAaA,MAC/B,EAELS,GAAcjD,aAAe,CAC3B5L,OAAQ,KACRoO,YAAa,MAEfS,GAAcxI,UAAY,CACxBrG,OAAQ6I,KAAAA,MAAgB,CACtBnJ,KAAMmJ,KAAAA,OACNzC,QAASyC,KAAAA,KACTiG,QAASjG,KAAAA,OACT4B,SAAU5B,KAAAA,OAEZiG,QAASjG,KAAAA,KAAeC,WACxBsF,YAAavF,KAAAA,MAAgB,CAC3Bzd,IAAKyd,KAAAA,OACL2F,WAAY3F,KAAAA,SAAmBA,KAAAA,WAInC,YC3CamG,GAAe7nB,IAAgB,IAAf,OAAEpB,GAAQoB,EACrC,MAAMwC,EAASmW,GAAWjH,kBAAkB9S,GAC5C,OACErD,EAAAA,GAAAA,KAAC6qB,GAAAA,GAAS,CACR7N,KAAM/V,EAAOuE,kBACb6gB,IAAI,WACJjsB,OAAO,SAAQ6iB,SAEdhc,EAAOwE,cACE,EAGhB6gB,GAAa3I,UAAY,CACvBtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YCqCA,IA1DiB9G,EAAAA,GAAAA,IAAe,CAC9BiN,SAAU,CACR3sB,GAAI,kDACJ6f,YAAa,GACbD,eAAgB,oJAElBgN,gBAAiB,CACf5sB,GAAI,yDACJ6f,YAAa,GACbD,eAAgB,oBAElBiN,SAAU,CACR7sB,GAAI,kDACJ6f,YAAa,GACbD,eAAgB,kHAElBkN,qBAAsB,CACpB9sB,GAAI,8DACJ6f,YAAa,GACbD,eAAgB,yEAElBmN,UAAW,CACT/sB,GAAI,mDACJ6f,YAAa,GACbD,eAAgB,cAElBoN,YAAa,CACXhtB,GAAI,qDACJ6f,YAAa,GACbD,eAAgB,8JAElBqN,SAAU,CACRjtB,GAAI,kDACJ6f,YAAa,GACbD,eAAgB,mHAElBsN,SAAU,CACRltB,GAAI,kDACJ6f,YAAa,GACbD,eAAgB,gIAElBuN,cAAe,CACbntB,GAAI,uDACJ6f,YAAa,GACbD,eAAgB,kBAElBwN,WAAY,CACVptB,GAAI,oDACJ6f,YAAa,GACbD,eAAgB,eAElByN,YAAa,CACXrtB,GAAI,qDACJ6f,YAAa,GACbD,eAAgB,kBC7CP0N,GAAkBzoB,IAAgB,IAAf,OAAEpB,GAAQoB,EACxC,MAAQ+G,kBAAmBwR,EAAI,aAAEvR,GAAiB2R,GAAWjH,kBAAkB9S,IACzE,eAAE+N,GAAmBgM,GAAW9E,qBAChC,cAAE8J,IAAkBlD,EAAAA,GAAAA,KAC1B,OACElf,EAAAA,GAAAA,KAACmsB,GAAa,CACZ7O,OAAQ,CAAEN,OAAMoP,QAAShK,EAAckB,GAAS0J,YAAajF,SAAU3W,GACvEgb,QAAShK,EACPkB,GAASiJ,SACT,CACEC,iBAAiBxsB,EAAAA,GAAAA,KAAA,KAAAijB,SAAIb,EAAckB,GAASkJ,mBAC5CW,oBAAoBntB,EAAAA,GAAAA,KAACssB,GAAY,CAACjpB,OAAQA,IAC1CoI,kBAGJ,EAGNyhB,GAAgBvJ,UAAY,CAC1BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YCtBagH,GAAkB3oB,IAAgB,IAAf,OAAEpB,GAAQoB,EACxC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,aAAEzT,GAAiB2R,GAAWjH,kBAAkB9S,IAChD,SAAEyF,GAAasU,GAAWlH,qBAAqB7S,GAE/CqgB,EAAUxB,GAAMjb,OAAO8Z,SAASjY,GAChC6jB,EAAYvK,EAAckB,GAASqJ,WACnCP,EAAU3gB,EACZ2W,EAAckB,GAASoJ,qBAAsB,CAAEjhB,iBAC/C2W,EAAckB,GAASmJ,SAAU,CAAEE,WAAY3sB,EAAAA,GAAAA,KAAA,KAAAijB,SAAI0J,MAEvD,OACE3sB,EAAAA,GAAAA,KAACmsB,GAAa,CACZ7O,OAAQ,CAAEoG,UAAS0I,QAASO,GAC5BP,QAASA,GACT,EAGNgB,GAAgBzJ,UAAY,CAC1BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YC1Ba5hB,GAAQ5C,EAAW,CAC9ByrB,kBAAoB/pB,GAAQsb,EAAAA,SAAetb,KCIhCgqB,GAAqB7oB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC3C,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,YAAEwM,EAAW,oBAAE6B,GDHclqB,KACnC,MAAOqoB,EAAa8B,GAAkB9mB,GAAa2mB,kBAAkB,MAC/DI,EAAyBtO,GAASV,uBAAuBpb,GAQ/D,MAAO,CAAEqoB,cAAa6B,oBAPO3sB,IAC3BA,EAAEsf,iBACFuN,IACGrU,MAAMnI,IACLuc,EAAevc,EAAQhJ,KAAK,GAC5B,EAEqC,ECPEylB,CAA2BrqB,IAClE,eAAE+N,GAAmBgM,GAAW9E,oBACtC,OACEtY,EAAAA,GAAAA,KAACmsB,GAAa,CACZ7O,OAAQ,CACN8O,QAAShK,EAAckB,GAASyJ,eAChCrJ,QAAS6J,EACTxF,SAAU3W,GAEZgb,QAAShK,EAAckB,GAASsJ,YAAa,CAC3CO,oBAAqBntB,EAAAA,GAAAA,KAACssB,GAAY,CAACjpB,OAAQA,IAC3C0pB,eAAgB/sB,EAAAA,GAAAA,KAAA,KAAAijB,SAAIb,EAAckB,GAASyJ,mBAE7CrB,YAAaA,GACb,EAGN4B,GAAmB3J,UAAY,CAC7BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YC1BauH,GAAiBlpB,IAAgB,IAAf,OAAEpB,GAAQoB,EACvC,MAAQ+G,kBAAmBwR,EAAI,aAAEvR,GAAiB2R,GAAWjH,kBAAkB9S,IACzE,eAAE+N,GAAmBgM,GAAW9E,qBAChC,cAAE8J,IAAkBlD,EAAAA,GAAAA,KAC1B,OACElf,EAAAA,GAAAA,KAACmsB,GAAa,CACZ7O,OAAQ,CACNN,OACAoP,QAAShK,EAAckB,GAAS2J,aAChClF,SAAU3W,GAEZgb,QAAShK,EAAckB,GAASuJ,SAAU,CAAEphB,kBAC5C,EAGNkiB,GAAehK,UAAY,CACzBtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YClBawH,GAAkBnpB,IAAgB,IAAf,OAAEpB,GAAQoB,EACxC,MAAMwC,EAASmW,GAAWjH,kBAAkB9S,IACtC,cAAE+e,IAAkBlD,EAAAA,GAAAA,KAC1B,OACElf,EAAAA,GAAAA,KAACmsB,GAAa,CACZC,QAAShK,EAAckB,GAASwJ,SAAU,CACxCrhB,aAAcxE,EAAOwE,aACrB0hB,oBAAqBntB,EAAAA,GAAAA,KAACssB,GAAY,CAACjpB,OAAQA,OAE7C,EAGNuqB,GAAgBjK,UAAY,CAC1BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,MChBayH,GAAmBjsB,EAAW,CACzCE,QAAS6rB,GACTpB,SAAUW,GACVJ,SDaF,KEXA,IAbiBxN,EAAAA,GAAAA,IAAe,CAC9B3e,MAAO,CACLf,GAAI,+CACJ6f,YAAa,GACbD,eAAgB,mFAElBsO,aAAc,CACZluB,GAAI,sDACJ6f,YAAa,GACbD,eAAgB,8C,89BCAb,MAAMuO,GAAetpB,IAAgB,IAAf,OAAEpB,GAAQoB,EACrC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KACpB8O,EFG4B3qB,KAClC,MAAM4D,EAASmW,GAAWjH,kBAAkB9S,IACtC,aAAE6nB,GAAiB9N,GAAW7H,0BACpC,IAAKtO,EAAOsE,WAAc,OAAO,KAEjC,MAAM,MAAE5K,EAAK,UAAE+K,EAAS,cAAEC,GAAkB1E,EAC5C,IAAIgnB,EAAmBb,GASvB,OARI1hB,IACmB,MAAjBC,EACFsiB,EAAmBX,GACV3lB,OAAOC,KAAKimB,IAAkBjhB,SAASjB,KAChDsiB,EAAmBJ,GAAiBliB,KAIjC,CACLsiB,mBACAttB,QACAuqB,eACD,EEtBgBwC,CAA0BrqB,GAC3C,GAAiB,OAAb2qB,EACF,OAAO,KAGT,MAAM,iBAAEC,EAAgB,MAAEttB,EAAK,aAAEuqB,GAAiB8C,EAC5CE,GAAoBluB,EAAAA,GAAAA,KAACsrB,GAAAA,GAAU,CAACC,GAAIL,EAAajI,SAAEiI,IACzD,OACEhI,EAAAA,GAAAA,MAAC6F,GAAMnkB,GAAAA,GAAA,GAAMjE,GAAS,CAAE8iB,QAAS,WAAU,IAAAR,SAAA,CACxCtiB,IACCX,EAAAA,GAAAA,KAAA,KAAGmjB,UAAU,mBAAmB,cAAY,mBAAkBF,SAC3DiI,EAAe9I,EAAckB,GAAS3iB,MAAO,CAAEutB,qBAAsB9L,EAAckB,GAASwK,iBAGjG9tB,EAAAA,GAAAA,KAACiuB,EAAgB,CAAC5qB,OAAQA,OACnB,EAGb0qB,GAAapK,UAAY,CACvBtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YCxBa+H,GAAoB1pB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC1C,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,cACJrS,EAAa,YACbQ,EAAW,YACXH,EAAW,eACXH,EAAc,sBACdE,EAAqB,UACrBG,GACEgQ,GAAW/G,uBAAuBhT,IAChC,aAAE6nB,GAAiB9N,GAAW7H,0BAC9B6Y,EAAmBhR,GAAWjG,oCAAoC9T,GAClElC,EAAaie,GAAUH,gBAE7B,OAAKpS,EAIAQ,GAAgBH,EASjBD,GAEAjN,EAAAA,GAAAA,KAAC+oB,GAAM,CAAA9F,SACJb,EAAckB,GAASgH,wBAAyB,CAC/Cvd,eAAgB5L,EAAW4L,GAC3BshB,qBACEruB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,OAAO2B,KAAK,SAASjC,UAAU,UAAUO,QAAS0K,EAAiBnL,SAChFb,EAAckB,GAASkH,qBAOhCpd,GAEApN,EAAAA,GAAAA,KAAC+oB,GAAM,CAAA9F,SACJb,EAAckB,GAASiH,sBAIvB,MA5BHvqB,EAAAA,GAAAA,KAAC+oB,GAAM,CAACtF,QAAQ,UAASR,SACtBb,EAAckB,GAAS+G,uBAAwB,CAC9Ce,UAAWF,IAAgBlrB,EAAAA,GAAAA,KAACsrB,GAAAA,GAAU,CAACC,GAAIL,EAAajI,SAAEiI,QAPzD,IAiCE,EAEbiD,GAAkBxK,UAAY,CAC5BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,gBC9DO,MAAMkI,GAAe7pB,IAAA,IAAC,SAAE6C,GAAU7C,EAAA,OACvCzE,EAAAA,GAAAA,KAAA,MAAImjB,UAAU,kCAAiCF,SAC5C3b,EAASmG,KAAKC,IACb1N,EAAAA,GAAAA,KAAA,MAA6BmjB,UAAU,OAAMF,UAC3CjjB,EAAAA,GAAAA,KAAA,KAAGgd,KAAMtP,EAAQI,WAAWmV,SAAEvV,EAAQM,SAD/BN,EAAQI,eAIhB,EAGPwgB,GAAa3K,UAAY,CACvBrc,SAAU6e,KAAAA,QACRA,KAAAA,MAAgB,CACdrY,WAAYqY,KAAAA,OACZnY,MAAOmY,KAAAA,UAETC,YAGJ,YCQA,IA5BiB9G,EAAAA,GAAAA,IAAe,CAC9BlY,gBAAiB,CACfxH,GAAI,kDACJ6f,YAAa,oCACbD,eAAgB,sBAElB+O,aAAc,CACZ3uB,GAAI,+CACJ6f,YAAa,4BACbD,eAAgB,QAElBgP,gBAAiB,CACf5uB,GAAI,kDACJ6f,YAAa,gCACbD,eAAgB,sBAElBiP,eAAgB,CACd7uB,GAAI,iDACJ6f,YAAa,8BACbD,eAAgB,QAElBkP,kBAAmB,CACjB9uB,GAAI,oDACJ6f,YAAa,kCACbD,eAAgB,0BCdPmP,GAAwBlqB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC9C,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAEpB0P,EAAcxR,GAAW5G,2BAA2BnT,GAE1D,OAAKurB,GAAa/mB,QAKhBqb,EAAAA,GAAAA,MAAC6F,GAAM,CACLC,KAAM6F,GAAAA,EACN1L,UAAU,iEAAgEF,SAAA,EAE1EjjB,EAAAA,GAAAA,KAAA,QAAMmjB,UAAU,qBAAoBF,SACjCb,EAAckB,GAASlc,oBAE1BpH,EAAAA,GAAAA,KAAC8uB,GAAW,CAACxnB,SAAUsnB,EAAYphB,UAX9B,IAYE,EAGbmhB,GAAsBhL,UAAY,CAChCtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YC1Ba2I,GAAoBtqB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC1C,MAAM,WAAEmH,GAAewR,GAAWhH,sBAAsB/S,GACxD,OACE6f,EAAAA,GAAAA,MAAA,OAAKC,UAAU,sBAAsB,cAAY,oBAAmBF,SAAA,EAClEjjB,EAAAA,GAAAA,KAAC2uB,GAAqB,CAACtrB,OAAQA,KAC/BrD,EAAAA,GAAAA,KAAC2qB,GAAY,CAACtnB,OAAQA,KACtBrD,EAAAA,GAAAA,KAACmuB,GAAiB,CAAC9qB,OAAQA,IAC1BuI,IAAc5L,EAAAA,GAAAA,KAACirB,GAAiB,CAAC5nB,OAAQA,IACzCuI,IAAc5L,EAAAA,GAAAA,KAAC+tB,GAAY,CAAC1qB,OAAQA,MACjC,EAGV0rB,GAAkBpL,UAAY,CAC5BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,eC3BA,SAAe,IAA0B,uCC+BzC,GA7BuC/iB,IACrC,MAAM,eAAE+N,GAAmBgM,GAAW9E,qBAChC,WACJlM,EAAU,UAAEH,EAAS,QAAEI,EAAO,qBAAEC,GAC9B8Q,GAAWhH,sBAAsB/S,IAC/B,cACJwJ,EAAa,YAAEK,EAAW,UAAEI,EAAS,YAAED,GACrC+P,GAAW/G,uBAAuBhT,IAEhC,UAAEgI,EAAS,QAAEJ,EAAO,WAAEE,GAAeiS,GAAWlH,qBAAqB7S,GAIrE2rB,GAAqB/iB,GAAcI,GAAWC,EAMpD,MAAO,CACL2iB,oBAT0BhkB,GAAYmG,IAAmBnF,GAAcI,GAAWC,EAUlF4iB,qBAT2B7jB,GAAc+F,IAAmBnF,GAAcI,GAAWC,EAUrF0iB,oBACAG,sBAR4BhkB,GAAeiG,IAAmBhF,EAS9DgjB,sBAV4BviB,GAAiBuE,IAAmBnF,IAAeqB,IAAcD,EAW7FgiB,mBAR0BxiB,IAAkBK,GAAgB8hB,EAS7D,ECHH,IAvBiB1P,EAAAA,GAAAA,IAAe,CAC9BgQ,UAAW,CACT1vB,GAAI,oCACJ6f,YAAa,8BACbD,eAAgB,oBAElB+P,eAAgB,CACd3vB,GAAI,yCACJ6f,YAAa,8BACbD,eAAgB,YAElBgQ,yBAA0B,CACxB5vB,GAAI,mDACJ6f,YAAa,yCACbD,eAAgB,yCAElBiQ,wBAAyB,CACvB7vB,GAAI,kDACJ6f,YAAa,8CACbD,eAAgB,+BCRZjF,mBAAkBA,IAAK2H,GAAMpb,OAExB4oB,GAAkBjrB,IAA6B,IAA5B,OAAEpB,EAAM,YAAEssB,GAAalrB,EACrD,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,aAAE5U,GAAiB8S,GAAWnH,kBAAkB5S,IAChD,QAAE4H,GAAYmS,GAAWlH,qBAAqB7S,IAC9C,WAAEkJ,GAAe6Q,GAAWhH,sBAAsB/S,IAClD,mBAAEgsB,GAAuBO,GAAuBvsB,GAChDwsB,EAAqBzS,GAAW9F,oBAAoBiD,GAAoBlX,EAAQ4H,GAChF6kB,EAAmB,gDAAgDH,IACnEI,GACJ7M,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAAA,OACEmjB,UAAU,2BACVkF,IAAK/d,EACL0lB,IAAK5N,EAAckB,GAASgM,aAG5B/iB,IACE2W,EAAAA,GAAAA,MAAA,QACEC,UAAU,sCACVnV,MAAOoU,EAAckB,GAASkM,0BAA0BvM,SAAA,EAExDjjB,EAAAA,GAAAA,KAACiwB,GAAAA,EAAK,CAAC/D,GAAG,MAAMzI,QAAQ,UAAUN,UAAU,QAAOF,SAChDb,EAAckB,GAASiM,mBAE1BvvB,EAAAA,GAAAA,KAAA,OAAKqoB,IAAK6H,GAAgBF,IAAK5N,EAAckB,GAASmM,iCAMhE,OAAOJ,GACFrvB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAW2M,EAAiB7M,SAAE8M,KAEpC/vB,EAAAA,GAAAA,KAAA,KACEmjB,UAAW2M,EACX9S,KAAM/R,EACNyY,QAASmM,EACTM,SAAS,KAAIlN,SAEZ8M,GAEJ,EAELL,GAAgB/L,UAAY,CAC1BtgB,OAAQ8iB,KAAAA,OAAiBC,WACzBuJ,YAAaxJ,KAAAA,OAAiBC,YAGhCsJ,GAAgBxG,aAAe,CAAC,EAEhC,Y,oDC1DO,MAAM1kB,GAAQ5C,EAAW,CAC9BwuB,OAAS9sB,GAAQsb,EAAAA,SAAetb,KC6BlC,IAlCiBgc,EAAAA,GAAAA,IAAe,CAC9BoF,OAAQ,CACN9kB,GAAI,oCACJ6f,YAAa,kCACbD,eAAgB,0BAElB6Q,UAAW,CACTzwB,GAAI,uCACJ6f,YAAa,8DACbD,eAAgB,yBAElB8Q,SAAU,CACR1wB,GAAI,sCACJ6f,YAAa,6DACbD,eAAgB,wBAElBC,YAAa,CACX7f,GAAI,yCACJ6f,YAAa,uCACbD,eAAgB,mFAElB0E,UAAW,CACTtkB,GAAI,uCACJ6f,YAAa,yCACbD,eAAgB,cAElB+Q,KAAM,CACJ3wB,GAAI,kCACJ6f,YAAa,uCACbD,eAAgB,mBChBPgR,GAAqB/rB,IAI5B,IAJ6B,WACjCgsB,EAAU,KACVvI,EAAI,OACJ7kB,GACDoB,EACC,MAAM,WACJisB,EAAU,SACVC,EAAQ,KACRJ,GFbwB9rB,KAGtB,IAHuB,WAC3BgsB,EAAU,OACVptB,GACDoB,EACC,MAAM,mBAAEgI,GAAuB2Q,GAAWhH,sBAAsB/S,IACzDqtB,EAAYE,GAAiBlqB,GAAa0pB,OAAO3jB,GAClDjK,EAAsB2c,GAASd,uBAAuBhb,GAO5D,MAAO,CACLstB,SAPeA,IAAMC,GAAeF,GAQpCH,KAPWA,KACX/tB,GAAqBkuB,GACrBD,GAAY,EAMZC,aACD,EEHGG,CAAa,CAAEJ,aAAYptB,YACzB,cAAE+e,IAAkBlD,EAAAA,GAAAA,KAE1B,OACElf,EAAAA,GAAAA,KAAC6iB,GAAAA,EAAW,CACVC,OAAQoF,EACRnF,QAASrhB,EACTshB,gBAAgB,EAChBhV,MAAM,GAAEiV,UAERC,EAAAA,GAAAA,MAAA,OAAKC,UAAU,8BAA8BC,MAAO,CAAEC,UAAW,SAAUJ,SAAA,EACzEjjB,EAAAA,GAAAA,KAAA,MAAAijB,SAAKb,EAAckB,GAASoB,WAC5B1kB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKyL,OAAM,CAAC1J,SAAUsJ,EAAYjL,SAAUkL,EAAS1N,SACnDb,EAAcsO,EAAapN,GAAS+M,UAAY/M,GAASgN,aAE5DtwB,EAAAA,GAAAA,KAAA,KAAAijB,SAAIb,EAAckB,GAAS7D,gBAC3ByD,EAAAA,GAAAA,MAACK,GAAAA,EAAS,CAAAN,SAAA,EACRjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,WAAWC,QAAS+M,EAAWxN,SAC5Cb,EAAckB,GAASY,cAE1BlkB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACE,QAAS6M,EAAKtN,SAAEb,EAAckB,GAASiN,eAGvC,EAGlBC,GAAmB7M,UAAY,CAC7BtgB,OAAQ8iB,KAAAA,OAAiBC,WACzBqK,WAAYtK,KAAAA,KAAeC,WAC3B8B,KAAM/B,KAAAA,KAAeC,YAGvB,Y,2BCtDA,MAqDA,IArDiB9G,EAAAA,GAAAA,IAAe,CAC9ByR,cAAe,CACbnxB,GAAI,8CACJ6f,YAAa,oCACbD,eAAgB,yBAElBwR,cAAe,CACbpxB,GAAI,8CACJ6f,YAAa,2CACbD,eAAgB,cAElByR,gBAAiB,CACfrxB,GAAI,gDACJ6f,YAAa,4CACbD,eAAgB,YAElB0R,cAAe,CACbtxB,GAAI,sDACJ6f,YAAa,oCACbD,eAAgB,4CAElB2R,WAAY,CACVvxB,GAAI,mDACJ6f,YAAa,wCACbD,eAAgB,eAElB4R,aAAc,CACZxxB,GAAI,qDACJ6f,YAAa,0CACbD,eAAgB,iBAElB6R,cAAe,CACbzxB,GAAI,sDACJ6f,YAAa,oCACbD,eAAgB,sBAElB8R,iBAAkB,CAChB1xB,GAAI,0DACJ6f,YAAa,6DACbD,eAAgB,wDAElB+R,WAAY,CACV3xB,GAAI,mDACJ6f,YAAa,iCACbD,eAAgB,oDAElBgS,aAAc,CACZ5xB,GAAI,qDACJ6f,YAAa,0CACbD,eAAgB,yBCzCPiS,GAAchtB,IAGrB,IAHsB,YAC1B4d,EAAW,cACXqP,GACDjtB,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAC1B,OACEgE,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAAA,MAAAijB,SAAKb,EAAckB,GAASyN,kBAC5B7N,EAAAA,GAAAA,MAACK,GAAAA,EAAS,CAAAN,SAAA,EACRjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,WAAWC,QAASrB,EAAYY,SAC7Cb,EAAckB,GAAS0N,kBAE1BhxB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACE,QAASgO,EAAczO,SAC5Bb,EAAckB,GAAS2N,wBAG3B,EAGPQ,GAAY9N,UAAY,CACtBtB,YAAa8D,KAAAA,KAAeC,WAC5BsL,cAAevL,KAAAA,KAAeC,YAGhC,YChCauL,GAAa/vB,EAAW,CACnCod,QAAS,UACT4S,WAAY,aACZC,MAAO,QACPC,OAAQ,SACRC,KAAM,OACNC,OAAQ,SACRC,QAAS,UACTC,QAAS,UACTC,KAAM,OACNC,OAAQ,WAGGC,GAAQ,CACnBV,GAAW3S,QACX2S,GAAWC,WACXD,GAAWE,MACXF,GAAWG,OACXH,GAAWI,KACXJ,GAAWK,OACXL,GAAWM,QACXN,GAAWO,QACXP,GAAWQ,MAwDb,IACE7O,SAtDe1hB,EAAW,CAC1B,CAAC+vB,GAAW3S,SAAU,CACpBpf,GAAI,+CACJ6f,YAAa,iDACbD,eAAgB,uDAElB,CAACmS,GAAWC,YAAa,CACvBhyB,GAAI,kDACJ6f,YAAa,gDACbD,eAAgB,oCAElB,CAACmS,GAAWE,OAAQ,CAClBjyB,GAAI,6CACJ6f,YAAa,yCACbD,eAAgB,qCAElB,CAACmS,GAAWG,QAAS,CACnBlyB,GAAI,8CACJ6f,YAAa,4CACbD,eAAgB,wBAElB,CAACmS,GAAWI,MAAO,CACjBnyB,GAAI,4CACJ6f,YAAa,wCACbD,eAAgB,yBAElB,CAACmS,GAAWK,QAAS,CACnBpyB,GAAI,8CACJ6f,YAAa,4CACbD,eAAgB,wCAElB,CAACmS,GAAWM,SAAU,CACpBryB,GAAI,+CACJ6f,YAAa,2CACbD,eAAgB,+BAElB,CAACmS,GAAWO,SAAU,CACpBtyB,GAAI,+CACJ6f,YAAa,2CACbD,eAAgB,kDAElB,CAACmS,GAAWQ,MAAO,CACjBvyB,GAAI,4CACJ6f,YAAa,oCACbD,eAAgB,oCAElB8S,kBAAmB,CACjB1yB,GAAI,0DACJ6f,YAAa,iDACbD,eAAgB,WAMlB6S,SACAV,e,89BCvEK,MAAMY,GAAa9tB,IAEpB,IAFqB,OACzB0c,GACD1c,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAM1B,OACEgE,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAAA,MAAAijB,SAAKb,EAAckB,GAAS4N,kBAC5BhO,EAAAA,GAAAA,MAACmC,GAAAA,GAAKG,SAAQ,CACZnlB,KAAK,iBACLolB,SAAUtE,EAAOqR,aACjB5gB,MAAOuP,EAAOsR,SAASxP,SAAA,CAEtByP,GAAAA,MAAgBjlB,KAbPue,IACdhsB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKM,MAAK,CAAW/T,MAAOoa,EAAI/I,SAC9Bb,EAAcsQ,GAAUpP,SAAS0I,KADnBA,MAabhsB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKM,MAAK,CAAC/T,MAAO8gB,GAAAA,WAAqBN,OAAOnP,UAC7CjjB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAKsN,QAAO/tB,GAAAA,GAAA,GACPuc,EAAOyR,cAAY,IACvBC,YAAazQ,EAAcsQ,GAAUpP,SAASgP,4BAIpDpP,EAAAA,GAAAA,MAACK,GAAAA,EAAS,CAAAN,SAAA,EACRjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,WAAWC,QAASvC,EAAO2R,WAAW7P,SACnDb,EAAckB,GAAS6N,eAE1BnxB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACuE,UAAW5G,EAAO4R,UAAWrP,QAASvC,EAAOsD,aAAaxB,SAC/Db,EAAckB,GAAS8N,qBAG3B,EAGPmB,GAAW5O,UAAY,CACrBxC,OAAQgF,KAAAA,MAAgB,CACtBvU,MAAOuU,KAAAA,OACP2M,WAAY3M,KAAAA,KACZ4M,UAAW5M,KAAAA,KACXqM,aAAcrM,KAAAA,KACdyM,aAAczM,KAAAA,MAAgB,CAC5BvU,MAAOuU,KAAAA,OACPV,SAAUU,KAAAA,OAEZsM,SAAUtM,KAAAA,OACV1B,aAAc0B,KAAAA,KAAeC,aAC5BA,YAGL,YCrDa4M,GAAevuB,IAGtB,IAHuB,WAC3BwuB,EAAU,YACV5Q,GACD5d,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAC1B,OACEgE,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAAA,MAAAijB,SAAKb,EAAckB,GAAS+N,kBAC5BnO,EAAAA,GAAAA,MAAA,KAAAD,SAAA,CACGgQ,GAAc7Q,EAAckB,GAASgO,kBACrClP,EAAckB,GAASiO,gBAE1BvxB,EAAAA,GAAAA,KAACujB,GAAAA,EAAS,CAAAN,UACRjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACE,QAASrB,EAAYY,SAAEb,EAAckB,GAASkO,oBAEvD,EAGPwB,GAAarP,UAAY,CACvBtB,YAAa8D,KAAAA,KAAeC,WAC5B6M,WAAY9M,KAAAA,KAAeC,YAG7B,YCtBa5hB,GAAQ5C,EAAW,CAC9BgxB,aAAetvB,GAAQsb,EAAAA,SAAetb,GACtC4vB,UAAY5vB,GAAQsb,EAAAA,SAAetb,GACnC6vB,eAAiB7vB,GAAQsb,EAAAA,SAAetb,GACxC8vB,YAAc9vB,GAAQsb,EAAAA,SAAetb,KCR1BkB,GAAQ5C,EAAW,CAC9ByxB,UAAY/vB,GAAQsb,EAAAA,SAAetb,KAGxBgwB,GAAc1xB,EAAW,CACpC2xB,QAAS,UACTpS,OAAQ,SACRqS,SAAU,aCDCC,GAAuBhvB,IAI9B,IAJ+B,WACnCgsB,EAAU,KACVvI,EAAI,OACJ7kB,GACDoB,EACC,MAAM,QACJ8uB,EAAO,OACPpS,EAAM,gBACNuS,EAAe,MACf3M,EAAK,WACL4M,GDN2BlvB,KAA4B,IAA3B,WAAEgsB,EAAU,OAAEptB,GAAQoB,EACpD,MAAOmvB,EAAaC,GAAkBntB,GAAa2sB,WAAU,GAEvDlS,EDF0B1c,KAE5B,IAF6B,OACjCpB,GACDoB,EAEC,MAAO0uB,EAAgBW,GAAqBptB,GAAaysB,eAAe,OAEjEP,EAAcmB,GAAmBrtB,GAAaksB,aAAa,KAG3DM,EAAWc,GAAgBttB,GAAawsB,WAAU,IAElDE,EAAaa,GAAkBvtB,GAAa0sB,aAAY,IAEzD,cAAEvmB,GAAkBuQ,GAAW/G,uBAAuBhT,GAEtD6wB,EAAqC,WAAnBf,EAA8BP,EAAeO,EAC/DJ,GAAa,CAAC,KAAM,IAAInmB,SAASsnB,GAEjCC,EAAqB/W,GAAW9F,oBACpC4K,GAAMhB,WAAWhG,eACjB7X,EACA6wB,EACArnB,GAGItK,EAAqB4c,GAASlB,sBAAsB5a,GAuB1D,MAAO,CACLuvB,aAAc,CAAEhhB,MAAOghB,EAAcnN,SAJNrG,GAAUL,iBAAiBgV,IAK1DK,YAvBkBA,KAClBN,EAAkB,MAClBC,EAAgB,IAChBC,GAAa,GACbC,GAAe,EAAM,EAoBrBnB,WAjBiBA,KACjBkB,GAAa,GACbzxB,GAAoB,EAgBpBkiB,aAboB7jB,IACpBuzB,EAAmBvzB,GACnBqzB,GAAe,GACf1xB,GAAoB,EAWpBwwB,YACAG,YACAE,cACAZ,aAVyBpT,GAAUL,iBAAiB+U,GAWpDI,kBACD,ECxDcG,CAAmB,CAAEhxB,WAC9BlB,EAAcgd,GAAS3B,mBAE7B,IAAImW,EAEFA,EADEC,EACYzS,EAAOiS,aAAejS,EAAO+R,UACvCI,GAAYE,SAAWF,GAAYnS,OAE1BmS,GAAYC,QAG3B,MAAMxM,EAAQA,KACZ0J,IACAoD,GAAe,GACf1S,EAAOiT,aAAa,EAOtB,MAAO,CACLR,cACAL,QAxBcA,IAAMM,GAAe,GAyBnC1S,SACA4F,QACA2M,gBAVsBA,KACtBvxB,IACA4kB,GAAO,EASP4M,aACD,ECxBGW,CAAgB,CAAE7D,aAAYptB,WAC5BkxB,EAAiBZ,IAAeL,GAAYnS,OAClD,OACEnhB,EAAAA,GAAAA,KAAC6iB,GAAAA,EAAW,CACVC,OAAQoF,EACRnF,QAASrhB,EACTshB,gBAAgB,EAChBmC,qBAAsBoP,EACtBvmB,MAAM,GAAEiV,UAERC,EAAAA,GAAAA,MAAA,OACEC,UAAWqR,KAAW,uBAAwB,CAAEC,QAASF,IACzDnR,MAAO,CAAEC,UAAW,SAAUJ,SAAA,CAE5B0Q,IAAeL,GAAYC,UAC3BvzB,EAAAA,GAAAA,KAACyxB,GAAW,CAACpP,YAAa0E,EAAO2K,cAAe6B,IAEhDI,IAAeL,GAAYE,WAC3BxzB,EAAAA,GAAAA,KAACgzB,GAAY,CAAC3Q,YAAaqR,EAAiBT,YAAa9R,EAAO+R,YAEhES,IAAeL,GAAYnS,SAC3BnhB,EAAAA,GAAAA,KAACuyB,GAAU,CAACpR,OAAQA,QAGZ,EAGlBsS,GAAqB9P,UAAY,CAC/B8M,WAAYtK,KAAAA,KAAeC,WAC3B8B,KAAM/B,KAAAA,KAAeC,WACrB/iB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,4BCxDA,MAiCA,IAjCiB9G,EAAAA,GAAAA,IAAe,CAC9B/C,SAAU,CACR3c,GAAI,uCACJ6f,YAAa,8BACbD,eAAgB,YAElBkV,YAAa,CACX90B,GAAI,0CACJ6f,YAAa,8BACbD,eAAgB,2BAElBmV,cAAe,CACb/0B,GAAI,4CACJ6f,YAAa,oCACbD,eAAgB,kBAElBoV,gBAAiB,CACfh1B,GAAI,8CACJ6f,YAAa,iCACbD,eAAgB,qBAElBqV,eAAgB,CACdj1B,GAAI,6CACJ6f,YAAa,gCACbD,eAAgB,oBAElBsV,WAAY,CACVl1B,GAAI,yCACJ6f,YAAa,uBACbD,eAAgB,uEClBPuV,IAAUnzB,EAAAA,GAAAA,IAAW,CAChCozB,yBAA0B,6BAGfC,GAAkBxwB,IAA+B,IAA9B,OAAEpB,EAAM,cAAEsxB,GAAelwB,EACvD,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MAEpB,WAAE1U,GAAe4S,GAAWnH,kBAAkB5S,IAC9C,eAAEmJ,EAAc,iBAAEG,GAAqByQ,GAAWhH,sBAAsB/S,IACxE,QAAEyT,EAAO,SAAED,GAAauG,GAAW3G,0BAA0BpT,IAC7D,eAAE+N,GAAmBgM,GAAW9E,oBAEhC4c,EAAqB9X,GAAW9F,oBAAoB4K,GAAML,YAAaxe,EAAQ,WAC/E8xB,EAAsB/X,GAAW9F,oBAAoB4K,GAAML,YAAaxe,EAAQ,YAEtF,OAAIsJ,EACK,MAIPuW,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,CACGzW,IACCxM,EAAAA,GAAAA,KAACo1B,GAAAA,GAASC,KAAI,CACZtN,SAAU3W,EACVsS,QAASiR,EAAczM,KACvB,cAAa6M,GAAQC,yBAAyB/R,SAE7Cb,EAAckB,GAASqR,iBAG3B9d,EAASF,YACR3W,EAAAA,GAAAA,KAACs1B,GAAAA,EAA8B,CAC7B5sB,IAAKmO,EAASD,SACd8M,QAASyR,EACTnnB,MAAOoU,EAAckB,GAASwR,WAAY,CACxCtqB,aACA+qB,YAAa1e,EAAS0e,cAExBC,kBAAkB,EAClBrS,UAAU,mCAAkCF,SAE3Cb,EAAckB,GAASsR,mBAG3B9d,EAAQH,YACP3W,EAAAA,GAAAA,KAACs1B,GAAAA,EAA6B,CAC5B5sB,IAAKoO,EAAQF,SACb8M,QAASwR,EACTlnB,MAAOoU,EAAckB,GAASwR,WAAY,CACxCtqB,aACA+qB,YAAaze,EAAQye,cAEvBC,kBAAkB,EAClBrS,UAAU,mCAAkCF,SAE3Cb,EAAckB,GAASuR,oBAG3B,EAGPI,GAAgBtR,UAAY,CAC1BtgB,OAAQ8iB,KAAAA,OAAiBC,WACzBuO,cAAexO,KAAAA,MAAgB,CAC7B+B,KAAM/B,KAAAA,OACLC,YAGL,YC5EaqP,IAAY7zB,EAAAA,GAAAA,IAAW,CAClC8zB,yBAA0B,2BAC1BC,uBAAwB,2BCcbZ,IAAUnzB,EAAAA,GAAAA,IAAW,CAChCg0B,oBAAqB,wBAGVC,GAAiBpxB,IAAgB,IAAf,OAAEpB,GAAQoB,EACvC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAEpByV,EDTwBmB,MAC9B,MAAOC,EAAWC,IAAgBC,EAAAA,GAAAA,IAAcR,GAAUE,wBAAwB,GAClF,MAAO,CACLzN,KAAMA,IAAM8N,GAAa,GACzBE,KAAMA,IAAMF,GAAa,GACzBD,YACD,ECGqBD,GAChBK,EDnBuB7B,MAC7B,MAAOyB,EAAWC,IAAgBC,EAAAA,GAAAA,IAAcR,GAAUC,0BAA0B,GACpF,MAAO,CACLxN,KAAMA,IAAM8N,GAAa,GACzBE,KAAMA,IAAMF,GAAa,GACzBD,YACD,ECaqBzB,GAChB8B,EDFgC/yB,KACtC,MAAMgzB,EAAmBjZ,GAAW9F,oBAClC4K,GAAMpb,OAAO2T,6BACbpX,GAEF,OAAQyf,IACFA,GAAUuT,GAAoB,CACnC,ECL4BC,CAAwBjzB,IAC/C,uBAAEkzB,EAAsB,mBAAEC,GDOEnzB,KAClC,MAAM,WAAEuI,EAAU,eAAEY,GAAmB4Q,GAAWhH,sBAAsB/S,IAClE,QAAEyT,EAAO,SAAED,GAAauG,GAAW3G,0BAA0BpT,IAC7D,SAAE+G,GAAagT,GAAWpH,uBAAuB3S,GAEjDkzB,EAAyB3qB,IAAexB,EAQ9C,MAAO,CACLmsB,yBACAC,mBARAD,GACG/pB,GACAqK,EAASF,WACTG,EAAQH,UAMZ,ECvBsD8f,CAAoBpzB,IACrE,eAAE+N,GAAmBgM,GAAW9E,qBAChC,eAAE9L,GAAmB4Q,GAAWhH,sBAAsB/S,GAE5D,OAAKmzB,GAKHtT,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEC,EAAAA,GAAAA,MAACkS,GAAAA,GAAQ,CAACzE,SAAUyF,EAAqBnT,SAAA,EACvCjjB,EAAAA,GAAAA,KAACo1B,GAAAA,GAASsB,OAAM,CACd92B,GAAI,2BAA2ByD,IAC/B6oB,GAAIyK,GAAAA,EACJtO,IAAKuO,GAAAA,EACLC,OAAQzO,GAAAA,EACR3E,QAAQ,UACRuM,IAAK5N,EAAckB,GAASoR,gBAE9BxR,EAAAA,GAAAA,MAACkS,GAAAA,GAAS0B,KAAI,CAAA7T,SAAA,CACXsT,IACCv2B,EAAAA,GAAAA,KAACo1B,GAAAA,GAASC,KAAI,CACZtN,SAAU3W,EACVsS,QAASyS,EAAcjO,KACvB,cAAa6M,GAAQa,oBAAoB3S,SAExCb,EAAckB,GAAS/G,aAG5Bvc,EAAAA,GAAAA,KAACi1B,GAAe,CAAC5xB,OAAQA,EAAQsxB,cAAeA,WAGpD30B,EAAAA,GAAAA,KAACyzB,GAAoB,CACnBvL,KAAMiO,EAAcJ,UACpBtF,WAAY0F,EAAcD,KAC1B7yB,OAAQA,IAETmJ,IACCxM,EAAAA,GAAAA,KAACwwB,GAAkB,CACjBtI,KAAMyM,EAAcoB,UACpBtF,WAAYkE,EAAcuB,KAC1B7yB,OAAQA,OApCP,IAuCJ,EAGPwyB,GAAelS,UAAY,CACzBtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YC9EM2Q,GAAuBtyB,IAAA,IAAC,OAAEpB,GAAQoB,EAAA,OACtCzE,EAAAA,GAAAA,KAACg3B,GAAAA,WAAU,CACTp3B,GAAG,0BACHq3B,YAAa,CACX5zB,WAEF,EAGJ0zB,GAAqBpT,UAAY,CAC/BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,89BCZO,MAUP,GAV6B8Q,IAC3B,MAAMC,ECJsBC,MAC5B,MAAM,MAAE9P,IAAUC,EAAAA,GAAAA,KAClB,OAAOD,EAAQG,GAAAA,EAAY4P,OAAOC,UAAYhQ,EAAQG,GAAAA,EAAYC,MAAM4P,QAAQ,EDEhEF,GAChB,OACEp3B,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM5e,GAAAA,GAAA,GACDsyB,GACAC,GAAW,CAAE/R,KAAM,OACvB,EEmBN,IA5BiB9F,EAAAA,GAAAA,IAAe,CAC9BpF,QAAS,CACPta,GAAI,0CACJ6f,YAAa,kCACbD,eAAgB,WAElB+X,YAAa,CACX33B,GAAI,8CACJ6f,YAAa,uCACbD,eAAgB,gBAElBgY,OAAQ,CACN53B,GAAI,yCACJ6f,YAAa,iCACbD,eAAgB,UAElBiY,WAAY,CACV73B,GAAI,6CACJ6f,YAAa,sCACbD,eAAgB,eAElBgL,cAAe,CACb5qB,GAAI,gDACJ6f,YAAa,yCACbD,eAAgB,oBChBPkY,GAAsBjzB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC5C,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,qBAAEkQ,GAAyBQ,GAAuBvsB,GAClD+qB,EAAmBhR,GAAWjG,oCAAoC9T,GACxE,OACErD,EAAAA,GAAAA,KAAC23B,GAAY,CACX5P,SAAUqH,EACV1L,QAAS0K,EAAiBnL,SAEzBb,EAAckB,GAASkH,gBACX,EAGnBkN,GAAoB/T,UAAY,CAC9BtgB,OAAQ8iB,KAAAA,OAAiBC,YAE3B,YCfawR,GAAoBnzB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC1C,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,QAAEjU,GAAYmS,GAAWlH,qBAAqB7S,GAC9Cw0B,EAAsBza,GAAWnG,2BAA2B5T,IAC5D,mBAAE4rB,GAAuBW,GAAuBvsB,GAEhDy0B,EAAc1a,GAAW9F,oBAC7B4K,GAAMpb,OAAOwT,mBACbjX,EACA4H,EAAU4sB,GAEZ,OACE73B,EAAAA,GAAAA,KAAC23B,GAAY,CACX5P,SAAUkH,EACV/C,GAAG,IACHlP,KAAK,IACL0G,QAASoU,EAAY7U,SAEpBb,EAAckB,GAASiU,cACX,EAGnBK,GAAkBjU,UAAY,CAC5BtgB,OAAQ8iB,KAAAA,OAAiBC,YAE3B,YCzBa2R,GAAetzB,IAAgB,IAAf,OAAEpB,GAAQoB,EACrC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,UAAE7T,GAAc+R,GAAWlH,qBAAqB7S,GAChDw0B,EAAsBza,GAAWnG,2BAA2B5T,IAC5D,oBAAE6rB,GAAwBU,GAAuBvsB,GAEjDy0B,EAAc1a,GAAW9F,oBAC7B4K,GAAMpb,OAAOwT,mBACbjX,EACAgI,EAAYwsB,GAEd,OACE73B,EAAAA,GAAAA,KAAC23B,GAAY,CACX5P,SAAUmH,EACVhD,GAAG,IACHlP,KAAK,IACL0G,QAASoU,EAAY7U,SAEpBb,EAAckB,GAASkU,SACX,EAGnBO,GAAapU,UAAY,CACvBtgB,OAAQ8iB,KAAAA,OAAiBC,YAE3B,YCzBa4R,GAAmBvzB,IAAgB,IAAf,OAAEpB,GAAQoB,EACzC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,MACpB,QAAEjU,GAAYmS,GAAWlH,qBAAqB7S,IAC9C,kBAAE2rB,GAAsBY,GAAuBvsB,GAE/Cy0B,EAAc1a,GAAW9F,oBAC7B4K,GAAMpb,OAAOwT,mBACbjX,EACA4H,GAEF,OACEjL,EAAAA,GAAAA,KAAC23B,GAAY,CACX5P,SAAUiH,EACV9C,GAAG,IACHlP,KAAK,IACL0G,QAASoU,EAAY7U,SAEpBb,EAAckB,GAASmU,aACX,EAGnBO,GAAiBrU,UAAY,CAC3BtgB,OAAQ8iB,KAAAA,OAAiBC,YAE3B,YCtBa6R,GAAoBxzB,IAAgB,IAAf,OAAEpB,GAAQoB,EAC1C,MAAM,cAAEoI,EAAa,YAAEK,GAAgBkQ,GAAW/G,uBAAuBhT,IACnE,WACJ6I,GACEkR,GAAWhH,sBAAsB/S,IAC/B,WAAEuH,GAAewS,GAAWlH,qBAAqB7S,GAEvD,OACE6f,EAAAA,GAAAA,MAACK,GAAAA,EAAS,CAAC,eAAa,oBAAmBN,SAAA,EACzCjjB,EAAAA,GAAAA,KAAC+2B,GAAoB,CAAC1zB,OAAQA,IAC7BwJ,IAAkBK,GACflN,EAAAA,GAAAA,KAACg4B,GAAgB,CAAC30B,OAAQA,KAC1BrD,EAAAA,GAAAA,KAAC03B,GAAmB,CAACr0B,OAAQA,KAE/BuH,IAAeiC,IACf7M,EAAAA,GAAAA,KAACg4B,GAAgB,CAAC30B,OAAQA,MAEzBuH,GAAciC,KAAmBX,GAChClM,EAAAA,GAAAA,KAAC+3B,GAAY,CAAC10B,OAAQA,KACtBrD,EAAAA,GAAAA,KAAC43B,GAAiB,CAACv0B,OAAQA,OAErB,EAGhB40B,GAAkBtU,UAAY,CAC5BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,YCDA,IAtCiB9G,EAAAA,GAAAA,IAAe,CAC9B4Y,cAAe,CACbt4B,GAAI,0DACJ6f,YAAa,2EACbD,eAAgB,yCAElB2Y,cAAe,CACbv4B,GAAI,0DACJ6f,YAAa,wDACbD,eAAgB,yCAElB4Y,YAAa,CACXx4B,GAAI,wDACJ6f,YAAa,uCACbD,eAAgB,0BAElB6Y,WAAY,CACVz4B,GAAI,uDACJ6f,YAAa,wCACbD,eAAgB,yBAElB8Y,aAAc,CACZ14B,GAAI,yDACJ6f,YAAa,4CACbD,eAAgB,6BAElB+Y,oBAAqB,CACnB34B,GAAI,gEACJ6f,YAAa,6CACbD,eAAgB,WAElBgZ,2BAA4B,CAC1B54B,GAAI,uEACJ6f,YAAa,oEACbD,eAAgB,6BC9BPiZ,GAAmBh0B,IAAgB,IAAf,OAAEpB,GAAQoB,EACzC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KACpBha,EAAakY,GAAWhH,sBAAsB/S,GAC9C2D,EAAYoW,GAAWlH,qBAAqB7S,GAC5ClC,EAAaie,GAAUH,gBAC7B,IAAKjY,EAAU6D,UAAW,CACxB,IAAK7D,EAAU2D,UAAa,OAAO,KACnC,MAAMA,EAAYxJ,EAAW6F,EAAU2D,WACvC,OAAOyX,EAAckB,GAASgV,aAAc,CAAE3tB,aAChD,CACA,GAAIzF,EAAW0G,WAAY,CACzB,MAAM,WAAEhB,EAAU,QAAEF,GAAY1D,GAC1B,qBACJmF,EAAoB,qBACpBG,GACEpH,EAEJ,OAAIA,EAAWmH,SAAWF,EACjBiW,EACL9V,EAAuBgX,GAAS4U,cAAgB5U,GAAS6U,cACzD,CAAEhsB,qBAAsBhL,EAAWgL,KAGlCzB,EACE0X,EACLxX,EAAa0Y,GAAS8U,YAAc9U,GAAS+U,WAC7C,CAAE3tB,QAASvJ,EAAWuJ,KAHD,IAKzB,CACA,OAAO,IAAI,EC3BAguB,GAAoBj0B,IAAgB,IAAf,OAAEpB,GAAQoB,EAC1C,MAAM,aACJgH,EAAY,cACZktB,EAAa,cACb9rB,EAAa,YACbK,EAAW,UACXI,EAAS,iBACT8gB,EAAgB,aAChB7jB,EAAY,4BACZquB,GDqB8BvzB,KAAgB,IAAf,OAAEhC,GAAQgC,EAC3C,MAAM,cAAE+c,IAAkBlD,EAAAA,GAAAA,KACpBzT,EAAe2R,GAAW7G,oBAAoBlT,GAAQhD,MACtD,aAAEkK,GAAiB6S,GAAWnH,kBAAkB5S,IAChD,cACJwJ,EAAa,YACbK,EAAW,UACXI,GACE8P,GAAW/G,uBAAuBhT,GAEhC+qB,EAAmBhR,GAAWjG,oCAAoC9T,GAExE,MAAO,CACLoI,aAAcA,GAAgB2W,EAAckB,GAASiV,qBACrDI,cAAejL,GAAuB,CAAErqB,WACxCwJ,gBACAK,cACAI,YACA8gB,mBACA7jB,eACAquB,4BAA6BxW,EAAckB,GAASkV,4BACrD,ECzCGK,CAAmB,CAAEx1B,WAEzB,OACE6f,EAAAA,GAAAA,MAAA,QAAMC,UAAU,QAAQ,cAAY,oBAAmBF,SAAA,CACpDxX,EAAa,MAAIlB,IACfsC,IAAkBK,IAAgByrB,GACnC,MAAMA,IAEP9rB,GAAiBK,GAAeI,GAC/B4V,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,CACG,OACDjjB,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACC,QAAQ,OAAO2B,KAAK,SAASjC,UAAU,UAAUO,QAAS0K,EAAiBnL,SAChF2V,OAGH,OACC,EAIXF,GAAkB/U,UAAY,CAC5BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3BsS,GAAkBxP,aAAe,CAAC,EAElC,aCrCQ1O,mBAAkBA,IAAK0H,GAAMpb,OAExBgyB,GAAkBr0B,IAAgB,IAAf,OAAEpB,GAAQoB,EACxC,MAAM,WAAE+F,GAAe4S,GAAWnH,kBAAkB5S,IAC9C,QAAE4H,GAAYmS,GAAWlH,qBAAqB7S,GAC9C01B,EAAqB3b,GAAW9F,oBACpCkD,GACAnX,EACA4H,IAEI,mBAAEokB,GAAuBO,GAAuBvsB,GACtD,OACErD,EAAAA,GAAAA,KAAA,MAAAijB,SACGoM,GACCrvB,EAAAA,GAAAA,KAAA,QAAMmjB,UAAU,oBAAoB,cAAY,kBAAiBF,SAAEzY,KAEnExK,EAAAA,GAAAA,KAAA,KACEgd,KAAM/R,EACNkY,UAAU,oBACV,cAAY,kBACZO,QAASqV,EAAmB9V,SAE3BzY,KAGF,EAITsuB,GAAgBnV,UAAY,CAC1BtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B0S,GAAgB5P,aAAe,CAAC,EAEhC,Y,89BC3BO,MAAM8P,GAAav0B,IAEpB,IAFqB,OACzBpB,GACDoB,EACC,MAAMw0B,ECdsB7B,MAC5B,MAAM,MAAE9P,IAAUC,EAAAA,GAAAA,KAClB,OAAOD,EAAQG,GAAAA,EAAYC,MAAM4P,QAAQ,EDYrBF,GACdzH,EAAcsJ,EAAc,WAAa,aAC/C,OACEj5B,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,qBAAqBvjB,GAAIyD,EAAQ,cAAY,aAAY4f,UACtEjjB,EAAAA,GAAAA,KAACk5B,GAAAA,GAAI,CAACvJ,YAAaA,EAAY1M,UAC7BC,EAAAA,GAAAA,MAAA,OAAKC,UAAU,2BAA0BF,SAAA,EACvCC,EAAAA,GAAAA,MAAA,MAAAte,GAAAA,GAAA,IAAWq0B,GAAe,CAAE9V,UAAW,WAAU,IAAAF,SAAA,EAC/CjjB,EAAAA,GAAAA,KAAC0vB,GAAe,CAACrsB,OAAQA,EAAQssB,YAAY,gBAC7CzM,EAAAA,GAAAA,MAACgW,GAAAA,GAAKC,KAAI,CAAAlW,SAAA,EACRjjB,EAAAA,GAAAA,KAACk5B,GAAAA,GAAKE,OAAM,CACVprB,OAAOhO,EAAAA,GAAAA,KAAC84B,GAAe,CAACz1B,OAAQA,IAChC+C,SAASpG,EAAAA,GAAAA,KAAC61B,GAAc,CAACxyB,OAAQA,OAEnCrD,EAAAA,GAAAA,KAACk5B,GAAAA,GAAKG,QAAO,CAAClW,UAAU,OAAMF,UAC5BjjB,EAAAA,GAAAA,KAAC04B,GAAiB,CAACr1B,OAAQA,OAE7BrD,EAAAA,GAAAA,KAACk5B,GAAAA,GAAKI,OAAM,CAAC3J,YAAaA,EAAY1M,UACpCjjB,EAAAA,GAAAA,KAACi4B,GAAiB,CAAC50B,OAAQA,cAIjCrD,EAAAA,GAAAA,KAAC+uB,GAAiB,CAAC1rB,OAAQA,UAG3B,EAGV21B,GAAWrV,UAAY,CACrBtgB,OAAQ8iB,KAAAA,OAAiBC,YAG3B,Y,89BEtCO,MAAMmT,GAAa90B,IAAwB,IAAvB,eAAE+0B,GAAgB/0B,EAC3C,MAAM,cACJg1B,EAAa,cAAEh0B,EAAa,SAAEwK,EAAQ,YAAEypB,EAAW,YAAExqB,GACnDsqB,EACEP,ECbsB7B,MAC5B,MAAM,MAAE9P,IAAUC,EAAAA,GAAAA,KAClB,OAAOD,EAAQG,GAAAA,EAAY4P,OAAOC,QAAQ,EDWtBF,GACpB,OACElU,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,CACGyW,IACC15B,EAAAA,GAAAA,KAAA,OAAKJ,GAAG,uCAAsCqjB,UAC5CjjB,EAAAA,GAAAA,KAAC0oB,GAAmB9jB,GAAA,GAAK60B,OAG7BvW,EAAAA,GAAAA,MAAA,OAAKC,UAAU,iCAAgCF,SAAA,CAC5C/T,EAAYzB,KAAIpI,IAAA,IAAC,OAAEhC,GAAQgC,EAAA,OAC1BrF,EAAAA,GAAAA,KAACg5B,GAAU,CAAc31B,OAAQA,GAAhBA,EAA0B,IAE5C4M,EAAW,IACVjQ,EAAAA,GAAAA,KAAC25B,GAAAA,GAAU,CACTlW,QAASwV,EAAc,UAAY,YACnCW,gBAAgB,cAChBzW,UAAU,eACV0W,UAAW5pB,EACX6pB,aAAcr0B,SAInB,EAIMs0B,GAAsB5T,KAAAA,MAAgB,CACjDuT,YAAavT,KAAAA,KAAeC,WAC5BlX,YAAaiX,KAAAA,QAAkBA,KAAAA,SAAmBC,WAClDqT,cAAetT,KAAAA,QAAkBC,WACjCnW,SAAUkW,KAAAA,OAAiBC,WAC3B3gB,cAAe0gB,KAAAA,KAAeC,aAGhCmT,GAAW5V,UAAY,CACrB6V,eAAgBO,IAGlB,MEhDaC,GAAiBv1B,IAAA,IAAC,eAAE+0B,GAAgB/0B,EAAA,OAC/CzE,EAAAA,GAAAA,KAACg3B,GAAAA,WAAU,CAACp3B,GAAG,mBAAmBq3B,YAAa,CAAEuC,kBAAiBvW,UAChEjjB,EAAAA,GAAAA,KAACu5B,GAAU,CAACC,eAAgBA,KACjB,EAGfQ,GAAerW,UAAY,CACzB6V,eAAgBO,IAGlB,Y,4BCZA,MAoGA,GAAe,IAA0B,uCC9EzC,IAvBiBza,EAAAA,GAAAA,IAAe,CAC9B2a,0BAA2B,CACzBr6B,GAAI,oDACJ4f,eAAgB,+BAChBC,YAAa,iCAEfya,qBAAsB,CACpBt6B,GAAI,+CACJ4f,eAAgB,qDAChBC,YAAa,uCAEf0a,qBAAsB,CACpBv6B,GAAI,+CACJ4f,eAAgB,kBAChBC,YAAa,kCAEf6P,UAAW,CACT1vB,GAAI,oCACJ4f,eAAgB,yBAChBC,YAAa,6BCkBjB,GA3B6B2a,KAC3B,MAAM,cAAEhY,IAAkBlD,EAAAA,GAAAA,MACpB,gBAAEmb,GAAoBjd,GAAW7H,0BACvC,OACE2N,EAAAA,GAAAA,MAAA,OACEtjB,GAAG,0BACHujB,UAAU,0DAAyDF,SAAA,EAEnEjjB,EAAAA,GAAAA,KAACs6B,GAAAA,EAAK,CAACjS,IAAKkS,GAAgBvK,IAAK5N,EAAckB,GAASgM,cACxDtvB,EAAAA,GAAAA,KAAA,MAAAijB,SACGb,EAAckB,GAAS2W,8BAE1Bj6B,EAAAA,GAAAA,KAAA,KAAAijB,SACGb,EAAckB,GAAS4W,yBAE1Bl6B,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CACLC,QAAQ,QACRyI,GAAG,IACHlP,KAAMpU,EAAWyxB,GACjBxS,WAAY2S,GAAAA,EAAOvX,SAElBb,EAAckB,GAAS6W,0BAEtB,ECxBV,GANiCM,KAC/Bz6B,EAAAA,GAAAA,KAACg3B,GAAAA,WAAU,CAACp3B,GAAG,uBAAsBqjB,UACnCjjB,EAAAA,GAAAA,KAACo6B,GAAa,MCGL51B,GAAQ5C,EAAW,CAC9BuN,OAAS7L,GAAQsb,EAAAA,SAAetb,KCDlC,IARiBgc,EAAAA,GAAAA,IAAe,CAC9Bob,UAAW,CACT96B,GAAI,sBACJ4f,eAAgB,aAChBC,YAAa,yB,89BCgBV,MAAMkb,GAAeA,KAC1B,MAAM,cAAEvY,IAAkBlD,EAAAA,GAAAA,KACpBpX,EAAasV,GAAW1H,gBACxB8jB,EFJyBoB,MAC/B,MAAMv2B,EAAU+Y,GAAWhI,aACrBrP,EAAeqX,GAAWpF,kBAC1BnU,EAAauZ,GAAWlI,gBACxBzP,EAAgB2X,GAAWvF,oBAE1B1I,EAAQ0X,GAAangB,GAAayI,OAAOlB,GAASK,UAEnDusB,EAAcnhB,GAAAA,MAAkBxL,OAAOC,SAAS2sB,OAAQ,CAAEC,cAAc,KAExE,SAAE9qB,EAAQ,YAAEf,GAAgBkO,GAAWxH,qBAAqB,CAChEzG,SACA9K,UACA+K,SAA8C,IAApCyrB,GAAaG,mBAA2B,E/Gf1B,K+GoB1B,MAAO,CACLn3B,aACAoM,WACAxK,gBACAyJ,cACAuqB,cAAe,CACbtqB,SACA0X,YACAxiB,UACAskB,mBAXwB1iB,GAAW,IAAMF,EAAaE,IAaxDyzB,YAAar1B,EAAQwD,OAAS,EAC/B,EE1BsB+yB,GACvB,OACE1X,EAAAA,GAAAA,MAAA,OAAKC,UAAU,wBAAuBF,SAAA,EACpCC,EAAAA,GAAAA,MAAA,OAAKC,UAAU,gCAA+BF,SAAA,EAC5CjjB,EAAAA,GAAAA,KAAA,MAAImjB,UAAU,oBAAmBF,SAAEb,EAAckB,GAASoX,cAC1D16B,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,mCAAkCF,UAC/CjjB,EAAAA,GAAAA,KAAC4mB,GAAoBhiB,GAAA,GAAK40B,EAAeC,qBAG5C3xB,GAAa9H,EAAAA,GAAAA,KAACg6B,GAAc,CAACR,eAAgBA,KAAqBx5B,EAAAA,GAAAA,KAACy6B,GAAiB,MACjF,EAIVE,GAAahX,UAAY,CAAC,EAE1B,Y,gBCvCA,MAkBA,IAlBiBrE,EAAAA,GAAAA,IAAe,CAC9B2b,UAAW,CACTr7B,GAAI,yBACJ6f,YAAa,kCACbD,eAAgB,cAElB0b,aAAc,CACZt7B,GAAI,kCACJ4f,eAAgB,8EAChBC,YAAa,sBAEf0b,UAAW,CACTv7B,GAAI,qBACJ6f,YAAa,2BACbD,eAAgB,kBCPPhb,GAAQ5C,EAAW,CAC9Bw5B,eAAiB93B,GAAQsb,EAAAA,SAAetb,KA2B1C,GAnBoC+3B,KAClC,MAAM,cAAEjZ,IAAkBlD,EAAAA,GAAAA,KAC1B,MAAO,CACLoc,wBAAyBlZ,EAAcmZ,GAAYN,WACnDE,UAAW/Y,EAAcmZ,GAAYJ,WACtC,ECJH,GAd2BK,KACzB,MAAM,wBAAEF,GAA4B5N,KAEpC,OACE1tB,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,sBAAqBF,UAClCjjB,EAAAA,GAAAA,KAACy7B,GAAAA,EAAO,CACNC,UAAU,SACVvY,UAAU,QACVwY,iBAAkBL,KAEhB,E,oDCZV,MA8FA,GAAe,IAA0B,uCC9F5B1f,GAAYha,EAAW,CAClCg6B,kBAAmB,gCCWrB,IAbiBtc,EAAAA,GAAAA,IAAe,CAC9B2a,0BAA2B,CACzBr6B,GAAI,0CACJ4f,eAAgB,+BAChBC,YAAa,iCAEfoc,kBAAmB,CACjBj8B,GAAI,kCACJ4f,eAAgB,wBAChBC,YAAa,oCCGJqc,IAAa97B,EAAAA,GAAAA,KAACooB,GAAAA,EAAI,CAACjF,UAAU,OAAOkF,IAAK0T,GAAAA,IAEzCC,GAA4BA,KACvC,MAAM,cAAE5Z,IAAkBlD,EAAAA,GAAAA,MACpB,gBAAEmb,GAAoBjd,GAAW7H,0BACjC0mB,EAAuBrzB,EAAWyxB,IAAoB,GAE5D,OACEnX,EAAAA,GAAAA,MAACgW,GAAAA,GAAI,CAACvJ,YAAY,aAAa/vB,GAAG,+BAA8BqjB,SAAA,EAC9DjjB,EAAAA,GAAAA,KAACk5B,GAAAA,GAAKgD,SAAQ,CACZ7T,IAAK8T,GACLC,OAAO,wBAETlZ,EAAAA,GAAAA,MAACgW,GAAAA,GAAKC,KAAI,CAAChW,UAAU,cAAaF,SAAA,EAChCjjB,EAAAA,GAAAA,KAAA,MAAAijB,SACGb,EAAckB,GAAS2W,8BAE1Bj6B,EAAAA,GAAAA,KAAA,MAAAijB,UACEjjB,EAAAA,GAAAA,KAAC6qB,GAAAA,GAAS,CACRpH,QAAQ,QACRsH,YAAakR,EACbvY,SF5B6B1G,EE4BKif,EF5BI/Z,GAAMF,YAAYxG,mBAAmBwB,EAAM,CAC3FsD,SAAU1E,GAAUggB,qBE4BVzY,UAAU,4BAA2BF,SAEpCb,EAAckB,GAASuY,kBAAmB,CAAEQ,MAAOP,eF/BvB9e,KEmC9B,EAIXgf,GAA0BrY,UAAY,CAAC,EAEvC,YCpCA,GANiC2Y,KAC/Bt8B,EAAAA,GAAAA,KAACg3B,GAAAA,WAAU,CAACp3B,GAAG,sBAAqBqjB,UAClCjjB,EAAAA,GAAAA,KAACg8B,GAAyB,M,89BCCvB,MAAMO,GAAe,CAC1BC,WAAY,CACVC,YAAa,CACXC,GAAI,CAAEC,KAAM,GAAIC,OAAQ,GACxBC,GAAI,CAAEF,KAAM,EAAGC,OAAQ,IAEzBE,UAAW,CACTJ,GAAI,CAAEC,KAAM,GAAIC,OAAQ,GACxBC,GAAI,CAAEF,KAAM,GAAIC,OAAQ,KAG5BG,QAAS,CACPL,GAAI,CAAEC,KAAM,GAAIC,OAAQ,GACxBC,GAAI,CAAEF,KAAM,EAAGC,OAAQ,KAIdI,GAAkBv4B,IAAkB,IAAjB,SAAEwe,GAAUxe,EAC1C,MAAM,YACJw0B,EAAW,eACXmC,GPHkC6B,MACpC,MAAM,MAAE3V,IAAUC,EAAAA,GAAAA,MAEX6T,EAAgB8B,GAAqBx2B,GAAa00B,gBAAe,GACxE,MAAO,CACL+B,qBAAsB7V,EAAQG,GAAAA,EAAY2V,MAAM9F,SAChD8D,iBACA8B,oBACD,EOJGxP,GAEE2P,EAAwBjC,EAC1BmB,GAAaC,WAAWC,YACxBF,GAAaC,WAAWM,UAE5B,OACE98B,EAAAA,GAAAA,KAACs9B,GAAAA,EAAS,CAACC,OAAK,EAACnY,KAAK,KAAInC,UACxBC,EAAAA,GAAAA,MAACsa,GAAAA,EAAG,CAAAva,SAAA,EACFjjB,EAAAA,GAAAA,KAACy9B,GAAAA,EAAG74B,GAAAA,GAAA,GAAKy4B,GAAqB,IAAEla,UAAU,qBAAoBF,SAC3DA,MAEHC,EAAAA,GAAAA,MAACua,GAAAA,EAAG74B,GAAAA,GAAA,GAAK23B,GAAaQ,SAAO,IAAE5Z,UAAU,iBAAgBF,SAAA,EACrDgW,IAAgBj5B,EAAAA,GAAAA,KAAA,MAAImjB,UAAU,oBAAmBF,SAAC,OACpDjjB,EAAAA,GAAAA,KAACs8B,GAAiB,YAGZ,EAGhBU,GAAgBrZ,UAAY,CAC1BV,SAAUkD,KAAAA,KAAeC,YAG3B,YCXA,GA9ByBsX,KRAaC,MACpC,MAAMz7B,EAAaid,GAAS3B,mBAC5BoB,EAAAA,WAAgB,KAAQ1c,GAAY,GAAK,GAAG,EQD5CwrB,GACA,MAAM,UAAEyN,GAAczN,KAChB5lB,EAAasV,GAAW1H,gBACxB1N,EAAyBoV,GAAWzH,4BACpCioB,EAAgBxgB,GAAW5E,oBAAoBvW,EAAYC,YAC3DiG,EAAyBiV,GAAWtH,4BAE1C,OACEoN,EAAAA,GAAAA,MAAA,OAAKtjB,GAAG,sBAAsBujB,UAAU,8BAA6BF,SAAA,EACnEjjB,EAAAA,GAAAA,KAAA,MAAImjB,UAAU,UAASF,SAAEkY,KACvByC,IACA1a,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,CACGjb,IAA0BhI,EAAAA,GAAAA,KAACmiB,GAAwB,IAClDra,GAAcK,IAA2BnI,EAAAA,GAAAA,KAACqkB,GAAkB,QAGlErkB,EAAAA,GAAAA,KAAA,OAAKJ,GAAG,oBAAoB,cAAY,oBAAmBqjB,SACxD2a,GACI59B,EAAAA,GAAAA,KAACw7B,GAAW,KAEbx7B,EAAAA,GAAAA,KAACg9B,GAAe,CAAA/Z,UACdjjB,EAAAA,GAAAA,KAAC26B,GAAY,UAIjB,EC/BV,IAAiBkD,gBANcj8B,EAAW,CACxCE,QAAS,UACTyqB,SAAU,WACVO,SAAU,c,02CCFL,MAAMgR,GAAYl8B,EAAW,CAClCm8B,IAAK,CAAE19B,KAAM,uBACb29B,IAAK,CAAE39B,KAAM,SAGF+G,GAAkB,CAC7B,CACE2G,SAAU,WACVzD,aAAc,oHACdqD,WAAY,0HACZK,MAAO,iCACPF,WAAY,qBACZD,YAAa,yBACbD,gBAAiB,GAEnB,CACEG,SAAU,0BACVzD,aAAc,8HACdqD,WAAY,0HACZK,MAAO,qCACPF,WAAY,uBACZD,YAAa,yBACbowB,eAAgB,0BAChBrwB,gBAAiB,GAEnB,CACEG,SAAU,WACVzD,aAAc,oHACdqD,WAAY,0HACZK,MAAO,iCACPF,WAAY,uBACZD,YAAa,yBACbD,gBAAiB,GAEnB,CACEG,SAAU,0BACVzD,aAAc,8HACdqD,WAAY,0HACZK,MAAO,qCACPF,WAAY,uBACZD,YAAa,yBACbowB,eAAgB,0BAChBrwB,gBAAiB,IAKRswB,GAAel5B,GAAU,gBAAgBA,cAAkBA,IAC3Dm5B,GAAmBn5B,GAAU,gBAAgBA,IAC7Co5B,GAAqBp5B,GAAU,iCAAiCA,IAChEq5B,GAAsBr5B,GAAU,2BAA2BA,IAElEsF,GAAe,2EAGRg0B,GAAW,uBACXC,GAAa,uBAEbC,GAAW,IAAIh7B,KAC5Bg7B,GAAS50B,QAAQ40B,GAAS30B,UAAY,IAC/B,MAAM40B,GAAcD,GAASE,eAiDvBC,GAAmB,eAAC12B,EAAIwP,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAA7S,GAAA,CACxCiG,WAAW,EACXD,YAAY,EACZD,UAAW1C,EAAK4C,UA1DS,uBA0DiB0zB,GAC1C7zB,QAxD2B,uBAyD3BI,gBAAiB,OACjBG,QAAS,qCACTC,aAAc,0CACdE,YAAa,yCACbE,YAAa,yCACbD,UAAW,wCACRpD,EAAI,EAGI22B,GAAa,CACxBpzB,kBAAmB,2BACnBC,aAAc,uBACdvC,WAAY,qBACZvI,OAAO,EACP+K,WAAW,EACXC,cAAe,MAGJkzB,GAAoB,eAAC52B,EAAIwP,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAA7S,GAAA,CACzCoH,iBAAkB,CAChBD,YAAY,EACZ6e,uBAAuB,EACvB/e,SAAS,GAEXM,sBAA4C,IAApBlE,EAAK2D,WAAwB,KAAO2yB,GAC5DnyB,YAAanE,EAAKsE,YAAa,KAC/BL,YAAY,EACZG,SAAUpE,EAAKsE,aAAmC,IAApBtE,EAAK2D,WACnCU,uBAAsBrE,EAAKsE,YAAa,KACxCC,gBAAgB,EAChBC,oBAAoB,EACpBb,YAAY,EACZW,YAAY,GACTtE,EAAI,EAGI62B,GAAqB,WAAU,OAAAl6B,GAAA,CAC1CoF,cAAe,KACfK,cAAc,EACdD,UAAU,EACVF,gBAAgB,EAChBD,eAAgB,8CALqBwN,UAAA5P,OAAA,QAAAsV,IAAA1F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAMlC,EAGItK,GAAoB,CAC/B,CACExC,UAAW,uBACXD,QAAS,uBACT5B,SAAUo1B,GAAY,MAExB,CACEvzB,UAAW,uBACXD,QAAS,uBACT5B,SAAUo1B,GAAY,OAExB,CACEvzB,UAAW,uBACXD,QAAS,uBACT5B,SAAUo1B,GAAY,OAExB,CACEvzB,UAAW,uBACXD,QAAS,uBACT5B,SAAUo1B,GAAY,OAExB,CACEvzB,UAAW,uBACXD,QAAS,uBACT5B,SAAUo1B,GAAY,QAqeba,GAAa,CA/dxB,CACEv0B,WAAY,wCAGd,CACEA,WAAY,0DACZtF,WAAY,CACV8G,iBAAkB,CAChBD,YAAY,EACZ6e,uBAAuB,EACvB/e,SAAS,KAKf,CACErB,WAAY,8EACZtF,WAAY,CACV8G,iBAAkB,CAChBD,YAAY,EACZ6e,uBAAuB,EACvB/e,SAAS,KAKf,CACErB,WAAY,uCACZxD,UAAW,CAAE6D,WAAW,IAG1B,CACEL,WAAY,0DACZtF,WAAY,CACV8G,iBAAkB,CAChBD,YAAY,EACZ6e,uBAAuB,EACvB/e,SAAS,IAGb7E,UAAW,CAAE6D,WAAW,IAG1B,CACEL,WAAY,6EACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CACViH,qBAAsBmyB,GACtBhyB,sBAAsB,IAI1B,CACE9B,WAAY,kGACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CACViH,qBAAsBmyB,GACtBlyB,YAAY,EACZE,sBAAsB,IAI1B,CACE9B,WAAY,4FACZxD,UAAW,CACT0D,QAAS4zB,GACTzzB,WAAW,GAEb3F,WAAY,CACViH,qBAAsBmyB,GACtBhyB,sBAAsB,IAI1B,CACE9B,WAAY,+FACZxD,UAAW,CACT0D,QAAS4zB,GACT1zB,YAAY,EACZC,WAAW,GAEb3F,WAAY,CACViH,qBAAsBmyB,GACtBhyB,sBAAsB,IAI1B,CACE9B,WAAY,wDACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CAAEgH,YAAY,IAG5B,CACE1B,WAAY,qEACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CACViH,qBAAsBmyB,GACtBhyB,sBAAsB,EACtBJ,YAAY,IAIhB,CACE1B,WAAY,qFACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CACViH,qBAAsBmyB,GACtBlyB,YAAY,EACZE,sBAAsB,EACtBJ,YAAY,IAIhB,CACE1B,WAAY,+FACZxD,UAAW,CACT6D,WAAW,EACXH,QAAS4zB,IAEXp5B,WAAY,CACViH,qBAAsBmyB,GACtBlyB,YAAY,EACZE,sBAAsB,EACtBJ,YAAY,GAEd8yB,MAAO,CAAEzxB,WAAW,IAGtB,CACE/C,WAAY,kGACZxD,UAAW,CACT6D,WAAW,EACXD,YAAY,EACZF,QAAS4zB,IAEXp5B,WAAY,CACViH,qBAAsBmyB,GACtBlyB,YAAY,EACZE,sBAAsB,EACtBJ,YAAY,GAEd8yB,MAAO,CAAEzxB,WAAW,IAKtB,CACE/C,WAAY,kDACZtF,WAAY,CAAEqH,YAAY,IAG5B,CACE/B,WAAY,uDACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CAAEqH,YAAY,IAG5B,CACE/B,WAAY,uDACZxD,UAAW,CAAE6D,WAAW,GACxB3F,WAAY,CAAEgH,YAAY,EAAMK,YAAY,IAG9C,CACE/B,WAAY,2DACZxD,UAAW,CAAE6D,WAAW,GACxB3D,UAAW,CAAEqG,WAAW,GACxBrI,WAAY,CAAEgH,YAAY,EAAMK,YAAY,IAG9C,CACE/B,WAAY,qDACZtF,WAAY,CACVgH,YAAY,EACZK,YAAY,GAEdvF,UAAW,CAAE6D,WAAW,EAAMD,YAAY,GAC1C1D,UAAW,CAAEqG,WAAW,GACxB1G,YAAa,CACXuD,UAAU,IAId,CACEI,WAAY,mEACZtF,WAAY,CACVgH,YAAY,EACZK,YAAY,GAEdvF,UAAW,CAAE6D,WAAW,EAAMD,YAAY,GAC1C/D,YAAa,CACXuD,UAAU,EACVJ,cAAeu0B,KAInB,CACE/zB,WAAY,qEACZtF,WAAY,CACVgH,YAAY,EACZK,YAAY,GAEdvF,UAAW,CAAE6D,WAAW,EAAMD,YAAY,GAC1C/D,YAAa,CAAEwD,cAAc,IAG/B,CACEG,WAAY,oFACZtF,WAAY,CACVgH,YAAY,EACZK,YAAY,GAEdvF,UAAW,CAAE6D,WAAW,EAAMD,YAAY,GAC1C/D,YAAa,CACXuD,UAAU,EACVF,gBAAgB,EAChBF,cAAes0B,GACfr0B,eAAgBK,KAIpB,CACEE,WAAY,qFACZtF,WAAY,CACVgH,YAAY,EACZK,YAAY,GAEdvF,UAAW,CACT6D,WAAW,EACXD,YAAY,EACZF,QAAS4zB,IAEXz3B,YAAa,CACXuD,UAAU,EACVF,gBAAgB,EAChBF,cAAes0B,KAInB,CACE9zB,WAAY,kGACZtF,WAAY,CACVgH,YAAY,EACZK,YAAY,GAEdvF,UAAW,CACT6D,WAAW,EACXD,YAAY,EACZF,QAAS4zB,IAEXz3B,YAAa,CACXuD,UAAU,EACVF,gBAAgB,EAChBF,cAAes0B,GACfr0B,eAAgBK,KAMpB,CACEE,WAAY,kCACZtF,WAAY,CACVqH,YAAY,EACZP,iBAAkB,CAChBD,YAAY,EACZ6e,uBAAuB,EACvB/e,SAAS,IAGb7E,UAAW,CAAE6D,WAAW,GACxB9G,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,qBACAJ,eAAgBwxB,GAChBU,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,IAIlB,CACEvT,WAAY,iFACZtF,WAAY,CACVqH,YAAY,EACZP,iBAAkB,CAClB,GAEFhF,UAAW,CAAE6D,WAAW,GACxB9G,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,qBACAJ,eAAgBwxB,GAChBU,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,IAIlB,CACEvT,WAAY,uEACZtF,WAAY,CACVqH,YAAY,EACZL,YAAY,GAEdlF,UAAW,CAAE6D,WAAW,GACxB9G,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,qBACAJ,eAAgBwxB,GAChBU,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,GAEhB7W,UAAW,CAAEqG,WAAW,IAG1B,CACE/C,WAAY,sFACZtF,WAAY,CACVqH,YAAY,EACZL,YAAY,GAEdlF,UAAW,CAAE6D,WAAW,GACxB9G,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,qBACAJ,eAAgBuxB,GAChBW,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,IAIlB,CACEvT,WAAY,wDACZtF,WAAY,CACVqH,YAAY,GAEdvF,UAAW,CAAE6D,WAAW,EAAMD,YAAY,GAC1C7G,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,kBAAmB,KACnBJ,eAAgBuxB,GAChBW,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,GAEhB7W,UAAW,CAAEqG,WAAW,IAG1B,CACE/C,WAAY,mFACZtF,WAAY,CACVqH,YAAY,GAEdvF,UAAW,CAAE6D,WAAW,EAAMD,YAAY,GAC1C7G,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,kBAAmB,KACnBJ,eAAgBuxB,GAChBW,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,GAEhBlX,YAAa,CACXuD,UAAU,EACVF,gBAAgB,EAChBF,cAAes0B,GACfr0B,eAAgBK,KAIpB,CACEE,WAAY,+EACZtF,WAAY,CACVqH,YAAY,GAEdvF,UAAW,CACT6D,WAAW,EACXD,YAAY,EACZF,QAAS4zB,IAEXv6B,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,kBAAmB,KACnB8xB,cAAe,0BACf/xB,aAAa,EACb6Q,cAAc,EACdhR,eAAgBuxB,GAChBlxB,WAAW,GAEblG,UAAW,CAAEqG,WAAW,IAG1B,CACE/C,WAAY,oFACZtF,WAAY,CACVqH,YAAY,GAEdvF,UAAW,CACT4D,YAAY,EACZC,WAAW,EACXH,QAAS4zB,IAEXv6B,YAAa,CACXqF,KAAMi1B,GAAmB,GACzBlxB,kBAAmB,KACnBJ,eAAgBuxB,GAChBW,cAAe,0BACf7xB,WAAW,EACX2Q,cAAc,EACd7Q,aAAa,GAEfrG,YAAa,CACXuD,UAAU,EACVF,gBAAgB,EAChBF,cAAes0B,GACfr0B,eAAgBK,KAKpB,CACEE,WAAY,qDACZvD,OAAMrC,GAAAA,GAAA,GACDg6B,IAAU,IACbnzB,aAAc,KACdvC,WAAY,OAEdhE,WAAY,CAAE0G,YAAY,IAE5B,CACEpB,WAAY,mDACZvD,OAAQ23B,GACR15B,WAAY,CAAE0G,YAAY,IAE5B,CACEpB,WAAY,sCACZvD,OAAMrC,GAAAA,GAAA,GAAOg6B,IAAU,IAAElzB,WAAW,IACpCxG,WAAY,CAAE0G,YAAY,IAE5B,CACEpB,WAAY,kCACZvD,OAAMrC,GAAAA,GAAA,GACDg6B,IAAU,IACblzB,WAAW,EACXC,cAAeuzB,GAAAA,gBAA2Bp9B,UAE5CoD,WAAY,CAAE0G,YAAY,IAE5B,CACEpB,WAAY,mCACZvD,OAAMrC,GAAAA,GAAA,GACDg6B,IAAU,IACblzB,WAAW,EACXC,cAAeuzB,GAAAA,gBAA2B3S,WAE5CrnB,WAAY,CAAE0G,YAAY,IAE5B,CACEpB,WAAY,iDACZvD,OAAMrC,GAAAA,GAAA,GACDg6B,IAAU,IACblzB,WAAW,EACXC,cAAeuzB,GAAAA,gBAA2BpS,SAC1CnsB,OAAO,IAETuE,WAAY,CAAE0G,YAAY,KAejBuzB,GAAqB,CAChC,CACE30B,WAAY,yCACZzG,YAAa,CACXqF,KAAMi1B,GAAmB,IACzBlxB,qBACAJ,eAAgBwxB,GAChBU,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,IAEf,CACDvT,WAAY,gEACZzG,YAAa,CACXqF,KAAMi1B,GAAmB,IACzBlxB,qBACAJ,eAAgB0xB,GAChBQ,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,IAEf,CACDvT,WAAY,+EACZzG,YAAa,CACXqF,KAAMi1B,GAAmB,IACzBlxB,qBACAJ,eAAgBuxB,GAChBW,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,IAEf,CACDvT,WAAY,kFACZzG,YAAa,CACXqF,KAAMi1B,GAAmB,IACzBlxB,kBAAmB,GACnBJ,eAAgBuxB,GAChBW,cAAe,0BACf7xB,WAAW,EACXF,aAAa,EACb6Q,cAAc,KAKdqhB,GAAkB,CACtBtB,GAAUC,IACVD,GAAUE,IACV,MAGIqB,GAAe,CACnB,CAAE7yB,gBAAgB,EAAOC,oBAAoB,GAC7C,CAAED,gBAAgB,EAAMC,oBAAoB,GAC5C,CAAED,gBAAgB,EAAMC,oBAAoB,IAGxC6yB,GAAkB,CACtB,CAAEl4B,oBACF,CAAEA,gBAAiB,CAACA,GAAgB,KACpC,CAAEA,gBAAiB,KAGfm4B,GAAYA,CAACzf,EAAS9a,IAAU8a,EAAQ9a,EAAQ8a,EAAQjY,QAEjD23B,GAAuBA,CAAA/6B,EAA0BO,KAAU,IAAnC,WAAEwF,GAAqB/F,EAANwD,EAAImQ,GAAA3T,EAAA4T,IACxD,MAAMvP,EAAWo1B,GAAYl5B,GACvBuF,EAAe4zB,GAAgBn5B,GAC/ByF,EAAiB2zB,GAAkBp5B,GACnCy6B,EAAmB,IAAIj8B,KAC7Bi8B,EAAiB71B,QAAQ61B,EAAiB51B,UAAY7E,EAAQ,GAC9D,MAAMG,EAAes6B,EAAiBC,cAChCz6B,EAAGL,GAAAA,GAAA,CACPsC,UAAW,CAAEqG,WAAW,GACxBxJ,YAAa,KACbkD,OAAQ,CAAC,GACNgB,GAAI,IACPpB,YAAai4B,GAAmB72B,EAAKpB,aACrC3B,WAAY25B,GAAiBj6B,GAAAA,GAAC,CAC5BO,gBACGo6B,GAAUF,GAAcr6B,IACxBiD,EAAK/C,aAEV8B,UAAW23B,GAAgB/5B,GAAAA,GAAC,CAAC,EACxBqD,EAAKjB,WAAS,IACjB8B,cAEFhC,OAAQ,CACN0D,aACAF,gBACAC,eACAE,kBAEF1D,eAAgBw4B,GAAUH,GAAiBp6B,GAC3CsC,SAAUi4B,GAAUD,GAAiBt6B,KAKvC,OAHIC,EAAIC,WAAWkH,aACjBnH,EAAI+B,UAAUmE,WAAa,oBAEtBlG,CAAG,EAGC06B,GAAyBA,CAAAt6B,EAA0BL,KAAU,IAAnC,WAAEwF,GAAqBnF,EAAN4C,EAAImQ,GAAA/S,EAAAu6B,IAC1D,MAAMr1B,EAAe4zB,GAAgB,IAAMn5B,GACrCyF,EAAiB2zB,GAAkB,IAAMp5B,GAC/C,OAAAJ,GAAAA,GAAA,CACEM,WAAY25B,GAAkB,CAC5BjzB,YAAY,EACZzG,aAAc,KACdgH,qBAAsB,KACtBC,YAAY,EACZF,YAAY,EACZG,SAAS,EACTC,sBAAsB,EACtBE,gBAAgB,EAChBD,YAAY,IAEdrF,UAAW,KACXL,YAAa,KACbG,UAAW,MACRiB,GAAI,IACPnB,OAAQ,CACN0D,aACAD,eACAD,gBACAG,kBAEF1D,eAAgBw4B,GAAUH,GAAiBp6B,GAC3CsC,SAAUi4B,GAAUD,GAAiBt6B,IAAM,EAW/C,IACE26B,0BACAH,wBACAK,cAN2Bd,GAAWtxB,IAAI+xB,IAO1CM,gBAN6BX,GAAmB1xB,IAAIkyB,IAOpDxnB,WA5vBwB,CACxBnU,kBAAmB,CACjB+7B,UAAU,EACVvhB,aAAc,4BAEhBva,oBAAqB,CAAE2c,MAAO,YAAalY,IAAK,kBAChDxE,iBAAkB,CAChBgnB,aAAc,sBACdC,aAAc,oBACdkP,gBAAiB,yBAEnBl2B,iBAAkB,CAChB,CACEmG,aAAc,8HACdE,WAAY,qBACZw1B,UAAW,4BAEb,CACE11B,aAAc,8HACdE,WAAY,2EACZw1B,UAAW,4BAEb,CACE11B,aAAc,8HACdE,WAAY,qBACZw1B,UAAW,4BAEb,CACE11B,aAAc,8HACdE,WAAY,qBACZw1B,UAAW,6BAGf16B,oBAAqB,CACnBuR,SAAU,CACRF,WAAW,EACX4e,YAAa,UACbve,UAAW,wEAEbF,QAAS,CACPH,WAAW,EACX4e,YAAa,UACbve,UAAW,0ECzGJipB,GAAax7B,IAAA,IAAC,SACzBwe,GACDxe,EAAA,OAAKwe,CAAQ,EACdgd,GAAWtc,UAAY,CACrBV,SAAUkD,KAAAA,UAAoB,CAC5BA,KAAAA,KACAA,KAAAA,QAAkBA,KAAAA,QACjBC,YAGL,Y,gECVA,MAiCA,IAjCiB9G,EAAAA,GAAAA,IAAe,CAC9B4gB,OAAQ,CACNtgC,GAAI,uBACJ4f,eAAgB,YAChBC,YAAa,yBAEf0gB,UAAW,CACTvgC,GAAI,0BACJ4f,eAAgB,eAChBC,YAAa,4BAEf2gB,aAAc,CACZxgC,GAAI,6BACJ4f,eAAgB,SAChBC,YAAa,+BAEf4gB,iBAAkB,CAChBzgC,GAAI,iCACJ4f,eAAgB,oBAChBC,YAAa,6CAEf6gB,eAAgB,CACd1gC,GAAI,+BACJ4f,eAAgB,wDAChBC,YAAa,0CAEf8gB,aAAc,CACZ3gC,GAAI,6BACJ4f,eAAgB,4BAChBC,YAAa,gDCtBJjb,GAAQ5C,EAAW,CAC9B4+B,gBAAkBl9B,GAAQsb,EAAAA,SAAetb,KAYrCm9B,GAA4B,CAChC,IAAKnd,GAASgd,gBCoEhB,GAxE6BI,KAC3B,MAAM,kBAAEhiB,GAAsBE,EAAAA,WAAiBC,GAAAA,IAEzC,cACJ8hB,EAAa,eACbvvB,EAAc,qBACdC,EAAoB,sBACpBC,EAAqB,gBACrBkvB,EAAe,uBACfI,EAAsB,4BACtBC,EAA2B,sBAC3BC,EAAqB,uBACrBC,EAAsB,cACtB3e,GDCgC3d,KAE9B,IAF+B,kBACnCia,GACDja,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KACpB8hB,EAAqB7hB,GAASjB,kBAC9B4iB,EAAwB3hB,GAAShB,sBAEjC,eACJ/M,EAAc,qBACdC,EAAoB,sBACpBC,EAAqB,sBACrBC,GACE6L,GAAW9E,qBACT,gBAAEkoB,EAAe,4BAAEK,GAjCOI,MAChC,MAAOT,EAAiBU,GAAsBx6B,GAAa85B,gBAAgB,IAE3E,MAAO,CACLK,4BAFmCjgC,GAAMsgC,EAAmBtgC,EAAER,OAAOwR,OAGrE4uB,kBACD,EA2BwD95B,GAEnDk6B,EAtBkC5vB,IACrB,MAAfA,EACK,KAEFyvB,GAA0BzvB,IAAgBsS,GAASid,aAkB3BY,CAA0B5vB,GAMzD,MAAO,CACLovB,cAAejiB,GAAmB0iB,cAClChwB,iBACAC,uBACAC,wBACAsvB,yBACAJ,kBACAO,uBAZ8B5kB,GAAUvb,IACxCogC,EAAmB7kB,GACnBvb,EAAEsf,gBAAgB,EAWlB4gB,wBACAD,8BACAze,gBACD,EChCGif,CAAqB,CAAE3iB,sBAE3B,OAAKiiB,GAGH3gC,EAAAA,GAAAA,KAAA,OAAKmjB,UAAU,uBAAsBF,UACnCjjB,EAAAA,GAAAA,KAACqlB,GAAAA,GAAI,CAAClC,UAAU,uBAAsBF,SACnC7R,GACC8R,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEC,EAAAA,GAAAA,MAACoe,GAAAA,EAAS,CAACC,QAAM,EAACpe,UAAU,wBAAuBF,SAAA,EACjDjjB,EAAAA,GAAAA,KAACooB,GAAAA,EAAI,CAACC,IAAKmZ,GAAAA,IACVpf,EAAckB,GAAS6c,eAE1BngC,EAAAA,GAAAA,KAAC4oB,GAAAA,EAAI,CACHzF,UAAU,kBACV0F,UAAWP,GAAAA,EACX5E,QAASod,EAAsB7d,SAE9Bud,QAILtd,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEC,EAAAA,GAAAA,MAACoe,GAAAA,EAAS,CAACC,QAAM,EAAC3hC,GAAG,wBAAwBujB,UAAU,wBAAuBF,SAAA,EAC5EjjB,EAAAA,GAAAA,KAACooB,GAAAA,EAAI,CAACC,IAAKmZ,GAAAA,IACVpf,EAAckB,GAAS4c,YAE1Bhd,EAAAA,GAAAA,MAACue,GAAAA,EAAS,CAACC,UAAWrwB,EAAsB8R,UAAU,wBAAuBF,SAAA,EAC3EjjB,EAAAA,GAAAA,KAACisB,GAAAA,EAAW,CACVra,MAAO4uB,EACP/a,SAAUob,EACVc,cAAevf,EAAckB,GAAS+c,kBACtC,kBAAgB,0BAEjBhvB,IACCrR,EAAAA,GAAAA,KAAC4hC,GAAAA,EAAmB,CAAC/hC,KAAK,UAAUgiC,SAAS,EAAM5e,SAChDb,EAAcwe,SAIrB5gC,EAAAA,GAAAA,KAAC8hC,GAAAA,EAAc,CACb/Z,UAAWyY,EAAgB34B,OAC3B4b,QAAQ,QACRC,QAASqd,EAAuBP,GAChCuB,OAAQ,CACNC,QAAS5f,EAAckB,GAAS8c,eAElCjd,UAAU,OACV3e,MAAO8M,EAAwB,UAAY,UAC3CzR,KAAK,kBA/CY,IAoDrB,E,uCCpFV,MAwJA,GAAe,IAA0B,uCCxHzC,IAjCiByf,EAAAA,GAAAA,IAAe,CAC9B2iB,iBAAkB,CAChBriC,GAAI,qCACJ6f,YAAa,kDACbD,eAAgB,eAElB0iB,+BAAgC,CAC9BtiC,GAAI,iDACJ6f,YAAa,2CACbD,eAAgB,qFAElB2iB,2BAA4B,CAC1BviC,GAAI,6CACJ6f,YAAa,uCACbD,eAAgB,2BAElB4iB,wBAAyB,CACvBxiC,GAAI,0CACJ6f,YAAa,mCACbD,eAAgB,sBAElB6iB,sBAAuB,CACrBziC,GAAI,wCACJ6f,YAAa,uCACbD,eAAgB,yIAElB8iB,qBAAsB,CACpB1iC,GAAI,uCACJ6f,YAAa,+BACbD,eAAgB,8BCxBPhb,GAAQ5C,EAAW,CAC9B2gC,eAAiBj/B,GAAQsb,EAAAA,SAAetb,GACxCk/B,iBAAmBl/B,GAAQsb,EAAAA,SAAetb,KCO/Bm/B,GAAqBA,KAChC,MAAM,SACJ1C,EAAQ,iBACRyC,EAAgB,eAChBD,EAAc,gBACdG,EAAe,kBACfC,EAAiB,4BACjBC,EAA2B,4BAC3BC,GDZqCC,MACvC,MAAM,SAAE/C,GAAa3iB,GAAW/H,4BACzBktB,EAAgBQ,GAAqBr8B,GAAa67B,eAAexC,IACjEyC,EAAkBQ,GAAuBt8B,GAAa87B,kBAAiB,GACxEE,EAAkBA,IAAMK,GAAkB,GAC1CJ,EAAoBA,IAAMK,GAAoB,GAE9CC,EAAmB9jB,GAASZ,sBAYlC,MAAO,CACLwhB,WACAwC,iBACAG,kBACAF,mBACAG,oBACAC,4BAhBkCA,KAClCK,IAJ6BD,GAAoB,GAMjDN,GAAiB,EAcjBG,4BAXkCA,KAClCF,IACAD,GAAiB,EAUlB,ECdGI,IACE,cAAE1gB,IAAkBlD,EAAAA,GAAAA,KAE1B,OAAK6gB,GAGH7c,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAACkjC,GAAAA,GAAU,CAAChb,KAAMqa,EAAgBY,aAAW,EAACC,UAAWV,EAAgBzf,SACtEb,EAAckB,GAAS4e,+BAAgC,CACtDD,kBACEjiC,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CACLL,UAAU,2BACVM,QAAQ,OACR2B,KAAK,SACL1B,QAASkf,EAA4B3f,SAEpCb,EAAckB,GAAS2e,yBAKhC/e,EAAAA,GAAAA,MAACmgB,GAAAA,EAAc,CACbr1B,MAAM,GACN8U,OAAQ0f,EACRzf,QAAS4f,EACT3f,gBAAgB,EAChBsgB,UACEtjC,EAAAA,GAAAA,KAAC6iB,GAAAA,EAAY0gB,KAAI,CAACpgB,UAAU,cAAaF,UACvCjjB,EAAAA,GAAAA,KAACs6B,GAAAA,EAAK,CACJnX,UAAU,SACVkF,IAAKmb,GACLxT,IAAK5N,EAAckB,GAASgf,0BAIlCmB,YACEzjC,EAAAA,GAAAA,KAACwjB,GAAAA,GAAM,CAACL,UAAU,eAAeM,QAAQ,SAASC,QAASmf,EAA4B5f,SACpFb,EAAckB,GAAS6e,8BAE1Blf,SAAA,EAEFjjB,EAAAA,GAAAA,KAAA,MAAImjB,UAAU,kBAAiBF,SAAEb,EAAckB,GAAS8e,4BACxDpiC,EAAAA,GAAAA,KAAA,KAAGmjB,UAAU,cAAaF,SAAEb,EAAckB,GAAS+e,+BAvCjC,IAyCnB,EAGPI,GAAmB9e,UAAY,CAAC,EAEhC,YCgBA,IAxFiBrE,EAAAA,GAAAA,IAAe,CAC9BrF,UAAW,CACTra,GAAI,+CACJ4f,eAAgB,YAChBC,YAAa,yDAEfikB,kBAAmB,CACjB9jC,GAAI,uDACJ4f,eAAgB,WAChBC,YAAa,2CAEfkkB,gBAAiB,CACf/jC,GAAI,qDACJ4f,eAAgB,mBAChBC,YAAa,4CAEfmkB,KAAM,CACJhkC,GAAI,qCACJ4f,eAAgB,OAChBC,YAAa,4CAEfokB,QAAS,CACPjkC,GAAI,6CACJ4f,eAAgB,UAChBC,YAAa,uDAEfqkB,aAAc,CACZlkC,GAAI,kDACJ4f,eAAgB,gBAChBC,YAAa,6DAEfskB,QAAS,CACPnkC,GAAI,6CACJ4f,eAAgB,UAChBC,YAAa,uDAEfukB,aAAc,CACZpkC,GAAI,kDACJ4f,eAAgB,gBAChBC,YAAa,6DAEfwkB,QAAS,CACPrkC,GAAI,6CACJ4f,eAAgB,WAChBC,YAAa,gDAEf3Y,OAAQ,CACNlH,GAAI,iCACJ4f,eAAgB,UAChBC,YAAa,gDAEf/R,QAAS,CACP9N,GAAI,kCACJ4f,eAAgB,WAChBC,YAAa,8CAEfykB,YAAa,CACXtkC,GAAI,sCACJ4f,eAAgB,eAChBC,YAAa,+CAEf0kB,YAAa,CACXvkC,GAAI,sCACJ4f,eAAgB,sBAChBC,YAAa,8BAEf2kB,wBAAyB,CACvBxkC,GAAI,kDACJ4f,eAAgB,OAChBC,YAAa,8DAEf4kB,0BAA2B,CACzBzkC,GAAI,oDACJ4f,eAAgB,QAChBC,YAAa,gEAEf6kB,OAAQ,CACN1kC,GAAI,oCACJ4f,eAAgB,SAChBC,YAAa,sDAEf8kB,SAAU,CACR3kC,GAAI,wBACJ4f,eAAgB,MAChBC,YAAa,8DCjEJ+kB,IAVQ5iC,EAAW,CAC9BkhB,OAASxf,GAAQsb,EAAAA,SAAetb,KASI0Z,GAASkF,GAAMF,YAAYxG,mBAAmBwB,EAAM,CACxFsD,SAAU1E,GAAUC,yBAOT4oB,GAAgChgC,IAEvC,IAFwC,gBAC5C41B,EAAe,kBAAE3b,EAAiB,oBAAEgmB,GACrCjgC,EACC,MAAM,cAAE2d,IAAkBlD,EAAAA,GAAAA,KAC1B,MC3B2BylB,EAC3BviB,EACAiY,EACA3b,EACAgmB,KAAmB,CAEnBE,SAAU,CACR,CACE/kC,KAAM,OACNmd,KAAM,IACN6nB,QAASziB,EAAckB,GAASxc,QAChCkkB,UAAU,OAER3iB,EAAAA,EAAAA,MAAY8K,gBAAkB,CAAC,CACjCtT,KAAM,OACNmd,KAAM,GAAGJ,EAAKnT,gBACdo7B,QAASziB,EAAckB,GAAS5V,WAC7B,GACL,CACE7N,KAAM,OACNmd,KAAM,GAAGJ,EAAKhU,WAAWyxB,KACzBwK,QAASziB,EAAckB,GAAS4gB,aAChCxgB,QAAU9iB,IACR8jC,EAAoB9jC,EAAE,IAI5BkkC,cAAe,KACTz8B,EAAAA,EAAAA,MAAYwK,YAAc,CAAC,CAC7BhT,KAAM,OACNmd,KAAM,IAAG3U,EAAAA,EAAAA,MAAYwK,cACrBgyB,QAASziB,EAAckB,GAASsgB,QAC7B,IAEPmB,SAAU,CACR,CACEC,QAAS,GACTC,MAAO,CACL,CACEplC,KAAM,OACNmd,KAAM,IAAG3U,EAAAA,EAAAA,MAAY68B,yBAAyBxmB,GAAmBC,WACjEkmB,QAASziB,EAAckB,GAASugB,UAElC,CACEhkC,KAAM,OACNmd,KAAM,IAAG3U,EAAAA,EAAAA,MAAY88B,uBACrBN,QAASziB,EAAckB,GAASygB,cAE9B17B,EAAAA,EAAAA,MAAY+8B,kBAAoB,CAAC,CACnCvlC,KAAM,OACNmd,MAAM3U,EAAAA,EAAAA,MAAY+8B,kBAClBP,QAASziB,EAAckB,GAAS0gB,gBAC7B,KAGT,CACEgB,QAAS,GACTC,MAAO,CACL,CACEplC,KAAM,OACNmd,KAAM,IAAG3U,EAAAA,EAAAA,MAAYg9B,aACrBR,QAASziB,EAAckB,GAAS2gB,eDlCjCU,CAAqBviB,EAAeiY,EAAiB3b,EAAmBgmB,EAAoB,EEnBxFY,GAAyBA,KACpC,MAAM,kBAAE5mB,GAAsBE,EAAAA,WAAiBC,GAAAA,IACzC,gBAAEwb,GAAoBjd,GAAW7H,0BAMjCgwB,EAAwBd,GAA8B,CAC1DpK,kBACA3b,oBACAgmB,oBAP0BA,KAC1BF,GAAsB5nB,EAAKhU,WAAWyxB,GAAiB,IASzD,OACEnX,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEjjB,EAAAA,GAAAA,KAACyiC,GAAkB,KACnBziC,EAAAA,GAAAA,KAACo5B,GAAAA,GAAM,CACLoM,cAAeD,EAAsBX,SACrCa,mBAAoBF,EAAsBT,cAC1CY,cAAeH,EAAsBR,YAEvC/kC,EAAAA,GAAAA,KAAC0gC,GAAa,MACb,EAIP4E,GAAuB3hB,UAAY,CAAC,EAEpC,Y,89BCZO,MAoEP,GApEmBgiB,KACjB,MAAM,kBAAEjnB,GAAsBE,EAAAA,WAAiBC,GAAAA,IACzC,cAAEuD,IAAkBlD,EAAAA,GAAAA,KACpBnO,EAAW,CACf7O,WAAYkb,GAAW3E,mBAAmBxW,EAAYC,YACtDC,YAAaib,GAAW3E,mBAAmBxW,EAAYE,cAEnDyjC,EAAoB70B,EAAS7O,YAAc6O,EAAS5O,aACpD,aAAE+oB,GAAiB9N,GAAW7H,0BAC9BkI,EAAWL,GAAWlF,cAiC5B,OA/BA0G,EAAAA,WAAgB,KAmBd,IAlBIF,GAAmB0iB,eAA0C,iBAAzB/4B,EAAAA,EAAAA,MAAYw9B,YAClD33B,OAAO43B,cAAgB,KACrBroB,EAAQ7Y,GAAAA,GAAC,CAAC,EAAImhC,GAAAA,YAAmB,IAAEphC,QAAS,KAAK,EAEnDuJ,OAAO83B,aAAe,KACpBvoB,EAAQ7Y,GAAAA,GAAC,CAAC,EACLmhC,GAAAA,YAAmB,IACtBphC,QAAS,IACJohC,GAAAA,iBACAA,GAAAA,mBAEL,EAEJ73B,OAAO+3B,MAAQA,GACf/3B,OAAO6D,UAAYA,GACnB7D,OAAO9H,QAAUA,GACjB8H,OAAOgU,MAAQA,KAEb7Z,EAAAA,EAAAA,MAAY69B,cACd,KACEC,EAAAA,GAAAA,IAAiB,CACfC,UAAU/9B,EAAAA,EAAAA,MAAY69B,cACtBG,eAAeh+B,EAAAA,EAAAA,MAAYi+B,eAC3BC,eAAel+B,EAAAA,EAAAA,MAAYm+B,cAE/B,CAAE,MAAO7lC,IACP8lC,EAAAA,GAAAA,IAAS9lC,EACX,CACF,GACC,CAAC+d,EAAmBjB,KAErByF,EAAAA,GAAAA,MAAAyD,GAAAA,SAAA,CAAA1D,SAAA,EACEC,EAAAA,GAAAA,MAACwjB,GAAAA,EAAM,CAAAzjB,SAAA,EACLjjB,EAAAA,GAAAA,KAAA,SAAAijB,SAAQb,EAAckB,GAAS6X,cAC/Bn7B,EAAAA,GAAAA,KAAA,QAAMqsB,IAAI,gBAAgBrP,MAAM3U,EAAAA,EAAAA,MAAYs+B,YAAa9mC,KAAK,qBAEhEqjB,EAAAA,GAAAA,MAAA,OAAAD,SAAA,EACEC,EAAAA,GAAAA,MAAC+c,GAAU,CAAAhd,SAAA,EACTjjB,EAAAA,GAAAA,KAACslC,GAAsB,KACvBtlC,EAAAA,GAAAA,KAAA,QAAAijB,SACG2iB,GAEG5lC,EAAAA,GAAAA,KAACipB,GAAAA,EAAK,CAACxF,QAAQ,SAAQR,UACrBjjB,EAAAA,GAAAA,KAAC4mC,EAAAA,EAAS,CAACxa,QAAShK,EAAckB,GAAS4X,aAAc,CAAEhQ,sBAG7DlrB,EAAAA,GAAAA,KAAC09B,GAAS,UAIlB19B,EAAAA,GAAAA,KAAC6mC,GAAAA,EAAU,SAEZ,EC3FMC,GAAa,IAAGz+B,EAAAA,EAAAA,MAAYC,6CCS5B9D,GAAQ5C,EAAW,CAC9BmlC,aAAezjC,GAAQsb,EAAAA,SAAetb,KAoBxC,GAjBqC0jC,KACnC,MAAOD,EAAcE,GAAmBvgC,GAAaqgC,eAarD,OAZAnoB,EAAAA,WAAgB,MACVvW,EAAAA,EAAAA,MAAYyK,gBDbMrO,KAAgB,IAAf,OAAEyiC,GAAQziC,GACT0iC,EAAAA,GAAAA,QAYjB1tB,EAAAA,GAAAA,MAA6BxY,IAAI6lC,GAAY,CAAC,GAAG1tB,KAAK8tB,GAAQ7tB,OAVnDxa,UAElB,MAAQuoC,kBAAkB,gBAAEC,IAAsBzmC,EAC1B,MAApBymC,GACFC,EAAAA,GAAAA,IAAQ,GAAG1mC,uFAEX6lC,EAAAA,GAAAA,IAAS7lC,EACX,GAKS,ECDP2mC,CAAW,CACTL,OAASj/B,IACHA,GAAMA,MAAMu/B,SAAS3/B,OAAS,IAChCo/B,GAAgB,GAChB/4B,OAAOC,SAASs5B,QAAQ,GAAGx/B,EAAKA,KAAKu/B,QAAQ,WAAWt5B,OAAOC,SAAS6O,QAC1E,GAGN,GACC,CAACiqB,IACG,CAAEF,eAAc,ECpBnBW,GAAiBjjC,IAAkB,IAAjB,SAAEwe,GAAUxe,EAClC,MAAM,aAAEsiC,GAAiBC,KACzB,OACEhnC,EAAAA,GAAAA,KAAA,OAAAijB,UACoB,IAAjB8jB,EAAwB,KAAO9jB,GAC5B,EAIVykB,GAAe/jB,UAAY,CACzBV,SAAUkD,KAAAA,KAAeC,YAG3B,aCOAuhB,EAAAA,GAAAA,IAAUC,GAAAA,IAAW,KACnBC,EAAAA,QACE7nC,EAAAA,GAAAA,KAAC8nC,EAAAA,EAAW,CAAC7B,MAAOA,GAAMhjB,UACxBjjB,EAAAA,GAAAA,KAAC0nC,GAAc,CAAAzkB,UACbC,EAAAA,GAAAA,MAAC6kB,EAAAA,GAAM,CAAA9kB,SAAA,EACLjjB,EAAAA,GAAAA,KAACgoC,EAAAA,GAAK,CAACC,KAAK,IAAIC,SAASloC,EAAAA,GAAAA,KAACmoC,EAAAA,EAAQ,CAAAllB,UAACjjB,EAAAA,GAAAA,KAAC2lC,GAAG,SACvC3lC,EAAAA,GAAAA,KAACgoC,EAAAA,GAAK,CAACC,KAAK,IAAIC,SAASloC,EAAAA,GAAAA,KAACooC,EAAAA,GAAQ,CAAC7c,GAAG,IAAIkc,SAAO,aAIvDY,SAASC,eAAe,QACzB,KAGHX,EAAAA,GAAAA,IAAUY,GAAAA,IAAiB5nC,IACzBknC,EAAAA,QACE7nC,EAAAA,GAAAA,KAAC4mC,EAAAA,EAAS,CAACxa,QAASzrB,EAAMyrB,UAC1Bic,SAASC,eAAe,QACzB,KAKHpmC,EAAAA,GAAAA,IAAW,CACTsmC,SAAU,CACR1pC,OAAQA,MACN2pC,EAAAA,EAAAA,IAAYj2B,GALK,uBAKkB,GAGvC8Q,SAAQ,GACRolB,0BAA0B,G,kBC7D5B,IAAIj7B,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,WAAY,MACZ,cAAe,MACf,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,KACb,eAAgB,KAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,KACR,UAAW,KACX,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASk7B,EAAeC,GACvB,IAAIhpC,EAAKipC,EAAsBD,GAC/B,OAAOE,EAAoBlpC,EAC5B,CACA,SAASipC,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEt7B,EAAKm7B,GAAM,CACpC,IAAIhoC,EAAI,IAAIC,MAAM,uBAAyB+nC,EAAM,KAEjD,MADAhoC,EAAEooC,KAAO,mBACHpoC,CACP,CACA,OAAO6M,EAAIm7B,EACZ,CACAD,EAAe/gC,KAAO,WACrB,OAAOD,OAAOC,KAAK6F,EACpB,EACAk7B,EAAeM,QAAUJ,EACzBniC,EAAOwiC,QAAUP,EACjBA,EAAe/oC,GAAK,K","sources":["webpack://@edx/frontend-app-learner-dashboard/./env.config.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/utils/StrictDict.js","webpack://@edx/frontend-app-learner-dashboard/./src/utils/dateFormatter.js","webpack://@edx/frontend-app-learner-dashboard/./src/utils/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/constants/requests.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/app/reducer.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/app/selectors/simpleSelectors.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/app/selectors/appSelectors.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/lms/urls.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/constants/course.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/app/selectors/courseCard.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/constants/app.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/app/selectors/currentList.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/app/selectors/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/requests/reducer.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/requests/selectors.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/store.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/lms/fakeData/testUtils.js","webpack://@edx/frontend-app-learner-dashboard/./src/config/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/i18n/messages/frontend-platform/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/i18n/messages/paragon/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/i18n/messages/frontend-component-footer/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/i18n/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/i18n/messages/frontend-app-learner-dashboard/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/hooks/app.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/redux/hooks/requests.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/lms/utils.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/constants.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/lms/constants.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/lms/api.js","webpack://@edx/frontend-app-learner-dashboard/./src/hooks/api.js","webpack://@edx/frontend-app-learner-dashboard/./src/hooks/utils.js","webpack://@edx/frontend-app-learner-dashboard/./src/hooks/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/EnterpriseDashboardModal/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/segment/utils.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/course.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/credit.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/engagement.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/findCourses.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/enterpriseDashboard.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/entitlements.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/socialShare.js","webpack://@edx/frontend-app-learner-dashboard/./src/tracking/trackers/filter.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/EnterpriseDashboardModal/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/EnterpriseDashboardModal/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/SelectSessionModal/constants.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/SelectSessionModal/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/SelectSessionModal/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/SelectSessionModal/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/components/Checkbox.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/components/FilterForm.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/components/SortForm.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/CourseFilterControls.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseFilterControls/ActiveCourseFilters.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/components/Banner.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CourseBanner.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditContent.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/CreditBanner/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/ProgramsList.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardBanners/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/assets/verified-ribbon.png","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardImage.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/EmailSettingsModal/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/EmailSettingsModal/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/EmailSettingsModal/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/components/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/components/ConfirmPane.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/constants.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/components/ReasonPane.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/components/FinishedPane.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/hooks/reasons.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/hooks/index.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/UnenrollConfirmModal/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardMenu/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardMenu/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardMenu/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/plugin-slots/CourseCardActionSlot/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/ActionButton/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/ActionButton/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/SelectSessionButton.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/BeginCourseButton.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/ResumeButton.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/ViewCourseButton.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardActions/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardDetails/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardDetails/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardDetails/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/components/CourseCardTitle.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CourseCard/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/CourseList/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/CourseList/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/plugin-slots/CourseListSlot/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/assets/empty-course.svg","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/NoCoursesView/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/NoCoursesView/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/plugin-slots/NoCoursesViewSlot/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/CoursesPanel/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/Dashboard/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/Dashboard/LoadingView.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/assets/more-courses-sidewidget.svg","webpack://@edx/frontend-app-learner-dashboard/./src/widgets/LookingForChallengeWidget/track.js","webpack://@edx/frontend-app-learner-dashboard/./src/widgets/LookingForChallengeWidget/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/widgets/LookingForChallengeWidget/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/plugin-slots/WidgetSidebarSlot/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/Dashboard/DashboardLayout.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/Dashboard/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/data/constants/credit.js","webpack://@edx/frontend-app-learner-dashboard/./src/data/services/lms/fakeData/courses.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/WidgetContainers/AppWrapper/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/MasqueradeBar/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/MasqueradeBar/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/MasqueradeBar/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/assets/confirm-email.svg","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/ConfirmEmailBanner/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/ConfirmEmailBanner/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/messages.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/LearnerDashboardMenu.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/containers/LearnerDashboardHeader/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/App.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/components/NoticesWrapper/api.js","webpack://@edx/frontend-app-learner-dashboard/./src/components/NoticesWrapper/hooks.js","webpack://@edx/frontend-app-learner-dashboard/./src/components/NoticesWrapper/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./src/index.jsx","webpack://@edx/frontend-app-learner-dashboard/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["\n\nfunction addPlugins(config, slot_name, plugins) {\n if (slot_name in config.pluginSlots === false) {\n config.pluginSlots[slot_name] = {\n keepDefault: true,\n plugins: []\n };\n }\n\n config.pluginSlots[slot_name].plugins.push(...plugins);\n}\n\nasync function setConfig () {\n let config = {\n pluginSlots: {}\n };\n\n try {\n /* We can't assume FPF exists, as it's not declared as a dependency in all\n * MFEs, so we import it dynamically. In addition, for dynamic imports to\n * work with Webpack all of the code that actually uses the imported module\n * needs to be inside the `try{}` block.\n */\n const { DIRECT_PLUGIN, PLUGIN_OPERATIONS } = await import('@openedx/frontend-plugin-framework');\n if (process.env.APP_ID == 'authn') {\n }\n if (process.env.APP_ID == 'authoring') {\n }\n if (process.env.APP_ID == 'account') {\n addPlugins(config, 'footer_slot', [ \n {\n op: PLUGIN_OPERATIONS.Hide,\n widgetId: 'default_contents',\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'default_contents',\n type: DIRECT_PLUGIN,\n priority: 1,\n RenderWidget: ,\n },\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'read_theme_cookie',\n type: DIRECT_PLUGIN,\n priority: 2,\n RenderWidget: AddDarkTheme,\n },\n },\n ]);\n }\n if (process.env.APP_ID == 'communications') {\n }\n if (process.env.APP_ID == 'discussions') {\n addPlugins(config, 'footer_slot', [ \n {\n op: PLUGIN_OPERATIONS.Hide,\n widgetId: 'default_contents',\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'default_contents',\n type: DIRECT_PLUGIN,\n priority: 1,\n RenderWidget: ,\n },\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'read_theme_cookie',\n type: DIRECT_PLUGIN,\n priority: 2,\n RenderWidget: AddDarkTheme,\n },\n },\n ]);\n }\n if (process.env.APP_ID == 'gradebook') {\n }\n if (process.env.APP_ID == 'learner-dashboard') {\n addPlugins(config, 'footer_slot', [ \n {\n op: PLUGIN_OPERATIONS.Hide,\n widgetId: 'default_contents',\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'default_contents',\n type: DIRECT_PLUGIN,\n priority: 1,\n RenderWidget: ,\n },\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'read_theme_cookie',\n type: DIRECT_PLUGIN,\n priority: 2,\n RenderWidget: AddDarkTheme,\n },\n },\n ]);\n }\n if (process.env.APP_ID == 'learning') {\n addPlugins(config, 'footer_slot', [ \n {\n op: PLUGIN_OPERATIONS.Hide,\n widgetId: 'default_contents',\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'default_contents',\n type: DIRECT_PLUGIN,\n priority: 1,\n RenderWidget: ,\n },\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'read_theme_cookie',\n type: DIRECT_PLUGIN,\n priority: 2,\n RenderWidget: AddDarkTheme,\n },\n },\n ]);\n }\n if (process.env.APP_ID == 'ora-grading') {\n }\n if (process.env.APP_ID == 'profile') {\n addPlugins(config, 'footer_slot', [ \n {\n op: PLUGIN_OPERATIONS.Hide,\n widgetId: 'default_contents',\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'default_contents',\n type: DIRECT_PLUGIN,\n priority: 1,\n RenderWidget: ,\n },\n },\n {\n op: PLUGIN_OPERATIONS.Insert,\n widget: {\n id: 'read_theme_cookie',\n type: DIRECT_PLUGIN,\n priority: 2,\n RenderWidget: AddDarkTheme,\n },\n },\n ]);\n }\n } catch { }\n\n return config;\n}\n\nexport default setConfig;","/* eslint-disable no-console */\nconst strictGet = (target, name) => {\n if (name === Symbol.toStringTag) {\n return target;\n }\n\n if (name === '$$typeof') {\n return typeof target;\n }\n\n if (name in target || name === '_reactFragment') {\n return target[name];\n }\n\n console.log(name.toString());\n console.error({ target, name });\n const e = Error(`invalid property \"${name.toString()}\"`);\n console.error(e.stack);\n return undefined;\n};\n\nconst StrictDict = (dict) => new Proxy(dict, { get: strictGet });\n\nexport default StrictDict;\n","import moment from 'moment';\n\nexport const dateFormatter = (formatDate, date) => formatDate(moment(date).toDate(), {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n});\n\nexport default dateFormatter;\n","export const nullMethod = () => ({});\n\nexport { default as StrictDict } from './StrictDict';\nexport { default as keyStore } from './keyStore';\nexport { default as dateFormatter } from './dateFormatter';\n","import { StrictDict } from 'utils';\n\nexport const RequestStates = StrictDict({\n inactive: 'inactive',\n pending: 'pending',\n completed: 'completed',\n failed: 'failed',\n});\n\nexport const RequestKeys = StrictDict({\n initialize: 'initialize',\n refreshList: 'refreshList',\n newEntitlementEnrollment: 'newEntitlementEnrollment',\n leaveEntitlementEnrollment: 'leaveEntitlementEnrollment',\n switchEntitlementSession: 'switchEntitlementSession',\n unenrollFromCourse: 'unenrollFromCourse',\n updateEmailSettings: 'updateEmailSettings',\n enrollEntitlementSession: 'enrollEntitlementSession',\n leaveEntitlementSession: 'leaveEntitlementSession',\n masquerade: 'masquerade',\n recommendedCourses: 'recommendedCourses',\n});\n\nexport const ErrorCodes = StrictDict({\n missingParam: 'ERR_MISSING_PARAM',\n});\n\nexport const ErrorStatuses = StrictDict({\n badRequest: 400,\n unauthorized: 401,\n forbidden: 403,\n notFound: 404,\n conflict: 409,\n serverError: 500,\n});\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { StrictDict } from 'utils';\n\nconst initialState = {\n pageNumber: 1,\n courseData: {},\n entitlement: [],\n emailConfirmation: {},\n enterpriseDashboard: {},\n platformSettings: {},\n suggestedCourses: [],\n selectSessionModal: {},\n filters: [],\n};\n\nexport const cardId = (val) => `card-${val}`;\n\nexport const today = Date.now();\n\n/**\n * Creates a redux slice with actions to load dashboard data and manage visual layout\n */\nconst app = createSlice({\n name: 'app',\n initialState,\n reducers: {\n loadCourses: (state, { payload: { courses } }) => ({\n ...state,\n courseData: courses.reduce(\n (obj, curr, index) => {\n const out = { ...curr, cardId: cardId(index) };\n if (out.enrollment.lastEnrolled === null) {\n out.enrollment.lastEnrolled = today;\n }\n return { ...obj, [cardId(index)]: out };\n },\n {},\n ),\n }),\n loadGlobalData: (state, { payload }) => ({\n ...state,\n emailConfirmation: payload.emailConfirmation,\n enterpriseDashboard: payload.enterpriseDashboard,\n platformSettings: payload.platformSettings,\n suggestedCourses: payload.suggestedCourses,\n socialShareSettings: payload.socialShareSettings,\n }),\n updateSelectSessionModal: (state, { payload }) => ({\n ...state,\n selectSessionModal: { cardId: payload },\n }),\n setPageNumber: (state, { payload }) => ({ ...state, pageNumber: payload }),\n setFilters: (state, { payload }) => ({\n ...state,\n filters: payload,\n }),\n addFilter: (state, { payload }) => ({\n ...state,\n filters: [...state.filters, payload],\n }),\n removeFilter: (state, { payload }) => ({\n ...state,\n filters: state.filters.filter(item => item !== payload),\n }),\n clearFilters: (state) => ({\n ...state,\n filters: [],\n }),\n },\n});\n\nconst actions = StrictDict(app.actions);\n\nconst { reducer } = app;\n\nexport {\n actions,\n initialState,\n reducer,\n};\n","import { createSelector } from 'reselect';\nimport { StrictDict } from 'utils';\n\nimport * as module from './simpleSelectors';\n\nexport const appSelector = (state) => state.app;\nconst mkSimpleSelector = (cb) => createSelector([module.appSelector], cb);\n\n// top-level app data selectors\nexport const simpleSelectors = StrictDict({\n courseData: mkSimpleSelector(app => app.courseData),\n platformSettings: mkSimpleSelector(app => app.platformSettings),\n suggestedCourses: mkSimpleSelector(app => app.suggestedCourses),\n emailConfirmation: mkSimpleSelector(app => app.emailConfirmation),\n enterpriseDashboard: mkSimpleSelector(app => app.enterpriseDashboard || {}),\n selectSessionModal: mkSimpleSelector(app => app.selectSessionModal),\n pageNumber: mkSimpleSelector(app => app.pageNumber),\n filters: mkSimpleSelector(app => app.filters),\n socialShareSettings: mkSimpleSelector(app => app.socialShareSettings),\n});\n\nexport const cardSimpleSelectors = StrictDict({\n certificate: ({ certificate }) => certificate,\n course: ({ course }) => course,\n courseProvider: ({ courseProvider }) => courseProvider,\n courseRun: ({ courseRun }) => courseRun,\n credit: ({ credit }) => credit,\n enrollment: ({ enrollment }) => enrollment,\n entitlement: ({ entitlement }) => entitlement,\n gradeData: ({ gradeData }) => gradeData,\n relatedPrograms: ({ programs: { relatedPrograms } }) => relatedPrograms,\n});\n\nexport const mkCardSelector = (simpleSelector, selector) => (state, cardId) => (\n selector(simpleSelector(module.simpleSelectors.courseData(state)[cardId]))\n);\n\nexport default simpleSelectors;\n","import { createSelector } from 'reselect';\n\nimport { StrictDict } from 'utils';\n\nimport simpleSelectors from './simpleSelectors';\nimport * as module from './appSelectors';\n\nexport const numCourses = createSelector(\n [simpleSelectors.courseData],\n (courseData) => Object.keys(courseData).length,\n);\nexport const hasCourses = createSelector([module.numCourses], (num) => num > 0);\nexport const hasAvailableDashboards = createSelector(\n [simpleSelectors.enterpriseDashboard],\n (data) => data !== null && data.isLearnerPortalEnabled === true,\n);\nexport const showSelectSessionModal = createSelector(\n [simpleSelectors.selectSessionModal],\n (data) => data.cardId != null,\n);\n\nexport default StrictDict({\n numCourses,\n hasCourses,\n hasAvailableDashboards,\n showSelectSessionModal,\n});\n","import { StrictDict } from 'utils';\n\nimport { getConfig } from '@edx/frontend-platform';\n\nexport const getEcommerceUrl = () => getConfig().ECOMMERCE_BASE_URL;\n\nconst getBaseUrl = () => getConfig().LMS_BASE_URL;\n\nexport const getApiUrl = () => (`${getConfig().LMS_BASE_URL}/api`);\n\nconst getInitApiUrl = () => (`${getApiUrl()}/learner_home/init`);\n\nconst event = () => `${getBaseUrl()}/event`;\nconst courseUnenroll = () => `${getBaseUrl()}/change_enrollment`;\nconst updateEmailSettings = () => `${getApiUrl()}/change_email_settings`;\nconst entitlementEnrollment = (uuid) => `${getApiUrl()}/entitlements/v1/entitlements/${uuid}/enrollments`;\n\n// if url is null or absolute, return it as is\nexport const updateUrl = (base, url) => ((url == null || url.startsWith('http://') || url.startsWith('https://')) ? url : `${base}${url}`);\n\nexport const baseAppUrl = (url) => updateUrl(getBaseUrl(), url);\nexport const learningMfeUrl = (url) => updateUrl(getConfig().LEARNING_BASE_URL, url);\n\n// static view url\nconst programsUrl = () => baseAppUrl('/dashboard/programs');\n\nexport const creditPurchaseUrl = (courseId) => `${getEcommerceUrl()}/credit/checkout/${courseId}/`;\nexport const creditRequestUrl = (providerId) => `${getApiUrl()}/credit/v1/providers/${providerId}/request/`;\n\nexport default StrictDict({\n getApiUrl,\n baseAppUrl,\n courseUnenroll,\n creditPurchaseUrl,\n creditRequestUrl,\n entitlementEnrollment,\n event,\n getInitApiUrl,\n learningMfeUrl,\n programsUrl,\n updateEmailSettings,\n});\n","// Constants related to courses\nexport const COURSE_MODES = {\n VERIFIED: 'verified',\n PROFESSIONAL: 'professional',\n NO_ID_PROFESSIONAL: 'no-id-professional',\n AUDIT: 'audit',\n HONOR: 'honor',\n EXECUTIVE_EDUCATION: 'executive-education',\n PAID_EXECUTIVE_EDUCATION: 'paid-executive-education',\n UNPAID_EXECUTIVE_EDUCATION: 'unpaid-executive-education',\n};\n\nexport const EXECUTIVE_EDUCATION_COURSE_MODES = [\n COURSE_MODES.EXECUTIVE_EDUCATION,\n COURSE_MODES.PAID_EXECUTIVE_EDUCATION,\n COURSE_MODES.UNPAID_EXECUTIVE_EDUCATION,\n];\n","import { StrictDict } from 'utils';\nimport { baseAppUrl } from 'data/services/lms/urls';\nimport { EXECUTIVE_EDUCATION_COURSE_MODES } from 'data/constants/course';\n\nimport * as module from './courseCard';\nimport * as simpleSelectors from './simpleSelectors';\n\nconst { cardSimpleSelectors, mkCardSelector } = simpleSelectors;\n\nconst today = new Date();\nconst dateSixMonthsFromNow = new Date();\ndateSixMonthsFromNow.setDate(dateSixMonthsFromNow.getDate() + 180);\n\nexport const loadDateVal = (date) => (date ? new Date(date) : null);\n\nexport const courseCard = StrictDict({\n certificate: mkCardSelector(\n cardSimpleSelectors.certificate,\n (certificate) => (certificate === null ? {} : ({\n availableDate: new Date(certificate.availableDate),\n certPreviewUrl: baseAppUrl(certificate.certPreviewUrl),\n isDownloadable: certificate.isDownloadable,\n isEarnedButUnavailable: certificate.isEarned && new Date(certificate.availableDate) > new Date(),\n isRestricted: certificate.isRestricted,\n isEarned: certificate.isEarned,\n })),\n ),\n course: mkCardSelector(\n cardSimpleSelectors.course,\n (course) => ({\n bannerImgSrc: baseAppUrl(course.bannerImgSrc),\n courseNumber: course.courseNumber,\n courseName: course.courseName,\n socialShareUrl: course.socialShareUrl,\n }),\n ),\n courseProvider: mkCardSelector(\n cardSimpleSelectors.courseProvider,\n (courseProvider) => ({ name: courseProvider?.name }),\n ),\n courseRun: mkCardSelector(\n cardSimpleSelectors.courseRun,\n (courseRun) => (courseRun === null ? {} : {\n endDate: module.loadDateVal(courseRun.endDate),\n startDate: module.loadDateVal(courseRun.startDate),\n\n courseId: courseRun.courseId,\n isArchived: courseRun.isArchived,\n isStarted: courseRun.isStarted,\n\n minPassingGrade: Math.floor(courseRun.minPassingGrade * 100),\n\n homeUrl: courseRun.homeUrl,\n marketingUrl: courseRun.marketingUrl,\n upgradeUrl: courseRun.upgradeUrl,\n\n progressUrl: baseAppUrl(courseRun.progressUrl),\n resumeUrl: baseAppUrl(courseRun.resumeUrl), // resume will route this to learning mfe.\n unenrollUrl: baseAppUrl(courseRun.unenrollUrl),\n }),\n ),\n credit: mkCardSelector(\n cardSimpleSelectors.credit,\n (credit) => {\n if (!credit || Object.keys(credit).length === 0) {\n return { isEligible: false };\n }\n return {\n isEligible: true,\n providerStatusUrl: credit.providerStatusUrl,\n providerName: credit.providerName,\n providerId: credit.providerId,\n error: credit.error,\n purchased: credit.purchased,\n requestStatus: credit.requestStatus,\n };\n },\n ),\n enrollment: mkCardSelector(\n cardSimpleSelectors.enrollment,\n (enrollment) => {\n if (enrollment == null) {\n return { isEnrolled: false };\n }\n const { isStaff, hasUnmetPrereqs, isTooEarly } = enrollment.coursewareAccess;\n return {\n coursewareAccess: enrollment.coursewareAccess,\n hasAccess: isStaff || !(hasUnmetPrereqs || isTooEarly),\n isEnrolled: enrollment.isEnrolled,\n lastEnrolled: enrollment.lastEnrolled,\n hasStarted: enrollment.hasStarted,\n\n accessExpirationDate: module.loadDateVal(enrollment.accessExpirationDate),\n canUpgrade: enrollment.canUpgrade,\n isAudit: enrollment.isAudit,\n isAuditAccessExpired: enrollment.isAuditAccessExpired,\n isVerified: enrollment.isVerified,\n\n isEmailEnabled: enrollment.isEmailEnabled,\n hasOptedOutOfEmail: enrollment.hasOptedOutOfEmail,\n mode: enrollment.mode,\n isExecEd2UCourse: EXECUTIVE_EDUCATION_COURSE_MODES.includes(enrollment.mode),\n };\n },\n ),\n entitlement: mkCardSelector(\n cardSimpleSelectors.entitlement,\n (entitlement) => {\n if (!entitlement || Object.keys(entitlement).length === 0) {\n return { isEntitlement: false };\n }\n const deadline = new Date(entitlement.changeDeadline);\n const deadlinePassed = deadline < today;\n const showExpirationWarning = (\n !entitlement.isFulfilled\n && !deadlinePassed\n && deadline <= dateSixMonthsFromNow\n );\n return {\n isEntitlement: true,\n\n availableSessions: entitlement.availableSessions,\n changeDeadline: deadline,\n isExpired: entitlement.isExpired,\n isFulfilled: entitlement.isFulfilled,\n uuid: entitlement.uuid,\n\n hasSessions: entitlement.availableSessions?.length > 0,\n canChange: !deadlinePassed,\n showExpirationWarning,\n };\n },\n ),\n gradeData: mkCardSelector(\n cardSimpleSelectors.gradeData,\n (gradeData) => ({ isPassing: gradeData.isPassing }),\n ),\n relatedPrograms: mkCardSelector(\n cardSimpleSelectors.relatedPrograms,\n (relatedPrograms) => ({\n list: relatedPrograms.map(program => ({\n bannerImgSrc: program.bannerImgSrc,\n logoImgSrc: program.logoImgSrc,\n numberOfCourses: program.numberOfCourses,\n programType: program.programType,\n programUrl: program.programUrl,\n provider: program.provider,\n title: program.title,\n })),\n length: relatedPrograms.length,\n }),\n ),\n});\n\nexport default courseCard;\n","import { getConfig } from '@edx/frontend-platform';\nimport { StrictDict } from 'utils';\n\nexport const routePath = `${getConfig().PUBLIC_PATH}:courseId`;\nexport const locationId = window.location.pathname.slice(1);\n\nexport const SortKeys = StrictDict({\n enrolled: 'enrolled',\n title: 'title',\n});\n\nexport const FilterKeys = StrictDict({\n inProgress: 'inProgress',\n notStarted: 'notStarted',\n done: 'done',\n notEnrolled: 'notEnrolled',\n upgraded: 'upgraded',\n});\n\nexport const ListPageSize = 25;\n","import { StrictDict } from 'utils';\nimport { FilterKeys, SortKeys } from 'data/constants/app';\n\nimport simpleSelectors from './simpleSelectors';\nimport * as module from './currentList';\n\nexport const sortFn = (transform, { reverse }) => (v1, v2) => {\n const [a, b] = [v1, v2].map(transform);\n if (a === b) { return 0; }\n return ((a > b) ? 1 : -1) * (reverse ? -1 : 1);\n};\n\nexport const courseFilters = StrictDict({\n [FilterKeys.notEnrolled]: (course) => !course.enrollment.isEnrolled,\n [FilterKeys.done]: (course) => course.courseRun !== null && course.courseRun.isArchived,\n [FilterKeys.upgraded]: (course) => course.enrollment.isVerified,\n [FilterKeys.inProgress]: (course) => course.enrollment.hasStarted,\n [FilterKeys.notStarted]: (course) => !course.enrollment.hasStarted,\n});\n\nexport const transforms = StrictDict({\n [SortKeys.enrolled]: ({ enrollment }) => new Date(enrollment.lastEnrolled),\n [SortKeys.title]: ({ course }) => course.courseName.toLowerCase(),\n});\n\nexport const courseFilterFn = filters => (filters.length\n ? course => filters.reduce((match, filter) => match && courseFilters[filter](course), true)\n : () => true);\n\nexport const currentList = (allCourses, {\n sortBy,\n filters,\n}) => allCourses\n .filter(module.courseFilterFn(filters))\n .sort(module.sortFn(transforms[sortBy], { reverse: sortBy === SortKeys.enrolled }));\n\nexport const visibleList = (state, {\n sortBy,\n filters,\n pageSize,\n}) => {\n const courses = Object.values(simpleSelectors.courseData(state));\n const list = module.currentList(courses, { sortBy, filters });\n const pageNumber = simpleSelectors.pageNumber(state);\n\n if (pageSize === 0) {\n return {\n visible: list,\n numPages: 1,\n };\n }\n return {\n visibleList: list.slice((pageNumber - 1) * pageSize, pageNumber * pageSize),\n numPages: Math.ceil(list.length / pageSize),\n };\n};\n\nexport default visibleList;\n","import { StrictDict } from 'utils';\n\nimport simpleSelectors from './simpleSelectors';\nimport appSelectors from './appSelectors';\nimport courseCard from './courseCard';\nimport currentList from './currentList';\n\nexport default StrictDict({\n ...simpleSelectors,\n ...appSelectors,\n courseCard,\n currentList,\n});\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { StrictDict } from 'utils';\n\nimport { RequestStates, RequestKeys } from 'data/constants/requests';\n\nconst initialState = {\n [RequestKeys.initialize]: { status: RequestStates.inactive },\n [RequestKeys.refreshList]: { status: RequestStates.inactive },\n [RequestKeys.enrollEntitlementSession]: { status: RequestStates.inactive },\n [RequestKeys.leaveEntitlementSession]: { status: RequestStates.inactive },\n [RequestKeys.masquerade]: { status: RequestStates.inactive },\n};\n\n// eslint-disable-next-line no-unused-vars\nconst requests = createSlice({\n name: 'requests',\n initialState,\n reducers: {\n startRequest: (state, { payload }) => ({\n ...state,\n [payload.requestKey]: {\n status: RequestStates.pending,\n },\n }),\n completeRequest: (state, { payload }) => ({\n ...state,\n [payload.requestKey]: {\n status: RequestStates.completed,\n response: payload.response,\n },\n }),\n failRequest: (state, { payload }) => ({\n ...state,\n [payload.requestKey]: {\n status: RequestStates.failed,\n error: payload.error,\n },\n }),\n clearRequest: (state, { payload }) => ({\n ...state,\n [payload.requestKey]: {},\n }),\n },\n});\n\nconst actions = StrictDict(requests.actions);\nconst { reducer } = requests;\n\nexport {\n actions,\n reducer,\n initialState,\n};\n","import { StrictDict } from 'utils';\nimport { RequestStates, RequestKeys } from 'data/constants/requests';\n// import * as module from './selectors';\n\nexport const requestStatus = (state, { requestKey }) => state.requests[requestKey];\n\nconst statusSelector = (fn) => (requestKey) => (state) => fn(state.requests[requestKey]);\n\nexport const isInactive = ({ status }) => status === RequestStates.inactive;\nexport const isPending = ({ status }) => status === RequestStates.pending;\nexport const isCompleted = ({ status }) => status === RequestStates.completed;\nexport const isFailed = ({ status }) => status === RequestStates.failed;\nexport const error = (request) => request.error;\nexport const errorStatus = (request) => request.error?.response?.status;\nexport const errorCode = (request) => request.error?.response?.data;\n\nexport const data = (request) => request.data;\n\nexport const masquerade = (state) => {\n const request = requestStatus(state, { requestKey: RequestKeys.masquerade });\n return {\n isMasquerading: isCompleted(request),\n isMasqueradingFailed: isFailed(request),\n isMasqueradingPending: isPending(request),\n masqueradeErrorStatus: errorStatus(request),\n };\n};\n\nexport default StrictDict({\n requestStatus,\n isInactive: statusSelector(isInactive),\n isPending: statusSelector(isPending),\n isCompleted: statusSelector(isCompleted),\n isFailed: statusSelector(isFailed),\n error: statusSelector(error),\n errorCode: statusSelector(errorCode),\n errorStatus: statusSelector(errorStatus),\n data: statusSelector(data),\n masquerade,\n});\n","import { combineReducers } from 'redux';\n\nimport { StrictDict } from 'utils';\n\nimport * as app from './app';\nimport * as requests from './requests';\n\nconst modules = {\n app,\n requests,\n};\n\n/**\n * Extracts keys from the modules object and the provided propName parameter to locate the\n * corresponding object for that propName.\n * Example: moduleProps('reducer') will return an aggregated object containing the reducer for each module\n *\n * @param {string} propName Used to locate the prop in each module\n * @returns {object} Aggregated values for the provided propName\n */\nconst moduleProps = (propName) => Object.keys(modules).reduce(\n (obj, moduleKey) => {\n const value = modules[moduleKey][propName];\n return value ? { ...obj, [moduleKey]: value } : obj;\n },\n {},\n);\n\nconst rootReducer = combineReducers(moduleProps('reducer'));\n\nconst actions = StrictDict(moduleProps('actions'));\n\nconst selectors = StrictDict(moduleProps('selectors'));\n\nexport { actions, selectors };\n\nexport default rootReducer;\n","import * as redux from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport {\n composeWithDevToolsLogOnlyInProduction,\n} from '@redux-devtools/extension';\nimport { createLogger } from 'redux-logger';\n\nimport apiTestUtils from 'data/services/lms/fakeData/testUtils';\n\nimport reducer, { actions, selectors } from './redux';\n\nexport const createStore = () => {\n const loggerMiddleware = createLogger();\n\n const middleware = [thunkMiddleware, loggerMiddleware];\n\n const store = redux.createStore(\n reducer,\n composeWithDevToolsLogOnlyInProduction(redux.applyMiddleware(...middleware)),\n );\n\n /**\n * Dev tools for redux work\n */\n if (process.env.NODE_ENV === 'development') {\n window.store = store;\n window.actions = actions;\n window.selectors = selectors;\n window.apiTestUtils = apiTestUtils(store);\n }\n\n return store;\n};\n\nconst store = createStore();\n\nexport default store;\n","// import { StrictDict } from 'utils';\nimport {\n ErrorStatuses,\n // RequestKeys,\n} from 'data/constants/requests';\nimport { actions } from 'data/redux';\n\nexport const errorData = (status, data = '') => ({\n response: {\n status,\n data,\n },\n});\n\nexport const networkErrorData = errorData(ErrorStatuses.badRequest);\n\nexport const genTestUtils = ({\n dispatch,\n}) => {\n /*\n const mockStart = (requestKey) => () => {\n dispatch(actions.requests.startRequest(requestKey));\n };\n */\n\n const mockError = (requestKey, status, data) => () => {\n dispatch(actions.requests.failRequest({\n requestKey,\n error: errorData(status, data),\n }));\n };\n const mockNetworkError = (requestKey) => (\n mockError(requestKey, ErrorStatuses.badRequest)\n );\n return {\n mockNetworkError,\n };\n};\n\nexport default genTestUtils;\n","const configuration = {\n // BASE_URL: process.env.BASE_URL,\n LMS_BASE_URL: process.env.LMS_BASE_URL,\n ECOMMERCE_BASE_URL: process.env.ECOMMERCE_BASE_URL,\n // LOGIN_URL: process.env.LOGIN_URL,\n // LOGOUT_URL: process.env.LOGOUT_URL,\n // CSRF_TOKEN_API_PATH: process.env.CSRF_TOKEN_API_PATH,\n // REFRESH_ACCESS_TOKEN_ENDPOINT: process.env.REFRESH_ACCESS_TOKEN_ENDPOINT,\n // DATA_API_BASE_URL: process.env.DATA_API_BASE_URL,\n // SECURE_COOKIES: process.env.NODE_ENV !== 'development',\n SEGMENT_KEY: process.env.SEGMENT_KEY,\n // ACCESS_TOKEN_COOKIE_NAME: process.env.ACCESS_TOKEN_COOKIE_NAME,\n LEARNING_BASE_URL: process.env.LEARNING_BASE_URL,\n SESSION_COOKIE_DOMAIN: process.env.SESSION_COOKIE_DOMAIN || '',\n ZENDESK_KEY: process.env.ZENDESK_KEY,\n SUPPORT_URL: process.env.SUPPORT_URL || null,\n ENABLE_NOTICES: process.env.ENABLE_NOTICES || null,\n CAREER_LINK_URL: process.env.CAREER_LINK_URL || null,\n LOGO_URL: process.env.LOGO_URL,\n ENABLE_EDX_PERSONAL_DASHBOARD: process.env.ENABLE_EDX_PERSONAL_DASHBOARD === 'true',\n SEARCH_CATALOG_URL: process.env.SEARCH_CATALOG_URL || null,\n ENABLE_PROGRAMS: process.env.ENABLE_PROGRAMS === 'true',\n};\n\nconst features = {};\n\nexport { configuration, features };\n","// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n\nimport messagesOfArLanguage from './ar.json';\nimport messagesOfBoLanguage from './bo.json';\nimport messagesOfDaLanguage from './da.json';\nimport messagesOfDeDeLanguage from './de_DE.json';\nimport messagesOfElLanguage from './el.json';\nimport messagesOfEs419Language from './es_419.json';\nimport messagesOfEsEsLanguage from './es_ES.json';\nimport messagesOfFaLanguage from './fa.json';\nimport messagesOfFrCaLanguage from './fr_CA.json';\nimport messagesOfHeLanguage from './he.json';\nimport messagesOfHiLanguage from './hi.json';\nimport messagesOfIdLanguage from './id.json';\nimport messagesOfItItLanguage from './it_IT.json';\nimport messagesOfLvLanguage from './lv.json';\nimport messagesOfPtBrLanguage from './pt_BR.json';\nimport messagesOfPtPtLanguage from './pt_PT.json';\nimport messagesOfRuLanguage from './ru.json';\nimport messagesOfTeLanguage from './te.json';\nimport messagesOfThLanguage from './th.json';\nimport messagesOfTrTrLanguage from './tr_TR.json';\nimport messagesOfUkLanguage from './uk.json';\nimport messagesOfUzLanguage from './uz.json';\nimport messagesOfViLanguage from './vi.json';\nimport messagesOfZhCnLanguage from './zh_CN.json';\nimport messagesOfZhHkLanguage from './zh_HK.json';\n\nexport default {\n 'ar': messagesOfArLanguage,\n 'zh-hk': messagesOfZhHkLanguage,\n 'zh-cn': messagesOfZhCnLanguage,\n 'vi': messagesOfViLanguage,\n 'uz': messagesOfUzLanguage,\n 'uk': messagesOfUkLanguage,\n 'tr-tr': messagesOfTrTrLanguage,\n 'th': messagesOfThLanguage,\n 'te': messagesOfTeLanguage,\n 'ru': messagesOfRuLanguage,\n 'pt-pt': messagesOfPtPtLanguage,\n 'pt-br': messagesOfPtBrLanguage,\n 'lv': messagesOfLvLanguage,\n 'it-it': messagesOfItItLanguage,\n 'id': messagesOfIdLanguage,\n 'hi': messagesOfHiLanguage,\n 'he': messagesOfHeLanguage,\n 'fr-ca': messagesOfFrCaLanguage,\n 'fa': messagesOfFaLanguage,\n 'es-es': messagesOfEsEsLanguage,\n 'es-419': messagesOfEs419Language,\n 'el': messagesOfElLanguage,\n 'de-de': messagesOfDeDeLanguage,\n 'da': messagesOfDaLanguage,\n 'bo': messagesOfBoLanguage,\n};\n","// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n\nimport messagesOfArLanguage from './ar.json';\nimport messagesOfDaLanguage from './da.json';\nimport messagesOfDeLanguage from './de.json';\nimport messagesOfDeDeLanguage from './de_DE.json';\nimport messagesOfElLanguage from './el.json';\nimport messagesOfEs419Language from './es_419.json';\nimport messagesOfEsEsLanguage from './es_ES.json';\nimport messagesOfFaLanguage from './fa.json';\nimport messagesOfFrCaLanguage from './fr_CA.json';\nimport messagesOfHeLanguage from './he.json';\nimport messagesOfHiLanguage from './hi.json';\nimport messagesOfIdLanguage from './id.json';\nimport messagesOfItItLanguage from './it_IT.json';\nimport messagesOfLvLanguage from './lv.json';\nimport messagesOfPtBrLanguage from './pt_BR.json';\nimport messagesOfPtPtLanguage from './pt_PT.json';\nimport messagesOfRuLanguage from './ru.json';\nimport messagesOfSwLanguage from './sw.json';\nimport messagesOfTeLanguage from './te.json';\nimport messagesOfThLanguage from './th.json';\nimport messagesOfTrTrLanguage from './tr_TR.json';\nimport messagesOfUkLanguage from './uk.json';\nimport messagesOfUzLanguage from './uz.json';\nimport messagesOfViLanguage from './vi.json';\nimport messagesOfZhCnLanguage from './zh_CN.json';\nimport messagesOfZhHkLanguage from './zh_HK.json';\n\nexport default {\n 'ar': messagesOfArLanguage,\n 'zh-hk': messagesOfZhHkLanguage,\n 'zh-cn': messagesOfZhCnLanguage,\n 'vi': messagesOfViLanguage,\n 'uz': messagesOfUzLanguage,\n 'uk': messagesOfUkLanguage,\n 'tr-tr': messagesOfTrTrLanguage,\n 'th': messagesOfThLanguage,\n 'te': messagesOfTeLanguage,\n 'sw': messagesOfSwLanguage,\n 'ru': messagesOfRuLanguage,\n 'pt-pt': messagesOfPtPtLanguage,\n 'pt-br': messagesOfPtBrLanguage,\n 'lv': messagesOfLvLanguage,\n 'it-it': messagesOfItItLanguage,\n 'id': messagesOfIdLanguage,\n 'hi': messagesOfHiLanguage,\n 'he': messagesOfHeLanguage,\n 'fr-ca': messagesOfFrCaLanguage,\n 'fa': messagesOfFaLanguage,\n 'es-es': messagesOfEsEsLanguage,\n 'es-419': messagesOfEs419Language,\n 'el': messagesOfElLanguage,\n 'de-de': messagesOfDeDeLanguage,\n 'de': messagesOfDeLanguage,\n 'da': messagesOfDaLanguage,\n};\n","// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n\nimport messagesOfArLanguage from './ar.json';\nimport messagesOfDaLanguage from './da.json';\nimport messagesOfDeLanguage from './de.json';\nimport messagesOfDeDeLanguage from './de_DE.json';\nimport messagesOfElLanguage from './el.json';\nimport messagesOfEs419Language from './es_419.json';\nimport messagesOfEsEsLanguage from './es_ES.json';\nimport messagesOfFaLanguage from './fa.json';\nimport messagesOfFrCaLanguage from './fr_CA.json';\nimport messagesOfHeLanguage from './he.json';\nimport messagesOfHiLanguage from './hi.json';\nimport messagesOfIdLanguage from './id.json';\nimport messagesOfItItLanguage from './it_IT.json';\nimport messagesOfLvLanguage from './lv.json';\nimport messagesOfPtBrLanguage from './pt_BR.json';\nimport messagesOfPtPtLanguage from './pt_PT.json';\nimport messagesOfRuLanguage from './ru.json';\nimport messagesOfSwLanguage from './sw.json';\nimport messagesOfTeLanguage from './te.json';\nimport messagesOfThLanguage from './th.json';\nimport messagesOfTrTrLanguage from './tr_TR.json';\nimport messagesOfUkLanguage from './uk.json';\nimport messagesOfUzLanguage from './uz.json';\nimport messagesOfViLanguage from './vi.json';\nimport messagesOfZhCnLanguage from './zh_CN.json';\nimport messagesOfZhHkLanguage from './zh_HK.json';\n\nexport default {\n 'ar': messagesOfArLanguage,\n 'zh-hk': messagesOfZhHkLanguage,\n 'zh-cn': messagesOfZhCnLanguage,\n 'vi': messagesOfViLanguage,\n 'uz': messagesOfUzLanguage,\n 'uk': messagesOfUkLanguage,\n 'tr-tr': messagesOfTrTrLanguage,\n 'th': messagesOfThLanguage,\n 'te': messagesOfTeLanguage,\n 'sw': messagesOfSwLanguage,\n 'ru': messagesOfRuLanguage,\n 'pt-pt': messagesOfPtPtLanguage,\n 'pt-br': messagesOfPtBrLanguage,\n 'lv': messagesOfLvLanguage,\n 'it-it': messagesOfItItLanguage,\n 'id': messagesOfIdLanguage,\n 'hi': messagesOfHiLanguage,\n 'he': messagesOfHeLanguage,\n 'fr-ca': messagesOfFrCaLanguage,\n 'fa': messagesOfFaLanguage,\n 'es-es': messagesOfEsEsLanguage,\n 'es-419': messagesOfEs419Language,\n 'el': messagesOfElLanguage,\n 'de-de': messagesOfDeDeLanguage,\n 'de': messagesOfDeLanguage,\n 'da': messagesOfDaLanguage,\n};\n","// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n\nimport messagesFromFrontendPlatform from './messages/frontend-platform';\nimport messagesFromParagon from './messages/paragon';\nimport messagesFromFrontendComponentFooter from './messages/frontend-component-footer';\nimport messagesFromFrontendAppLearnerDashboard from './messages/frontend-app-learner-dashboard';\n\nexport default [\n messagesFromFrontendPlatform,\n messagesFromParagon,\n messagesFromFrontendComponentFooter,\n messagesFromFrontendAppLearnerDashboard,\n];\n","// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n\nimport messagesOfArLanguage from './ar.json';\nimport messagesOfBoLanguage from './bo.json';\nimport messagesOfDaLanguage from './da.json';\nimport messagesOfDeLanguage from './de.json';\nimport messagesOfDeDeLanguage from './de_DE.json';\nimport messagesOfElLanguage from './el.json';\nimport messagesOfEs419Language from './es_419.json';\nimport messagesOfEsEsLanguage from './es_ES.json';\nimport messagesOfFaLanguage from './fa.json';\nimport messagesOfFrCaLanguage from './fr_CA.json';\nimport messagesOfHeLanguage from './he.json';\nimport messagesOfHiLanguage from './hi.json';\nimport messagesOfIdLanguage from './id.json';\nimport messagesOfItItLanguage from './it_IT.json';\nimport messagesOfLvLanguage from './lv.json';\nimport messagesOfPtBrLanguage from './pt_BR.json';\nimport messagesOfPtPtLanguage from './pt_PT.json';\nimport messagesOfRoLanguage from './ro.json';\nimport messagesOfRuLanguage from './ru.json';\nimport messagesOfSwLanguage from './sw.json';\nimport messagesOfTeLanguage from './te.json';\nimport messagesOfThLanguage from './th.json';\nimport messagesOfTrTrLanguage from './tr_TR.json';\nimport messagesOfUkLanguage from './uk.json';\nimport messagesOfUzLanguage from './uz.json';\nimport messagesOfViLanguage from './vi.json';\nimport messagesOfZhCnLanguage from './zh_CN.json';\nimport messagesOfZhHkLanguage from './zh_HK.json';\n\nexport default {\n 'ar': messagesOfArLanguage,\n 'zh-hk': messagesOfZhHkLanguage,\n 'zh-cn': messagesOfZhCnLanguage,\n 'vi': messagesOfViLanguage,\n 'uz': messagesOfUzLanguage,\n 'uk': messagesOfUkLanguage,\n 'tr-tr': messagesOfTrTrLanguage,\n 'th': messagesOfThLanguage,\n 'te': messagesOfTeLanguage,\n 'sw': messagesOfSwLanguage,\n 'ru': messagesOfRuLanguage,\n 'ro': messagesOfRoLanguage,\n 'pt-pt': messagesOfPtPtLanguage,\n 'pt-br': messagesOfPtBrLanguage,\n 'lv': messagesOfLvLanguage,\n 'it-it': messagesOfItItLanguage,\n 'id': messagesOfIdLanguage,\n 'hi': messagesOfHiLanguage,\n 'he': messagesOfHeLanguage,\n 'fr-ca': messagesOfFrCaLanguage,\n 'fa': messagesOfFaLanguage,\n 'es-es': messagesOfEsEsLanguage,\n 'es-419': messagesOfEs419Language,\n 'el': messagesOfElLanguage,\n 'de-de': messagesOfDeDeLanguage,\n 'de': messagesOfDeLanguage,\n 'da': messagesOfDaLanguage,\n 'bo': messagesOfBoLanguage,\n};\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport * as redux from 'data/redux';\nimport * as module from './app';\n\nconst selectors = redux.selectors.app;\nconst actions = redux.actions.app;\n\n/** Simple Selectors **/\nexport const usePageNumber = () => useSelector(selectors.pageNumber);\nexport const useFilters = () => useSelector(selectors.filters);\nexport const useEmailConfirmationData = () => useSelector(selectors.emailConfirmation);\nexport const useEnterpriseDashboardData = () => useSelector(selectors.enterpriseDashboard);\nexport const usePlatformSettingsData = () => useSelector(selectors.platformSettings);\nexport const useSelectSessionModalData = () => useSelector(selectors.selectSessionModal);\nexport const useSocialShareSettings = () => useSelector(selectors.socialShareSettings);\n\n/** global-level meta-selectors **/\nexport const useHasCourses = () => useSelector(selectors.hasCourses);\nexport const useHasAvailableDashboards = () => useSelector(selectors.hasAvailableDashboards);\nexport const useCurrentCourseList = (opts) => useSelector(\n state => selectors.currentList(state, opts),\n);\nexport const useShowSelectSessionModal = () => useSelector(selectors.showSelectSessionModal);\n\n// eslint-disable-next-line\nexport const useCourseCardData = (selector) => (cardId) => useSelector(\n (state) => selector(state, cardId),\n);\n/** Course Card selectors **/\nconst { courseCard } = selectors;\nexport const useCardCertificateData = useCourseCardData(courseCard.certificate);\nexport const useCardCourseData = useCourseCardData(courseCard.course);\nexport const useCardCourseRunData = useCourseCardData(courseCard.courseRun);\nexport const useCardCreditData = useCourseCardData(courseCard.credit);\nexport const useCardEnrollmentData = useCourseCardData(courseCard.enrollment);\nexport const useCardEntitlementData = useCourseCardData(courseCard.entitlement);\nexport const useCardGradeData = useCourseCardData(courseCard.gradeData);\nexport const useCardProviderData = useCourseCardData(courseCard.courseProvider);\nexport const useCardRelatedProgramsData = useCourseCardData(courseCard.relatedPrograms);\n\nexport const useCardSocialSettingsData = (cardId) => {\n const socialShareSettings = module.useSocialShareSettings();\n const { socialShareUrl } = module.useCardCourseData(cardId);\n const defaultSettings = { isEnabled: false, shareUrl: '' };\n\n if (!socialShareSettings) {\n return { facebook: defaultSettings, twitter: defaultSettings };\n }\n const { facebook, twitter } = socialShareSettings;\n const loadSettings = (target) => ({\n isEnabled: target.isEnabled,\n shareUrl: `${socialShareUrl}?${target.utmParams}`,\n });\n return { facebook: loadSettings(facebook), twitter: loadSettings(twitter) };\n};\n\nexport const useCardExecEdTrackingParam = (cardId) => {\n const { isExecEd2UCourse } = module.useCardEnrollmentData(cardId);\n const { authOrgId } = module.useEnterpriseDashboardData(cardId);\n return isExecEd2UCourse ? `?org_id=${authOrgId}` : '';\n};\n\n/** Events **/\nexport const useUpdateSelectSessionModalCallback = (cardId) => {\n const dispatch = useDispatch();\n return () => dispatch(actions.updateSelectSessionModal(cardId));\n};\n\nexport const useTrackCourseEvent = (tracker, cardId, ...args) => {\n const { courseId } = module.useCardCourseRunData(cardId);\n return (e) => tracker(courseId, ...args)(e);\n};\n\nexport const useSetPageNumber = () => {\n const dispatch = useDispatch();\n return (value) => dispatch(actions.setPageNumber(value));\n};\n\nexport const useSetFilters = () => {\n const dispatch = useDispatch();\n return (value) => dispatch(actions.setFilters(value));\n};\n\nexport const useAddFilter = () => {\n const dispatch = useDispatch();\n return (value) => dispatch(actions.addFilter(value));\n};\n\nexport const useRemoveFilter = () => {\n const dispatch = useDispatch();\n return (value) => dispatch(actions.removeFilter(value));\n};\n\nexport const useClearFilters = () => {\n const dispatch = useDispatch();\n return (value) => dispatch(actions.clearFilters(value));\n};\n\nexport const useLoadData = () => {\n const dispatch = useDispatch();\n return ({ courses, ...globalData }) => {\n dispatch(actions.setPageNumber(1));\n dispatch(actions.loadGlobalData(globalData));\n dispatch(actions.loadCourses({ courses }));\n };\n};\n","import { useSelector, useDispatch } from 'react-redux';\n\nimport * as redux from 'data/redux';\nimport * as module from './requests';\n\nconst selectors = redux.selectors.requests;\nconst actions = redux.actions.requests;\n\nexport const useMasqueradeData = () => useSelector(selectors.masquerade);\n\nexport const statusSelector = selector => (requestName) => useSelector(selector(requestName));\nexport const useRequestIsPending = module.statusSelector(selectors.isPending);\nexport const useRequestIsFailed = module.statusSelector(selectors.isFailed);\nexport const useRequestIsCompleted = module.statusSelector(selectors.isCompleted);\nexport const useRequestIsInactive = module.statusSelector(selectors.isInactive);\nexport const useRequestError = module.statusSelector(selectors.error);\nexport const useRequestErrorCode = module.statusSelector(selectors.errorCode);\nexport const useRequestErrorStatus = module.statusSelector(selectors.errorStatus);\nexport const useRequestData = module.statusSelector(selectors.data);\n\nexport const useMakeNetworkRequest = () => {\n const dispatch = useDispatch();\n return ({\n requestKey,\n promise,\n onSuccess,\n onFailure,\n }) => {\n dispatch(actions.startRequest({ requestKey }));\n return promise.then((response) => {\n if (onSuccess) { onSuccess(response); }\n dispatch(actions.completeRequest({ requestKey, response }));\n }).catch((error) => {\n if (onFailure) { onFailure(error); }\n dispatch(actions.failRequest({ requestKey, error }));\n });\n };\n};\n\nexport const useClearRequest = () => {\n const dispatch = useDispatch();\n return (requestKey) => {\n dispatch(actions.clearRequest({ requestKey }));\n };\n};\n","import queryString from 'query-string';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\n/**\n * get(url)\n * simple wrapper providing an authenticated Http client get action\n * @param {string} url - target url\n */\nexport const get = (...args) => getAuthenticatedHttpClient().get(...args);\n/**\n * post(url, data)\n * simple wrapper providing an authenticated Http client post action\n * queryString.stringify is used to convert the object to query string with = and &\n * @param {string} url - target url\n * @param {object|string} body - post payload\n */\nexport const post = (url, body) => getAuthenticatedHttpClient().post(url, queryString.stringify(body));\n\nexport const client = getAuthenticatedHttpClient;\n\n/**\n * stringifyUrl(url, query)\n * simple wrapper around queryString.stringifyUrl that sets skip behavior\n * @param {string} url - base url string\n * @param {object} query - query parameters\n */\nexport const stringifyUrl = (url, query) => queryString.stringifyUrl(\n { url, query },\n { skipNull: true, skipEmptyString: true },\n);\n","import { StrictDict } from 'utils';\n\nexport const categories = StrictDict({\n dashboard: 'dashboard',\n upgrade: 'upgrade',\n userEngagement: 'user-engagement',\n searchButton: 'search_button',\n credit: 'credit',\n filter: 'filter',\n});\n\nexport const events = StrictDict({\n enterCourseClicked: 'enterCourseClicked',\n courseImageClicked: 'courseImageClicked',\n courseTitleClicked: 'courseTitleClicked',\n courseOptionsDropdownClicked: 'courseOptionsDropdownClicked',\n upgradeButtonClicked: 'upgradeButtonClicked',\n upgradeButtonClickedEnrollment: 'upgradeButtonClickedEnrollment',\n upgradeButtonClickedUpsell: 'upgradeButtonClickedUpsell',\n shareClicked: 'shareClicked',\n userSettingsChanged: 'userSettingsChanged',\n newSession: 'newSession',\n switchSession: 'switchSession',\n leaveSession: 'leaveSession',\n unenrollReason: 'unenrollReason',\n entitlementUnenrollReason: 'entitlementUnenrollReason',\n enterpriseDashboardModalOpened: 'enterpriseDashboardModalOpened',\n enterpriseDashboardModalCTAClicked: 'enterpriseDashboardModalCTAClicked',\n enterpriseDashboardModalClosed: 'enterpriseDashboardModalClosed',\n});\n\nconst learnerPortal = 'edx.ui.enterprise.lms.dashboard.learner_portal_modal';\n\nexport const eventNames = StrictDict({\n enterCourseClicked: 'edx.bi.dashboard.enter_course.clicked',\n courseImageClicked: 'edx.bi.dashboard.course_image.clicked',\n courseTitleClicked: 'edx.bi.dashboard.course_title.clicked',\n courseOptionsDropdownClicked: 'edx.bi.dashboard.course_options_dropdown.clicked',\n upgradeButtonClicked: 'edx.bi.dashboard.upgrade_button.clicked',\n upgradeButtonClickedEnrollment: 'edx.course.enrollment.upgrade.clicked',\n upgradeButtonClickedUpsell: 'edx.bi.ecommerce.upsell_links_clicked',\n shareClicked: 'edx.course.share_clicked',\n userSettingsChanged: 'edx.user.settings.changed',\n newSession: 'course-dashboard.new-session',\n switchSession: 'course-dashboard.switch-session',\n leaveSession: 'course-dashboard.leave-session',\n unenrollReason: 'unenrollment_reason.selected',\n entitlementUnenrollReason: 'entitlement_unenrollment_reason.selected',\n enterpriseDashboardModalOpened: `${learnerPortal}.opened`,\n enterpriseDashboardModalCTAClicked: `${learnerPortal}.dashboard_cta.clicked`,\n enterpriseDashboardModalClosed: `${learnerPortal}.closed`,\n findCoursesClicked: 'edx.bi.dashboard.find_courses_button.clicked',\n purchaseCredit: 'edx.bi.credit.clicked_purchase_credit',\n filterClicked: 'course-dashboard.filter.clicked',\n filterOptionSelected: 'course-dashboard.filter_option.selected',\n});\n\nexport const linkNames = StrictDict({\n learnerHomeNavExplore: 'learner_home_nav_explore',\n learnerHomeNavDropdownExplore: 'learner_home_nav_dropdown_explore',\n});\n\nexport const appName = 'learner-home';\n\nexport default eventNames;\n","import { StrictDict } from 'utils';\n\nexport const apiKeys = StrictDict({\n receiveEmails: 'receive_emails',\n enrollmentAction: 'enrollment_action',\n courseRunId: 'course_run_id',\n courseId: 'course_id',\n user: 'user',\n isRefund: 'is_refund',\n});\n\nexport const apiValues = StrictDict({\n on: 'on',\n unenroll: 'unenroll',\n});\n\nexport const unenrollmentAction = { [apiKeys.enrollmentAction]: apiValues.unenroll };\nexport const enableEmailsAction = { [apiKeys.receiveEmails]: apiValues.on };\n","import eventNames from 'tracking/constants';\nimport {\n client,\n get,\n post,\n stringifyUrl,\n} from './utils';\nimport {\n apiKeys,\n unenrollmentAction,\n enableEmailsAction,\n} from './constants';\nimport urls from './urls';\nimport * as module from './api';\n\n/*********************************************************************************\n * GET Actions\n *********************************************************************************/\nexport const initializeList = ({ user } = {}) => get(\n stringifyUrl(urls.getInitApiUrl(), { [apiKeys.user]: user }),\n);\n\nexport const updateEntitlementEnrollment = ({ uuid, courseId }) => post(\n urls.entitlementEnrollment(uuid),\n { [apiKeys.courseRunId]: courseId },\n);\n\nexport const deleteEntitlementEnrollment = ({ uuid, isRefundable }) => client()\n .delete(\n stringifyUrl(\n urls.entitlementEnrollment(uuid),\n { [apiKeys.isRefund]: isRefundable },\n ),\n );\n\nexport const updateEmailSettings = ({ courseId, enable }) => post(\n urls.updateEmailSettings(),\n { [apiKeys.courseId]: courseId, ...(enable && enableEmailsAction) },\n);\n\nexport const unenrollFromCourse = ({ courseId }) => post(\n urls.courseUnenroll(),\n { [apiKeys.courseId]: courseId, ...unenrollmentAction },\n);\n\nexport const logEvent = ({ eventName, data, courseId }) => post(urls.event(), {\n courserun_key: courseId,\n event_type: eventName,\n page: window.location.href,\n event: JSON.stringify(data),\n});\n\nexport const logUpgrade = ({ courseId }) => module.logEvent({\n eventName: eventNames.upgradeButtonClickedEnrollment,\n courseId,\n data: { location: 'learner-dashboard' },\n});\n\nexport const logShare = ({ courseId, site }) => module.logEvent({\n eventName: eventNames.shareClicked,\n courseId,\n data: {\n course_id: courseId,\n social_media_site: site,\n location: 'dashboard',\n },\n});\n\nexport const createCreditRequest = ({ providerId, courseId, username }) => post(\n urls.creditRequestUrl(providerId),\n { course_key: courseId, username },\n);\n\nexport default {\n initializeList,\n unenrollFromCourse,\n updateEmailSettings,\n updateEntitlementEnrollment,\n deleteEntitlementEnrollment,\n logEvent,\n logUpgrade,\n logShare,\n createCreditRequest,\n};\n","import React from 'react';\n\nimport { AppContext } from '@edx/frontend-platform/react';\n\nimport { RequestKeys } from 'data/constants/requests';\nimport { post } from 'data/services/lms/utils';\nimport api from 'data/services/lms/api';\n\nimport * as reduxHooks from 'data/redux/hooks';\nimport * as module from './api';\n\nconst { useMakeNetworkRequest } = reduxHooks;\n\nexport const useNetworkRequest = (action, args) => {\n const makeNetworkRequest = useMakeNetworkRequest();\n return (...actionsArgs) => makeNetworkRequest({\n promise: action(...actionsArgs),\n ...args,\n });\n};\n\n/**\n * initialize the app, loading ora and course metadata from the api, and loading the initial\n * submission list data.\n */\nexport const useInitializeApp = () => {\n const loadData = reduxHooks.useLoadData();\n return module.useNetworkRequest(api.initializeList, {\n requestKey: RequestKeys.initialize,\n onSuccess: ({ data }) => loadData(data),\n });\n};\n\nexport const useNewEntitlementEnrollment = (cardId) => {\n const { uuid } = reduxHooks.useCardEntitlementData(cardId);\n const onSuccess = module.useInitializeApp();\n return module.useNetworkRequest(\n (selection) => api.updateEntitlementEnrollment({ uuid, courseId: selection }),\n { onSuccess, requestKey: RequestKeys.newEntitlementEnrollment },\n );\n};\n\nexport const useSwitchEntitlementEnrollment = (cardId) => {\n const { uuid } = reduxHooks.useCardEntitlementData(cardId);\n const onSuccess = module.useInitializeApp();\n const action = (selection) => api.updateEntitlementEnrollment({ uuid, courseId: selection });\n return module.useNetworkRequest(\n action,\n { onSuccess, requestKey: RequestKeys.switchEntitlementSession },\n );\n};\n\nexport const useLeaveEntitlementSession = (cardId) => {\n const { uuid, isRefundable } = reduxHooks.useCardEntitlementData(cardId);\n const onSuccess = module.useInitializeApp();\n return module.useNetworkRequest(\n () => api.deleteEntitlementEnrollment({ uuid, isRefundable }),\n { onSuccess, requestKey: RequestKeys.leaveEntitlementSession },\n );\n};\n\nexport const useUnenrollFromCourse = (cardId) => {\n const { courseId } = reduxHooks.useCardCourseRunData(cardId);\n return module.useNetworkRequest(\n () => api.unenrollFromCourse({ courseId }),\n { requestKey: RequestKeys.unenrollFromCourse },\n );\n};\n\nexport const useMasqueradeAs = () => {\n const loadData = reduxHooks.useLoadData();\n return module.useNetworkRequest(\n (user) => api.initializeList({ user }),\n { onSuccess: ({ data }) => loadData(data), requestKey: RequestKeys.masquerade },\n );\n};\n\nexport const useClearMasquerade = () => {\n const clearRequest = reduxHooks.useClearRequest();\n const initializeApp = module.useInitializeApp();\n return () => {\n clearRequest(RequestKeys.masquerade);\n initializeApp();\n };\n};\n\nexport const useUpdateEmailSettings = (cardId) => {\n const { courseId } = reduxHooks.useCardCourseRunData(cardId);\n return module.useNetworkRequest(\n (enable) => api.updateEmailSettings({ courseId, enable }),\n { requestKey: RequestKeys.updateEmailSettings },\n );\n};\n\nexport const useSendConfirmEmail = () => {\n const { sendEmailUrl } = reduxHooks.useEmailConfirmationData();\n return () => post(sendEmailUrl);\n};\n\nexport const useCreateCreditRequest = (cardId) => {\n const { providerId } = reduxHooks.useCardCreditData(cardId);\n const { authenticatedUser: { username } } = React.useContext(AppContext);\n const { courseId } = reduxHooks.useCardCourseRunData(cardId);\n return () => api.createCreditRequest({ providerId, courseId, username });\n};\n","import React from 'react';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport dateFormatter from 'utils/dateFormatter';\n\nexport const useValueCallback = (cb, prereqs = []) => (\n React.useCallback(e => cb(e.target.value), prereqs) // eslint-disable-line\n);\n\nexport const useFormatDate = () => {\n const { formatDate } = useIntl();\n return (date) => dateFormatter(formatDate, date);\n};\n\nexport default {\n useFormatDate,\n useValueCallback,\n};\n","import * as redux from 'data/redux/hooks';\nimport * as api from './api';\nimport * as utils from './utils';\n\nexport const reduxHooks = redux;\nexport const apiHooks = api;\nexport const utilHooks = utils;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n enterpriseDialogHeader: {\n id: 'leanerDashboard.enterpriseDialogHeader',\n defaultMessage: 'You have access to the {label} dashboard',\n description: 'title for enterpise dashboard dialog',\n },\n enterpriseDialogBody: {\n id: 'leanerDashboard.enterpriseDialogBody',\n defaultMessage: 'To access the courses available to you through {label}, visit the {label} dashboard now.',\n description: 'Body text for enterpise dashboard dialog',\n },\n enterpriseDialogDismissButton: {\n id: 'leanerDashboard.enterpriseDialogDismissButton',\n defaultMessage: 'Dismiss',\n description: 'Dismiss button to cancel visiting dashboard',\n },\n enterpriseDialogConfirmButton: {\n id: 'leanerDashboard.enterpriseDialogConfirmButton',\n defaultMessage: 'Go to dashboard',\n description: 'Confirm button to go to the dashboard url',\n },\n});\n\nexport default messages;\n","/* eslint-disable import/prefer-default-export */\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { appName } from 'tracking/constants';\n\nexport const LINK_TIMEOUT = 300;\n\nexport const createEventTracker = (name, options = {}) => () => sendTrackEvent(\n name,\n { ...options, app_name: appName },\n);\n\nexport const createLinkTracker = (tracker, href) => (e) => {\n e.preventDefault();\n tracker();\n return setTimeout(() => { global.location.href = href; }, LINK_TIMEOUT);\n};\n","import api from 'data/services/lms/api';\nimport { createEventTracker, createLinkTracker } from 'data/services/segment/utils';\nimport { categories, eventNames } from '../constants';\nimport * as module from './course';\n\nexport const upsellOptions = {\n linkName: 'course_dashboard_green',\n linkType: 'button',\n pageName: 'course_dashboard',\n linkCategory: 'green_update',\n};\n\n// Utils/Helpers\n/**\n * Generate a segement event tracker for a given course event.\n * @param {string} eventName - segment event name\n * @param {string} courseId - course run identifier\n * @param {[object]} options - optional event data\n */\nexport const courseEventTracker = (eventName, courseId, options = {}) => createEventTracker(\n eventName,\n { category: categories.dashboard, label: courseId, ...options },\n);\n/**\n * Generate a hook to allow components to provide a courseId and link href and provide\n * a link tracker with defined event name and options, over a set of default optiosn.\n * @param {string} eventName - event name for the click event\n * @return {callback} - component hook returning a link tracking event callback\n */\nexport const courseLinkTracker = (eventName) => (courseId, href) => (\n createLinkTracker(module.courseEventTracker(eventName, courseId), href)\n);\n\n// Upgrade Events\n/**\n * There are currently multiple tracked api events for the upgrade event, with different targets.\n * Goal here is to split out the tracked events for easier testing.\n */\nexport const upgradeButtonClicked = (courseId) => createEventTracker(\n eventNames.upgradeButtonClicked,\n { category: categories.upgrade, label: courseId },\n);\nexport const upgradeButtonClickedUpsell = (courseId) => createEventTracker(\n eventNames.upgradeButtonClickedUpsell,\n { ...upsellOptions, courseId },\n);\n\n// Non-Link events\nexport const courseOptionsDropdownClicked = (courseId) => (\n module.courseEventTracker(eventNames.courseOptionsDropdownClicked, courseId)\n);\n\n// Link events (track and then change page location)\nexport const courseImageClicked = (...args) => (\n module.courseLinkTracker(eventNames.courseImageClicked)(...args));\nexport const courseTitleClicked = (...args) => (\n module.courseLinkTracker(eventNames.courseTitleClicked)(...args));\nexport const enterCourseClicked = (...args) => (\n module.courseLinkTracker(eventNames.enterCourseClicked)(...args));\nexport const upgradeClicked = (courseId, href) => createLinkTracker(\n () => {\n module.upgradeButtonClicked(courseId)();\n module.upgradeButtonClickedUpsell(courseId)();\n api.logUpgrade({ courseId });\n },\n href,\n);\n\nexport default {\n courseImageClicked,\n courseOptionsDropdownClicked,\n courseTitleClicked,\n enterCourseClicked,\n upgradeClicked,\n};\n","import { createEventTracker, createLinkTracker } from 'data/services/segment/utils';\nimport { creditPurchaseUrl } from 'data/services/lms/urls';\nimport { categories, eventNames } from '../constants';\n\n/**\n * Create event tracker for purchase credit event\n * @param {string} fromCourseRun - course run identifier for leaving course\n * @return {callback} - callback that triggers the event tracker\n */\nexport const purchase = (courseId) => createLinkTracker(\n createEventTracker(eventNames.purchaseCredit, {\n label: courseId,\n category: categories.credit,\n }),\n creditPurchaseUrl(courseId),\n);\n\nexport default {\n purchase,\n};\n","import { createEventTracker } from 'data/services/segment/utils';\nimport { categories, eventNames } from '../constants';\n\nexport const engagementOptions = {\n category: categories.userEngagement,\n displayName: 'v1',\n};\n\n/**\n * Creates callback which sends segment event for unenroll with reason event\n * @param {string} courseId - course run identifier\n * @param {string} reason - unenroll reason\n * @param {bool} isEntitlement - is the course an entitlement course?\n * @return {callback} - callback that will send the appropriate segment message.\n */\nexport const unenrollReason = (courseId, reason, isEntitlement) => createEventTracker(\n isEntitlement ? eventNames.entitlementUnenrollReason : eventNames.unenrollReason,\n { reason, course_id: courseId, ...engagementOptions },\n);\n\nexport default {\n unenrollReason,\n};\n","import { createLinkTracker, createEventTracker } from 'data/services/segment/utils';\nimport { categories, eventNames } from '../constants';\n\nexport const findCoursesClicked = (href, args = {}) => createLinkTracker(\n createEventTracker(eventNames.findCoursesClicked, {\n pageName: 'learner_home',\n linkType: 'button',\n linkCategory: categories.searchButton,\n ...args,\n }),\n href,\n);\n\nexport default {\n findCoursesClicked,\n};\n","import course from './trackers/course';\nimport credit from './trackers/credit';\nimport engagement from './trackers/engagement';\nimport enterpriseDashboard from './trackers/enterpriseDashboard';\nimport entitlements from './trackers/entitlements';\nimport socialShare from './trackers/socialShare';\nimport findCourses from './trackers/findCourses';\nimport filter from './trackers/filter';\n\nexport default {\n course,\n credit,\n engagement,\n enterpriseDashboard,\n entitlements,\n socialShare,\n findCourses,\n filter,\n};\n","import { createEventTracker, createLinkTracker } from 'data/services/segment/utils';\nimport { eventNames } from '../constants';\n\n/** Enterprise Dashboard events**/\n/**\n * Creates tracking callback for Enterprise Dashboard Modal open event\n * @param {string} enterpriseUUID - enterprise identifier\n * @return {func} - Callback that tracks the event when fired.\n */\nexport const modalOpened = (enterpriseUUID) => () => createEventTracker(\n eventNames.enterpriseDashboardModalOpened,\n { enterpriseUUID },\n);\n\n/**\n * Creates tracking callback for Enterprise Dashboard Modal Call-to-action click-event\n * @param {string} enterpriseUUID - enterprise identifier\n * @param {string} href - destination url\n * @return {func} - Callback that tracks the event when fired and then loads the passed href.\n */\nexport const modalCTAClicked = (enterpriseUUID, href) => createLinkTracker(\n createEventTracker(\n eventNames.enterpriseDashboardModalCTAClicked,\n { enterpriseUUID },\n ),\n href,\n);\n\n/**\n * Creates tracking callback for Enterprise Dashboard Modal close event\n * @param {string} enterpriseUUID - enterprise identifier\n * @param {string} source - close event soruce (\"Cancel button\" vs \"Escape\")\n * @return {func} - Callback that tracks the event when fired.\n */\nexport const modalClosed = (enterpriseUUID, source) => createEventTracker(\n eventNames.enterpriseDashboardModalClosed,\n { enterpriseUUID, source },\n);\n\nexport default {\n modalOpened,\n modalCTAClicked,\n modalClosed,\n};\n","import { createEventTracker } from 'data/services/segment/utils';\nimport { eventNames } from '../constants';\n\n/**\n * Create event tracker for leave entitlement session event\n * @param {string} fromCourseRun - course run identifier for leaving course\n * @return {callback} - callback that triggers the event tracker\n */\nexport const leaveSession = (fromCourseRun) => (\n createEventTracker(eventNames.leaveSession, { fromCourseRun, toCourseRun: null })\n);\n/**\n * Create event tracker for new entitlement session event\n * @param {string} toCourseRun - course run identifier for new course\n * @return {callback} - callback that triggers the event tracker\n */\nexport const newSession = (toCourseRun) => (\n createEventTracker(eventNames.newSession, { fromCourseRun: null, toCourseRun })\n);\n/**\n * Create event tracker for switch entitlement session event\n * @param {string} fromCourseRun - course run identifier for leaving course\n * @param {string} toCourseRun - course run identifier for new course\n * @return {callback} - callback that triggers the event tracker\n */\nexport const switchSession = (fromCourseRun, toCourseRun) => (\n createEventTracker(eventNames.switchSession, { fromCourseRun, toCourseRun })\n);\n\nexport default {\n leaveSession,\n newSession,\n switchSession,\n};\n","import api from 'data/services/lms/api';\n\n/**\n * Track Social Share event click.\n * @param {string} courseId - course run identifier\n * @param {string} site - sharing destination ('facebook', 'twitter')\n * @return {func} - Callback that tracks the event when fired.\n */\nexport const shareClicked = (courseId, site) => () => api.logShare({ courseId, site });\n\nexport default shareClicked;\n","import { createEventTracker } from 'data/services/segment/utils';\nimport { categories, eventNames } from '../constants';\n\nexport const filterClicked = () => createEventTracker(\n eventNames.filterClicked,\n { category: categories.filter },\n)();\n\nexport const filterOptionSelected = (filters = []) => createEventTracker(\n eventNames.filterOptionSelected,\n {\n category: categories.filter,\n // make sure to clone before sorting\n filters: [...filters].sort(),\n },\n)();\n\nexport default {\n filterClicked,\n filterOptionSelected,\n};\n","import React from 'react';\n\nimport { StrictDict } from 'utils';\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n showModal: (val) => React.useState(val), // eslint-disable-line\n});\n\nconst { modalOpened, modalClosed, modalCTAClicked } = track.enterpriseDashboard;\n\nexport const useEnterpriseDashboardHook = () => {\n const [showModal, setShowModal] = module.state.showModal(true);\n const dashboard = reduxHooks.useEnterpriseDashboardData();\n\n const trackOpened = modalOpened(dashboard.enterpriseUUID);\n const trackClose = modalClosed(dashboard.enterpriseUUID, 'Cancel button');\n const trackEscape = modalClosed(dashboard.enterpriseUUID, 'Escape');\n\n const handleCTAClick = modalCTAClicked(dashboard.enterpriseUUID, dashboard.url);\n const handleClose = () => {\n trackClose();\n setShowModal(false);\n };\n const handleEscape = () => {\n trackEscape();\n setShowModal(false);\n };\n\n React.useEffect(() => {\n if (dashboard && dashboard.label) {\n trackOpened();\n }\n }, []); // eslint-disable-line\n\n return {\n showModal,\n handleCTAClick,\n handleClose,\n handleEscape,\n dashboard,\n };\n};\n\nexport default useEnterpriseDashboardHook;\n","import React from 'react';\n// import PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ModalDialog, ActionRow, Button,\n} from '@openedx/paragon';\n\nimport messages from './messages';\nimport useEnterpriseDashboardHook from './hooks';\n\nexport const EnterpriseDashboardModal = () => {\n const { formatMessage } = useIntl();\n const {\n showModal,\n handleClose,\n handleCTAClick,\n handleEscape,\n dashboard,\n } = useEnterpriseDashboardHook();\n if (!dashboard || !dashboard.label) {\n return null;\n }\n return (\n \n \n

\n {formatMessage(messages.enterpriseDialogHeader, {\n label: dashboard.label,\n })}\n

\n

\n {formatMessage(messages.enterpriseDialogBody, {\n label: dashboard.label,\n })}\n

\n \n \n \n \n \n \n );\n};\n\nEnterpriseDashboardModal.propTypes = {};\n\nexport default EnterpriseDashboardModal;\n","/* eslint-disable import/prefer-default-export */\nexport const LEAVE_OPTION = 'leave';\n","/* eslint-disable quotes */\nimport { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n changeOrLeaveHeader: {\n id: 'learner-dash.selectSession.changeOrLeaveHeader',\n description: 'Header for session that allow leave option',\n defaultMessage: 'Change or leave session?',\n },\n selectSessionHeader: {\n id: 'learner-dash.selectSession.selectSessionHeader',\n description: 'Header for unfulfilled entitlement',\n defaultMessage: 'Select a session',\n },\n changeOrLeaveHint: {\n id: 'learner-dash.selectSession.changeOrLeaveHint',\n description: 'Hint for session that allow leave option',\n defaultMessage: 'When you change to a different session any course progress or grades from your current session will be lost.',\n },\n selectSessionHint: {\n id: 'learner-dash.selectSession.selectSessionHint',\n description: 'Hint for session that does not allow leave option',\n defaultMessage: 'Remember, if you change your mind you have 2 weeks to unenroll and select a different session.',\n },\n leaveSessionOption: {\n id: 'learner-dash.selectSession.leaveSessionOption',\n description: 'Radio option for leave session',\n defaultMessage: 'Leave session',\n },\n nevermind: {\n id: 'learner-dash.selectSession.nevermind',\n description: 'Cancel action for select session modal',\n defaultMessage: 'Never mind',\n },\n confirmSession: {\n id: 'learner-dash.selectSession.confirmSession',\n description: 'Confirm action for select session modal',\n defaultMessage: 'Confirm Session',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { StrictDict } from 'utils';\n\nimport track from 'tracking';\n\nimport { reduxHooks, apiHooks } from 'hooks';\n\nimport { LEAVE_OPTION } from './constants';\nimport messages from './messages';\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n selectedSession: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useSelectSessionModalData = () => {\n const { formatMessage } = useIntl();\n\n const selectedCardId = reduxHooks.useSelectSessionModalData().cardId;\n const {\n availableSessions,\n isFulfilled,\n } = reduxHooks.useCardEntitlementData(selectedCardId);\n const { title: courseTitle } = reduxHooks.useCardCourseData(selectedCardId);\n const { courseId } = reduxHooks.useCardCourseRunData(selectedCardId) || {};\n const { isEnrolled } = reduxHooks.useCardEnrollmentData(selectedCardId);\n const leaveEntitlementSession = apiHooks.useLeaveEntitlementSession(selectedCardId);\n const switchEntitlementEnrollment = apiHooks.useSwitchEntitlementEnrollment(selectedCardId);\n const newEntitlementEnrollment = apiHooks.useNewEntitlementEnrollment(selectedCardId);\n\n const [selectedSession, setSelectedSession] = module.state.selectedSession(courseId || null);\n\n let header;\n let hint;\n if (isFulfilled) {\n header = formatMessage(messages.changeOrLeaveHeader);\n hint = formatMessage(messages.changeOrLeaveHint);\n } else {\n header = formatMessage(messages.selectSessionHeader, { courseTitle });\n hint = formatMessage(messages.selectSessionHint);\n }\n const closeSessionModal = reduxHooks.useUpdateSelectSessionModalCallback(null);\n\n const trackNewSession = track.entitlements.newSession(selectedSession);\n const trackSwitchSession = track.entitlements.switchSession(selectedCardId, selectedSession);\n const trackLeaveSession = track.entitlements.leaveSession(selectedCardId);\n\n const handleSelection = ({ target: { value } }) => setSelectedSession(value);\n const handleSubmit = () => {\n if (selectedSession === LEAVE_OPTION) {\n trackLeaveSession();\n leaveEntitlementSession();\n } else if (isEnrolled) {\n trackSwitchSession();\n switchEntitlementEnrollment(selectedSession);\n } else {\n trackNewSession();\n newEntitlementEnrollment(selectedSession);\n }\n closeSessionModal();\n };\n\n return {\n showModal: selectedCardId != null,\n closeSessionModal,\n showLeaveOption: isFulfilled,\n availableSessions,\n hint,\n header,\n selectedSession,\n handleSelection,\n handleSubmit,\n };\n};\n\nexport default useSelectSessionModalData;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n Form,\n ModalDialog,\n} from '@openedx/paragon';\n\nimport { utilHooks } from 'hooks';\nimport { nullMethod, dateFormatter } from 'utils';\n\nimport useSelectSessionModalData from './hooks';\nimport { LEAVE_OPTION } from './constants';\nimport messages from './messages';\n\nexport const SelectSessionModal = () => {\n const {\n availableSessions,\n showModal,\n closeSessionModal,\n showLeaveOption,\n handleSelection,\n handleSubmit,\n header,\n hint,\n selectedSession,\n } = useSelectSessionModalData();\n\n const formatDate = utilHooks.useFormatDate();\n const { formatMessage } = useIntl();\n\n return (\n \n

{header}

\n \n {hint}\n \n {availableSessions?.map((session) => (\n \n {dateFormatter(formatDate, session.startDate)} - {dateFormatter(formatDate, session.endDate)}\n \n ))}\n {showLeaveOption && (\n \n {formatMessage(messages.leaveSessionOption)}\n \n )}\n \n \n \n \n \n \n \n );\n};\n\nexport default SelectSessionModal;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n courseStatus: {\n id: 'learner-dash.courseListFilters.courseStatus',\n description: 'course status filter form heading',\n defaultMessage: 'Course Status',\n },\n inProgress: {\n id: 'learner-dash.courseListFilters.inProgress',\n description: 'in-progress filter checkbox label for course list filters',\n defaultMessage: 'In-Progress',\n },\n notStarted: {\n id: 'learner-dash.courseListFilters.notStarted',\n description: 'Not-Started filter checkbox label for course list filters',\n defaultMessage: 'Not Started',\n },\n done: {\n id: 'learner-dash.courseListFilters.done',\n description: 'done filter checkbox label for course list filters',\n defaultMessage: 'Done',\n },\n notEnrolled: {\n id: 'learner-dash.courseListFilters.notEnrolled',\n description: 'not-enrolled filter checkbox label for course list filters',\n defaultMessage: 'Not Enrolled',\n },\n upgraded: {\n id: 'learner-dash.courseListFilters.upgraded',\n description: 'upgraded filter checkbox label for course list filters',\n defaultMessage: 'Upgraded',\n },\n clearAll: {\n id: 'learner-dash.courseListFilters.clearAll',\n description: 'clear all filters button text',\n defaultMessage: 'Clear all',\n },\n sort: {\n id: 'learner-dash.courseListFilters.sort',\n description: 'Sort radio form heading',\n defaultMessage: 'Sort',\n },\n sortLastEnrolled: {\n id: 'learner-dash.courseListFilters.sortLastEnrolled',\n description: 'Last enrolled sort option text',\n defaultMessage: 'Last enrolled',\n },\n sortTitle: {\n id: 'learner-dash.courseListFilters.sortTitle',\n description: 'Title sort option text',\n defaultMessage: 'Title (A-Z)',\n },\n refine: {\n id: 'learner-dash.courseListFilters.refine',\n description: 'Filter button container text',\n defaultMessage: 'Refine',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { Form } from '@openedx/paragon';\n\nimport messages from '../messages';\n\nexport const Checkbox = ({ filterKey }) => {\n const { formatMessage } = useIntl();\n return (\n \n {formatMessage(messages[filterKey])}\n \n );\n};\nCheckbox.propTypes = {\n filterKey: PropTypes.string.isRequired,\n};\n\nexport default Checkbox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { FilterKeys } from 'data/constants/app';\n\nimport { Form } from '@openedx/paragon';\n\nimport Checkbox from './Checkbox';\nimport messages from '../messages';\n\nexport const filterOrder = [\n FilterKeys.inProgress,\n FilterKeys.notStarted,\n FilterKeys.done,\n FilterKeys.notEnrolled,\n FilterKeys.upgraded,\n];\n\nexport const FilterForm = ({\n filters,\n handleFilterChange,\n}) => {\n const { formatMessage } = useIntl();\n return (\n \n
{formatMessage(messages.courseStatus)}
\n \n {filterOrder.map(filterKey => (\n \n ))}\n \n
\n );\n};\nFilterForm.propTypes = {\n filters: PropTypes.arrayOf(PropTypes.string).isRequired,\n handleFilterChange: PropTypes.func.isRequired,\n};\n\nexport default FilterForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { SortKeys } from 'data/constants/app';\n\nimport { Form } from '@openedx/paragon';\n\nimport messages from '../messages';\n\nexport const SortForm = ({\n handleSortChange,\n sortBy,\n}) => {\n const { formatMessage } = useIntl();\n return (\n <>\n
{formatMessage(messages.sort)}
\n \n \n {formatMessage(messages.sortLastEnrolled)}\n \n \n {formatMessage(messages.sortTitle)}\n \n \n \n );\n};\nSortForm.propTypes = {\n handleSortChange: PropTypes.func.isRequired,\n sortBy: PropTypes.string.isRequired,\n};\n\nexport default SortForm;\n","import React from 'react';\nimport { useToggle } from '@openedx/paragon';\n\nimport { StrictDict } from 'utils';\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n target: (val) => React.useState(val), // eslint-disable-line\n});\n\n/**\n * Sets up a toggle for the modal as well as helper functions for handling changes to the form controls.\n *\n * @param {array} filters Currently active course filters\n * @param {function} setSortBy Set function for sorting the course list\n * @returns {object} data and functions for managing the CourseFilterControls component\n */\nexport const useCourseFilterControlsData = ({\n filters,\n setSortBy,\n}) => {\n const [isOpen, toggleOpen, toggleClose] = useToggle(false);\n const [target, setTarget] = module.state.target(null);\n\n const addFilter = reduxHooks.useAddFilter();\n const removeFilter = reduxHooks.useRemoveFilter();\n\n const handleFilterChange = ({ target: { checked, value } }) => {\n const update = checked ? addFilter : removeFilter;\n update(value);\n };\n const handleSortChange = ({ target: { value } }) => {\n setSortBy(value);\n };\n\n const open = () => {\n track.filter.filterClicked();\n toggleOpen();\n };\n\n const close = () => {\n track.filter.filterOptionSelected(filters);\n toggleClose();\n };\n\n return {\n isOpen,\n open,\n close,\n target,\n setTarget,\n handleFilterChange,\n handleSortChange,\n };\n};\n\nexport default useCourseFilterControlsData;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport {\n Button,\n Form,\n Icon,\n ModalPopup,\n Sheet,\n breakpoints,\n useWindowSize,\n ModalCloseButton,\n} from '@openedx/paragon';\nimport { Close, Tune } from '@openedx/paragon/icons';\n\nimport { reduxHooks } from 'hooks';\n\nimport FilterForm from './components/FilterForm';\nimport SortForm from './components/SortForm';\nimport useCourseFilterControlsData from './hooks';\nimport messages from './messages';\n\nimport './index.scss';\n\nexport const CourseFilterControls = ({\n sortBy,\n setSortBy,\n filters,\n}) => {\n const { formatMessage } = useIntl();\n const hasCourses = reduxHooks.useHasCourses();\n const {\n isOpen,\n open,\n close,\n target,\n setTarget,\n handleFilterChange,\n handleSortChange,\n } = useCourseFilterControlsData({\n filters,\n setSortBy,\n });\n const { width } = useWindowSize();\n const isMobile = width < breakpoints.small.minWidth;\n\n return (\n
\n \n {formatMessage(messages.refine)}\n \n
\n {isMobile\n ? (\n \n
\n {formatMessage(messages.refine)}\n
\n
\n
\n \n
\n
\n \n
\n
\n \n \n \n
\n \n ) : (\n \n \n
\n \n
\n
\n
\n \n
\n
\n \n )}\n \n \n );\n};\nCourseFilterControls.propTypes = {\n sortBy: PropTypes.string.isRequired,\n setSortBy: PropTypes.func.isRequired,\n filters: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nexport default CourseFilterControls;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { Button, Chip } from '@openedx/paragon';\nimport { CloseSmall } from '@openedx/paragon/icons';\nimport { reduxHooks } from 'hooks';\n\nimport messages from './messages';\nimport './index.scss';\n\nexport const ActiveCourseFilters = ({\n filters,\n handleRemoveFilter,\n}) => {\n const { formatMessage } = useIntl();\n const clearFilters = reduxHooks.useClearFilters();\n return (\n
\n {filters.map(filter => (\n \n {formatMessage(messages[filter])}\n \n ))}\n \n
\n );\n};\nActiveCourseFilters.propTypes = {\n filters: PropTypes.arrayOf(PropTypes.string).isRequired,\n handleRemoveFilter: PropTypes.func.isRequired,\n};\n\nexport default ActiveCourseFilters;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Alert } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\n\nexport const Banner = ({\n children, variant, icon, className,\n}) => (\n \n {children}\n \n);\nBanner.defaultProps = {\n icon: Info,\n variant: 'info',\n className: 'mb-0',\n};\nBanner.propTypes = {\n variant: PropTypes.string,\n icon: PropTypes.func,\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n};\n\nexport default Banner;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n auditAccessExpired: {\n id: 'learner-dash.courseCard.banners.auditAccessExpired',\n description: 'Audit access expiration banner message',\n defaultMessage: 'Your audit access to this course has expired.',\n },\n upgradeToAccess: {\n id: 'learner-dash.courseCard.banners.upgradeToAccess',\n description: 'Upgrade prompt for audit-expired learners that can still upgrade',\n defaultMessage: 'Upgrade now to access your course again.',\n },\n findAnotherCourse: {\n id: 'learner-dash.courseCard.banners.findAnotherCourse',\n description: 'Action prompt taking learners to course exploration',\n defaultMessage: 'Find another course',\n },\n upgradeDeadlinePassed: {\n id: 'learner-dash.courseCard.banners.upgradeDeadlinePassed',\n description: 'Audit upgrade deadline passed banner message',\n defaultMessage: 'Your upgrade deadline for this course has passed. To upgrade, enroll in a session that is farther in the future.',\n },\n exploreCourseDetails: {\n id: 'learner-dash.courseCard.banners.exploreCourseDetails',\n description: 'Action prompt taking learners to course details page',\n defaultMessage: 'Explore course details.',\n },\n certRestricted: {\n id: 'learner-dash.courseCard.banners.certificateRestricted',\n description: 'Restricted certificate warning message',\n defaultMessage: 'Your Certificate of Achievement is being held pending confirmation that the issuance of your Certificate is in compliance with strict U.S. embargoes on Iran, Cuba, Syria, and Sudan. If you think our system has mistakenly identified you as being connected with one of those countries, please let us know by contacting {supportEmail}.',\n },\n certRestrictedNoEmail: {\n id: 'learner-dash.courseCard.banners.certificateRestrictedNoEmail',\n description: 'Restricted certificate warning message',\n defaultMessage: 'Your Certificate of Achievement is being held pending confirmation that the issuance of your Certificate is in compliance with strict U.S. embargoes on Iran, Cuba, Syria, and Sudan. If you think our system has mistakenly identified you as being connected with one of those countries, please let us know.',\n },\n certRefundContactBilling: {\n id: 'learner-dash.courseCard.banners.certificateRefundContactBilling',\n description: 'Message to learners to contact billing for certificate refunds',\n defaultMessage: 'If you would like a refund on your Certificate of Achievement, please contact our billing address {billingEmail}',\n },\n certRefundContactBillingNoEmail: {\n id: 'learner-dash.courseCard.banners.certificateRefundContactBillingNoEmail',\n description: 'Message to learners to contact billing for certificate refunds',\n defaultMessage: 'If you would like a refund on your Certificate of Achievement, please contact us.',\n },\n passingGrade: {\n id: 'learner-dash.courseCard.banners.passingGrade',\n description: 'Message to learners with minimum passing grade for the course',\n defaultMessage: 'Grade required to pass the course: {minPassingGrade}\\u200f%',\n },\n notEligibleForCert: {\n id: 'learner-dash.courseCard.banners.notEligibleForCert',\n description: 'Certificate inelligibility message',\n defaultMessage: 'You are not eligible for a certificate.',\n },\n viewGrades: {\n id: 'learner-dash.courseCard.banners.viewGrades',\n description: 'Gradses link text',\n defaultMessage: 'View grades.',\n },\n certReady: {\n id: 'learner-dash.courseCard.banners.certReady',\n description: 'Certificate ready message',\n defaultMessage: 'Congratulations. Your certificate is ready.',\n },\n viewCertificate: {\n id: 'learner-dash.courseCard.banners.viewCertificate',\n description: 'Certificate link text',\n defaultMessage: 'View Certificate.',\n },\n certMinGrade: {\n id: 'learner-dash.courseCard.banners.certMinGrade',\n description: 'Passing grade requirement message',\n defaultMessage: 'Grade required for a certificate: {minPassingGrade}\\u200f%',\n },\n downloadCertificate: {\n id: 'learner-dash.courseCard.banners.downloadCertificate',\n description: 'Certificate download link text',\n defaultMessage: 'Download Certificate.',\n },\n gradeAndCertReadyAfter: {\n id: 'learner-dash.courseCard.banners.gradseAndCertReadyAfter',\n description: 'Grade and certificate availability date message',\n defaultMessage: 'Your grade and certificate will be ready after {availableDate}.',\n },\n entitlementUnavailable: {\n id: 'learner-dash.courseCard.banners.entitlementUnavailable',\n description: 'Entitlement course message when no sessions are available',\n defaultMessage: 'There are no sessions available at the moment. The course team will create new sessions soon. If no sessions appear, please contact {emailLink} for information.',\n },\n entitlementExpiringSoon: {\n id: 'learner-dash.courseCard.banners.entitlementExpiringSoon',\n description: 'Entitlement course message when the entitlement is expiring soon.',\n defaultMessage: 'You must {selectSessionButton} by {changeDeadline} to access the course.',\n },\n entitlementExpired: {\n id: 'learner-dash.courseCard.banners.entitlementExpired',\n description: 'Entitlement course message when the entitlement is expired.',\n defaultMessage: 'You can no longer change sessions.',\n },\n selectSession: {\n id: 'learner-dash.courseCard.banners.selectSession',\n description: 'Entitlement session selection link text',\n defaultMessage: 'select a session',\n },\n prerequisitesNotMet: {\n id: 'learner-dash.courseCard.banners.prerequisitesNotMet',\n description: 'Message to learners with unmet prerequisites',\n defaultMessage: 'You can\\'t access this course just yet because you have not met the pre-requisites.',\n },\n courseHasNotStarted: {\n id: 'learner-dash.courseCard.banners.courseHasNotStarted',\n description: 'Course has not started message',\n defaultMessage: 'You can\\'t access this course just yet because the course hasn\\'t started yet. The course will start on {startDate}.',\n },\n});\n\nexport default messages;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Hyperlink } from '@openedx/paragon';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { utilHooks, reduxHooks } from 'hooks';\nimport Banner from 'components/Banner';\nimport messages from './messages';\n\nexport const CourseBanner = ({ cardId }) => {\n const {\n isVerified,\n isAuditAccessExpired,\n canUpgrade,\n coursewareAccess = {},\n } = reduxHooks.useCardEnrollmentData(cardId);\n const courseRun = reduxHooks.useCardCourseRunData(cardId);\n const { formatMessage } = useIntl();\n const formatDate = utilHooks.useFormatDate();\n\n const { hasUnmetPrerequisites, isStaff, isTooEarly } = coursewareAccess;\n\n if (isVerified) { return null; }\n\n return (\n <>\n {isAuditAccessExpired\n && (canUpgrade ? (\n \n {formatMessage(messages.auditAccessExpired)}\n {' '}\n {formatMessage(messages.upgradeToAccess)}\n \n ) : (\n \n {formatMessage(messages.auditAccessExpired)}\n {' '}\n \n {formatMessage(messages.findAnotherCourse)}\n \n \n ))}\n\n {courseRun.isActive && !canUpgrade && (\n \n {formatMessage(messages.upgradeDeadlinePassed)}\n {' '}\n \n {formatMessage(messages.exploreCourseDetails)}\n \n \n )}\n\n {(!isStaff && isTooEarly && courseRun.startDate) && (\n \n {formatMessage(messages.courseHasNotStarted, {\n startDate: formatDate(courseRun.startDate),\n })}\n \n )}\n {(!isStaff && hasUnmetPrerequisites) && (\n {formatMessage(messages.prerequisitesNotMet)}\n )}\n \n );\n};\nCourseBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseBanner;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MailtoLink, Hyperlink } from '@openedx/paragon';\nimport { CheckCircle } from '@openedx/paragon/icons';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { utilHooks, reduxHooks } from 'hooks';\nimport Banner from 'components/Banner';\n\nimport messages from './messages';\n\nconst { useFormatDate } = utilHooks;\n\nexport const CertificateBanner = ({ cardId }) => {\n const certificate = reduxHooks.useCardCertificateData(cardId);\n const {\n isAudit,\n isVerified,\n } = reduxHooks.useCardEnrollmentData(cardId);\n const { isPassing } = reduxHooks.useCardGradeData(cardId);\n const { isArchived } = reduxHooks.useCardCourseRunData(cardId);\n const { minPassingGrade, progressUrl } = reduxHooks.useCardCourseRunData(cardId);\n const { supportEmail, billingEmail } = reduxHooks.usePlatformSettingsData();\n const { formatMessage } = useIntl();\n const formatDate = useFormatDate();\n\n const emailLink = address => {address};\n\n if (certificate.isRestricted) {\n return (\n \n { supportEmail ? formatMessage(messages.certRestricted, { supportEmail: emailLink(supportEmail) }) : formatMessage(messages.certRestrictedNoEmail)}\n {isVerified && ' '}\n {isVerified && (billingEmail ? formatMessage(messages.certRefundContactBilling, { billingEmail: emailLink(billingEmail) }) : formatMessage(messages.certRefundContactBillingNoEmail))}\n \n );\n }\n if (certificate.isDownloadable) {\n return (\n \n {formatMessage(messages.certReady)}\n {certificate.certPreviewUrl && (\n <>\n {' '}\n \n {formatMessage(messages.viewCertificate)}\n \n \n )}\n \n );\n }\n if (!isPassing) {\n if (isAudit) {\n return (\n \n {formatMessage(messages.passingGrade, { minPassingGrade })}\n \n );\n }\n if (isArchived) {\n return (\n \n {formatMessage(messages.notEligibleForCert)}\n {' '}\n {formatMessage(messages.viewGrades)}\n \n );\n }\n return (\n \n {formatMessage(messages.certMinGrade, { minPassingGrade })}\n \n );\n }\n if (certificate.isEarnedButUnavailable) {\n return (\n \n {formatMessage(\n messages.gradeAndCertReadyAfter,\n { availableDate: formatDate(certificate.availableDate) },\n )}\n \n );\n }\n\n return null;\n};\nCertificateBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CertificateBanner;\n","import React from 'react';\n\nexport const useCreditRequestFormData = (requestData) => {\n const ref = React.useRef(null);\n React.useEffect(() => {\n if (requestData !== null) {\n ref.current.click();\n }\n }, [requestData]);\n return { ref };\n};\n\nexport default useCreditRequestFormData;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button, Form, FormControl } from '@openedx/paragon';\n\nimport useCreditRequestFormData from './hooks';\n\nexport const CreditRequestForm = ({ requestData }) => {\n const { ref } = useCreditRequestFormData(requestData);\n if (requestData === null) {\n return null;\n }\n const { parameters, url } = requestData;\n return (\n \n {Object.keys(parameters).map((key) => (\n \n ))}\n \n \n )}\n \n \n);\nCreditContent.defaultProps = {\n action: null,\n requestData: null,\n};\nCreditContent.propTypes = {\n action: PropTypes.shape({\n href: PropTypes.string,\n onClick: PropTypes.func,\n message: PropTypes.string,\n disabled: PropTypes.bool,\n }),\n message: PropTypes.node.isRequired,\n requestData: PropTypes.shape({\n url: PropTypes.string,\n parameters: PropTypes.objectOf(PropTypes.string),\n }),\n};\n\nexport default CreditContent;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { reduxHooks } from 'hooks';\nimport { Hyperlink } from '@openedx/paragon';\n\nexport const ProviderLink = ({ cardId }) => {\n const credit = reduxHooks.useCardCreditData(cardId);\n return (\n \n {credit.providerName}\n \n );\n};\nProviderLink.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default ProviderLink;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n approved: {\n id: 'learner-dash.courseCard.banners.credit.approved',\n description: '',\n defaultMessage: '{congratulations} {providerName} has approved your request for course credit. To see your course credit, visit the {linkToProviderSite} website.',\n },\n congratulations: {\n id: 'learner-dash.courseCard.banners.credit.congratulations',\n description: '',\n defaultMessage: 'Congratulations!',\n },\n eligible: {\n id: 'learner-dash.courseCard.banners.credit.eligible',\n description: '',\n defaultMessage: 'You have completed this course and are eligible to purchase course credit. Select {getCredit} to get started.',\n },\n eligibleFromProvider: {\n id: 'learner-dash.courseCard.banners.credit.eligibleFromProvider',\n description: '',\n defaultMessage: 'You are now eligible for credit from {providerName}. Congratulations!',\n },\n getCredit: {\n id: 'learner-dash.courseCard.banners.credit.getCredit',\n description: '',\n defaultMessage: 'Get Credit',\n },\n mustRequest: {\n id: 'learner-dash.courseCard.banners.credit.mustRequest',\n description: '',\n defaultMessage: 'Thank you for your payment. To receive course credit, you must request credit at the {linkToProviderSite} website. Select {requestCredit} to get started',\n },\n received: {\n id: 'learner-dash.courseCard.banners.credit.received',\n description: '',\n defaultMessage: '{providerName} has received your course credit request. We will update you when credit processing is complete.',\n },\n rejected: {\n id: 'learner-dash.courseCard.banners.credit.rejected',\n description: '',\n defaultMessage: '{providerName} did not approve your request for course credit. For more information, contact {linkToProviderSite} directly.',\n },\n requestCredit: {\n id: 'learner-dash.courseCard.banners.credit.requestCredit',\n description: '',\n defaultMessage: 'Request Credit',\n },\n viewCredit: {\n id: 'learner-dash.courseCard.banners.credit.viewCredit',\n description: '',\n defaultMessage: 'View Credit',\n },\n viewDetails: {\n id: 'learner-dash.courseCard.banners.credit.viewDetails',\n description: '',\n defaultMessage: 'View Details',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport CreditContent from './components/CreditContent';\nimport ProviderLink from './components/ProviderLink';\n\nimport messages from './messages';\n\nexport const ApprovedContent = ({ cardId }) => {\n const { providerStatusUrl: href, providerName } = reduxHooks.useCardCreditData(cardId);\n const { isMasquerading } = reduxHooks.useMasqueradeData();\n const { formatMessage } = useIntl();\n return (\n {formatMessage(messages.congratulations)},\n linkToProviderSite: ,\n providerName,\n },\n )}\n />\n );\n};\nApprovedContent.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default ApprovedContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport track from 'tracking';\n\nimport CreditContent from './components/CreditContent';\nimport messages from './messages';\n\nexport const EligibleContent = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { providerName } = reduxHooks.useCardCreditData(cardId);\n const { courseId } = reduxHooks.useCardCourseRunData(cardId);\n\n const onClick = track.credit.purchase(courseId);\n const getCredit = formatMessage(messages.getCredit);\n const message = providerName\n ? formatMessage(messages.eligibleFromProvider, { providerName })\n : formatMessage(messages.eligible, { getCredit: ({getCredit}) });\n\n return (\n \n );\n};\nEligibleContent.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default EligibleContent;\n","import React from 'react';\n\nimport { StrictDict } from 'utils';\nimport { apiHooks } from 'hooks';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n creditRequestData: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useCreditRequestData = (cardId) => {\n const [requestData, setRequestData] = module.state.creditRequestData(null);\n const createCreditApiRequest = apiHooks.useCreateCreditRequest(cardId);\n const createCreditRequest = (e) => {\n e.preventDefault();\n createCreditApiRequest()\n .then((request) => {\n setRequestData(request.data);\n });\n };\n return { requestData, createCreditRequest };\n};\n\nexport default {\n useCreditRequestData,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport CreditContent from './components/CreditContent';\nimport ProviderLink from './components/ProviderLink';\nimport hooks from './hooks';\n\nimport messages from './messages';\n\nexport const MustRequestContent = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { requestData, createCreditRequest } = hooks.useCreditRequestData(cardId);\n const { isMasquerading } = reduxHooks.useMasqueradeData();\n return (\n ),\n requestCredit: ({formatMessage(messages.requestCredit)}),\n })}\n requestData={requestData}\n />\n );\n};\nMustRequestContent.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default MustRequestContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport CreditContent from './components/CreditContent';\nimport messages from './messages';\n\nexport const PendingContent = ({ cardId }) => {\n const { providerStatusUrl: href, providerName } = reduxHooks.useCardCreditData(cardId);\n const { isMasquerading } = reduxHooks.useMasqueradeData();\n const { formatMessage } = useIntl();\n return (\n \n );\n};\nPendingContent.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default PendingContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport CreditContent from './components/CreditContent';\nimport ProviderLink from './components/ProviderLink';\nimport messages from './messages';\n\nexport const RejectedContent = ({ cardId }) => {\n const credit = reduxHooks.useCardCreditData(cardId);\n const { formatMessage } = useIntl();\n return (\n ),\n })}\n />\n );\n};\nRejectedContent.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default RejectedContent;\n","import { StrictDict } from 'utils';\n\nimport { reduxHooks } from 'hooks';\n\nimport ApprovedContent from './views/ApprovedContent';\nimport EligibleContent from './views/EligibleContent';\nimport MustRequestContent from './views/MustRequestContent';\nimport PendingContent from './views/PendingContent';\nimport RejectedContent from './views/RejectedContent';\n\nexport const statusComponents = StrictDict({\n pending: PendingContent,\n approved: ApprovedContent,\n rejected: RejectedContent,\n});\n\nexport const useCreditBannerData = (cardId) => {\n const credit = reduxHooks.useCardCreditData(cardId);\n const { supportEmail } = reduxHooks.usePlatformSettingsData();\n if (!credit.isEligible) { return null; }\n\n const { error, purchased, requestStatus } = credit;\n let ContentComponent = EligibleContent;\n if (purchased) {\n if (requestStatus == null) {\n ContentComponent = MustRequestContent;\n } else if (Object.keys(statusComponents).includes(requestStatus)) {\n ContentComponent = statusComponents[requestStatus];\n }\n // Current behavior is to show Elligible State if unknown request status is returned\n }\n return {\n ContentComponent,\n error,\n supportEmail,\n };\n};\n\nexport default {\n useCreditBannerData,\n};\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n error: {\n id: 'learner-dash.courseCard.banners.credit.error',\n description: '',\n defaultMessage: 'An error occurred with this transaction. For help, contact {supportEmailLink}.',\n },\n errorNoEmail: {\n id: 'learner-dash.courseCard.banners.credit.errorNoEmail',\n description: '',\n defaultMessage: 'An error occurred with this transaction.',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport Banner from 'components/Banner';\n\nimport { MailtoLink } from '@openedx/paragon';\nimport hooks from './hooks';\nimport messages from './messages';\n\nexport const CreditBanner = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const hookData = hooks.useCreditBannerData(cardId);\n if (hookData === null) {\n return null;\n }\n\n const { ContentComponent, error, supportEmail } = hookData;\n const supportEmailLink = ({supportEmail});\n return (\n \n {error && (\n

\n {supportEmail ? formatMessage(messages.error, { supportEmailLink }) : formatMessage(messages.errorNoEmail)}\n

\n )}\n \n
\n );\n};\nCreditBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CreditBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button, MailtoLink } from '@openedx/paragon';\n\nimport { utilHooks, reduxHooks } from 'hooks';\n\nimport Banner from 'components/Banner';\nimport messages from './messages';\n\nexport const EntitlementBanner = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const {\n isEntitlement,\n hasSessions,\n isFulfilled,\n changeDeadline,\n showExpirationWarning,\n isExpired,\n } = reduxHooks.useCardEntitlementData(cardId);\n const { supportEmail } = reduxHooks.usePlatformSettingsData();\n const openSessionModal = reduxHooks.useUpdateSelectSessionModalCallback(cardId);\n const formatDate = utilHooks.useFormatDate();\n\n if (!isEntitlement) {\n return null;\n }\n\n if (!hasSessions && !isFulfilled) {\n return (\n \n {formatMessage(messages.entitlementUnavailable, {\n emailLink: supportEmail && {supportEmail},\n })}\n \n );\n }\n if (showExpirationWarning) {\n return (\n \n {formatMessage(messages.entitlementExpiringSoon, {\n changeDeadline: formatDate(changeDeadline),\n selectSessionButton: (\n \n ),\n })}\n \n );\n }\n if (isExpired) {\n return (\n \n {formatMessage(messages.entitlementExpired)}\n \n );\n }\n return null;\n};\nEntitlementBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default EntitlementBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const ProgramsList = ({ programs }) => (\n \n);\n\nProgramsList.propTypes = {\n programs: PropTypes.arrayOf(\n PropTypes.shape({\n programUrl: PropTypes.string,\n title: PropTypes.string,\n }),\n ).isRequired,\n};\n\nexport default ProgramsList;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n relatedPrograms: {\n id: 'learner-dash.courseCard.banners.relatedPrograms',\n description: 'title for related programs banner',\n defaultMessage: 'Related Programs: ',\n },\n expandBanner: {\n id: 'learner-dash.courseCard.banners.expandBanner',\n description: 'expand banner button text',\n defaultMessage: 'More',\n },\n expandBannerAlt: {\n id: 'learner-dash.courseCard.banners.expandBannerAlt',\n description: 'expand banner button alt text',\n defaultMessage: 'Expand banner icon',\n },\n collapseBanner: {\n id: 'learner-dash.courseCard.banners.collapseBanner',\n description: 'collapse banner button text',\n defaultMessage: 'Less',\n },\n collapseBannerAlt: {\n id: 'learner-dash.courseCard.banners.collapseBannerAlt',\n description: 'collapse banner button alt text',\n defaultMessage: 'Collapse banner icon',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Program } from '@openedx/paragon/icons';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport Banner from 'components/Banner';\n\nimport ProgramList from './ProgramsList';\nimport messages from './messages';\n\nexport const RelatedProgramsBanner = ({ cardId }) => {\n const { formatMessage } = useIntl();\n\n const programData = reduxHooks.useCardRelatedProgramsData(cardId);\n\n if (!programData?.length) {\n return null;\n }\n\n return (\n \n \n {formatMessage(messages.relatedPrograms)}\n \n \n \n );\n};\nRelatedProgramsBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default RelatedProgramsBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { reduxHooks } from 'hooks';\n\nimport CourseBanner from './CourseBanner';\nimport CertificateBanner from './CertificateBanner';\nimport CreditBanner from './CreditBanner';\nimport EntitlementBanner from './EntitlementBanner';\nimport RelatedProgramsBanner from './RelatedProgramsBanner';\n\nexport const CourseCardBanners = ({ cardId }) => {\n const { isEnrolled } = reduxHooks.useCardEnrollmentData(cardId);\n return (\n
\n \n \n \n {isEnrolled && }\n {isEnrolled && }\n
\n );\n};\nCourseCardBanners.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseCardBanners;\n","export default __webpack_public_path__ + \"917f898551500732cc35a2f63da125f0.png\";","import { reduxHooks } from 'hooks';\n\nexport const useActionDisabledState = (cardId) => {\n const { isMasquerading } = reduxHooks.useMasqueradeData();\n const {\n canUpgrade, hasAccess, isAudit, isAuditAccessExpired,\n } = reduxHooks.useCardEnrollmentData(cardId);\n const {\n isEntitlement, isFulfilled, canChange, hasSessions,\n } = reduxHooks.useCardEntitlementData(cardId);\n\n const { resumeUrl, homeUrl, upgradeUrl } = reduxHooks.useCardCourseRunData(cardId);\n\n const disableBeginCourse = !homeUrl || (isMasquerading || !hasAccess || (isAudit && isAuditAccessExpired));\n const disableResumeCourse = !resumeUrl || (isMasquerading || !hasAccess || (isAudit && isAuditAccessExpired));\n const disableViewCourse = !hasAccess || (isAudit && isAuditAccessExpired);\n const disableSelectSession = !isEntitlement || isMasquerading || !hasAccess || (!canChange || !hasSessions);\n const disableUpgradeCourse = !upgradeUrl || (isMasquerading && !canUpgrade);\n\n const disableCourseTitle = (isEntitlement && !isFulfilled) || disableViewCourse;\n\n return {\n disableBeginCourse,\n disableResumeCourse,\n disableViewCourse,\n disableUpgradeCourse,\n disableSelectSession,\n disableCourseTitle,\n };\n};\n\nexport default useActionDisabledState;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n bannerAlt: {\n id: 'learner-dash.courseCard.bannerAlt',\n description: 'Course card banner alt-text',\n defaultMessage: 'Course thumbnail',\n },\n verifiedBanner: {\n id: 'learner-dash.courseCard.verifiedBanner',\n description: 'Course card verified banner',\n defaultMessage: 'Verified',\n },\n verifiedHoverDescription: {\n id: 'learner-dash.courseCard.verifiedHoverDescription',\n description: 'Course card verified hover description',\n defaultMessage: 'You\\'re enrolled as a verified student',\n },\n verifiedBannerRibbonAlt: {\n id: 'learner-dash.courseCard.verifiedBannerRibbonAlt',\n description: 'Course card verified banner ribbon alt-text',\n defaultMessage: 'ID Verified Ribbon/Badge',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { Badge } from '@openedx/paragon';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\nimport verifiedRibbon from 'assets/verified-ribbon.png';\nimport useActionDisabledState from './hooks';\n\nimport messages from '../messages';\n\nconst { courseImageClicked } = track.course;\n\nexport const CourseCardImage = ({ cardId, orientation }) => {\n const { formatMessage } = useIntl();\n const { bannerImgSrc } = reduxHooks.useCardCourseData(cardId);\n const { homeUrl } = reduxHooks.useCardCourseRunData(cardId);\n const { isVerified } = reduxHooks.useCardEnrollmentData(cardId);\n const { disableCourseTitle } = useActionDisabledState(cardId);\n const handleImageClicked = reduxHooks.useTrackCourseEvent(courseImageClicked, cardId, homeUrl);\n const wrapperClassName = `pgn__card-wrapper-image-cap overflow-visible ${orientation}`;\n const image = (\n <>\n \n {\n isVerified && (\n \n \n {formatMessage(messages.verifiedBanner)}\n \n {formatMessage(messages.verifiedBannerRibbonAlt)}\n \n )\n }\n \n );\n return disableCourseTitle\n ? (
{image}
)\n : (\n \n {image}\n \n );\n};\nCourseCardImage.propTypes = {\n cardId: PropTypes.string.isRequired,\n orientation: PropTypes.string.isRequired,\n};\n\nCourseCardImage.defaultProps = {};\n\nexport default CourseCardImage;\n","import React from 'react';\n\nimport { StrictDict } from 'utils';\nimport { reduxHooks, apiHooks } from 'hooks';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n toggle: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useEmailData = ({\n closeModal,\n cardId,\n}) => {\n const { hasOptedOutOfEmail } = reduxHooks.useCardEnrollmentData(cardId);\n const [isOptedOut, setIsOptedOut] = module.state.toggle(hasOptedOutOfEmail);\n const updateEmailSettings = apiHooks.useUpdateEmailSettings(cardId);\n const onToggle = () => setIsOptedOut(!isOptedOut);\n const save = () => {\n updateEmailSettings(!isOptedOut);\n closeModal();\n };\n\n return {\n onToggle,\n save,\n isOptedOut,\n };\n};\n\nexport default useEmailData;\n","/* eslint-disable quotes */\nimport { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n header: {\n id: 'learner-dash.emailSettings.header',\n description: 'Header for email settings modal',\n defaultMessage: 'Receive course emails?',\n },\n emailsOff: {\n id: 'learner-dash.emailSettings.emailsOff',\n description: 'Toggle text for email settings modal when email is disabled',\n defaultMessage: 'Course emails are off',\n },\n emailsOn: {\n id: 'learner-dash.emailSettings.emailsOn',\n description: 'Toggle text for email settings modal when email is enabled',\n defaultMessage: 'Course emails are on',\n },\n description: {\n id: 'learner-dash.emailSettings.description',\n description: 'Description for email settings modal',\n defaultMessage: 'Course emails include important information about your course from instructors.',\n },\n nevermind: {\n id: 'learner-dash.emailSettings.nevermind',\n description: 'Cancel action for email settings modal',\n defaultMessage: 'Never mind',\n },\n save: {\n id: 'learner-dash.emailSettings.save',\n description: 'Save action for email settings modal',\n defaultMessage: 'Save settings',\n },\n\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n Form,\n ModalDialog,\n} from '@openedx/paragon';\n\nimport { nullMethod } from 'utils';\n\nimport useEmailData from './hooks';\nimport messages from './messages';\n\nexport const EmailSettingsModal = ({\n closeModal,\n show,\n cardId,\n}) => {\n const {\n isOptedOut,\n onToggle,\n save,\n } = useEmailData({ closeModal, cardId });\n const { formatMessage } = useIntl();\n\n return (\n \n
\n

{formatMessage(messages.header)}

\n \n {formatMessage(isOptedOut ? messages.emailsOff : messages.emailsOn)}\n \n

{formatMessage(messages.description)}

\n \n \n \n \n
\n \n );\n};\nEmailSettingsModal.propTypes = {\n cardId: PropTypes.string.isRequired,\n closeModal: PropTypes.func.isRequired,\n show: PropTypes.bool.isRequired,\n};\n\nexport default EmailSettingsModal;\n","/* eslint-disable quotes */\nimport { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n confirmHeader: {\n id: 'learner-dash.unenrollConfirm.confirm.header',\n description: 'Header for confirm unenroll modal',\n defaultMessage: 'Unenroll from course?',\n },\n confirmCancel: {\n id: 'learner-dash.unenrollConfirm.confirm.cancel',\n description: 'Cancel action for confirm unenroll modal',\n defaultMessage: 'Never mind',\n },\n confirmUnenroll: {\n id: 'learner-dash.unenrollConfirm.confirm.unenroll',\n description: 'Confirm action for confirm unenroll modal',\n defaultMessage: 'Unenroll',\n },\n reasonHeading: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.heading',\n description: 'Heading for unenroll reason modal',\n defaultMessage: `What's your main reason for unenrolling?`,\n },\n reasonSkip: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.skip',\n description: 'Skip action for unenroll reason modal',\n defaultMessage: 'Skip survey',\n },\n reasonSubmit: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.submit',\n description: 'Submit action for unenroll reason modal',\n defaultMessage: 'Submit reason',\n },\n finishHeading: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.heading',\n description: 'Heading for unenroll finish modal',\n defaultMessage: 'You are unenrolled',\n },\n finishThanksText: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.thanks-text',\n description: 'Thank you message on unenroll modal for providing a reason',\n defaultMessage: 'Thank you for sharing your reason for unenrolling. ',\n },\n finishText: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.text',\n description: 'Text for unenroll finish modal',\n defaultMessage: 'This course will be removed from your dashboard.',\n },\n finishReturn: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.return',\n description: 'Return action for unenroll finish modal',\n defaultMessage: 'Return to dashboard',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n} from '@openedx/paragon';\n\nimport messages from './messages';\n\nexport const ConfirmPane = ({\n handleClose,\n handleConfirm,\n}) => {\n const { formatMessage } = useIntl();\n return (\n <>\n

{formatMessage(messages.confirmHeader)}

\n \n \n \n \n \n );\n};\nConfirmPane.propTypes = {\n handleClose: PropTypes.func.isRequired,\n handleConfirm: PropTypes.func.isRequired,\n};\n\nexport default ConfirmPane;\n","/* eslint-disable quotes */\nimport { StrictDict } from 'utils';\n\nexport const reasonKeys = StrictDict({\n prereqs: 'prereqs',\n difficulty: 'difficulty',\n goals: 'goals',\n broken: 'broken',\n time: 'time',\n browse: 'browse',\n support: 'support',\n quality: 'quality',\n easy: 'easy',\n custom: 'custom',\n});\n\nexport const order = [\n reasonKeys.prereqs,\n reasonKeys.difficulty,\n reasonKeys.goals,\n reasonKeys.broken,\n reasonKeys.time,\n reasonKeys.browse,\n reasonKeys.support,\n reasonKeys.quality,\n reasonKeys.easy,\n];\n\nconst messages = StrictDict({\n [reasonKeys.prereqs]: {\n id: 'learner-dash.unenrollConfirm.reasons.prereqs',\n description: 'Unenroll reason option - missing prerequisites',\n defaultMessage: `I don't have the academic or language prerequisites`,\n },\n [reasonKeys.difficulty]: {\n id: 'learner-dash.unenrollConfirm.reasons.difficulty',\n description: 'Unenroll reason option - material is too hard',\n defaultMessage: 'The course material was too hard',\n },\n [reasonKeys.goals]: {\n id: 'learner-dash.unenrollConfirm.reasons.goals',\n description: 'Unenroll reason option - goals-related',\n defaultMessage: `This won't help me reach my goals`,\n },\n [reasonKeys.broken]: {\n id: 'learner-dash.unenrollConfirm.reasons.broken',\n description: 'Unenroll reason option - something broken',\n defaultMessage: 'Something was broken',\n },\n [reasonKeys.time]: {\n id: 'learner-dash.unenrollConfirm.reasons.time',\n description: 'Unenroll reason option - time-related',\n defaultMessage: `I don't have the time`,\n },\n [reasonKeys.browse]: {\n id: 'learner-dash.unenrollConfirm.reasons.browse',\n description: 'Unenroll reason option - wanted to browse',\n defaultMessage: 'I just wanted to browse the material',\n },\n [reasonKeys.support]: {\n id: 'learner-dash.unenrollConfirm.reasons.support',\n description: 'Unenroll reason option - lacking support',\n defaultMessage: `I don't have enough support`,\n },\n [reasonKeys.quality]: {\n id: 'learner-dash.unenrollConfirm.reasons.quality',\n description: 'Unenroll reason option - quality-related',\n defaultMessage: 'I am not happy with the quality of the content',\n },\n [reasonKeys.easy]: {\n id: 'learner-dash.unenrollConfirm.reasons.easy',\n description: 'Unenroll reason option - too easy',\n defaultMessage: 'The course material was too easy',\n },\n customPlaceholder: {\n id: 'learner-dash.unenrollConfirm.reasons.custom-placeholder',\n description: 'Unenroll custom reason option placeholder text',\n defaultMessage: 'Other',\n },\n});\n\nexport default {\n messages,\n order,\n reasonKeys,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n Form,\n} from '@openedx/paragon';\n\nimport constants from '../constants';\nimport messages from './messages';\n\nexport const ReasonPane = ({\n reason,\n}) => {\n const { formatMessage } = useIntl();\n const option = (key) => (\n \n {formatMessage(constants.messages[key])}\n \n );\n return (\n <>\n

{formatMessage(messages.reasonHeading)}

\n \n {constants.order.map(option)}\n \n \n \n \n \n \n \n \n \n );\n};\nReasonPane.propTypes = {\n reason: PropTypes.shape({\n value: PropTypes.string,\n handleSkip: PropTypes.func,\n hasReason: PropTypes.bool,\n selectOption: PropTypes.func,\n customOption: PropTypes.shape({\n value: PropTypes.string,\n onChange: PropTypes.func,\n }),\n selected: PropTypes.string,\n handleSubmit: PropTypes.func.isRequired,\n }).isRequired,\n};\n\nexport default ReasonPane;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n} from '@openedx/paragon';\n\nimport messages from './messages';\n\nexport const FinishedPane = ({\n gaveReason,\n handleClose,\n}) => {\n const { formatMessage } = useIntl();\n return (\n <>\n

{formatMessage(messages.finishHeading)}

\n

\n {gaveReason && formatMessage(messages.finishThanksText)}\n {formatMessage(messages.finishText)}\n

\n \n \n \n \n );\n};\nFinishedPane.propTypes = {\n handleClose: PropTypes.func.isRequired,\n gaveReason: PropTypes.bool.isRequired,\n};\n\nexport default FinishedPane;\n","import React from 'react';\n\nimport {\n apiHooks,\n reduxHooks,\n utilHooks,\n} from 'hooks';\nimport { StrictDict } from 'utils';\nimport track from 'tracking';\n\nimport * as module from './reasons';\n\nexport const state = StrictDict({\n customOption: (val) => React.useState(val), // eslint-disable-line\n isSkipped: (val) => React.useState(val), // eslint-disable-line\n selectedReason: (val) => React.useState(val), // eslint-disable-line\n isSubmitted: (val) => React.useState(val), //eslint-disable-line\n});\n\nexport const useUnenrollReasons = ({\n cardId,\n}) => {\n // The selected option element from the menu\n const [selectedReason, setSelectedReason] = module.state.selectedReason(null);\n // Custom option element entry value\n const [customOption, setCustomOption] = module.state.customOption('');\n\n // Did the user choose to skip selecting a reason?\n const [isSkipped, setIsSkipped] = module.state.isSkipped(false);\n // Did the user submit an unenrollment reason\n const [isSubmitted, setIsSubmitted] = module.state.isSubmitted(false);\n\n const { isEntitlement } = reduxHooks.useCardEntitlementData(cardId);\n\n const submittedReason = selectedReason === 'custom' ? customOption : selectedReason;\n const hasReason = ![null, ''].includes(submittedReason);\n\n const handleTrackReasons = reduxHooks.useTrackCourseEvent(\n track.engagement.unenrollReason,\n cardId,\n submittedReason,\n isEntitlement,\n );\n\n const unenrollFromCourse = apiHooks.useUnenrollFromCourse(cardId);\n\n const handleClear = () => {\n setSelectedReason(null);\n setCustomOption('');\n setIsSkipped(false);\n setIsSubmitted(false);\n };\n\n const handleSkip = () => {\n setIsSkipped(true);\n unenrollFromCourse();\n };\n\n const handleSubmit = (e) => {\n handleTrackReasons(e);\n setIsSubmitted(true);\n unenrollFromCourse();\n };\n\n const handleCustomOptionChange = utilHooks.useValueCallback(setCustomOption);\n const handleSelectOption = utilHooks.useValueCallback(setSelectedReason);\n\n return {\n customOption: { value: customOption, onChange: handleCustomOptionChange },\n handleClear,\n handleSkip,\n handleSubmit,\n hasReason,\n isSkipped,\n isSubmitted,\n selectOption: handleSelectOption,\n submittedReason,\n };\n};\n","import React from 'react';\n\nimport { StrictDict } from 'utils';\nimport { apiHooks } from 'hooks';\n\nimport { useUnenrollReasons } from './reasons';\nimport * as module from '.';\n\nexport const state = StrictDict({\n confirmed: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const modalStates = StrictDict({\n confirm: 'confirm',\n reason: 'reason',\n finished: 'finished',\n});\n\nexport const useUnenrollData = ({ closeModal, cardId }) => {\n const [isConfirmed, setIsConfirmed] = module.state.confirmed(false);\n const confirm = () => setIsConfirmed(true);\n const reason = useUnenrollReasons({ cardId });\n const refreshList = apiHooks.useInitializeApp();\n\n let modalState;\n if (isConfirmed) {\n modalState = (reason.isSubmitted || reason.isSkipped)\n ? modalStates.finished : modalStates.reason;\n } else {\n modalState = modalStates.confirm;\n }\n\n const close = () => {\n closeModal();\n setIsConfirmed(false);\n reason.handleClear();\n };\n const closeAndRefresh = () => {\n refreshList();\n close();\n };\n\n return {\n isConfirmed,\n confirm,\n reason,\n close,\n closeAndRefresh,\n modalState,\n };\n};\n\nexport default useUnenrollData;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { ModalDialog } from '@openedx/paragon';\n\nimport { nullMethod } from 'utils';\n\nimport ConfirmPane from './components/ConfirmPane';\nimport ReasonPane from './components/ReasonPane';\nimport FinishedPane from './components/FinishedPane';\n\nimport { useUnenrollData, modalStates } from './hooks';\n\nexport const UnenrollConfirmModal = ({\n closeModal,\n show,\n cardId,\n}) => {\n const {\n confirm,\n reason,\n closeAndRefresh,\n close,\n modalState,\n } = useUnenrollData({ closeModal, cardId });\n const showFullscreen = modalState === modalStates.reason;\n return (\n \n \n {(modalState === modalStates.confirm) && (\n \n )}\n {(modalState === modalStates.finished) && (\n \n )}\n {(modalState === modalStates.reason) && (\n \n )}\n \n \n );\n};\nUnenrollConfirmModal.propTypes = {\n closeModal: PropTypes.func.isRequired,\n show: PropTypes.bool.isRequired,\n cardId: PropTypes.string.isRequired,\n};\n\nexport default UnenrollConfirmModal;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n unenroll: {\n id: 'learner-dash.courseCardMenu.unenroll',\n description: 'Course unenroll menu button',\n defaultMessage: 'Unenroll',\n },\n dropdownAlt: {\n id: 'learner-dash.courseCardMenu.dropdownAlt',\n description: 'Course action menu alt-text',\n defaultMessage: 'Course actions dropdown',\n },\n emailSettings: {\n id: 'learner-dash.courseCardMenu.emailSettings',\n description: 'Course email settings menu button',\n defaultMessage: 'Email settings',\n },\n shareToFacebook: {\n id: 'learner-dash.courseCardMenu.shareToFacebook',\n description: 'Course Facebook Sharing button',\n defaultMessage: 'Share to Facebook',\n },\n shareToTwitter: {\n id: 'learner-dash.courseCardMenu.shareToTwitter',\n description: 'Course Twitter Sharing button',\n defaultMessage: 'Share to Twitter',\n },\n shareQuote: {\n id: 'learner-dash.courseCardMenu.shareQuote',\n description: 'Social sharing quote',\n defaultMessage: 'I\\'m taking {courseName} online with {socialBrand}. Check it out!',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactShare from 'react-share';\n\nimport { StrictDict } from '@edx/react-unit-test-utils';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Dropdown } from '@openedx/paragon';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\n\nimport messages from './messages';\n\nexport const testIds = StrictDict({\n emailSettingsModalToggle: 'emailSettingsModalToggle',\n});\n\nexport const SocialShareMenu = ({ cardId, emailSettings }) => {\n const { formatMessage } = useIntl();\n\n const { courseName } = reduxHooks.useCardCourseData(cardId);\n const { isEmailEnabled, isExecEd2UCourse } = reduxHooks.useCardEnrollmentData(cardId);\n const { twitter, facebook } = reduxHooks.useCardSocialSettingsData(cardId);\n const { isMasquerading } = reduxHooks.useMasqueradeData();\n\n const handleTwitterShare = reduxHooks.useTrackCourseEvent(track.socialShare, cardId, 'twitter');\n const handleFacebookShare = reduxHooks.useTrackCourseEvent(track.socialShare, cardId, 'facebook');\n\n if (isExecEd2UCourse) {\n return null;\n }\n\n return (\n <>\n {isEmailEnabled && (\n \n {formatMessage(messages.emailSettings)}\n \n )}\n {facebook.isEnabled && (\n \n {formatMessage(messages.shareToFacebook)}\n \n )}\n {twitter.isEnabled && (\n \n {formatMessage(messages.shareToTwitter)}\n \n )}\n \n );\n};\nSocialShareMenu.propTypes = {\n cardId: PropTypes.string.isRequired,\n emailSettings: PropTypes.shape({\n show: PropTypes.func,\n }).isRequired,\n};\n\nexport default SocialShareMenu;\n","import { useKeyedState, StrictDict } from '@edx/react-unit-test-utils';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\n\nexport const stateKeys = StrictDict({\n isUnenrollConfirmVisible: 'isUnenrollConfirmVisible',\n isEmailSettingsVisible: 'isEmailSettingsVisible',\n});\n\nexport const useUnenrollData = () => {\n const [isVisible, setIsVisible] = useKeyedState(stateKeys.isUnenrollConfirmVisible, false);\n return {\n show: () => setIsVisible(true),\n hide: () => setIsVisible(false),\n isVisible,\n };\n};\n\nexport const useEmailSettings = () => {\n const [isVisible, setIsVisible] = useKeyedState(stateKeys.isEmailSettingsVisible, false);\n return {\n show: () => setIsVisible(true),\n hide: () => setIsVisible(false),\n isVisible,\n };\n};\n\nexport const useHandleToggleDropdown = (cardId) => {\n const trackCourseEvent = reduxHooks.useTrackCourseEvent(\n track.course.courseOptionsDropdownClicked,\n cardId,\n );\n return (isOpen) => {\n if (isOpen) { trackCourseEvent(); }\n };\n};\n\nexport const useOptionVisibility = (cardId) => {\n const { isEnrolled, isEmailEnabled } = reduxHooks.useCardEnrollmentData(cardId);\n const { twitter, facebook } = reduxHooks.useCardSocialSettingsData(cardId);\n const { isEarned } = reduxHooks.useCardCertificateData(cardId);\n\n const shouldShowUnenrollItem = isEnrolled && !isEarned;\n const shouldShowDropdown = (\n shouldShowUnenrollItem\n || isEmailEnabled\n || facebook.isEnabled\n || twitter.isEnabled\n );\n\n return {\n shouldShowUnenrollItem,\n shouldShowDropdown,\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Dropdown, Icon, IconButton } from '@openedx/paragon';\nimport { MoreVert } from '@openedx/paragon/icons';\nimport { StrictDict } from '@edx/react-unit-test-utils';\n\nimport EmailSettingsModal from 'containers/EmailSettingsModal';\nimport UnenrollConfirmModal from 'containers/UnenrollConfirmModal';\nimport { reduxHooks } from 'hooks';\nimport SocialShareMenu from './SocialShareMenu';\nimport {\n useEmailSettings,\n useUnenrollData,\n useHandleToggleDropdown,\n useOptionVisibility,\n} from './hooks';\n\nimport messages from './messages';\n\nexport const testIds = StrictDict({\n unenrollModalToggle: 'unenrollModalToggle',\n});\n\nexport const CourseCardMenu = ({ cardId }) => {\n const { formatMessage } = useIntl();\n\n const emailSettings = useEmailSettings();\n const unenrollModal = useUnenrollData();\n const handleToggleDropdown = useHandleToggleDropdown(cardId);\n const { shouldShowUnenrollItem, shouldShowDropdown } = useOptionVisibility(cardId);\n const { isMasquerading } = reduxHooks.useMasqueradeData();\n const { isEmailEnabled } = reduxHooks.useCardEnrollmentData(cardId);\n\n if (!shouldShowDropdown) {\n return null;\n }\n\n return (\n <>\n \n \n \n {shouldShowUnenrollItem && (\n \n {formatMessage(messages.unenroll)}\n \n )}\n \n \n \n \n {isEmailEnabled && (\n \n )}\n \n );\n};\nCourseCardMenu.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseCardMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { PluginSlot } from '@openedx/frontend-plugin-framework';\n\nconst CourseCardActionSlot = ({ cardId }) => (\n \n);\n\nCourseCardActionSlot.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseCardActionSlot;\n","import React from 'react';\nimport { Button } from '@openedx/paragon';\n\nimport useIsCollapsed from './hooks';\n\nexport const ActionButton = (props) => {\n const isSmall = useIsCollapsed();\n return (\n \n );\n};\n\nexport default ActionButton;\n","import { useWindowSize, breakpoints } from '@openedx/paragon';\n\nexport const useIsCollapsed = () => {\n const { width } = useWindowSize();\n return width < breakpoints.medium.maxWidth && width > breakpoints.small.maxWidth;\n};\n\nexport default useIsCollapsed;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n upgrade: {\n id: 'learner-dash.courseCard.actions.upgrade',\n description: 'Course card upgrade button text',\n defaultMessage: 'Upgrade',\n },\n beginCourse: {\n id: 'learner-dash.courseCard.actions.beginCourse',\n description: 'Course card begin-course button text',\n defaultMessage: 'Begin Course',\n },\n resume: {\n id: 'learner-dash.courseCard.actions.resume',\n description: 'Course card resume button text',\n defaultMessage: 'Resume',\n },\n viewCourse: {\n id: 'learner-dash.courseCard.actions.viewCourse',\n description: 'Course card view-course button text',\n defaultMessage: 'View Course',\n },\n selectSession: {\n id: 'learner-dash.courseCard.actions.selectSession',\n description: 'Course card select-session button text',\n defaultMessage: 'Select Session',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport useActionDisabledState from '../hooks';\nimport ActionButton from './ActionButton';\nimport messages from './messages';\n\nexport const SelectSessionButton = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { disableSelectSession } = useActionDisabledState(cardId);\n const openSessionModal = reduxHooks.useUpdateSelectSessionModalCallback(cardId);\n return (\n \n {formatMessage(messages.selectSession)}\n \n );\n};\nSelectSessionButton.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\nexport default SelectSessionButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\nimport useActionDisabledState from '../hooks';\nimport ActionButton from './ActionButton';\nimport messages from './messages';\n\nexport const BeginCourseButton = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { homeUrl } = reduxHooks.useCardCourseRunData(cardId);\n const execEdTrackingParam = reduxHooks.useCardExecEdTrackingParam(cardId);\n const { disableBeginCourse } = useActionDisabledState(cardId);\n\n const handleClick = reduxHooks.useTrackCourseEvent(\n track.course.enterCourseClicked,\n cardId,\n homeUrl + execEdTrackingParam,\n );\n return (\n \n {formatMessage(messages.beginCourse)}\n \n );\n};\nBeginCourseButton.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\nexport default BeginCourseButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\nimport useActionDisabledState from '../hooks';\nimport ActionButton from './ActionButton';\nimport messages from './messages';\n\nexport const ResumeButton = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { resumeUrl } = reduxHooks.useCardCourseRunData(cardId);\n const execEdTrackingParam = reduxHooks.useCardExecEdTrackingParam(cardId);\n const { disableResumeCourse } = useActionDisabledState(cardId);\n\n const handleClick = reduxHooks.useTrackCourseEvent(\n track.course.enterCourseClicked,\n cardId,\n resumeUrl + execEdTrackingParam,\n );\n return (\n \n {formatMessage(messages.resume)}\n \n );\n};\nResumeButton.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\nexport default ResumeButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\nimport useActionDisabledState from '../hooks';\nimport ActionButton from './ActionButton';\nimport messages from './messages';\n\nexport const ViewCourseButton = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { homeUrl } = reduxHooks.useCardCourseRunData(cardId);\n const { disableViewCourse } = useActionDisabledState(cardId);\n\n const handleClick = reduxHooks.useTrackCourseEvent(\n track.course.enterCourseClicked,\n cardId,\n homeUrl,\n );\n return (\n \n {formatMessage(messages.viewCourse)}\n \n );\n};\nViewCourseButton.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\nexport default ViewCourseButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ActionRow } from '@openedx/paragon';\n\nimport { reduxHooks } from 'hooks';\n\nimport CourseCardActionSlot from 'plugin-slots/CourseCardActionSlot';\nimport SelectSessionButton from './SelectSessionButton';\nimport BeginCourseButton from './BeginCourseButton';\nimport ResumeButton from './ResumeButton';\nimport ViewCourseButton from './ViewCourseButton';\n\nexport const CourseCardActions = ({ cardId }) => {\n const { isEntitlement, isFulfilled } = reduxHooks.useCardEntitlementData(cardId);\n const {\n hasStarted,\n } = reduxHooks.useCardEnrollmentData(cardId);\n const { isArchived } = reduxHooks.useCardCourseRunData(cardId);\n\n return (\n \n \n {isEntitlement && (isFulfilled\n ? \n : \n )}\n {(isArchived && !isEntitlement) && (\n \n )}\n {!(isArchived || isEntitlement) && (hasStarted\n ? \n : \n )}\n \n );\n};\nCourseCardActions.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseCardActions;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n accessExpired: {\n id: 'learner-dash.courseCard.CourseCardDetails.accessExpired',\n description: 'Course access expiration date message on course card for expired access.',\n defaultMessage: 'Access expired {accessExpirationDate}',\n },\n accessExpires: {\n id: 'learner-dash.courseCard.CourseCardDetails.accessExpires',\n description: 'Course access expiration date message on course card.',\n defaultMessage: 'Access expires {accessExpirationDate}',\n },\n courseEnded: {\n id: 'learner-dash.courseCard.CourseCardDetails.courseEnded',\n description: 'Course ended message on course card.',\n defaultMessage: 'Course ended {endDate}',\n },\n courseEnds: {\n id: 'learner-dash.courseCard.CourseCardDetails.courseEnds',\n description: 'Course ending message on course card.',\n defaultMessage: 'Course ends {endDate}',\n },\n courseStarts: {\n id: 'learner-dash.courseCard.CourseCardDetails.courseStarts',\n description: 'Course start date message on course card.',\n defaultMessage: 'Course starts {startDate}',\n },\n unknownProviderName: {\n id: 'learner-dash.courseCard.CourseCardDetails.unknownProviderName',\n description: 'Provider name display when name is unknown',\n defaultMessage: 'Unknown',\n },\n changeOrLeaveSessionButton: {\n id: 'learner-dash.courseCard.CourseCardDetails.changeOrLeaveSessionButton',\n description: 'Button for trigger change or leave session for entitlement course',\n defaultMessage: 'Change or leave session',\n },\n});\n\nexport default messages;\n","import { useIntl } from '@edx/frontend-platform/i18n';\nimport { utilHooks, reduxHooks } from 'hooks';\n\nimport * as hooks from './hooks';\nimport messages from './messages';\n\nexport const useAccessMessage = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const enrollment = reduxHooks.useCardEnrollmentData(cardId);\n const courseRun = reduxHooks.useCardCourseRunData(cardId);\n const formatDate = utilHooks.useFormatDate();\n if (!courseRun.isStarted) {\n if (!courseRun.startDate) { return null; }\n const startDate = formatDate(courseRun.startDate);\n return formatMessage(messages.courseStarts, { startDate });\n }\n if (enrollment.isEnrolled) {\n const { isArchived, endDate } = courseRun;\n const {\n accessExpirationDate,\n isAuditAccessExpired,\n } = enrollment;\n\n if (enrollment.isAudit && accessExpirationDate) {\n return formatMessage(\n isAuditAccessExpired ? messages.accessExpired : messages.accessExpires,\n { accessExpirationDate: formatDate(accessExpirationDate) },\n );\n }\n if (!endDate) { return null; }\n return formatMessage(\n isArchived ? messages.courseEnded : messages.courseEnds,\n { endDate: formatDate(endDate) },\n );\n }\n return null;\n};\n\nexport const useCardDetailsData = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const providerName = reduxHooks.useCardProviderData(cardId).name;\n const { courseNumber } = reduxHooks.useCardCourseData(cardId);\n const {\n isEntitlement,\n isFulfilled,\n canChange,\n } = reduxHooks.useCardEntitlementData(cardId);\n\n const openSessionModal = reduxHooks.useUpdateSelectSessionModalCallback(cardId);\n\n return {\n providerName: providerName || formatMessage(messages.unknownProviderName),\n accessMessage: hooks.useAccessMessage({ cardId }),\n isEntitlement,\n isFulfilled,\n canChange,\n openSessionModal,\n courseNumber,\n changeOrLeaveSessionMessage: formatMessage(messages.changeOrLeaveSessionButton),\n };\n};\n\nexport default useCardDetailsData;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button } from '@openedx/paragon';\n\nimport useCardDetailsData from './hooks';\nimport './index.scss';\n\nexport const CourseCardDetails = ({ cardId }) => {\n const {\n providerName,\n accessMessage,\n isEntitlement,\n isFulfilled,\n canChange,\n openSessionModal,\n courseNumber,\n changeOrLeaveSessionMessage,\n } = useCardDetailsData({ cardId });\n\n return (\n \n {providerName} • {courseNumber}\n {!(isEntitlement && !isFulfilled) && accessMessage && (\n ` • ${accessMessage}`\n )}\n {isEntitlement && isFulfilled && canChange ? (\n <>\n {' • '}\n \n \n ) : null}\n \n );\n};\n\nCourseCardDetails.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nCourseCardDetails.defaultProps = {};\n\nexport default CourseCardDetails;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport track from 'tracking';\nimport { reduxHooks } from 'hooks';\nimport useActionDisabledState from './hooks';\n\nconst { courseTitleClicked } = track.course;\n\nexport const CourseCardTitle = ({ cardId }) => {\n const { courseName } = reduxHooks.useCardCourseData(cardId);\n const { homeUrl } = reduxHooks.useCardCourseRunData(cardId);\n const handleTitleClicked = reduxHooks.useTrackCourseEvent(\n courseTitleClicked,\n cardId,\n homeUrl,\n );\n const { disableCourseTitle } = useActionDisabledState(cardId);\n return (\n

\n {disableCourseTitle ? (\n {courseName}\n ) : (\n \n {courseName}\n \n )}\n

\n );\n};\n\nCourseCardTitle.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nCourseCardTitle.defaultProps = {};\n\nexport default CourseCardTitle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Card } from '@openedx/paragon';\n\nimport { useIsCollapsed } from './hooks';\nimport CourseCardBanners from './components/CourseCardBanners';\nimport CourseCardImage from './components/CourseCardImage';\nimport CourseCardMenu from './components/CourseCardMenu';\nimport CourseCardActions from './components/CourseCardActions';\nimport CourseCardDetails from './components/CourseCardDetails';\nimport CourseCardTitle from './components/CourseCardTitle';\n\nimport './CourseCard.scss';\n\nexport const CourseCard = ({\n cardId,\n}) => {\n const isCollapsed = useIsCollapsed();\n const orientation = isCollapsed ? 'vertical' : 'horizontal';\n return (\n
\n \n
\n
\n \n \n }\n actions={}\n />\n \n \n \n \n \n \n \n
\n \n
\n
\n
\n );\n};\nCourseCard.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseCard;\n","import { useIntl } from '@edx/frontend-platform/i18n';\nimport { useWindowSize, breakpoints } from '@openedx/paragon';\nimport { reduxHooks } from 'hooks';\n\nexport const useIsCollapsed = () => {\n const { width } = useWindowSize();\n return width < breakpoints.small.maxWidth;\n};\n\nexport const useCardData = ({ cardId }) => {\n const { formatMessage } = useIntl();\n const { title, bannerImgSrc } = reduxHooks.useCardCourseData(cardId);\n const { isEnrolled } = reduxHooks.useCardEnrollmentData(cardId);\n\n return {\n isEnrolled,\n title,\n bannerImgSrc,\n formatMessage,\n };\n};\n\nexport default useCardData;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Pagination } from '@openedx/paragon';\nimport {\n ActiveCourseFilters,\n} from 'containers/CourseFilterControls';\nimport CourseCard from 'containers/CourseCard';\n\nimport { useIsCollapsed } from './hooks';\n\nexport const CourseList = ({ courseListData }) => {\n const {\n filterOptions, setPageNumber, numPages, showFilters, visibleList,\n } = courseListData;\n const isCollapsed = useIsCollapsed();\n return (\n <>\n {showFilters && (\n
\n \n
\n )}\n
\n {visibleList.map(({ cardId }) => (\n \n ))}\n {numPages > 1 && (\n \n )}\n
\n \n );\n};\n\nexport const courseListDataShape = PropTypes.shape({\n showFilters: PropTypes.bool.isRequired,\n visibleList: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n filterOptions: PropTypes.shape().isRequired,\n numPages: PropTypes.number.isRequired,\n setPageNumber: PropTypes.func.isRequired,\n});\n\nCourseList.propTypes = {\n courseListData: courseListDataShape,\n};\n\nexport default CourseList;\n","import { useWindowSize, breakpoints } from '@openedx/paragon';\n\nexport const useIsCollapsed = () => {\n const { width } = useWindowSize();\n return width < breakpoints.medium.maxWidth;\n};\n\nexport default useIsCollapsed;\n","import React from 'react';\n\nimport { PluginSlot } from '@openedx/frontend-plugin-framework';\nimport { CourseList, courseListDataShape } from 'containers/CoursesPanel/CourseList';\n\nexport const CourseListSlot = ({ courseListData }) => (\n \n \n \n);\n\nCourseListSlot.propTypes = {\n courseListData: courseListDataShape,\n};\n\nexport default CourseListSlot;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgEmptyCourse = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 236,\n height: 157,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FBFAF9\",\n d: \"M234.6 77.19a35.4 35.4 0 0 0-.133-6.863A35.96 35.96 0 0 0 222.8 48.029c-6.638-5.824-11.306-4.057-19.463-5.508a16.7 16.7 0 0 0-9.742 1.223c.428-12.578-4.521-22.828-14.47-30.553-20.392-15.795-44.324-9.234-60.246 8.727-7.316-13.292-18.504-23.042-34.751-20.273C70.159 4.024 58.492 16.306 56.84 30.364c-5.9-2.21-12.737-1.178-18.437 1.583S27.886 39 23.373 43.449C17.93 48.803 12.662 54.59 9.64 61.593c-2.05 4.75-2.058 9.61-2.117 14.676 0 .84 1.652 13.564 3.127 12.327-22.353 18.741-.634 53.35 22.656 58.505 10.326 2.29 21.853-.199 29.7-7.305a90.1 90.1 0 0 0 31.572 13.395c15.598 3.321 32.325 4.595 47.702-.457 3.908-1.281 7.33-3.247 11.062-4.934 4.513-2.047 5.236-.25 9.934 1.26 7.891 2.533 16.631 1.715 24.456-.663 8.363-2.541 17.206-8.27 17.818-16.981 8.923.611 18.297-3.299 23.194-10.766 4.897-7.466 4.425-18.365-1.91-24.66 1.158 1.148 6.549-10.781 6.792-11.893.494-2.276.819-4.584.974-6.907\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D7D3D1\",\n d: \"M119.712 156.438a121.7 121.7 0 0 1-25.215-2.945 91.1 91.1 0 0 1-31.462-13.292c-7.677 6.819-19.072 9.573-29.81 7.202-14.012-3.1-27.766-17.062-31.38-31.789-2.589-10.486.273-20.06 8.046-26.848-1.586-1.79-2.744-12.062-2.736-12.519v-.353c.059-5.022.118-9.757 2.146-14.47 3.083-7.106 8.459-12.997 13.813-18.24 4.44-4.33 9.33-8.8 15.119-11.59 6.232-3.012 12.87-3.682 18.305-1.76C58.396 15.843 70.152 3.64 84.068 1.262 98.2-1.146 110.258 5.77 118.953 21.27c8.069-8.925 18.106-14.89 28.306-16.738 11.298-2.047 22.361.847 32.088 8.365 9.971 7.725 14.89 17.909 14.632 30.28a17.13 17.13 0 0 1 9.425-1.017c2.053.356 4.124.601 6.203.737 4.816.36 8.614.64 13.437 4.897a36.44 36.44 0 0 1 11.8 22.525c.269 2.303.314 4.626.133 6.937h-.369.369a49.5 49.5 0 0 1-1.003 6.93c-.192.868-4.381 10.492-6.424 12.039 5.826 6.296 6.52 16.936 1.475 24.632-4.72 7.201-13.776 11.472-23.165 10.957-.59 5.788-5.612 13.166-18.054 16.936-6.261 1.9-15.627 3.564-24.669.663a31 31 0 0 1-3.127-1.215c-2.257-.994-3.392-1.473-6.542-.059-1.157.523-2.308 1.09-3.414 1.635a60.5 60.5 0 0 1-7.663 3.314 72.3 72.3 0 0 1-22.678 3.35m-56.706-17.04a.45.45 0 0 1 .206.059 90.1 90.1 0 0 0 31.44 13.343c18.85 4.014 34.397 3.866 47.517-.441a59 59 0 0 0 7.537-3.277c1.114-.545 2.264-1.112 3.437-1.642 3.444-1.569 4.838-.958 7.146.051q1.49.677 3.046 1.186c8.85 2.849 18.069 1.215 24.234-.663 12.346-3.748 17.169-11.046 17.568-16.649a.36.36 0 0 1 .123-.254.36.36 0 0 1 .267-.092c9.249.633 18.224-3.528 22.863-10.604 4.978-7.578 4.159-18.211-1.858-24.198a.363.363 0 0 1 0-.523.37.37 0 0 1 .471-.036c1.21-.398 5.9-10.177 6.218-11.664.496-2.248.826-4.53.988-6.826a34.3 34.3 0 0 0-.133-6.797 35.6 35.6 0 0 0-11.549-22.091c-4.632-4.087-8.319-4.367-12.995-4.713a60 60 0 0 1-6.283-.736 16.34 16.34 0 0 0-9.522 1.2.37.37 0 0 1-.361-.03.36.36 0 0 1-.162-.324c.42-12.378-4.425-22.555-14.33-30.25-9.536-7.364-20.436-10.235-31.506-8.225-10.162 1.9-20.193 7.88-28.209 16.944a.4.4 0 0 1-.317.125.38.38 0 0 1-.288-.191C107.757 2.477 93.907.334 84.194 1.99 70.432 4.333 58.831 16.542 57.209 30.386a.36.36 0 0 1-.494.294c-5.325-2.003-11.94-1.399-18.158 1.547-5.678 2.776-10.538 7.157-14.926 11.487-5.303 5.214-10.62 11.046-13.652 18.027-1.969 4.573-2.028 9.241-2.087 14.182v.354c0 1.31 1.534 11.325 2.545 12.017a.37.37 0 0 1 .494.06.375.375 0 0 1-.044.522C2.944 95.555-.007 104.98 2.56 115.437c3.555 14.477 17.095 28.203 30.828 31.244 10.605 2.349 21.86-.42 29.367-7.216a.37.37 0 0 1 .25-.067\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F0CC00\",\n d: \"M84.01 113.228c-7.53 0-7.574-1.097-8.976-5.155-2.522-7.319-7.286-12.938-12.257-18.704-18.437-21.354-12.14-54.764 19.234-60.382 21.27-3.837 39.051 7.4 42.694 28.07 1.807 10.258-.479 19.993-6.232 28.616-3.916 5.89-7.146 11.833-8.275 18.895-.737 4.551-.391 7.239-8.392 7.239-2.899 0-5.79.449-8.68.692-3.04.169-6.07.729-9.116.729\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M84.01 113.559c-7.206 0-7.803-.935-9.16-4.919l-.162-.493c-2.552-7.408-7.457-13.086-12.191-18.579-9.684-11.222-12.892-26.119-8.364-38.88 4.19-11.782 14.065-19.669 27.812-22.15 10.863-1.952 21.195 0 29.087 5.485 7.456 5.155 12.316 13.108 14.012 22.887a39.03 39.03 0 0 1-6.283 28.888c-3.4 5.088-7.029 11.289-8.224 18.748-.059.375-.11.736-.162 1.097-.568 3.881-.936 6.451-8.592 6.451a56 56 0 0 0-5.9.419c-.922.096-1.836.192-2.758.273-1.032.088-2.058.199-3.09.317-1.998.266-4.01.419-6.025.456m6.07-85.014a44.7 44.7 0 0 0-8.003.736c-13.474 2.43-23.15 10.125-27.287 21.672-4.425 12.518-1.283 27.128 8.23 38.151 4.78 5.545 9.728 11.274 12.324 18.822l.17.493c1.216 3.572 1.511 4.418 8.459 4.418a54 54 0 0 0 5.973-.449 110 110 0 0 1 3.113-.324 85 85 0 0 0 2.743-.272 57 57 0 0 1 5.967-.42c7.013 0 7.293-1.944 7.861-5.825.052-.353.104-.736.17-1.104 1.209-7.592 4.89-13.888 8.334-19.043 5.863-8.785 7.935-18.32 6.173-28.35-1.689-9.573-6.439-17.327-13.733-22.408a35.62 35.62 0 0 0-20.495-6.097\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m80.466 122.338 26.909-2.219a2.033 2.033 0 0 0 1.861-2.192l-.392-4.734a2.034 2.034 0 0 0-2.196-1.858l-26.908 2.218a2.034 2.034 0 0 0-1.861 2.193l.391 4.733a2.035 2.035 0 0 0 2.196 1.859\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M80.293 122.72a2.4 2.4 0 0 1-2.397-2.21l-.391-4.727a2.405 2.405 0 0 1 2.213-2.592l26.903-2.209a2.42 2.42 0 0 1 1.755.57c.486.414.789 1.003.841 1.639l.391 4.727a2.4 2.4 0 0 1-1.307 2.337c-.282.143-.589.23-.905.255l-26.904 2.21zm26.513-11.017h-.133l-26.904 2.21a1.66 1.66 0 0 0-1.137.582 1.67 1.67 0 0 0-.39 1.214l.391 4.728a1.673 1.673 0 0 0 1.8 1.524l26.904-2.209a1.67 1.67 0 0 0 1.136-.582 1.66 1.66 0 0 0 .39-1.215l-.398-4.727a1.66 1.66 0 0 0-1.659-1.525\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m81.198 131.116 26.908-2.218a2.034 2.034 0 0 0 1.861-2.193l-.391-4.733a2.036 2.036 0 0 0-2.196-1.859l-26.909 2.219a2.033 2.033 0 0 0-1.86 2.192l.39 4.734a2.034 2.034 0 0 0 2.197 1.858\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M81.023 131.505a2.4 2.4 0 0 1-1.631-.637 2.4 2.4 0 0 1-.766-1.573l-.391-4.734a2.4 2.4 0 0 1 2.212-2.585l26.904-2.209a2.43 2.43 0 0 1 1.757.567 2.42 2.42 0 0 1 .839 1.642l.391 4.735a2.4 2.4 0 0 1-1.307 2.336 2.4 2.4 0 0 1-.905.256l-26.904 2.209h-.2zm26.513-11.017h-.14l-26.904 2.209a1.67 1.67 0 0 0-1.52 1.797l.391 4.735a1.663 1.663 0 0 0 1.8 1.517l26.904-2.209a1.66 1.66 0 0 0 1.448-1.151c.066-.209.09-.428.071-.646l-.391-4.735a1.67 1.67 0 0 0-1.659-1.517\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M82.638 131.011c.273 3.314 5.9 5.552 12.5 5 6.601-.552 11.801-3.682 11.513-6.981z\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M93.11 136.468c-5.973 0-10.575-2.209-10.84-5.427a.375.375 0 0 1 .338-.398l24.013-1.951a.37.37 0 0 1 .399.338c.295 3.564-4.912 6.812-11.852 7.364q-1.047.074-2.058.074m-10.052-5.155c.288 1.311 1.542 2.46 3.584 3.277a19.2 19.2 0 0 0 8.467 1.031c6.158-.508 11.026-3.255 11.18-6.222z\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M85.41 108.751a.375.375 0 0 1-.33-.253.4.4 0 0 1-.016-.145 92.2 92.2 0 0 0-1.084-22.886 25.3 25.3 0 0 1-5.715-2.018 18.13 18.13 0 0 1-7.759-6.745c-1.91-3.226-2.212-7.106-.855-10.125a3.33 3.33 0 0 1 2.382-2.092c2.279-.456 4.734 1.62 5.428 2.268 4.336 4.02 5.723 10.935 6.836 16.488l.14.736.177.906c3.62.743 7.354.743 10.974 0a44 44 0 0 1 .59-5.479c1.01-5.89 2.545-10.272 4.573-12.975a7.2 7.2 0 0 1 5.18-2.466 7.22 7.22 0 0 1 5.344 2.09 7.73 7.73 0 0 1 1.187 7.364 14.2 14.2 0 0 1-4.388 6.112 26.64 26.64 0 0 1-11.8 5.95c-.265 7.092.937 14.234 2.11 21.193l.147.869a.377.377 0 0 1-.302.427.367.367 0 0 1-.42-.302l-.148-.869c-1.173-6.936-2.368-14.065-2.132-21.156a27.9 27.9 0 0 1-10.804.037 92.9 92.9 0 0 1 1.047 22.776.37.37 0 0 1-.13.21.4.4 0 0 1-.231.085M72.668 65.157q-.26.003-.516.052A2.64 2.64 0 0 0 70.3 66.88a10.42 10.42 0 0 0 .818 9.448 17.5 17.5 0 0 0 7.456 6.465c1.67.82 3.427 1.453 5.237 1.886-.037-.192-.082-.39-.118-.582l-.14-.736c-1.1-5.45-2.456-12.224-6.638-16.09-1.136-1.053-2.803-2.114-4.248-2.114m33.527-.53h-.273a6 6 0 0 0-4.602 2.172c-1.955 2.615-3.444 6.87-4.425 12.659a46 46 0 0 0-.568 5.198 26 26 0 0 0 11.254-5.736 13.53 13.53 0 0 0 4.174-5.795 7.011 7.011 0 0 0-1.039-6.627 5.96 5.96 0 0 0-4.521-1.87\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#03C7E8\",\n d: \"M121.268 110.474c.302-1.171.59-2.335.9-3.498.162-.604.354-1.2.545-1.797a1.67 1.67 0 0 1 1.719-1.244c.929 0 1.851.147 2.78.221q.734.106 1.475.073c.369-.017.72-.16.996-.405a78 78 0 0 0 2.817-3.358 1.56 1.56 0 0 0 .192-1.472c-.317-1.097-.679-2.21-.996-3.27a4.7 4.7 0 0 1-.221-1.303 1.23 1.23 0 0 1 .361-.877 20.3 20.3 0 0 1 5.303-2.945 1.374 1.374 0 0 1 1.615.442c.782.906 1.593 1.79 2.345 2.717a2.22 2.22 0 0 0 2.257.92c1.202-.184 2.426-.301 3.636-.456a1.39 1.39 0 0 0 1.054-.736c.384-.678.738-1.37 1.114-2.047.376-.678.634-1.171.981-1.746a1.4 1.4 0 0 1 1.637-.736c1.733.45 3.466.913 5.163 1.421a1.48 1.48 0 0 1 1.04 1.554c0 .942-.155 1.878-.229 2.82-.037.442-.066.884-.066 1.333a1.81 1.81 0 0 0 .685 1.473 60 60 0 0 1 2.847 2.327 1.99 1.99 0 0 0 2.021.397c1.187-.353 2.36-.736 3.547-1.097a1.62 1.62 0 0 1 2.095.795 129 129 0 0 1 2.33 4.19 1.72 1.72 0 0 1 .06 1.961 1.7 1.7 0 0 1-.487.491c-.583.538-1.217 1.017-1.815 1.54-.427.368-.848.736-1.246 1.163a1.57 1.57 0 0 0-.465 1.296c.133 1.252.251 2.511.413 3.77.034.342.158.669.359.948.2.28.471.501.784.643.738.361 1.475.699 2.169 1.068q.678.329 1.312.736a1.47 1.47 0 0 1 .738 1.767 113 113 0 0 1-1.364 4.72 3.5 3.5 0 0 1-.318.678 1.34 1.34 0 0 1-1.364.773l-3.326-.28h-.251a2.36 2.36 0 0 0-2.434 1.075c-.56.781-1.209 1.473-1.821 2.209a2.38 2.38 0 0 0-.421 2.423 67 67 0 0 1 1.003 3.13c.303 1.053.141 1.62-.855 2.209-1.431.832-2.884 1.62-4.351 2.386a1.48 1.48 0 0 1-2.036-.361c-.649-.692-1.246-1.429-1.851-2.15-1.305-1.562-1.615-1.679-3.636-1.422l-2.36.324a2.217 2.217 0 0 0-1.77 1.23c-.42.832-.811 1.679-1.254 2.496a8 8 0 0 1-.818 1.201 1.11 1.11 0 0 1-1.232.419c-1.637-.463-3.282-.927-4.926-1.406a2.8 2.8 0 0 1-.635-.302 1.34 1.34 0 0 1-.744-1.377c.088-1.097.184-2.209.272-3.277v-1.001a1.732 1.732 0 0 0-.663-1.421c-.93-.737-1.851-1.473-2.781-2.21a1.9 1.9 0 0 0-1.917-.309c-1.04.346-2.095.663-3.142.994l-.118.037c-1.379.361-1.844.221-2.552-1.016a81 81 0 0 1-2.212-4.19 1.47 1.47 0 0 1 .42-2.04 33 33 0 0 1 2.471-2.062c.416-.283.739-.681.93-1.146a2.56 2.56 0 0 0 .147-1.468c-.17-1.126-.288-2.26-.436-3.387a1.4 1.4 0 0 0-.225-.66 1.4 1.4 0 0 0-.512-.474c-.996-.53-1.999-1.046-2.95-1.583a3.14 3.14 0 0 1-1.615-1.473zm36.661 3.49a10.79 10.79 0 0 0-7.505-9.46 10.8 10.8 0 0 0-4.221-.466 10.99 10.99 0 0 0-7.228 3.86 10.95 10.95 0 0 0-2.537 7.782 10.8 10.8 0 0 0 3.747 7.302 10.84 10.84 0 0 0 7.802 2.573c6.933-.545 10.62-6.878 9.942-11.591M125.973 28.36c.177-.736.354-1.398.539-2.098.096-.36.214-.736.332-1.075a1 1 0 0 1 1.025-.736c.56 0 1.113.088 1.674.132q.448.066.9.044a.95.95 0 0 0 .597-.243 44 44 0 0 0 1.689-2.017.95.95 0 0 0 .125-.884c-.199-.663-.413-1.31-.604-1.966a2.9 2.9 0 0 1-.133-.788.73.73 0 0 1 .221-.523 12.2 12.2 0 0 1 3.186-1.767.82.82 0 0 1 .966.265c.472.545.959 1.075 1.409 1.635a1.36 1.36 0 0 0 1.357.552c.737-.11 1.475-.184 2.212-.28a.82.82 0 0 0 .627-.449c.229-.405.443-.817.671-1.23.229-.412.384-.736.59-1.045a.84.84 0 0 1 .981-.427 89 89 0 0 1 3.12.846.89.89 0 0 1 .619.936c0 .567-.088 1.126-.132 1.693 0 .265-.045.538-.045.803a1.09 1.09 0 0 0 .413.898c.576.464 1.158.913 1.711 1.4a1.21 1.21 0 0 0 1.217.242c.738-.22 1.416-.449 2.124-.662a.967.967 0 0 1 1.261.478c.487.832.952 1.672 1.402 2.511a1.03 1.03 0 0 1 .184.791 1.04 1.04 0 0 1-.443.682c-.346.324-.737.611-1.084.92-.346.31-.516.457-.737.737a.94.94 0 0 0-.28.78c.081.737.147 1.473.243 2.268a1.21 1.21 0 0 0 .693.958l1.306.633c.265.14.531.28.781.442a.9.9 0 0 1 .428 1.06c-.265.943-.531 1.878-.811 2.813a1.8 1.8 0 0 1-.192.405.82.82 0 0 1-.819.471l-2.035-.184h-.148a1.41 1.41 0 0 0-1.475.648c-.331.464-.737.891-1.091 1.34a1.47 1.47 0 0 0-.251 1.473c.214.619.421 1.245.605 1.878a.96.96 0 0 1 .038.78.95.95 0 0 1-.562.545c-.855.501-1.725.972-2.61 1.473a.91.91 0 0 1-1.225-.22c-.383-.42-.737-.855-1.113-1.29-.782-.942-.966-1.016-2.213-.854l-1.416.192a1.32 1.32 0 0 0-1.062.736c-.251.494-.487 1.002-.737 1.473q-.211.393-.494.736a.68.68 0 0 1-.738.258l-2.95-.847a2 2 0 0 1-.383-.184.81.81 0 0 1-.472-.817c.051-.656.11-1.31.162-1.966v-.604a1.06 1.06 0 0 0-.398-.854l-1.675-1.318a1.14 1.14 0 0 0-1.15-.192c-.627.206-1.261.398-1.888.597h-.074c-.826.22-1.106.132-1.534-.604s-.907-1.672-1.335-2.518a.87.87 0 0 1-.001-.99.9.9 0 0 1 .252-.24 29 29 0 0 1 1.475-1.237 1.55 1.55 0 0 0 .649-1.569c-.103-.677-.17-1.362-.258-2.04a.871.871 0 0 0-.457-.685c-.598-.316-1.202-.625-1.8-.95a1.87 1.87 0 0 1-.966-.86zm22.03 2.085A6.48 6.48 0 0 0 145.725 26a6.5 6.5 0 0 0-4.766-1.512 6.64 6.64 0 0 0-4.352 2.318 6.62 6.62 0 0 0-1.548 4.677 6.5 6.5 0 0 0 2.251 4.39 6.5 6.5 0 0 0 4.689 1.545 6.43 6.43 0 0 0 5.72-4.444 6.4 6.4 0 0 0 .284-2.53\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m47.164 119.318.207-13.402 13.031 3.188 1.564 8.476 1.748 9.469-8.349-3.902z\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M63.714 127.418a.4.4 0 0 1-.155-.037l-16.55-7.732a.39.39 0 0 1-.214-.339l.207-13.402a.4.4 0 0 1 .147-.287.385.385 0 0 1 .31-.066l13.01 3.196a.36.36 0 0 1 .273.287l3.31 17.945a.36.36 0 0 1-.132.361.4.4 0 0 1-.206.074m-16.181-8.299 15.694 7.363-3.142-17.01-12.353-3.026z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E1DDDB\",\n d: \"m49.918 113.751 4.413-3.402-33.739-43.633-4.413 3.402z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M49.915 114.126h-.052a.33.33 0 0 1-.243-.14L15.88 70.349a.37.37 0 0 1-.074-.273.4.4 0 0 1 .14-.243l4.425-3.402a.355.355 0 0 1 .509.067l33.74 43.63a.366.366 0 0 1-.059.515l-4.425 3.402a.35.35 0 0 1-.221.081m-33.232-43.94 33.298 43.042 3.828-2.946-33.29-43.048z\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m20.585 66.719 6.077-1.245 33.74 43.63-6.077 1.252z\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M54.325 110.724a.373.373 0 0 1-.295-.147l-33.74-43.63a.375.375 0 0 1 .22-.59l6.078-1.244a.37.37 0 0 1 .369.133l33.74 43.637a.37.37 0 0 1-.22.582l-6.078 1.252zM21.241 66.962l33.24 42.989 5.272-1.09-33.21-42.982zM13.424 75.68l2.75-5.552 33.741 43.63-2.75 5.552z\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D23228\",\n d: \"m55.365 123.147.517-2.533 3.997-3.078 2.087.044 1.748 9.469z\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M63.714 127.418a.4.4 0 0 1-.155-.037l-8.356-3.903a.37.37 0 0 1-.2-.405l.524-2.533a.35.35 0 0 1 .133-.214l3.99-3.078a.46.46 0 0 1 .236-.081l2.094.052a.35.35 0 0 1 .347.294l1.748 9.47a.36.36 0 0 1-.133.361.43.43 0 0 1-.228.074m-7.936-4.477 7.449 3.475-1.564-8.475-1.666-.037-3.784 2.945z\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M32.916 17.882C21.094 20.378 12.959 29.2 14.744 37.588c1.032 4.867 5.162 8.52 10.811 10.235 1.874 3.196 5.664 7.01 13.32 9.83a21.35 21.35 0 0 1-4.942-8.762 30.5 30.5 0 0 0 5.428-.648c11.8-2.496 19.957-11.318 18.18-19.705-1.778-8.388-12.81-13.152-24.625-10.656\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M38.867 58a.4.4 0 0 1-.125 0c-6.416-2.364-10.93-5.678-13.437-9.868-5.9-1.848-9.912-5.655-10.93-10.47-1.844-8.572 6.468-17.607 18.46-20.163 11.999-2.533 23.238 2.371 25.074 10.943s-6.468 17.6-18.437 20.14a31 31 0 0 1-5.023.64 21.25 21.25 0 0 0 4.72 8.145.368.368 0 0 1-.258.633zm-5.9-39.764c-11.586 2.46-19.603 11.097-17.87 19.27.967 4.58 4.816 8.211 10.562 9.964.086.03.161.086.213.162 2.213 3.785 6.151 6.855 11.72 9.13a21.7 21.7 0 0 1-4.02-7.775.37.37 0 0 1 .346-.464c1.8-.054 3.593-.269 5.355-.64 11.6-2.453 19.632-11.098 17.899-19.272S44.59 15.791 32.989 18.236zM201.309 113.64l-55.748-18.719 23.873-70.868 44.479 14.941 7.397 15.265z\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M201.331 114.008h-.118l-55.747-18.726a.36.36 0 0 1-.249-.322.4.4 0 0 1 .02-.142l23.865-70.868a.38.38 0 0 1 .472-.228l44.479 14.933q.071.024.126.074a.4.4 0 0 1 .088.118l7.375 15.265c.037.09.037.19 0 .28l-20.008 59.381a.4.4 0 0 1-.07.126.4.4 0 0 1-.115.087.4.4 0 0 1-.118.022m-55.312-19.315 55.054 18.483 19.831-58.91-7.257-14.977-43.984-14.728z\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m195.697 117.3-55.748-18.719 23.873-70.868L208.3 42.646l7.398 15.273z\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M195.697 117.646a.3.3 0 0 1-.118 0l-55.748-18.719a.37.37 0 0 1-.229-.464l23.866-70.868a.4.4 0 0 1 .192-.214.32.32 0 0 1 .272 0l44.486 14.934a.35.35 0 0 1 .214.192l7.375 15.265a.36.36 0 0 1 0 .272l-20.001 59.388a.338.338 0 0 1-.184.207.3.3 0 0 1-.125.007m-55.313-19.322 55.054 18.49 19.832-58.91-7.265-14.993-43.955-14.734z\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m208.3 42.646-4.233 11.363 11.631 3.91z\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M215.698 58.28a.3.3 0 0 1-.118 0l-11.631-3.91a.36.36 0 0 1-.214-.185.4.4 0 0 1 0-.287l4.234-11.362a.37.37 0 0 1 .536-.187.37.37 0 0 1 .142.158l7.375 15.265a.36.36 0 0 1-.059.404.38.38 0 0 1-.265.104m-11.159-4.5 10.451 3.483-6.638-13.71z\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D7D3D1\",\n d: \"M205.83 63.353a.3.3 0 0 1-.118 0l-40.15-13.498a.37.37 0 0 1-.159-.59.35.35 0 0 1 .252-.128.4.4 0 0 1 .143.019l40.15 13.483a.372.372 0 0 1 .16.67.37.37 0 0 1-.278.066zM203.293 70.886a.3.3 0 0 1-.118 0l-40.15-13.483a.377.377 0 0 1-.236-.464.37.37 0 0 1 .472-.235l40.15 13.483a.372.372 0 0 1 .16.67.37.37 0 0 1-.278.066zM200.756 78.42a.3.3 0 0 1-.118 0l-40.15-13.498a.39.39 0 0 1-.25-.486.386.386 0 0 1 .486-.25l40.15 13.482a.372.372 0 1 1-.118.737zM198.219 85.982a.3.3 0 0 1-.118 0l-40.15-13.483a.38.38 0 0 1-.235-.464.368.368 0 0 1 .472-.236l40.149 13.447a.372.372 0 0 1 .16.67.37.37 0 0 1-.278.066M195.682 93.486a.3.3 0 0 1-.118 0l-40.15-13.483a.39.39 0 0 1-.25-.486.386.386 0 0 1 .486-.25l40.15 13.482a.372.372 0 1 1-.118.737M181.337 97.028a.3.3 0 0 1-.118 0l-28.342-9.507a.4.4 0 0 1-.226-.191.38.38 0 0 1-.024-.295.38.38 0 0 1 .191-.226.4.4 0 0 1 .295-.024l28.342 9.514a.375.375 0 0 1 .229.47.36.36 0 0 1-.347.259M136.136 64.936a1.845 1.845 0 0 1-1.808-2.202 1.846 1.846 0 0 1 3.345-.656 1.84 1.84 0 0 1-1.537 2.858m0-2.945a1.105 1.105 0 1 0 1.106 1.105 1.1 1.1 0 0 0-1.106-1.098zM31.706 123.795a1.85 1.85 0 0 1-1.026-.307 1.84 1.84 0 0 1-.79-1.889 1.84 1.84 0 0 1 1.446-1.45 1.844 1.844 0 0 1 2.206 1.805 1.84 1.84 0 0 1-1.836 1.841m0-2.946a1.107 1.107 0 0 0-1.093 1.316 1.105 1.105 0 1 0 1.093-1.316M43.882 65.842a.37.37 0 0 1-.369-.368V61.63a.368.368 0 0 1 .738 0v3.844a.375.375 0 0 1-.369.368\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D7D3D1\",\n d: \"M45.807 63.89h-3.85a.37.37 0 1 1 0-.736h3.85a.37.37 0 0 1 .369.369.376.376 0 0 1-.369.368M177.532 136.792a.37.37 0 0 1-.369-.369v-3.843a.37.37 0 1 1 .738 0v3.843a.38.38 0 0 1-.11.259.38.38 0 0 1-.259.11\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D7D3D1\",\n d: \"M179.457 134.855h-3.85a.37.37 0 0 1-.261-.629.37.37 0 0 1 .261-.107h3.85a.37.37 0 0 1 .369.368.376.376 0 0 1-.369.368M106.658 21.424a.37.37 0 0 1-.368-.368v-3.837a.369.369 0 0 1 .737 0v3.837a.37.37 0 0 1-.369.368\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D7D3D1\",\n d: \"M108.583 19.51h-3.864a.376.376 0 0 1-.369-.369.37.37 0 0 1 .369-.368h3.849a.369.369 0 0 1 .015.737M28.498 38.913a3.5 3.5 0 0 1-.48-.059 4.55 4.55 0 0 1-3.333-2.341 3.75 3.75 0 0 1-2.537 1.472.372.372 0 0 1-.088-.736 3.12 3.12 0 0 0 2.271-1.473 4.5 4.5 0 0 1 .17-3.792.36.36 0 0 1 .317-.192.38.38 0 0 1 .324.177 3.93 3.93 0 0 1 .045 3.785v.066l.066.148a3.62 3.62 0 0 0 2.91 2.171 3.63 3.63 0 0 0 3.337-1.435c.343-.394.616-.845.803-1.333a2.28 2.28 0 0 1 .14-2.482.39.39 0 0 1 .37-.125.38.38 0 0 1 .272.265 4.2 4.2 0 0 1-.051 2.29 1.72 1.72 0 0 0 1.475.884 1.94 1.94 0 0 0 1.622-1.03c.192-.327.308-.692.34-1.069a3.6 3.6 0 0 1-.237-1.2.37.37 0 0 1 .28-.36.37.37 0 0 1 .42.19c.188.386.282.81.274 1.238.185.426.46.807.804 1.12a2.95 2.95 0 0 0 3.472.527 2.95 2.95 0 0 0 .953-.8q.277-.34.464-.737a5 5 0 0 1-.494-.677 1.57 1.57 0 0 1 .17-1.767.74.74 0 0 1 .922-.074 1.13 1.13 0 0 1 .427.847c.048.497-.007.998-.162 1.473a1.95 1.95 0 0 0 2.213.338c1.829-.795 3.223-3.615 2.706-5.486a.367.367 0 1 1 .708-.198c.62 2.209-.958 5.427-3.127 6.362a2.66 2.66 0 0 1-2.795-.317q-.202.353-.464.663a3.69 3.69 0 0 1-2.666 1.398 3.7 3.7 0 0 1-2.821-1.052 3.7 3.7 0 0 1-.51-.574q-.096.248-.228.478a2.68 2.68 0 0 1-2.139 1.4 2.36 2.36 0 0 1-1.866-.825q-.302.593-.737 1.097a4.71 4.71 0 0 1-3.54 1.745m-3.688-5.766a3.8 3.8 0 0 0 0 1.561 3.2 3.2 0 0 0 .008-1.56zm18.254-.92a.43.43 0 0 0-.111.235.86.86 0 0 0 .059.604q.064.11.14.214a2.7 2.7 0 0 0 0-.737c0-.235-.081-.301-.103-.316zM128.791 84.082a1.62 1.62 0 1 0 0-3.24c-.896 0-1.623.725-1.623 1.62s.727 1.62 1.623 1.62M57.777 93.552a1.621 1.621 0 1 0 0-3.24 1.621 1.621 0 1 0 0 3.24\"\n})));\nexport { SvgEmptyCourse as ReactComponent };\nexport default __webpack_public_path__ + \"d8973fc93cdf3e6c9a09f948bcbbc707.svg\";","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n lookingForChallengePrompt: {\n id: 'Dashboard.NoCoursesView.lookingForChallengePrompt',\n defaultMessage: 'Looking for a new challenge?',\n description: 'Prompt user for new challenge',\n },\n exploreCoursesPrompt: {\n id: 'Dashboard.NoCoursesView.exploreCoursesPrompt',\n defaultMessage: 'Explore our courses to add them to your dashboard.',\n description: 'Prompt user to explore more courses',\n },\n exploreCoursesButton: {\n id: 'Dashboard.NoCoursesView.exploreCoursesButton',\n defaultMessage: 'Explore courses',\n description: 'Button to explore more courses',\n },\n bannerAlt: {\n id: 'Dashboard.NoCoursesView.bannerAlt',\n defaultMessage: 'No Courses view banner',\n description: 'No Courses view basnner',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button, Image } from '@openedx/paragon';\nimport { Search } from '@openedx/paragon/icons';\nimport { baseAppUrl } from 'data/services/lms/urls';\n\nimport emptyCourseSVG from 'assets/empty-course.svg';\nimport { reduxHooks } from 'hooks';\n\nimport messages from './messages';\nimport './index.scss';\n\nexport const NoCoursesView = () => {\n const { formatMessage } = useIntl();\n const { courseSearchUrl } = reduxHooks.usePlatformSettingsData();\n return (\n \n {formatMessage(messages.bannerAlt)}\n

\n {formatMessage(messages.lookingForChallengePrompt)}\n

\n

\n {formatMessage(messages.exploreCoursesPrompt)}\n

\n \n {formatMessage(messages.exploreCoursesButton)}\n \n \n );\n};\n\nexport default NoCoursesView;\n","import React from 'react';\n\nimport { PluginSlot } from '@openedx/frontend-plugin-framework';\nimport NoCoursesView from 'containers/CoursesPanel/NoCoursesView';\n\nexport const NoCoursesViewSlot = () => (\n \n \n \n);\n\nexport default NoCoursesViewSlot;\n","import React from 'react';\n\nimport queryString from 'query-string';\n\nimport { ListPageSize, SortKeys } from 'data/constants/app';\nimport { reduxHooks } from 'hooks';\nimport { StrictDict } from 'utils';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n sortBy: (val) => React.useState(val), // eslint-disable-line\n});\n\n/**\n * Filters are fetched from the store and used to generate a list of \"visible\" courses.\n * Other values returned and used for the layout of the CoursesPanel component are:\n * the current page number, the sorting method, and whether or not to enable filters and pagination.\n *\n * @returns data for the CoursesPanel component\n */\nexport const useCourseListData = () => {\n const filters = reduxHooks.useFilters();\n const removeFilter = reduxHooks.useRemoveFilter();\n const pageNumber = reduxHooks.usePageNumber();\n const setPageNumber = reduxHooks.useSetPageNumber();\n\n const [sortBy, setSortBy] = module.state.sortBy(SortKeys.enrolled);\n\n const querySearch = queryString.parse(window.location.search, { parseNumbers: true });\n\n const { numPages, visibleList } = reduxHooks.useCurrentCourseList({\n sortBy,\n filters,\n pageSize: querySearch?.disable_pagination === 1 ? 0 : ListPageSize,\n });\n\n const handleRemoveFilter = (filter) => () => removeFilter(filter);\n\n return {\n pageNumber,\n numPages,\n setPageNumber,\n visibleList,\n filterOptions: {\n sortBy,\n setSortBy,\n filters,\n handleRemoveFilter,\n },\n showFilters: filters.length > 0,\n };\n};\n\nexport default useCourseListData;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n myCourses: {\n id: 'dashboard.mycourses',\n defaultMessage: 'My Courses',\n description: 'Course list heading',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { reduxHooks } from 'hooks';\nimport {\n CourseFilterControls,\n} from 'containers/CourseFilterControls';\nimport CourseListSlot from 'plugin-slots/CourseListSlot';\nimport NoCoursesViewSlot from 'plugin-slots/NoCoursesViewSlot';\n\nimport { useCourseListData } from './hooks';\n\nimport messages from './messages';\n\nimport './index.scss';\n\n/**\n * Renders the list of CourseCards, as well as the controls (CourseFilterControls) for modifying the list.\n * Also houses the NoCoursesView to display if the user hasn't enrolled in any courses.\n * @returns List of courses as CourseCards or empty state\n*/\nexport const CoursesPanel = () => {\n const { formatMessage } = useIntl();\n const hasCourses = reduxHooks.useHasCourses();\n const courseListData = useCourseListData();\n return (\n
\n
\n

{formatMessage(messages.myCourses)}

\n
\n \n
\n
\n {hasCourses ? : }\n
\n );\n};\n\nCoursesPanel.propTypes = {};\n\nexport default CoursesPanel;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n loadingSR: {\n id: 'learner-dash.loadingSR',\n description: 'Page loading screen-reader text',\n defaultMessage: 'Loading...',\n },\n errorMessage: {\n id: 'learner-dash.error-page-message',\n defaultMessage: 'If you experience repeated failures, please email support at {supportEmail}',\n description: 'Error page message',\n },\n pageTitle: {\n id: 'learner-dash.title',\n description: 'Page title: Learner Home',\n defaultMessage: 'Learner Home',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport { useWindowSize, breakpoints } from '@openedx/paragon';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { apiHooks } from 'hooks';\nimport { StrictDict } from 'utils';\n\nimport appMessages from 'messages';\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n sidebarShowing: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useInitializeDashboard = () => {\n const initialize = apiHooks.useInitializeApp();\n React.useEffect(() => { initialize(); }, []); // eslint-disable-line\n};\n\nexport const useDashboardMessages = () => {\n const { formatMessage } = useIntl();\n return {\n spinnerScreenReaderText: formatMessage(appMessages.loadingSR),\n pageTitle: formatMessage(appMessages.pageTitle),\n };\n};\n\nexport const useDashboardLayoutData = () => {\n const { width } = useWindowSize();\n\n const [sidebarShowing, setSidebarShowing] = module.state.sidebarShowing(true);\n return {\n isDashboardCollapsed: width < breakpoints.large.maxWidth,\n sidebarShowing,\n setSidebarShowing,\n };\n};\n\nexport default {\n useDashboardLayoutData,\n useInitializeDashboard,\n useDashboardMessages,\n};\n","import React from 'react';\nimport { Spinner } from '@openedx/paragon';\n\nimport hooks from './hooks';\n\nexport const LoadingView = () => {\n const { spinnerScreenReaderText } = hooks.useDashboardMessages();\n\n return (\n
\n \n
\n );\n};\n\nexport default LoadingView;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgMoreCoursesSidewidget = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 186,\n height: 125,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#03C7E8\",\n d: \"M136.816 127H-34L.184-2H171z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m117.806 36.935-3.417 51.22c0 1.893-2.119 3.432-4.742 3.432H38.889c-2.615 0-4.745-1.539-4.745-3.433l3.418-51.219c0-1.894 2.13-3.433 4.745-3.433h70.758c2.625 0 4.741 1.54 4.741 3.433\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M109.651 91.761H38.893c-2.712 0-4.918-1.619-4.918-3.607l3.417-51.222c0-1.989 2.206-3.604 4.918-3.604h70.758c2.709 0 4.915 1.615 4.915 3.604l-3.417 51.222c0 2.006-2.206 3.607-4.915 3.607m-67.34-58.085c-2.522 0-4.572 1.459-4.572 3.256l-3.417 51.222c0 1.797 2.05 3.259 4.571 3.259h70.758c2.518 0 4.568-1.462 4.568-3.259l3.417-51.222c0-1.797-2.05-3.256-4.568-3.256z\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M114.388 36.935v2.695H37.575v-2.695c0-1.894 2.13-3.433 4.745-3.433h67.341c2.612 0 4.727 1.54 4.727 3.433\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M117.806 39.804h-80.23a.174.174 0 0 1-.174-.174v-2.698c0-1.988 2.206-3.604 4.919-3.604h70.758c2.709 0 4.915 1.616 4.915 3.604v2.698a.2.2 0 0 1-.015.07.173.173 0 0 1-.173.104m-80.06-.348h79.89v-2.524c0-1.797-2.05-3.256-4.568-3.256H42.31c-2.521 0-4.571 1.46-4.571 3.256z\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M101.787 43.404H47.55v5.418h54.237z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M101.788 48.996H47.55a.174.174 0 0 1-.173-.174v-5.418a.174.174 0 0 1 .173-.174h54.238c.045 0 .089.02.121.052a.18.18 0 0 1 .052.122v5.418a.173.173 0 0 1-.173.174m-54.064-.349h53.89v-5.069h-53.89z\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D23228\",\n d: \"M101.787 43.404h-7.356v5.418h7.356z\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M101.787 48.996H94.43a.174.174 0 0 1-.173-.174v-5.418a.174.174 0 0 1 .173-.174h7.357q.07.002.122.052a.18.18 0 0 1 .051.122v5.418c0 .046-.018.09-.05.123a.18.18 0 0 1-.123.05m-7.183-.349h7.01v-5.069h-6.996z\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M112.707 52.575h-27.99l-3.418 28.097h27.991z\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#03C7E8\",\n d: \"M72.745 53.275H41.608v.696h31.137zM62.319 55.357h-20.71v.696h20.71z\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M75 57.435H41.608v.697H75zM70.96 59.517H41.607v.697H70.96zM46.26 61.739h-4.415v.348h4.415zM49.992 61.739H47.55v.348h2.442zM53.478 61.739h-2.359v.348h2.359z\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#03C7E8\",\n d: \"M66.03 65.844H41.608v.696H66.03zM70.96 67.926H41.607v.696H70.96z\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M61.24 70.004H41.608v.697H61.24zM67.345 72.086H41.608v.697h25.737zM44.05 74.308h-2.205v.348h2.206zM49.992 74.308h-4.814v.348h4.814zM52.715 74.308h-1.596v.348h1.596z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#03C7E8\",\n d: \"M68.916 78.413H41.608v.696h27.308zM72.745 80.494H41.608v.697h31.137z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M62.93 82.573H41.607v.696H62.93zM59.173 84.652H41.608v.696h17.565zM47.585 86.877h-5.74v.348h5.74zM52.298 86.877h-3.246v.348h3.246z\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#03C7E8\",\n d: \"M41.557 37.712c.632 0 1.144-.515 1.144-1.15s-.512-1.148-1.144-1.148-1.145.514-1.145 1.148c0 .635.513 1.15 1.145 1.15\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E7E8\",\n d: \"M44.998 37.712c.632 0 1.145-.515 1.145-1.15s-.513-1.148-1.145-1.148-1.145.514-1.145 1.148c0 .635.513 1.15 1.145 1.15M48.439 37.712c.632 0 1.144-.515 1.144-1.15s-.512-1.148-1.144-1.148c-.633 0-1.145.514-1.145 1.148 0 .635.512 1.15 1.145 1.15\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M97.575 47.241a1.464 1.464 0 0 1-1.437-1.187 1.48 1.48 0 0 1 .88-1.647 1.46 1.46 0 0 1 1.78.543 1.477 1.477 0 0 1-.66 2.18c-.178.074-.37.112-.563.111m0-2.594a1.1 1.1 0 0 0-.791.328 1.125 1.125 0 0 0 .79 1.92 1.12 1.12 0 0 0 1.036-.695 1.13 1.13 0 0 0-.607-1.469 1.1 1.1 0 0 0-.428-.084\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M99.556 47.93a.18.18 0 0 1-.125-.052l-1.065-1.069a.174.174 0 0 1 .056-.282.17.17 0 0 1 .19.038l1.065 1.07a.175.175 0 0 1-.121.295M122.772 62.282h-28.48l-3.417 21.207h28.48z\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M119.356 83.663h-28.48a.173.173 0 0 1-.174-.174l3.417-21.207a.174.174 0 0 1 .174-.174h28.48c.046 0 .089.02.122.052.032.032.05.076.051.122l-3.417 21.207c0 .046-.018.09-.051.123a.17.17 0 0 1-.122.05m-28.307-.348h28.133l3.417-20.859H94.466z\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D23228\",\n d: \"M95.223 79.651h-.036c-2.565-.08-3.27-2.467-3.277-2.492a.18.18 0 0 1 .018-.137.18.18 0 0 1 .112-.085.19.19 0 0 1 .195.065q.023.029.032.063c.026.09.648 2.163 2.945 2.237h.011c1.13 0 1.928-2.96 2.63-5.592.715-2.726 1.431-5.301 2.594-5.567a1.8 1.8 0 0 1 1.377.185c1.038.64 1.432 2.43 1.908 4.498a27 27 0 0 0 .937 3.467c.623 1.684 1.789 2.73 2.913 2.603 1.391-.157 2.443-2.058 2.805-5.088 1.034-8.639 4.104-9.586 5.367-9.593h.046c3.163 0 4.798 1.66 5.829 5.91a.18.18 0 0 1-.023.135.186.186 0 0 1-.253.057.18.18 0 0 1-.082-.112c-.998-4.106-2.483-5.64-5.481-5.64h-.043c-2.451 0-4.33 3.494-5.01 9.285-.386 3.247-1.524 5.214-3.12 5.392-1.284.15-2.608-.992-3.288-2.83a28 28 0 0 1-.952-3.495c-.429-1.912-.833-3.715-1.749-4.281a1.42 1.42 0 0 0-1.106-.14c-.959.22-1.685 2.929-2.326 5.316-.826 3.001-1.574 5.84-2.973 5.84\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M116.702 75.035h-3.979a.17.17 0 0 1-.122-.05.173.173 0 0 1 .122-.297h3.979a.173.173 0 0 1 .122.297.17.17 0 0 1-.122.05M116.702 76.682h-3.979a.173.173 0 0 1-.122-.297.17.17 0 0 1 .122-.051h3.979a.17.17 0 0 1 .122.051.173.173 0 0 1-.122.297M114.711 78.322h-1.988a.17.17 0 0 1-.122-.051.173.173 0 0 1 .122-.297h1.988a.173.173 0 0 1 .122.297.17.17 0 0 1-.122.05M99.472 64.472h-3.978a.173.173 0 0 1-.174-.174.175.175 0 0 1 .174-.174h3.978a.173.173 0 0 1 .122.296.18.18 0 0 1-.122.052M99.472 66.136h-3.978a.173.173 0 0 1-.174-.174.175.175 0 0 1 .174-.174h3.978a.177.177 0 0 1 .174.174.174.174 0 0 1-.174.174M97.481 67.77h-1.987a.173.173 0 0 1-.174-.175.174.174 0 0 1 .174-.174h1.987a.173.173 0 0 1 .174.174.174.174 0 0 1-.174.174\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"m43.157 66.54-3.453-1.771-4.195 8.24 3.453 1.772z\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M38.958 74.955a.16.16 0 0 1-.076-.02l-3.469-1.77a.17.17 0 0 1-.076-.233l4.197-8.24a.17.17 0 0 1 .1-.088.17.17 0 0 1 .132 0l3.469 1.772a.17.17 0 0 1 .073.234L39.12 74.86a.18.18 0 0 1-.1.084.14.14 0 0 1-.063.01m-3.219-2.02 3.146 1.613 4.052-7.931L39.794 65z\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m39.973 72.348-3.095-1.588a.86.86 0 0 0-1.162.377l-7.209 14.16a.87.87 0 0 0 .377 1.166l3.094 1.587a.86.86 0 0 0 1.162-.377l7.21-14.159a.87.87 0 0 0-.377-1.166\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M32.372 88.321c-.163 0-.324-.039-.469-.115l-3.1-1.587a1.044 1.044 0 0 1-.451-1.393l7.21-14.16a1.04 1.04 0 0 1 1.388-.453l3.097 1.588a1.043 1.043 0 0 1 .451 1.393l-7.204 14.16a1.04 1.04 0 0 1-.922.567m4.113-17.481a.694.694 0 0 0-.614.383l-7.21 14.156a.7.7 0 0 0 .301.93l3.097 1.588a.69.69 0 0 0 .927-.3l7.21-14.15a.7.7 0 0 0-.301-.93l-3.098-1.587a.66.66 0 0 0-.312-.09\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M49.374 49.56a9.93 9.93 0 0 0-11.002 1.288 10 10 0 0 0-3.127 4.89c-.537 1.904-.5 3.926.108 5.809a10 10 0 0 0 3.307 4.769 9.934 9.934 0 0 0 11.043.876 10 10 0 0 0 4.01-4.19 10.04 10.04 0 0 0 .6-7.622 10 10 0 0 0-4.939-5.82M41.462 65.09a7.43 7.43 0 0 1-3.1-3 7.47 7.47 0 0 1 .657-8.25 7.4 7.4 0 0 1 3.537-2.467 7.4 7.4 0 0 1 4.306-.079 7.4 7.4 0 0 1 3.625 2.336 7.472 7.472 0 0 1 .958 8.22 7.43 7.43 0 0 1-4.322 3.695 7.4 7.4 0 0 1-5.66-.455\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#002121\",\n d: \"M44.831 68.647c-2.56.006-5.03-.957-6.915-2.697a10.239 10.239 0 0 1-1.113-13.822 10.16 10.16 0 0 1 6.394-3.777c2.528-.406 5.117.16 7.248 1.586a10.2 10.2 0 0 1 4.249 6.104c.6 2.498.24 5.133-1.01 7.377a10.18 10.18 0 0 1-5.731 4.727c-1.008.331-2.062.5-3.122.502m.02-20.013a9.9 9.9 0 0 0-3.024.48 9.76 9.76 0 0 0-5.49 4.527 9.82 9.82 0 0 0-.973 7.066 9.8 9.8 0 0 0 4.064 5.851A9.72 9.72 0 0 0 52.5 64.483a9.81 9.81 0 0 0-1.033-13.244 9.73 9.73 0 0 0-6.615-2.604m-.023 17.45a7.54 7.54 0 0 1-3.441-.832 7.62 7.62 0 0 1-3.627-4.019 7.66 7.66 0 0 1-.05-5.421 7.62 7.62 0 0 1 3.55-4.086 7.57 7.57 0 0 1 5.358-.687 7.6 7.6 0 0 1 4.459 3.06 7.65 7.65 0 0 1-1.198 10.065 7.58 7.58 0 0 1-5.051 1.92m-3.278-1.142a7.22 7.22 0 0 0 7.988-.94 7.28 7.28 0 0 0 2.273-3.547 7.3 7.3 0 0 0-.07-4.217 7.27 7.27 0 0 0-2.402-3.466 7.23 7.23 0 0 0-8.023-.645 7.26 7.26 0 0 0-2.92 3.038 7.3 7.3 0 0 0-.434 5.542 7.27 7.27 0 0 0 3.588 4.235\"\n})));\nexport { SvgMoreCoursesSidewidget as ReactComponent };\nexport default __webpack_public_path__ + \"8e66153612162aadaba7191d411a3cfc.svg\";","import { StrictDict } from 'utils';\nimport track from 'tracking';\n\nexport const linkNames = StrictDict({\n findCoursesWidget: 'learner_home_widget_explore',\n});\n\nexport const findCoursesWidgetClicked = (href) => track.findCourses.findCoursesClicked(href, {\n linkName: linkNames.findCoursesWidget,\n});\n\nexport default {\n linkNames,\n findCoursesWidgetClicked,\n};\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n lookingForChallengePrompt: {\n id: 'WidgetSidebar.lookingForChallengePrompt',\n defaultMessage: 'Looking for a new challenge?',\n description: 'Prompt user for new challenge',\n },\n findCoursesButton: {\n id: 'WidgetSidebar.findCoursesButton',\n defaultMessage: 'Find a course {arrow}',\n description: 'Button to explore more courses',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Card, Hyperlink, Icon } from '@openedx/paragon';\nimport { ArrowForward } from '@openedx/paragon/icons';\n\nimport { reduxHooks } from 'hooks';\nimport moreCoursesSVG from 'assets/more-courses-sidewidget.svg';\nimport { baseAppUrl } from 'data/services/lms/urls';\n\nimport { findCoursesWidgetClicked } from './track';\nimport messages from './messages';\nimport './index.scss';\n\nexport const arrowIcon = ();\n\nexport const LookingForChallengeWidget = () => {\n const { formatMessage } = useIntl();\n const { courseSearchUrl } = reduxHooks.usePlatformSettingsData();\n const hyperlinkDestination = baseAppUrl(courseSearchUrl) || '';\n\n return (\n \n \n \n

\n {formatMessage(messages.lookingForChallengePrompt)}\n

\n
\n \n {formatMessage(messages.findCoursesButton, { arrow: arrowIcon })}\n \n
\n
\n
\n );\n};\n\nLookingForChallengeWidget.propTypes = {};\n\nexport default LookingForChallengeWidget;\n","import React from 'react';\n\nimport { PluginSlot } from '@openedx/frontend-plugin-framework';\nimport LookingForChallengeWidget from 'widgets/LookingForChallengeWidget';\n\n// eslint-disable-next-line arrow-body-style\nexport const WidgetSidebarSlot = () => (\n \n \n \n);\n\nexport default WidgetSidebarSlot;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Container, Col, Row } from '@openedx/paragon';\n\nimport WidgetSidebarSlot from 'plugin-slots/WidgetSidebarSlot';\n\nimport hooks from './hooks';\n\nexport const columnConfig = {\n courseList: {\n withSidebar: {\n lg: { span: 12, offset: 0 },\n xl: { span: 8, offset: 0 },\n },\n noSidebar: {\n lg: { span: 12, offset: 0 },\n xl: { span: 12, offset: 0 },\n },\n },\n sidebar: {\n lg: { span: 12, offset: 0 },\n xl: { span: 4, offset: 0 },\n },\n};\n\nexport const DashboardLayout = ({ children }) => {\n const {\n isCollapsed,\n sidebarShowing,\n } = hooks.useDashboardLayoutData();\n\n const courseListColumnProps = sidebarShowing\n ? columnConfig.courseList.withSidebar\n : columnConfig.courseList.noSidebar;\n\n return (\n \n \n \n {children}\n \n \n {!isCollapsed && (

 

)}\n \n \n
\n
\n );\n};\nDashboardLayout.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default DashboardLayout;\n","import React from 'react';\n\nimport { reduxHooks } from 'hooks';\nimport { RequestKeys } from 'data/constants/requests';\nimport EnterpriseDashboardModal from 'containers/EnterpriseDashboardModal';\nimport SelectSessionModal from 'containers/SelectSessionModal';\nimport CoursesPanel from 'containers/CoursesPanel';\n\nimport LoadingView from './LoadingView';\nimport DashboardLayout from './DashboardLayout';\nimport hooks from './hooks';\nimport './index.scss';\n\nexport const Dashboard = () => {\n hooks.useInitializeDashboard();\n const { pageTitle } = hooks.useDashboardMessages();\n const hasCourses = reduxHooks.useHasCourses();\n const hasAvailableDashboards = reduxHooks.useHasAvailableDashboards();\n const initIsPending = reduxHooks.useRequestIsPending(RequestKeys.initialize);\n const showSelectSessionModal = reduxHooks.useShowSelectSessionModal();\n\n return (\n
\n

{pageTitle}

\n {!initIsPending && (\n <>\n {hasAvailableDashboards && }\n {(hasCourses && showSelectSessionModal) && }\n \n )}\n
\n {initIsPending\n ? ()\n : (\n \n \n \n )}\n
\n
\n );\n};\n\nexport default Dashboard;\n","import { StrictDict } from 'utils';\n\nexport const requestStatuses = StrictDict({\n pending: 'pending',\n approved: 'approved',\n rejected: 'rejected',\n});\n\nexport default { requestStatuses };\n","import { StrictDict } from 'utils';\nimport creditVals from 'data/constants/credit';\n\nexport const providers = StrictDict({\n edx: { name: 'edX Course Provider' },\n mit: { name: 'MIT' },\n});\n\nexport const relatedPrograms = [\n {\n provider: 'HarvardX',\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg',\n logoImgSrc: 'https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png',\n title: 'Relativity in Modern Mechanics',\n programUrl: 'www.edx/my-program',\n programType: 'MicroBachelors Program',\n numberOfCourses: 3,\n },\n {\n provider: 'University of Maryland',\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg',\n logoImgSrc: 'https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png',\n title: 'Pandering for Modern Professionals',\n programUrl: 'www.edx/my-program-2',\n programType: 'MicroBachelors Program',\n programTypeUrl: 'www.edx/my-program-type',\n numberOfCourses: 3,\n },\n {\n provider: 'HarvardX',\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg',\n logoImgSrc: 'https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png',\n title: 'Relativity in Modern Mechanics',\n programUrl: 'www.edx/my-program-3',\n programType: 'MicroBachelors Program',\n numberOfCourses: 3,\n },\n {\n provider: 'University of Maryland',\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg',\n logoImgSrc: 'https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png',\n title: 'Pandering for Modern Professionals',\n programUrl: 'www.edx/my-program-4',\n programType: 'MicroBachelors Program',\n programTypeUrl: 'www.edx/my-program-type',\n numberOfCourses: 3,\n },\n];\n\nexport const genCardId = (index) => `card-id${index}`;\nexport const genCourseId = (index) => `course-number${index}-course-id${index}`;\nexport const genCourseNumber = (index) => `course-number${index}`;\nexport const genCourseShareUrl = (index) => `home.edx.org?social-share-url/${index}`;\nexport const genEntitlementUUID = (index) => `entitlement-course-uuid-${index}`;\n\nconst bannerImgSrc = '/asset-v1:edX+DemoX+Demo_Course+type@asset+block@images_course_image.jpg';\n\nexport const farPastDate = '1900-11-11T00:00:00Z';\nexport const pastDate = '2000-11-11T00:00:00Z';\nexport const futureDate = '3030-11-11T00:00:00Z';\nexport const farFutureDate = '4040-11-11T00:00:00Z';\nexport const soonDate = new Date();\nsoonDate.setDate(soonDate.getDate() + 60);\nexport const soonDateStr = soonDate.toDateString();\n\nexport const globalData = {\n emailConfirmation: {\n isNeeded: true,\n sendEmailUrl: 'sendConfirmation@edx.org',\n },\n enterpriseDashboard: { label: 'edX, Inc.', url: '/edx-dashboard' },\n platformSettings: {\n supportEmail: 'support@example.com',\n billingEmail: 'billing@email.com',\n courseSearchUrl: 'edx.com/course-search',\n },\n suggestedCourses: [\n {\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg',\n courseName: 'Suggested course 1',\n courseUrl: 'www.edx/suggested-course',\n },\n {\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg',\n courseName: 'Suggested course 2 with a really really really long name for some reason',\n courseUrl: 'www.edx/suggested-course',\n },\n {\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg',\n courseName: 'Suggested course 3',\n courseUrl: 'www.edx/suggested-course',\n },\n {\n bannerImgSrc: 'https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg',\n courseName: 'Suggested course 4',\n courseUrl: 'www.edx/suggested-course',\n },\n ],\n socialShareSettings: {\n facebook: {\n isEnabled: true,\n socialBrand: 'edx.org',\n utmParams: 'utm_campaign=social-sharing-db&utm_medium=social&utm_source=facebook',\n },\n twitter: {\n isEnabled: true,\n socialBrand: 'edx.org',\n utmParams: 'utm_campaign=social-sharing-db&utm_medium=social&utm_source=twitter',\n },\n },\n};\n\nexport const genCourseRunData = (data = {}) => ({\n isStarted: false,\n isArchived: false,\n startDate: data.isStarted ? farPastDate : futureDate,\n endDate: farFutureDate,\n minPassingGrade: '0.70',\n homeUrl: 'edx.com/courses/my-course-url/home',\n marketingUrl: 'edx.com/courses/my-course-url/marketing',\n progressUrl: 'edx.com/courses/my-course-url/progress',\n unenrollUrl: 'edx.com/courses/my-course-url/unenroll',\n resumeUrl: 'edx.com/courses/my-course-url/resume',\n ...data,\n});\n\nexport const creditData = {\n providerStatusUrl: 'test-provider-status-url',\n providerName: 'Credit Provider Name',\n providerId: 'credit-provider-id',\n error: false,\n purchased: false,\n requestStatus: null,\n};\n\nexport const genEnrollmentData = (data = {}) => ({\n coursewareAccess: {\n isTooEarly: false,\n hasUnmetPrerequisites: false,\n isStaff: false,\n },\n accessExpirationDate: ((data.isEnrolled === false) ? null : futureDate),\n canUpgrade: (data.isVerified ? null : true),\n hasStarted: false,\n isAudit: !data.isVerified && (data.isEnrolled !== false),\n isAuditAccessExpired: data.isVerified ? null : false,\n isEmailEnabled: false,\n hasOptedOutOfEmail: false,\n isEnrolled: true,\n isVerified: false,\n ...data,\n});\n\nexport const genCertificateData = (data = {}) => ({\n availableDate: null,\n isRestricted: false,\n isEarned: false,\n isDownloadable: false,\n certPreviewUrl: 'edx.com/courses/my-course-url/cert-preview',\n ...data,\n});\n\nexport const availableSessions = [\n {\n startDate: '2000-01-02T00:00:00Z',\n endDate: '2020-01-02T00:00:00Z',\n courseId: genCourseId(1000),\n },\n {\n startDate: '2000-02-03T00:00:00Z',\n endDate: '2020-02-03T00:00:00Z',\n courseId: genCourseId(1001),\n },\n {\n startDate: '2000-03-04T00:00:00Z',\n endDate: '2020-03-04T00:00:00Z',\n courseId: genCourseId(1002),\n },\n {\n startDate: '2000-04-05T00:00:00Z',\n endDate: '2020-04-05T00:00:00Z',\n courseId: genCourseId(1003),\n },\n {\n startDate: '2000-05-06T00:00:00Z',\n endDate: '2020-05-06T00:00:00Z',\n courseId: genCourseId(1004),\n },\n];\n\nconst auditCourses = [\n // audit, course run not started\n {\n courseName: 'Audit Course, Course run not started',\n },\n // audit, course run not started, too early to view\n {\n courseName: 'Audit Course, Course run not started, Too early to view',\n enrollment: {\n coursewareAccess: {\n isTooEarly: true,\n hasUnmetPrerequisites: false,\n isStaff: false,\n },\n },\n },\n // audit, course run not started, too early to view and unmet prereqs\n {\n courseName: 'Audit Course, Course run not started, Too early to view, Has unmet prereqs.',\n enrollment: {\n coursewareAccess: {\n isTooEarly: true,\n hasUnmetPrerequisites: true,\n isStaff: false,\n },\n },\n },\n // audit, course run started\n {\n courseName: 'Audit Course, Course run not started',\n courseRun: { isStarted: true },\n },\n // audit, course run started, unmet prereqs\n {\n courseName: 'Audit Course, Course run not started, Has unmet prereqs',\n enrollment: {\n coursewareAccess: {\n isTooEarly: true,\n hasUnmetPrerequisites: true,\n isStaff: false,\n },\n },\n courseRun: { isStarted: true },\n },\n // audit, course run started, access expired, learner not started\n {\n courseName: 'Audit Course, Course run started, Audit ccess expired, Learner not started',\n courseRun: { isStarted: true },\n enrollment: {\n accessExpirationDate: pastDate,\n isAuditAccessExpired: true,\n },\n },\n // audit, course run started, access expired, cannot upgrade, learner not started\n {\n courseName: 'Audit course, Course run not started, Audit access expired, Cannot upgrade, Learner not started',\n courseRun: { isStarted: true },\n enrollment: {\n accessExpirationDate: pastDate,\n canUpgrade: false,\n isAuditAccessExpired: true,\n },\n },\n // audit, course run ended, access expired, cannot upgrade, learner not started\n {\n courseName: 'Audit Course, Course run ended, Audit access expired, Cannot upgrade, Learner not started',\n courseRun: {\n endDate: pastDate,\n isStarted: true,\n },\n enrollment: {\n accessExpirationDate: pastDate,\n isAuditAccessExpired: true,\n },\n },\n // audit, course run archived, access expired, cannot upgrade, learner not started\n {\n courseName: 'Audit Course, Course run archived, Audit access expired, Cannot upgrade, Learner not started',\n courseRun: {\n endDate: pastDate,\n isArchived: true,\n isStarted: true,\n },\n enrollment: {\n accessExpirationDate: pastDate,\n isAuditAccessExpired: true,\n },\n },\n // audit, course run and learner started, passing\n {\n courseName: 'Audit Course, Course run and learner started, Passing',\n courseRun: { isStarted: true },\n enrollment: { hasStarted: true },\n },\n // audit, course run and learner started, access expired\n {\n courseName: 'Audit Course, Course run and learner started, Audit access expired',\n courseRun: { isStarted: true },\n enrollment: {\n accessExpirationDate: pastDate,\n isAuditAccessExpired: true,\n hasStarted: true,\n },\n },\n // audit, course run and learner started, access expired, cannot upgrade\n {\n courseName: 'Audit Course, Course run and learner started, Audit access expired, Cannot upgrade',\n courseRun: { isStarted: true },\n enrollment: {\n accessExpirationDate: pastDate,\n canUpgrade: false,\n isAuditAccessExpired: true,\n hasStarted: true,\n },\n },\n // audit, course run ended, learner started, expired, cannot upgraded, not passing\n {\n courseName: 'Audit Course, Course run ended, Learner started, Access expired, Cannot upgrade, Not passing',\n courseRun: {\n isStarted: true,\n endDate: pastDate,\n },\n enrollment: {\n accessExpirationDate: pastDate,\n canUpgrade: false,\n isAuditAccessExpired: true,\n hasStarted: true,\n },\n grade: { isPassing: false },\n },\n // audit, course run archived, learner started, expired, cannot upgrade, not passing\n {\n courseName: 'Audit Course, Course run archived, Learner started, Access expired, Cannot upgrade, Not passing',\n courseRun: {\n isStarted: true,\n isArchived: true,\n endDate: pastDate,\n },\n enrollment: {\n accessExpirationDate: pastDate,\n canUpgrade: false,\n isAuditAccessExpired: true,\n hasStarted: true,\n },\n grade: { isPassing: false },\n },\n];\nconst verifiedCourses = [\n // verified, course not started, learner not started\n {\n courseName: 'Verified Course, Course and learner not started',\n enrollment: { isVerified: true },\n },\n // verified, course started, learner not started\n {\n courseName: 'Verified Course, Course started, Learner not started',\n courseRun: { isStarted: true },\n enrollment: { isVerified: true },\n },\n // verified, course started, learner started, passing\n {\n courseName: 'Verified Course, Course and learner started, Passing',\n courseRun: { isStarted: true },\n enrollment: { hasStarted: true, isVerified: true },\n },\n // verified, course started, learner started, not passing\n {\n courseName: 'Verified Course, Course and learner started, not passing',\n courseRun: { isStarted: true },\n gradeData: { isPassing: false },\n enrollment: { hasStarted: true, isVerified: true },\n },\n // verified, learner finished, not passing, cert not earned\n {\n courseName: 'Verified Course, Learner finished, cert not earned',\n enrollment: {\n hasStarted: true,\n isVerified: true,\n },\n courseRun: { isStarted: true, isArchived: true },\n gradeData: { isPassing: false },\n certificate: {\n isEarned: false,\n },\n },\n // verified, learner finished, passing, cert earned but not available\n {\n courseName: 'Verified Course, Learner finished, Cert earned but not available',\n enrollment: {\n hasStarted: true,\n isVerified: true,\n },\n courseRun: { isStarted: true, isArchived: true },\n certificate: {\n isEarned: true,\n availableDate: futureDate,\n },\n },\n // verified, learner finished, passing, restricted\n {\n courseName: 'Verified Course, Learner finished, Passing, Certificate restricted',\n enrollment: {\n hasStarted: true,\n isVerified: true,\n },\n courseRun: { isStarted: true, isArchived: true },\n certificate: { isRestricted: true },\n },\n // verified, learner finished, cert earned, downloadable (web + link)\n {\n courseName: 'Verified Course, Learner finished, Passing, Certificate downloadable and viewable',\n enrollment: {\n hasStarted: true,\n isVerified: true,\n },\n courseRun: { isStarted: true, isArchived: true },\n certificate: {\n isEarned: true,\n isDownloadable: true,\n availableDate: pastDate,\n certPreviewUrl: bannerImgSrc,\n },\n },\n // verified, course ended, learner finished, cert earned, downloadable (link only),\n {\n courseName: 'Verified Course, Course ended, Learner finished, Passing, Certificate downloadable',\n enrollment: {\n hasStarted: true,\n isVerified: true,\n },\n courseRun: {\n isStarted: true,\n isArchived: true,\n endDate: pastDate,\n },\n certificate: {\n isEarned: true,\n isDownloadable: true,\n availableDate: pastDate,\n },\n },\n // verified, course ended, learner finished, cert earned, downloadable (web + link)\n {\n courseName: 'Verified Course, Course ended, Learner finished, Passing, Certificate downloadable and viewable',\n enrollment: {\n hasStarted: true,\n isVerified: true,\n },\n courseRun: {\n isStarted: true,\n isArchived: true,\n endDate: pastDate,\n },\n certificate: {\n isEarned: true,\n isDownloadable: true,\n availableDate: pastDate,\n certPreviewUrl: bannerImgSrc,\n },\n },\n];\nconst fulfilledEntitlementCourses = [\n // Entitlement - not started\n {\n courseName: 'Entitlement Course, not started',\n enrollment: {\n isVerified: true,\n coursewareAccess: {\n isTooEarly: true,\n hasUnmetPrerequisites: false,\n isStaff: false,\n },\n },\n courseRun: { isStarted: false },\n entitlement: {\n uuid: genEntitlementUUID(0),\n availableSessions,\n changeDeadline: futureDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: true,\n isRefundable: true,\n },\n },\n // Entitlement - Course run started, learner not started, unmet prereqs\n {\n courseName: 'Entitlement Course, Course run started, Learner not started, Has unmet prereqs',\n enrollment: {\n isVerified: true,\n coursewareAccess: {\n },\n },\n courseRun: { isStarted: true },\n entitlement: {\n uuid: genEntitlementUUID(1),\n availableSessions,\n changeDeadline: futureDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: true,\n isRefundable: true,\n },\n },\n // Entitlement - Course run started, learner started, not passing\n {\n courseName: 'Entitlement Course, Course run started, Learner started, Not passing',\n enrollment: {\n isVerified: true,\n hasStarted: true,\n },\n courseRun: { isStarted: true },\n entitlement: {\n uuid: genEntitlementUUID(2),\n availableSessions,\n changeDeadline: futureDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: true,\n isRefundable: true,\n },\n gradeData: { isPassing: false },\n },\n // Entitlement - Course run started, learner started, passing, cannot change\n {\n courseName: 'Entitlement Course, Course run and learner started, Passing, Cannot change sessions',\n enrollment: {\n isVerified: true,\n hasStarted: true,\n },\n courseRun: { isStarted: true },\n entitlement: {\n uuid: genEntitlementUUID(3),\n availableSessions,\n changeDeadline: pastDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: true,\n isRefundable: true,\n },\n },\n // Entitlement - Learner finished, but did not pass\n {\n courseName: 'Entitlement Course, Learner finished but did not pass',\n enrollment: {\n isVerified: true,\n },\n courseRun: { isStarted: true, isArchived: false },\n entitlement: {\n uuid: genEntitlementUUID(4),\n availableSessions: null,\n changeDeadline: pastDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: true,\n isRefundable: false,\n },\n gradeData: { isPassing: false },\n },\n // Entitlement - Learner finished, and passed. cannot refund. previewable cert.\n {\n courseName: 'Entitlement course, Learner finished and passed, Cannot refund, Previewable Cert',\n enrollment: {\n isVerified: true,\n },\n courseRun: { isStarted: true, isArchived: false },\n entitlement: {\n uuid: genEntitlementUUID(5),\n availableSessions: null,\n changeDeadline: pastDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: true,\n isRefundable: false,\n },\n certificate: {\n isEarned: true,\n isDownloadable: true,\n availableDate: pastDate,\n certPreviewUrl: bannerImgSrc,\n },\n },\n // Entitlement - Learner finished and failed. cannot refund. course ended.\n {\n courseName: 'Entitlement Course, Learner finished and failed, Cannot refund, Course ended',\n enrollment: {\n isVerified: true,\n },\n courseRun: {\n isStarted: true,\n isArchived: false,\n endDate: pastDate,\n },\n entitlement: {\n uuid: genEntitlementUUID(6),\n availableSessions: null,\n enrollmentUrl: '/entitlement-enrollment',\n isFulfilled: true,\n isRefundable: false,\n changeDeadline: pastDate,\n isExpired: false,\n },\n gradeData: { isPassing: false },\n },\n // Entitlement - Learner finished and passed. cannot refund. cert downloadable\n {\n courseName: 'Entitlement Course, Learner finished and passed, Cannot refund, Cert downloadable',\n enrollment: {\n isVerified: true,\n },\n courseRun: {\n isArchived: true,\n isStarted: true,\n endDate: pastDate,\n },\n entitlement: {\n uuid: genEntitlementUUID(7),\n availableSessions: null,\n changeDeadline: pastDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isRefundable: false,\n isFulfilled: true,\n },\n certificate: {\n isEarned: true,\n isDownloadable: true,\n availableDate: pastDate,\n certPreviewUrl: bannerImgSrc,\n },\n },\n];\nconst creditCourses = [\n {\n courseName: 'Credit - Eligible for credit from unknown provider',\n credit: {\n ...creditData,\n providerName: null,\n providerId: null,\n },\n enrollment: { isEnrolled: true },\n },\n {\n courseName: 'Credit - Eligible for credit from known provider',\n credit: creditData,\n enrollment: { isEnrolled: true },\n },\n {\n courseName: 'Credit - Purchased but must request',\n credit: { ...creditData, purchased: true },\n enrollment: { isEnrolled: true },\n },\n {\n courseName: 'Credit - Credit Request Pending',\n credit: {\n ...creditData,\n purchased: true,\n requestStatus: creditVals.requestStatuses.pending,\n },\n enrollment: { isEnrolled: true },\n },\n {\n courseName: 'Credit - Credit Request Approved',\n credit: {\n ...creditData,\n purchased: true,\n requestStatus: creditVals.requestStatuses.approved,\n },\n enrollment: { isEnrolled: true },\n },\n {\n courseName: 'Credit - Credit Request Rejected, Error thrown',\n credit: {\n ...creditData,\n purchased: true,\n requestStatus: creditVals.requestStatuses.rejected,\n error: true,\n },\n enrollment: { isEnrolled: true },\n },\n];\n\nexport const courseRuns = [\n ...auditCourses,\n ...verifiedCourses,\n ...fulfilledEntitlementCourses,\n ...creditCourses,\n];\n\n// unfulfilled entitlement select session\n// unfulfilled entitlement select session with deadline\n// unfulfilled entitlement select session pass deadline with available session {banner different from 4th}\n// unfulfilled entitlement select session pass deadline without available session\nexport const entitlementCourses = [\n {\n courseName: 'Unfulfilled Entitlement select session',\n entitlement: {\n uuid: genEntitlementUUID(10),\n availableSessions,\n changeDeadline: futureDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: false,\n isRefundable: true,\n },\n }, {\n courseName: 'Unfulfilled Entitlement select session with upcoming deadline',\n entitlement: {\n uuid: genEntitlementUUID(11),\n availableSessions,\n changeDeadline: soonDateStr,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: false,\n isRefundable: true,\n },\n }, {\n courseName: 'Unfulfilled Entitlement select session past deadline, With available session',\n entitlement: {\n uuid: genEntitlementUUID(12),\n availableSessions,\n changeDeadline: pastDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: false,\n isFulfilled: false,\n isRefundable: true,\n },\n }, {\n courseName: 'Unfulfilled Entitlement select session past deadline, With available no session',\n entitlement: {\n uuid: genEntitlementUUID(13),\n availableSessions: [],\n changeDeadline: pastDate,\n enrollmentUrl: '/entitlement-enrollment',\n isExpired: true,\n isFulfilled: false,\n isRefundable: true,\n },\n },\n];\n\nconst providerOptions = [\n providers.edx,\n providers.mit,\n null,\n];\n\nconst emailOptions = [\n { isEmailEnabled: false, hasOptedOutOfEmail: false },\n { isEmailEnabled: true, hasOptedOutOfEmail: false },\n { isEmailEnabled: true, hasOptedOutOfEmail: true },\n];\n\nconst programsOptions = [\n { relatedPrograms },\n { relatedPrograms: [relatedPrograms[0]] },\n { relatedPrograms: [] },\n];\n\nconst getOption = (options, index) => options[index % options.length];\n\nexport const compileCourseRunData = ({ courseName, ...data }, index) => {\n const courseId = genCourseId(index);\n const courseNumber = genCourseNumber(index);\n const socialShareUrl = genCourseShareUrl(index);\n const lastEnrolledDate = new Date();\n lastEnrolledDate.setDate(lastEnrolledDate.getDate() - index - 1);\n const lastEnrolled = lastEnrolledDate.toISOString();\n const out = {\n gradeData: { isPassing: true },\n entitlement: null,\n credit: {},\n ...data,\n certificate: genCertificateData(data.certificate),\n enrollment: genEnrollmentData({\n lastEnrolled,\n ...getOption(emailOptions, index),\n ...data.enrollment,\n }),\n courseRun: genCourseRunData({\n ...data.courseRun,\n courseId,\n }),\n course: {\n courseName,\n bannerImgSrc,\n courseNumber,\n socialShareUrl,\n },\n courseProvider: getOption(providerOptions, index),\n programs: getOption(programsOptions, index),\n };\n if (out.enrollment.canUpgrade) {\n out.courseRun.upgradeUrl = 'test-upgrade-url';\n }\n return out;\n};\n\nexport const compileEntitlementData = ({ courseName, ...data }, index) => {\n const courseNumber = genCourseNumber(100 + index);\n const socialShareUrl = genCourseShareUrl(100 + index);\n return {\n enrollment: genEnrollmentData({\n isEnrolled: false,\n lastEnrolled: null,\n accessExpirationDate: null,\n canUpgrade: false,\n hasStarted: false,\n isAudit: false,\n isAuditAccessExpired: false,\n isEmailEnabled: false,\n isVerified: false,\n }),\n gradeData: null,\n certificate: null,\n courseRun: null,\n ...data,\n course: {\n courseName,\n courseNumber,\n bannerImgSrc,\n socialShareUrl,\n },\n courseProvider: getOption(providerOptions, index),\n programs: getOption(programsOptions, index),\n };\n};\n\n// Entitlement Course - refundable\n// Entitlement Course - cannot view yet\n// Entitlement Course - can view and change\n// Entitlement Course - expired\nexport const courseRunData = courseRuns.map(compileCourseRunData);\nexport const entitlementData = entitlementCourses.map(compileEntitlementData);\n\nexport default {\n compileEntitlementData,\n compileCourseRunData,\n courseRunData,\n entitlementData,\n globalData,\n};\n","import PropTypes from 'prop-types';\n\nexport const AppWrapper = ({\n children,\n}) => children;\nAppWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.arrayOf(PropTypes.node),\n ]).isRequired,\n};\n\nexport default AppWrapper;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n ViewAs: {\n id: 'MasqueradeBar.ViewAs',\n defaultMessage: 'View as: ',\n description: 'Label for the View as',\n },\n ViewingAs: {\n id: 'MasqueradeBar.ViewingAs',\n defaultMessage: 'Viewing as: ',\n description: 'Label for the Viewing as',\n },\n SubmitButton: {\n id: 'MasqueradeBar.SubmitButton',\n defaultMessage: 'Submit',\n description: 'Label for the Submit button',\n },\n StudentNameInput: {\n id: 'MasqueradeBar.StudentNameInput',\n defaultMessage: 'Username or email',\n description: 'Label for the Student Name or email input',\n },\n NoStudentFound: {\n id: 'MasqueradeBar.NoStudentFound',\n defaultMessage: 'No student with this username or email could be found',\n description: 'Error message when no student is found',\n },\n UnknownError: {\n id: 'MasqueradeBar.UnknownError',\n defaultMessage: 'An unknown error occurred',\n description: 'Error message when an unknown error occurs',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { apiHooks, reduxHooks } from 'hooks';\nimport { StrictDict } from 'utils';\nimport * as module from './hooks';\n\nimport messages from './messages';\n\nexport const state = StrictDict({\n masqueradeInput: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useMasqueradeInput = () => {\n const [masqueradeInput, setMasqueradeInput] = module.state.masqueradeInput('');\n const handleMasqueradeInputChange = (e) => setMasqueradeInput(e.target.value);\n return {\n handleMasqueradeInputChange,\n masqueradeInput,\n };\n};\n\nconst masqueradeErrorMessageMap = {\n 404: messages.NoStudentFound,\n};\n\nexport const getMasqueradeErrorMessage = (errorStatus) => {\n if (errorStatus == null) {\n return null;\n }\n return masqueradeErrorMessageMap[errorStatus] || messages.UnknownError;\n};\n\nexport const useMasqueradeBarData = ({\n authenticatedUser,\n}) => {\n const { formatMessage } = useIntl();\n const handleMasqueradeAs = apiHooks.useMasqueradeAs();\n const handleClearMasquerade = apiHooks.useClearMasquerade();\n\n const {\n isMasquerading,\n isMasqueradingFailed,\n isMasqueradingPending,\n masqueradeErrorStatus,\n } = reduxHooks.useMasqueradeData();\n const { masqueradeInput, handleMasqueradeInputChange } = module.useMasqueradeInput();\n\n const masqueradeErrorMessage = getMasqueradeErrorMessage(masqueradeErrorStatus);\n const handleMasqueradeSubmit = (user) => (e) => {\n handleMasqueradeAs(user);\n e.preventDefault();\n };\n\n return {\n canMasquerade: authenticatedUser?.administrator,\n isMasquerading,\n isMasqueradingFailed,\n isMasqueradingPending,\n masqueradeErrorMessage,\n masqueradeInput,\n handleMasqueradeSubmit,\n handleClearMasquerade,\n handleMasqueradeInputChange,\n formatMessage,\n };\n};\n\nexport default useMasqueradeBarData;\n","import React from 'react';\nimport { AppContext } from '@edx/frontend-platform/react';\n\nimport {\n Chip,\n Form,\n FormControl,\n FormControlFeedback,\n FormLabel,\n FormGroup,\n StatefulButton,\n Icon,\n} from '@openedx/paragon';\nimport { Close, PersonSearch } from '@openedx/paragon/icons';\n\nimport messages from './messages';\nimport { useMasqueradeBarData } from './hooks';\nimport './index.scss';\n\nexport const MasqueradeBar = () => {\n const { authenticatedUser } = React.useContext(AppContext);\n\n const {\n canMasquerade,\n isMasquerading,\n isMasqueradingFailed,\n isMasqueradingPending,\n masqueradeInput,\n masqueradeErrorMessage,\n handleMasqueradeInputChange,\n handleClearMasquerade,\n handleMasqueradeSubmit,\n formatMessage,\n } = useMasqueradeBarData({ authenticatedUser });\n\n if (!canMasquerade) { return null; }\n\n return (\n
\n
\n {isMasquerading ? (\n <>\n \n \n {formatMessage(messages.ViewingAs)}\n \n \n {masqueradeInput}\n \n \n ) : (\n <>\n \n \n {formatMessage(messages.ViewAs)}\n \n \n \n {isMasqueradingFailed && (\n \n {formatMessage(masqueradeErrorMessage)}\n \n )}\n \n \n \n )}\n \n
\n );\n};\n\nexport default MasqueradeBar;\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgConfirmEmail = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 406,\n height: 302,\n fill: \"none\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#confirm-email_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m160.119 242.657 130.966.151a8.4 8.4 0 0 0 7.81-6.737l24.361-128.607a5.36 5.36 0 0 0-.95-4.685 5.36 5.36 0 0 0-4.311-2.065l-130.966-.151a8.4 8.4 0 0 0-7.81 6.737l-24.361 128.607a5.36 5.36 0 0 0 .95 4.685 5.36 5.36 0 0 0 4.311 2.065\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m291.048 243.446-130.967-.151a5.92 5.92 0 0 1-4.643-2.107 6.38 6.38 0 0 1-1.261-5.387l24.424-128.62a9.07 9.07 0 0 1 8.428-7.242l130.967.152a5.95 5.95 0 0 1 4.592 2.094 6.434 6.434 0 0 1 1.262 5.4l-24.337 128.62a9.06 9.06 0 0 1-2.99 5.073 9.06 9.06 0 0 1-5.475 2.168m-130.967-1.413 130.967.152a7.75 7.75 0 0 0 7.191-6.22l24.349-128.608a5.18 5.18 0 0 0-.971-4.365 4.73 4.73 0 0 0-3.672-1.64l-130.967-.151a7.745 7.745 0 0 0-7.191 6.22l-24.311 128.607a5.2 5.2 0 0 0 .972 4.365 4.73 4.73 0 0 0 3.671 1.64z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m320.973 120.187-144.037-.176a.63.63 0 0 1-.631-.631.64.64 0 0 1 .631-.631l144.05.177c.167 0 .327.066.446.184a.63.63 0 0 1 .184.446.64.64 0 0 1-.643.631\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M311.308 112.057c1.381-1.465 1.523-3.575.316-4.712-1.206-1.138-3.304-.872-4.686.593-1.381 1.465-1.522 3.575-.316 4.713 1.207 1.137 3.305.872 4.686-.594M299.838 112.036c1.381-1.466 1.522-3.576.316-4.713-1.207-1.138-3.305-.872-4.686.593-1.381 1.466-1.523 3.575-.316 4.713s3.304.872 4.686-.593M288.366 112.022c1.381-1.465 1.523-3.575.316-4.712-1.207-1.138-3.305-.872-4.686.593s-1.523 3.575-.316 4.713 3.305.872 4.686-.594\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m252.859 130.098-12.376 65.314 52.483.063 12.376-65.314z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M252.847 130.1h52.495l-12.364 65.313h-52.495zm0-1.261a1.26 1.26 0 0 0-1.262 1.021l-12.364 65.314a1.26 1.26 0 0 0 .273 1.051 1.26 1.26 0 0 0 .989.45h52.482a1.264 1.264 0 0 0 1.262-1.035l12.364-65.313a1.258 1.258 0 0 0-1.237-1.488h-52.507\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M290.177 147.233a5.8 5.8 0 0 0 .253 2.524q.36.711.858 1.337a10.8 10.8 0 0 1 1.741 5.324 8 8 0 0 1-.505 3.785c-.379.883-.984 1.665-1.337 2.523a5.13 5.13 0 0 0-.19 3.28c.291 1.022.871 2.132.341 3.04a2.02 2.02 0 0 1-1.88.846 9.5 9.5 0 0 1-2.107-.518c-3.848-1.11-8.692-.58-12.729-.857l-15.139-1.06c-2.057-.152-4.605-.669-5.148-2.662-.454-1.678 1.186-4.479 1.842-6.056a37.2 37.2 0 0 1 3.949-7.721 17.6 17.6 0 0 0 2.359-3.608q.426-1.287.719-2.612a15.8 15.8 0 0 1 4.353-6.61 18.5 18.5 0 0 1 4.378-3.344c5.488-2.851 14.609-.921 17.107 5.148a17 17 0 0 1 1.135 7.241\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M289.584 170.56h-.164a7 7 0 0 1-1.779-.391l-.466-.139a31.8 31.8 0 0 0-8.34-.745c-1.501 0-2.901 0-4.264-.1l-15.139-1.06c-3.343-.227-5.21-1.262-5.715-3.129-.429-1.564.568-3.684 1.362-5.387.19-.404.366-.77.505-1.085a38 38 0 0 1 4.012-7.86c.202-.29.416-.567.631-.845a11.6 11.6 0 0 0 1.653-2.624q.277-.76.441-1.552c.076-.341.164-.669.252-1.009a16.17 16.17 0 0 1 4.53-6.876 18.5 18.5 0 0 1 4.529-3.469 14.625 14.625 0 0 1 11.354-.417 10.93 10.93 0 0 1 6.611 5.892 17.6 17.6 0 0 1 1.135 7.507v.113a3.4 3.4 0 0 0 .77 2.977l.227.328a11.36 11.36 0 0 1 1.867 5.652 8.6 8.6 0 0 1-.568 4.126q-.3.652-.681 1.261-.37.61-.656 1.262a4.5 4.5 0 0 0-.151 2.851c0 .202.126.404.189.606a3.47 3.47 0 0 1 .076 2.939 2.6 2.6 0 0 1-2.221 1.174m-11.859-36.334a11.9 11.9 0 0 0-5.437 1.261 17.5 17.5 0 0 0-4.227 3.23 14.74 14.74 0 0 0-4.176 6.308c-.1.315-.164.631-.239.946a13 13 0 0 1-.505 1.728 12.2 12.2 0 0 1-1.829 2.927l-.618.82a37.8 37.8 0 0 0-3.861 7.57c-.139.341-.328.719-.517 1.148-.681 1.426-1.602 3.394-1.262 4.491.341 1.098 1.88 1.981 4.555 2.17l15.139 1.06c1.325.088 2.712.101 4.176.101a32.8 32.8 0 0 1 8.705.795l.492.151c.473.167.964.277 1.463.328a1.37 1.37 0 0 0 1.262-.517c.277-.467 0-1.148-.189-1.867-.076-.227-.152-.454-.215-.669a5.8 5.8 0 0 1 .215-3.696q.313-.74.731-1.426c.227-.391.442-.757.619-1.135a7.6 7.6 0 0 0 .454-3.52 10.1 10.1 0 0 0-1.628-5.047l-.227-.302a5.8 5.8 0 0 1-.694-1.148 6.1 6.1 0 0 1-.315-2.65l.656-.088h-.643a16.2 16.2 0 0 0-1.035-6.952 9.63 9.63 0 0 0-5.866-5.172 14.2 14.2 0 0 0-4.984-.833z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F0CC00\",\n d: \"m244.053 176.552-3.57 18.924h52.495l3.57-18.861c-4.327-5.185-11.594-6.976-17.99-7.569a75 75 0 0 0-6.775-.291h-.467c-1.854 0-3.999 0-6.308.265h-.113c-6.649.543-14.559 2.36-20.842 7.532\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m264.049 172.641 1.603 17.662.479 5.148h1.186l2.422-5.16 8.264-17.562c-3.129-1.097-10.409-1.097-13.954-.088\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M278.028 172.667a9.33 9.33 0 0 1-7.57 3.911 6.49 6.49 0 0 1-6.409-3.924l3.583-15.379h12.616z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M270.471 177.224a7.175 7.175 0 0 1-7.027-4.366.57.57 0 0 1 0-.353l3.583-15.366a.66.66 0 0 1 .631-.505h12.616a.64.64 0 0 1 .492.227.63.63 0 0 1 .151.518l-2.233 15.379a.6.6 0 0 1-.088.252 9.933 9.933 0 0 1-8.125 4.214m-5.74-4.618a5.897 5.897 0 0 0 5.728 3.318 8.696 8.696 0 0 0 6.939-3.494l2.094-14.484h-11.355z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M279.012 163.875a13.8 13.8 0 0 1-4.466 3.444c-2.763 1.426-6.813 3.015-9.752 2.523l1.728-6.497c2.221.266 4.466.266 6.687 0a20.7 20.7 0 0 0 5.992-1.148c.341-.076.316 1.06-.189 1.678\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M265.929 170.574a8 8 0 0 1-1.261-.101.61.61 0 0 1-.429-.277.59.59 0 0 1-.076-.505l1.728-6.497a.62.62 0 0 1 .694-.454c2.17.27 4.365.27 6.535 0a20.2 20.2 0 0 0 5.829-1.098.75.75 0 0 1 .883.253 2.282 2.282 0 0 1-.353 2.334 14.15 14.15 0 0 1-4.668 3.608c-2.044 1.097-5.74 2.737-8.882 2.737m-.34-1.261c3.04.113 7.014-1.703 8.667-2.523a12.7 12.7 0 0 0 4.264-3.268q.118-.178.189-.378a23.7 23.7 0 0 1-5.462.933 28.8 28.8 0 0 1-6.308 0zM284.475 196.119h-.202a.65.65 0 0 1-.449-.567.6.6 0 0 1 .033-.253l5.046-15.846a.657.657 0 0 1 .328-.386.658.658 0 0 1 .731.083.67.67 0 0 1 .232.45.7.7 0 0 1-.029.257l-5.047 15.846a.64.64 0 0 1-.643.416M248.973 196.058a.656.656 0 0 1-.618-.681l.959-15.859a.655.655 0 0 1 1.261.076l-.958 15.858a.646.646 0 0 1-.644.606\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M266.661 153.741c.265-3.608-3.898-4.504-4.478-.252a7 7 0 0 0 .391 3.999 1.92 1.92 0 0 0 1.153 1.077c.257.088.53.121.801.097a1.9 1.9 0 0 0 .771-.24\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M264.365 159.334a2.1 2.1 0 0 1-.694-.101 2.72 2.72 0 0 1-1.665-1.45 7.7 7.7 0 0 1-.48-4.378c.354-2.523 1.88-3.52 3.243-3.381a3.23 3.23 0 0 1 2.523 3.785.657.657 0 0 1-1.262-.101c.101-1.451-.618-2.296-1.388-2.372s-1.564.467-1.804 2.258a6.3 6.3 0 0 0 .328 3.608 1.55 1.55 0 0 0 .883.795 1.16 1.16 0 0 0 .947-.126.666.666 0 0 1 .895.252.654.654 0 0 1-.265.883 2.5 2.5 0 0 1-1.261.328\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M282.986 153.769c1.098-3.608 5.602-4.491 4.58-.239a9.3 9.3 0 0 1-1.905 3.986c-.946 1.035-2.233 1.527-3.091.934\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M283.478 159.355c-.45.013-.893-.12-1.262-.378a.649.649 0 0 1 .745-1.06c.517.353 1.476 0 2.233-.845a8.64 8.64 0 0 0 1.753-3.697c.101-.429.366-1.804-.391-2.018-.757-.215-2.359.706-2.939 2.598a.664.664 0 0 1-.827.436.66.66 0 0 1-.435-.827c.782-2.523 3.003-3.873 4.517-3.456.479.126 1.993.769 1.261 3.57a9.76 9.76 0 0 1-2.056 4.264 3.78 3.78 0 0 1-2.599 1.413\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m266.787 145.82-1.98 10.459c-.946 5.046 2.233 9.083 7.103 9.096h1.021a11.35 11.35 0 0 0 10.547-9.071c.48-2.523 2.221-6.459.379-8.352-2.94-3.028-5.791-5.046-7.418-9.146-3.735.782-9.652 1.816-9.652 7.014\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M272.944 166.018h-1.035a7.72 7.72 0 0 1-6.093-2.763 8.45 8.45 0 0 1-1.628-7.116l1.968-10.383c0-5.5 5.879-6.712 9.752-7.506l.417-.089a.65.65 0 0 1 .732.391 18.8 18.8 0 0 0 5.311 7.002c.643.619 1.261 1.262 1.968 1.931 1.69 1.728.883 4.693.24 7.077-.177.656-.341 1.262-.442 1.842a12.024 12.024 0 0 1-11.19 9.614m3.103-26.494c-3.671.769-8.604 1.842-8.604 6.308a.4.4 0 0 1 0 .126l-1.981 10.446a7.16 7.16 0 0 0 1.35 6.043 6.46 6.46 0 0 0 5.11 2.284h1.034a10.66 10.66 0 0 0 9.891-8.541c.114-.581.29-1.262.48-1.943.58-2.17 1.261-4.63.075-5.829a54 54 0 0 0-1.93-1.892 20.85 20.85 0 0 1-5.425-6.977z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M273.852 157.794a12 12 0 0 1-1.4-.088.64.64 0 0 1-.652-.727.6.6 0 0 1 .093-.258.63.63 0 0 1 .449-.295.6.6 0 0 1 .274.018 11.3 11.3 0 0 0 2.283 0c.237-2.02.117-4.065-.353-6.043a.66.66 0 0 1 .53-.757.67.67 0 0 1 .757.53c.24 1.35.984 5.866.076 7.103a1.03 1.03 0 0 1-.732.441 10 10 0 0 1-1.325.076\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M239.083 143.674h-53.896a.7.7 0 0 1-.559-.168.706.706 0 0 1 .559-1.232l53.896.063a.704.704 0 0 1 .437 1.165.7.7 0 0 1-.437.235zM237.253 153.288H183.37a.7.7 0 0 1-.737-.408.702.702 0 0 1 .439-.968.7.7 0 0 1 .298-.024l53.896.063a.704.704 0 0 1 .437 1.165.7.7 0 0 1-.437.235zM235.436 162.903l-53.895-.064a.706.706 0 0 1-.694-.706.695.695 0 0 1 .694-.694l53.895.063a.71.71 0 0 1 .559.169.71.71 0 0 1 .242.531.71.71 0 0 1-.242.532.7.7 0 0 1-.559.169M233.619 172.516l-53.895-.075a.7.7 0 0 1-.495-.2.7.7 0 0 1-.199-.494.69.69 0 0 1 .694-.707l53.895.063a.71.71 0 0 1 .707.707.72.72 0 0 1-.707.706M231.752 182.177h-37.999a.71.71 0 0 1 0-1.401h37.999a.71.71 0 0 1 .613.701.705.705 0 0 1-.613.7M286.291 233.808l-117.707-.139a.68.68 0 0 1-.542-.252.7.7 0 0 1-.152-.581l5.349-28.222a.71.71 0 0 1 .682-.568l117.707.139a.69.69 0 0 1 .68.526.7.7 0 0 1 .014.307l-5.349 28.222a.71.71 0 0 1-.682.568m-116.862-1.54 116.282.139 5.047-26.821-116.295-.139z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"m289.521 214.412-117.329-.138a.72.72 0 0 1-.559-.169.7.7 0 0 1-.241-.532.704.704 0 0 1 .8-.7l117.329.139a.707.707 0 0 1 0 1.4\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M254.461 233.764h-.126a.706.706 0 0 1-.555-.82l5.337-28.222a.706.706 0 0 1 .82-.555.72.72 0 0 1 .568.82l-5.35 28.222a.7.7 0 0 1-.694.555M195.078 233.689h-.127a.71.71 0 0 1-.567-.82l5.349-28.235a.71.71 0 0 1 .271-.517.7.7 0 0 1 .568-.136.708.708 0 0 1 .536.918l-5.337 28.222a.704.704 0 0 1-.693.568\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m96.105 191.426 130.967.151a8.38 8.38 0 0 0 7.809-6.724l24.362-128.608c.706-3.785-1.653-6.75-5.261-6.75l-130.967-.15a8.38 8.38 0 0 0-7.809 6.673L90.844 184.701c-.706 3.697 1.653 6.725 5.261 6.725M2492.26 247.582l130.97.151a8.4 8.4 0 0 0 5.06-2.019 8.43 8.43 0 0 0 2.75-4.705l24.36-128.608c.71-3.784-1.65-6.749-5.26-6.749l-130.97-.152a8.4 8.4 0 0 0-5.05 2 8.42 8.42 0 0 0-2.76 4.674L2487 240.858c-.71 3.696 1.65 6.724 5.26 6.724\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m227.072 192.272-130.967-.151a5.9 5.9 0 0 1-4.643-2.095 6.4 6.4 0 0 1-1.261-5.399l24.387-128.608a9.046 9.046 0 0 1 8.427-7.242l130.967.152a5.88 5.88 0 0 1 4.643 2.043 6.42 6.42 0 0 1 1.261 5.4l-24.349 128.595a9.044 9.044 0 0 1-8.465 7.305m-130.967-1.413 130.967.151a7.732 7.732 0 0 0 7.204-6.308L258.625 56.12a5.17 5.17 0 0 0-.972-4.353 4.62 4.62 0 0 0-3.671-1.64l-130.967-.151a7.76 7.76 0 0 0-7.191 6.22L91.462 184.803a5.21 5.21 0 0 0 .972 4.353 4.64 4.64 0 0 0 3.671 1.64z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m256.984 68.947-144.037-.164a.631.631 0 0 1 0-1.261l144.037.164a.644.644 0 0 1 .631.63.63.63 0 0 1-.631.631\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M247.297 60.839c1.382-1.465 1.523-3.575.317-4.713-1.207-1.137-3.305-.872-4.686.593-1.382 1.466-1.523 3.576-.316 4.713s3.304.872 4.685-.593M235.827 60.817c1.381-1.465 1.523-3.575.316-4.713s-3.305-.872-4.686.594-1.523 3.575-.316 4.712c1.207 1.138 3.304.872 4.686-.593M224.355 60.804c1.381-1.465 1.523-3.575.316-4.713s-3.304-.872-4.686.594c-1.381 1.465-1.522 3.575-.316 4.712 1.207 1.138 3.305.872 4.686-.593\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m188.846 78.88-12.377 65.313 52.496.05 12.363-65.3z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M188.858 78.882h52.483l-12.364 65.313-52.495-.063zm0-1.262a1.26 1.26 0 0 0-1.262 1.022l-12.363 65.313a1.266 1.266 0 0 0 .265 1.034 1.25 1.25 0 0 0 .971.455l52.495.063a1.26 1.26 0 0 0 1.262-1.022l12.364-65.313a1.26 1.26 0 0 0-.265-1.035 1.27 1.27 0 0 0-.972-.467h-52.482z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D23228\",\n d: \"m180.027 125.321-3.57 18.861 52.495.063 3.583-18.835c-4.328-5.198-11.594-6.977-17.991-7.57a75 75 0 0 0-6.774-.29h-.467c-1.855 0-4 0-6.308.265h-.114c-6.623.568-14.546 2.346-20.854 7.506\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"m200.036 121.419 1.614 17.662.467 5.147h1.186l2.422-5.16 8.264-17.561a32.2 32.2 0 0 0-13.953-.088\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M214.014 121.448a9.3 9.3 0 0 1-7.569 3.898 6.47 6.47 0 0 1-6.409-3.923l3.595-15.366h12.616z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M206.521 126a7.21 7.21 0 0 1-7.028-4.365.7.7 0 0 1 0-.353l3.583-15.379a.67.67 0 0 1 .644-.505h12.616a.66.66 0 0 1 .492.215.69.69 0 0 1 .151.53l-2.233 15.366a.6.6 0 0 1-.088.252 9.88 9.88 0 0 1-8.137 4.239m-5.741-4.63a5.89 5.89 0 0 0 5.728 3.331 8.619 8.619 0 0 0 6.939-3.495l2.107-14.483h-11.355z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M214.999 112.653a13.6 13.6 0 0 1-4.467 3.432c-2.762 1.426-6.812 3.028-9.752 2.523l1.729-6.51c2.22.273 4.466.273 6.686 0a20.6 20.6 0 0 0 5.993-1.148c.34-.05.328 1.073-.189 1.703\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M201.916 119.34a8 8 0 0 1-1.262-.088.67.67 0 0 1-.429-.278.65.65 0 0 1-.076-.505l1.729-6.497a.633.633 0 0 1 .706-.467c2.171.265 4.365.265 6.535 0a20.6 20.6 0 0 0 5.816-1.097.73.73 0 0 1 .883.239 2.3 2.3 0 0 1-.353 2.347 14 14 0 0 1-4.668 3.608 22 22 0 0 1-8.881 2.738m-.341-1.262c3.04.139 7.027-1.703 8.68-2.523a12.8 12.8 0 0 0 4.251-3.268c.088-.107.152-.232.19-.365-1.78.514-3.613.823-5.463.921a30 30 0 0 1-6.308 0zM220.461 144.886h-.189a.64.64 0 0 1-.389-.319.64.64 0 0 1-.04-.501l5.046-15.846a.65.65 0 0 1 .323-.38.63.63 0 0 1 .497-.036.62.62 0 0 1 .38.315.63.63 0 0 1 .037.492l-5.047 15.846a.64.64 0 0 1-.618.429M184.96 144.851a.658.658 0 0 1-.619-.694l.959-15.846a.657.657 0 1 1 1.262.076l-.959 15.846a.641.641 0 0 1-.643.618\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M202.66 102.523c.265-3.608-3.898-4.504-4.491-.253a6.96 6.96 0 0 0 .391 3.987 1.937 1.937 0 0 0 1.962 1.184 1.9 1.9 0 0 0 .775-.238\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M200.351 108.111a2.6 2.6 0 0 1-.694-.1 2.86 2.86 0 0 1-1.665-1.451 7.58 7.58 0 0 1-.467-4.378c.353-2.523 1.867-3.52 3.23-3.381a3.23 3.23 0 0 1 2.523 3.785.657.657 0 1 1-1.262-.089c.114-1.451-.618-2.296-1.387-2.384-.77-.088-1.552.479-1.804 2.271a6.3 6.3 0 0 0 .328 3.595c.175.376.493.666.883.808a1.25 1.25 0 0 0 .959-.126.62.62 0 0 1 .494-.06.65.65 0 0 1 .443.805.65.65 0 0 1-.307.39 2.63 2.63 0 0 1-1.274.315\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M218.972 102.533c1.11-3.608 5.602-4.491 4.58-.24a9.04 9.04 0 0 1-1.893 3.987c-.933 1.047-2.233 1.539-3.078.946\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M219.414 108.138a2.12 2.12 0 0 1-1.262-.379.65.65 0 0 1-.321-.425.655.655 0 0 1 1.066-.647c.517.366 1.476 0 2.233-.833a8.8 8.8 0 0 0 1.791-3.709c.101-.416.379-1.804-.391-2.006s-2.359.707-2.927 2.523a.67.67 0 0 1-.319.391.659.659 0 0 1-.943-.769c.783-2.524 3.003-3.886 4.53-3.47.466.14 1.98.783 1.261 3.571a10.1 10.1 0 0 1-2.069 4.277 3.787 3.787 0 0 1-2.649 1.476\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m202.735 94.598-1.98 10.446c-.959 5.047 2.22 9.097 7.09 9.097h1.034a11.355 11.355 0 0 0 10.535-9.071l1.93-9.942s1.653-10.093-7.746-9.083-10.863 8.553-10.863 8.553\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M208.93 114.798h-1.034a7.75 7.75 0 0 1-3.365-.683 7.74 7.74 0 0 1-2.741-2.067 8.44 8.44 0 0 1-1.577-7.116l1.98-10.458c0-.076 1.615-7.974 11.355-9.059a7.45 7.45 0 0 1 6.535 1.88c2.712 2.864 1.943 7.759 1.918 7.973l-1.893 9.954a12.02 12.02 0 0 1-11.178 9.576m-5.513-20.072-1.943 10.496a7.24 7.24 0 0 0 1.35 6.043 6.52 6.52 0 0 0 5.11 2.284h1.034a10.644 10.644 0 0 0 9.891-8.541l1.88-9.916s.694-4.454-1.59-6.85a6.2 6.2 0 0 0-5.437-1.477c-8.819.921-10.232 7.658-10.295 7.96\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M209.839 106.557a14 14 0 0 1-1.401-.076.66.66 0 0 1-.555-.732.66.66 0 0 1 .719-.567 10 10 0 0 0 2.284 0c.303-.606.139-3.344-.353-6.043a.655.655 0 0 1 .529-.757.65.65 0 0 1 .664.281.6.6 0 0 1 .093.236c.24 1.362.984 5.879.076 7.103a1.06 1.06 0 0 1-.732.454 10 10 0 0 1-1.324.101\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M175.068 92.454h-53.895a.707.707 0 0 1 0-1.4h53.895a.707.707 0 0 1 0 1.4M173.252 102.067h-53.896a.703.703 0 0 1-.706-.706.705.705 0 0 1 .706-.707l53.896.076a.695.695 0 0 1 .694.694.71.71 0 0 1-.694.643M171.423 111.666H117.54a.7.7 0 0 1-.559-.168.706.706 0 0 1 .559-1.232h53.883a.707.707 0 0 1 .499 1.202.7.7 0 0 1-.499.198M169.606 121.283H115.71a.704.704 0 0 1-.437-1.165.7.7 0 0 1 .437-.235l53.896.063a.7.7 0 0 1 .559.168.706.706 0 0 1-.559 1.232zM167.789 130.897H129.79a.707.707 0 0 1 0-1.4h37.999a.695.695 0 0 1 .492 1.189.7.7 0 0 1-.492.211M222.278 182.58l-117.707-.139a.73.73 0 0 1-.537-.259.714.714 0 0 1-.157-.574l5.349-28.222a.7.7 0 0 1 .694-.58l117.707.139a.71.71 0 0 1 .543.265.652.652 0 0 1 .151.567l-5.4 28.222a.71.71 0 0 1-.643.581m-116.862-1.539 116.282.138 5.046-26.834-116.282-.139z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"m225.508 163.257-117.329-.138a.71.71 0 0 1-.707-.707.7.7 0 0 1 .208-.495.7.7 0 0 1 .229-.15.7.7 0 0 1 .27-.049l117.329.139a.704.704 0 0 1 .437 1.165.7.7 0 0 1-.437.235\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D1D3D4\",\n d: \"M190.41 182.545h-.126a.71.71 0 0 1-.556-.82l5.35-28.222a.68.68 0 0 1 .285-.453.696.696 0 0 1 .975.178.7.7 0 0 1 .115.527l-5.349 28.222a.71.71 0 0 1-.694.568M131.064 182.474h-.126a.7.7 0 0 1-.445-.297.7.7 0 0 1-.11-.523l5.336-28.222a.706.706 0 0 1 1.375.265l-5.336 28.222a.71.71 0 0 1-.694.555\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"confirm-email_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0-4h406v306H0z\"\n})))));\nexport { SvgConfirmEmail as ReactComponent };\nexport default __webpack_public_path__ + \"ce54a3c2e5b77ffdfa5e77d15e14a6ee.svg\";","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n confirmNowButton: {\n id: 'leanerDashboard.confirmEmailBanner',\n description: 'Button for sending confirm email and open modal',\n defaultMessage: 'Confirm Now',\n },\n confirmEmailTextReminderBanner: {\n id: 'leanerDashboard.confirmEmailTextReminderBanner',\n description: 'Text for reminding user to confirm email',\n defaultMessage: 'Remember to confirm your email so that you can keep learning! {confirmNowButton}.',\n },\n verifiedConfirmEmailButton: {\n id: 'leanerDashboard.verifiedConfirmEmailButton',\n description: 'Button for verified confirming email',\n defaultMessage: 'I\\'ve confirmed my email',\n },\n confirmEmailModalHeader: {\n id: 'leanerDashboard.confirmEmailModalHeader',\n description: 'title for confirming email modal',\n defaultMessage: 'Confirm your email',\n },\n confirmEmailModalBody: {\n id: 'leanerDashboard.confirmEmailModalBody',\n description: 'text hint for confirming email modal',\n defaultMessage: 'We\\'ve sent you an email to verify your account. Please check your inbox and click on the big red button to confirm and keep learning.',\n },\n confirmEmailImageAlt: {\n id: 'leanerDashboard.confirmEmailImageAlt',\n description: 'text alt confirm email image',\n defaultMessage: 'confirm email background',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { StrictDict } from 'utils';\nimport { apiHooks, reduxHooks } from 'hooks';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n showPageBanner: (val) => React.useState(val), // eslint-disable-line\n showConfirmModal: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useConfirmEmailBannerData = () => {\n const { isNeeded } = reduxHooks.useEmailConfirmationData();\n const [showPageBanner, setShowPageBanner] = module.state.showPageBanner(isNeeded);\n const [showConfirmModal, setShowConfirmModal] = module.state.showConfirmModal(false);\n const closePageBanner = () => setShowPageBanner(false);\n const closeConfirmModal = () => setShowConfirmModal(false);\n const openConfirmModal = () => setShowConfirmModal(true);\n const sendConfirmEmail = apiHooks.useSendConfirmEmail();\n\n const openConfirmModalButtonClick = () => {\n sendConfirmEmail();\n openConfirmModal();\n closePageBanner();\n };\n\n const userConfirmEmailButtonClick = () => {\n closeConfirmModal();\n closePageBanner();\n };\n return {\n isNeeded,\n showPageBanner,\n closePageBanner,\n showConfirmModal,\n closeConfirmModal,\n openConfirmModalButtonClick,\n userConfirmEmailButtonClick,\n };\n};\n\nexport default useConfirmEmailBannerData;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport {\n Button,\n Image,\n MarketingModal,\n ModalDialog,\n PageBanner,\n} from '@openedx/paragon';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport confirmEmailSVG from 'assets/confirm-email.svg';\nimport messages from './messages';\nimport './ConfirmEmailBanner.scss';\nimport useConfirmEmailBannerData from './hooks';\n\nexport const ConfirmEmailBanner = () => {\n const {\n isNeeded,\n showConfirmModal,\n showPageBanner,\n closePageBanner,\n closeConfirmModal,\n openConfirmModalButtonClick,\n userConfirmEmailButtonClick,\n } = useConfirmEmailBannerData();\n const { formatMessage } = useIntl();\n\n if (!isNeeded) { return null; }\n\n return (\n <>\n \n {formatMessage(messages.confirmEmailTextReminderBanner, {\n confirmNowButton: (\n \n {formatMessage(messages.confirmNowButton)}\n \n ),\n })}\n \n \n \n \n )}\n footerNode={(\n \n )}\n >\n

{formatMessage(messages.confirmEmailModalHeader)}

\n

{formatMessage(messages.confirmEmailModalBody)}

\n \n \n );\n};\nConfirmEmailBanner.propTypes = {};\n\nexport default ConfirmEmailBanner;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n dashboard: {\n id: 'learnerVariantDashboard.menu.dashboard.label',\n defaultMessage: 'Dashboard',\n description: 'The text for the user menu Dashboard navigation link.',\n },\n dashboardPersonal: {\n id: 'learnerVariantDashboard.menu.dashboardPersonal.label',\n defaultMessage: 'Personal',\n description: 'Link to personal dashboard in user menu',\n },\n dashboardSwitch: {\n id: 'learnerVariantDashboard.menu.dashboardSwitch.label',\n defaultMessage: 'SWITCH DASHBOARD',\n description: 'Switch Dashboard header in the user menu',\n },\n help: {\n id: 'learnerVariantDashboard.help.label',\n defaultMessage: 'Help',\n description: 'The text for the link to the Help Center',\n },\n profile: {\n id: 'learnerVariantDashboard.menu.profile.label',\n defaultMessage: 'Profile',\n description: 'The text for the user menu Profile navigation link.',\n },\n viewPrograms: {\n id: 'learnerVariantDashboard.menu.viewPrograms.label',\n defaultMessage: 'View Programs',\n description: 'The text for the user menu View Programs navigation link.',\n },\n account: {\n id: 'learnerVariantDashboard.menu.account.label',\n defaultMessage: 'Account',\n description: 'The text for the user menu Account navigation link.',\n },\n orderHistory: {\n id: 'learnerVariantDashboard.menu.orderHistory.label',\n defaultMessage: 'Order History',\n description: 'The text for the user menu Order History navigation link.',\n },\n signOut: {\n id: 'learnerVariantDashboard.menu.signOut.label',\n defaultMessage: 'Sign Out',\n description: 'The label for the user menu Sign Out action.',\n },\n course: {\n id: 'learnerVariantDashboard.course',\n defaultMessage: 'Courses',\n description: 'Header link for switching to dashboard page.',\n },\n program: {\n id: 'learnerVariantDashboard.program',\n defaultMessage: 'Programs',\n description: 'Header link for switching to program page.',\n },\n discoverNew: {\n id: 'learnerVariantDashboard.discoverNew',\n defaultMessage: 'Discover New',\n description: 'Header link for switching to discover page.',\n },\n logoAltText: {\n id: 'learnerVariantDashboard.logoAltText',\n defaultMessage: 'edX, Inc. Dashboard',\n description: 'Alt text for the edX logo.',\n },\n collapseMenuOpenAltText: {\n id: 'learnerVariantDashboard.collapseMenuOpenAltText',\n defaultMessage: 'Menu',\n description: 'Alt text for the collapse menu icon when the menu is open.',\n },\n collapseMenuClosedAltText: {\n id: 'learnerVariantDashboard.collapseMenuClosedAltText',\n defaultMessage: 'Close',\n description: 'Alt text for the collapse menu icon when the menu is closed.',\n },\n career: {\n id: 'leanerDashboard.menu.career.label',\n defaultMessage: 'Career',\n description: 'The text for the user menu Career navigation link.',\n },\n newAlert: {\n id: 'header.menu.new.label',\n defaultMessage: 'New',\n description: 'The text announcing that an item in the user menu is New',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport { useWindowSize, breakpoints } from '@openedx/paragon';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport track from 'tracking';\nimport { StrictDict } from 'utils';\nimport { linkNames } from 'tracking/constants';\n\nimport getLearnerHeaderMenu from './LearnerDashboardMenu';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n isOpen: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useIsCollapsed = () => {\n const { width } = useWindowSize();\n const isCollapsed = React.useMemo(() => (width <= breakpoints.large.minWidth), [width]);\n return isCollapsed;\n};\n\nexport const findCoursesNavClicked = (href) => track.findCourses.findCoursesClicked(href, {\n linkName: linkNames.learnerHomeNavExplore,\n});\n\nexport const findCoursesNavDropdownClicked = (href) => track.findCourses.findCoursesClicked(href, {\n linkName: linkNames.learnerHomeNavDropdownExplore,\n});\n\nexport const useLearnerDashboardHeaderMenu = ({\n courseSearchUrl, authenticatedUser, exploreCoursesClick,\n}) => {\n const { formatMessage } = useIntl();\n return getLearnerHeaderMenu(formatMessage, courseSearchUrl, authenticatedUser, exploreCoursesClick);\n};\n\nexport const useLearnerDashboardHeaderData = () => {\n const [isOpen, setIsOpen] = module.state.isOpen(false);\n const toggleIsOpen = () => setIsOpen(!isOpen);\n\n return {\n isOpen,\n toggleIsOpen,\n };\n};\n\nexport default {\n useIsCollapsed,\n findCoursesNavClicked,\n findCoursesNavDropdownClicked,\n useLearnerDashboardHeaderData,\n useLearnerDashboardHeaderMenu,\n};\n","import { getConfig } from '@edx/frontend-platform';\n\nimport urls from 'data/services/lms/urls';\n\nimport messages from './messages';\n\nconst getLearnerHeaderMenu = (\n formatMessage,\n courseSearchUrl,\n authenticatedUser,\n exploreCoursesClick,\n) => ({\n mainMenu: [\n {\n type: 'item',\n href: '/',\n content: formatMessage(messages.course),\n isActive: true,\n },\n ...(getConfig().ENABLE_PROGRAMS ? [{\n type: 'item',\n href: `${urls.programsUrl()}`,\n content: formatMessage(messages.program),\n }] : []),\n {\n type: 'item',\n href: `${urls.baseAppUrl(courseSearchUrl)}`,\n content: formatMessage(messages.discoverNew),\n onClick: (e) => {\n exploreCoursesClick(e);\n },\n },\n ],\n secondaryMenu: [\n ...(getConfig().SUPPORT_URL ? [{\n type: 'item',\n href: `${getConfig().SUPPORT_URL}`,\n content: formatMessage(messages.help),\n }] : []),\n ],\n userMenu: [\n {\n heading: '',\n items: [\n {\n type: 'item',\n href: `${getConfig().ACCOUNT_PROFILE_URL}/u/${authenticatedUser?.username}`,\n content: formatMessage(messages.profile),\n },\n {\n type: 'item',\n href: `${getConfig().ACCOUNT_SETTINGS_URL}`,\n content: formatMessage(messages.account),\n },\n ...(getConfig().ORDER_HISTORY_URL ? [{\n type: 'item',\n href: getConfig().ORDER_HISTORY_URL,\n content: formatMessage(messages.orderHistory),\n }] : []),\n ],\n },\n {\n heading: '',\n items: [\n {\n type: 'item',\n href: `${getConfig().LOGOUT_URL}`,\n content: formatMessage(messages.signOut),\n },\n ],\n },\n ],\n}\n);\n\nexport default getLearnerHeaderMenu;\n","import React from 'react';\n\nimport MasqueradeBar from 'containers/MasqueradeBar';\nimport { AppContext } from '@edx/frontend-platform/react';\nimport Header from '@edx/frontend-component-header';\nimport { reduxHooks } from 'hooks';\nimport urls from 'data/services/lms/urls';\n\nimport ConfirmEmailBanner from './ConfirmEmailBanner';\n\nimport { useLearnerDashboardHeaderMenu, findCoursesNavClicked } from './hooks';\n\nimport './index.scss';\n\nexport const LearnerDashboardHeader = () => {\n const { authenticatedUser } = React.useContext(AppContext);\n const { courseSearchUrl } = reduxHooks.usePlatformSettingsData();\n\n const exploreCoursesClick = () => {\n findCoursesNavClicked(urls.baseAppUrl(courseSearchUrl));\n };\n\n const learnerHomeHeaderMenu = useLearnerDashboardHeaderMenu({\n courseSearchUrl,\n authenticatedUser,\n exploreCoursesClick,\n });\n\n return (\n <>\n \n \n \n \n );\n};\n\nLearnerDashboardHeader.propTypes = {};\n\nexport default LearnerDashboardHeader;\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { logError } from '@edx/frontend-platform/logging';\nimport { initializeHotjar } from '@edx/frontend-enterprise-hotjar';\n\nimport { ErrorPage, AppContext } from '@edx/frontend-platform/react';\nimport FooterSlot from '@openedx/frontend-slot-footer';\nimport { Alert } from '@openedx/paragon';\n\nimport { RequestKeys } from 'data/constants/requests';\nimport store from 'data/store';\nimport {\n selectors,\n actions,\n} from 'data/redux';\nimport { reduxHooks } from 'hooks';\nimport Dashboard from 'containers/Dashboard';\n\nimport track from 'tracking';\n\nimport fakeData from 'data/services/lms/fakeData/courses';\n\nimport AppWrapper from 'containers/WidgetContainers/AppWrapper';\nimport LearnerDashboardHeader from 'containers/LearnerDashboardHeader';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport messages from './messages';\nimport './App.scss';\n\nexport const App = () => {\n const { authenticatedUser } = React.useContext(AppContext);\n const { formatMessage } = useIntl();\n const isFailed = {\n initialize: reduxHooks.useRequestIsFailed(RequestKeys.initialize),\n refreshList: reduxHooks.useRequestIsFailed(RequestKeys.refreshList),\n };\n const hasNetworkFailure = isFailed.initialize || isFailed.refreshList;\n const { supportEmail } = reduxHooks.usePlatformSettingsData();\n const loadData = reduxHooks.useLoadData();\n\n React.useEffect(() => {\n if (authenticatedUser?.administrator || getConfig().NODE_ENV === 'development') {\n window.loadEmptyData = () => {\n loadData({ ...fakeData.globalData, courses: [] });\n };\n window.loadMockData = () => {\n loadData({\n ...fakeData.globalData,\n courses: [\n ...fakeData.courseRunData,\n ...fakeData.entitlementData,\n ],\n });\n };\n window.store = store;\n window.selectors = selectors;\n window.actions = actions;\n window.track = track;\n }\n if (getConfig().HOTJAR_APP_ID) {\n try {\n initializeHotjar({\n hotjarId: getConfig().HOTJAR_APP_ID,\n hotjarVersion: getConfig().HOTJAR_VERSION,\n hotjarDebug: !!getConfig().HOTJAR_DEBUG,\n });\n } catch (error) {\n logError(error);\n }\n }\n }, [authenticatedUser, loadData]);\n return (\n <>\n \n {formatMessage(messages.pageTitle)}\n \n \n
\n \n \n
\n {hasNetworkFailure\n ? (\n \n \n \n ) : (\n \n )}\n
\n
\n \n
\n \n );\n};\n\nexport default App;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient, getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\n\nexport const noticesUrl = `${getConfig().LMS_BASE_URL}/notices/api/v1/unacknowledged`;\nexport const error404Message = 'This probably happened because the notices plugin is not installed on platform.';\n\nexport const getNotices = ({ onLoad }) => {\n const authenticatedUser = getAuthenticatedUser();\n\n const handleError = async (e) => {\n // Error probably means that notices is not installed, which is fine.\n const { customAttributes: { httpErrorStatus } } = e;\n if (httpErrorStatus === 404) {\n logInfo(`${e}. ${error404Message}`);\n } else {\n logError(e);\n }\n };\n if (authenticatedUser) {\n return getAuthenticatedHttpClient().get(noticesUrl, {}).then(onLoad).catch(handleError);\n }\n return null;\n};\n\nexport default { getNotices };\n","import React from 'react';\nimport { getConfig } from '@edx/frontend-platform';\n\nimport { StrictDict } from 'utils';\nimport { getNotices } from './api';\nimport * as module from './hooks';\n\n/**\n * This component uses the platform-plugin-notices plugin to function.\n * If the user has an unacknowledged notice, they will be rerouted off\n * course home and onto a full-screen notice page. If the plugin is not\n * installed, or there are no notices, we just passthrough this component.\n */\nexport const state = StrictDict({\n isRedirected: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useNoticesWrapperData = () => {\n const [isRedirected, setIsRedirected] = module.state.isRedirected();\n React.useEffect(() => {\n if (getConfig().ENABLE_NOTICES) {\n getNotices({\n onLoad: (data) => {\n if (data?.data?.results?.length > 0) {\n setIsRedirected(true);\n window.location.replace(`${data.data.results[0]}?next=${window.location.href}`);\n }\n },\n });\n }\n }, [setIsRedirected]);\n return { isRedirected };\n};\n\nexport default useNoticesWrapperData;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport useNoticesWrapperData from './hooks';\n\n/**\n * This component uses the platform-plugin-notices plugin to function.\n * If the user has an unacknowledged notice, they will be rerouted off\n * course home and onto a full-screen notice page. If the plugin is not\n * installed, or there are no notices, we just passthrough this component.\n */\nconst NoticesWrapper = ({ children }) => {\n const { isRedirected } = useNoticesWrapperData();\n return (\n
\n {isRedirected === true ? null : children}\n
\n );\n};\n\nNoticesWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default NoticesWrapper;\n","/* eslint-disable import/prefer-default-export */\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n Route, Navigate, Routes,\n} from 'react-router-dom';\n\nimport {\n AppProvider,\n ErrorPage,\n PageWrap,\n} from '@edx/frontend-platform/react';\nimport store from 'data/store';\nimport {\n APP_READY,\n APP_INIT_ERROR,\n initialize,\n subscribe,\n mergeConfig,\n} from '@edx/frontend-platform';\n\nimport { configuration } from './config';\n\nimport messages from './i18n';\n\nimport App from './App';\nimport NoticesWrapper from './components/NoticesWrapper';\n\nsubscribe(APP_READY, () => {\n ReactDOM.render(\n \n \n \n } />\n } />\n \n \n ,\n document.getElementById('root'),\n );\n});\n\nsubscribe(APP_INIT_ERROR, (error) => {\n ReactDOM.render(\n ,\n document.getElementById('root'),\n );\n});\n\nexport const appName = 'LearnerHomeAppConfig';\n\ninitialize({\n handlers: {\n config: () => {\n mergeConfig(configuration, appName);\n },\n },\n messages,\n requireAuthenticatedUser: true,\n});\n","var map = {\n\t\"./af\": 19183,\n\t\"./af.js\": 19183,\n\t\"./ar\": 31035,\n\t\"./ar-dz\": 47214,\n\t\"./ar-dz.js\": 47214,\n\t\"./ar-kw\": 40830,\n\t\"./ar-kw.js\": 40830,\n\t\"./ar-ly\": 68899,\n\t\"./ar-ly.js\": 68899,\n\t\"./ar-ma\": 77258,\n\t\"./ar-ma.js\": 77258,\n\t\"./ar-ps\": 19121,\n\t\"./ar-ps.js\": 19121,\n\t\"./ar-sa\": 64096,\n\t\"./ar-sa.js\": 64096,\n\t\"./ar-tn\": 97826,\n\t\"./ar-tn.js\": 97826,\n\t\"./ar.js\": 31035,\n\t\"./az\": 20051,\n\t\"./az.js\": 20051,\n\t\"./be\": 23813,\n\t\"./be.js\": 23813,\n\t\"./bg\": 64323,\n\t\"./bg.js\": 64323,\n\t\"./bm\": 57837,\n\t\"./bm.js\": 57837,\n\t\"./bn\": 75780,\n\t\"./bn-bd\": 25959,\n\t\"./bn-bd.js\": 25959,\n\t\"./bn.js\": 75780,\n\t\"./bo\": 81451,\n\t\"./bo.js\": 81451,\n\t\"./br\": 76480,\n\t\"./br.js\": 76480,\n\t\"./bs\": 91607,\n\t\"./bs.js\": 91607,\n\t\"./ca\": 23232,\n\t\"./ca.js\": 23232,\n\t\"./cs\": 91034,\n\t\"./cs.js\": 91034,\n\t\"./cv\": 54213,\n\t\"./cv.js\": 54213,\n\t\"./cy\": 95800,\n\t\"./cy.js\": 95800,\n\t\"./da\": 40739,\n\t\"./da.js\": 40739,\n\t\"./de\": 66951,\n\t\"./de-at\": 82181,\n\t\"./de-at.js\": 82181,\n\t\"./de-ch\": 61339,\n\t\"./de-ch.js\": 61339,\n\t\"./de.js\": 66951,\n\t\"./dv\": 16938,\n\t\"./dv.js\": 16938,\n\t\"./el\": 59573,\n\t\"./el.js\": 59573,\n\t\"./en-au\": 62458,\n\t\"./en-au.js\": 62458,\n\t\"./en-ca\": 51816,\n\t\"./en-ca.js\": 51816,\n\t\"./en-gb\": 8069,\n\t\"./en-gb.js\": 8069,\n\t\"./en-ie\": 15586,\n\t\"./en-ie.js\": 15586,\n\t\"./en-il\": 60009,\n\t\"./en-il.js\": 60009,\n\t\"./en-in\": 51207,\n\t\"./en-in.js\": 51207,\n\t\"./en-nz\": 83724,\n\t\"./en-nz.js\": 83724,\n\t\"./en-sg\": 24334,\n\t\"./en-sg.js\": 24334,\n\t\"./eo\": 1292,\n\t\"./eo.js\": 1292,\n\t\"./es\": 66328,\n\t\"./es-do\": 61452,\n\t\"./es-do.js\": 61452,\n\t\"./es-mx\": 94444,\n\t\"./es-mx.js\": 94444,\n\t\"./es-us\": 81285,\n\t\"./es-us.js\": 81285,\n\t\"./es.js\": 66328,\n\t\"./et\": 7181,\n\t\"./et.js\": 7181,\n\t\"./eu\": 62830,\n\t\"./eu.js\": 62830,\n\t\"./fa\": 19565,\n\t\"./fa.js\": 19565,\n\t\"./fi\": 85541,\n\t\"./fi.js\": 85541,\n\t\"./fil\": 65661,\n\t\"./fil.js\": 65661,\n\t\"./fo\": 26087,\n\t\"./fo.js\": 26087,\n\t\"./fr\": 25396,\n\t\"./fr-ca\": 96581,\n\t\"./fr-ca.js\": 96581,\n\t\"./fr-ch\": 81294,\n\t\"./fr-ch.js\": 81294,\n\t\"./fr.js\": 25396,\n\t\"./fy\": 12533,\n\t\"./fy.js\": 12533,\n\t\"./ga\": 55796,\n\t\"./ga.js\": 55796,\n\t\"./gd\": 50847,\n\t\"./gd.js\": 50847,\n\t\"./gl\": 60439,\n\t\"./gl.js\": 60439,\n\t\"./gom-deva\": 46514,\n\t\"./gom-deva.js\": 46514,\n\t\"./gom-latn\": 66525,\n\t\"./gom-latn.js\": 66525,\n\t\"./gu\": 34232,\n\t\"./gu.js\": 34232,\n\t\"./he\": 50915,\n\t\"./he.js\": 50915,\n\t\"./hi\": 22095,\n\t\"./hi.js\": 22095,\n\t\"./hr\": 10762,\n\t\"./hr.js\": 10762,\n\t\"./hu\": 88275,\n\t\"./hu.js\": 88275,\n\t\"./hy-am\": 73094,\n\t\"./hy-am.js\": 73094,\n\t\"./id\": 27769,\n\t\"./id.js\": 27769,\n\t\"./is\": 99676,\n\t\"./is.js\": 99676,\n\t\"./it\": 74313,\n\t\"./it-ch\": 25141,\n\t\"./it-ch.js\": 25141,\n\t\"./it.js\": 74313,\n\t\"./ja\": 11985,\n\t\"./ja.js\": 11985,\n\t\"./jv\": 53908,\n\t\"./jv.js\": 53908,\n\t\"./ka\": 32808,\n\t\"./ka.js\": 32808,\n\t\"./kk\": 33930,\n\t\"./kk.js\": 33930,\n\t\"./km\": 71532,\n\t\"./km.js\": 71532,\n\t\"./kn\": 69461,\n\t\"./kn.js\": 69461,\n\t\"./ko\": 60502,\n\t\"./ko.js\": 60502,\n\t\"./ku\": 18660,\n\t\"./ku-kmr\": 58035,\n\t\"./ku-kmr.js\": 58035,\n\t\"./ku.js\": 18660,\n\t\"./ky\": 83088,\n\t\"./ky.js\": 83088,\n\t\"./lb\": 65742,\n\t\"./lb.js\": 65742,\n\t\"./lo\": 25417,\n\t\"./lo.js\": 25417,\n\t\"./lt\": 64968,\n\t\"./lt.js\": 64968,\n\t\"./lv\": 41202,\n\t\"./lv.js\": 41202,\n\t\"./me\": 34438,\n\t\"./me.js\": 34438,\n\t\"./mi\": 18498,\n\t\"./mi.js\": 18498,\n\t\"./mk\": 6744,\n\t\"./mk.js\": 6744,\n\t\"./ml\": 63949,\n\t\"./ml.js\": 63949,\n\t\"./mn\": 4459,\n\t\"./mn.js\": 4459,\n\t\"./mr\": 46679,\n\t\"./mr.js\": 46679,\n\t\"./ms\": 56960,\n\t\"./ms-my\": 47483,\n\t\"./ms-my.js\": 47483,\n\t\"./ms.js\": 56960,\n\t\"./mt\": 99989,\n\t\"./mt.js\": 99989,\n\t\"./my\": 64978,\n\t\"./my.js\": 64978,\n\t\"./nb\": 88460,\n\t\"./nb.js\": 88460,\n\t\"./ne\": 23993,\n\t\"./ne.js\": 23993,\n\t\"./nl\": 95378,\n\t\"./nl-be\": 62678,\n\t\"./nl-be.js\": 62678,\n\t\"./nl.js\": 95378,\n\t\"./nn\": 67560,\n\t\"./nn.js\": 67560,\n\t\"./oc-lnc\": 87060,\n\t\"./oc-lnc.js\": 87060,\n\t\"./pa-in\": 62187,\n\t\"./pa-in.js\": 62187,\n\t\"./pl\": 93532,\n\t\"./pl.js\": 93532,\n\t\"./pt\": 49396,\n\t\"./pt-br\": 92485,\n\t\"./pt-br.js\": 92485,\n\t\"./pt.js\": 49396,\n\t\"./ro\": 33179,\n\t\"./ro.js\": 33179,\n\t\"./ru\": 93797,\n\t\"./ru.js\": 93797,\n\t\"./sd\": 40675,\n\t\"./sd.js\": 40675,\n\t\"./se\": 59036,\n\t\"./se.js\": 59036,\n\t\"./si\": 59160,\n\t\"./si.js\": 59160,\n\t\"./sk\": 31266,\n\t\"./sk.js\": 31266,\n\t\"./sl\": 74699,\n\t\"./sl.js\": 74699,\n\t\"./sq\": 69728,\n\t\"./sq.js\": 69728,\n\t\"./sr\": 87129,\n\t\"./sr-cyrl\": 55000,\n\t\"./sr-cyrl.js\": 55000,\n\t\"./sr.js\": 87129,\n\t\"./ss\": 74346,\n\t\"./ss.js\": 74346,\n\t\"./sv\": 9877,\n\t\"./sv.js\": 9877,\n\t\"./sw\": 918,\n\t\"./sw.js\": 918,\n\t\"./ta\": 24787,\n\t\"./ta.js\": 24787,\n\t\"./te\": 6199,\n\t\"./te.js\": 6199,\n\t\"./tet\": 91851,\n\t\"./tet.js\": 91851,\n\t\"./tg\": 33881,\n\t\"./tg.js\": 33881,\n\t\"./th\": 87828,\n\t\"./th.js\": 87828,\n\t\"./tk\": 99677,\n\t\"./tk.js\": 99677,\n\t\"./tl-ph\": 29253,\n\t\"./tl-ph.js\": 29253,\n\t\"./tlh\": 95586,\n\t\"./tlh.js\": 95586,\n\t\"./tr\": 17254,\n\t\"./tr.js\": 17254,\n\t\"./tzl\": 61192,\n\t\"./tzl.js\": 61192,\n\t\"./tzm\": 69631,\n\t\"./tzm-latn\": 72841,\n\t\"./tzm-latn.js\": 72841,\n\t\"./tzm.js\": 69631,\n\t\"./ug-cn\": 71720,\n\t\"./ug-cn.js\": 71720,\n\t\"./uk\": 28048,\n\t\"./uk.js\": 28048,\n\t\"./ur\": 86751,\n\t\"./ur.js\": 86751,\n\t\"./uz\": 96343,\n\t\"./uz-latn\": 60513,\n\t\"./uz-latn.js\": 60513,\n\t\"./uz.js\": 96343,\n\t\"./vi\": 44821,\n\t\"./vi.js\": 44821,\n\t\"./x-pseudo\": 23973,\n\t\"./x-pseudo.js\": 23973,\n\t\"./yo\": 15000,\n\t\"./yo.js\": 15000,\n\t\"./zh-cn\": 43762,\n\t\"./zh-cn.js\": 43762,\n\t\"./zh-hk\": 9246,\n\t\"./zh-hk.js\": 9246,\n\t\"./zh-mo\": 41107,\n\t\"./zh-mo.js\": 41107,\n\t\"./zh-tw\": 79014,\n\t\"./zh-tw.js\": 79014\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"names":["async","config","pluginSlots","DIRECT_PLUGIN","PLUGIN_OPERATIONS","slot_name","plugins","keepDefault","push","addPlugins","op","Hide","widgetId","Insert","widget","id","type","priority","RenderWidget","_jsx","IndigoFooter","AddDarkTheme","strictGet","target","name","Symbol","toStringTag","console","log","toString","error","e","Error","stack","dict","Proxy","get","dateFormatter","formatDate","date","moment","toDate","year","month","day","nullMethod","RequestStates","StrictDict","inactive","pending","completed","failed","RequestKeys","initialize","refreshList","newEntitlementEnrollment","leaveEntitlementEnrollment","switchEntitlementSession","unenrollFromCourse","updateEmailSettings","enrollEntitlementSession","leaveEntitlementSession","masquerade","recommendedCourses","ErrorStatuses","missingParam","badRequest","unauthorized","forbidden","notFound","conflict","serverError","cardId","val","today","Date","now","app","createSlice","initialState","pageNumber","courseData","entitlement","emailConfirmation","enterpriseDashboard","platformSettings","suggestedCourses","selectSessionModal","filters","reducers","loadCourses","state","_ref","payload","courses","_objectSpread","reduce","obj","curr","index","out","enrollment","lastEnrolled","loadGlobalData","_ref2","socialShareSettings","updateSelectSessionModal","_ref3","setPageNumber","_ref4","setFilters","_ref5","addFilter","_ref6","removeFilter","_ref7","filter","item","clearFilters","actions","reducer","appSelector","mkSimpleSelector","cb","createSelector","module","simpleSelectors","cardSimpleSelectors","certificate","course","courseProvider","courseRun","credit","gradeData","_ref8","relatedPrograms","_ref9","programs","mkCardSelector","simpleSelector","selector","numCourses","Object","keys","length","hasCourses","num","hasAvailableDashboards","data","isLearnerPortalEnabled","showSelectSessionModal","getBaseUrl","getConfig","LMS_BASE_URL","getApiUrl","updateUrl","base","url","startsWith","baseAppUrl","creditPurchaseUrl","courseId","ECOMMERCE_BASE_URL","courseUnenroll","creditRequestUrl","providerId","entitlementEnrollment","uuid","event","getInitApiUrl","learningMfeUrl","LEARNING_BASE_URL","programsUrl","EXECUTIVE_EDUCATION_COURSE_MODES","dateSixMonthsFromNow","setDate","getDate","loadDateVal","courseCard","availableDate","certPreviewUrl","isDownloadable","isEarnedButUnavailable","isEarned","isRestricted","bannerImgSrc","courseNumber","courseName","socialShareUrl","endDate","startDate","isArchived","isStarted","minPassingGrade","Math","floor","homeUrl","marketingUrl","upgradeUrl","progressUrl","resumeUrl","unenrollUrl","isEligible","providerStatusUrl","providerName","purchased","requestStatus","isEnrolled","isStaff","hasUnmetPrereqs","isTooEarly","coursewareAccess","hasAccess","hasStarted","accessExpirationDate","canUpgrade","isAudit","isAuditAccessExpired","isVerified","isEmailEnabled","hasOptedOutOfEmail","mode","isExecEd2UCourse","includes","isEntitlement","deadline","changeDeadline","deadlinePassed","showExpirationWarning","isFulfilled","availableSessions","isExpired","hasSessions","canChange","isPassing","list","map","program","logoImgSrc","numberOfCourses","programType","programUrl","provider","title","SortKeys","window","location","pathname","slice","enrolled","FilterKeys","inProgress","notStarted","done","notEnrolled","upgraded","courseFilters","transforms","toLowerCase","appSelectors","currentList","visibleList","sortBy","pageSize","allCourses","match","sort","sortFn","transform","reverse","v1","v2","a","b","values","visible","numPages","ceil","status","requests","startRequest","requestKey","completeRequest","response","failRequest","clearRequest","statusSelector","fn","isPending","isCompleted","isFailed","errorStatus","request","isInactive","errorCode","isMasquerading","isMasqueradingFailed","isMasqueradingPending","masqueradeErrorStatus","modules","moduleProps","propName","moduleKey","value","rootReducer","combineReducers","selectors","errorData","createStore","loggerMiddleware","createLogger","middleware","thunkMiddleware","redux","composeWithDevToolsLogOnlyInProduction","configuration","process","SEGMENT_KEY","SESSION_COOKIE_DOMAIN","ZENDESK_KEY","SUPPORT_URL","ENABLE_NOTICES","CAREER_LINK_URL","LOGO_URL","ENABLE_EDX_PERSONAL_DASHBOARD","SEARCH_CATALOG_URL","ENABLE_PROGRAMS","messagesOfArLanguage","messagesOfZhCnLanguage","messagesOfViLanguage","messagesOfUzLanguage","messagesOfUkLanguage","messagesOfTrTrLanguage","messagesOfThLanguage","messagesOfTeLanguage","messagesOfRuLanguage","messagesOfPtPtLanguage","messagesOfPtBrLanguage","messagesOfLvLanguage","messagesOfItItLanguage","messagesOfIdLanguage","messagesOfHiLanguage","messagesOfHeLanguage","messagesOfFrCaLanguage","messagesOfFaLanguage","messagesOfEsEsLanguage","messagesOfEs419Language","messagesOfElLanguage","messagesOfDeDeLanguage","messagesOfDaLanguage","messagesOfBoLanguage","messagesOfSwLanguage","messagesOfDeLanguage","messagesFromFrontendPlatform","messagesFromParagon","messagesFromFrontendComponentFooter","messagesOfRoLanguage","usePageNumber","useSelector","useFilters","useEmailConfirmationData","useEnterpriseDashboardData","usePlatformSettingsData","useSelectSessionModalData","useSocialShareSettings","useHasCourses","useHasAvailableDashboards","useCurrentCourseList","opts","useShowSelectSessionModal","useCourseCardData","useCardCertificateData","useCardCourseData","useCardCourseRunData","useCardCreditData","useCardEnrollmentData","useCardEntitlementData","useCardGradeData","useCardProviderData","useCardRelatedProgramsData","useCardSocialSettingsData","defaultSettings","isEnabled","shareUrl","facebook","twitter","loadSettings","utmParams","useCardExecEdTrackingParam","authOrgId","useUpdateSelectSessionModalCallback","dispatch","useDispatch","useTrackCourseEvent","tracker","_len","arguments","args","Array","_key","useSetPageNumber","useSetFilters","useAddFilter","useRemoveFilter","useClearFilters","useLoadData","globalData","_objectWithoutProperties","_excluded","useMasqueradeData","requestName","useRequestIsPending","useRequestIsFailed","useRequestIsCompleted","useRequestIsInactive","useRequestError","useRequestErrorCode","useRequestErrorStatus","useRequestData","useMakeNetworkRequest","promise","onSuccess","onFailure","then","catch","useClearRequest","post","body","getAuthenticatedHttpClient","queryString","client","stringifyUrl","query","skipNull","skipEmptyString","categories","dashboard","upgrade","userEngagement","searchButton","learnerPortal","enterCourseClicked","courseImageClicked","courseTitleClicked","courseOptionsDropdownClicked","upgradeButtonClicked","upgradeButtonClickedEnrollment","upgradeButtonClickedUpsell","shareClicked","userSettingsChanged","newSession","switchSession","leaveSession","unenrollReason","entitlementUnenrollReason","enterpriseDashboardModalOpened","enterpriseDashboardModalCTAClicked","enterpriseDashboardModalClosed","eventNames","findCoursesClicked","purchaseCredit","filterClicked","filterOptionSelected","linkNames","learnerHomeNavExplore","learnerHomeNavDropdownExplore","apiKeys","receiveEmails","enrollmentAction","courseRunId","user","isRefund","apiValues","on","unenroll","unenrollmentAction","enableEmailsAction","logEvent","eventName","urls","courserun_key","event_type","page","href","JSON","stringify","undefined","reduxHooks","useNetworkRequest","action","makeNetworkRequest","useInitializeApp","loadData","api","useNewEntitlementEnrollment","selection","useSwitchEntitlementEnrollment","useLeaveEntitlementSession","isRefundable","delete","useUnenrollFromCourse","useMasqueradeAs","useClearMasquerade","initializeApp","useUpdateEmailSettings","enable","useSendConfirmEmail","sendEmailUrl","useCreateCreditRequest","authenticatedUser","username","React","AppContext","course_key","useValueCallback","prereqs","useFormatDate","useIntl","apiHooks","utilHooks","utils","defineMessages","enterpriseDialogHeader","defaultMessage","description","enterpriseDialogBody","enterpriseDialogDismissButton","enterpriseDialogConfirmButton","createEventTracker","options","sendTrackEvent","app_name","createLinkTracker","preventDefault","setTimeout","global","upsellOptions","linkName","linkType","pageName","linkCategory","courseEventTracker","category","label","courseLinkTracker","upgradeClicked","purchase","engagementOptions","displayName","engagement","reason","course_id","modalOpened","enterpriseUUID","modalCTAClicked","modalClosed","source","entitlements","fromCourseRun","toCourseRun","socialShare","site","social_media_site","findCourses","showModal","track","EnterpriseDashboardModal","formatMessage","handleClose","handleCTAClick","handleEscape","useEnterpriseDashboardHook","setShowModal","trackOpened","trackClose","trackEscape","ModalDialog","isOpen","onClose","hasCloseButton","children","_jsxs","className","style","textAlign","messages","ActionRow","Button","variant","onClick","propTypes","LEAVE_OPTION","changeOrLeaveHeader","selectSessionHeader","changeOrLeaveHint","selectSessionHint","leaveSessionOption","nevermind","confirmSession","selectedSession","SelectSessionModal","closeSessionModal","showLeaveOption","handleSelection","handleSubmit","header","hint","selectedCardId","courseTitle","switchEntitlementEnrollment","setSelectedSession","trackNewSession","trackSwitchSession","trackLeaveSession","isFullscreenOnMobile","size","Form","Group","Label","RadioSet","onChange","session","Radio","courseStatus","clearAll","sortLastEnrolled","sortTitle","refine","Checkbox","filterKey","PropTypes","isRequired","filterOrder","FilterForm","handleFilterChange","CheckboxSet","SortForm","handleSortChange","_Fragment","CourseFilterControls","setSortBy","open","close","setTarget","toggleOpen","toggleClose","useToggle","checked","useCourseFilterControlsData","width","useWindowSize","isMobile","breakpoints","small","minWidth","ref","iconBefore","Tune","disabled","Sheet","position","show","ModalCloseButton","Icon","src","Close","ModalPopup","positionRef","placement","ActiveCourseFilters","handleRemoveFilter","Chip","iconAfter","CloseSmall","Banner","icon","Alert","defaultProps","Info","auditAccessExpired","upgradeToAccess","findAnotherCourse","upgradeDeadlinePassed","exploreCourseDetails","certRestricted","certRestrictedNoEmail","certRefundContactBilling","certRefundContactBillingNoEmail","passingGrade","notEligibleForCert","viewGrades","certReady","viewCertificate","certMinGrade","downloadCertificate","gradeAndCertReadyAfter","entitlementUnavailable","entitlementExpiringSoon","entitlementExpired","selectSession","prerequisitesNotMet","courseHasNotStarted","CourseBanner","hasUnmetPrerequisites","Hyperlink","isInline","destination","isActive","CertificateBanner","supportEmail","billingEmail","emailLink","address","MailtoLink","to","CheckCircle","CreditRequestForm","requestData","current","click","useCreditRequestFormData","parameters","method","key","FormControl","as","CreditContent","message","rel","ProviderLink","approved","congratulations","eligible","eligibleFromProvider","getCredit","mustRequest","received","rejected","requestCredit","viewCredit","viewDetails","ApprovedContent","linkToProviderSite","EligibleContent","creditRequestData","MustRequestContent","createCreditRequest","setRequestData","createCreditApiRequest","hooks","PendingContent","RejectedContent","statusComponents","errorNoEmail","CreditBanner","hookData","ContentComponent","supportEmailLink","EntitlementBanner","openSessionModal","selectSessionButton","ProgramsList","expandBanner","expandBannerAlt","collapseBanner","collapseBannerAlt","RelatedProgramsBanner","programData","Program","ProgramList","CourseCardBanners","disableViewCourse","disableBeginCourse","disableResumeCourse","disableUpgradeCourse","disableSelectSession","disableCourseTitle","bannerAlt","verifiedBanner","verifiedHoverDescription","verifiedBannerRibbonAlt","CourseCardImage","orientation","useActionDisabledState","handleImageClicked","wrapperClassName","image","alt","Badge","verifiedRibbon","tabIndex","toggle","emailsOff","emailsOn","save","EmailSettingsModal","closeModal","isOptedOut","onToggle","setIsOptedOut","useEmailData","Switch","confirmHeader","confirmCancel","confirmUnenroll","reasonHeading","reasonSkip","reasonSubmit","finishHeading","finishThanksText","finishText","finishReturn","ConfirmPane","handleConfirm","reasonKeys","difficulty","goals","broken","time","browse","support","quality","easy","custom","order","customPlaceholder","ReasonPane","selectOption","selected","constants","Control","customOption","placeholder","handleSkip","hasReason","FinishedPane","gaveReason","isSkipped","selectedReason","isSubmitted","confirmed","modalStates","confirm","finished","UnenrollConfirmModal","closeAndRefresh","modalState","isConfirmed","setIsConfirmed","setSelectedReason","setCustomOption","setIsSkipped","setIsSubmitted","submittedReason","handleTrackReasons","handleClear","useUnenrollReasons","useUnenrollData","showFullscreen","classNames","shadow","dropdownAlt","emailSettings","shareToFacebook","shareToTwitter","shareQuote","testIds","emailSettingsModalToggle","SocialShareMenu","handleTwitterShare","handleFacebookShare","Dropdown","Item","ReactShare","socialBrand","resetButtonStyle","stateKeys","isUnenrollConfirmVisible","isEmailSettingsVisible","unenrollModalToggle","CourseCardMenu","useEmailSettings","isVisible","setIsVisible","useKeyedState","hide","unenrollModal","handleToggleDropdown","trackCourseEvent","useHandleToggleDropdown","shouldShowUnenrollItem","shouldShowDropdown","useOptionVisibility","Toggle","IconButton","MoreVert","iconAs","Menu","CourseCardActionSlot","PluginSlot","pluginProps","props","isSmall","useIsCollapsed","medium","maxWidth","beginCourse","resume","viewCourse","SelectSessionButton","ActionButton","BeginCourseButton","execEdTrackingParam","handleClick","ResumeButton","ViewCourseButton","CourseCardActions","accessExpired","accessExpires","courseEnded","courseEnds","courseStarts","unknownProviderName","changeOrLeaveSessionButton","useAccessMessage","CourseCardDetails","accessMessage","changeOrLeaveSessionMessage","useCardDetailsData","CourseCardTitle","handleTitleClicked","CourseCard","isCollapsed","Card","Body","Header","Section","Footer","CourseList","courseListData","filterOptions","showFilters","Pagination","paginationLabel","pageCount","onPageSelect","courseListDataShape","CourseListSlot","lookingForChallengePrompt","exploreCoursesPrompt","exploreCoursesButton","NoCoursesView","courseSearchUrl","Image","emptyCourseSVG","Search","NoCoursesViewSlot","myCourses","CoursesPanel","useCourseListData","querySearch","search","parseNumbers","disable_pagination","loadingSR","errorMessage","pageTitle","sidebarShowing","useDashboardMessages","spinnerScreenReaderText","appMessages","LoadingView","Spinner","animation","screenReaderText","findCoursesWidget","findCoursesButton","arrowIcon","ArrowForward","LookingForChallengeWidget","hyperlinkDestination","ImageCap","moreCoursesSVG","srcAlt","arrow","WidgetSidebarSlot","columnConfig","courseList","withSidebar","lg","span","offset","xl","noSidebar","sidebar","DashboardLayout","useDashboardLayoutData","setSidebarShowing","isDashboardCollapsed","large","courseListColumnProps","Container","fluid","Row","Col","Dashboard","useInitializeDashboard","initIsPending","requestStatuses","providers","edx","mit","programTypeUrl","genCourseId","genCourseNumber","genCourseShareUrl","genEntitlementUUID","pastDate","futureDate","soonDate","soonDateStr","toDateString","genCourseRunData","creditData","genEnrollmentData","genCertificateData","courseRuns","grade","enrollmentUrl","creditVals","entitlementCourses","providerOptions","emailOptions","programsOptions","getOption","compileCourseRunData","lastEnrolledDate","toISOString","compileEntitlementData","_excluded2","courseRunData","entitlementData","isNeeded","courseUrl","AppWrapper","ViewAs","ViewingAs","SubmitButton","StudentNameInput","NoStudentFound","UnknownError","masqueradeInput","masqueradeErrorMessageMap","MasqueradeBar","canMasquerade","masqueradeErrorMessage","handleMasqueradeInputChange","handleClearMasquerade","handleMasqueradeSubmit","handleMasqueradeAs","useMasqueradeInput","setMasqueradeInput","getMasqueradeErrorMessage","administrator","useMasqueradeBarData","FormLabel","inline","PersonSearch","FormGroup","isInvalid","floatingLabel","FormControlFeedback","hasIcon","StatefulButton","labels","default","confirmNowButton","confirmEmailTextReminderBanner","verifiedConfirmEmailButton","confirmEmailModalHeader","confirmEmailModalBody","confirmEmailImageAlt","showPageBanner","showConfirmModal","ConfirmEmailBanner","closePageBanner","closeConfirmModal","openConfirmModalButtonClick","userConfirmEmailButtonClick","useConfirmEmailBannerData","setShowPageBanner","setShowConfirmModal","sendConfirmEmail","PageBanner","dismissible","onDismiss","MarketingModal","heroNode","Hero","confirmEmailSVG","footerNode","dashboardPersonal","dashboardSwitch","help","profile","viewPrograms","account","orderHistory","signOut","discoverNew","logoAltText","collapseMenuOpenAltText","collapseMenuClosedAltText","career","newAlert","findCoursesNavClicked","useLearnerDashboardHeaderMenu","exploreCoursesClick","getLearnerHeaderMenu","mainMenu","content","secondaryMenu","userMenu","heading","items","ACCOUNT_PROFILE_URL","ACCOUNT_SETTINGS_URL","ORDER_HISTORY_URL","LOGOUT_URL","LearnerDashboardHeader","learnerHomeHeaderMenu","mainMenuItems","secondaryMenuItems","userMenuItems","App","hasNetworkFailure","NODE_ENV","loadEmptyData","fakeData","loadMockData","store","HOTJAR_APP_ID","initializeHotjar","hotjarId","hotjarVersion","HOTJAR_VERSION","hotjarDebug","HOTJAR_DEBUG","logError","Helmet","FAVICON_URL","ErrorPage","FooterSlot","noticesUrl","isRedirected","useNoticesWrapperData","setIsRedirected","onLoad","getAuthenticatedUser","customAttributes","httpErrorStatus","logInfo","getNotices","results","replace","NoticesWrapper","subscribe","APP_READY","ReactDOM","AppProvider","Routes","Route","path","element","PageWrap","Navigate","document","getElementById","APP_INIT_ERROR","handlers","mergeConfig","requireAuthenticatedUser","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","exports"],"sourceRoot":""}