{"version":3,"file":"static/js/24.14943f283dff606bb08c.chunk.js","mappings":";4NAqBO,MAAMA,EAAwEC,IAKhF,IALiF,wBAClFC,EAAuB,6BACvBC,EAA4B,iBAC5BC,EAAgB,QAChBC,GACHJ,EACG,MAAMK,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB,kBACjEI,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAE7D,OACII,EAAAA,cAACC,EAAAA,EAAOC,OAAAC,OAAA,CACJC,KAAK,SACLC,UAAU,8CAA6C,aAC3CZ,EACZa,QAASX,GACLG,GAEHN,SCfP,MAAOe,UAA8BP,EAAAA,cAA3CQ,kCAeqB,KAAAC,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GAoB7C,OAnBAF,EAASG,SAAQ,CAACC,EAAMC,KAEpB,MAAMnB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASmB,KAAKC,MAAMvB,iBAAkB,GAAI,IACrEwB,EAAWJ,EAAKI,SAAWJ,EAAKI,SAAW,GACjDtB,EAAQuB,cAAcC,MAAQF,EAC9B,MAAMpB,GAAaC,EAAAA,EAAAA,wBAAuBiB,KAAKC,MAAMvB,iBAAkBE,GACjEyB,EAAoC,CACtCC,UAAWR,EAAKQ,UAChBjB,UAAW,OACXa,SAAUJ,EAAKI,SACfK,QAAST,EAAKS,QAAQC,eACtBC,aAAcX,EAAKW,aACnBC,KAAM,OACNC,qBAAsB7B,EACtBQ,SAASsB,EAAAA,EAAAA,kBAAiBZ,KAAKC,MAAMvB,iBAAkBE,EAASsB,IAEpEN,EAAciB,KAAKR,MAGhBT,GAtCJkB,SACH,MAAMlB,EAAgBI,KAAKP,kBAAkBO,KAAKC,MAAMc,OACxD,OACI/B,EAAAA,cAAA,QAAMK,UAAU,mCACXO,GAAiBA,EAAcD,OAAS,EACrCX,EAAAA,cAACgC,EAAAA,GAAc,CACXD,MAAOnB,EACPqB,UAAW,CAAEC,aAAclB,KAAKC,MAAMiB,aAAcC,eAAgBnB,KAAKC,MAAMkB,kBAEnF,4kBCQpB,MAAMC,UAAyBpC,EAAAA,cAS3BQ,YAAmBS,GACfoB,MAAMpB,GAPO,KAAAvB,kBAAsC4C,EAAAA,EAAAA,oBACnDtB,KAAKC,MAAMsB,QAAQC,QAAQC,kBAC3BzB,KAAKC,MAAMyB,aACX1B,KAAKC,MAAM0B,WA2FR,KAAAC,qBAAwBC,GAAuBC,IAA8C,IAAAC,EAC/D,QAAjCA,EAAI/B,KAAKC,MAAM+B,OAAOC,mBAAW,IAAAF,GAA7BA,EAAgCF,KAChC7B,KAAKC,MAAM+B,OAAOC,YAAYJ,GAAW3B,SAAW4B,EAAMI,OAAOC,QAQlE,KAAAC,oBAAuBN,IAC1B9B,KAAKC,MAAM+B,OAAOK,QAAUP,EAAMI,OAAOC,OAjGzCnC,KAAKsC,MAAQ,CAAEC,SAAS,GACxBvC,KAAKwC,UAAYxD,EAAAA,YACjBgB,KAAKyC,WAAazC,KAAKyC,WAAWC,KAAK1C,MAGpC2C,oBACH,MAAM,QAAEpB,GAAYvB,KAAKC,MAErBsB,GAAWA,EAAQC,SAAWD,EAAQC,QAAQoB,UAAYrB,EAAQC,QAAQoB,QAAQC,kBAClF7C,KAAK8C,SAAS,CAAEP,SAAS,IAI1BzB,SACH,MAAM,OAAEkB,EAAM,QAAET,EAAO,UAAEwB,EAAS,UAAEpB,GAAc3B,KAAKC,OACjD,wBAAEzB,EAAuB,uBAAEwE,GAA2BD,GACtD,QAAER,GAAYvC,KAAKsC,MAEnBO,EAAiBtB,GAAWA,EAAQC,SAAWD,EAAQC,QAAQoB,SAAWrB,EAAQC,QAAQoB,QAAQC,iBACxG,IAAII,EAEJ,IACIA,EAAejB,EACjB,MAAOkB,GAEL,OADAvB,EAAUuB,MAAM,+DAA+DA,KACxElE,EAAAA,cAAA,WAAMkE,GAGjB,GAAIL,IAAmBN,EAEnB,OADAvC,KAAKC,MAAMsB,QAAQI,UAAUuB,MAAM,2DAC5B,KAGX,IAAKC,EAAAA,GAA0BC,UAC3B,OAAOpE,EAAAA,cAAAA,EAAAA,SAAA,MAGX,MAAMqE,EAASC,EAAAA,EAAA,GACRtD,KAAKC,OAAK,IACbsD,UAAWvD,KAAKyC,WAChBe,uBAAwB,CACpBC,YAAazD,KAAKC,MAClBZ,UAAWqE,GAAAA,CAAW,uBAAwBT,EAAa5D,WAC3DsE,IAAK3D,KAAKwC,WAEdoB,WAAY,CACRvE,UAAW,kCACXwE,MAAO,QACPC,MAAM,GAEVC,QAAS,CACL1E,UAAW,iCAEf2E,KAAMf,EAAaZ,SACfrD,EAAAA,cAACmE,EAAAA,GAA0B,CACvB9D,UAAU,6BACV2E,KAAMf,EAAaZ,QACnBpB,UAAW,CAAEgD,OAAQjE,KAAKoC,oBAAqBjB,eAAgBnB,KAAKC,MAAMsB,QAAQC,WAG1FT,MAAOmD,EAAAA,gBAAgBC,YAAYlB,EAAahB,cAC5CjD,EAAAA,cAACO,EAAqB,CAClBwB,MAAOkC,EAAahB,YACpBf,aAAclB,KAAK4B,qBACnBT,eAAgBnB,KAAKC,MAAMsB,QAAQC,QACnC9C,iBAAkBsB,KAAKtB,mBAG/B0F,aACIpF,EAAAA,cAACV,EAA4B,CACzBK,QAASqB,KAAKyC,WACdjE,wBAAyBA,EACzBC,6BAA8BuE,EAC9BtE,iBAAkBsB,KAAKtB,qBAKnC,OAAOsB,KAAKC,MAAMoE,WAAWhB,GAsBzBZ,aACJ,MAAM,QAAElB,GAAYvB,KAAKC,MAErBsB,GAAWA,EAAQC,SAAWD,EAAQC,QAAQoB,UAC9CrB,EAAQC,QAAQoB,QAAQ0B,mBACxBC,SAASC,UAEbxE,KAAK8C,SAAS,CAAEP,SAAS,KAIjC,oFCzJA,MAeA,EAfmEtC,IAC/D,MAAM,uBAAEuD,EAAsB,WAAEI,EAAU,QAAEG,EAAO,aAAEK,EAAY,KAAEJ,EAAI,MAAEjD,GAAUd,EAEnF,OACIjB,EAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAKqE,GACRxE,EAAAA,cAAC0F,EAAAA,MAAK,CAACrF,UAAWuE,EAAWvE,UAAWwE,MAAOD,EAAWC,MAAOC,KAAMF,EAAWE,MAC9E9E,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK4E,GACLC,EACAjD,GAEJqD,0LCUX,MAAOQ,UAAyB5F,EAAAA,cAOlCQ,YAAmBS,GACfoB,MAAMpB,GAHO,KAAA4E,eAAiB,CAAC,QAAS,cA+D3B,KAAAC,oBAAuBhD,IACpC,MAAMiD,EAAcjD,EAAMI,OAGwB,OAAzClC,KAAKgF,wBAAwBC,UACzBnD,EAAMI,SAAWlC,KAAKgF,wBAAwBC,SAC3CjF,KAAKgF,wBAAwBC,QAAQC,SAASH,KACd,OAAvC/E,KAAKmF,sBAAsBF,UACvBnD,EAAMI,SAAWlC,KAAKmF,sBAAsBF,SAAWjF,KAAKmF,sBAAsBF,QAAQC,SAASH,KAG5G/E,KAAK8C,SAAS,CACVsC,mBAAmB,KAiBd,KAAAC,UAAYC,MAAAA,IACzBxD,EAAMyD,iBACN,MAAMC,EAAe1D,EAAM2D,cAAcC,aAAa,cAClDF,GAAgBA,EAAa7F,OAAS,SAChCK,KAAKC,MAAM0F,SAASH,IA5F9BxF,KAAK4F,uBAAyB5F,KAAK4F,uBAAuBlD,KAAK1C,MAC/DA,KAAKmF,sBAAwBnG,EAAAA,YAC7BgB,KAAKgF,wBAA0BhG,EAAAA,YAC/BgB,KAAKsC,MAAQ,CACT8C,mBAAmB,GAIpBzC,oBACH,IAAK,MAAMb,KAAS9B,KAAK6E,eACrBgB,OAAOC,iBAAiBhE,EAAO9B,KAAK8E,qBAAqB,GAI1DiB,uBACH,IAAK,MAAMjE,KAAS9B,KAAK6E,eACrBgB,OAAOG,oBAAoBlE,EAAO9B,KAAK8E,qBAAqB,GAI7DhE,SACH,MAAM,eAAEmF,GAAmBjG,KAAKC,MAEhC,OACIjB,EAAAA,cAAA,OAAKK,UAAU,yCACV4G,MAAAA,OAAc,EAAdA,EAAgBC,KAAKC,GAEI,WAAlBA,EAASC,MACS,WAAlBD,EAASC,MACS,WAAlBD,EAASC,MACS,WAAlBD,EAASC,KAGLpH,EAAAA,cAAA,KACIqH,IAAKF,EAASC,KAAI,aACND,EAASC,KACrBE,SAAU,EAAC,aACCH,EAASI,YACrBjH,QAASU,KAAKqF,UACd3E,KAAK,WACL8F,MAAO,CAAEC,MAAO,OAAQC,QAAS,OAAQC,cAAe,SAAUC,WAAY,WAE9E5H,EAAAA,cAACC,EAAAA,EAAO,CAACI,UAAU,gBAAgBgH,IAAKF,EAASC,KAAM9G,QAASU,KAAKqF,WAChErF,KAAKC,MAAM8C,UAAU8D,wBAKlC,KA4BZjB,uBAAuB9D,GAC3BA,EAAMgF,kBACN,MAAMC,EAA2B/G,KAAKsC,MAAM8C,kBAC5CpF,KAAK8C,SAAS,CACVsC,mBAAoB2B,KC1F1B,MAAOC,UAA8BhI,EAAAA,cAGvCQ,YAAmBS,GACfoB,MAAMpB,GAmDO,KAAAgH,sBAAwB,KACrC,MAAMC,EAAuBlH,KAAKsC,MAAM6E,iBACxCnH,KAAK8C,SAAS,CACVqE,kBAAmBD,KASV,KAAA7B,UAAYC,MAAAA,IACzBxD,EAAMyD,iBACN,MAAMC,EAAe1D,EAAM2D,cAAcC,aAAa,cACjC,OAAjBF,IACAxF,KAAK8C,SAAS,CACVsE,mBAAoB5B,IAGxBxF,KAAKiH,8BACCjH,KAAKC,MAAM0F,SAASH,KASjB,KAAA6B,WAAa/B,MAAAA,IAC1BxD,EAAMyD,iBACN,MAAMC,EAAe1D,EAAM2D,cAAcC,aAAa,cACjC,OAAjBF,IACAxF,KAAK8C,SAAS,CACVsE,mBAAoB5B,IAGxBxF,KAAKiH,8BACCjH,KAAKC,MAAM0F,SAASH,KAzF9BxF,KAAKsH,2BAA6BtI,EAAAA,YAClCgB,KAAKsC,MAAQ,CACT6E,kBAAkB,EAClBC,mBAAoB,IAIrBtG,SAAM,IAAAyG,EACT,MAAM,gCAAEC,EAA+B,sBAAEC,EAAqB,kBAAEC,GAAsB1H,KAAKC,MACrF0H,EAAyBD,IAEzBD,MAAAA,GAA0G,QAArFF,EAArBE,EAAuBG,MAAMzB,GAA6BA,EAASC,OAASpG,KAAKsC,MAAM8E,4BAAmB,IAAAG,OAAA,EAA1GA,EAA4GhB,aAElH,OACIvH,EAAAA,cAAA,OAAKK,UAAU,yCACXL,EAAAA,cAAA,UAAQK,UAAU,6CAA6CC,QAASU,KAAKiH,4BAC7CY,IAA3BF,EAAuCA,EAAyBH,EACjExI,EAAAA,cAAA,QAAMK,UAAU,gDAEnBW,KAAKsC,MAAM6E,iBACRnI,EAAAA,cAAA,MAAIK,UAAU,6CAA6CqB,KAR1D,OAQsEiD,IAAK3D,KAAKsH,4BAC5EG,MAAAA,OAAqB,EAArBA,EAAuBvB,KAAKC,GAErBnH,EAAAA,cAAA,MAAIK,UAAU,kDAAkDgH,IAAKF,EAASC,KAAM1F,KAAK,gBACrF1B,EAAAA,cAAA,KACIqH,IAAKF,EAASC,KAAI,aACND,EAASC,KACrB1F,KAAK,WACLrB,UAAU,kDACViH,SAAU,EAAC,aACCH,EAASI,YACrBjH,QAASU,KAAKqF,UACdyC,UAAW9H,KAAKqH,YAEhBrI,EAAAA,cAAA,QAAMK,UAAU,yDACX8G,EAASI,kBAOlC,8CClDb,MAAMwB,EAAgBA,CACzBC,EACAjF,EACAwB,KAEA,QAAgBsD,IAAZG,EACA,OAEJ,IAAIC,EAAQC,KAAKC,MAAMH,EAAU,MACjC,MAAMI,EAAOH,GAAS,GAAKlF,EAAUsF,QAAU,KAAOtF,EAAUuF,QAAU,KAC1EL,GAAS,GACTA,EAAQA,GAAgB,GACxB,MAAMM,EAAoBP,EAAU,KAC9BQ,EAAUN,KAAKC,MAAMI,EAAoB,IAAM,GAAK,IAAIL,KAAKC,MAAMI,EAAoB,MAAQL,KAAKC,MAAMI,EAAoB,IACpI,OAAIhE,GAAiC,QAArBA,EAASkE,QACd,GAAGL,KAAQH,KAASO,IAEpB,GAAGP,KAASO,KAAWJ,KAIhCM,EAAqBA,CAACC,EAAc5F,KACtC,OAAQ4F,GACJ,IAAK,MACD,OAAO5F,EAAU6F,KAAKC,OAC1B,IAAK,MACD,OAAO9F,EAAU6F,KAAKE,QAC1B,IAAK,MACD,OAAO/F,EAAU6F,KAAKG,UAC1B,IAAK,MACD,OAAOhG,EAAU6F,KAAKI,SAC1B,IAAK,MACD,OAAOjG,EAAU6F,KAAKK,OAC1B,IAAK,MACD,OAAOlG,EAAU6F,KAAKM,SAC1B,QAEI,OAAOnG,EAAU6F,KAAKO,SAI5BC,EAAoBA,CAACT,EAAc5F,KACrC,OAAQ4F,GACJ,IAAK,MACD,OAAO5F,EAAU6F,KAAKS,WAC1B,IAAK,MACD,OAAOtG,EAAU6F,KAAKU,YAC1B,IAAK,MACD,OAAOvG,EAAU6F,KAAKW,cAC1B,IAAK,MACD,OAAOxG,EAAU6F,KAAKY,aAC1B,IAAK,MACD,OAAOzG,EAAU6F,KAAKa,WAC1B,IAAK,MACD,OAAO1G,EAAU6F,KAAKc,aAC1B,QAEI,OAAO3G,EAAU6F,KAAKe,aAI5BC,EAAwBA,CAC1BC,EACAC,EACAC,EACAhH,KAEO,CACHiH,cAAetB,EAAmBmB,EAAU9G,GAC5CkH,aAAcb,EAAkBS,EAAU9G,GAC1CmH,YAAaL,IAAaC,EAASpB,EAAmBoB,EAAQ/G,QAAa8E,EAC3EsC,WAAYN,IAAaC,EAASV,EAAkBU,EAAQ/G,QAAa8E,EACzEuC,UAAWL,IAIbM,EAAmBA,CAACC,EAAuBC,OACzCD,EAAUE,WAAYD,EAAWC,YAIhCF,EAAUE,WAAaD,EAAWC,WAC5BF,EAAUG,WAAaF,EAAWE,UAAYH,EAAUI,YAAcH,EAAWG,WAM1FC,EAAoBA,CAACC,EAA+BC,KAC/C,CACHL,SAAUM,GAAAA,CAAIF,EAAY,aAAaC,KAAiB,GACxDJ,SAAUK,GAAAA,CAAIF,EAAY,GAAGC,iBAAyBhD,GACtD6C,UAAWI,GAAAA,CAAIF,EAAY,GAAGC,kBAA0BhD,KAI1DkD,EAAwBA,CAC1BhB,EACAhH,EACAwB,KAEA,GAAIwF,EAAUS,SACV,OAAOzH,EAAUiI,WAKrB,MAAO,GAH8BjD,EAAcgC,EAAUU,SAAU1H,EAAWwB,MAC/CwD,EAAcgC,EAAUW,UAAW3H,EAAWwB,MAKxE0G,EAAkBA,CAC3BL,EACA7H,EACAwB,KAEA,MAAM2G,EAAsC,GAEtCC,EAAcR,EAAkBC,EAAY,UAC5CQ,EAAeT,EAAkBC,EAAY,WAC7CS,EAAiBV,EAAkBC,EAAY,aAC/CU,EAAgBX,EAAkBC,EAAY,YAC9CW,EAAcZ,EAAkBC,EAAY,UAC5CY,EAAgBb,EAAkBC,EAAY,YAC9Ca,EAAcd,EAAkBC,EAAY,UAElD,IAAIc,EAAuB,MACvBC,EAAqB,MA0DzB,OAxDKtB,EAAiBc,EAAaC,KAC/BF,EAAerK,KACX+I,EAAsB8B,EAAaC,EAAWZ,EAAsBI,EAAapI,EAAWwB,GAAWxB,IAG3G2I,EAAc,OAElBC,EAAY,MAEPtB,EAAiBe,EAAcC,KAChCH,EAAerK,KACX+I,EAAsB8B,EAAaC,EAAWZ,EAAsBK,EAAcrI,EAAWwB,GAAWxB,IAG5G2I,EAAc,OAElBC,EAAY,MAEPtB,EAAiBgB,EAAgBC,KAClCJ,EAAerK,KACX+I,EAAsB8B,EAAaC,EAAWZ,EAAsBM,EAAgBtI,EAAWwB,GAAWxB,IAG9G2I,EAAc,OAElBC,EAAY,MAEPtB,EAAiBiB,EAAeC,KACjCL,EAAerK,KACX+I,EAAsB8B,EAAaC,EAAWZ,EAAsBO,EAAevI,EAAWwB,GAAWxB,IAG7G2I,EAAc,OAElBC,EAAY,MAEPtB,EAAiBkB,EAAaC,KAC/BN,EAAerK,KACX+I,EAAsB8B,EAAaC,EAAWZ,EAAsBQ,EAAaxI,EAAWwB,GAAWxB,IAG3G2I,EAAc,OAElBC,EAAY,MAEPtB,EAAiBmB,EAAeC,KACjCP,EAAerK,KACX+I,EAAsB8B,EAAaC,EAAWZ,EAAsBS,EAAezI,EAAWwB,GAAWxB,IAG7G2I,EAAc,OAElBC,EAAY,MAEZT,EAAerK,KAAK+I,EAAsB8B,EAAaC,EAAWZ,EAAsBU,EAAa1I,EAAWwB,GAAWxB,IAEpHmI,GClNEU,EAAwB,CACjC,wBACA,qCACA,2BACA,kCACA,iCACA,YACA,OACA,2BACA,SACA,4BCwFEC,EAAgD,CAClDC,mBAAmB7L,EAA4C8L,GAC3D9L,EAAM+L,SAASC,WAAWhM,EAAMsE,SAAUwH,IAE9CG,sBAAsBjM,GAClBA,EAAM+L,SAASE,sBAAsBjM,EAAMsE,SAAS4H,gBAExDC,uBAAuBnM,GACnBA,EAAM+L,SAASI,2BA2GjBC,EAA+BpM,GAA+C,KAChF4L,EAA8CC,mBAAmB7L,IAS/DqM,EAA4BA,CAACrM,EAA4CsM,IAAwB,KACnGV,EAA8CC,mBAAmB7L,EAAOsM,IAQtEC,EAAmBvM,GAA+CqF,MAAAA,IACpEuG,EAA8CC,mBAAmB7L,EAAOuF,GACxEqG,EAA8CK,sBAAsBjM,GAC7DwM,QAAQC,WA6CNC,EAAuBA,CAChCC,EACAC,KAEA,MAAMC,EAAmC,GAQzC,OAPAF,MAAAA,GAAAA,EAAwB1G,KAAIC,IACxB,MAAM4G,EAASF,MAAAA,OAAqB,EAArBA,EAAuBjF,MAAKoF,GAAaA,EAAU5G,OAASD,EAASC,OAChF2G,GACAD,EAAejM,KAAKkM,MAIrBD,GA2HEG,EAnHyEhN,IAClF,MAAOiN,EAAaC,GAAkBnO,EAAAA,UAAe,IAC/C,gBACFoO,EAAe,kBACfC,EAAiB,UACjBC,EAAS,SACT/I,EAAQ,UACRxB,EAAS,WACT6H,EAAU,iBACV2C,EAAgB,iBAChBC,EAAgB,iBAChB9O,EAAgB,sBAChBmO,EAAqB,wBACrBY,GACAxN,EAEEyN,EAAgCnJ,EAASoJ,YACzCC,EAAmCrJ,EAASsJ,QAC5CC,EAlIkBC,CAAAA,IACxB,IAAKA,EACD,OAGJ,MAAMC,EAAmBD,EAASE,QAAOC,GAAwC,IAA7BA,EAAQC,mBAA2BD,EAAQE,YAE/F,GAAIlK,EAAAA,gBAAgBC,YAAY6J,GAAmB,CAC/C,MAAMK,EAAsBL,EAAiBpG,MAAKsG,GAAWA,EAAQI,YAErE,OAAID,EACOA,EAAoBE,QAGxBP,EAAiB,GAAGO,UAoHSC,CAAmBjK,EAASkK,UAE9DC,EAAgBpB,EAAYvK,EAAU4L,QAAU5L,EAAU6L,WAC1DC,EAAatB,QAAsC1F,EACnDiH,EAAgC1B,OAAkBvF,EAAYgH,GAA0BH,EACxFK,EAAoB3B,GAAmBE,EACvC0B,EAAkCjM,EAAUkM,eAC5CC,EAAiCnM,EAAUoM,8BAA8BC,QAAQ,cAAe1B,GAAa,IAC7G9O,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB2Q,EAAAA,kBAAkBC,eACzF1Q,EAAQuB,cAAcC,MAAQiP,EAAAA,kBAAkBE,eAChD3Q,EAAQuB,cAAcC,MAAQiP,EAAAA,kBAAkBG,qBAChD,MAAMC,EAAqB9C,EAAqBc,EAAyBZ,GAUzE,OARA7N,EAAAA,WAAgB,KACZ4M,EAAsB1F,KAAKlC,IACnB8K,GAAaA,EAAUY,SAAS1L,IAChCmJ,GAAe,QAGxB,IAGCnO,EAAAA,cAAA,OAAKK,UAAU,0BACXL,EAAAA,cAAA,OAAKK,UAAU,qBACXL,EAAAA,cAAA,OAAKK,UAAU,gBACXL,EAAAA,cAAA,SAAI+D,EAAU4M,mBACd3Q,EAAAA,cAAA,YAAO0O,GACNE,GACG5O,EAAAA,cAAA,OAAKK,UAAU,WACXL,EAAAA,cAAA,aACAA,EAAAA,cAAA,YAAOuF,EAASqL,QAChB5Q,EAAAA,cAAA,YAAO,GAAGuF,EAASsL,QAAQtL,EAASuL,UAAUvL,EAASwL,QAG9DjC,GACG9O,EAAAA,cAAA,WACIA,EAAAA,cAAA,aACAA,EAAAA,cAAA,YAAO8O,KAInB9O,EAAAA,cAAA,OAAKK,UAAU,cACXL,EAAAA,cAAA,KAAGK,UAAU,oBAAoB0D,EAAUiN,kBAnPtCC,EACrBrF,EACArG,EACAxB,KAGA,GAAI6H,MAAAA,GAAAA,EAAYsF,kBAAmB,CAC/B,MAAMhF,EAAsCD,EAAgBL,EAAWsF,kBAAmBnN,EAAWwB,GAErG,OACIvF,EAAAA,cAAA,OAAKwH,MAAO,CAAEE,QAAS,OAAQC,cAAe,SAAUC,WAAY,WAC/DsE,EAAehF,KAAIiK,GAEZnR,EAAAA,cAAA,OACIqH,IAAK+J,KAAKC,UAAUF,GACpB3J,MAAO,CAAEE,QAAS,OAAQ4J,eAAgB,eAAgBC,QAAS,MAAO5J,cAAe,QAExFwJ,EAAYjG,YACTlL,EAAAA,cAAA,OAAKwH,MAAO,CAAEE,QAAS,OAAQ4J,eAAgB,SAAUE,YAAa,SAClExR,EAAAA,cAAA,QAAMyR,MAAON,EAAYlG,cAAekG,EAAYnG,eAAqB,KAAG,IAC5EhL,EAAAA,cAAA,QAAMyR,MAAON,EAAYhG,YAAagG,EAAYjG,cAGtDlL,EAAAA,cAAA,OAAKwH,MAAO,CAAEE,QAAS,OAAQ4J,eAAgB,SAAUE,YAAa,SAClExR,EAAAA,cAAA,QAAMyR,MAAON,EAAYlG,cAAekG,EAAYnG,gBAG5DhL,EAAAA,cAAA,OAAKwH,MAAO,CAAEE,QAAS,OAAQ4J,eAAgB,WAAaH,EAAY/F,eAShG,MAAMsG,EAAoC3I,EAAcxD,EAASoM,SAAU5N,GACrE6N,EAAkC7I,EAAcxD,EAASsM,OAAQ9N,GAEvE,OACI/D,EAAAA,cAAA,OAAKK,UAAU,wCACVqR,EAAa,IAAGE,IA2MRX,CAAiBrF,EAAYrG,EAAUxB,MAG9CyK,GACExO,EAAAA,cAAA,OAAKK,UAAU,qBACXL,EAAAA,cAAA,OAAKK,UAAU,gBAEVyP,GAAa9P,EAAAA,cAAA,SAAI8P,IAErBzB,EACGrO,EAAAA,cAAA,SAAI+D,EAAU+N,iBACd/B,GAAqB7B,EACS,IAA9BuC,EAAmB9P,OACfX,EAAAA,cAAA,OAAKwH,MAAO,CAAEC,MAAO,OAAQC,QAAS,OAAQC,cAAe,SAAUC,WAAY,WAC/E5H,EAAAA,cAACC,EAAAA,EAAO,cACQiQ,EACZ5P,QAAS+M,EAA4BpM,GACrCZ,UAAU,iBAGT2P,IAvIX+B,EACtB9Q,EACAwP,EACAT,EACAE,EACAnM,SAEiC8E,IAA7B5H,EAAM+Q,mBAEFhS,EAAAA,cAAC4F,EAAgB,CACbqM,yBAA0BjC,EAC1B/I,eAAgBwJ,EAChB9J,SAAU6G,EAAgBvM,GAC1B8C,UAAWA,IAKnB/D,EAAAA,cAAA,uBAEgBkQ,EACZ5P,QAASgN,EAA0BrM,EAAOA,EAAM+Q,qBAE/ChC,GAoHe+B,CACI9Q,EACAwP,EACAT,EACAE,EACAjP,EAAMiR,qBAIdlS,EAAAA,cAAA,OAAKwH,MAAO,CAAEC,MAAO,OAAQC,QAAS,OAAQC,cAAe,SAAUC,WAAY,WAC/E5H,EAAAA,cAACC,EAAAA,EAAO,cACQiQ,EACZ5P,QAAS+M,EAA4BpM,GACrCZ,UAAU,gBAEV8R,UAAU,GAETnC,OC7VjC,IAAaoC,EAAb,cAAgDpS,EAAAA,cAO5CQ,YAAmBS,GACfoB,MAAMpB,GA+CO,KAAAoR,eAAkBC,GAAiD,KAChFtR,KAAKC,MAAMX,QAAQgS,MAAAA,OAAe,EAAfA,EAAiBnF,gBA2EvB,KAAAoF,gBAAkB,KAC/B,MAAMC,EAAsBxR,KAAKyR,oBAAoBxM,QAC/CyM,EAASF,MAAAA,OAAmB,EAAnBA,EAAqBG,cAChCH,GAAuBE,IACnBA,EAAOE,UAAYJ,EAAoBK,UACvCH,EAAOE,UAAYJ,EAAoBK,UAChCL,EAAoBK,UAAYL,EAAoBM,aAAeJ,EAAOE,UAAYF,EAAOI,eACpGJ,EAAOE,UAAYJ,EAAoBK,UAAYL,EAAoBM,aAAeJ,EAAOI,gBAUxF,KAAAC,mBAAsBxN,GAClCvE,KAAKC,MAAM+R,yBAA2BzN,GAAYvE,KAAKC,MAAM+R,wBAAwB7F,gBAAkB5H,EAAS4H,gBACjH,EAOa,KAAA8F,kBAAqBC,IAC7BlS,KAAKC,MAAMkS,yBAIZjO,EAAAA,gBAAgBC,YAAY+N,OACrBA,EAAmB,GAAGE,mBAAoBF,EAAmB,GAAGE,kBAAoB,GAWlF,KAAAC,qBAAwBC,IACrC,GAAIA,GAAyBpO,EAAAA,gBAAgBC,YAAYmO,EAAsBC,6BAC3E,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAsBC,4BAA4B5S,OAAQ6S,IAAK,KAAAC,EAC/E,IAC6C,QAAzCA,EAAAH,EAAsBI,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzCA,EAA2CE,uBAAe,IAAAF,OAAA,EAA1DA,EAA4DG,uBAC5DN,EAAsBC,4BAA4BC,GAAGK,iBAErD,OAAOP,EAAsBC,4BAA4BC,GAAGM,kBAa3D,KAAAC,cAAiBhQ,IACvB,CACHiQ,kBAAmBjQ,EAAUkQ,YAC7BjD,iBAAkBjN,EAAUmQ,SAC5BC,uBAAwBpQ,EAAUqQ,iBAElCpI,WAAYjI,EAAUsQ,qBACtBzE,WAAY7L,EAAUuQ,eACtB3E,QAAS5L,EAAUwQ,YAEnBzC,gBAAiB/N,EAAUyQ,0BAC3BvE,eAAgBlM,EAAU0Q,gBAC1BtE,8BAA+BpM,EAAU2Q,0BACzCC,wBAAyB5Q,EAAU4Q,wBACnCC,iCAAkC7Q,EAAU6Q,iCAC5CC,mBAAoB9Q,EAAU8Q,mBAC9BC,wBAAyB/Q,EAAU+Q,wBACnCnE,kBAAmB5M,EAAU4M,kBAC7BrH,OAAQvF,EAAUuF,OAClBD,OAAQtF,EAAUsF,OAElBO,KAAM,CACFC,OAAQ9F,EAAUgR,qBAClBjL,QAAS/F,EAAUiR,sBACnBjL,UAAWhG,EAAUkR,wBACrBjL,SAAUjG,EAAUmR,uBACpBjL,OAAQlG,EAAUoR,qBAClBjL,SAAUnG,EAAUqR,uBACpBjL,OAAQpG,EAAUsR,qBAClBhL,WAAYtG,EAAUuR,yBACtBhL,YAAavG,EAAUwR,0BACvBhL,cAAexG,EAAUyR,4BACzBhL,aAAczG,EAAU0R,2BACxBhL,WAAY1G,EAAU2R,yBACtBhL,aAAc3G,EAAU4R,2BACxBhL,WAAY5G,EAAU6R,4BA5N9B5U,KAAKyR,oBAAsBzS,EAAAA,YAC3BgB,KAAK6U,aAAe,EAGjBC,mBAAmBC,GAClB/U,KAAKC,MAAM+U,0BAA4BD,EAAcC,yBACrDhV,KAAKuR,kBAIN5O,oBACC3C,KAAKC,MAAMgV,YACXjV,KAAKkV,QAAUlV,KAAKmV,YAAYnV,KAAKC,MAAMgV,aAG/CG,EAAAA,EAAAA,KACI,IAAMpV,KAAKC,MAAMgV,YACjB,KACQjV,KAAKC,MAAMgV,YACXjV,KAAKkV,QAAUlV,KAAKmV,YAAYnV,KAAKC,MAAMgV,eAMpDnU,SACH,OAAKoD,EAAAA,gBAAgBC,YAAYnE,KAAKkV,UAItClV,KAAK6U,aAAe,EAGhB7V,EAAAA,cAAA,OAAKK,UAAWqE,GAAAA,CAAW,6BAA8B,CAAE2R,KAAMrV,KAAKC,MAAMqV,cAAgB5U,KAAK,QAC5FV,KAAKkV,QAAQhP,KAAI,CAACqP,EAAOxV,IACfC,KAAKwV,qBAAqBD,EAAOxV,OARzC,KAuBPyV,qBAAqBD,EAAiCxV,GAAa,IAAA0V,EACvE,MAAMnE,EAAkBiE,MAAAA,GAA0B,QAArBE,EAALF,EAAO7C,2BAAmB,IAAA+C,OAAA,EAA1BA,EAA4B9C,gBAC9CqC,EAA0BhV,KAAKC,MAAM+U,wBACrCU,EAAkBH,MAAAA,OAAK,EAALA,EAAOI,2BAEV,IAAAC,EAArB,GAAItE,EAEA,QADEtR,KAAK6U,aAEH7V,EAAAA,cAAA,OACIK,UAAWqE,GAAAA,CAAW,4BAA6B,CAC/CmS,SAAUb,IAA4B1D,EAAgBnF,gBAE1D9F,IAAKtG,EACLW,KAAK,WAAU,eACDwD,EAAAA,gBAAgBC,YAAYnE,KAAKkV,SAAWlV,KAAKkV,QAAQvV,OAVxD,EAUmF,gBACnFK,KAAK6U,aACpBvV,QAASU,KAAKqR,eAAeC,GAC7B3N,IAAKqR,IAA4B1D,EAAgBnF,cAAgBnM,KAAKyR,yBAAsB5J,GAE5F7I,EAAAA,cAACiO,EAAsC,CACnC1I,SAAU+M,EACV1G,WAAY2K,EAAMO,WAClB/S,UAAW/C,KAAK+S,cAAc/S,KAAKC,MAAM8C,WACzCgT,sBAAuB/V,KAAKC,MAAM8V,sBAClC1I,kBAAmBrN,KAAK+R,mBAAmBT,GAC3ChE,UAAWtN,KAAKiS,kBAAkBsD,MAAAA,GAA0B,QAArBK,EAALL,EAAO7C,2BAAmB,IAAAkD,OAAA,EAA1BA,EAA4BI,oBAC9DhK,SAAU,CACNC,WAAYjM,KAAKC,MAAM6L,mBACvBI,sBAAuBlM,KAAKC,MAAMiM,sBAClCE,uBAAwBpM,KAAKC,MAAMmM,wBAEvCmB,iBAAkBvN,KAAKqS,qBAAqBkD,GAC5C/H,iBAAkBxN,KAAKC,MAAMuN,iBAC7BzN,MAAOC,KAAK6U,aAAaoB,WACzBC,yBAA0BlW,KAAKC,MAAMiW,yBACrCC,wBAAyBnW,KAAKC,MAAMkW,wBACpCzX,iBAAkBsB,KAAKC,MAAMvB,iBAC7B0X,mBAAoBpW,KAAKC,MAAMmW,mBAC/BvJ,sBAAuB6I,MAAAA,OAAe,EAAfA,EAAiBW,gBACxC5I,wBAAyBzN,KAAKC,MAAMqW,6BACpCtF,mBAAoBhR,KAAKC,MAAM+Q,mBAC/BuF,gBAAiBvW,KAAKC,MAAMsW,gBAC5BrF,oBAAqBlR,KAAKC,MAAMiR,uBAa5CiE,YAAYqB,GAMhB,MAAMC,EAAoBtU,IAA+B,IAAAuU,EAAA,OACrD1W,KAAKC,MAAMkW,yBACXnW,KAAKC,MAAMiW,2BACc,QAAzBQ,EAAAvU,EAAMuQ,2BAAmB,IAAAgE,GAAiB,QAAjBA,EAAzBA,EAA2B/D,uBAAe,IAAA+D,OAAA,EAA1CA,EAA4CvK,iBAAkBnM,KAAKC,MAAMiW,0BAE7E,MAAO,IAAIM,EAAOvI,OAAOwI,MAAsBD,EAAOvI,QAAOsH,IAAUkB,EAAiBlB,SA5HhFoB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,8BADFxF,GAA0BuF,EAAAA,EAAAA,IAAA,CADtCE,EAAAA,IACYzF,GCQP,MAAO0F,UAAgC9X,EAAAA,cAWzCQ,YAAmBS,GACfoB,MAAMpB,GAXO,KAAA8W,aAAkD/X,EAAAA,YAM3D,KAAAgY,cAAwB,GAExB,KAAAC,sBAAgC,EA8DvB,KAAAC,qBAAwBpV,IAIrC,GAAIA,EAAMqV,UAAYC,EAAAA,SAASC,SAAWvV,EAAMqV,UAAYC,EAAAA,SAASE,UAAW,CAC5E,MAAMC,EAAwBzV,EAAMI,OAA4BwD,aAAa,yBAC7E,GAAI6R,EAAsB,CACtB,GAA2B,KAAvBvX,KAAKgX,cAGL,OAFAhX,KAAKgX,cAAgBO,OACrBvX,KAAKiX,sBAAuB,GAI5BM,IAAyBvX,KAAKgX,eAC9BhX,KAAKgX,cAAgBO,EACrBvX,KAAKiX,sBAAuB,GAE5BjX,KAAKiX,sBAAuB,KAU3B,KAAAO,oBAAuB1V,IAChCA,EAAMqV,UAAYC,EAAAA,SAASK,OAAS3V,EAAMqV,UAAYC,EAAAA,SAASM,OAC/D1X,KAAKC,MAAM0X,mBAQF,KAAAC,mBAAqBtS,MAAAA,IAClC,MAAMuS,EAAqB/V,EAAMI,OAAOC,YAElCnC,KAAKC,MAAM6X,kBAAkBD,IAOtB,KAAAE,UAAYzS,MAAAA,IAAqD,IAAA0S,EAC9ElW,EAAMyD,iBACmB,QAAzByS,EAAAhY,KAAK+W,aAAa9R,eAAO,IAAA+S,GAAzBA,EAA2BC,OACtBjY,KAAKiX,4BACAjX,KAAKC,MAAMiY,cAAclY,KAAKC,MAAMkC,OAE9CnC,KAAKiX,sBAAuB,GAOf,KAAAkB,iBAAmB,IAAM7S,MAAAA,IACtCtF,KAAKC,MAAMmY,yBAAyB5S,GAC7BiH,QAAQC,WAgBF,KAAA2L,sBAAwB,CACrCpY,EACAqY,EACAhC,EACAiC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAoBD,EAAoB,WAAa,YAC3D,OAAID,EAEI1Z,EAAAA,cAAA,WACKwZ,GACGxZ,EAAAA,cAAA,SAAAE,OAAAC,OAAA,CAAQG,QAASW,EAAM4Y,0BAA8B7Y,KAAK8Y,yBACrDR,GAGTtZ,EAAAA,cAACgI,EAAqB,CAClBQ,gCAAiC+Q,EACjC7Q,kBAAmBzH,EAAM+Q,wBAAqBnJ,EAAY0Q,EAC1D9Q,sBAAuB6O,EACvB3Q,SAAU3F,KAAKmY,qBAEnBnZ,EAAAA,cAAA,WAAMyZ,IAIdD,EAEIxZ,EAAAA,cAAA,SAAAE,OAAAC,OAAA,CACIE,UAAW,gCAAgCuZ,IAC3CtZ,QAASW,EAAM4Y,0BACX7Y,KAAK8Y,yBAERR,GAIN,MAhLPtY,KAAKsC,MAAQ,CAAEH,MAAO,IACtBnC,KAAKwX,oBAAsBxX,KAAKwX,oBAAoB9U,KAAK1C,MACzD,MAAMpB,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASoB,EAAMvB,iBAAmB2Q,EAAAA,kBAAkB0J,aAC/F/Y,KAAKgZ,uBAAwBja,EAAAA,EAAAA,wBAAuBkB,EAAMvB,iBAAmBE,GAC7EA,EAAQuB,cAAcC,MAAQiP,EAAAA,kBAAkB4J,aAChDra,EAAQuB,cAAcC,MAAQiP,EAAAA,kBAAkB6J,cAChDlZ,KAAK8Y,yBAA0B/Z,EAAAA,EAAAA,wBAAuBkB,EAAMvB,iBAAmBE,GAG5EkC,SACH,MAKIiC,WAAW,sBAAEoW,EAAqB,sBAAEC,GAAuB,GAC3DC,EAAE,MACFlX,GACAnC,KAAKC,MAET,OACIjB,EAAAA,cAAA,OAAKwH,MAAO,CAAE8S,aAAc,SACxBta,EAAAA,cAAA,QACIK,UAAU,aAAY,aACV8Z,EACZI,KAAK,0BACLC,aAAa,MACbC,SAAUzZ,KAAK+X,UACfsB,GAAI,yCAAyCA,KAE7Cra,EAAAA,cAAA,SACIK,UAAU,uBAEVD,KAAK,OAAM,aACCY,KAAKC,MAAM8C,UAAU2W,qBACjCC,YAAaP,EACbjX,MAAOA,EACPwD,SAAU3F,KAAK4X,mBACfyB,GAAI,+BAA+BA,IACnC1V,IAAK3D,KAAK+W,aACVrW,KAAK,WAAU,gBACD,QAAO,gBACP,qBACdkZ,QAAS5Z,KAAKkX,qBACd2C,WAAS,IAEb7a,EAAAA,cAACC,EAAAA,EAAOC,OAAAC,OAAA,CAACqH,MApC8B,CAC/CC,MAAO,QAmC4CzG,KAAKgZ,sBAAqB,CAAE5Z,KAAK,WACvEY,KAAKC,MAAM8C,UAAUoW,0BCzGvC,MAAMW,EAAuEvb,IAAA,IAAC,UAAEwE,GAAWxE,EAAA,OAC9FS,EAAAA,cAAA,OAAKK,UAAU,iCACXL,EAAAA,cAAA,SAAI+D,EAAUgX,sBAITC,EAAiCA,IAAMhb,EAAAA,cAAA,OAAKK,UAAWqE,GAAAA,CAAW,cAAe,yCAmCjFuW,EAAoFC,IAM5F,IAN6F,UAC9FjF,EAAS,aACTkF,EAAY,UACZpX,EAAS,cACTqX,EAAa,sBACbrE,GACHmE,EACG,GAAIjF,EAAW,CACX,MAAMoF,EACFtE,IAA0BhT,EAAUuX,eAAiBvX,EAAUsX,kBAAoBtX,EAAUwX,sBACjG,OACIvb,EAAAA,cAAA,OAAKK,UAAU,oCACV+a,EACKrX,EAAUyX,qBAAqBpL,QAAQ,UAAW6F,EAAUtV,OAAOsW,YACnEoE,EAAkBjL,QAAQ,UAAW6F,EAAUtV,OAAOsW,YAAY7G,QAAQ,WAAY+K,EAAalE,aAKrH,OAAO,MC4BL5J,EAA+BpM,GAA+B,KAAK,IAAAwa,EAC9C,QAAvBA,EAAIxa,EAAMya,qBAAa,IAAAD,GAAqB,QAArBA,EAAnBA,EAAqB/H,2BAAmB,IAAA+H,GAAxCA,EAA0C9H,iBAC1C1S,EAAM+L,SAASC,WAAWhM,EAAMya,cAAchI,oBAAoBC,kBASpEgI,EAAmC1a,GAA+B,KAAK,IAAA2a,EACzE3a,EAAM+L,SAASE,sBAAyC,QAApB0O,EAAC3a,EAAMya,qBAAa,IAAAE,GAAqB,QAArBA,EAAnBA,EAAqBlI,2BAAmB,IAAAkI,GAAiB,QAAjBA,EAAxCA,EAA0CjI,uBAAe,IAAAiI,OAAA,EAAzDA,EAA2DzO,gBAQ9FK,EAAmBvM,GAA+BqF,MAAAA,IAA8C,IAAAuV,EAIlG,OAHuB,QAAvBA,EAAI5a,EAAMya,qBAAa,IAAAG,GAAqB,QAArBA,EAAnBA,EAAqBnI,2BAAmB,IAAAmI,GAAxCA,EAA0ClI,iBAC1C1S,EAAM+L,SAASC,WAAWhM,EAAMya,cAAchI,oBAAoBC,gBAAiBnN,GAEhFiH,QAAQC,WAQboO,EAA+B7a,GAA+B,KAChEA,EAAM+L,SAASI,0BASbE,EAA4BA,CAACrM,EAA4BsM,IAAwB,KAAK,IAAAwO,EACjE,QAAvBA,EAAI9a,EAAMya,qBAAa,IAAAK,GAAqB,QAArBA,EAAnBA,EAAqBrI,2BAAmB,IAAAqI,GAAxCA,EAA0CpI,iBAC1C1S,EAAM+L,SAASC,WAAWhM,EAAMya,cAAchI,oBAAoBC,gBAAiBpG,IASrFyO,EAA4B/a,GAA+BqF,gBACvDrF,EAAM+L,SAASiP,0BAWnBlK,EAAoBA,CACtB9Q,EACAwP,EACAT,EACAE,EACAnM,SAEiC8E,IAA7B5H,EAAM+Q,mBAEFhS,IAAAA,cAAC4F,EAAgB,CACbqM,yBAA0BjC,EAC1B/I,eAAgBwJ,EAChB9J,SAAU6G,EAAgBvM,GAC1B8C,UAAWA,IAKnB/D,IAAAA,cAAA,UACIK,UAAU,8CAA6C,aAC3C6P,EACZ5P,QAASgN,EAA0BrM,EAAOA,EAAM+Q,qBAE/ChC,GAsIAkM,EA5HiBjb,IAAuD,IAAAkb,EAAAC,EACjF,MAAM,UACF/b,EAAS,sBACTgc,EAAqB,kBACrBhO,EAAiB,UACjBC,EAAS,cACToN,EAAa,UACb3X,EAAS,iBACTwK,EAAgB,yBAChB2I,EAAwB,wBACxBC,EAAuB,mBACvBC,EAAkB,iBAClB1X,EAAgB,sBAChBmO,EAAqB,wBACrBY,EAAuB,sBACvBsI,EAAqB,oBACrB7E,GACAjR,EAEEqb,EAAkBjc,GAAwB,uCAC1CqO,EAAgCgN,MAAAA,GAAkC,QAArBS,EAAbT,EAAehI,2BAAmB,IAAAyI,GAAiB,QAAjBA,EAAlCA,EAAoCxI,uBAAe,IAAAwI,OAAA,EAAnDA,EAAqDxN,YACrFpJ,EAAWmW,MAAAA,GAAkC,QAArBU,EAAbV,EAAehI,2BAAmB,IAAA0I,OAAA,EAAlCA,EAAoCzI,gBAC/C4I,EJtDyBC,EAC/BC,EACA1F,EACAK,KAEA,QAAiBvO,IAAb4T,IAA0BrF,EAEvB,OAAIqF,EAAW,EACX,OAAO1F,KAEX,IAAI7N,KAAKC,MAAMsT,MAAa1F,MI4CUyF,CAAoBjX,MAAAA,OAAQ,EAARA,EAAUmX,SAAU3F,EAAuBK,GAEtG1H,EAAgBpB,EAAYvK,EAAU4L,QAAU5L,EAAU6L,WAC1DC,EAAatB,QAAsC1F,EAEnDiH,EAAgCuM,OAAwBxT,EAAYgH,GAA0BH,EAC9FK,GAAqBsM,GAAyB/N,EAC9C0B,EAAkCjM,EAAUkM,eAC5CC,EAAiCnM,EAAUoM,8BAA8BC,QAAQ,cAAe1B,MAAAA,EAAAA,EAAa,IAC7G+I,EAAmBP,KAA6B3R,MAAAA,OAAQ,EAARA,EAAU4H,eAC1DvN,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB2Q,EAAAA,kBAAkBC,eACnFxQ,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAC7DA,EAAQuB,cAAcC,MAAQiP,EAAAA,kBAAkBE,eAChD,MAAMoM,GAA2B5c,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAC3EA,EAAQuB,cAAcC,MAAQiP,EAAAA,kBAAkBG,qBAChD,MAAMoM,GAAiC7c,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAC3E6Q,EAAqB9C,EAAqBc,EAAyBZ,GAgFzE,MA9E2C,CACvC6N,cAAAA,EACArN,kBAAAA,EACA0B,kBAAAA,EACA0H,iBAAAA,EACA1T,UAAAA,EACA2S,gBAAiBjG,EACjBoM,iBAAkB,CACdC,IAAK,MACLzc,UAAW,GAAGic,WAElBS,YAAa,CACTD,IAAK,MACLzc,UAAW,GAAGic,aAElB5N,UAAW1O,IAAAA,cAAA,QAAMK,UAAW,GAAGic,wBAAuC5N,GACtEsO,wBAAyBhd,IAAAA,cAACid,EAAAA,OAAM,CAAC5c,UAAW,GAAGic,yBAAwChc,QAAS0b,EAAyB/a,KACzHic,cAAeX,EACXvc,IAAAA,cAAA,QAAMK,UAAW,GAAGic,4BAAwC,IACDC,GAG3D,GAEJY,kCAAmC,CAC/BL,IAAK,MACLzc,UAAW,GAAGic,gBAElBc,qBAAsBf,GAClBrc,IAAAA,cAAA,KAAGK,UAAW,GAAGic,qCAAoDvY,EAAUoQ,wBAEnFkJ,YAAavN,GAAa9P,IAAAA,cAAA,KAAGK,UAAW,GAAGic,6BAA4CxM,GACvFgC,gBAAiB9R,IAAAA,cAAA,KAAGK,UAAW,GAAGic,iCAAgDvY,EAAU+N,iBAC5FwL,2BACItd,IAAAA,cAAA,SAAAE,OAAAC,OAAA,CACIE,UAAU,8CAA6C,aAC3C6P,EACZ5P,QAAS+M,EAA4BpM,IACjCnB,GAEHkQ,GAGTuN,YAAaxL,EAAkB9Q,EAAOwP,EAAoBT,EAAyBE,EAAwBgC,GAC3GsL,qBAAsBrG,EAClBnX,IAAAA,cAAA,SAAAE,OAAAC,OAAA,CACIuB,KAAK,WACLrB,UAAU,sDAAqD,YACrD,SAAQ,eACL,OAAM,aACP0D,EAAU+Q,wBACtBxU,QAASwb,EAA4B7a,IACjC2b,GAEH7Y,EAAU8Q,oBAEf,KACJ4I,2BAA4BtG,EACxBnX,IAAAA,cAAA,SAAAE,OAAAC,OAAA,CACIuB,KAAK,WACLrB,UAAU,6DAA4D,YAC5D,SAAQ,eACL,QAAO,aACR0D,EAAU6Q,kCAClB+H,EAAwB,CAC5Brc,QAASqb,EAAgC1a,KAExC8C,EAAU4Q,yBAEf,KACJ3H,SAAU,CACNC,WAAYhM,EAAM+L,SAASC,WAC3BC,sBAAuBjM,EAAM+L,SAASE,sBACtCE,uBAAwBnM,EAAM+L,SAASI,uBACvC6O,uBAAwBhb,EAAM+L,SAASiP,0BClT5C,IAAWyB,EAAAA,EAKAC,EAAAA,EAKAnW,EAAAA,GAVAkW,EAAAA,IAAAA,EAAI,KAClB,wBACAA,EAAA,+BAGcC,EAAAA,IAAAA,EAAgB,KAC9B,cACAA,EAAA,yBAGcnW,EAAAA,IAAAA,EAAK,KACnB,gBACAA,EAAA,qmBCyLJ,IAAMoW,GAAN,cAA4B5d,EAAAA,UASxBQ,YAAmBS,GACfoB,MAAMpB,GA0ZH,KAAA4c,oBAAsB,CACzBC,EACA/G,EACAgH,EACA5G,EACA6G,EACAvP,EACAkL,KACqC,IAAApa,EAAA4c,EACrC,MAAM,UACFpY,EACAka,MACIC,yBAA2BC,OAAQD,GACnCE,2BAA6BD,OAAQC,GACrCC,gBAAkBF,OAAQE,KAE9Brd,KAAKC,MAEHsB,EAAU6b,EAA4BA,EAA0B7b,aAAUsG,EAC1EmN,EAA0BoI,MAAAA,OAAyB,EAAzBA,EAA2BpI,wBACrD0F,EAA+E,QAAlEnc,EAAIue,EAAsBO,EAAiBH,SAAuB,IAAA3e,OAAA,EAA/DA,EAAkEqJ,MACnF2N,IAAU,IAAAE,EAAA,OAA8B,QAAzBA,EAAAF,EAAM7C,2BAAmB,IAAA+C,GAAiB,QAAjBA,EAAzBA,EAA2B9C,uBAAe,IAAA8C,OAAA,EAA1CA,EAA4CtJ,iBAAkB6I,KAE5E1D,EAAkBoJ,MAAAA,GAAkC,QAArBS,EAAbT,EAAehI,2BAAmB,IAAAyI,OAAA,EAAlCA,EAAoCxI,gBACtD2K,EAAyBtd,KAAK+S,cAAchQ,GAElD,IAAK4V,GAAqB+B,EAAe,KAAAU,EAAAmC,EACrC,MAAMC,EAAqC,CACvCnC,sBAAuByB,EACvBzP,kBAAmBrN,KAAK+R,mBAAmBT,EAAiB/P,MAAAA,OAAO,EAAPA,EAASyQ,yBACrE1E,UAAWtN,KAAKiS,kBAAkB+K,EAA4D,QAAnC5B,EAAEV,EAAchI,2BAAmB,IAAA0I,OAAA,EAAjCA,EAAmCpF,oBAChG0E,cAAAA,EACA3X,UAAWua,EACXpM,oBAAqBlR,KAAKC,MAAM8C,UAChCwK,iBAAkBvN,KAAKqS,qBAAqBqI,GAC5CxE,yBAA0B6G,MAAAA,GAAAA,EAAgBU,QAAUV,EAAeU,QAAU,GAC7EtH,wBAAAA,EACAC,mBAAoBpW,KAAKsC,MAAM8T,mBAC/B1X,iBAAkBsB,KAAKtB,iBACvBmO,sBAA+D,QAA1C0Q,EAAE7C,EAAc/E,kCAA0B,IAAA4H,OAAA,EAAxCA,EAA0ClH,gBACjE5I,wBAAAA,EACAsI,sBAAAA,EACA/J,SAAU,CACNC,WAAYjM,KAAK0d,2BACjBxR,sBAAuBlM,KAAK2d,mBAC5BvR,uBAAwBpM,KAAK4d,sBAC7B3C,uBAAwBjb,KAAK6d,yBAIrC,OAAO3C,EAAuBsC,KAU/B,KAAA5b,qBAAwBE,IACvB9B,KAAKC,MAAM+B,OAAO8b,qBAClB9d,KAAKC,MAAM+B,OAAO8b,mBAAmB5d,SAAW4B,EAAMI,OAAOC,QAQ9D,KAAA4b,oBAAuBjc,IAC1B9B,KAAKC,MAAM+B,OAAOgc,QAAUlc,EAAMI,OAAOC,OAM5B,KAAA8b,uBAAyB,KACjCje,KAAKke,4BAA2B,GACrCle,KAAK8C,SAAS,CAAEkO,wBAAoBnJ,KASvB,KAAAsW,kBAAoB,CAAC3H,EAAoCxF,IAC/DwF,EAAOvI,QAAO1J,IAAW,IAAA6Z,EAC5B,OAA0C,QAA1CA,EAAO7Z,EAASoR,kCAA0B,IAAAyI,GAAiB,QAAjBA,EAAnCA,EAAqC/H,uBAAe,IAAA+H,OAAA,EAApDA,EAAsDC,MAAKvR,GACvDA,EAAe1G,OAAS4K,OAS1B,KAAAsN,qBAAwB9Y,IACrCxF,KAAK8C,SAAS,CAAEkO,mBAAoBxL,KA0EvB,KAAA+Y,sBAAwBjZ,UACrC,MACItD,QAAQ,mBAAEwc,GACVjd,SAAS,UACLI,EACA8c,eACItd,gBAAgB,QAAEud,KAG1BzB,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAELmd,MAAAA,GAAAA,EAA2BuB,iBAAmB3e,KAAK4e,oBACnDC,UAAUC,KAAKC,WAAW,6BAA8B,CAIpDC,SAAUA,KACN,MAAMC,EAAO3b,GAAAA,GAAA,GAAQkb,GAAkB,IAAEU,YAAaR,MAAAA,OAAO,EAAPA,EAASS,8BAC/Dnf,KAAK4e,mBAAqB,IAAIC,UAAUC,KAAKM,mBAAmBH,GAChEjf,KAAK4e,mBAAmBS,kBACpB,gCAAgCrf,KAAKC,MAAMoZ,KAC3C,0CAA0CrZ,KAAKC,MAAMoZ,KACrDrZ,KAAKsf,wBAObC,cAAeA,KACP5d,GACAA,EAAU6d,MAAM,uCAGxBC,YAAaf,MAAAA,OAAO,EAAPA,EAASgB,kBASjB,KAAAJ,sBAAwBha,MAAAA,IAAkE,IAAAqa,EACvG,MAAMpe,EAA0D,QAAnDoe,EAAG3f,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAwC,OAAA,EAAhDA,EAAkDpe,QAC9DA,GAAWA,EAAQ8X,KAAOrZ,KAAKC,MAAMoZ,WAC/BrZ,KAAK4f,mBAAmBzC,EAAO0C,2BAC/B7f,KAAK8f,eAAe3C,EAAO0C,uBAQxB,KAAAlC,mBAAqBrY,MAAAA,IAAqD,IAAAya,EAAAC,EAAAC,EACvF,IAAKC,EACD,OAGJ,MACI3e,SACIkd,eACItd,gBAAgB,QAAEyB,KAG1BZ,QAAQ,KAAE0a,GACVO,MACIG,2BAA6BD,OAAQC,GACrCC,gBAAkBF,OAAQE,GAC1BH,yBAA2BC,OAAQD,KAEvCld,KAAKC,MAET,IAAKmd,EACD,OAIJ,IAAI5G,EAEAA,QAJyB3O,IAAT6U,EAAqBA,EAAOyD,EAASC,iBAGrCD,EAASE,YAAchD,EAC9BA,EAEAH,EAGb,MAAMH,EAAiBvG,EAAO5O,MAAK2N,IAAK,IAAAK,EAAA,OAA6B,QAAzBA,EAAAL,EAAM7C,2BAAmB,IAAAkD,GAAiB,QAAjBA,EAAzBA,EAA2BjD,uBAAe,IAAAiD,OAAA,EAA1CA,EAA4CzJ,iBAAkB+T,WAEpG9C,EAA0BkD,0BAC5BJ,EACAnD,MAAAA,GAAmC,QAArBgD,EAAdhD,EAAgBrK,2BAAmB,IAAAqN,GAAiB,QAAjBA,EAAnCA,EAAqCpN,uBAAe,IAAAoN,OAAA,EAApDA,EAAsDpS,YACtD/K,EAAQC,iBACRka,MAAAA,GAAmC,QAArBiD,EAAdjD,EAAgBrK,2BAAmB,IAAAsN,GAAiB,QAAjBA,EAAnCA,EAAqCrN,uBAAe,IAAAqN,OAAA,EAApDA,EAAsDO,SACtDxD,MAAAA,GAAmC,QAArBkD,EAAdlD,EAAgBrK,2BAAmB,IAAAuN,GAAiB,QAAjBA,EAAnCA,EAAqCtN,uBAAe,IAAAsN,OAAA,EAApDA,EAAsDO,YAO7C,KAAA5C,sBAAwBtY,UACrC,MACI/D,SACIkd,eACItd,gBAAgB,QAAEyB,KAG1Bqa,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAEJmd,SAICA,EAA0BqD,oBAAoB7d,EAAQC,mBAO/C,KAAAgb,uBAAyBvY,UACtC,MAAM8X,EAA4Bpd,KAAKC,MAAMgd,KAAKG,0BAA0BD,aACtEC,MAAAA,OAAyB,EAAzBA,EAA2BsD,gCAA2B7Y,KAO/C,KAAA8Y,kBAAoBrb,MAAAA,IACjC,MACI2X,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAEJmd,SAICA,EAA0BsD,2BAA2BR,IAO9C,KAAAJ,eAAiBxa,MAAAA,IAC9B,MACI/D,SAAS,cAAEkd,GACXxB,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAET,IAAK2gB,IAAexD,EAChB,OAIJpd,KAAK8C,SAAS,CAAE+d,oBAAoB,EAAMC,oBAAoB,IAE9D,MAAMvc,QAAiB6Y,EAA0B2D,UAAgC,KAAtBH,EAAWI,OAAgBJ,EAAa,IAAKnC,GAEpGla,QACMvE,KAAKihB,iBAAiB1c,EAAS2c,SAAU3c,EAAS4c,iBAElDnhB,KAAKihB,mBAIfjhB,KAAK8C,SAAS,CAAE+d,oBAAoB,KAOvB,KAAAjB,mBAAqBta,MAAAA,IAClCtF,KAAK8C,SAAS,CAAE8d,WAAAA,KAOH,KAAA1C,2BAA6B5Y,MAAAA,IAAuD,IAAA8b,EACjG,MACIpf,QAAQ,MAAEwE,GACVyW,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,aAEsB4H,IAAVrB,EAAsBA,EAAQ6a,EAAUC,UAExCD,EAAUE,QAAYnE,GAA8BA,EAA0BoE,gBAMnGxhB,KAAK8C,SAAS,CAAE+d,oBAAoB,EAAMC,oBAAoB,IAEjD,QAAbM,EAAIK,iBAAS,IAAAL,GAATA,EAAWM,aAmBX1hB,KAAK8C,SAAS,CAAEsT,oBAAoB,EAAM0K,oBAAoB,UACxD9gB,KAAK4f,mBAAmB,UACxB5f,KAAKihB,iBAAiB,EAAG,EAAG,GAIlCjhB,KAAK8C,SAAS,CAAE+d,oBAAoB,KAMpC7gB,KAAK8C,SAAS,CAAE+d,oBAAoB,MAQ3B,KAAAc,aAAerc,UAC5B,MACI2X,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAIsB,IAAA2hB,EAA/B,GAFA5hB,KAAK8C,SAAS,CAAE8d,WAAY,KAExBxD,EAEA,OADiC,QAAjCwE,EAAAxE,EAA0B7b,eAAO,IAAAqgB,GAAkB,QAAlBA,EAAjCA,EAAmCC,wBAAgB,IAAAD,GAAS,QAATA,EAAnDA,EAAqD3c,eAAO,IAAA2c,GAA5DA,EAA8DE,QACvD1E,EAA0B2E,eASxB,KAAAC,4BAA8B1c,MAAAA,IAC3C,MACI2X,MACIG,2BAA6BD,OAAQC,IAEzCpb,QAAQ,MAAEwE,GAAO,UACjB7E,GACA3B,KAAKC,MAET,IAAKmd,EACD,OAGJ,MAAM7b,EAAU6b,EAA0B7b,QACpC0gB,EAAmB1gB,MAAAA,GAAAA,EAAS8X,GAAK9X,EAAQ8X,GAAKrZ,KAAKC,MAAMoZ,GACzD6I,OAAyBra,IAAVrB,EAAsBA,EAAQ6a,EAAUC,OAC7D,IAAIa,EAAqC,CAKrCrW,mBAAoBxG,SAETmH,QAAQC,WAInB0Q,EAA0B7b,UAC1B4gB,EAAQ/E,EAA0B7b,SAGtC,MAAMwb,EAAyCK,EAA0BL,eACnEqF,EAAsBrF,MAAAA,GAAAA,EAAgBU,QAAUV,EAAeU,QAAU,GACzE4E,EAAoBriB,KAAKmV,YAAYmN,EAAyBtiB,KAAKmW,wBAAyBiM,GAElGD,EAAK7e,GAAAA,GAAA,GACE6e,GAAK,IACR9I,GAAI4I,EACJM,gBAAiBhhB,MAAAA,OAAO,EAAPA,EAASghB,gBAC1BV,iBAAkBtgB,MAAAA,OAAO,EAAPA,EAASsgB,iBAC3BW,SAAUN,IAAiBb,EAAUC,OACrCgB,wBAAyBD,EACzBI,QAASlhB,MAAAA,OAAO,EAAPA,EAASkhB,gBAGhBrF,EAA0BsF,2BAA2BP,GAAOQ,OAAOzf,IACjEvB,IACAA,EAAUuB,MAAMA,EAAM0f,SACtBjhB,EAAU6d,MAAM,8CAYX,KAAAyB,iBAAmB3b,MAAO4b,EAAmBC,EAAoB0B,KAC9E,MACI7gB,QAAQ,KAAE0a,EAAI,aAAEoG,EAAY,MAAEtc,EAAK,iBAAEmW,GACrCM,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAEHiiB,OAAyBra,IAAVrB,EAAsBA,EAAQ6a,EAAUC,OACvDyB,EAAYF,GAAqB,IAAXA,EAAeA,EAASC,GAAgB,GAC9DE,EAAoBrG,IAAqBsG,EAAiBC,WAAa,EAAI,EAC3EC,OAAuBtb,IAAT6U,EAAqBA,EAAOyD,EAASC,cACnDrD,EAAyCK,MAAAA,OAAyB,EAAzBA,EAA2BL,eAC1E,IAAIqG,EAAgBpjB,KAAKsC,MAAMse,YAAe7D,MAAAA,IAAAA,EAAgBwD,SAAWW,EAAWnE,EAAewD,SAC/F8C,EAAOrjB,KAAKsC,MAAMse,YAAe7D,MAAAA,IAAAA,EAAgByD,UAAYW,EAAYpE,EAAeyD,UAC5F,GAAI0B,IAAiBb,EAAUE,OAAQ,CACnC,MAAM+B,EAA0BlG,MAAAA,OAAyB,EAAzBA,EAA2BmG,yBACvDD,IAA4BtjB,KAAKsC,MAAMse,aACvCwC,EAAgBE,EAAwB/C,SAAW+C,EAAwB/C,SAAW6C,EACtFC,EAAOC,EAAwB9C,UAAY8C,EAAwB9C,UAAY6C,SAE7EjG,MAAAA,OAAyB,EAAzBA,EAA2BoG,uBAAuBJ,EAAeC,IAGvEF,IAAgBhD,EAASE,iBAKvBrgB,KAAKyjB,gCAAgCV,EAAWC,EAAmBI,EAAeC,SAJ9ErjB,KAAK0jB,yBAAyBX,EAAWC,EAAmBI,EAAeC,IAexE,KAAAK,yBAA2Bpe,MACxCyd,EACAC,EACA9B,EACAC,KAEA,MACI5f,SAAS,cAAEkd,IACXze,KAAKC,MACH0jB,EAAwB,IAAIC,EAAAA,+BAC9B1C,EACAC,EACA4B,EACAC,EACAhjB,KAAKsC,MAAM8T,oBAGTyN,QAAyBC,EAAAA,EAAAA,2BAA0BH,EAAuBlF,GAC5EoF,UACM7jB,KAAKgiB,4BAA4B6B,SACjC7jB,KAAK2gB,uBAAkB9Y,KAYpB,KAAA4b,gCAAkCne,MAC/Cyd,EACAC,EACA9B,EACAC,KAEA,MAAM,UACFxf,EACAJ,SAAS,cAAEkd,GACXxB,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAET,IAAKmd,IAA8BA,EAA0B7b,QAEzD,OAGJ,IAAK6b,EAA0B7b,QAAQkhB,QAEnC,OAGJ,MAAMN,EAAQ,IAAI4B,EAAAA,qCACd3G,EAA0B7b,QAAQkhB,QAAQuB,SAC1C9C,MAAAA,EAAAA,EAAY,EACZC,MAAAA,EAAAA,EAAa,EACb4B,EACAC,EACAhjB,KAAKsC,MAAM8T,0BAGTqN,EAAAA,EAAAA,iCAAgCtB,EAAO1D,GAAekE,OAAMzf,IAC9DvB,EAAUsiB,QAAQ/gB,GAClBvB,EAAUuB,MAAMA,EAAM0f,SACtBjhB,EAAU6d,MAAM,sDAUP,KAAA9B,2BAA6BpY,MAAOf,EAAuCwH,KACxF,MAAM,UACFpK,EACAsb,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MAELmd,IACI7Y,GAAY6Y,EAA0B7b,eAEhC6b,EAA0B7b,QAAQuK,mBAAmBvH,EAAUwH,GAAc4W,OAAOzf,IACtFvB,EAAUsiB,QAAQ/gB,GAClBvB,EAAUuB,MAAMA,EAAM0f,SACtBjhB,EAAU6d,MAAM,wDAIlBpC,EAA0B2E,gBA4EvB,KAAAhP,cAAiBhQ,IACvB,CACHiQ,kBAAmBjQ,EAAUkQ,YAC7BjD,iBAAkBjN,EAAUmQ,SAC5BC,uBAAwBpQ,EAAUqQ,iBAElCpI,WAAYjI,EAAUsQ,qBACtBzE,WAAY7L,EAAUuQ,eACtB3E,QAAS5L,EAAUwQ,YAEnBzC,gBAAiB/N,EAAUyQ,0BAC3BvE,eAAgBlM,EAAU8D,iBAC1BsI,8BAA+BpM,EAAU2Q,0BACzCC,wBAAyB5Q,EAAU4Q,wBACnCC,iCAAkC7Q,EAAU6Q,iCAC5CC,mBAAoB9Q,EAAU8Q,mBAC9BC,wBAAyB/Q,EAAU+Q,wBACnCnE,kBAAmB5M,EAAU4M,kBAC7BrH,OAAQvF,EAAUuF,OAClBD,OAAQtF,EAAUsF,OAElBO,KAAM,CACFC,OAAQ9F,EAAUgR,qBAClBjL,QAAS/F,EAAUiR,sBACnBjL,UAAWhG,EAAUkR,wBACrBjL,SAAUjG,EAAUmR,uBACpBjL,OAAQlG,EAAUoR,qBAClBjL,SAAUnG,EAAUqR,uBACpBjL,OAAQpG,EAAUsR,qBAClBhL,WAAYtG,EAAUuR,yBACtBhL,YAAavG,EAAUwR,0BACvBhL,cAAexG,EAAUyR,4BACzBhL,aAAczG,EAAU0R,2BACxBhL,WAAY1G,EAAU2R,yBACtBhL,aAAc3G,EAAU4R,2BACxBhL,WAAY5G,EAAU6R,4BAKjB,KAAA7C,mBAAqB,CAACxN,EAAuC2f,IACzEA,GAAoB3f,GAAY2f,EAAiB/X,gBAAkB5H,EAAS4H,gBAAkB,EAQlF,KAAA8F,kBAAoB,CACjCkS,EACAjS,KAEA,IAAKiS,EACD,OAAO,EAGX,QAAIjgB,EAAAA,gBAAgBC,YAAY+N,OACrBA,EAAmB,GAAGE,mBAAoBF,EAAmB,GAAGE,kBAFrD,IAaT,KAAAC,qBAAwB/E,IACrC,GAAIA,MAAAA,GAAAA,EAAWiF,6BAA+BrO,EAAAA,gBAAgBC,YAAYmJ,EAAUiF,6BAChF,IAAK,IAAIxS,EAAQ,EAAGA,EAAQuN,EAAUiF,4BAA4B5S,OAAQI,IAAS,KAAAqkB,EAC/E,IACiC,QAA7BA,EAAA9W,EAAUoF,2BAAmB,IAAA0R,GAAiB,QAAjBA,EAA7BA,EAA+BzR,uBAAe,IAAAyR,OAAA,EAA9CA,EAAgDxR,uBAChDtF,EAAUiF,4BAA4BxS,GAAO8S,iBAE7C,OAAOvF,EAAUiF,4BAA4BxS,GAAO+S,kBAhrChE9S,KAAKsC,MAAQ,CACTue,oBAAoB,EACpBD,WAAY,GACZE,oBAAoB,EACpB9P,wBAAoBnJ,EACpBwc,YAAa,MAEjBrkB,KAAKtB,kBAAmB4C,EAAAA,EAAAA,oBACpBtB,KAAKC,MAAMsB,QAAQC,QAAQC,kBAC3BzB,KAAKC,MAAMyB,aACX1B,KAAKC,MAAM0B,WAEf3B,KAAK6U,aAAe,EAGjB,0BAAuB,IAAAyP,EAC1B,MAAMC,QAAkCC,EAAAA,EAAAA,cAAaxkB,KAAKC,MAAMsB,QAAQkd,eACxEze,KAAK8C,SAAS,CAAEuhB,YAAaE,IAC7B,MACIhjB,SACIkd,eACItd,gBAAgB,QAAEud,KAG1B1c,QAAUyiB,sBAAuBC,IACjC1kB,KAAKC,MA4ByD,IAAA0kB,GAzBlEC,YAAW,KACF5kB,KAAKke,+BACX,IAEH9I,EAAAA,EAAAA,KACI,SAAAyP,EAAA,OAAsD,QAAtDA,EAAM7kB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAA0H,OAAA,EAAhDA,EAAkDrD,gBACxDlc,UAAW,IAAAwf,EACP,MAAMvjB,EAA0D,QAAnDujB,EAAG9kB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAA2H,OAAA,EAAhDA,EAAkDvjB,SAC9DA,MAAAA,OAAO,EAAPA,EAAS8X,MAAOrZ,KAAKC,MAAMoZ,IACtBrZ,KAAKke,iCAKtB9I,EAAAA,EAAAA,KACI,SAAA2P,EAAA,OAAsD,QAAtDA,EAAM/kB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAA4H,GAAS,QAATA,EAAhDA,EAAkDxjB,eAAO,IAAAwjB,OAAA,EAAzDA,EAA2D1L,MACjE/T,UAAW,IAAA0f,EACP,MAAMzjB,EAA0D,QAAnDyjB,EAAGhlB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAA6H,OAAA,EAAhDA,EAAkDzjB,QAC7DA,GAAWA,EAAQ8X,KAAOrZ,KAAKC,MAAMoZ,WAChCrZ,KAAK4f,mBAAmB,IACzB5f,KAAKke,iCAK8B,QAApDoG,EAAItkB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAmH,GAAhDA,EAAkDW,mBAC5CjlB,KAAKC,MAAMgd,KAAKG,0BAA0BD,OAAO8H,WAAW,CAC9D5e,IAAKqY,MAAAA,GAAAA,EAASwG,gBAAkBxG,EAAQgB,eAAiB,GACzDyF,KAAMnlB,KAAKC,MAAMsB,QAAQkd,cAActd,eAAeikB,OACtDC,OAA0B,QAApBV,EAAE3kB,KAAKC,MAAMsB,eAAO,IAAAojB,GAAe,QAAfA,EAAlBA,EAAoBlG,qBAAa,IAAAkG,GAAgB,QAAhBA,EAAjCA,EAAmCxjB,sBAAc,IAAAwjB,GAAS,QAATA,EAAjDA,EAAmDjG,eAAO,IAAAiG,OAAA,EAA1DA,EAA4DxF,+BAI5E/J,EAAAA,EAAAA,KACI,SAAAkQ,EAAA,OAAsD,QAAtDA,EAAMtlB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAmI,OAAA,EAAhDA,EAAkDL,cACxD,KAAK,IAAAM,EAAAC,EAC+C,QAAhDD,EAAAvlB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAoI,GAAhDA,EAAkDN,WAAW,CACzD5e,IAAKqY,MAAAA,GAAAA,EAASwG,gBAAkBxG,EAAQgB,eAAiB,GACzDyF,KAAMnlB,KAAKC,MAAMsB,QAAQkd,cAActd,eAAeikB,OACtDC,OAA+D,QAAzDG,EAAExlB,KAAKC,MAAMsB,QAAQkd,cAActd,eAAeud,eAAO,IAAA8G,OAAA,EAAvDA,EAAyDrG,kCAK7E/J,EAAAA,EAAAA,KACI,IAAMpV,KAAKC,MAAMgd,KAAKC,wBAAwBC,SAC9C7X,UAAW,IAAAmgB,EACP,GAAoD,QAApDA,EAAIzlB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAsI,GAAhDA,EAAkDjE,aAAc,CAChE,MAAMa,EAAoBriB,KAAKC,MAAMgd,KAAKC,wBAAwBC,OAC9DkF,SACMriB,KAAKgiB,4BAA4BK,OAMnDqC,IACAgB,EAAAA,EAAAA,KACI,KAAK,IAAAC,EAAAC,EAAAC,EACD,MAAMlH,IAAmE,QAAjDgH,EAAC3lB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAwI,IAAhDA,EAAkDhH,gBACrE6C,IAAiE,QAAjDoE,EAAC5lB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAAyI,IAAhDA,EAAkDpE,cACnEsE,GAAgE,QAAhDD,EAAA7lB,KAAKC,MAAMgd,KAAKG,0BAA0BD,cAAM,IAAA0I,GAAS,QAATA,EAAhDA,EAAkDtkB,eAAO,IAAAskB,OAAA,EAAzDA,EAA2DxM,MAAOrZ,KAAKC,MAAMoZ,GACnG,OAAOsF,GAAkB6C,GAAgBsE,KAE7C,KACIlB,YAAWtf,gBACDtF,KAAKue,0BACZ,MAMZwH,wBACH,MACI9I,MACIG,2BAA6BD,OAAQC,KAEzCpd,KAAKC,MACHsB,EAAU6b,EAA4BA,EAA0B7b,aAAUsG,EAChF,SAAItG,GAAWA,EAAQ8X,KAAOrZ,KAAKC,MAAMoZ,IAOtCvY,SAAM,IAAAklB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACIrkB,QAAQ,UACJ3C,EAAS,QACT2e,EAAO,KACPtB,EAAI,MACJlW,EACA8f,oBAAqBC,EACrBC,cAAeC,EAAmB,aAClC3D,EACA4D,8BAA+BC,EAAgC,iBAC/DhK,GAEJpb,SAAS,UACLI,EACAilB,KAAO5kB,OAAQ6kB,GACfpI,eACItd,gBAAgB,QAAEud,EAAO,QAAE9b,KAGnCkkB,OAASC,KAAMC,GAAS,UACxBjkB,EACAka,MACIC,yBAA2BC,OAAQD,GACnCE,2BAA6BD,OAAQC,GACrCC,gBAAkBF,OAAQE,KAE9Brd,KAAKC,MAETD,KAAK6U,aAAe,EACpB,MAAMoS,EAAsG,QAArFC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,SAAU9lB,QAASvB,KAAKC,MAAMsB,QAAQC,UACvF8lB,IAAkB5I,MAAAA,GAAAA,EAASgB,gBAAkBhB,EAAQwG,iBACrD3jB,EAAU6b,EAA4BA,EAA0B7b,aAAUsG,EAC1E2Z,IAAwBpE,IACxBA,EAA0BoE,eAAgBjgB,MAAAA,OAAO,EAAPA,EAAS8X,MAAOrZ,KAAKC,MAAMoZ,IAErE6I,OAAyBra,IAAVrB,EAAsBA,EAAQ6a,EAAUC,OACvD6B,OAAuBtb,IAAT6U,EAAqBA,EAAOyD,EAASC,cACnDmH,EAAerF,IAAiBb,EAAUE,OAC1CiG,EAAgBrE,IAAgBhD,EAASE,WACzCvD,EAAsB0K,EACtBxS,EAA0BoI,MAAAA,OAAyB,EAAzBA,EAA2BpI,wBACrD+H,EACF/c,KAAKC,MAAMgd,KAAKwK,YAAYtK,QAAUnd,KAAKC,MAAMgd,KAAKwK,YAAYtK,OAAOuK,UACnEtK,MAAAA,OAAyB,EAAzBA,EAA2BL,oBAC3BlV,EACJ8Q,EAAoByE,MAAAA,GAA2C,QAAlB4I,EAAzB5I,EAA2BuK,wBAAgB,IAAA3B,OAAA,EAA3CA,EAA6C1Q,YACvEtV,KAAKmW,wBAA0BoQ,IAA6B3jB,MAAAA,OAAO,EAAPA,EAASC,kBACrE,MAAM+kB,EACFrmB,SAAwCsG,IAA5BtG,EAAQghB,iBAAiChhB,EAAQghB,mBAAoBnF,MAAAA,OAAyB,EAAzBA,EAA2ByK,mBAE1GC,EAAuB,CACzB,qCACU1K,MAAAA,OAAyB,EAAzBA,EAA2B2K,4BAIpCrJ,MAAAA,GAAAA,EAASgB,gBACV/d,EAAUuB,MAAM,8BAGpB,MAAM8kB,EAAgBhK,IAAoBwJ,EAAgBzkB,EAAUklB,uBAAyBllB,EAAUmlB,yBACjGnS,EACF4G,IAAqBsG,EAAiBC,WAAangB,EAAUolB,oBAAsBplB,EAAUuX,eAC3F8H,EAAsBrF,MAAAA,GAAAA,EAAgBU,QAAUV,EAAeU,QAAU,GAC/E,IAAI4E,GAA4DvF,EAAsBO,EAAiBH,EACnGkL,GAAe,KACf/F,KACA+F,GAAepoB,KAAKmV,YAAYkN,GAAmBriB,KAAKmW,wBAAyBiM,IAIrF,MAAMiG,IAA8BxB,MAAAA,OAAS,EAATA,EAAWyB,oBAAoB,EAC7DtW,GAA0BzQ,EAAUA,EAAQyQ,6BAA0BnK,EACtE4F,GAA0B2P,MAAAA,GAAkC,QAAT6I,EAAzB7I,EAA2B7b,eAAO,IAAA0kB,GAAiB,QAAjBA,EAAlCA,EAAoCvQ,uBAAe,IAAAuQ,OAAA,EAAnDA,EAAqD5P,gBAE/EkS,GACFvoB,KAAKsC,MAAM+hB,aACXrkB,KAAKsC,MAAM+hB,YAAYmE,MACvBxoB,KAAKsC,MAAM+hB,YAAYmE,KAAKd,WAE5B1nB,KAAKsC,MAAM+hB,YAAYmE,KAAKC,WAC8B,KAA1DzoB,KAAKsC,MAAM+hB,YAAYmE,KAAKC,UAAU,GAAGC,cACQ,aAAjD1oB,KAAKC,MAAMsB,QAAQC,QAAQC,kBACJ,QADoCykB,EACrD7D,UAAiB,IAAA6D,OAAA,EAAjBA,EAAmBjY,QAAO0a,IAAI,IAAAC,EAAAC,EAC1B,OACyB,QAArBD,EAAAD,EAAEjW,2BAAmB,IAAAkW,GAAiB,QAAjBA,EAArBA,EAAuBjW,uBAAe,IAAAiW,OAAA,EAAtCA,EAAwChW,wBAClB,QADqCiW,EAC3D7oB,KAAKsC,MAAM+hB,mBAAW,IAAAwE,OAAA,EAAtBA,EAAwBL,KAAKC,UAAW,GAAGK,gBAGnDzG,GAINriB,KAAKsC,MAAM0O,oBAAsBqR,KACjCA,GAAoBriB,KAAKme,kBAAkBkE,GAAmBriB,KAAKsC,MAAM0O,qBAE7E,MAAM+X,GAAoB/oB,KAAKgpB,2BAC3BX,GACAb,EACApF,EACApiB,KAAKmW,wBACLnB,EACiB,QADMmR,EACvB9D,UAAiB,IAAA8D,EAAAA,EAAI,KACrBpQ,EACA/D,GACAvE,IAGEwb,GAAa/kB,EAAAA,gBAAgBC,YAAY6iB,GACzCkC,GAAkBD,GAAa,uBAAyB,GACxD5lB,GAASC,GAAAA,GAAA,GACPtD,KAAKC,OAA+C,IACxDqC,MAAOtC,KAAKsC,MACZykB,KAAMkC,GAAajC,EAAQ,QAAKnf,EAEhCshB,YAAa,CACTrN,IAAKyL,EAAgB,MAAoB6B,EAAAA,MACzC3lB,YAAazD,KAAKC,MAClBZ,UAAWgqB,GAAAA,CACP,aAAY9B,EAAe,SAAW,UACtCloB,EACA6pB,GACA3B,EAAe,GAAK,4BAExB1N,WAAW,EACX/V,MAAM,EACNwlB,OAAQ9H,EAER,aAAcwG,EACduB,SAAUvpB,KAAK2hB,aACf6H,mBAAoB,SACpBC,iBAAkB,SAClBC,OAAQ1pB,KAAK2hB,cAEjBgI,aAAc1C,EACd2C,qBAAsB,CAClB9N,IAAKyL,EAAgB,MAAoBsC,EAAAA,YACzCxqB,UAAW,qBAAoBkoB,EAAe,SAAW,gBACzDmC,OAAQ1pB,KAAK2hB,cAEjBmI,YAAa9B,GACThpB,EAAAA,cAACgC,EAAAA,GAAa9B,OAAAC,OAAA,CACVE,UAAU,oBAEN2oB,EAAa,CACjBlM,IAAI,KACJ9X,KAAMgkB,EACN/mB,UAAW,CAAEgD,OAAQjE,KAAK+d,oBAAqB5c,eAAgBnB,KAAKC,MAAMsB,QAAQC,YAG1FuoB,qBAAsB,CAClBjO,IAAKyL,EAAgB,MAAoByC,EAAAA,YACzC3qB,UAAW,oBAAoBkoB,EAAe,SAAW,kBAAmB5O,EAAsC,GAAlB,mBAEpGsR,mBAAoB,CAChBnO,IAAKyL,EAAgB,MAAoB2C,EAAAA,UACzC7qB,UAAW,qBAAoBkoB,EAAe,OAAS,eAE3D4C,iBAAkB,CACdrO,IAAK,MACLzc,UAAW,iCAEf+qB,0BAA2B,CACvBtO,IAAK,MACLzc,UAAW,oCAEfgrB,kBAAmB,CACfvO,IAAK,MACLzc,UAAW,kCAEfirB,kBAAmB,CACfxO,IAAK,MACLzc,UAAW,gDACP2V,GAA2BwM,IAAiB7I,EAAoB,OAAS,SAGjF4R,kBAAmBvqB,KAAKsC,MAAM8T,oBAC1BpX,EAAAA,cAACib,EAAkC,CAC/BlX,UAAWA,EACXkS,UAAWoN,GACXlI,aAAc2I,GAAgB,GAC9B/M,sBAAuBA,EACvBqE,cAAepa,KAAKsC,MAAMwe,qBAGlCoD,iBAAkBlkB,KAAK6c,oBACnBC,EACA/G,EACAgH,EACA/c,KAAKmW,wBACLkS,GACA5a,GACAkL,GAEJ6R,OACIxrB,EAAAA,cAAC8X,EAAuB,CACpB3U,MAAOnC,KAAKsC,MAAMse,YAAc,GAChC7d,UAAWA,EACXmV,cAAelY,KAAK8f,eACpBhI,kBAAmB9X,KAAK4f,mBACxB0H,cAAeA,EACfd,cAAeC,EACfpN,GAAIrZ,KAAKC,MAAMoZ,GACf1B,gBAAiB3X,KAAKie,uBACtBpF,yBAA0BiP,EAAqBC,uBAC/CzS,YAAaqD,EACbH,YAAaoP,EACbtR,6BAA8B8G,MAAAA,GAAkC,QAATgJ,EAAzBhJ,EAA2B7b,eAAO,IAAA6kB,GAAiB,QAAjBA,EAAlCA,EAAoC1Q,uBAAe,IAAA0Q,OAAA,EAAnDA,EAAqD/P,gBACnF3X,iBAAkBsB,KAAKtB,iBACvB0Z,yBAA0BpY,KAAKse,qBAC/B5F,kCAAmCiO,EACnC3V,mBAAoBhR,KAAKsC,MAAM0O,qBAGvCyZ,QAASzrB,EAAAA,cAACgb,EAAoB,MAC9B0Q,mBA5HsB,EA6HtBC,cAAezmB,EAAAA,gBAAgBC,YAAYke,IACvCrjB,EAAAA,cAACoS,EAA0B,CACvB6D,UAAWsT,GACXxlB,UAAWA,EACXmO,oBAAqBlR,KAAKC,MAAM8C,UAChCgT,sBAAuBA,EACvB/D,wBAAyBzQ,EAAUA,EAAQyQ,6BAA0BnK,EAErE+iB,oBAAqB/D,EAAU+D,qBAAuB,EAEtDzY,sBAAuB0U,EAAUyB,mBAAoB,EACrDxc,mBAAoB9L,KAAK0d,2BACzBlQ,iBAAkBga,EAClBxS,wBAAyBA,EACzB1V,QAASU,KAAK2gB,kBACdzK,yBAA0B6G,MAAAA,GAAAA,EAAgBU,QAAUV,EAAeU,QAAU,GAC7EvR,sBAAuBlM,KAAK2d,mBAC5BvR,uBAAwBpM,KAAK4d,sBAC7BzH,wBAAyBnW,KAAKmW,wBAC9Bb,YAAaqD,EACbja,iBAAkBsB,KAAKtB,iBACvB0X,mBAAoBpW,KAAKsC,MAAM8T,mBAC/BE,6BAA8B8G,MAAAA,GAAkC,QAATiJ,EAAzBjJ,EAA2B7b,eAAO,IAAA8kB,GAAiB,QAAjBA,EAAlCA,EAAoC3Q,uBAAe,IAAA2Q,OAAA,EAAnDA,EAAqDhQ,gBACnFrF,mBAAoBhR,KAAKsC,MAAM0O,mBAC/BuF,gBAAiB0S,UAGrBphB,EAEJgjB,mBAAoB7rB,EAAAA,cAAC8a,EAAyB,CAAC/W,UAAWA,IAU1D+nB,WACI9rB,EAAAA,cAAA,YAAOgf,IAAoBwJ,EAAgBzkB,EAAUklB,uBAAyBllB,EAAUmlB,0BAE5F6C,cAAe3C,GACfW,kBAAAA,GACAiC,UAAW,CACPlT,kBAAmB9X,KAAK4f,mBACxB1H,cAAelY,KAAK8f,eACpBiC,YAAa/hB,KAAK2hB,aAClBuC,iBAAkBlkB,KAAK0d,2BACvBuN,yBAA0B3lB,UACjBtF,KAAKke,6BACHzR,QAAQC,WAEnBwe,qBAAsBlrB,KAAKue,sBAC3B4M,qBAAsBnrB,KAAK0d,2BAC3B0N,kBAAmBprB,KAAK2d,mBACxB0N,qBAAsBrrB,KAAK4d,sBAC3B0N,iBAAkBtrB,KAAK2gB,kBACvB+B,2BAA4B1iB,KAAKgiB,+BAIzC,OAAOhiB,KAAKC,MAAMoE,WAAWhB,IA8HzB8R,YACJqB,EACAL,EACAD,GAEA,MAAMO,EAAoBtU,IAA+B,IAAAuU,EAAA,OACrDP,GACAD,IACyB,QAAzBQ,EAAAvU,EAAMuQ,2BAAmB,IAAAgE,GAAiB,QAAjBA,EAAzBA,EAA2B/D,uBAAe,IAAA+D,OAAA,EAA1CA,EAA4CvK,iBAAkB+J,GAElE,MAAO,IAAIM,EAAOvI,OAAOwI,MAAsBD,EAAOvI,QAAOsH,IAAUkB,EAAiBlB,MAgBpFyT,2BACJhM,EACAuO,EACArV,EACAC,EACAnB,EACAwB,EACAT,EACA/D,EACAvE,GAEA,MAAM+d,EAAmD,GAoBzD,OAnBItnB,EAAAA,gBAAgBC,YAAYqS,IAC5BA,EAAOtQ,KAAI,CAACqP,EAAOxV,KACf,MAAM0rB,EAAiBzrB,KAAK0rB,yBACxBnW,EACAxV,EACAid,EACAuO,EACArV,EACAC,EACAnB,EACAe,EACA/D,EACAvE,GAEAge,GACAD,EAAU3qB,KAAK4qB,MAIpBD,EAyeHE,yBACJnW,EACAxV,EACAid,EACAuO,EACArV,EACAC,EACAnB,EACAe,EACA/D,EACAvE,GAA0C,IAAAke,EAE1C,MAAMra,EAA2C,QAA5Bqa,EAAGpW,EAAM7C,2BAAmB,IAAAiZ,OAAA,EAAzBA,EAA2BhZ,gBAC7CiZ,EAAwB5W,EACxBU,EAAkBH,EAAMI,2BACxBkW,EAAgB7rB,KAAK+S,cAAc/S,KAAKC,MAAM8C,WAC9C2N,EAAoC3I,EAAcuJ,MAAAA,OAAe,EAAfA,EAAiBX,SAAUkb,GAC7Ejb,EAAkC7I,EAAcuJ,MAAAA,OAAe,EAAfA,EAAiBT,OAAQgb,GACzEjhB,EAAa2K,EAAMO,WAEJ,IAAAgW,EAArB,GAAIxa,EAEA,QADEtR,KAAK6U,aACA,CACHtQ,SAAU+M,EACV0D,wBAAyB4W,EACzBhhB,WAAAA,EACA7H,UAAW8oB,EACX9V,sBAAuBA,EACvB1I,kBAAmBrN,KAAK+R,mBAAmBT,EAAiBU,GAC5D1E,UAAWtN,KAAKiS,kBAAkB+K,EAAoD,QAA3B8O,EAAEvW,EAAM7C,2BAAmB,IAAAoZ,OAAA,EAAzBA,EAA2B9V,oBACxFzI,iBAAkBvN,KAAKqS,qBAAqBkD,GAC5C/H,iBAAkB+d,EAClBxrB,MAAOC,KAAK6U,aAAaoB,WACzBC,yBAAAA,EACAC,wBAAAA,EACAzX,iBAAkBsB,KAAKtB,iBACvB0X,mBAAoBpW,KAAKsC,MAAM8T,mBAC/BvJ,sBAAuB6I,MAAAA,OAAe,EAAfA,EAAiBW,gBACxC5I,wBAAAA,EACAse,aAAc,CAAEC,SAAUtb,EAAeub,OAAQrb,GACjD1F,eAAgBN,MAAAA,GAAAA,EAAYsF,kBAAoBjF,EAAgBL,EAAWsF,kBAAmB2b,GAAiB,GAC/GvsB,QAASU,KAAK2gB,kBACd3U,SAAU,CACNC,WAAYjM,KAAK0d,2BACjBxR,sBAAuBlM,KAAK2d,mBAC5BvR,uBAAwBpM,KAAK4d,sBAC7B3C,uBAAwBjb,KAAK6d,2BApmC3CjB,IAAajG,EAAAA,EAAAA,IAAA,CADlBE,EAAAA,IACK+F,IAqsCN,6FCj4CA,MAgBMC,EAAyD5c,IAC3D,MAAM,iBACF4b,EAAgB,YAChBE,EAAW,UACXrO,EAAS,wBACTsO,EAAuB,kCACvBG,EAAiC,oBACjCC,EAAmB,YACnBC,EAAW,kBACXhP,EAAiB,gBACjByD,EAAe,iBACf2F,EAAgB,qBAChB+F,EAAoB,2BACpBC,GACAxc,EAEJ,OACIjB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK0c,GACN7c,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK4c,GACLC,EACAtO,GAEL1O,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKgd,GACLC,EACAC,GAEJhP,EAAoByD,EA1CgC7Q,CAAAA,IAC7D,MAAM,kBAAE8O,EAAiB,gBAAE2G,EAAe,2BAAE4G,EAA0B,YAAEC,GAAgBtc,EAExF,OACIjB,EAAAA,cAAAA,EAAAA,SAAA,OAEK+P,IAAqB7K,EAAAA,gBAAgBC,YAAYuR,GAAmB6G,EAAcD,KAoC5C4P,CAAsBjsB,GAC5DwW,EAAmB+F,EAAuBC,IAwFvD,EAf6Dxc,IACzD,MAAM,qBAAE8pB,EAAoB,qBAAEH,EAAoB,YAAET,EAAW,MAAEgD,GAAUlsB,EAG3E,OACIjB,EAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAKgqB,GACRnqB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKyqB,EAAoB,CAAEpjB,MAAO,CAAE+J,QAAS,UAC7CtQ,EAAM8C,UAAUqpB,aAtEqBnsB,CAAAA,IAElD,MAAM,mBACFgqB,EAAkB,MAGlB3nB,EAAK,QACLmoB,EAAO,cACPE,EAAa,mBACbE,EAAkB,iBAElBV,EAAgB,0BAChBC,EAAyB,aACzBT,EAAY,kBACZW,EAAiB,iBACjBpG,GACAjkB,EAYJ,OAAI0pB,EAEI3qB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK8qB,GAGNjrB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKgrB,GACNnrB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKirB,GACL9nB,EAAMue,mBAAqB4J,EAAUzrB,EAAAA,cAAAA,EAAAA,SAAA,KAAG2rB,GAAgCE,GAEzE7rB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKmrB,GAAqBpG,GAAoBrH,EAAoBqH,OAQvFllB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK8qB,EAAkB,CAAEzjB,MAAO,CAAE+J,QAAS,UAC5CvR,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKgrB,GACNnrB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKirB,GAGL9nB,EAAMue,mBAAqB4J,EAAUzrB,EAAAA,cAAAA,EAAAA,SAAA,KAAG2rB,GAAgCE,OAsBhFwB,CAAWpsB,GACZjB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK4qB,GAAuBoC,8DChI7C,MAAMG,UAAkBttB,EAAAA,cACb8B,SACH,OAAOd,KAAKC,MAAMoE,WAAWrE,KAAKC,QAI1C,yFCfO,MAAMssB,EAA6ChuB,IAAc,IAAb,MAAEiuB,GAAOjuB,EAEhE,MAAMkuB,EAAcD,EAAQA,EAAME,MAAQ,GAE1C,OACI1tB,EAAAA,cAAA,OAAKK,UAAU,mBACXL,EAAAA,cAAA,OACIwH,MAAO,CACHC,MAAO,WACPkmB,OAAQ,QAEZC,IAAKH,GAAeA,EAAYG,IAAMH,EAAYG,IAAMH,EACxDI,IAAKJ,GAAeA,EAAYK,QAAUL,EAAYK,QAAU,gCCThF,MAiCA,EAjC6CvuB,IAAc,IAAb,MAAEiuB,GAAOjuB,EACnD,MAAMwuB,EAAYP,EAAQA,EAAMQ,YAAc,GACxCC,EAAOT,EAAQA,EAAMU,SAAW,GAChCC,EAAeX,EAAQA,EAAMW,aAAe,GAC5CC,EAAWZ,EAAQA,EAAMa,aAAe,GAE9C,OACIruB,EAAAA,cAAA,OAAKK,UAAU,aACXL,EAAAA,cAAA,KACIK,UAAU,WACVmH,MAAO,CAAE8mB,YAAa,OACtBC,KAAMR,GAAaA,EAAUxsB,QAAUwsB,EAAUxsB,QAAQC,eAAiB,IAE1ExB,EAAAA,cAACwuB,EAAAA,EAAK,KAAET,GAAaA,EAAU7sB,SAAW6sB,EAAU7sB,SAAW,eAEnElB,EAAAA,cAAA,KAAGK,UAAU,WAAWkuB,KAAMJ,GAAgBA,EAAa5sB,QAAU4sB,EAAa5sB,QAAQC,eAAiB,IACvGxB,EAAAA,cAACwuB,EAAAA,EAAK,KAAEL,GAAgBA,EAAajtB,SAAWitB,EAAajtB,SAAW,kBAE5ElB,EAAAA,cAAA,KAAGK,UAAU,WAAWkuB,KAAMN,GAAQA,EAAK1sB,QAAU0sB,EAAK1sB,QAAQC,eAAiB,GAAI0B,OAAO,SAASurB,IAAI,cACvGzuB,EAAAA,cAACwuB,EAAAA,EAAK,KAAEP,GAAQA,EAAK/sB,SAAW+sB,EAAK/sB,SAAW,SAEpDlB,EAAAA,cAAA,KACIK,UAAU,WACVkuB,KAAMH,GAAYA,EAAS7sB,QAAU6sB,EAAS7sB,QAAQC,eAAiB,GACvE0B,OAAO,SACPurB,IAAI,cAEJzuB,EAAAA,cAACwuB,EAAAA,EAAK,KAAEJ,GAAYA,EAASltB,SAAWktB,EAASltB,SAAW,eCI5E,EAlCsD3B,IAA6E,IAA5E,qBAAEmvB,EAAoB,UAAEC,EAAS,WAAEC,EAAU,eAAEC,EAAgBvuB,QAAAA,GAASf,EAC3H,OACIS,EAAAA,cAAA,OAAKK,UAAU,mCACXL,EAAAA,cAAA,OAAKK,UAAU,sBACXL,EAAAA,cAAA,KACIK,UAAU,mBACVC,QAASA,IACLouB,GAAwBA,EAAqBI,WAAaxuB,EAAQouB,EAAqBI,YAAc,GAEzG5rB,OAAO,SACPurB,IAAI,aACJjnB,MAAO,CAAEunB,OAAQ,YAEhBH,IACGF,MAAAA,OAAoB,EAApBA,EAAsBM,eACtBN,MAAAA,OAAoB,EAApBA,EAAsBnnB,eACtBmnB,MAAAA,OAAoB,EAApBA,EAAsBI,cAGlC9uB,EAAAA,cAAA,OAAKK,UAAU,IACXL,EAAAA,cAAA,KACIK,UAAU,4BACVC,QAASA,IAAOquB,GAAaA,EAAUG,WAAaxuB,EAAQquB,EAAUG,YAAc,GACpF5rB,OAAO,SACPurB,IAAI,aACJjnB,MAAO,CAAEunB,OAAQ,YAEhBF,IAAkBF,MAAAA,OAAS,EAATA,EAAWK,eAAeL,MAAAA,OAAS,EAATA,EAAWpnB,eAAeonB,MAAAA,OAAS,EAATA,EAAWG,gBCzBzFG,EAAyC1vB,IAUjD,IAVkD,qBACnDmvB,EAAoB,MACpBlB,EAAK,UACLzpB,EAAS,OACTf,EAAM,UACN2rB,EAAS,eACTE,EAAc,WACdD,EAAU,QACVtuB,EAAO,QACPiC,GACHhD,EACG,OACIS,EAAAA,cAAA,OAAKK,UAAU,eACXL,EAAAA,cAACkvB,EAAS,CAAC1B,MAAOA,IAClBxtB,EAAAA,cAACmvB,EAAkB,CACfT,qBAAsBA,EACtB3qB,UAAWA,EACXf,OAAQA,EACR2rB,UAAWA,EACXC,WAAYA,EACZC,eAAgBA,EAChBvuB,QAASA,IAEbN,EAAAA,cAAA,OACIK,UAAiD,yBAAtCkC,EAAQC,QAAQC,kBAA+C,oBAAsB,cAChG2sB,wBAAyB,CAAEC,OAAQrsB,EAAOssB,YAAc,QCDxE,EA1BkD/vB,IAAqE,IAApE,WAAEgwB,EAAU,cAAEC,EAAa,WAAEC,EAAU,aAAEC,EAAcpvB,QAAAA,GAASf,EAC/G,OACIS,EAAAA,cAAA,OAAKK,UAAU,SACXL,EAAAA,cAAA,KACIK,UAAU,OACVC,QAASA,IAAOivB,GAAcA,EAAWT,WAAaxuB,EAAQivB,EAAWT,YAAc,GACvF5rB,OAAO,SACPurB,IAAI,aACJjnB,MAAO,CAAEunB,OAAQ,YAEhBU,IAAcF,MAAAA,OAAU,EAAVA,EAAYP,eAAeO,MAAAA,OAAU,EAAVA,EAAYhoB,eAAegoB,MAAAA,OAAU,EAAVA,EAAYT,aAErF9uB,EAAAA,cAAA,KACIK,UAAU,OACVC,QAASA,IAAOkvB,GAAiBA,EAAcV,WAAaxuB,EAAQkvB,EAAcV,YAAc,GAChG5rB,OAAO,SACPurB,IAAI,aACJjnB,MAAO,CAAEunB,OAAQ,YAEhBW,IAAgBF,MAAAA,OAAa,EAAbA,EAAeR,eAAeQ,MAAAA,OAAa,EAAbA,EAAejoB,eAAeioB,MAAAA,OAAa,EAAbA,EAAeV,aAEhG9uB,EAAAA,cAAA,OAAKqa,GAAG,oCClBpB,MAqBA,EArB6C9a,IAAkB,IAAjB,UAAEwE,GAAWxE,EACvD,MAIMowB,GAJc,IAAIC,MAEQC,cAEM5Y,WAEhC6Y,GAAgBC,EAAAA,EAAAA,QAAOhsB,EAAUisB,UAAWL,GAElD,OACI3vB,EAAAA,cAAA,OAAKK,UAAU,aACXL,EAAAA,cAAA,OAAKK,UAAU,cACXL,EAAAA,cAAA,SAAI8vB,IAER9vB,EAAAA,cAAA,OAAKK,UAAU,qBACXL,EAAAA,cAAA,SAAI+D,EAAUksB,sBChBjBC,EAAyC3wB,IAQjD,IARkD,WACnDgwB,EAAU,cACVC,EAAa,UACbzrB,EAAS,OACTf,EAAM,aACN0sB,EAAY,WACZD,EAAU,QACVnvB,GACHf,EACG,OACIS,EAAAA,cAAA,OAAKK,UAAW2C,EAAOssB,WAAa,sBAAwB,eACxDtvB,EAAAA,cAACmwB,EAAc,CACXZ,WAAYA,EACZC,cAAeA,EACfxsB,OAAQA,EACRe,UAAWA,EACX0rB,WAAYA,EACZC,aAAcA,EACdpvB,QAASA,IAEbN,EAAAA,cAACowB,EAAS,CAACrsB,UAAWA,kBClBlC,QAAgB9C,IAA8B,IAAAovB,EAE1C,MAAOC,EAAaC,GAAkBvwB,EAAAA,YAC/B0vB,EAAcc,GAAmBxwB,EAAAA,YACjCywB,EAAWC,GAAgB1wB,EAAAA,YAC3B4uB,EAAY+B,GAAiB3wB,EAAAA,YAC7B4wB,EAAWC,GAAgB7wB,EAAAA,YAC3ByvB,EAAYqB,GAAiB9wB,EAAAA,YAC7B+wB,EAAeC,GAAoBhxB,EAAAA,YACnC6uB,EAAgBoC,GAAqBjxB,EAAAA,WACtCkxB,EAAiC,QAAzBb,EAAQpvB,EAAMgd,KAAKkT,cAAM,IAAAd,OAAA,EAAjBA,EAAmBlS,OAEzC,IAAIqR,EACAd,EACAa,EACAZ,EACJ,MAAMnB,EAAQvsB,EAAM+B,OAgBpBkuB,MAAAA,GAAAA,EAAUhqB,KAAKiqB,IAAe,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAEtBX,EAAOY,KAAOC,SAhBIC,cAgB8B,KAC/B,QADkCb,EACnDD,EAAOe,kBAAU,IAAAd,GAAjBA,EAAmB1gB,SAAS,mBACX,QAD4B2gB,EAC7CF,EAAOrC,kBAAU,IAAAuC,GAAjBA,EAAmB3gB,SAAS,qBAE5B8e,EAAgB2B,IAGhBA,EAAOY,KAAOC,SAtBMC,cAsB8B,KACjC,QADoCX,EACrDH,EAAOe,kBAAU,IAAAZ,GAAjBA,EAAmB5gB,SAAS,qBACX,QAD8B6gB,EAC/CJ,EAAOrC,kBAAU,IAAAyC,GAAjBA,EAAmB7gB,SAAS,qBACX,QAD8B8gB,EAC/CL,EAAOrC,kBAAU,IAAA0C,GAAjBA,EAAmB9gB,SAAS,mBACX,QAD4B+gB,EAC7CN,EAAOrC,kBAAU,IAAA2C,GAAjBA,EAAmB/gB,SAAS,4BAE5Bge,EAAuByC,IAGvBA,EAAOY,KAAOC,SA9BEC,cA8B8B,KAC7B,QADgCP,EACjDP,EAAOe,kBAAU,IAAAR,GAAjBA,EAAmBhhB,SAAS,wBACX,QADiCihB,EAClDR,EAAOrC,kBAAU,IAAA6C,GAAjBA,EAAmBjhB,SAAS,wBACX,QADiCkhB,EAClDT,EAAOrC,kBAAU,IAAA8C,GAAjBA,EAAmBlhB,SAAS,oBAE5B6e,EAAa4B,IAEI,QAAjBU,EAAAV,EAAOe,kBAAU,IAAAL,GAAjBA,EAAmBnhB,SAAS,cAAiC,QAArBohB,EAAIX,EAAOrC,kBAAU,IAAAgD,GAAjBA,EAAmBphB,SAAS,gBACxEie,EAAYwC,MAIpB,MAAMgB,EAAe7rB,MAAAA,IACjB,MAAM8rB,EAAM,CAAEC,cAAepxB,EAAMsB,QAAQkd,eAGrC6S,QAAgBC,EAAAA,EAAAA,IAAwBH,EAAKjB,GAAQxN,OAAO6O,IAC9DC,QAAQC,IAAIF,MAWhB,OARIF,GACAK,eAAeC,QAAQ,YAAaN,EAAQO,OAAS,IACrDnC,EAAa4B,KAEbK,eAAeC,QAAQ,YAAa,IACpClC,EAAa,KAGV4B,GAELQ,EAAexsB,MAAAA,IACjB,MAAM8rB,EAAM,CAAEC,cAAepxB,EAAMsB,QAAQkd,eAGrC6S,QAAgBC,EAAAA,EAAAA,IAAwBH,EAAKjB,GAAQxN,OAAO6O,IAC9DC,QAAQC,IAAIF,MAWhB,OARIF,GACAK,eAAeC,QAAQ,YAAaN,EAAQO,OAAS,IACrDhC,EAAayB,KAEbK,eAAeC,QAAQ,YAAa,IACpC/B,EAAa,KAGVyB,GAELS,EAAiBzsB,MAAAA,IACnB,MAAM8rB,EAAM,CAAEC,cAAepxB,EAAMsB,QAAQkd,eAGrC6S,QAAgBC,EAAAA,EAAAA,IAAwBH,EAAKjB,GAAQxN,OAAO6O,IAC9DC,QAAQC,IAAIF,MAWhB,OARIF,GACAK,eAAeC,QAAQ,cAAeN,EAAQO,OAAS,IACvDtC,EAAe+B,KAEfK,eAAeC,QAAQ,cAAe,IACtCrC,EAAe,KAGZ+B,GAELU,EAAmB1sB,MAAAA,IACrB,MAAM8rB,EAAM,CAAEC,cAAepxB,EAAMsB,QAAQkd,eAGrC6S,QAAgBC,EAAAA,EAAAA,IAAwBH,EAAKjB,GAAQxN,OAAO6O,IAC9DC,QAAQC,IAAIF,MAWhB,OARIF,GACAK,eAAeC,QAAQ,gBAAiBN,EAAQO,OAAS,IACzD7B,EAAiBsB,KAEjBK,eAAeC,QAAQ,gBAAiB,IACxC5B,EAAiB,KAGdsB,GAGXtyB,EAAAA,WAAgB,KAAK,IAAAizB,EACjB,MAAMxC,EAAYkC,eAAeO,QAAQ,aACnCnC,EAAgB4B,eAAeO,QAAQ,iBACvCtC,EAAY+B,eAAeO,QAAQ,aACnC5C,EAAcqC,eAAeO,QAAQ,eACrCC,EAAcR,eAAeO,QAAQ,iBACrCE,EAAaT,eAAeO,QAAQ,gBAYxC,IAAAG,EAVF,KACI3E,GACAa,GACAC,GACAb,IACC8B,GACAG,GACAN,GACAG,GACAM,EAQE,KAAIrC,GAAwBa,GAAcC,IAAkBiB,GAAcG,GAAcN,GAAgBG,GAIxG,GACH2C,IAAenyB,EAAMsB,QAAQC,QAAQ4jB,QACrC+M,IAAgB/hB,KAAKC,UAAuC,QAA9B4hB,EAAChyB,EAAMsB,QAAQC,QAAQkd,eAAO,IAAAuT,OAAA,EAA7BA,EAA+BK,iBAChE,KAAAC,EACEZ,eAAeC,QAAQ,eAAgB3xB,EAAMsB,QAAQC,QAAQ4jB,QAC7DuM,eAAeC,QAAQ,gBAAiBxhB,KAAKC,UAAuC,QAA9BkiB,EAACtyB,EAAMsB,QAAQC,QAAQkd,eAAO,IAAA6T,OAAA,EAA7BA,EAA+BD,kBAClF5E,EACKyD,EAAazD,EAAqBI,YAEvC6D,eAAeC,QAAQ,YAAa,IAEpCrD,EACKuD,EAAavD,EAAWT,YAE7B6D,eAAeC,QAAQ,YAAa,IAEpCpD,EACKuD,EAAevD,EAAcV,YAElC6D,eAAeC,QAAQ,cAAe,IAEtCjE,EACKqE,EAAiBrE,EAAUG,YAEhC6D,eAAeC,QAAQ,gBAAiB,UA3BvCT,EAAazD,EAAqBI,YAClCgE,EAAavD,EAAWT,YACxBiE,EAAevD,EAAcV,iBATlC6D,eAAeC,QAAQ,eAAgB3xB,EAAMsB,QAAQC,QAAQ4jB,QAC7DuM,eAAeC,QAAQ,gBAAiBxhB,KAAKC,UAAuC,QAA9BgiB,EAACpyB,EAAMsB,QAAQC,QAAQkd,eAAO,IAAA2T,OAAA,EAA7BA,EAA+BC,kBACjFnB,EAAazD,EAAqBI,YAClCgE,EAAavD,EAAWT,YACxBiE,EAAevD,EAAcV,YAC7BkE,EAAiBrE,EAAUG,YAiChC6B,EADAF,GAGc,IAGdK,EADAF,GAGc,IAGdJ,EADAF,GAGgB,IAGhBW,EADAF,GAGkB,MAEvB,CAACN,EAAWG,EAAWN,EAAaS,IAEvC,MAAMzwB,EAAUgG,MAAAA,IACZ,MAAMktB,EAAgBC,mBAAmBC,GAEzC7sB,OAAO8sB,KAAK,GAAG9sB,OAAOtB,SAASquB,SAAS3yB,EAAMsB,QAAQC,QAAQqxB,sCAAsCL,MAExG,OACIxzB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKK,UAAWY,EAAM+B,OAAOssB,WAAa,wBAA0B,iBAChEtvB,EAAAA,cAAA,OAAKqa,GAAG,qBACRra,EAAAA,cAACivB,EAAW,CACRP,qBAAsBA,EACtBC,UAAWA,EACXE,eAAgBA,EAChBD,WAAYA,EACZpB,MAAOA,EACPzpB,UAAW9C,EAAM8C,UACjBf,OAAQ/B,EAAM+B,OACd1C,QAASA,EACTiC,QAAStB,EAAMsB,UAEnBvC,EAAAA,cAACutB,EAAe,CAACC,MAAOA,IACxBxtB,EAAAA,cAACkwB,EAAW,CACRX,WAAYA,EACZC,cAAeA,EACfC,WAAYA,EACZC,aAAcA,EACd3rB,UAAW9C,EAAM8C,UACjBf,OAAQ/B,EAAM+B,OACd1C,QAASA,kGC5O7B,MAAMwzB,EAAmBA,CACrBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IAEID,EACOr0B,EAAAA,cAAAA,EAAAA,SAAA,KAAGq0B,GAEVN,EACOA,EAAU7sB,KAAIqtB,GAEbv0B,EAAAA,cAAA,OAAKK,UAAU,sBAAsBgH,IAAKktB,EAASC,YAC9CD,EAASE,SACTP,GAAiBK,EAASG,cACvB10B,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKo0B,EAASG,cAAcC,gBAAiBJ,EAASG,cAAcE,kBACzE,KACHL,EAASM,mBACN70B,EAAAA,cAAC2F,EAAAA,KAAI,CAACtF,UAAU,gCACXk0B,EAASO,OAETP,EAASM,oBAGd70B,EAAAA,cAAAA,EAAAA,SAAA,KACKu0B,EAASO,WAS3BR,EACHt0B,EAAAA,cAAA,OAAKK,UAAU,wBACXL,EAAAA,cAAA,KAAGK,UAAU,iBAAiB2zB,GAC7BG,GAGLn0B,EAAAA,cAAAA,EAAAA,SAAA,KAAGo0B,GA8HLW,EAA6BA,CAC/BC,EACAC,EACAC,EACAC,EACAZ,EACAa,KACA,IAAAC,EAEA,IAAIC,EAKJ,OAHAA,GAHmE,QAA9CD,EAAwBd,EAASG,qBAAa,IAAAW,OAAA,EAAtBA,EAAwBE,iBAGtCP,EAAaC,EAC5CK,EAAaf,EAAStW,MAAQsW,EAAStW,KAAKwW,SAAS/K,eAAiB0L,EAAwBF,EAAoBI,EAG9Gt1B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKK,UAAU,8CACXL,EAAAA,cAAA,KAAGK,UAAW,8CAA8Ci1B,EAAWE,uBACvEx1B,EAAAA,cAAA,KAAGK,UAAW,8CAA8Ci1B,EAAWE,iBAAkBF,GA7CvEG,EAAClB,EAA+BY,KAAyB,IAAAO,EAAAC,EAAAC,EACvF,MAAML,EAA6D,QAA9CG,EAAwBnB,EAASG,qBAAa,IAAAgB,OAAA,EAAtBA,EAAwBH,gBACrE,OACIv1B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2F,EAAAA,KAAI,CAACtF,UAAU,oDACXk1B,EACGv1B,EAAAA,cAAA,KAAGK,UAAU,uDACc,QADuCs1B,EAC7DpB,EAASG,qBAAa,IAAAiB,OAAA,EAAtBA,EAAwB7nB,eACxBqnB,EACsB,QADTS,EACbrB,EAASG,qBAAa,IAAAkB,OAAA,EAAtBA,EAAwBC,aAE7B,QAmCHJ,CAA0BlB,EAAUY,MA8FrD,EArC4Cl0B,IAAqB,IAAA60B,EAAAC,EAjMtCC,EAwEAC,EAyHsC,OAC7Dj2B,EAAAA,cAAA,MAAAE,OAAAC,OAAA,CAAKE,UAAWY,EAAMZ,UAAWga,GAAIpZ,EAAMoZ,IAAQpZ,EAAMi1B,uBAAuBj1B,IAC3EA,EAAMwQ,QACK,QAAXqkB,EAAC70B,EAAMuoB,YAAI,IAAAsM,GAAVA,EAAYK,iBAAkBl1B,EAAMm1B,mBA5HnBH,EA4HyDh1B,EAAMm1B,iBA1HlFp2B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK81B,EAAWI,yBAChBJ,EAAWK,iBACXL,EAAWM,oBACXN,EAAWO,mBAuHnBv1B,EAAMw1B,sBAlDex1B,CAAAA,GACtBA,EAAMy1B,gBAAkBxxB,EAAAA,gBAAgBC,YAAYlE,EAAMy1B,gBAEtD12B,EAAAA,cAAA,OAAKK,UAAU,wBACVY,EAAMy1B,eAAexvB,KAAIyvB,IAAY,IAAAC,EAClC,OACI52B,EAAAA,cAAA,OAAKqH,IAAKsvB,EAAU,GAAGnC,WAAYn0B,UAAU,+BACxC00B,EACG9zB,EAAM8C,UAAUixB,WAChB/zB,EAAM8C,UAAUkxB,aAChBh0B,EAAM8C,UAAU8yB,kBAChB51B,EAAM8C,UAAUoxB,cAChBwB,EAAU,GACwC,QADtCC,EACZ31B,EAAMsB,QAAQkd,cAActd,eAAeud,eAAO,IAAAkX,OAAA,EAAlDA,EAAoDE,uBAEvDhD,EACG6C,EACA11B,EAAM8C,UAAUgzB,cAChB91B,EAAMgzB,iBACNhzB,EAAMizB,cACNjzB,EAAMkzB,qBACNlzB,EAAMmzB,iBACNnzB,EAAMozB,kBACNpzB,EAAMqzB,qBAS3BrzB,EAAMqzB,eACTt0B,EAAAA,cAAA,OAAKK,UAAU,uBACXL,EAAAA,cAAA,OAAKK,UAAU,wBACXL,EAAAA,cAAA,KAAGK,UAAU,iBAAiBY,EAAM8C,UAAUgzB,eAG9C/2B,EAAAA,cAACC,EAAAA,EAAOC,OAAAC,OAAA,GAAKc,EAAMkzB,qBAAqBlzB,UAIhDjB,EAAAA,cAAAA,EAAAA,SAAA,KAAGiB,EAAMmzB,kBASL4C,CAAqB/1B,GAErBjB,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKc,EAAMgzB,kBACXH,EACG7yB,EAAM01B,UACN11B,EAAM8C,UAAUgzB,cAChB91B,EAAMgzB,iBACNhzB,EAAMizB,cACNjzB,EAAMkzB,qBACNlzB,EAAMmzB,iBACNnzB,EAAMozB,kBACNpzB,EAAMqzB,iBAIjBrzB,EAAMg2B,qBACHj3B,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKc,EAAMi2B,qBACXj2B,EAAMg2B,oBACI,QAAVlB,EAAA90B,EAAMuoB,YAAI,IAAAuM,GAAVA,EAAYI,eArMMgB,EAC/BC,EACAC,EACAp2B,IAEKm2B,EAKDp3B,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKk3B,GACLD,EAAoBE,SACpBF,EAAoBG,SACpBH,EAAoBI,QACpBJ,EAAoBK,aARzBx2B,EAAMsB,QAAQI,UAAUuB,MAAM,uDACvB,MA+LOizB,CAA2Bl2B,EAAMy2B,wBAAyBz2B,EAAMo2B,kBAAmBp2B,GA5KxE02B,EAC7BC,EACAP,EACAp2B,IAEK22B,EAKD53B,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKk3B,GAELO,EAAkBC,SAClBD,EAAkBE,SAClBF,EAAkBG,YAClBH,EAAkBI,IAClBJ,EAAkBK,eAAiBL,EAAkBK,eAAiB,KACtEL,EAAkBH,aAXvBx2B,EAAMsB,QAAQI,UAAUuB,MAAM,qDACvB,MAsKOyzB,CAAyB12B,EAAMi3B,sBAAuBj3B,EAAMo2B,kBAAmBp2B,IA1N1E+0B,EA2NQ/0B,EAAMk3B,qBA1NlBjzB,EAAAA,gBAAgBC,YAAY6wB,EAAUoC,QAIrDp4B,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK61B,EAAUqC,SACfrC,EAAUsC,OACVtC,EAAUoC,QALR,KA0NEn3B,EAAMs3B,2BACNt3B,EAAMu3B,sBACNv3B,EAAMkzB,qBACNlzB,EAAMw3B,8BAGdx3B,EAAMizB,6ICtRR,MAAMwE,EAAwDn5B,IAAA,IAAC,UAClEo5B,EAAS,MACTC,EAAK,cACLC,EAAa,iBACbC,EAAgB,YAChBC,EAAW,aACXC,GACHz5B,EAAA,OACGS,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKw4B,GACN34B,EAAAA,cAAAA,EAAAA,SAAA,KACK44B,EACAC,EACAC,EACAC,EACAC,KAcAC,EAAwCC,IAShD,IATiD,UAClDP,EAAS,iBACTG,EAAgB,MAChBK,EAAK,eACLC,EAAc,YACdL,EAAW,aACXC,EAAY,aACZK,EAAY,eACZC,GACHJ,EACG,MAAMK,EAAqBC,EAAAA,QAAOC,GAAG;;;;;MAMrC,OACIz5B,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKw4B,GACN34B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,WACIA,EAAAA,cAACu5B,EAAkB,KACdJ,EAEDn5B,EAAAA,cAACC,EAAAA,EAAOC,OAAAC,OAAA,GAAK24B,EAAiB73B,OAAQo4B,IAEzCN,EAAc/4B,EAAAA,cAAA,WAAMs5B,GAAwB,MAGhDF,EACAJ,KAqBjB,EAfwF/3B,IAEpF,MAAM,wBAAEy4B,EAAuB,SAAEC,GAAa14B,EAExCo4B,EAAep4B,EAAM8C,UAAU61B,kBAE/BN,EAAiBr4B,EAAM8C,UAAUu1B,eACvC,OACIt5B,EAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAKu5B,GAEPC,GAAY35B,EAAAA,cAACi5B,EAAQ/4B,OAAAC,OAAA,GAAKw5B,EAAQ,CAAEN,aAAcA,EAAcC,eAAgBA,mHC9E7F,MAAMO,QAAWL,QAAOM,EAAE;;EAIbC,EAAyD94B,IAAQ,IAAA+4B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC1E,MAAM,WAAEC,EAAU,WAAEC,EAAU,eAAEC,EAAc,KAAEvc,GAAShd,EACnDiwB,EAAWjT,EAAKkT,OAAOhT,OAE7B,IAAKmc,GAAoC,IAAtBA,EAAW35B,OAE1B,OADAM,EAAMsB,QAAQI,UAAUuB,MAAM,+CACvB,KAGX,IAAIsrB,EACAd,EACAa,EAcJ,OAZA2B,MAAAA,GAAAA,EAAUhqB,KAAIiqB,IACQ,aAAdA,EAAOY,KACPvC,EAAgB2B,GAEF,aAAdA,EAAOY,KACPrD,EAAuByC,GAET,aAAdA,EAAOY,KACPxC,EAAa4B,MAKjBnxB,IAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAKo6B,GACPD,EAAWpzB,KAAI,CAACuzB,EAAqB15B,IAE9Bf,IAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAKq6B,EAAc,CAAEnzB,IAAKtG,IAC1B05B,KAIbz6B,IAAAA,cAAA,KAAGwH,MAAO,CAAEkzB,aAAc,QAAUnM,KAA0B,QAAtByL,EAAEtL,SAAoB,IAAAsL,OAAA,EAApBA,EAAsBW,KACvC,QAD0CV,EAC9DvL,SAAoB,IAAAuL,OAAA,EAApBA,EAAsBjL,aAE3BhvB,IAAAA,cAAC65B,EAAQ,MACT75B,IAAAA,cAAA,KAAGwH,MAAO,CAAEkzB,aAAc,QAAUnM,KAAgB,QAAZ2L,EAAE3K,SAAU,IAAA2K,OAAA,EAAVA,EAAYS,KACvC,QAD0CR,EACpD5K,SAAU,IAAA4K,OAAA,EAAVA,EAAYnL,aAEjBhvB,IAAAA,cAAA,KAAGwH,MAAO,CAAEkzB,aAAc,QAAUnM,KAAmB,QAAf6L,EAAE5K,SAAa,IAAA4K,OAAA,EAAbA,EAAeO,KACvC,QAD0CN,EACvD7K,SAAa,IAAA6K,OAAA,EAAbA,EAAerL,aAEpBhvB,IAAAA,cAAA,KACIwH,MAAO,CAAEkzB,aAAc,QACvBrgB,GAAG,YAEHugB,MAAM,wCACNC,QAAQ,YAAW,aACR,gCACXn5B,KAAK,iBAEL1B,IAAAA,cAAA,UAEIsG,MAAM,QACNlG,KAAK,kBACL06B,YAAY,GACZC,WAAW,OACXnN,IAAI,4DAER5tB,IAAAA,cAAA,KACI0B,KAAK,OACL2Y,GAAG,4BAEH2gB,SAAS,IACT7U,KAAK,KAAI,aACE,qBACXyU,MAAM,yBAAuB,uBAKrC56B,IAAAA,cAAA,0EAKZ,sQC3FMi7B,EAAOtR,GAAKA,EAEZuR,EAAW37B,IAOV,IAPW,OAChB47B,GAAS,EAAK,UACdC,EAAY,MAAK,SACjBC,EAAQ,iBACRC,EAAmBL,EAAI,eACvBM,EAAiBN,GAElB17B,EADI0B,GAAKu6B,EAAAA,EAAAA,GAAAj8B,EAAAk8B,GAER,MAAM9N,EAASwN,EAAS,OAASnJ,SAASoJ,GAC1C,OAAoBp7B,IAAAA,cAAoB,MAAOiB,EAAoBjB,IAAAA,cAAoB07B,EAAAA,EAAe,CACpGJ,iBAAkBA,EAClBC,eAAgBA,EAChBI,SAAU,GACVC,OAAQT,EAAS,UAAY,WAC7BxN,OAAQA,GACP0N,KAGLH,EAASW,UAAY,CAEnBR,SAAUS,IAAAA,KAAeC,WAGzBZ,OAAQW,IAAAA,KAGRV,UAAWU,IAAAA,OAGXR,iBAAkBQ,IAAAA,KAGlBP,eAAgBO,IAAAA,MAElB,2CCxCA,SAASE,IAA2Q,OAA9PA,EAAW97B,OAAOC,QAAU,SAAU+C,GAAU,IAAK,IAAIsQ,EAAI,EAAGA,EAAIyoB,UAAUt7B,OAAQ6S,IAAK,CAAE,IAAI0oB,EAASD,UAAUzoB,GAAI,IAAK,IAAInM,KAAO60B,EAAch8B,OAAOi8B,UAAUC,eAAeC,KAAKH,EAAQ70B,KAAQnE,EAAOmE,GAAO60B,EAAO70B,IAAY,OAAOnE,IAA2Bo5B,MAAMt7B,KAAMi7B,WAMhT,MAAMM,EAAUh9B,IACd,IAAI,KACFo0B,EAAI,SACJ0H,EACAmB,SAAAA,GAEEj9B,EADC0B,GAAKu6B,EAAAA,EAAAA,GACNj8B,EAAIk8B,GACR,MAAMgB,GAAaC,EAAAA,EAAAA,QAAO,OACnBvB,EAAQwB,IAAaC,EAAAA,EAAAA,UAAS37B,EAAM0yB,OACpCkJ,EAAcC,IAAmBF,EAAAA,EAAAA,UAAS37B,EAAM0yB,MACjDoJ,EAAgB/8B,IAAAA,SAAeg9B,QAAQ3B,GACvC4B,EAAUF,EAAcG,SAC9BC,EAAAA,EAAAA,YAAU,KACR,MAAMC,EAAUC,EAAiB,GAAI1J,GACrC,MAAO,KACLyJ,OAED,CAACzJ,KAEJwJ,EAAAA,EAAAA,YAAU,KACRR,EAAUE,KACT,CAACA,IAEJ,MAAMQ,EAAmBA,CAACv6B,EAAOw6B,KAC/B,IAAIC,EAQA,IAAIC,EANJF,EACFC,EAAU3X,YAAW,KACnBkX,GAAgB,MAGd3B,GAGiD,QAAlDqC,EAAwB16B,EAAMyD,sBAAsD,IAA1Bi3B,GAA4CA,EAAsBnB,KAAKv5B,GAClI65B,GAAU,IAEVY,EAAU3X,YAAW,KACnBkX,GAAgB,MAMtB,MAAO,IAAMW,aAAaF,IAG5B,OAAoBv9B,IAAAA,cAAoB,UAAWg8B,EAAS,CAC1Dr3B,IAAK83B,EACL9I,KAAMkJ,EACNL,SAAU15B,IACRA,EAAMgF,kBACN00B,MAAAA,GAAoDA,EAAS15B,KAE9D7B,GAAQg8B,EAAQh8B,MAAMX,QAAU28B,EAAuBj9B,IAAAA,aAAmBi9B,EAAS,CACpF38B,QAASwC,IACPu6B,EAAiBv6B,GAAQ+5B,MAEZ78B,IAAAA,cAAoBk7B,EAAU,CAC7CC,OAAQA,EACRC,UAAW,MACXG,eAAgBA,KACTJ,GACHsB,EAAWx2B,QAAQy3B,cAAc,WAAWC,UAG/CZ,KAGLR,EAAQV,UAAY,CAElBR,SAAUS,IAAAA,KAAeC,WAGzBpI,KAAMmI,IAAAA,KAGNU,SAAUV,IAAAA,MAEZ,UC1EA,GATe8B,EAAAA,EAAAA,KAAI,CAAC,SAAU,kOAAmO,yOAA0O,+CAAgD,0BAA2B,OAAOr+B,IAAA,IAAC,SAC5jBs+B,GACDt+B,EAAA,OAAKs+B,EAAWC,EAAAA,MAAQC,EAAAA,UAASC,EAAAA,UAAU9E,IAAA,IAAC,SAC3C2E,GACD3E,EAAA,OAAK2E,EAAWI,EAAAA,OAASC,EAAAA,UAAQhjB,IAAA,IAAC,SACjC2iB,GACD3iB,EAAA,OAAK2iB,EAAWC,EAAAA,MAAQC,EAAAA,WAASI,IAAA,IAAC,SACjCN,GACDM,EAAA,OAAKN,EAAWI,EAAAA,OAASG,EAAAA,8BCV1B,SAASpC,IAA2Q,OAA9PA,EAAW97B,OAAOC,QAAU,SAAU+C,GAAU,IAAK,IAAIsQ,EAAI,EAAGA,EAAIyoB,UAAUt7B,OAAQ6S,IAAK,CAAE,IAAI0oB,EAASD,UAAUzoB,GAAI,IAAK,IAAInM,KAAO60B,EAAch8B,OAAOi8B,UAAUC,eAAeC,KAAKH,EAAQ70B,KAAQnE,EAAOmE,GAAO60B,EAAO70B,IAAY,OAAOnE,IAA2Bo5B,MAAMt7B,KAAMi7B,WAOhT,MAAMoC,EAAa7E,EAAAA,QAAOC,IAAI6E,WAAW,CACvCC,YAAa,gBADI/E,CAEhB,CAAC,eAAgB,gBAAiB,gBAAiB,cAAe,IAAK,6BAA8B,MAAOgF,EAAAA,KAAOC,EAAAA,iBAAkBC,EAAAA,gBAAiBC,EAAAA,WAAYC,EAAQC,EAAAA,gBAEvKC,EAAQv/B,IAAA,IAAC,SACb87B,EAAQ,GACR0D,EAAK,OAENx/B,EADI0B,GAAKu6B,EAAAA,EAAAA,GAAAj8B,EAAAk8B,GAAA,OACSz7B,IAAAA,cAAoBq+B,EAAYrC,EAAS,CAC1D+C,GAAIA,GACH99B,GAAQo6B,IAEXyD,EAAMjD,UAAY,CAEhBR,SAAUS,IAAAA,KAAeC,WAGzBgD,GAAIjD,IAAAA,MAEN,2CC1BA,SAASE,IAA2Q,OAA9PA,EAAW97B,OAAOC,QAAU,SAAU+C,GAAU,IAAK,IAAIsQ,EAAI,EAAGA,EAAIyoB,UAAUt7B,OAAQ6S,IAAK,CAAE,IAAI0oB,EAASD,UAAUzoB,GAAI,IAAK,IAAInM,KAAO60B,EAAch8B,OAAOi8B,UAAUC,eAAeC,KAAKH,EAAQ70B,KAAQnE,EAAOmE,GAAO60B,EAAO70B,IAAY,OAAOnE,IAA2Bo5B,MAAMt7B,KAAMi7B,WAQhT,MAAM5D,GAAUmB,EAAAA,EAAAA,SAAO+C,GAAS+B,WAAW,CACzCC,YAAa,eADC/E,CAEb,CAAC,8BAA+B,KAAMwF,EAAAA,OACnCj6B,GAAUy0B,EAAAA,EAAAA,SAAOsF,GAAOR,WAAW,CACvCC,YAAa,eADC/E,CAEb,CAAC,wBAAyB,uBAAwB,sBAAuB,KAAM,OAAQ,OAAQyF,EAAAA,WAE5FC,EAAS3/B,IACb,IAAI,KACFo0B,EAAI,SACJ6I,EAAQ,SACRnB,GAEE97B,EADC0B,GAAKu6B,EAAAA,EAAAA,GACNj8B,EAAIk8B,GACR,MAAMsB,EAAgB/8B,IAAAA,SAAeg9B,QAAQ3B,GACvC4B,EAAUF,EAAcG,QAC9B,OAAoBl9B,IAAAA,cAAoBq4B,EAAS2D,EAAS,CACxD+C,GAAIxC,EACJC,SAAUA,EACV7I,KAAMA,GACL1yB,GAAQg8B,EAAsBj9B,IAAAA,cAAoB+E,EAAS,KAAMg4B,KAGtEmC,EAAOrD,UAAY,CAEjBR,SAAUS,IAAAA,KAAeC,WAGzBpI,KAAMmI,IAAAA,KAGNU,SAAUV,IAAAA,MAEZ,yBCrCaqD,GAA2BvB,EAAAA,EAAAA,KAAI,CAAC,wBAAyB,gBAAiB,cAAe,gBAAiB,KAAMY,EAAAA,KAAOY,EAAAA,mBAAoBC,EAAAA,WAAYC,EAAAA,iBAC9JC,EAAW/F,EAAAA,QAAOgG,GAAGlB,WAAW,CACpCC,YAAa,gBADE/E,CAEd,CAAC,GAAI,KAAM2F,GAERM,EAAKlgC,IAAA,IAAC,SACV87B,GAED97B,EADI0B,GAAKu6B,EAAAA,EAAAA,GAAAj8B,EAAAk8B,GAAA,OACSz7B,IAAAA,cAAoBu/B,EAAUt+B,EAAOo6B,IAGxDoE,EAAG5D,UAAY,CAEbR,SAAUS,IAAAA,KAAeC,iCCbrB2D,EAAelG,EAAAA,QAAOC,IAAI6E,WAAW,CACzCC,YAAa,gBADM/E,CAElB,CAAC,GAAI,KAAM2F,GAKRQ,EAASpgC,IAAA,IAAC,SACd87B,GAED97B,EADI0B,GAAKu6B,EAAAA,EAAAA,GAAAj8B,EAAAk8B,GAAA,OACSz7B,IAAAA,cAAoB0/B,EAAcz+B,EAAOo6B,IAE5D,IACAsE,EAAO9D,UAAY,CAEjBR,SAAUS,IAAAA,KAAeC,6CCnB3B,SAASC,IAA2Q,OAA9PA,EAAW97B,OAAOC,QAAU,SAAU+C,GAAU,IAAK,IAAIsQ,EAAI,EAAGA,EAAIyoB,UAAUt7B,OAAQ6S,IAAK,CAAE,IAAI0oB,EAASD,UAAUzoB,GAAI,IAAK,IAAInM,KAAO60B,EAAch8B,OAAOi8B,UAAUC,eAAeC,KAAKH,EAAQ70B,KAAQnE,EAAOmE,GAAO60B,EAAO70B,IAAY,OAAOnE,IAA2Bo5B,MAAMt7B,KAAMi7B,WAMhT,MAAM2D,EAAcrgC,IAAA,IAAC,KACnBsgC,EAAO,MAAK,MACZh7B,EAAQ,eAAc,MACtB4M,GAEDlS,EADI0B,GAAKu6B,EAAAA,EAAAA,GAAAj8B,EAAAk8B,GAAA,OACSz7B,IAAAA,cAAoB,MAAOg8B,EAAS,GAAI/6B,EAAO,CAChEuG,MAAO,CACLC,MAAOo4B,EACPlS,OAAQkS,GAEVC,QAAS,YACTC,MAAO,6BACPr+B,KAAM+P,EAAQ,MAAQ,iBACpBA,EAAqBzR,IAAAA,cAAoB,QAAS,KAAMyR,GAAS,KAAM,IAAkBzR,IAAAA,cAAoB,OAAQ,CACvHggC,KAAMn7B,EACNo7B,EAAG,kIACF,OAEHL,EAAY/D,UAAY,CAEtBgE,KAAM/D,IAAAA,OAGNj3B,MAAOi3B,IAAAA,OAGPrqB,MAAOqqB,IAAAA,QAET,yBC7BMoE,GAAOtC,EAAAA,EAAAA,KAAI,CAAC,eAAgB,KAAM0B,EAAAA,iBAClCa,GAAU3G,EAAAA,EAAAA,SAAO4G,GAAU9B,WAAW,CAC1CC,YAAa,eADC/E,CAEb,CAAC,GAAI,0DAA2D0G,GAC7DG,EAAc7G,EAAAA,QAAOyD,QAAQqB,WAAW,CAC5CC,YAAa,eADK/E,CAEjB,CAAC,qGACE8G,EAAc9G,EAAAA,QAAOC,IAAI6E,WAAW,CACxCC,YAAa,eADK/E,CAEjB,CAAC,mEAEE+G,EAAUhhC,IACd,IAAI,SACF87B,GAEE97B,EADC0B,GAAKu6B,EAAAA,EAAAA,GACNj8B,EAAIk8B,GACR,OAAoBz7B,IAAAA,cAAoBqgC,EAAap/B,EAAoBjB,IAAAA,cAAoBsgC,EAAa,KAAMjF,EAAuBr7B,IAAAA,cAAoBmgC,EAAS,CAClKN,KAAM,cAIVU,EAAQ1E,UAAY,CAElBR,SAAUS,IAAAA,KAAeC,YAE3B,yBCxBMsE,GAAc7G,EAAAA,EAAAA,SAAOgH,GAAalC,WAAW,CACjDC,YAAa,gBADK/E,CAEjB,CAAC,wBAAyB,uBAAwB,UAAW,gDAAiD,eAAgB,mDAAoD,sBAAuBiH,EAAAA,UAAWC,EAAAA,UAAWxC,EAAAA,OAAQyC,EAAAA,OAAQC,EAAAA,MAAO7C,EAAAA,SACnPlL,IAAQ2G,EAAAA,EAAAA,SAAOmG,GAAQrB,WAAW,CACtCC,YAAa,gBADD/E,CAEX,CAAC,yCAA0C,qDAAsD,KAAMiH,EAAAA,UAAWC,EAAAA,WAE/GH,GAAUhhC,IACd,IAAI,SACF87B,GAEE97B,EADC0B,GAAKu6B,EAAAA,EAAAA,GACNj8B,EAAIk8B,GACR,OAAoBz7B,IAAAA,cAAoBqgC,EAAap/B,EAAoBjB,IAAAA,cAAoB6yB,GAAO,KAAMwI,KAG5GkF,GAAQ1E,UAAY,CAElBR,SAAUS,IAAAA,KAAeC,YAE3B,YCvBa8E,GAAQrH,EAAAA,QAAOsH,KAAK;;;;EAMpBC,GAASvH,EAAAA,QAAOwH,EAAE;;;;;EAOlBC,GAAUzH,EAAAA,QAAOwH,EAAE;;;;eCChC,MAAME,GAAoBjgC,GAElBjB,EAAAA,cAAC6gC,GAAK,KACD5/B,EAAMkgC,MAAMj6B,KAAKk6B,GACdphC,EAAAA,cAAA,MAAIK,UAAU,OACVL,EAAAA,cAAC+gC,GAAM,KAAEK,EAAKC,MACdrhC,EAAAA,cAACihC,GAAO,KAAEG,EAAKE,eAiSnC,GArR2ErgC,IAAQ,IAAAsgC,EAAAC,EAC/E,MAAOC,EAAmBC,GAAwB1hC,EAAAA,YAC3C2hC,EAAYC,GAAiB5hC,EAAAA,YAC7B6hC,EAAsBC,GAA2B9hC,EAAAA,YAGlD,qBAAE+hC,EAAoB,+BAAEC,EAA8B,mCAAEC,GAAuChhC,EAC/FihC,EAAkB,GAsBxB,IAAIC,EACAC,EAEJpiC,EAAAA,WAAgB,KAERiB,EAAMgd,MAAQhd,EAAMgd,KAAKwF,SAAWxiB,EAAMgd,KAAKwF,QAAQtF,QA1BtC7X,WACrB,MAAM8rB,EAAM,CAAEC,cAAepxB,EAAMsB,QAAQkd,eAC3C,IAAI4iB,EACJA,QAAuBC,EAAAA,GAAAA,IACnBlQ,EAEAnxB,EAAMgd,KAAKwF,QAAQtF,OAAOokB,gBAAkBthC,EAAMgd,KAAKwF,QAAQtF,OAAOokB,gBAAkBthC,EAAMgd,KAAKwF,QAAQtF,OAAO6G,SAClH/jB,EAAMsB,QAAQC,QAAQ4jB,QACxBzC,OAAO6O,IACLC,QAAQC,IAAIF,MAGZ6P,GAA+C,KAA7BA,EAAeG,UACjC7P,eAAeC,QAAQ,cAAe,SAEtCD,eAAeC,QAAQ,cAAe,QAG1C8O,EAAqBW,IASjBI,KAEL,IAGH,MAAMC,EAAqC,QAAbnB,EAAGtgC,EAAMgd,YAAI,IAAAsjB,GAA0B,QAA1BA,EAAVA,EAAYmB,gCAAwB,IAAAnB,OAAA,EAApCA,EAAsCpjB,OAQjEwkB,GANmC,QAAbnB,EAAGvgC,EAAMgd,YAAI,IAAAujB,GAAS,QAATA,EAAVA,EAAY/d,eAAO,IAAA+d,GAAQ,QAARA,EAAnBA,EAAqBrjB,cAAM,IAAAqjB,OAAA,EAA3BA,EAA6BoB,qBAOvD3zB,QAAQ0a,GACY,oBAAVA,EAAEkZ,MAEZ37B,KAAK47B,GACKA,EAAEC,MAAMC,eAGlBnB,GAAwBc,GACzBb,EAAwBa,GAG5B,MAAMM,EAAwBP,EACzBzzB,QAAQ0a,GACLA,EAAEiZ,oBAAoBh6B,MAAKs6B,GAAe,kBAAVA,EAAEL,KAAoD,IAAzBK,EAAEH,MAAMI,iBAExEj8B,KAAK47B,GAA4BA,EAAExB,YAElC8B,EAAsCV,EACvCzzB,QAAQ0a,GACLA,EAAEiZ,oBAAoBh6B,MAAKs6B,GAAe,kBAAVA,EAAEL,KAAoD,IAAzBK,EAAEH,MAAMI,iBAExEj8B,KAAK47B,IACK,CACHzB,KAAMyB,EAAEzB,KACRC,UAAWwB,EAAExB,cAIzBthC,EAAAA,WAAgB,KASZ,GARKmiC,IACDA,EAAaxP,eAAeO,QAAQ,eAEnCkP,IACDA,EAAagB,EAAYn0B,QAAQo0B,GACR,gBAAdA,EAAKhC,QAIhBe,GACAA,EAAW,IACXA,EAAW,GAAGd,YACbc,EAAW,GAAGd,UAAU5wB,SAAS,OAClCixB,IAAeS,EAAW,GAAGd,UAC/B,CACE,MAAMgC,EAAkBz8B,OAAO8rB,eAAeO,QAAQ,mBAChDuH,EAAW6I,EAAkBA,EAAgBC,MAAM,KAAK,GAAK,IAE7D,KAAElC,EAAI,SAAErc,EAAQ,WAAEwe,EAAU,OAAEC,GAAWxiC,EAAMgd,KAAKwF,QAAQtF,OAC5DulB,EAAWF,MAAAA,OAAU,EAAVA,EAAYv0B,QAAQ00B,GACO,IAAjCA,EAAUC,qBAEfC,EAAQL,MAAAA,OAAU,EAAVA,EAAYv0B,QAAQ00B,GACU,IAAjCA,EAAUC,qBAEfE,EAAON,MAAAA,OAAU,EAAVA,EAAYv0B,QAAQ00B,GACW,IAAjCA,EAAUC,qBAGfG,EAAO,CACTC,IAAK5B,EAAW,GAAGd,UAAYc,EAAW,GAAGd,UAAY,GACzDjnB,GAAIopB,EACJlpB,KAAM8mB,EACNqC,SAAUA,GAAYA,EAAS,IAAMA,EAAS,GAAGO,eAAiBP,EAAS,GAAGO,eAAelB,MAAQ,GACrGv7B,MAAOq8B,GAASA,EAAM,IAAMA,EAAM,GAAGI,eAAiBJ,EAAM,GAAGI,eAAelB,MAAQ,GACtFlD,KAAMiE,GAAQA,EAAK,IAAMA,EAAK,GAAGG,eAAiBH,EAAK,GAAGG,eAAelB,MAAQ,IAGjFl8B,QAAUA,OAAoB,aAE9BA,OAAoB,YAAEhF,KAAK,CACvBiB,MAAO,eACP2gB,QAAS,CACL,CACIsgB,KAAAA,EACAtJ,SAAU,CACNyJ,QAASzJ,OAM7BmH,EAAcQ,EAAW,GAAGd,WAC5B3O,eAAeC,QAAQ,aAAcwP,EAAW,GAAGd,cAExD,CAAC8B,IAEAT,GAAmBd,GAAwB38B,EAAAA,gBAAgBC,YAAYw9B,IACvET,EAAgBrgC,KAAK,CAEjB4P,MAAOxQ,EAAM8C,UAAUogC,oBACvB9gC,QACIrD,EAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAK4hC,GACR/hC,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK6hC,GAENhiC,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK8hC,GACL,IACDjiC,EAAAA,cAAA,OAAKovB,wBAAyB,CAAEC,OAAQwS,EAAqB,MAAS,SAQ1FuB,GAAel+B,EAAAA,gBAAgBC,YAAYi+B,IAC3ClB,EAAgBrgC,KAAK,CAEjB4P,MAAOxQ,EAAM8C,UAAUqgC,oBACvB/gC,QACIrD,EAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAK4hC,GACR/hC,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK6hC,GACNhiC,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK8hC,GACNjiC,EAAAA,cAACkhC,GAAgB,CAACC,MAAOiC,SAQ7CH,GAAe/9B,EAAAA,gBAAgBC,YAAY89B,IAC3Cf,EAAgBrgC,KAAK,CAEjB4P,MAAOxQ,EAAM8C,UAAUsgC,iBACvBhhC,QACIrD,EAAAA,cAACyF,EAAAA,OAAMvF,OAAAC,OAAA,GAAK4hC,EAAoB,CAAE1nB,GAAG,gBACjCra,EAAAA,cAAC2F,EAAAA,KAAIzF,OAAAC,OAAA,GAAK6hC,GAKLP,GACGzhC,EAAAA,cAAA,MAAAE,OAAAC,OAAA,GACQ8hC,EAAkC,CAEtC7S,wBAAyB,CAAEC,OAAQoS,EAAkBe,WACrDnoB,GAAG,qBAS/B,MAAOiqB,EAAWC,GAAgBvkC,EAAAA,YAC3B2zB,EAAM6Q,GAAWxkC,EAAAA,UAAe,GAGvCA,EAAAA,WAAgB,KACZ,MAAMykC,EAAkBA,KAEhB59B,OAAOtB,SAASimB,OAAO9a,SAAS,SAChCg0B,GAAmB,IAQ3B,OAFA79B,OAAOC,iBAAiB,WAAY29B,GAE7B,KACH59B,OAAOG,oBAAoB,WAAYy9B,MAE5C,IAEH,MAAMC,EAAsBC,IAEpBH,EADAG,IAGQ,IAShB,IAAIC,EAMAC,EALAnC,IACAkC,EAAclC,EAAyBzzB,QAAQ61B,GACjB,cAAnBA,EAAUzD,MAA2C,WAAnByD,EAAUzD,MAAwC,cAAnByD,EAAUzD,QAItFuD,IACAC,EAAeD,EAAY19B,KAAK49B,KACrBA,EAAUxD,UAAU5wB,SAAS,UAM5C,OAAkD,IAA9CshB,SAF0BC,KAEY,KAAa4S,EAAan0B,UAAS,KAAUzP,EAAMsB,QAAQC,QAAQuiC,KAAKC,gBACvGhlC,EAAAA,cAAA,WAAM,IAENkiC,GAAmBh9B,EAAAA,gBAAgBC,YAAY+8B,GAClDliC,EAAAA,cAAAA,EAAAA,SAAA,KAOKkiC,EAAgBh7B,KAAI,CAAC+1B,EAASl8B,IAEvBk8B,EAAQxrB,QAAUxQ,EAAM8C,UAAUsgC,iBAE9BrkC,EAAAA,cAACk/B,EAAM,CAACvL,KAAMA,EAAM6I,SAAW15B,GAAe4hC,GAAoB/Q,GAAOtsB,IAAKtG,GAC1Ef,EAAAA,cAACugC,GAAO,CAAClmB,GAAG,eAAe4iB,EAAQxrB,OAClCwrB,EAAQ55B,SAKbrD,EAAAA,cAACk/B,EAAM,CAACvL,KAAM5yB,IAAUujC,EAAW9H,SAAW15B,GA3CjDmiC,EAACniC,EAAY/B,KAC1B+B,EAAMI,OAAOywB,MACb4Q,EAAaxjC,IAyCgEkkC,CAAaniC,EAAO/B,GAAQsG,IAAKtG,GAC1Ff,EAAAA,cAACugC,GAAO,KAAEtD,EAAQxrB,OACjBwrB,EAAQ55B,YAM7B,4nEClTL,MAAMu9B,EAAQ,UACRsE,EAAQ,UAERlG,EAAQ,UAERmG,EAAS,UAETC,EAAS,UAETC,EAAS,UAETC,EAAS,UACTC,EAAS,UAETC,EAAS,UACTC,EAAS,UAETC,EAAS,UAETC,EAAS,UACTC,EAAU,UACVC,EAAW,UAEXC,EAAW,UACXC,EAAW,UAEXC,EAAW,UACXC,EAAW,UAEXC,EAAW,UACXC,EAAW,UAEXC,EAAO,UACPC,EAAQ,UAERC,EAAQ,UACRC,EAAQ,UAERC,EAAQ,UACRC,EAAQ,UAERC,EAAQ,UACRC,EAAQ,UAERC,EAAQ,UACR3I,EAAS,UAET4I,EAAS,UACTC,EAAS,UAETC,EAAS,UACTC,EAAS,UAETC,EAAS,UACTC,EAAS,UAETC,EAAS,UACTC,EAAU,UAEVC,EAAU,UACVC,EAAU,UAEVC,EAAU,UACVC,EAAU,UAEVC,EAAU,UACVC,EAAU,UAEV3J,EAAU,UAEV4J,EAAQ,UACR7J,EAAQ,OACRM,EAAS,UACTF,EAAS,UAETyC,EAAS,UACTiH,EAAiB,UACjBC,GAAiB,UACjBC,GAAiB,UACjBC,GAAY,UACZC,GAAY,UACZC,GAAY,UACZC,GAAW,UACXC,GAAW,UACXC,GAAW,UACXC,GAAgB,UAChBC,GAAgB,UAChBC,GAAiB,UACjBC,GAAkB,UAClBC,GAAiB,UACjBC,GAAe,UACfC,GAAmB,UACnBC,GAAkB,UAClBC,GAAgB,UAChBC,GAAiB,UACjBC,GAAe,UACfC,GAAiB,UACjBC,GAAe,UACfC,GAAa,UACbC,GAAU,UAGVC,GAAkB,kCAClBC,GAAoB,kCACpBC,GAAoB,mCACpBC,GAAqB,oCAGrBC,GAAO,iDACPC,GAAQ,sDACRC,GAAY,oCAGZC,GAAkB,IAClBlL,GAAmB,IACnBW,GAAqB,IACrBP,GAAiB,IAGjB+K,GAAe,OAEfC,GAAa,YACbC,GAAa,YACbC,GAAa,WACbpL,GAAa,OACbU,GAAa,WACb2K,GAAa,UACbC,GAAa,UACbC,GAAa,OACbC,GAAa,WAGb7K,GAAkB,IAClB8K,GAAa,IACb1L,GAAkB,IAGlB2L,GAAW,UAEXrM,GAAW,SAEX0C,GAAY,OAEZD,GAAY,SAEZ6J,GAAY,OAEZrL,GAAY,OAEZsL,GAAY,OAEZC,GAAY,OAEZC,GAAa,OAIbC,GAAgB,QAChBC,GAAgB,QAChBC,GAAgB,QAChBC,GAAgB,QAChBC,GAAiB,SACjBC,GAAiB,SACjBC,GAAiB,SAGjBC,GAAkB,CAC7BxjC,MAAO,EACPkmB,OAAQ,EACRtmB,IAAK,OAEM6jC,GAAkB,CAC7BzjC,MAAO,EACPkmB,OAAQ,EACRtmB,IAAK,OAEM8jC,GAAkB,CAC7B1jC,MAAO,EACPkmB,OAAQ,EACRtmB,IAAK,OAEM+jC,GAAkB,CAC7B3jC,MAAO,EACPkmB,OAAQ,EACRtmB,IAAK,OAEMgkC,GAAkB,CAC7B5jC,MAAO,EACPkmB,OAAQ,EACRtmB,IAAK,OAEMikC,GAAkB,CAC7B7jC,MAAO,EACPkmB,OAAQ,EACRtmB,IAAK,OAEMkkC,GAAmB,CAC9B9jC,MAAO,GACPkmB,OAAQ,EACRtmB,IAAK,QAEMmkC,GAAe,CAACP,GAAiBC,GAAiBC,GAAiBC,GAAiBC,GAAiBC,GAAiBC,IAGtHE,GAA2B","sources":["webpack://lds-commerce/./src/modules/lds-cookie-compliance/components/accept-button.tsx?60b1","webpack://lds-commerce/./src/modules/lds-cookie-compliance/components/links.tsx?2fbd","webpack://lds-commerce/./src/modules/lds-cookie-compliance/lds-cookie-compliance.tsx?7a76","webpack://lds-commerce/./src/modules/lds-cookie-compliance/lds-cookie-compliance.view.tsx?4cad","webpack://lds-commerce/./src/modules/lds-find-store/components/pickup-option-list.tsx?9187","webpack://lds-commerce/./src/modules/lds-find-store/components/store-pickup-option-list.tsx?8111","webpack://lds-commerce/./src/modules/lds-find-store/components/lds-find-store-location-line-item/date-time-helpers.ts?9da4","webpack://lds-commerce/./src/helpers/utilities/find-in-store-utilities.tsx?3af8","webpack://lds-commerce/./src/modules/lds-find-store/components/lds-find-store-location-line-item/store-selector-location-line-item.components.tsx?c04e","webpack://lds-commerce/./src/modules/lds-find-store/components/store-selector-location-lines.tsx?3005","webpack://lds-commerce/./src/modules/lds-find-store/components/store-selector-search-form.tsx?f643","webpack://lds-commerce/./src/modules/lds-find-store/components/store-selector-small-components.tsx?88c3","webpack://lds-commerce/./src/modules/lds-find-store/components/selected-store/selected-store.tsx?01e0","webpack://lds-commerce/./src/modules/lds-find-store/lds-find-store.props.autogenerated.ts?4e43","webpack://lds-commerce/./src/modules/lds-find-store/lds-find-store.tsx?0602","webpack://lds-commerce/./src/modules/lds-find-store/lds-find-store.view.tsx?72be","webpack://lds-commerce/./src/modules/lds-footer/lds-footer.tsx?6222","webpack://lds-commerce/./src/modules/lds-footer/components/FooterImageLink.tsx?e5e0","webpack://lds-commerce/./src/modules/lds-footer/components/SiteLinks.tsx?9ef9","webpack://lds-commerce/./src/modules/lds-footer/components/TermsAndConditions.tsx?56d6","webpack://lds-commerce/./src/modules/lds-footer/components/FooterLinks.tsx?5e89","webpack://lds-commerce/./src/modules/lds-footer/components/TermsOfService.tsx?1c44","webpack://lds-commerce/./src/modules/lds-footer/components/CopyRight.tsx?3162","webpack://lds-commerce/./src/modules/lds-footer/components/FooterLegal.tsx?b786","webpack://lds-commerce/./src/modules/lds-footer/lds-footer.view.tsx?44e3","webpack://lds-commerce/./src/themes/fabrikam/views/cart.view.tsx?780e","webpack://lds-commerce/./src/themes/fabrikam/views/checkout-customer-account-payment.view.tsx?66b5","webpack://lds-commerce/./src/themes/fabrikam/views/footer-category.view.tsx?3d33","webpack://lds-commerce/./src/eden/eden-collapse/lib/es/index.js?4524","webpack://lds-commerce/./src/eden/eden-details/lib/es/components/Details.js?8df6","webpack://lds-commerce/./src/eden/eden-text/lib/es/components/shared.js?6e2e","webpack://lds-commerce/./src/eden/eden-text/lib/es/components/Text3.js?7d45","webpack://lds-commerce/./src/eden/eden-drawer/lib/es/components/Drawer.js?9faa","webpack://lds-commerce/./src/eden/eden-headings/lib/es/components/H4.js?c8fe","webpack://lds-commerce/./src/eden/eden-headings/lib/es/components/Title4.js?583d","webpack://lds-commerce/./src/eden/eden-icons/lib/es/generated-from-source/ChevronDown.js?fb4c","webpack://lds-commerce/./src/eden/eden-details/lib/es/components/Summary.js?fbfc","webpack://lds-commerce/./src/eden/eden-drawer/lib/es/components/Summary.js?ec75","webpack://lds-commerce/./src/themes/fabrikam/views/product-specification.styled.ts?d29c","webpack://lds-commerce/./src/themes/fabrikam/views/product-specification.view.tsx?697d","webpack://lds-commerce/./src/eden/eden-style-constants/lib/es/index.js?8ac0"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nexport interface ICookieComplianceAcceptButton {\r\n acceptCookiesButtonText?: string;\r\n acceptCookiesButtonAriaLabel?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n}\r\n\r\nexport const CookieComplianceAcceptButton: React.FC = ({\r\n acceptCookiesButtonText,\r\n acceptCookiesButtonAriaLabel,\r\n telemetryContent,\r\n onClose\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n {acceptCookiesButtonText}\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IActionLinksData } from '../lds-cookie-compliance.props.autogenerated';\r\n\r\nexport interface ICookieComplianceLinks {\r\n links: IActionLinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CookieComplianceLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n \r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n \r\n );\r\n }\r\n\r\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\n\r\nexport default CookieComplianceLinks;\r\n","/* eslint-disable security/detect-object-injection */\r\n/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\r\nimport { ILdsCookieComplianceConfig, ILdsCookieComplianceProps } from './lds-cookie-compliance.props.autogenerated';\r\n\r\n/**\r\n * Alert state interface.\r\n */\r\nexport interface IAlertState {\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * Cookie compliance view props interface.\r\n */\r\nexport interface ICookieComplianceViewProps extends ILdsCookieComplianceProps<{}> {\r\n CookieComplianceBanner: IModuleProps;\r\n AlertProps: IAlertProps;\r\n Content: INodeProps;\r\n text?: React.ReactNode;\r\n links?: React.ReactNode;\r\n acceptButton?: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CookieCompliance component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookieCompliance extends React.PureComponent, IAlertState> {\r\n private readonly cookieRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public constructor(props: ILdsCookieComplianceProps) {\r\n super(props);\r\n this.state = { visible: false };\r\n this.cookieRef = React.createRef();\r\n this._onDismiss = this._onDismiss.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\r\n this.setState({ visible: true });\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { config, context, resources, telemetry } = this.props;\r\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\r\n const { visible } = this.state;\r\n\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n let moduleConfig: ILdsCookieComplianceConfig;\r\n\r\n try {\r\n moduleConfig = config;\r\n } catch (error) {\r\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\r\n return
{error}
;\r\n }\r\n\r\n if (isConsentGiven && !visible) {\r\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\r\n return <>;\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDismiss: this._onDismiss,\r\n CookieComplianceBanner: {\r\n moduleProps: this.props,\r\n className: classnames('ms-cookie-compliance', moduleConfig.className),\r\n ref: this.cookieRef\r\n },\r\n AlertProps: {\r\n className: 'ms-cookie-compliance__container',\r\n color: 'white',\r\n fade: false\r\n },\r\n Content: {\r\n className: 'ms-cookie-compliance__content'\r\n },\r\n text: moduleConfig.content && (\r\n \r\n ),\r\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\r\n \r\n ),\r\n acceptButton: (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles Link content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\r\n if (this.props.config.actionLinks?.[linkIndex]) {\r\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Handles content change event.\r\n * @param event - Event.\r\n */\r\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.content = event.target.value;\r\n };\r\n\r\n private _onDismiss(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n this.setState({ visible: false });\r\n }\r\n}\r\n\r\nexport default CookieCompliance;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICookieComplianceViewProps } from './lds-cookie-compliance';\r\n\r\nconst CookieComplianceView: React.FC = props => {\r\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {text}\r\n {links}\r\n \r\n {acceptButton}\r\n \r\n \r\n );\r\n};\r\nexport default CookieComplianceView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\n/**\r\n * Interface Pickup option list.\r\n */\r\nexport interface IPickUpOptionListProps {\r\n pickupListOptionMenuText: string;\r\n pickupmodeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n resources: any;\r\n}\r\n\r\n/**\r\n * Interface pickup option list state.\r\n */\r\nexport interface IPickOptionListState {\r\n expandSiteOptions: boolean;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class PickUpOptionList extends React.PureComponent {\r\n private readonly _pickupListOptionMenu: React.RefObject;\r\n\r\n private readonly _pickupListOptionButton: React.RefObject;\r\n\r\n private readonly eventsToBeBind = ['click', 'touchstart'];\r\n\r\n public constructor(props: IPickUpOptionListProps) {\r\n super(props);\r\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\r\n this._pickupListOptionMenu = React.createRef();\r\n this._pickupListOptionButton = React.createRef();\r\n this.state = {\r\n expandSiteOptions: false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.addEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.removeEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { pickupmodeList } = this.props;\r\n\r\n return (\r\n
\r\n {pickupmodeList?.map((delivery: DeliveryOption) => {\r\n if (\r\n delivery.Code === 'PickUp' ||\r\n delivery.Code === 'PICKUP' ||\r\n delivery.Code === 'Pickup' ||\r\n delivery.Code === 'pickup'\r\n ) {\r\n return (\r\n \r\n \r\n {this.props.resources.pickupButtonText}\r\n \r\n \r\n );\r\n } else {\r\n return;\r\n }\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handle the document click.\r\n * @param event -- Event object.\r\n */\r\n private readonly handleDocumentClick = (event: Event): void => {\r\n const htmlElement = event.target as HTMLElement;\r\n if (\r\n !(\r\n (this._pickupListOptionButton.current !== null &&\r\n (event.target === this._pickupListOptionButton.current ||\r\n this._pickupListOptionButton.current.contains(htmlElement))) ||\r\n (this._pickupListOptionMenu.current !== null &&\r\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\r\n )\r\n ) {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n };\r\n\r\n private _renderDeliveryOptions(event: React.MouseEvent): void {\r\n event.stopPropagation();\r\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !isExpandSiteOptionsState\r\n });\r\n }\r\n\r\n /**\r\n * Select Delivery option.\r\n * @param event -- Event Object.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode && deliveryCode.length > 0) {\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Pickup option list interface.\r\n */\r\nexport interface IStorePickUpOptionListProps {\r\n productPickupListOptionMenuText?: string;\r\n productPickupModeList?: DeliveryOption[];\r\n defaultOptionText?: string;\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Store Pickup option state interface.\r\n */\r\nexport interface IStorePickOptionListState {\r\n isFilterExpanded: boolean;\r\n selectedPickupMode?: string;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class StorePickUpOptionList extends React.PureComponent {\r\n private readonly _storePickupListOptionMenu: React.RefObject;\r\n\r\n public constructor(props: IStorePickUpOptionListProps) {\r\n super(props);\r\n this._storePickupListOptionMenu = React.createRef();\r\n this.state = {\r\n isFilterExpanded: false,\r\n selectedPickupMode: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\r\n const selectedPickupModeDesc = defaultOptionText\r\n ? defaultOptionText\r\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\r\n const role = 'menu';\r\n return (\r\n
\r\n \r\n {this.state.isFilterExpanded ? (\r\n
    \r\n {productPickupModeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Method to call when drop dwon get selected.\r\n */\r\n private readonly _rendeDeliveryOptions = () => {\r\n const isExpandOptionsState = this.state.isFilterExpanded;\r\n this.setState({\r\n isFilterExpanded: !isExpandOptionsState\r\n });\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { OrgUnitLocation, RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\n\r\nimport { IStoreSelectorLocationLineItemResources } from '.';\r\n\r\nexport interface IHoursDisplayInfo {\r\n startDayShort: string;\r\n startDayFull: string;\r\n endDayShort?: string;\r\n endDayFull?: string;\r\n timeRange: string;\r\n}\r\n\r\ninterface IHoursInfo {\r\n isClosed: boolean;\r\n openTime?: number;\r\n closeTime?: number;\r\n}\r\n\r\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\r\n\r\nexport const secondsToTime = (\r\n seconds: number | undefined,\r\n resources: IStoreSelectorLocationLineItemResources,\r\n location?: OrgUnitLocation\r\n): string | undefined => {\r\n if (seconds === undefined) {\r\n return undefined;\r\n }\r\n let hours = Math.floor(seconds / (60 * 60));\r\n const ampm = hours >= 12 ? resources.timePm || 'pm' : resources.timeAm || 'am';\r\n hours %= 12;\r\n hours = hours ? hours : 12;\r\n const divisorForMinutes = seconds % (60 * 60);\r\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\r\n if (location && location.Country === 'KOR') {\r\n return `${ampm} ${hours}:${minutes}`;\r\n } else {\r\n return `${hours}:${minutes} ${ampm}`;\r\n }\r\n};\r\n\r\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.monday;\r\n case 'TUE':\r\n return resources.days.tuesday;\r\n case 'WED':\r\n return resources.days.wednesday;\r\n case 'THU':\r\n return resources.days.thursday;\r\n case 'FRI':\r\n return resources.days.friday;\r\n case 'SAT':\r\n return resources.days.saturday;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sunday;\r\n }\r\n};\r\n\r\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.mondayFull;\r\n case 'TUE':\r\n return resources.days.tuesdayFull;\r\n case 'WED':\r\n return resources.days.wednesdayFull;\r\n case 'THU':\r\n return resources.days.thursdayFull;\r\n case 'FRI':\r\n return resources.days.fridayFull;\r\n case 'SAT':\r\n return resources.days.saturdayFull;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sundayFull;\r\n }\r\n};\r\n\r\nconst buildHoursDisplayInfo = (\r\n startDay: DayType,\r\n endDay: DayType,\r\n hoursInfo: string,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): IHoursDisplayInfo => {\r\n return {\r\n startDayShort: getShortTimeString(startDay, resources),\r\n startDayFull: getFullTimeString(startDay, resources),\r\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\r\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\r\n timeRange: hoursInfo\r\n };\r\n};\r\n\r\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\r\n if (firstLine.isClosed && secondLine.isClosed) {\r\n return true;\r\n }\r\n\r\n if (!firstLine.isClosed && !secondLine.isClosed) {\r\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\r\n return {\r\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\r\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\r\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\r\n };\r\n};\r\n\r\nconst buildStoreHoursString = (\r\n hoursInfo: IHoursInfo,\r\n resources: IStoreSelectorLocationLineItemResources,\r\n location?: OrgUnitLocation\r\n): string => {\r\n if (hoursInfo.isClosed) {\r\n return resources.closedText;\r\n }\r\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime, resources, location);\r\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime, resources, location);\r\n\r\n return `${openFrom}–${openTo}`;\r\n};\r\n\r\nexport const buildStoreHours = (\r\n storeHours: RegularStoreHours,\r\n resources: IStoreSelectorLocationLineItemResources,\r\n location?: OrgUnitLocation\r\n): IHoursDisplayInfo[] => {\r\n const storeHoursList: IHoursDisplayInfo[] = [];\r\n\r\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\r\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\r\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\r\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\r\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\r\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\r\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\r\n\r\n let periodStart: DayType = 'MON';\r\n let periodEnd: DayType = 'MON';\r\n\r\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'TUE';\r\n }\r\n periodEnd = 'TUE';\r\n\r\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'WED';\r\n }\r\n periodEnd = 'WED';\r\n\r\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'THU';\r\n }\r\n periodEnd = 'THU';\r\n\r\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'FRI';\r\n }\r\n periodEnd = 'FRI';\r\n\r\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'SAT';\r\n }\r\n periodEnd = 'SAT';\r\n\r\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'SUN';\r\n }\r\n periodEnd = 'SUN';\r\n\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources, location), resources));\r\n\r\n return storeHoursList;\r\n};\r\n","export const StoreAvailabilityText = [\r\n 'Agotado temporalmente',\r\n 'Temporairement en rupture de stock',\r\n 'Temporaneamente esaurito',\r\n 'Temporariamente fora de Estoque',\r\n 'Временно отсутствует на складе',\r\n '現在,在庫切れです',\r\n '暫時缺貨',\r\n 'Momentan nicht auf Lager',\r\n '주문형 인쇄',\r\n 'Temporarily Out of Stock'\r\n];\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { PickUpOptionList } from '../pickup-option-list';\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\r\n// @ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nimport { StoreAvailabilityText } from '../../../../helpers/utilities/find-in-store-utilities';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n\r\n closedText: string;\r\n\r\n outOfStock: string;\r\n inStock: string;\r\n\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n bopisStoreHeading: string;\r\n timeAm: string;\r\n timePm: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\n/**\r\n * Store Locator line item props.\r\n */\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n definitionResources: any;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n filteredPickupMode?: string;\r\n shouldShowIndex?: boolean;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n };\r\n}\r\n\r\n/**\r\n * Store Locator line item action component.\r\n */\r\nconst storeSelectorLocationLineItemComponentActions = {\r\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\r\n props.handlers.onSelected(props.location, deliveryMode);\r\n },\r\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\r\n },\r\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onRemovePreferredStore();\r\n }\r\n};\r\n\r\n/**\r\n * Function to render store hours.\r\n * @param storeHours - Store Hours object.\r\n * @param location - Store Unit.\r\n * @param resources - Resources.\r\n * @returns - Jsx element.\r\n */\r\nconst renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n location: OrgUnitLocation,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day houts\r\n if (storeHours?.RegularStoreHours) {\r\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources, location);\r\n\r\n return (\r\n
\r\n {storeHoursList.map(displayTime => {\r\n return (\r\n \r\n {displayTime.endDayShort ? (\r\n
\r\n {displayTime.startDayShort} –{' '}\r\n {displayTime.endDayShort}\r\n
\r\n ) : (\r\n
\r\n {displayTime.startDayShort}\r\n
\r\n )}\r\n
{displayTime.timeRange}
\r\n
\r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom, resources);\r\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo, resources);\r\n\r\n return (\r\n
\r\n {storeOpenFrom}-{storeOpenTo}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Function to retrun distance measure unit.\r\n * @param distance - Store location within radius.\r\n * @param preferredDistanceUnit - Unit configuration.\r\n * @param isLocationDisabled - Flag to check user location.\r\n * @returns - Unit of distance.\r\n */\r\nexport const buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < 1) {\r\n return `(<1 ${preferredDistanceUnit})`;\r\n }\r\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\r\n};\r\n\r\n/**\r\n * Function to store contact.\r\n * @param contacts - Store location within radius.\r\n * @returns - Return primary contact number of store.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\r\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @param pickupMode -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\r\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\r\n};\r\n\r\n/**\r\n * On Change functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\r\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\r\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\r\n return Promise.resolve();\r\n};\r\n\r\n/**\r\n * Method to render pickup modes.\r\n * @param props - StoreSelector Line item props.\r\n * @param deliveryOptionList - Product DeliveryOption List.\r\n * @param pickupInStoreButtonText - Pickup store button text.\r\n * @param pickupInStoreAriaLabel - Pickup store aria label.\r\n * @returns Jsx component.\r\n */\r\nconst renderPickupModes = (\r\n props: IStoreSelectorLocationLineItemProps,\r\n deliveryOptionList: DeliveryOption[],\r\n pickupInStoreButtonText: string,\r\n pickupInStoreAriaLabel: string,\r\n resources: any\r\n): JSX.Element | null => {\r\n if (props.filteredPickupMode === undefined) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method to check if we have atleast one common delivery code between product and channel.\r\n * @param productdeliveryOptions - Product DeliveryOption List.\r\n * @param storePickUpOptionList - Channel DeliveryOption List.\r\n * @returns DeliveryOptionList.\r\n */\r\nexport const matchDeliveryOptions = (\r\n productdeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n const deliveryOption: DeliveryOption[] = [];\r\n productdeliveryOptions?.map(delivery => {\r\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\r\n if (pickup) {\r\n deliveryOption.push(pickup);\r\n }\r\n });\r\n\r\n return deliveryOption;\r\n};\r\n\r\n/**\r\n * Renders store location line items.\r\n * @param props - Store location line items props.\r\n * @returns - HTML.\r\n */\r\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\r\n const [isAvailable, setIsAvailable] = React.useState(true);\r\n const {\r\n hideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n location,\r\n resources,\r\n storeHours,\r\n stockStatusLabel,\r\n storeLocatorView,\r\n telemetryContent,\r\n storePickUpOptionList,\r\n productPickUpOptionList\r\n } = props;\r\n\r\n const storeName: string | undefined = location.OrgUnitName;\r\n const storeAddress: string | undefined = location.Address;\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\r\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\r\n const canSelectLocation = hideStockStatus || isInStock;\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n React.useEffect(() => {\r\n StoreAvailabilityText.map((text: string) => {\r\n if (stockText && stockText.includes(text)) {\r\n setIsAvailable(false);\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{resources.bopisStoreHeading}

\r\n {storeName}\r\n {storeAddress && (\r\n
\r\n \r\n {location.Street}\r\n {`${location.City} ${location.State}, ${location.Zip}`}\r\n
\r\n )}\r\n {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )}\r\n
\r\n
\r\n

{resources.storeHoursHeader}

\r\n {renderStoreHours(storeHours, location, resources)}\r\n
\r\n
\r\n {!storeLocatorView && (\r\n
\r\n
\r\n {/* {resources.availabilityInfoHeader}: */}\r\n {stockText &&

{stockText}

}\r\n
\r\n {isCurrentLocation ? (\r\n

{resources.currentLocation}

\r\n ) : canSelectLocation && isAvailable ? (\r\n deliveryOptionList.length === 0 ? (\r\n
\r\n \r\n {pickupInStoreButtonText}\r\n \r\n
\r\n ) : (\r\n renderPickupModes(\r\n props,\r\n deliveryOptionList,\r\n pickupInStoreButtonText,\r\n pickupInStoreAriaLabel,\r\n props.definitionResources\r\n )\r\n )\r\n ) : (\r\n
\r\n \r\n {pickupInStoreButtonText}\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Store location line item component.\r\n */\r\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\r\n props: IStoreSelectorLocationLineItemProps\r\n) => JSX.Element;\r\n","/* eslint-disable security/detect-object-injection */\r\n/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsFindStoreResources } from '../lds-find-store.props.autogenerated';\r\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './lds-find-store-location-line-item';\r\n\r\n/**\r\n * Store selector location lines props interface.\r\n */\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IFullOrgUnitAvailability[];\r\n resources: ILdsFindStoreResources;\r\n definitionResources: any;\r\n preferredDistanceUnit?: string;\r\n\r\n alreadySelectedLocation?: OrgUnitLocation;\r\n outOfStockThreshold: number;\r\n enableOutOfStockCheck: boolean;\r\n storeLocatorView?: boolean;\r\n selectedStoreLocationId?: string;\r\n isPreferredStoreEnabled?: boolean;\r\n displayList?: boolean;\r\n isLocationDisabled?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n onClick: (locationId: string | undefined) => void;\r\n preferredStoreLocationId: string | null;\r\n onSetAsPreferredStore: (locationId: string | undefined) => void;\r\n onRemovePreferredStore: () => void;\r\n filteredPickupMode?: string;\r\n shouldShowIndex?: boolean;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onLocationSelected(location: OrgUnitLocation | undefined): void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists.\r\n */\r\n@observer\r\nexport class StoreSelectorLocationLines extends React.PureComponent {\r\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\r\n\r\n private readonly selectedLocationRef: React.RefObject;\r\n\r\n private storeCounter: number;\r\n\r\n public constructor(props: IStoreSelectorLocationLinesProps) {\r\n super(props);\r\n this.selectedLocationRef = React.createRef();\r\n this.storeCounter = 0;\r\n }\r\n\r\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\r\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\r\n this._scrollIntoView();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.locations) {\r\n this._stores = this._sortStores(this.props.locations);\r\n }\r\n\r\n reaction(\r\n () => this.props.locations,\r\n () => {\r\n if (this.props.locations) {\r\n this._stores = this._sortStores(this.props.locations);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!ArrayExtensions.hasElements(this._stores)) {\r\n return null;\r\n }\r\n\r\n this.storeCounter = 0;\r\n\r\n return (\r\n
\r\n {this._stores.map((store, index) => {\r\n return this._renderStoreLocation(store, index);\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On click Handler function.\r\n * @param orgUnitLocation -OrgUnit location.\r\n * @returns Click action on orgUnit Location.\r\n */\r\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\r\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\r\n };\r\n\r\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\r\n const defaultAriaSetsize = 0;\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Sort store.\r\n * @param stores - Array of stores data.\r\n * @returns Sorted stores array.\r\n */\r\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\r\n /**\r\n * IsPreferredStore.\r\n * @param value - Array of stores data.\r\n * @returns IsPreferred store boolean value.\r\n */\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n this.props.isPreferredStoreEnabled &&\r\n this.props.preferredStoreLocationId &&\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n /**\r\n * Scroll into view.\r\n */\r\n private readonly _scrollIntoView = () => {\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop;\r\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Is current location.\r\n * @param location - Org unit location.\r\n * @returns The current location.\r\n */\r\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\r\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\r\n false;\r\n\r\n /**\r\n * Check the product is in stock or not.\r\n * @param itemAvailabilities - Item availabilities.\r\n * @returns If the product is in stock.\r\n */\r\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!this.props.enableOutOfStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * Get the stock inventory label.\r\n * @param availabilityWithHours - Full org unit availability.\r\n * @returns The stock label.\r\n */\r\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\r\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\r\n if (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\r\n ) {\r\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Map resources.\r\n * @param resources - Store resoureces.\r\n * @returns Resources.\r\n */\r\n private readonly _mapResources = (resources: ILdsFindStoreResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.selectStoreText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n bopisStoreHeading: resources.bopisStoreHeading,\r\n timeAm: resources.timeAm,\r\n timePm: resources.timePm,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n KeyCodes,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nimport { StorePickUpOptionList } from './store-pickup-option-list';\r\n\r\n// import styled from 'styled-components';\r\n/**\r\n * Store Selector Search Form Props interface.\r\n */\r\nexport interface IStoreSelectorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n seeAllStoresText: string;\r\n viewListText: string;\r\n viewMapText: string;\r\n pickupFilterByHeading?: string;\r\n pickupFilterMenuHeading?: string;\r\n };\r\n\r\n id: string;\r\n value: string;\r\n isMapDisabled?: boolean;\r\n showAllStores?: boolean;\r\n displayList?: boolean;\r\n locatorView?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n hasEnabledPickupFilterToShowStore?: boolean;\r\n filteredPickupMode?: string;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onShowAllStores(): void;\r\n onToggleListMapViewState(): void;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n filterPickupModeSelected(pickupMode: string): void;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button.\r\n */\r\nexport class StoreSelectorSearchForm extends React.PureComponent {\r\n private readonly searchBoxRef: React.RefObject = React.createRef();\r\n\r\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private previousValue: string = '';\r\n\r\n private isSearchResultOpened: boolean = false;\r\n\r\n public constructor(props: IStoreSelectorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\r\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\r\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\r\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\r\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const findStoreSearchButton: React.CSSProperties = {\r\n width: '35%'\r\n };\r\n\r\n const {\r\n resources: { searchButtonAriaLabel, searchPlaceholderText },\r\n id,\r\n value\r\n } = this.props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handles the key press on the input box.\r\n * @param event - Event object.\r\n */\r\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\r\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\r\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\r\n // In order to avoid that. Checking if the search result is open or not.\r\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\r\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\r\n if (activeDescedantValue) {\r\n if (this.previousValue === '') {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n return;\r\n }\r\n\r\n if (activeDescedantValue !== this.previousValue) {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n } else {\r\n this.isSearchResultOpened = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Calls method display result.\r\n * @param event - The first number.\r\n */\r\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\r\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\r\n this.props.onShowAllStores();\r\n }\r\n };\r\n\r\n /**\r\n * Method called on search text changed.\r\n * @param event - Input value.\r\n */\r\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\r\n const inputValue: string = event.target.value;\r\n\r\n await this.props.searchTermChanged(inputValue);\r\n };\r\n\r\n /**\r\n * Method called on search submit.\r\n * @param event - Input value.\r\n */\r\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\r\n event.preventDefault(); // Prevents form submission\r\n this.searchBoxRef.current?.blur();\r\n if (!this.isSearchResultOpened) {\r\n await this.props.performSearch(this.props.value);\r\n }\r\n this.isSearchResultOpened = false;\r\n };\r\n\r\n /**\r\n * Method called on product pickup option change.\r\n * @returns - Void.\r\n */\r\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\r\n this.props.filterPickupModeSelected(deliveryCode);\r\n return Promise.resolve();\r\n };\r\n\r\n /**\r\n * Method to render pickup mode list.\r\n * @param props - Store selector search form props.\r\n * @param toggleButtonText - Locator view button text.\r\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\r\n * @param pickupFilterMenuHeading - Pickup store button text.\r\n * @param locatorView - Locator View is on\\off.\r\n * @param pickupFilterByHeading - Pickup list label text.\r\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\r\n * @param shouldDisplayList - Display List.\r\n * @returns Jsx component.\r\n */\r\n // @ts-ignore\r\n private readonly renderPickupModesList = (\r\n props: IStoreSelectorSearchFormProps,\r\n toggleButtonText: string,\r\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\r\n pickupFilterMenuHeading: string | undefined,\r\n locatorView: boolean | undefined,\r\n pickupFilterByHeading: string | undefined,\r\n hasEnabledPickupFilterToShowStore: boolean | undefined,\r\n shouldDisplayList?: boolean\r\n ): JSX.Element | null => {\r\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\r\n if (hasEnabledPickupFilterToShowStore) {\r\n return (\r\n
\r\n {locatorView && (\r\n \r\n )}\r\n \r\n
{pickupFilterByHeading}
\r\n
\r\n );\r\n }\r\n if (locatorView) {\r\n return (\r\n \r\n {toggleButtonText}\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsFindStoreResources, ITermsOfServiceLinkData } from '../lds-find-store.props.autogenerated';\r\n\r\nexport interface IStoreSelectorEmptyMessageProps {\r\n resources: ILdsFindStoreResources;\r\n}\r\n\r\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const StoreSelectorWaiting: React.FC = () =>
;\r\n\r\nexport interface IStoreSelectorTermsOfServiceProps {\r\n link?: ITermsOfServiceLinkData;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\r\n if (link) {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-store-select__terms-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport interface IStoreSelectorFoundLocationsMessage {\r\n resources: ILdsFindStoreResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n searchRadius: number;\r\n preferredDistanceUnit: string;\r\n isSeeAllStore: boolean;\r\n}\r\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n searchRadius,\r\n resources,\r\n isSeeAllStore,\r\n preferredDistanceUnit\r\n}) => {\r\n if (locations) {\r\n const storeCountMessage =\r\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n return (\r\n
\r\n {isSeeAllStore\r\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\r\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent,\r\n NodeTag,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { PickUpOptionList } from '../pickup-option-list';\r\nimport { buildDistanceString, matchDeliveryOptions } from '../lds-find-store-location-line-item';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface ISelectedStoreResources {\r\n availabilityInfoHeader: string;\r\n closedText: string;\r\n outOfStock: string;\r\n inStock: string;\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreProps {\r\n className?: string;\r\n shouldHideStockStatus?: boolean;\r\n isCurrentLocation?: boolean;\r\n isInStock?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n resources: ISelectedStoreResources;\r\n definitionResources: any;\r\n stockStatusLabel?: string;\r\n preferredStoreLocationId: string | null;\r\n isPreferredStoreEnabled?: boolean;\r\n isLocationDisabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n preferredDistanceUnit: string;\r\n filteredPickupMode?: string;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreViewProps {\r\n isCurrentLocation?: boolean;\r\n canSelectLocation?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n deliveryOptions?: DeliveryOption[];\r\n isPreferredStore?: boolean;\r\n resources: ISelectedStoreResources;\r\n\r\n storeDetailsMain: INodeProps;\r\n storeHeader: INodeProps;\r\n storeName: React.ReactNode;\r\n storeDistance: React.ReactNode;\r\n storeDetailsAvailabilityContainer: INodeProps;\r\n productAvailability: React.ReactNode;\r\n stockStatus: React.ReactNode;\r\n currentLocation: React.ReactNode;\r\n pickUpDeliveryOptionButton: React.ReactNode;\r\n pickupModes?: React.ReactNode;\r\n preferredStoreButton?: React.ReactNode;\r\n removePreferredStoreButton?: React.ReactNode;\r\n storeDetailsCloseButton?: React.ReactNode;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\r\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\r\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\r\n }\r\n};\r\n\r\n/**\r\n * Set Preferred store functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\r\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\r\n};\r\n\r\n/**\r\n * On Change functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\r\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\r\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\r\n }\r\n return Promise.resolve();\r\n};\r\n\r\n/**\r\n * Remove preferred store functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\r\n props.handlers.onRemovePreferredStore();\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @param pickupMode -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\r\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\r\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\r\n }\r\n};\r\n\r\n/**\r\n * On store details close functionality.\r\n * @param props -Store locator location items.\r\n * @returns Void promise.\r\n */\r\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\r\n await props.handlers.closeStoreDetailsModal();\r\n};\r\n\r\n/**\r\n * Method to render pickup modes.\r\n * @param props - StoreSelector Line item props.\r\n * @param deliveryOptionList - Product DeliveryOption List.\r\n * @param pickupInStoreButtonText - Pickup store button text.\r\n * @param pickupInStoreAriaLabel - Pickup store aria label.\r\n * @returns Jsx component.\r\n */\r\nconst renderPickupModes = (\r\n props: ISelectedStoreProps,\r\n deliveryOptionList: DeliveryOption[],\r\n pickupInStoreButtonText: string,\r\n pickupInStoreAriaLabel: string,\r\n resources: any\r\n): JSX.Element | null => {\r\n if (props.filteredPickupMode === undefined) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders selected store details.\r\n * @param props - Store location details props.\r\n * @returns - Selected Store view props.\r\n */\r\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\r\n const {\r\n className,\r\n shouldHideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n selectedStore,\r\n resources,\r\n stockStatusLabel,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n isLocationDisabled,\r\n telemetryContent,\r\n storePickUpOptionList,\r\n productPickUpOptionList,\r\n preferredDistanceUnit,\r\n definitionResources\r\n } = props;\r\n\r\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\r\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\r\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\r\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\r\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\r\n const canSelectLocation = !shouldHideStockStatus && isInStock;\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\r\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n const viewProps: ISelectedStoreViewProps = {\r\n selectedStore,\r\n isCurrentLocation,\r\n canSelectLocation,\r\n isPreferredStore,\r\n resources,\r\n deliveryOptions: deliveryOptionList,\r\n storeDetailsMain: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__main`\r\n },\r\n storeHeader: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__header`\r\n },\r\n storeName: {storeName},\r\n storeDetailsCloseButton: \r\n ),\r\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel, definitionResources),\r\n preferredStoreButton: isPreferredStoreEnabled ? (\r\n \r\n {resources.preferredStoreText}\r\n \r\n ) : null,\r\n removePreferredStoreButton: isPreferredStoreEnabled ? (\r\n \r\n {resources.setAsPreferredStoreText}\r\n \r\n ) : null,\r\n handlers: {\r\n onSelected: props.handlers.onSelected,\r\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\r\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\r\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\r\n }\r\n };\r\n\r\n return viewProps;\r\n};\r\n\r\n/**\r\n * Store location line item component.\r\n */\r\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ILdsFindStore containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum mode {\r\n findStores = 'findStores',\r\n pickupInStore = 'pickupInStore'\r\n}\r\n\r\nexport const enum searchRadiusUnit {\r\n miles = 'miles',\r\n kilometers = 'kilometers'\r\n}\r\n\r\nexport const enum style {\r\n inline = 'inline',\r\n dialog = 'dialog'\r\n}\r\n\r\nexport interface ILdsFindStoreConfig extends Msdyn365.IModuleConfig {\r\n heading?: string;\r\n termsOfServiceLink?: ITermsOfServiceLinkData;\r\n mode?: mode;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n style?: style;\r\n setAsPreferredStore?: boolean;\r\n enablePickupFilterToShowStore?: boolean;\r\n showAllStores?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ILdsFindStoreResources {\r\n searchPlaceholderText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n outOfStockText: string;\r\n inStockText: string;\r\n selectedStoreLocationText: string;\r\n emptyLocationsText: string;\r\n selectStoreText: string;\r\n selectStoreAriaFormatText: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n timeText: string;\r\n captionText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n availabilityText: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n storeHoursClosedText: string;\r\n storeHoursMondayText: string;\r\n storeHoursTuesdayText: string;\r\n storeHoursWednesdayText: string;\r\n storeHoursThursdayText: string;\r\n storeHoursFridayText: string;\r\n storeHoursSaturdayText: string;\r\n storeHoursSundayText: string;\r\n storeHoursMondayFullText: string;\r\n storeHoursTuesdayFullText: string;\r\n storeHoursWednesdayFullText: string;\r\n storeHoursThursdayFullText: string;\r\n storeHoursFridayFullText: string;\r\n storeHoursSaturdayFullText: string;\r\n storeHoursSundayFullText: string;\r\n storePhoneAriaLabel: string;\r\n storeAddressAriaLabel: string;\r\n storeCountMessage: string;\r\n storeAllCountMessage: string;\r\n storeCountMessageInKm: string;\r\n storeSelectorHeaderText: string;\r\n storeLocatorHeaderText: string;\r\n seeAllStoresText: string;\r\n viewMapText: string;\r\n viewListText: string;\r\n pickupFilterByHeading: string;\r\n pickupFilterMenuHeading: string;\r\n timeAm: string;\r\n timePm: string;\r\n bopisStoreHeading: string;\r\n pickupButtonText: string;\r\n findInStore: string;\r\n}\r\n\r\nexport interface ITermsOfServiceLinkData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface ILdsFindStoreProps extends Msdyn365.IModule {\r\n resources: ILdsFindStoreResources;\r\n config: ILdsFindStoreConfig;\r\n slots: {\r\n maps: React.ReactNode[];\r\n };\r\n}\r\n","/* eslint-disable security/detect-object-injection */\r\n/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/// \r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getFullAvailableInventoryNearby,\r\n GetFullAvailableInventoryNearbyInput,\r\n getOrgUnitLocationsByArea,\r\n GetOrgUnitLocationsByAreaInput,\r\n IFullOrgUnitAvailability\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n isMobile,\r\n ITelemetryContent,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n NodeTag,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n StoreSelectorEmptyMessage,\r\n StoreSelectorFoundLocationsMessage,\r\n StoreSelectorLocationLines,\r\n StoreSelectorSearchForm,\r\n StoreSelectorWaiting\r\n} from './components';\r\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/lds-find-store-location-line-item/date-time-helpers';\r\nimport { ILdsFindStoreData } from './lds-find-store.data';\r\nimport {\r\n ILdsFindStoreProps,\r\n ILdsFindStoreResources,\r\n mode as modeEnum,\r\n searchRadiusUnit as SearchRadiusUnit,\r\n style as styleEnum\r\n} from './lds-find-store.props.autogenerated';\r\n\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\n\r\n/**\r\n * StoreSelector State Interface.\r\n */\r\nexport interface IStoreSelectorState {\r\n isSearchInProgress: boolean;\r\n searchTerm?: string;\r\n isSeeAllStoreValue: boolean;\r\n isLocationDisabled?: boolean;\r\n filteredPickupMode?: string;\r\n updatedCart?: ICartState | null;\r\n}\r\n\r\n/**\r\n * StoreSelector View Props Interface.\r\n */\r\nexport interface IStoreSelectorViewProps extends ILdsFindStoreProps {\r\n state: IStoreSelectorState;\r\n\r\n // Containers:\r\n ModuleProps: IModuleProps;\r\n BodyContainerProps: INodeProps;\r\n FooterContainerProps: INodeProps;\r\n HeaderContainerProps: INodeProps;\r\n HeaderProps?: React.ReactNode;\r\n\r\n // Components\r\n locationsMessage?: React.ReactNode;\r\n search?: React.ReactNode;\r\n spinner?: React.ReactNode;\r\n locationsList?: React.ReactNode;\r\n selectedLocation?: ISelectedStoreViewProps;\r\n noLocationsMessage?: React.ReactNode;\r\n terms?: React.ReactNode;\r\n headerText?: React.ReactNode;\r\n sortLocations?: IFullOrgUnitAvailability[];\r\n locationListProps?: IStoreSelectorLocationLineItemProps[];\r\n bodyWrapperProps?: INodeProps;\r\n storeResultContainerProps?: INodeProps;\r\n mapContainerProps?: INodeProps;\r\n maps?: React.ReactNode;\r\n isMobileView?: boolean;\r\n storeDetailsModal?: INodeProps;\r\n shouldAllowSearch?: boolean;\r\n\r\n callbacks: {\r\n closeDialog(): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n performSearch(searchTerm: string): Promise;\r\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\r\n getAndUpdateUserLocation(): Promise;\r\n attachMapAutoSuggest(): Promise;\r\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\r\n setPreferredStore(storeId: string | undefined): Promise;\r\n removePreferredStore(): Promise;\r\n setSelectedStore(storeId: string | undefined): Promise;\r\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * StoreSelectorLocation Line Resources Interface.\r\n */\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n closedText: string;\r\n outOfStock: string;\r\n inStock: string;\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n bopisStoreHeading: string;\r\n timeAm: string;\r\n timePm: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\n/**\r\n * ILocationHours Interface.\r\n */\r\nexport interface ILocationHours {\r\n openFrom?: string;\r\n openTo?: string;\r\n}\r\n\r\n/**\r\n * StoreSelectorLocation Line Item Props Interface.\r\n */\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n storeHoursList?: IHoursDisplayInfo[];\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n selectedStoreLocationId?: string;\r\n locationOpen?: ILocationHours;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n onClick: (locationId: string | undefined) => void;\r\n}\r\n\r\n/**\r\n *\r\n * Pick Up In Store module.\r\n * @extends React.Component>}\r\n */\r\n@observer\r\nclass StoreSelector extends React.Component, IStoreSelectorState> {\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private storeCounter: number;\r\n\r\n private isPreferredStoreEnabled?: boolean;\r\n\r\n public constructor(props: ILdsFindStoreProps) {\r\n super(props);\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.state = {\r\n isSearchInProgress: true,\r\n searchTerm: '',\r\n isSeeAllStoreValue: false,\r\n filteredPickupMode: undefined,\r\n updatedCart: null\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.storeCounter = 0;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const cartStateData: ICartState = await getCartState(this.props.context.actionContext);\r\n this.setState({ updatedCart: cartStateData });\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\r\n } = this.props;\r\n\r\n // Adding Timeout to make sure it loads the data based upon the preferred store.\r\n setTimeout(() => {\r\n void this._getAndUpdateStoreLocation();\r\n }, 0);\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context?.id === this.props.id) {\r\n void this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (!context || context.id === this.props.id) {\r\n await this._searchTermChanged('');\r\n void this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\r\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\r\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.availabilitiesWithHours.result,\r\n async () => {\r\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\r\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\r\n if (storeLocationList) {\r\n await this._setOrgUnitStoreInformation(storeLocationList);\r\n }\r\n }\r\n }\r\n );\r\n\r\n if (isAutoSuggestionEnabled) {\r\n when(\r\n () => {\r\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\r\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\r\n return isMapApiLoaded && isDialogOpen && isSameContext;\r\n },\r\n () => {\r\n setTimeout(async () => {\r\n await this._attachMapAutoSuggest();\r\n }, 0);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(): boolean {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n if (context && context.id === this.props.id) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\r\n public render(): JSX.Element {\r\n const {\r\n config: {\r\n className,\r\n heading,\r\n mode,\r\n style,\r\n setAsPreferredStore: shouldSetAsPreferredStore,\r\n showAllStores: shouldShowAllStores,\r\n lookupRadius,\r\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\r\n searchRadiusUnit\r\n },\r\n context: {\r\n telemetry,\r\n app: { config: appConfig },\r\n actionContext: {\r\n requestContext: { channel, cookies }\r\n }\r\n },\r\n slots: { maps: mapSlot },\r\n resources,\r\n data: {\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations }\r\n }\r\n } = this.props;\r\n\r\n this.storeCounter = 0;\r\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\r\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n const isDialogOpen: boolean = storeSelectorStateManager\r\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\r\n : false;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const isInlineView = styleDefault === styleEnum.inline;\r\n const isLocatorView = modeDefault === modeEnum.findStores;\r\n const shouldHideInventory = isLocatorView;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const preferredStore: IStoreInfo | undefined =\r\n this.props.data.cartDetails.result && this.props.data.cartDetails.result.AmountDue\r\n ? storeSelectorStateManager?.preferredStore\r\n : undefined;\r\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\r\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\r\n const canShowLocationView =\r\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\r\n\r\n const storeSelectorActions = {\r\n async toggleListMapViewState(): Promise {\r\n await storeSelectorStateManager?.toggleListMapViewState();\r\n }\r\n };\r\n\r\n if (!channel?.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n }\r\n\r\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\r\n const preferredDistanceUnit =\r\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\r\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\r\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\r\n let sortLocation = null;\r\n if (storeLocationList) {\r\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\r\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\r\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\r\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\r\n\r\n const preferredStoreSelected =\r\n this.state.updatedCart &&\r\n this.state.updatedCart.cart &&\r\n this.state.updatedCart.cart.AmountDue &&\r\n // this.state.updatedCart.cart.DeliveryMode !== '' &&\r\n this.state.updatedCart.cart.CartLines &&\r\n this.state.updatedCart.cart.CartLines[0].DeliveryMode !== '' &&\r\n this.props.context.request.telemetryPageName !== 'CartPage'\r\n ? storeLocationList?.filter(x => {\r\n return (\r\n x.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n this.state.updatedCart?.cart.CartLines![0].WarehouseId\r\n );\r\n })\r\n : storeLocationList;\r\n\r\n const shouldAllowSearch = false;\r\n\r\n if (this.state.filteredPickupMode && storeLocationList) {\r\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\r\n }\r\n const locationListProps = this._getStoreLocationListProps(\r\n isEnableOutofStock,\r\n isLocatorView,\r\n preferredLocationId,\r\n this.isPreferredStoreEnabled,\r\n selectedStoreLocationId,\r\n storeLocationList ?? null,\r\n preferredDistanceUnit,\r\n alreadySelectedLocation,\r\n productPickUpOptionList\r\n );\r\n\r\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\r\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\r\n const viewProps: IStoreSelectorViewProps = {\r\n ...(this.props as ILdsFindStoreProps),\r\n state: this.state,\r\n maps: hasMapSlot ? mapSlot[0] : undefined,\r\n\r\n ModuleProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : Modal,\r\n moduleProps: this.props,\r\n className: classname(\r\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\r\n className,\r\n dialogClassName,\r\n isInlineView ? '' : 'msc-modal-input-required'\r\n ),\r\n autoFocus: true,\r\n fade: true,\r\n isOpen: isDialogOpen,\r\n // isOpen: true,\r\n 'aria-label': configHeading,\r\n onClosed: this._closeDialog,\r\n horizontalPosition: 'center',\r\n verticalPosition: 'center',\r\n toggle: this._closeDialog\r\n },\r\n isMobileView: isMobileDevice,\r\n HeaderContainerProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\r\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\r\n toggle: this._closeDialog\r\n },\r\n HeaderProps: configHeading && (\r\n \r\n ),\r\n FooterContainerProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\r\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\r\n },\r\n BodyContainerProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\r\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\r\n },\r\n bodyWrapperProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__body_wrapper'\r\n },\r\n storeResultContainerProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__store_container'\r\n },\r\n mapContainerProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__map_container'\r\n },\r\n storeDetailsModal: {\r\n tag: 'div' as NodeTag,\r\n className: `ms-store-select__map__selected_store__modal ${\r\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\r\n }`\r\n },\r\n locationsMessage: !this.state.isLocationDisabled && (\r\n \r\n ),\r\n selectedLocation: this.renderSelectedStore(\r\n shouldHideInventory,\r\n preferredDistanceUnit,\r\n preferredStore,\r\n this.isPreferredStoreEnabled,\r\n isEnableOutofStock,\r\n productPickUpOptionList,\r\n shouldDisplayList\r\n ),\r\n search: (\r\n \r\n ),\r\n spinner: ,\r\n shouldAllowSearch: shouldAllowSearch,\r\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n noLocationsMessage: ,\r\n // terms: (\r\n // \r\n // ),\r\n\r\n // Not being used in current context, we can use it here to pass more props.\r\n headerText: (\r\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\r\n ),\r\n sortLocations: sortLocation,\r\n locationListProps,\r\n callbacks: {\r\n searchTermChanged: this._searchTermChanged,\r\n performSearch: this._performSearch,\r\n closeDialog: this._closeDialog,\r\n selectedLocation: this._onOrgUnitLocationSelected,\r\n getAndUpdateUserLocation: async () => {\r\n void this._getAndUpdateStoreLocation();\r\n return Promise.resolve();\r\n },\r\n attachMapAutoSuggest: this._attachMapAutoSuggest,\r\n onSuggestionSelected: this._onOrgUnitLocationSelected,\r\n setPreferredStore: this._setPreferredStore,\r\n removePreferredStore: this._removePreferredStore,\r\n setSelectedStore: this._setSelectedStore,\r\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\r\n }\r\n } as IStoreSelectorViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Render the selected store for the mobile devices.\r\n * @param shouldHideInventory -- Hide Inventory.\r\n * @param preferredDistanceUnit -- Preferred Distance Unit.\r\n * @param preferredStore -- Preferred Store.\r\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\r\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\r\n * @param productPickUpOptionList -- Product pickup option list.\r\n * @param shouldDisplayList - Should Display list.\r\n * @returns -- Returns the view props.\r\n */\r\n public renderSelectedStore = (\r\n shouldHideInventory: boolean,\r\n preferredDistanceUnit: string,\r\n preferredStore: IStoreInfo | undefined,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n hasEnabledOutOfStockCheck: boolean,\r\n productPickUpOptionList?: DeliveryOption[],\r\n shouldDisplayList?: boolean\r\n ): ISelectedStoreViewProps | undefined => {\r\n const {\r\n resources,\r\n data: {\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations }\r\n }\r\n } = this.props;\r\n\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\r\n (store: any) => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\r\n );\r\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreResources = this._mapResources(resources);\r\n\r\n if (!shouldDisplayList && selectedStore) {\r\n const selectedProps: ISelectedStoreProps = {\r\n shouldHideStockStatus: shouldHideInventory,\r\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\r\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\r\n selectedStore,\r\n resources: selectedStoreResources,\r\n definitionResources: this.props.resources,\r\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\r\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\r\n isPreferredStoreEnabled,\r\n isLocationDisabled: this.state.isLocationDisabled,\r\n telemetryContent: this.telemetryContent,\r\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\r\n productPickUpOptionList,\r\n preferredDistanceUnit,\r\n handlers: {\r\n onSelected: this._onOrgUnitLocationSelected,\r\n onSetAsPreferredStore: this._setPreferredStore,\r\n onRemovePreferredStore: this._removePreferredStore,\r\n closeStoreDetailsModal: this._closeStoreDetailModal\r\n }\r\n };\r\n\r\n return SelectedStoreComponent(selectedProps);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Method to be called on link text change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n if (this.props.config.termsOfServiceLink) {\r\n this.props.config.termsOfServiceLink.linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called on heading change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading = event.target.value;\r\n };\r\n\r\n /**\r\n * Show all stores handler function.\r\n */\r\n private readonly onShowAllStoresHandler = () => {\r\n void this._getAndUpdateStoreLocation(true);\r\n this.setState({ filteredPickupMode: undefined });\r\n };\r\n\r\n /**\r\n * Method to be called for filtered the store location based on the filter selected by the user.\r\n * @param stores -All the stores from the API.\r\n * @param filteredPickupMode -Filter selected by the user.\r\n * @returns -Filtered stores.\r\n */\r\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\r\n return stores.filter(location => {\r\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\r\n return deliveryOption.Code === filteredPickupMode;\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Filter Store by pickup mode.\r\n * @param deliveryCode -Delivery Code.\r\n */\r\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\r\n this.setState({ filteredPickupMode: deliveryCode });\r\n };\r\n\r\n /**\r\n * Method will sort all stores.\r\n * @param stores -Stores List.\r\n * @param isPreferredStoreEnabled -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @returns List of Stores.\r\n */\r\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\r\n private _sortStores(\r\n stores: IFullOrgUnitAvailability[],\r\n isPreferredStoreEnabled: boolean | undefined,\r\n preferredStoreLocationId: string\r\n ): IFullOrgUnitAvailability[] {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n isPreferredStoreEnabled &&\r\n preferredStoreLocationId &&\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n /**\r\n * Method will list of store selector location line.\r\n * @param hasEnabledOutOfStockCheck -Stores List.\r\n * @param isStoreLocatorView -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @param isPreferredStoreEnabled -Stores List.\r\n * @param selectedStoreLocationId -Module config value.\r\n * @param stores -Store Id.\r\n * @param preferredDistanceUnit -Module config value.\r\n * @param alreadySelectedLocation -Already Selected Location.\r\n * @param productPickUpOptionList -Product supported Pickup Modes List.\r\n * @returns List of StoreSelectorLocation Line.\r\n */\r\n private _getStoreLocationListProps(\r\n hasEnabledOutOfStockCheck: boolean,\r\n isStoreLocatorView: boolean,\r\n preferredStoreLocationId: string,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n selectedStoreLocationId: string | undefined,\r\n stores: IFullOrgUnitAvailability[] | null,\r\n preferredDistanceUnit?: string | undefined,\r\n alreadySelectedLocation?: OrgUnitLocation,\r\n productPickUpOptionList?: DeliveryOption[]\r\n ): IStoreSelectorLocationLineItemProps[] {\r\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\r\n if (ArrayExtensions.hasElements(stores)) {\r\n stores.map((store, index: number) => {\r\n const storeLineProps = this._createStoreLocationList(\r\n store,\r\n index,\r\n hasEnabledOutOfStockCheck,\r\n isStoreLocatorView,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n selectedStoreLocationId,\r\n preferredDistanceUnit,\r\n alreadySelectedLocation,\r\n productPickUpOptionList\r\n );\r\n if (storeLineProps) {\r\n storeList.push(storeLineProps);\r\n }\r\n });\r\n }\r\n return storeList;\r\n }\r\n\r\n /**\r\n * Initialize Map AutoSuggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n config: { autoSuggestOptions },\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n /**\r\n * Callback for the autosuggest API.\r\n */\r\n callback: () => {\r\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(\r\n `#ms-store-select__search-box_${this.props.id}`,\r\n `#ms-store-select__search-box-container_${this.props.id}`,\r\n this._onSuggestionSelected\r\n );\r\n },\r\n\r\n /**\r\n * Error call back for autosuggest API.\r\n */\r\n errorCallback: () => {\r\n if (telemetry) {\r\n telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: channel?.BingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * On Selecting Location Suggestion.\r\n * @param result - Map Suggestions List.\r\n */\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context && context.id === this.props.id) {\r\n await this._searchTermChanged(result.formattedSuggestion);\r\n await this._performSearch(result.formattedSuggestion);\r\n }\r\n };\r\n\r\n /**\r\n * On Selecting Preferred Store.\r\n * @param storeId - Store Id.\r\n */\r\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\r\n if (!storeId) {\r\n return;\r\n }\r\n\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n config: { mode },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations },\r\n availabilitiesWithHours: { result: availabilitiesWithHours }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n\r\n let stores: IFullOrgUnitAvailability[];\r\n if (modeDefault === modeEnum.findStores && storeLocations) {\r\n stores = storeLocations;\r\n } else {\r\n stores = availabilitiesWithHours!;\r\n }\r\n\r\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\r\n\r\n await storeSelectorStateManager.setPreferredStoreLocation(\r\n storeId,\r\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\r\n cookies.isConsentGiven(),\r\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\r\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\r\n );\r\n };\r\n\r\n /**\r\n * On Removing Preferred Store.\r\n */\r\n private readonly _removePreferredStore = async (): Promise => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\r\n };\r\n\r\n /**\r\n * Method called to close the store details modal that comes up on clicking the pushpin.\r\n * @returns Void promise.\r\n */\r\n private readonly _closeStoreDetailModal = async (): Promise => {\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\r\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\r\n };\r\n\r\n /**\r\n * On Selecting Store for pickup.\r\n * @param storeId - Store Id.\r\n */\r\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\r\n };\r\n\r\n /**\r\n * Method to be called on search.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _performSearch = async (searchTerm: string): Promise => {\r\n const {\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!searchTerm || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\r\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\r\n\r\n if (location) {\r\n await this._updateLocations(location.latitude, location.longitude);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n };\r\n\r\n /**\r\n * Method to be called on search term changed.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\r\n this.setState({ searchTerm });\r\n };\r\n\r\n /**\r\n * Method to be called updating the store location.\r\n * @param shouldShowAllStores - Flag to show all stores.\r\n */\r\n private readonly _getAndUpdateStoreLocation = async (shouldShowAllStores?: boolean): Promise => {\r\n const {\r\n config: { style },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n\r\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\r\n if (navigator?.geolocation) {\r\n // navigator.geolocation.getCurrentPosition(\r\n // async position => {\r\n // // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\r\n // this.setState({ isLocationDisabled: false, isSearchInProgress: true });\r\n // if (shouldShowAllStores) {\r\n // this.setState({ isSeeAllStoreValue: true });\r\n // await this._searchTermChanged('');\r\n // await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\r\n // } else {\r\n // await this._updateLocations(position.coords.latitude, position.coords.longitude);\r\n // }\r\n\r\n // // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n // this.setState({ isSearchInProgress: false });\r\n // },\r\n // async error => {\r\n // // If the location setting is turned off\r\n // if (error.PERMISSION_DENIED) {\r\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\r\n await this._searchTermChanged('');\r\n await this._updateLocations(0, 0, 0);\r\n // }\r\n\r\n // // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n // },\r\n // { timeout: 5000 }\r\n // );\r\n } else {\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called closing the store selector dialog.\r\n * @returns Void promise.\r\n */\r\n private readonly _closeDialog = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n this.setState({ searchTerm: '' });\r\n\r\n if (storeSelectorStateManager) {\r\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\r\n return storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n\r\n /**\r\n * Method to set store info.\r\n * @param orgUnitStoreInformation - Store Info Object.\r\n * @returns Void promise.\r\n */\r\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n config: { style },\r\n telemetry\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const context = storeSelectorStateManager.context;\r\n const moduleId: string = context?.id ? context.id : this.props.id;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n let input: IStoreSelectionStateContext = {\r\n /**\r\n * On Location selected.\r\n * @returns - Returns promise.\r\n */\r\n onLocationSelected: async () => {\r\n // TO-DO handle event for when location in selected\r\n return Promise.resolve();\r\n }\r\n };\r\n\r\n if (storeSelectorStateManager.context) {\r\n input = storeSelectorStateManager.context;\r\n }\r\n\r\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\r\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\r\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\r\n\r\n input = {\r\n ...input,\r\n id: moduleId,\r\n showMapViewLink: context?.showMapViewLink,\r\n parentElementRef: context?.parentElementRef,\r\n isDialog: styleDefault === styleEnum.dialog,\r\n orgUnitStoreInformation: storeLocationList,\r\n product: context?.product\r\n };\r\n\r\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\r\n if (telemetry) {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to Update store location state');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Method to update user location.\r\n * @param latitude - User location.\r\n * @param longitude - User location.\r\n * @param radius - Search Criteria Radius.\r\n * @returns Void promise.\r\n */\r\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\r\n const {\r\n config: { mode, lookupRadius, style, searchRadiusUnit },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\r\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\r\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\r\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\r\n if (styleDefault === styleEnum.inline) {\r\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n if (lastInlineStoreLocation && !this.state.searchTerm) {\r\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\r\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\r\n }\r\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\r\n }\r\n\r\n if (modeDefault === modeEnum.findStores) {\r\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\r\n return;\r\n }\r\n\r\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\r\n };\r\n\r\n /**\r\n * Get org unit location by area.\r\n * @param calRadius - Radius.\r\n * @param distanceUnitValue - Distance unit value.\r\n * @param latitude - Latitude.\r\n * @param longitude - Longitude.\r\n * @returns - Returns a void promise.\r\n */\r\n private readonly getOrgUnitLocationByArea = async (\r\n calRadius: number,\r\n distanceUnitValue: number,\r\n latitude?: number,\r\n longitude?: number\r\n ): Promise => {\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\r\n latitude,\r\n longitude,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\r\n if (orgUnitLocations) {\r\n await this._setOrgUnitStoreInformation(orgUnitLocations);\r\n await this._setSelectedStore(undefined);\r\n }\r\n };\r\n\r\n /**\r\n * Get full available inventory nearby.\r\n * @param calRadius - Radius.\r\n * @param distanceUnitValue - Distance unit value.\r\n * @param latitude - Latitude.\r\n * @param longitude - Longitude.\r\n * @returns - Returns a void promise.\r\n */\r\n private readonly getFullAvailableInventoryNearby = async (\r\n calRadius: number,\r\n distanceUnitValue: number,\r\n latitude?: number,\r\n longitude?: number\r\n ): Promise => {\r\n const {\r\n telemetry,\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n if (!storeSelectorStateManager.context.product) {\r\n // TODO: Use alternative search method here to not make inventory check\r\n return;\r\n }\r\n\r\n const input = new GetFullAvailableInventoryNearbyInput(\r\n storeSelectorStateManager.context.product.RecordId,\r\n latitude ?? 0,\r\n longitude ?? 0,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to get full available inventory near by');\r\n });\r\n };\r\n\r\n /**\r\n * Method to called on store selected.\r\n * @param location - Store Info.\r\n * @param deliveryMode - Pickup mode.\r\n * @returns Void promise.\r\n */\r\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\r\n const {\r\n telemetry,\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager) {\r\n if (location && storeSelectorStateManager.context) {\r\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\r\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch((error: any) => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to get on org unit location selected');\r\n });\r\n }\r\n\r\n await storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n\r\n /**\r\n * Method will list of store selector location line.\r\n * @param store -Store Info.\r\n * @param index - List index.\r\n * @param hasEnabledOutOfStockCheck -Stores List.\r\n * @param isStoreLocatorView -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @param isPreferredStoreEnabled -Stores List.\r\n * @param selectedStoreLocationId -Module config value.\r\n * @param preferredDistanceUnit -Module config value.\r\n * @param alreadySelectedLocation -Already Selected Location.\r\n * @param productPickUpOptionList -Product supported Pickup Modes List.\r\n * @returns StoreSelectorLocation Line Prop.\r\n */\r\n private _createStoreLocationList(\r\n store: IFullOrgUnitAvailability,\r\n index: number,\r\n hasEnabledOutOfStockCheck: boolean,\r\n isStoreLocatorView: boolean,\r\n preferredStoreLocationId: string,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n selectedStoreLocationId: string | undefined,\r\n preferredDistanceUnit?: string | undefined,\r\n alreadySelectedLocation?: OrgUnitLocation,\r\n productPickUpOptionList?: DeliveryOption[]\r\n ): IStoreSelectorLocationLineItemProps | undefined {\r\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocation = selectedStoreLocationId;\r\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\r\n const lineResources = this._mapResources(this.props.resources);\r\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom, lineResources);\r\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo, lineResources);\r\n const storeHours = store.StoreHours;\r\n\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return {\r\n location: orgUnitLocation,\r\n selectedStoreLocationId: selectedStoreLocation,\r\n storeHours,\r\n resources: lineResources,\r\n preferredDistanceUnit: preferredDistanceUnit!,\r\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\r\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\r\n stockStatusLabel: this._stockInventoryLabel(store),\r\n storeLocatorView: isStoreLocatorView,\r\n index: this.storeCounter.toString(),\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n telemetryContent: this.telemetryContent,\r\n isLocationDisabled: this.state.isLocationDisabled,\r\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\r\n productPickUpOptionList,\r\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\r\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\r\n onClick: this._setSelectedStore,\r\n handlers: {\r\n onSelected: this._onOrgUnitLocationSelected,\r\n onSetAsPreferredStore: this._setPreferredStore,\r\n onRemovePreferredStore: this._removePreferredStore,\r\n closeStoreDetailsModal: this._closeStoreDetailModal\r\n }\r\n };\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Method to map resources with Location Item.\r\n * @param resources - List of strings for module.\r\n * @returns Resources for StoreSelector location line.\r\n */\r\n private readonly _mapResources = (resources: ILdsFindStoreResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.pickupButtonText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n bopisStoreHeading: resources.bopisStoreHeading,\r\n timeAm: resources.timeAm,\r\n timePm: resources.timePm,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n\r\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\r\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\r\n\r\n /**\r\n * Method to get stock.\r\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\r\n * @param itemAvailabilities - Item quantity availability.\r\n * @returns Boolean value for item stock.\r\n */\r\n private readonly _isProductInStock = (\r\n hasEnableOutOfStockCheck: boolean,\r\n itemAvailabilities: ItemAvailability[] | undefined\r\n ): boolean => {\r\n if (!hasEnableOutOfStockCheck) {\r\n return true;\r\n }\r\n const quantityCount = 0;\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * Method to get stocklevel label.\r\n * @param isInStock - Stock available in store.\r\n * @returns Label for stock status.\r\n */\r\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\r\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\r\n if (\r\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n isInStock.ProductInventoryInformation[index].InventLocationId\r\n ) {\r\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n}\r\n\r\nexport default StoreSelector;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\r\nimport { IStoreSelectorViewProps } from './lds-find-store';\r\n\r\n// import { getCartState } from '@msdyn365-commerce/global-state';\r\n\r\n/**\r\n * Renders the pickup Delivery options.\r\n * @param props -- Selected store view props.\r\n * @returns -- HTML.\r\n */\r\nconst renderDeliveryOptions: React.FC = props => {\r\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\r\n\r\n return (\r\n <>\r\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\r\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the selected store.\r\n * @param props -- Selected store view props.\r\n * @returns -- HTML.\r\n */\r\nconst renderSelectedStore: React.FC = props => {\r\n const {\r\n storeDetailsMain,\r\n storeHeader,\r\n storeName,\r\n storeDetailsCloseButton,\r\n storeDetailsAvailabilityContainer,\r\n productAvailability,\r\n stockStatus,\r\n isCurrentLocation,\r\n currentLocation,\r\n isPreferredStore,\r\n preferredStoreButton,\r\n removePreferredStoreButton\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {storeDetailsCloseButton}\r\n {storeName}\r\n \r\n \r\n {productAvailability}\r\n {stockStatus}\r\n \r\n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\r\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the body of the popup.\r\n * @param props -- Store selector view props.\r\n * @returns -- Returns the html.\r\n */\r\nconst renderBody: React.FC = props => {\r\n // const [cart, setCart] = React.useState();\r\n const {\r\n BodyContainerProps,\r\n // locationsMessage,\r\n // search,\r\n state,\r\n spinner,\r\n locationsList,\r\n noLocationsMessage,\r\n // maps,\r\n bodyWrapperProps,\r\n storeResultContainerProps,\r\n isMobileView,\r\n storeDetailsModal,\r\n selectedLocation\r\n } = props;\r\n\r\n // const getCartStateAsync = async () => {\r\n // const cartState = await getCartState(props.context.actionContext);\r\n // // setCart(cartState);\r\n // return cartState;\r\n // };\r\n\r\n // React.useEffect(() => {\r\n // void getCartStateAsync();\r\n // }, [props.data.cartDetails]);\r\n\r\n if (isMobileView) {\r\n return (\r\n \r\n {/* {locationsMessage}\r\n {search} */}\r\n \r\n \r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\r\n {/* {maps} */}\r\n {selectedLocation && renderSelectedStore(selectedLocation)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {/* {cart && cart.cart.AmountDue === 0 ? locationsMessage : null}\r\n {(cart && cart.cart.AmountDue === 0) || props.context.request.telemetryPageName === 'CartPage' ? search : null} */}\r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\r\n \r\n {/* {maps} */}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Store selector view props.\r\n * @param props - Store selector view props.\r\n * @returns - HTML.\r\n */\r\nconst StoreSelectorView: React.FC = props => {\r\n const { FooterContainerProps, HeaderContainerProps, ModuleProps, terms } = props;\r\n // const { FooterContainerProps, HeaderContainerProps, HeaderProps, ModuleProps, terms } = props;\r\n\r\n return (\r\n \r\n \r\n {props.resources.findInStore}\r\n \r\n {renderBody(props)}\r\n {terms}\r\n \r\n );\r\n};\r\n\r\nexport default StoreSelectorView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ILdsFooterData } from './lds-footer.data';\r\nimport { ILdsFooterProps } from './lds-footer.props.autogenerated';\r\n\r\nexport interface ILdsFooterViewProps extends ILdsFooterProps {}\r\n\r\n/**\r\n *\r\n * LdsFooter component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass LdsFooter extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default LdsFooter;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nexport const FooterImageLink: React.FC = ({ Links }) => {\r\n // const footerImageLink = Links ? Links.footerImageLink : '';\r\n const footerImage = Links ? Links.image : '';\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\n// @ts-ignore\r\nimport { Text5 } from '@churchofjesuschrist/eden-text';\r\n\r\nconst SiteLinks: React.FC = ({ Links }) => {\r\n const contactUs = Links ? Links.contactLink : '';\r\n const help = Links ? Links.helpLink : '';\r\n const storeLocator = Links ? Links.storeLocator : '';\r\n const feedback = Links ? Links.feedbackLink : '';\r\n\r\n return (\r\n
\r\n \r\n {contactUs && contactUs.linkText ? contactUs.linkText : 'Contact Us'}\r\n \r\n \r\n {storeLocator && storeLocator.linkText ? storeLocator.linkText : 'Store Locator'}\r\n \r\n \r\n {help && help.linkText ? help.linkText : 'Help'}\r\n \r\n \r\n {feedback && feedback.linkText ? feedback.linkText : 'Feedback'}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SiteLinks;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nconst TermsAndConditions: React.FC = ({ salesAndRefundPolicy, impressum, salesTitle, impressumTitle, onClick }) => {\r\n return (\r\n
\r\n
\r\n \r\n salesAndRefundPolicy && salesAndRefundPolicy.PolicyType ? onClick(salesAndRefundPolicy.PolicyType) : ''\r\n }\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {salesTitle ||\r\n salesAndRefundPolicy?.DESCRIPTION ||\r\n salesAndRefundPolicy?.Description ||\r\n salesAndRefundPolicy?.PolicyType}\r\n \r\n
\r\n
\r\n (impressum && impressum.PolicyType ? onClick(impressum.PolicyType) : '')}\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {impressumTitle || impressum?.DESCRIPTION || impressum?.Description || impressum?.PolicyType}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TermsAndConditions;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport SiteLinks from './SiteLinks';\r\nimport TermsAndConditions from './TermsAndConditions';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nexport const FooterLinks: React.FC = ({\r\n salesAndRefundPolicy,\r\n Links,\r\n resources,\r\n config,\r\n impressum,\r\n impressumTitle,\r\n salesTitle,\r\n onClick,\r\n context\r\n}) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nconst TermsOfService: React.FC = ({ termsOfUse, privacyPolicy, termsTitle, privacyTitle, onClick }) => {\r\n return (\r\n
\r\n (termsOfUse && termsOfUse.PolicyType ? onClick(termsOfUse.PolicyType) : '')}\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {termsTitle || termsOfUse?.DESCRIPTION || termsOfUse?.Description || termsOfUse?.PolicyType}\r\n \r\n (privacyPolicy && privacyPolicy.PolicyType ? onClick(privacyPolicy.PolicyType) : '')}\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {privacyTitle || privacyPolicy?.DESCRIPTION || privacyPolicy?.Description || privacyPolicy?.PolicyType}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TermsOfService;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n// @ts-ignore\r\nimport { Text5 } from '@churchofjesuschrist/eden-text';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst CopyRight: React.FC = ({ resources }) => {\r\n const currentDate = new Date();\r\n\r\n const currentYear = currentDate.getFullYear();\r\n\r\n const currentYearString = currentYear.toString();\r\n\r\n const copyRightText = format(resources.copyRight, currentYearString);\r\n\r\n return (\r\n
\r\n
\r\n

{copyRightText}

\r\n
\r\n
\r\n

{resources.allRightsReserved}

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CopyRight;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\nimport TermsOfService from './TermsOfService';\r\nimport CopyRight from './CopyRight';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nexport const FooterLegal: React.FC = ({\r\n termsOfUse,\r\n privacyPolicy,\r\n resources,\r\n config,\r\n privacyTitle,\r\n termsTitle,\r\n onClick\r\n}) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ILdsFooterViewProps } from './lds-footer';\r\nimport { FooterImageLink } from './components/FooterImageLink';\r\nimport { FooterLinks } from './components/FooterLinks';\r\nimport { FooterLegal } from './components/FooterLegal';\r\nimport { lDSPublisherPolicyAsync } from '../../actions/DataActionExtension.g';\r\n\r\nexport default (props: ILdsFooterViewProps) => {\r\n // const [policyInfo, setPolicyInfo] = React.useState();\r\n const [privacyInfo, setPrivacyInfo] = React.useState();\r\n const [privacyTitle, setPrivacyTitle] = React.useState();\r\n const [salesInfo, setSalesInfo] = React.useState();\r\n const [salesTitle, setSalesTitle] = React.useState();\r\n const [termsInfo, setTermsInfo] = React.useState();\r\n const [termsTitle, setTermsTitle] = React.useState();\r\n const [impressumInfo, setImpressumInfo] = React.useState();\r\n const [impressumTitle, setImpressumTitle] = React.useState();\r\n const policies: any = props.data.policy?.result;\r\n\r\n let privacyPolicy: any;\r\n let salesAndRefundPolicy: any;\r\n let termsOfUse: any;\r\n let impressum: any;\r\n const Links = props.config;\r\n\r\n const PRIVACY_POLICY_ID = process.env.PRIVACY_POLICY_ID;\r\n const SALES_AND_REFUND_ID = process.env.SALES_AND_REFUND_ID;\r\n const TERMS_OF_USE_ID = process.env.TERMS_OF_USE_ID;\r\n\r\n //CRP 1\r\n // const privacyPolicy = 5637145327\r\n // const salesAndRefundPolicy = 5637144576\r\n // const termsOfUse = 5637145326\r\n\r\n //CRP 2\r\n // const privacyPolicy = 5637149076\r\n // const salesAndRefundPolicy = 5637149077\r\n // const termsOfUse = 5637149078\r\n\r\n policies?.map((policy: any) => {\r\n if (\r\n policy.Id === parseInt(PRIVACY_POLICY_ID || '', 10) ||\r\n policy.POLICYTYPE?.includes('Privacy Notice') ||\r\n policy.PolicyType?.includes('Privacy Notice')\r\n ) {\r\n privacyPolicy = policy;\r\n }\r\n if (\r\n policy.Id === parseInt(SALES_AND_REFUND_ID || '', 10) ||\r\n policy.POLICYTYPE?.includes('Sales and Refund') ||\r\n policy.PolicyType?.includes('Sales and Refund') ||\r\n policy.PolicyType?.includes('Sales & Refund') ||\r\n policy.PolicyType?.includes('Terms of Use and Sale')\r\n ) {\r\n salesAndRefundPolicy = policy;\r\n }\r\n if (\r\n policy.Id === parseInt(TERMS_OF_USE_ID || '', 10) ||\r\n policy.POLICYTYPE?.includes('Global Terms of Use') ||\r\n policy.PolicyType?.includes('Global Terms of Use') ||\r\n policy.PolicyType?.includes('Return Policy')\r\n ) {\r\n termsOfUse = policy;\r\n }\r\n if (policy.POLICYTYPE?.includes('Impressum') || policy.PolicyType?.includes('Impressum')) {\r\n impressum = policy;\r\n }\r\n });\r\n\r\n const getSalesData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('salesData', results.Title || '');\r\n setSalesInfo(results);\r\n } else {\r\n sessionStorage.setItem('salesData', '');\r\n setSalesInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n const getTermsData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('termsData', results.Title || '');\r\n setTermsInfo(results);\r\n } else {\r\n sessionStorage.setItem('termsData', '');\r\n setTermsInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n const getPrivacyData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('privacyData', results.Title || '');\r\n setPrivacyInfo(results);\r\n } else {\r\n sessionStorage.setItem('privacyData', '');\r\n setPrivacyInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n const getImpressumData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('impressumData', results.Title || '');\r\n setImpressumInfo(results);\r\n } else {\r\n sessionStorage.setItem('impressumData', '');\r\n setImpressumInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n\r\n React.useEffect(() => {\r\n const salesInfo = sessionStorage.getItem('salesData');\r\n const impressumInfo = sessionStorage.getItem('impressumData');\r\n const termsInfo = sessionStorage.getItem('termsData');\r\n const privacyInfo = sessionStorage.getItem('privacyData');\r\n const countryInfo = sessionStorage.getItem('countryFooter');\r\n const localeInfo = sessionStorage.getItem('localeFooter');\r\n\r\n if (\r\n salesAndRefundPolicy &&\r\n termsOfUse &&\r\n privacyPolicy &&\r\n impressum &&\r\n !salesInfo &&\r\n !termsInfo &&\r\n !privacyInfo &&\r\n !salesInfo &&\r\n !impressumInfo\r\n ) {\r\n sessionStorage.setItem('localeFooter', props.context.request.locale);\r\n sessionStorage.setItem('countryFooter', JSON.stringify(props.context.request.channel?.CountryRegionId));\r\n void getSalesData(salesAndRefundPolicy.PolicyType);\r\n void getTermsData(termsOfUse.PolicyType);\r\n void getPrivacyData(privacyPolicy.PolicyType);\r\n void getImpressumData(impressum.PolicyType);\r\n } else if (salesAndRefundPolicy && termsOfUse && privacyPolicy && !salesInfo && !termsInfo && !privacyInfo && !salesInfo) {\r\n void getSalesData(salesAndRefundPolicy.PolicyType);\r\n void getTermsData(termsOfUse.PolicyType);\r\n void getPrivacyData(privacyPolicy.PolicyType);\r\n } else if (\r\n localeInfo !== props.context.request.locale ||\r\n countryInfo !== JSON.stringify(props.context.request.channel?.CountryRegionId)\r\n ) {\r\n sessionStorage.setItem('localeFooter', props.context.request.locale);\r\n sessionStorage.setItem('countryFooter', JSON.stringify(props.context.request.channel?.CountryRegionId));\r\n if (salesAndRefundPolicy) {\r\n void getSalesData(salesAndRefundPolicy.PolicyType);\r\n } else {\r\n sessionStorage.setItem('salesData', '');\r\n }\r\n if (termsOfUse) {\r\n void getTermsData(termsOfUse.PolicyType);\r\n } else {\r\n sessionStorage.setItem('termsData', '');\r\n }\r\n if (privacyPolicy) {\r\n void getPrivacyData(privacyPolicy.PolicyType);\r\n } else {\r\n sessionStorage.setItem('privacyData', '');\r\n }\r\n if (impressum) {\r\n void getImpressumData(impressum.PolicyType);\r\n } else {\r\n sessionStorage.setItem('impressumData', '');\r\n }\r\n }\r\n if (salesInfo) {\r\n setSalesTitle(salesInfo);\r\n } else {\r\n setSalesTitle('');\r\n }\r\n if (termsInfo) {\r\n setTermsTitle(termsInfo);\r\n } else {\r\n setTermsTitle('');\r\n }\r\n if (privacyInfo) {\r\n setPrivacyTitle(privacyInfo);\r\n } else {\r\n setPrivacyTitle('');\r\n }\r\n if (impressumInfo) {\r\n setImpressumTitle(impressumInfo);\r\n } else {\r\n setImpressumTitle('');\r\n }\r\n }, [salesInfo, termsInfo, privacyInfo, impressumInfo]);\r\n\r\n const onClick = async (policyType: string) => {\r\n const encodedString = encodeURIComponent(policyType);\r\n\r\n window.open(`${window.location.origin}${props.context.request.sitePath}/termsandconditions?policy=${encodedString}`);\r\n };\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {/* {cartLine.addToWishlist} */}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {/* {cartLine.addToWishlist} */}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {/* {props.promoCode} */}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {/* {props.backToShoppingButton} */}\r\n {/*@ts-ignore */}\r\n \r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./checkout-customer-account-payment';\r\nimport {\r\n IAccountPaymentEditViewForm,\r\n IGetAccountPaymentEditViewFormInput\r\n} from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./components/get-account-payment-form-edit-mode';\r\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./components/get-account-payment-form-summary-mode';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\nimport styled from 'styled-components';\r\n\r\nexport const SummaryForm: React.FC = ({\r\n formProps,\r\n label,\r\n paymentAmount,\r\n addPaymentButton,\r\n appliedLine,\r\n bottomBorder\r\n}) => (\r\n \r\n <>\r\n {label}\r\n {paymentAmount}\r\n {addPaymentButton}\r\n {appliedLine}\r\n {bottomBorder}\r\n \r\n \r\n);\r\n\r\nexport interface EditFormProps {\r\n accountForm: IAccountPaymentEditViewForm;\r\n submitProps?: IGetAccountPaymentEditViewFormInput;\r\n}\r\ninterface IEditFormExtended extends IAccountPaymentEditViewForm {\r\n paymentLabel?: string;\r\n paymentApplied?: string;\r\n}\r\n\r\nexport const EditForm: React.FC = ({\r\n formProps,\r\n addPaymentButton,\r\n alert,\r\n accountDetails,\r\n appliedLine,\r\n bottomBorder,\r\n paymentLabel,\r\n paymentApplied\r\n}) => {\r\n const PaymentButtonLabel = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: flex-end;\r\n margin-top: 15px;\r\n `;\r\n return (\r\n \r\n <>\r\n
\r\n \r\n {alert}\r\n {/*@ts-ignore */}\r\n {paymentLabel}\r\n \r\n {appliedLine ?
{paymentApplied}
: null}\r\n {/* {appliedLine} */}\r\n
\r\n {accountDetails}\r\n {bottomBorder}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst CheckoutCustomerAccountView: React.FC = props => {\r\n // const { checkoutCustomerAccount, summaryView, editView, moduleState } = props;\r\n const { checkoutCustomerAccount, editView } = props;\r\n //@ts-ignore\r\n const paymentLabel = props.resources.applyPaymentLabel;\r\n //@ts-ignore\r\n const paymentApplied = props.resources.paymentApplied;\r\n return (\r\n \r\n {/* {moduleState.isReady && summaryView && } */}\r\n {editView && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutCustomerAccountView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { ReactNode } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\n// import { IFooterCategoryViewProps } from '@msdyn365-commerce-modules/footer/src/modules/footer-category/./footer-category';\r\nimport { IFooterCategoryViewProps } from './IFooterCategoryConfig';\r\n\r\nconst Division = styled.hr`\r\n margin-bottom: 61px;\r\n`;\r\n\r\nexport const FooterCategoryView: React.FC = props => {\r\n const { categories, FooterList, FooterListItem, data } = props;\r\n const policies = data.policy.result;\r\n\r\n if (!categories || categories.length === 0) {\r\n props.context.telemetry.error('Footer content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n let privacyPolicy: any;\r\n let salesAndRefundPolicy: any;\r\n let termsOfUse: any;\r\n\r\n policies?.map(policy => {\r\n if (policy.Id === 5637145327) {\r\n privacyPolicy = policy;\r\n }\r\n if (policy.Id === 5637144576) {\r\n salesAndRefundPolicy = policy;\r\n }\r\n if (policy.Id === 5637145326) {\r\n termsOfUse = policy;\r\n }\r\n });\r\n\r\n return (\r\n \r\n {categories.map((category: ReactNode, index: number) => {\r\n return (\r\n \r\n {category}\r\n \r\n );\r\n })}\r\n \r\n {salesAndRefundPolicy?.DESCRIPTION}\r\n \r\n \r\n \r\n {termsOfUse?.DESCRIPTION}\r\n \r\n \r\n {privacyPolicy?.DESCRIPTION}\r\n \r\n \r\n \r\n \r\n Cookie Preferences\r\n \r\n \r\n
© 2024 by Intellectual Reserve, Inc. All rights reserved.
\r\n
\r\n );\r\n};\r\n\r\nexport default FooterCategoryView;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport AnimateHeight from \"react-animate-height\";\r\n\r\nconst noop = x => x;\r\n\r\nconst Collapse = ({\r\n expand = false,\r\n minHeight = \"0px\",\r\n children,\r\n onAnimationStart = noop,\r\n onAnimationEnd = noop,\r\n ...props\r\n}) => {\r\n const height = expand ? \"auto\" : parseInt(minHeight);\r\n return /*#__PURE__*/React.createElement(\"div\", props, /*#__PURE__*/React.createElement(AnimateHeight, {\r\n onAnimationStart: onAnimationStart,\r\n onAnimationEnd: onAnimationEnd,\r\n duration: 80,\r\n easing: expand ? \"ease-in\" : \"ease-out\",\r\n height: height\r\n }, children));\r\n};\r\n\r\nCollapse.propTypes = {\r\n /** Content that can be collapsed */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** Whether the content is collapsed */\r\n expand: PropTypes.bool,\r\n\r\n /** The minimum height (in pixels) of the content when collapsed */\r\n minHeight: PropTypes.string,\r\n\r\n /** Callback after animation starts */\r\n onAnimationStart: PropTypes.func,\r\n\r\n /** Callback after animation finishes */\r\n onAnimationEnd: PropTypes.func\r\n};\r\nexport default Collapse;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Collapse from \"../../../../eden-collapse\";\r\n\r\nconst Details = _ref => {\r\n let {\r\n open,\r\n children,\r\n onToggle,\r\n ...props\r\n } = _ref;\r\n const detailsRef = useRef(null);\r\n const [expand, setExpand] = useState(props.open);\r\n const [internalOpen, setInternalOpen] = useState(props.open);\r\n const childrenArray = React.Children.toArray(children);\r\n const summary = childrenArray.shift();\r\n useEffect(() => {\r\n const cleanUp = internalOnToggle({}, open);\r\n return () => {\r\n cleanUp();\r\n };\r\n }, [open]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n useEffect(() => {\r\n setExpand(internalOpen);\r\n }, [internalOpen]);\r\n\r\n const internalOnToggle = (event, nextOpen) => {\r\n let timeout;\r\n\r\n if (nextOpen) {\r\n timeout = setTimeout(() => {\r\n setInternalOpen(true);\r\n });\r\n } else {\r\n if (expand) {\r\n var _event$preventDefault;\r\n\r\n (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 ? void 0 : _event$preventDefault.call(event);\r\n setExpand(false);\r\n } else {\r\n timeout = setTimeout(() => {\r\n setInternalOpen(false);\r\n });\r\n }\r\n } // Return a clean up function\r\n\r\n\r\n return () => clearTimeout(timeout);\r\n };\r\n\r\n return /*#__PURE__*/React.createElement(\"details\", _extends({\r\n ref: detailsRef,\r\n open: internalOpen,\r\n onToggle: event => {\r\n event.stopPropagation();\r\n onToggle === null || onToggle === void 0 ? void 0 : onToggle(event);\r\n }\r\n }, props), summary.props.onClick ? summary : /*#__PURE__*/React.cloneElement(summary, {\r\n onClick: event => {\r\n internalOnToggle(event, !internalOpen);\r\n }\r\n }), /*#__PURE__*/React.createElement(Collapse, {\r\n expand: expand,\r\n minHeight: \"0px\",\r\n onAnimationEnd: () => {\r\n if (!expand) {\r\n detailsRef.current.querySelector(\"summary\").click();\r\n }\r\n }\r\n }, childrenArray));\r\n};\r\n\r\nDetails.propTypes = {\r\n /** Contents rendered inside the details. First child must be a `` element. */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** Whether details is open */\r\n open: PropTypes.bool,\r\n\r\n /** Handler called after a toggle occurs. Use `event.target.open` to get the current `open` state of the `Details`.*/\r\n onToggle: PropTypes.func\r\n};\r\nexport default Details;","import { css } from \"styled-components\";\r\nimport { spacing8, blue10, info10, info40, text120, white } from \"../../../../eden-style-constants\";\r\nconst shared = css([\"color:\", \";& >:first-child{margin-block-start:0;}& >:last-child{margin-block-end:0;}& >:first-child >:first-child{margin-block-start:0;}& >:last-child >:last-child{margin-block-end:0;}& ol,& ul{& li:not(:last-child){margin-block-end:\", \";}}& ol{list-style-type:decimal;& ol{list-style-type:upper-latin;& ol{list-style-type:upper-roman;& ol{list-style-type:lower-latin;}}}}& ul{list-style-type:disc;& ul{list-style-type:circle;& ul{list-style-type:square;}}}& a{color:\", \";text-decoration:underline;}& a:hover{color:\", \";text-decoration-color:\", \";}\"], ({\r\n inverted\r\n}) => inverted ? white : text120, spacing8, ({\r\n inverted\r\n}) => inverted ? blue10 : info40, ({\r\n inverted\r\n}) => inverted ? white : text120, ({\r\n inverted\r\n}) => inverted ? blue10 : info10);\r\nexport default shared;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { sans as zoram, lineHeightLoose, fontSize16, fontWeightNormal, fontWeightBold } from \"../../../../eden-style-constants\";\r\nimport shared from \"./shared\";\r\nconst Container3 = styled.div.withConfig({\r\n componentId: \"sc-1szn76m-0\"\r\n})([\"font-family:\", \";font-weight:\", \";line-height:\", \";font-size:\", \";\", \";& b,& strong{font-weight:\", \";}\"], zoram, fontWeightNormal, lineHeightLoose, fontSize16, shared, fontWeightBold);\r\n\r\nconst Text3 = ({\r\n children,\r\n as = \"div\",\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(Container3, _extends({\r\n as: as\r\n}, props), children);\r\n\r\nText3.propTypes = {\r\n /** Content */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** What html tag or custom react element to render the text as */\r\n as: PropTypes.node\r\n};\r\nexport default Text3;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { spacing24, spacing48, grey5 } from \"../../../../eden-style-constants\";\r\nimport { Details } from \"../../../../eden-details\";\r\nimport { Text3 } from \"../../../../eden-text\";\r\nconst Wrapper = styled(Details).withConfig({\r\n componentId: \"sc-58af31-0\"\r\n})([\"border-block-end:1px solid \", \";\"], grey5);\r\nconst Content = styled(Text3).withConfig({\r\n componentId: \"sc-58af31-1\"\r\n})([\"padding-inline-start:\", \";padding-inline-end:\", \";padding-block-end:\", \";\"], \"0rem\", \"0rem\", spacing48);\r\n\r\nconst Drawer = _ref => {\r\n let {\r\n open,\r\n onToggle,\r\n children,\r\n ...props\r\n } = _ref;\r\n const childrenArray = React.Children.toArray(children);\r\n const summary = childrenArray.shift();\r\n return /*#__PURE__*/React.createElement(Wrapper, _extends({\r\n as: Details,\r\n onToggle: onToggle,\r\n open: open\r\n }, props), summary, /*#__PURE__*/React.createElement(Content, null, childrenArray));\r\n};\r\n\r\nDrawer.propTypes = {\r\n /** Contents rendered inside the details. First child needs to be an `eden-drawer` `` element. */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** Whether details is open */\r\n open: PropTypes.bool,\r\n\r\n /** Handler called after a toggle occurs. Use `event.target.open` to get the current `open` state of the `Drawer`. */\r\n onToggle: PropTypes.func\r\n};\r\nexport default Drawer;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled, { css } from \"styled-components\";\r\nimport { sans as zoram, fontSize18, lineHeightTight, fontWeightSemiBold } from \"../../../../eden-style-constants\";\r\nexport const internalUseOnlyPriority4 = css([\"margin:0;font-family:\", \";font-weight:\", \";font-size:\", \";line-height:\", \";\"], zoram, fontWeightSemiBold, fontSize18, lineHeightTight);\r\nconst H4Styled = styled.h4.withConfig({\r\n componentId: \"sc-12mz36o-0\"\r\n})([\"\", \";\"], internalUseOnlyPriority4);\r\n\r\nconst H4 = ({\r\n children,\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(H4Styled, props, children);\r\n\r\nexport default H4;\r\nH4.propTypes = {\r\n /** Content inside heading */\r\n children: PropTypes.node.isRequired\r\n};","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { internalUseOnlyPriority4 } from \"./H4\";\r\nconst Title4Styled = styled.div.withConfig({\r\n componentId: \"sc-1dcwt4x-0\"\r\n})([\"\", \";\"], internalUseOnlyPriority4);\r\n/**\r\n * Titles are styled to be parents of text. A title style may or may not correspond directly with an HTML heading (H1, H2, etc).\r\n */\r\n\r\nconst Title4 = ({\r\n children,\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(Title4Styled, props, children);\r\n\r\nexport default Title4;\r\nTitle4.propTypes = {\r\n /** Content inside title */\r\n children: PropTypes.node.isRequired\r\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\n// DO NOT EDIT THIS FILE BECAUSE IT IS GENERATED AUTOMATICALLY\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst ChevronDown = ({\r\n size = \"1em\",\r\n color = \"currentColor\",\r\n title,\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({}, props, {\r\n style: {\r\n width: size,\r\n height: size\r\n },\r\n viewBox: \"0 0 24 24\",\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n role: title ? 'img' : 'presentation'\r\n}), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, \" \", /*#__PURE__*/React.createElement(\"path\", {\r\n fill: color,\r\n d: \"M11.462 16.223a.75.75 0 0 0 1.076 0l5.25-5.4a.75.75 0 0 0-1.076-1.046l-4.71 4.85-4.714-4.85a.75.75 0 1 0-1.076 1.046l5.25 5.4z\"\r\n}, \" \"));\r\n\r\nChevronDown.propTypes = {\r\n /** The width/height of the icon as any CSS size unit */\r\n size: PropTypes.string,\r\n\r\n /** The fill color of the icon as any CSS color value */\r\n color: PropTypes.string,\r\n\r\n /** The title to add as a child of the root svg element */\r\n title: PropTypes.string\r\n};\r\nexport default ChevronDown;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled, { css } from \"styled-components\";\r\nimport { lineHeightTight } from \"../../../../eden-style-constants\";\r\nimport { ChevronDown as ChevDown } from \"../../../../eden-icons\";\r\nconst base = css([\"line-height:\", \";\"], lineHeightTight);\r\nconst Chevron = styled(ChevDown).withConfig({\r\n componentId: \"sc-cvfmde-0\"\r\n})([\"\", \";details[open] > summary &&{transform:rotate(180deg);}\"], base);\r\nconst HandleOuter = styled.summary.withConfig({\r\n componentId: \"sc-cvfmde-1\"\r\n})([\"display:block;cursor:pointer;width:100%;list-style:none;&::-webkit-details-marker{display:none;}\"]);\r\nconst FlexWrapper = styled.div.withConfig({\r\n componentId: \"sc-cvfmde-2\"\r\n})([\"display:flex;justify-content:space-between;align-items:center;\"]);\r\n\r\nconst Summary = _ref => {\r\n let {\r\n children,\r\n ...props\r\n } = _ref;\r\n return /*#__PURE__*/React.createElement(HandleOuter, props, /*#__PURE__*/React.createElement(FlexWrapper, null, children, /*#__PURE__*/React.createElement(Chevron, {\r\n size: \"1.5rem\"\r\n })));\r\n};\r\n\r\nSummary.propTypes = {\r\n /** Contents rendered inside the Summary */\r\n children: PropTypes.node.isRequired\r\n};\r\nexport default Summary;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { spacing16, spacing24, grey2, info40, info60, text120 } from \"../../../../eden-style-constants\";\r\nimport { Title4 } from \"../../../../eden-headings\";\r\nimport { Summary as EdenSummary } from \"../../../../eden-details\";\r\nconst HandleOuter = styled(EdenSummary).withConfig({\r\n componentId: \"sc-1rgj0tw-0\"\r\n})([\"padding-inline-start:\", \";padding-inline-end:\", \";color:\", \";&:hover{text-decoration:underline 1px solid \", \";background:\", \";}details[open] > &&{text-decoration:none;color:\", \";background:none;}\"], spacing24, spacing16, info40, info60, grey2, text120);\r\nconst Title = styled(Title4).withConfig({\r\n componentId: \"sc-1rgj0tw-1\"\r\n})([\"display:inline-block;margin:0;padding:\", \" 0;text-align:start;width:100%;padding-inline-end:\", \";\"], spacing24, spacing16);\r\n\r\nconst Summary = _ref => {\r\n let {\r\n children,\r\n ...props\r\n } = _ref;\r\n return /*#__PURE__*/React.createElement(HandleOuter, props, /*#__PURE__*/React.createElement(Title, null, children));\r\n};\r\n\r\nSummary.propTypes = {\r\n /** Contents rendered inside the Summary */\r\n children: PropTypes.node.isRequired\r\n};\r\nexport default Summary;","import styled from 'styled-components';\r\n\r\nexport const Table = styled.table`\r\n font-family: arial, sans-serif;\r\n border-collapse: collapse;\r\n width: 100%;\r\n`;\r\n\r\nexport const TdName = styled.td`\r\n font-weight: bold;\r\n border-bottom: 1px solid #dddddd;\r\n text-align: left;\r\n padding: 8px;\r\n`;\r\n\r\nexport const TdValue = styled.td`\r\n border-bottom: 1px solid #dddddd;\r\n text-align: left;\r\n padding: 8px;\r\n`;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n// @ts-ignore\r\nimport { Drawer, Summary } from '../../../eden/eden-drawer';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\nimport { Table, TdName, TdValue } from './product-specification.styled';\r\n\r\nimport { getProductSizeChartAsync } from '../../../actions/DataActionExtension.g';\r\n\r\nconst ProductSpecTable = (props: { specs: ProductSpecification[] }) => {\r\n return (\r\n \r\n {props.specs.map((spec: ProductSpecification) => (\r\n \r\n {spec.Name}\r\n {spec.TextValue}\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\ninterface ProductSpecification {\r\n Name: string;\r\n TextValue: string;\r\n}\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n const [sizingChartCustom, setSizingChartCustom] = React.useState();\r\n const [currentSku, setCurrentSku] = React.useState();\r\n const [longDescriptionValue, setLongDescriptionValue] = React.useState();\r\n // const [query, setQuery] = React.useState();\r\n\r\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps } = props;\r\n const drawerSummaries = [];\r\n const sizingChartAsync = async () => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n let sizingChartApi: any;\r\n sizingChartApi = await getProductSizeChartAsync(\r\n ctx,\r\n //@ts-ignore\r\n props.data.product.result.MasterProductId ? props.data.product.result.MasterProductId : props.data.product.result.RecordId,\r\n props.context.request.locale\r\n ).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (sizingChartApi && sizingChartApi.SizeChart === '') {\r\n sessionStorage.setItem('sizingChart', 'false');\r\n } else {\r\n sessionStorage.setItem('sizingChart', 'true');\r\n }\r\n\r\n setSizingChartCustom(sizingChartApi);\r\n };\r\n\r\n let productSku: any;\r\n let productNum: any;\r\n\r\n React.useEffect(() => {\r\n //@ts-ignore\r\n if (props.data && props.data.product && props.data.product.result) {\r\n sizingChartAsync();\r\n }\r\n }, []);\r\n\r\n // @ts-ignore\r\n const productSpecificationData = props.data?.productSpecificationData?.result;\r\n // @ts-ignore\r\n const productLongDescription = props.data?.product?.result?.ExtensionProperties;\r\n // const longDescription: string[] = productSpecificationData\r\n // .filter((x: { ExtensionProperties: any[] }) =>\r\n // x.ExtensionProperties.find(y => y.Key === 'AttributeType' && y.Value.IntegerValue === 1)\r\n // )\r\n // .map((z: ProductSpecification) => z.TextValue);\r\n const longDescription: string[] = productLongDescription\r\n .filter((x: any) => {\r\n return x.Key === 'LongDescription';\r\n })\r\n .map((z: any) => {\r\n return z.Value.StringValue;\r\n });\r\n\r\n if (!longDescriptionValue && longDescription) {\r\n setLongDescriptionValue(longDescription);\r\n }\r\n\r\n const sizingChart: string[] = productSpecificationData\r\n .filter((x: { ExtensionProperties: any[] }) =>\r\n x.ExtensionProperties.find(y => y.Key === 'AttributeType' && y.Value.IntegerValue === 2)\r\n )\r\n .map((z: ProductSpecification) => z.TextValue);\r\n\r\n const productSpec: ProductSpecification[] = productSpecificationData\r\n .filter((x: { ExtensionProperties: any[] }) =>\r\n x.ExtensionProperties.find(y => y.Key === 'AttributeType' && y.Value.IntegerValue === 4)\r\n )\r\n .map((z: ProductSpecification) => {\r\n return {\r\n Name: z.Name,\r\n TextValue: z.TextValue\r\n };\r\n });\r\n\r\n React.useEffect(() => {\r\n if (!productSku) {\r\n productSku = sessionStorage.getItem('productSku');\r\n }\r\n if (!productNum) {\r\n productNum = productSpec.filter((item: any) => {\r\n return item.Name === 'Item number';\r\n });\r\n }\r\n if (\r\n productNum &&\r\n productNum[0] &&\r\n productNum[0].TextValue &&\r\n !productNum[0].TextValue.includes('PI') &&\r\n currentSku !== productNum[0].TextValue\r\n ) {\r\n const categoriesArray = window.sessionStorage.getItem('ProductCategory');\r\n const category = categoriesArray ? categoriesArray.split(',')[0] : '';\r\n //@ts-ignore\r\n const { Name, RecordId, Dimensions, ItemId } = props.data.product.result;\r\n const language = Dimensions?.filter((dimension: any) => {\r\n return dimension.DimensionTypeValue === 4;\r\n });\r\n const Style = Dimensions?.filter((dimension: any) => {\r\n return dimension.DimensionTypeValue === 1;\r\n });\r\n const Size = Dimensions?.filter((dimension: any) => {\r\n return dimension.DimensionTypeValue === 3;\r\n });\r\n\r\n const info = {\r\n sku: productNum[0].TextValue ? productNum[0].TextValue : '',\r\n id: ItemId,\r\n name: Name,\r\n language: language && language[0] && language[0].DimensionValue ? language[0].DimensionValue.Value : '',\r\n style: Style && Style[0] && Style[0].DimensionValue ? Style[0].DimensionValue.Value : '',\r\n size: Size && Size[0] && Size[0].DimensionValue ? Size[0].DimensionValue.Value : ''\r\n };\r\n // @ts-ignore\r\n if (window && window['digitalData']) {\r\n // @ts-ignore\r\n window['digitalData'].push({\r\n event: 'Product View',\r\n product: [\r\n {\r\n info,\r\n category: {\r\n primary: category\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n setCurrentSku(productNum[0].TextValue);\r\n sessionStorage.setItem('productSku', productNum[0].TextValue);\r\n }\r\n }, [productSpec]);\r\n\r\n if (longDescription && longDescriptionValue && ArrayExtensions.hasElements(longDescription)) {\r\n drawerSummaries.push({\r\n // @ts-ignore\r\n title: props.resources.productDetailsLabel,\r\n content: (\r\n \r\n \r\n {/* {longDescription} */}\r\n \r\n {' '}\r\n
{' '}\r\n \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n if (productSpec && ArrayExtensions.hasElements(productSpec)) {\r\n drawerSummaries.push({\r\n // @ts-ignore\r\n title: props.resources.specificationsLabel,\r\n content: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n if (sizingChart && ArrayExtensions.hasElements(sizingChart)) {\r\n drawerSummaries.push({\r\n // @ts-ignore\r\n title: props.resources.sizingChartLabel,\r\n content: (\r\n \r\n \r\n {/* {sizingChart} */}\r\n {/* Sizing Chart Table */}\r\n {/*
*/}\r\n\r\n {sizingChartCustom && (\r\n \r\n )}\r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n const [openIndex, setOpenIndex] = React.useState();\r\n const [open, setOpen] = React.useState(false);\r\n // const [index, setIndex] = React.useState();\r\n\r\n React.useEffect(() => {\r\n const handleURLChange = () => {\r\n // setQuery(window.location.search);\r\n if (window.location.search.includes('show')) {\r\n handleToggleCustom(true);\r\n }\r\n // handleToggle('', index);\r\n // console.log('open index: ', openIndex);\r\n };\r\n\r\n window.addEventListener('popstate', handleURLChange);\r\n\r\n return () => {\r\n window.removeEventListener('popstate', handleURLChange);\r\n };\r\n }, []);\r\n\r\n const handleToggleCustom = (boolean?: boolean) => {\r\n if (boolean) {\r\n setOpen(boolean);\r\n } else {\r\n setOpen(true);\r\n }\r\n };\r\n const handleToggle = (event: any, index: any) => {\r\n if (event.target.open) {\r\n setOpenIndex(index);\r\n }\r\n };\r\n\r\n let productAuth;\r\n if (productSpecificationData) {\r\n productAuth = productSpecificationData.filter((attribute: any) => {\r\n return attribute.Name === 'Endowment' || attribute.Name === 'Temple' || attribute.Name === 'Recommend';\r\n });\r\n }\r\n let authRequired;\r\n if (productAuth) {\r\n authRequired = productAuth.map((attribute: any) => {\r\n return attribute.TextValue.includes('YES') ? true : false;\r\n });\r\n }\r\n\r\n const USE_VIEW_RESTRICTIONS = process.env.USE_VIEW_RESTRICTIONS;\r\n\r\n if (parseInt(USE_VIEW_RESTRICTIONS || '', 10) === 1 && authRequired.includes(true) && !props.context.request.user.isAuthenticated) {\r\n return
{''}
;\r\n } else {\r\n return drawerSummaries && ArrayExtensions.hasElements(drawerSummaries) ? (\r\n <>\r\n {/* {drawerSummaries.map((summary, index) => (\r\n handleToggle(event, index)} key={index}>\r\n {summary.title}\r\n {summary.content}\r\n \r\n ))} */}\r\n {drawerSummaries.map((summary, index) => {\r\n // @ts-ignore\r\n if (summary.title === props.resources.sizingChartLabel) {\r\n return (\r\n handleToggleCustom(!open)} key={index}>\r\n {summary.title}\r\n {summary.content}\r\n \r\n );\r\n } else {\r\n return (\r\n handleToggle(event, index)} key={index}>\r\n {summary.title}\r\n {summary.content}\r\n \r\n );\r\n }\r\n })}\r\n \r\n ) : null;\r\n }\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/* Colors */\r\nexport const grey2 = \"#f7f8f8\";\r\nexport const grey3 = \"#eff0f0\"; // onyx10\r\n\r\nexport const grey5 = \"#e0e2e2\"; // onyx20\r\n\r\nexport const grey10 = \"#d0d3d3\"; //quartz\r\n\r\nexport const grey15 = \"#bdc0c0\"; // onyx40\r\n\r\nexport const grey20 = \"#a9adad\"; // granite\r\n\r\nexport const grey25 = \"#9da1a1\";\r\nexport const grey30 = \"#878a8c\"; // slate\r\n\r\nexport const grey35 = \"#676b6e\";\r\nexport const grey40 = \"#53575b\"; // onyx\r\n\r\nexport const grey60 = \"#3a3d40\"; // onyx110\r\n\r\nexport const grey90 = \"#0D0F10\";\r\nexport const yellow5 = \"#ffd61a\";\r\nexport const yellow10 = \"#ffb81c\"; // citrine\r\n\r\nexport const yellow15 = \"#faa61a\";\r\nexport const yellow20 = \"#f68d2e\"; // amber\r\n\r\nexport const yellow25 = \"#e66a1f\";\r\nexport const yellow30 = \"#d45311\"; // topaz\r\n\r\nexport const yellow35 = \"#974a07\";\r\nexport const yellow40 = \"#674730\"; // bronzite\r\n\r\nexport const red5 = \"#fda1b2\";\r\nexport const red10 = \"#fc7473\"; // coral\r\n\r\nexport const red15 = \"#e10f5a\";\r\nexport const red20 = \"#bd0057\"; // ruby\r\n\r\nexport const red25 = \"#a6004e\";\r\nexport const red30 = \"#8f124a\"; // jasper\r\n\r\nexport const red35 = \"#7d003f\";\r\nexport const red40 = \"#6e0d33\"; // garnet\r\n\r\nexport const blue5 = \"#b0eefc\";\r\nexport const blue10 = \"#7de3f4\"; // larimar\r\n\r\nexport const blue15 = \"#49cce6\";\r\nexport const blue20 = \"#01b6d1\"; // turquiose / Link hover\r\n\r\nexport const blue25 = \"#007da5\";\r\nexport const blue30 = \"#006184\"; // sapphire\r\n\r\nexport const blue35 = \"#005175\";\r\nexport const blue40 = \"#003057\"; // azurite\r\n\r\nexport const green5 = \"#d3e952\";\r\nexport const green10 = \"#bed21e\"; // olivine\r\n\r\nexport const green15 = \"#93c742\";\r\nexport const green20 = \"#6db344\"; // beryl\r\n\r\nexport const green25 = \"#50a83e\";\r\nexport const green30 = \"#318d43\"; // emerald\r\n\r\nexport const green35 = \"#206b3f\";\r\nexport const green40 = \"#235c35\"; // jade\r\n\r\nexport const text120 = \"#212225\"; // onyxtext\r\n\r\nexport const black = \"#000000\";\r\nexport const white = \"#fff\";\r\nexport const info10 = \"#20abd7\";\r\nexport const info40 = \"#157493\"; // Link\r\n\r\nexport const info60 = \"#105970\";\r\nexport const confirmation10 = \"#a3d287\";\r\nexport const confirmation40 = \"#74bb49\";\r\nexport const confirmation60 = \"#375a22\";\r\nexport const warning10 = \"#ffd072\";\r\nexport const warning40 = \"#ffae0c\";\r\nexport const warning60 = \"#8f4200\";\r\nexport const danger10 = \"#fc7473\";\r\nexport const danger40 = \"#DC3838\";\r\nexport const danger60 = \"#b00504\";\r\nexport const highlightBlue = \"#e9f7fc\";\r\nexport const highlightCyan = \"#ddfafb\";\r\nexport const highlightGreen = \"#eff7ea\";\r\nexport const highlightYellow = \"#fff8e9\";\r\nexport const highlightAmber = \"#ffefde\";\r\nexport const highlightRed = \"#fee8e7\";\r\nexport const highlightMagenta = \"#fee8fc\";\r\nexport const highlightViolet = \"#f3e9ff\";\r\nexport const colorFacebook = \"#3b5998\";\r\nexport const colorInstagram = \"#3c5a96\";\r\nexport const colorTwitter = \"#00b6f1\";\r\nexport const colorPinterest = \"#cb2027\";\r\nexport const colorYoutube = \"#cd201f\";\r\nexport const colorOdnok = \"#ed812b\";\r\nexport const colorVk = \"#45668e\";\r\n/* Box shadows */\r\n\r\nexport const boxShadowRaised = \"0 2px 4px 0 rgba(0, 0, 0, 0.20)\";\r\nexport const boxShadowDetached = \"0 4px 8px 0 rgba(0, 0, 0, 0.20)\";\r\nexport const boxShadowOverlaid = \"0 8px 16px 0 rgba(0, 0, 0, 0.20)\";\r\nexport const boxShadowPoppedOut = \"0 16px 32px 0 rgba(0, 0, 0, 0.20)\";\r\n/* Font families */\r\n\r\nexport const sans = `\"Ensign:Sans\", Arial, \"noto sans\" , sans-serif`;\r\nexport const serif = `\"Ensign:Serif\", \"Georgia\", \"Times New Roman\", serif`;\r\nexport const monospace = `Courier, \"Courier New\", monospace`;\r\n/* Font Weights */\r\n\r\nexport const fontWeightLight = 300;\r\nexport const fontWeightNormal = 400;\r\nexport const fontWeightSemiBold = 600;\r\nexport const fontWeightBold = 700;\r\n/* Font sizes */\r\n\r\nexport const fontSizeRoot = `100%`; // effectively 16px (16px * 100% = 16px) but respects users' special needs, then desired px / 16px (root size) = rem\r\n\r\nexport const fontSize11 = \"0.6875rem\";\r\nexport const fontSize13 = \"0.8125rem\";\r\nexport const fontSize14 = \"0.875rem\";\r\nexport const fontSize16 = \"1rem\";\r\nexport const fontSize18 = \"1.125rem\";\r\nexport const fontSize20 = \"1.25rem\";\r\nexport const fontSize28 = \"1.75rem\";\r\nexport const fontSize32 = \"2rem\";\r\nexport const fontSize42 = \"2.625rem\";\r\n/* Line heights */\r\n\r\nexport const lineHeightTight = 1.2;\r\nexport const lineHeight = 1.4;\r\nexport const lineHeightLoose = 1.6;\r\n/* Spacings */\r\n\r\nexport const spacing4 = \"0.25rem\"; // 4px\r\n\r\nexport const spacing8 = \"0.5rem\"; // 8px\r\n\r\nexport const spacing16 = \"1rem\"; // 16px\r\n\r\nexport const spacing24 = \"1.5rem\"; // 24px\r\n\r\nexport const spacing32 = \"2rem\"; // 32px\r\n\r\nexport const spacing48 = \"3rem\"; // 48px\r\n\r\nexport const spacing64 = \"4rem\"; // 64px\r\n\r\nexport const spacing96 = \"6rem\"; // 96px\r\n\r\nexport const spacing128 = \"8rem\"; // 128px\r\n\r\n/* Breakpoints */\r\n\r\nexport const breakWidth480 = \"480px\";\r\nexport const breakWidth600 = \"600px\";\r\nexport const breakWidth840 = \"840px\";\r\nexport const breakWidth960 = \"960px\";\r\nexport const breakWidth1280 = \"1280px\";\r\nexport const breakWidth1440 = \"1440px\";\r\nexport const breakWidth1600 = \"1600px\";\r\n/* Aspect ratios */\r\n\r\nexport const aspectRatio1By1 = {\r\n width: 1,\r\n height: 1,\r\n key: \"1:1\"\r\n};\r\nexport const aspectRatio5By6 = {\r\n width: 5,\r\n height: 6,\r\n key: \"5:6\"\r\n};\r\nexport const aspectRatio5By8 = {\r\n width: 5,\r\n height: 8,\r\n key: \"5:8\"\r\n};\r\nexport const aspectRatio6By5 = {\r\n width: 6,\r\n height: 5,\r\n key: \"6:5\"\r\n};\r\nexport const aspectRatio8By3 = {\r\n width: 8,\r\n height: 3,\r\n key: \"8:3\"\r\n};\r\nexport const aspectRatio8By5 = {\r\n width: 8,\r\n height: 5,\r\n key: \"8:5\"\r\n};\r\nexport const aspectRatio16By9 = {\r\n width: 16,\r\n height: 9,\r\n key: \"16:9\"\r\n};\r\nexport const aspectRatios = [aspectRatio1By1, aspectRatio5By6, aspectRatio5By8, aspectRatio6By5, aspectRatio8By3, aspectRatio8By5, aspectRatio16By9];\r\n/* Z indexes */\r\n\r\nexport const zIndexHigherThanPlatform = 200;"],"names":["CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Primary","Object","assign","type","className","onClick","CookieComplianceLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","this","props","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","CookieCompliance","super","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleLinkTextChange","linkIndex","event","_this$props$config$ac","config","actionLinks","target","value","handleContentChange","content","state","visible","cookieRef","_onDismiss","bind","componentDidMount","cookies","isConsentGiven","setState","resources","acceptCookiesAriaLabel","moduleConfig","error","MsDyn365","isBrowser","viewProps","_objectSpread","onDismiss","CookieComplianceBanner","moduleProps","classnames","ref","AlertProps","color","fade","Content","text","onEdit","ArrayExtensions","hasElements","acceptButton","renderView","setConsentCookie","location","reload","Module","Alert","Node","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","current","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","onChange","_renderDeliveryOptions","window","addEventListener","componentWillUnmount","removeEventListener","pickupmodeList","map","delivery","Code","key","tabIndex","Description","style","width","display","flexDirection","alignItems","pickupButtonText","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","undefined","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","timePm","timeAm","divisorForMinutes","minutes","Country","getShortTimeString","day","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","StoreAvailabilityText","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","isAvailable","setIsAvailable","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","productPickUpOptionList","storeName","OrgUnitName","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","TelemetryConstant","PickupInStore","PreferredStore","RemovePreferredStore","deliveryOptionList","includes","bopisStoreHeading","Street","City","State","Zip","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","justifyContent","padding","marginRight","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","currentLocation","renderPickupModes","filteredPickupMode","pickupListOptionMenuText","definitionResources","disabled","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","timeText","availabilityInfoHeader","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreHours","preferredDistanceUnit","ItemAvailabilities","toString","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","DeliveryOptions","productPickUpDeliveryOptions","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","id","marginBottom","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","autoFocus","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","_props$selectedStore","selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","_props$selectedStore3","removePreferredStoreHandler","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","distanceAsString","buildDistanceString","distance","Distance","preferredStoreAttributes","removePreferredStoreAttributes","storeDetailsMain","tag","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","mode","searchRadiusUnit","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","data","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","modeEnum","pickupInStore","findStores","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","_navigator","styleEnum","dialog","inline","isDialogOpen","navigator","geolocation","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","calRadius","distanceUnitValue","SearchRadiusUnit","kilometers","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","updatedCart","_this$props$data$stor6","cartStateData","getCartState","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_storeLocationList","_storeLocationList2","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","shouldShowAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","cartDetails","AmountDue","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","preferredStoreSelected","cart","CartLines","DeliveryMode","x","_x$OrgUnitAvailabilit","_this$state$updatedCa","WarehouseId","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","Modal","classname","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","shouldAllowSearch","locationsList","outOfStockThreshold","noLocationsMessage","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","terms","findInStore","renderBody","LdsFooter","FooterImageLink","Links","footerImage","image","height","src","alt","altText","contactUs","contactLink","help","helpLink","storeLocator","feedback","feedbackLink","paddingLeft","href","Text5","rel","salesAndRefundPolicy","impressum","salesTitle","impressumTitle","PolicyType","cursor","DESCRIPTION","FooterLinks","SiteLinks","TermsAndConditions","dangerouslySetInnerHTML","__html","footerInfo","termsOfUse","privacyPolicy","termsTitle","privacyTitle","currentYearString","Date","getFullYear","copyRightText","format","copyRight","allRightsReserved","FooterLegal","TermsOfService","CopyRight","_props$data$policy","privacyInfo","setPrivacyInfo","setPrivacyTitle","salesInfo","setSalesInfo","setSalesTitle","termsInfo","setTermsInfo","setTermsTitle","impressumInfo","setImpressumInfo","setImpressumTitle","policies","policy","_policy$POLICYTYPE","_policy$PolicyType","_policy$POLICYTYPE2","_policy$PolicyType2","_policy$PolicyType3","_policy$PolicyType4","_policy$POLICYTYPE3","_policy$PolicyType5","_policy$PolicyType6","_policy$POLICYTYPE4","_policy$PolicyType7","Id","parseInt","process","POLICYTYPE","getSalesData","ctx","callerContext","results","lDSPublisherPolicyAsync","err","console","log","sessionStorage","setItem","Title","getTermsData","getPrivacyData","getImpressumData","_props$context$reques2","getItem","countryInfo","localeInfo","_props$context$reques","CountryRegionId","_props$context$reques3","encodedString","encodeURIComponent","policyType","open","origin","sitePath","_renderCartlines","cartLines","cartEmptyText","CartlinesWrapper","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","cartLine","cartlineId","cartline","pickUpInStore","ContainerProps","defaultComponent","addToOrderTemplate","remove","renderCartLinesGroupHeader","pickUpText","shippingText","emailShippingText","titleSeparate","emailDeliveryModeCode","_cartLine$pickUpInSto4","groupTitle","isBopisSelected","toLowerCase","renderCartLinesGroupTitle","_cartLine$pickUpInSto","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","orgUnitName","_props$cart","_props$cart2","errorData","promotions","renderModuleAttributes","hasInvoiceLine","promotionOptions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","multiplePickUpEnabled","cartLinesGroup","cartlines","_props$context$action","emailshippingText","EmailDeliveryModeCode","emptyCartText","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","_renderInvoiceSummarylines","invoiceSummaryLines","OrderSummaryItems","invoices","giftCard","loyalty","orderTotal","invoiceSummaryLineitems","_renderOrderSummarylines","orderSummaryLines","subtotal","shipping","otherCharge","tax","totalDiscounts","orderSummaryLineitems","OrderSummaryErrors","errors","Wrapper","header","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","SummaryForm","formProps","label","paymentAmount","addPaymentButton","appliedLine","bottomBorder","EditForm","_ref2","alert","accountDetails","paymentLabel","paymentApplied","PaymentButtonLabel","styled","div","checkoutCustomerAccount","editView","applyPaymentLabel","Division","hr","FooterCategoryView","_salesAndRefundPolicy","_salesAndRefundPolicy2","_termsOfUse","_termsOfUse2","_privacyPolicy","_privacyPolicy2","categories","FooterList","FooterListItem","category","paddingRight","URL","class","consent","crossorigin","importance","tabindex","noop","Collapse","expand","minHeight","children","onAnimationStart","onAnimationEnd","_objectWithoutProperties","_excluded","AnimateHeight","duration","easing","propTypes","PropTypes","isRequired","_extends","arguments","source","prototype","hasOwnProperty","call","apply","Details","onToggle","detailsRef","useRef","setExpand","useState","internalOpen","setInternalOpen","childrenArray","toArray","summary","shift","useEffect","cleanUp","internalOnToggle","nextOpen","timeout","_event$preventDefault","clearTimeout","querySelector","click","css","inverted","white","text120","spacing8","blue10","info40","_ref4","info10","Container3","withConfig","componentId","zoram","fontWeightNormal","lineHeightLoose","fontSize16","shared","fontWeightBold","Text3","as","grey5","spacing48","Drawer","internalUseOnlyPriority4","fontWeightSemiBold","fontSize18","lineHeightTight","H4Styled","h4","H4","Title4Styled","Title4","ChevronDown","size","viewBox","xmlns","fill","d","base","Chevron","ChevDown","HandleOuter","FlexWrapper","Summary","EdenSummary","spacing24","spacing16","info60","grey2","Table","table","TdName","td","TdValue","ProductSpecTable","specs","spec","Name","TextValue","_props$data","_props$data2","sizingChartCustom","setSizingChartCustom","currentSku","setCurrentSku","longDescriptionValue","setLongDescriptionValue","ProductSpecification","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","drawerSummaries","productSku","productNum","sizingChartApi","getProductSizeChartAsync","MasterProductId","SizeChart","sizingChartAsync","productSpecificationData","longDescription","ExtensionProperties","Key","z","Value","StringValue","sizingChart","y","IntegerValue","productSpec","item","categoriesArray","split","Dimensions","ItemId","language","dimension","DimensionTypeValue","Style","Size","info","sku","DimensionValue","primary","productDetailsLabel","specificationsLabel","sizingChartLabel","openIndex","setOpenIndex","setOpen","handleURLChange","handleToggleCustom","boolean","productAuth","authRequired","attribute","user","isAuthenticated","handleToggle","grey3","grey10","grey15","grey20","grey25","grey30","grey35","grey40","grey60","grey90","yellow5","yellow10","yellow15","yellow20","yellow25","yellow30","yellow35","yellow40","red5","red10","red15","red20","red25","red30","red35","red40","blue5","blue15","blue20","blue25","blue30","blue35","blue40","green5","green10","green15","green20","green25","green30","green35","green40","black","confirmation10","confirmation40","confirmation60","warning10","warning40","warning60","danger10","danger40","danger60","highlightBlue","highlightCyan","highlightGreen","highlightYellow","highlightAmber","highlightRed","highlightMagenta","highlightViolet","colorFacebook","colorInstagram","colorTwitter","colorPinterest","colorYoutube","colorOdnok","colorVk","boxShadowRaised","boxShadowDetached","boxShadowOverlaid","boxShadowPoppedOut","sans","serif","monospace","fontWeightLight","fontSizeRoot","fontSize11","fontSize13","fontSize14","fontSize20","fontSize28","fontSize32","fontSize42","lineHeight","spacing4","spacing32","spacing64","spacing96","spacing128","breakWidth480","breakWidth600","breakWidth840","breakWidth960","breakWidth1280","breakWidth1440","breakWidth1600","aspectRatio1By1","aspectRatio5By6","aspectRatio5By8","aspectRatio6By5","aspectRatio8By3","aspectRatio8By5","aspectRatio16By9","aspectRatios","zIndexHigherThanPlatform"],"sourceRoot":""}