{"version":3,"file":"439.d8664fa449842b80.js","mappings":"kHAEO,MAAMA,EAAsBC,MAC/BC,EACAC,EACAC,EAAW,cAELC,EAAAA,EAAAA,IAAM,kBAAkB,CAC1BC,SAAUJ,EAAMK,UAAUC,eACpBN,EAAMK,UAAUC,eAChBN,EAAMO,YACZC,WAAYP,EACZQ,iBAAkBC,OAAOC,SAASC,KAClCC,YAAa,IACLb,EAAMK,UAAUS,OAAS,CAAEA,MAAOd,EAAMK,UAAUS,OACtDC,SAAUf,EAAMK,UAAUU,SAC1BC,aAAcC,SAASC,MACvBC,YAAanB,EAAMK,UAAUe,MAAMC,KAAKC,GAAMA,EAAEC,UAChDC,aAAc,iBAGlBC,UAAW,IACHvB,GAAYA,EAASwB,OAAS,CAAEC,GAAIzB,EAASwB,UAC7CxB,GAAYA,EAAS0B,WAAa,CAAEC,GAAI3B,EAAS0B,cACjD1B,GAAYA,EAAS4B,UAAY,CAAEC,GAAI7B,EAAS4B,aAChD5B,GACAA,EAAS8B,aAAe,CAAEC,GAAI/B,EAAS8B,gBAG9CE,MAAMC,GAAaA,EAASC,SAC5BF,MAAMG,IACHC,QAAQC,IAAIF,EAAZ,IAEHG,OAAOC,IACAA,EAAMC,SACNJ,QAAQC,IAAIE,EAAMC,QACrB,GA7BT,C,6ECNJ,MAAMC,EAAY,WAGLC,EAAiB7C,MAAO8C,EAAeC,EAAW,KAC3D,IACI,MAAMX,QAAiBhC,EAAAA,EAAAA,IAAM,GAAEwC,gBAAyB,CACpDE,gBACAC,aAEE9C,QAAcmC,EAASC,OAC7BW,EAAe/C,GAEXU,OAAOsC,WACPtC,OAAOsC,UAAUC,SACjBvC,OAAOsC,UAAUC,QAAQC,iBAEnBpD,EAAAA,EAAAA,GAAoBE,EAAO,YACxC,CAAC,MAAOyC,GACLH,QAAQG,MAAMA,EACjB,GAGQU,EAAsBpD,UAC/B,IACI,MAAMoC,QAAiBhC,EAAAA,EAAAA,IAAM,GAAEwC,qBAA8B,CACzDE,kBAEE7C,QAAcmC,EAASC,OAC7BW,EAAe/C,EAClB,CAAC,MAAOyC,GACLH,QAAQG,MAAMA,EACjB,GAGQW,EAAqBrD,UAC9B,IACI,MAAMoC,QAAiBhC,EAAAA,EAAAA,IAAM,GAAEwC,oBACzB3C,QAAcmC,EAASC,OAC7BW,EAAe/C,GAEXU,OAAOsC,WACPtC,OAAOsC,UAAUC,SACjBvC,OAAOsC,UAAUC,QAAQC,iBAEnBpD,EAAAA,EAAAA,GAAoBE,EAAO,mBACxC,CAAC,MAAOyC,GACLH,QAAQG,MAAMA,EACjB,GAGCM,EAAkBM,IACpBC,UAAY5C,OAAO4C,WAAa,GAChCA,UAAUC,KAAK,CAAElD,UAAW,OAC5BiD,UAAUC,KAAKF,EAAf,C,yHC1BJ,MAAMV,EAAY,gBACLa,EAAuBC,IAAD,CAC/BC,KAAMC,EAAAA,GACNC,QAAS,CACLH,wBAWKI,EAAwB,CAACC,EAAKT,KAAN,CACjCK,KAAMK,EAAAA,GACNH,QAAS,CACLE,MACAT,UA4CKW,EAAeC,GAAW,CAACC,EAAUC,KAC9CD,EAAS,CACLR,KAAMU,EAAAA,GACNR,QAAS,CACLS,uBAAwBJ,KAGhC,MAAM,QAAEL,GAAYO,IAAWG,SAC/B,OAAOC,EAAAA,EAAAA,IAAI,oCAAqCX,GAC3C1B,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACHN,GAASO,EAAAA,EAAAA,OACM,OAAXD,GAAmBA,EAAOE,eAC1BR,EAASS,EAAiBH,EAAOE,eACpC,IAEJlC,OAAOoC,GAAOV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,OARlE,EAWSsC,EAAcC,GAAa,CAACd,EAAUC,KAC/CD,EAAS,CACLR,KAAMuB,EAAAA,EACNrB,QAAS,CACLsB,gBAAiBF,KAGzB,MAAM,QAAEpB,GAAYO,IAAWG,SAK/B,OAFAJ,EAASS,EAAiB,QAEnBJ,EAAAA,EAAAA,IAAI,2BAA4BX,GAClC1B,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACHN,GAASO,EAAAA,EAAAA,OACTP,EAASS,EAAiBH,EAAOE,gBACjCR,EAAS,CACLR,KAAMU,EAAAA,GACNR,QAAS,CACLuB,gBAAiBX,EAAOW,gBACxBd,uBAAwBG,EAAOH,0BAGvCH,EAAS,CACLR,KAAM0B,EAAAA,GACNxB,QAAS,CACLyB,eAAgBb,EAAOa,eACvBC,sBAAuBd,EAAOc,wBAJtC,IAQH9C,OAAOoC,GAAOV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,OApBlE,EAuBS8C,EAActB,GAAW,CAACC,EAAUC,KAC7CD,EAAS,CACLR,KAAM0B,EAAAA,GACNxB,QAAS,CACL0B,sBAAuBrB,KAG/B,MAAM,QAAEL,GAAYO,IAAWG,SAW/B,OATAJ,EAASS,EAAiB,OAE1BT,EACIY,EAAY,CACRU,WAAY,CACRC,QAAS,QAIdlB,EAAAA,EAAAA,IAAI,mCAAoCX,GAC1C1B,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACHN,GAASO,EAAAA,EAAAA,OACTP,EAASS,EAAiBH,EAAOE,eAAjC,IAEHlC,OAAOoC,GAAOV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,OANlE,EASSiD,EAAgB,IAAM,CAACxB,EAAUC,KAC1C,MAAM,QAAEP,GAAYO,IAAWG,SAC/B,OAAOC,EAAAA,EAAAA,IAAI,oCAAqCX,GAC3C1B,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACCA,GAAUA,EAAOE,eACjBR,EAASS,EAAiBH,EAAOE,eACpC,IAEJlC,OAAOoC,GAAOV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,OAPlE,EAUEkC,EAAoBD,IAAD,CACrBhB,KAAMiC,EAAAA,GACN/B,QAAS,CACLc,mBAyBKkB,EAAmBC,IAAD,CAC3BnC,KAAMoC,EAAAA,GACNlC,QAAS,CACLiC,kBAuDFE,EAAwBC,IAAD,CACzBtC,KAAMuC,EAAAA,GACNrC,QAAS,CACLoC,uBAmBFE,EAAU,CAACC,EAAKC,EAAOlC,KAClB/D,EAAAA,EAAAA,IAAKgG,EAAKC,GACZlE,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACHN,EAASmC,EAAW7B,GAApB,IAEHhC,OAAOoC,IACAA,EAAGzC,SACHyC,EAAGzC,SAASC,OAAOF,MAAMO,IACrByB,EAASY,EAAYrC,IACrByB,EAASmC,EAAW,OAEpBnC,GAASO,EAAAA,EAAAA,MAAT,IAGJP,EAASY,EAAYF,IAEzBV,EAASoC,GAAsB,GAA/B,IA8BCD,EAAc7B,IAAD,CACtBd,KAAM6C,EAAAA,GACN3C,QAAS,CACLY,YAIKM,EAAerC,IAAD,CACvBiB,KAAM8C,EAAAA,GACN5C,QAAS,CACLnB,WAIK6D,EAAyBxF,IAAD,CACjC4C,KAAM+C,EAAAA,GACN7C,QAAS,CACL8C,oBAAqB5F,KAUhB6F,EAAqBC,IAAD,CAC7BlD,KAAMmD,EAAAA,GACNjD,QAAS,CACLgD,kB,cC/WR,MAkBA,EAlBe,EACXE,UACA5F,QACA6F,YAAW,EACXrD,OAAO,SACPsD,eAGI,0BACIA,UAAWA,EACXF,QAASA,EACTC,SAAUA,EACVrD,KAAMA,GAELxC,GCwCb,EAtD8B,EAAG+F,mBAEzBA,GAAiBA,EAAcC,OAAS,GACxC,4BACKC,EAAAA,EAAAA,GAAU,iCAEX,uBAAKH,UAAU,8BACX,sBAAIA,UAAU,oCACTC,GACGA,EAAc5F,KAAI,CAAC+F,EAASC,IACxB,sBAAIL,UAAU,8BAA8BlD,IAAKuD,GAC7C,uBAAKL,UAAU,0CACX,uBAAKA,UAAU,wCACX,uBAAKM,IAAKF,EAAQG,YAEtB,uBAAKP,UAAU,yCACX,qBAAGpG,KAAMwG,EAAQjB,KACb,wBAAMa,UAAU,+BAA+BI,EAAQI,MACvD,wBAAMR,UAAU,gCAEUS,MAAjBL,EAAQM,OAAqDD,MAA/BL,EAAQM,MAAMC,cAC7C,2BACI,wBAAMX,UAAU,2BACXI,EAAQM,MAAME,wBACZ,KACP,wBAAMZ,UAAU,sBACXI,EAAQM,MAAMG,iBANoD,GAU7DJ,MAAjBL,EAAQM,OAAqDD,MAA/BL,EAAQM,MAAMC,eACzC,2BACI,wBAAMX,UAAU,2BACXI,EAAQM,MAAMG,qBAQ3C,uBAAKb,UAAU,2CACX,0BAAQA,UAAU,mCAAmCF,QAAS,KAC1DnG,SAASC,KAAOwG,EAAQjB,GAAxB,GACG,e,cC/B3C,MAAM2B,EAAiB,CAAC,EAElBC,GAAmBC,EAAAA,EAAAA,IAAS,CAACnF,EAAeC,EAAUoB,KACxD4D,EAAejF,GAAiB,IAAIoF,gBACpC/D,GAASgE,EAAAA,EAAAA,IAAOrF,EAAeC,EAAUgF,EAAejF,KACnDX,MAAK,KACFgC,EAASwB,KACTxB,GAASiE,EAAAA,EAAAA,QACT/E,EAAAA,EAAAA,KAAoB,IAEvBZ,OAAOoC,GAAOV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,IAAU2F,EAAAA,EAAAA,IAAU3F,OANhE,GAOD,KAmbH,EAjba,KACT,MAAMyB,GAAWmE,EAAAA,EAAAA,OACVC,EAAaC,IAAkBC,EAAAA,EAAAA,UAAS,CAAC,IACzCC,EAAuBC,IAA4BF,EAAAA,EAAAA,UAAS,CAAC,GAC9DG,GAAOC,EAAAA,EAAAA,KAAaC,GAAUA,EAAMF,QACnCG,EAAWC,IAAgBP,EAAAA,EAAAA,UAASG,GAAMG,YAC3C,aAAEE,GAAiBL,GACnB,sBAAEM,GAA0BN,GAClCO,EAAAA,EAAAA,YAAU,KACNH,EAAaJ,GAAMG,UAAnB,GACD,CAACH,IAEJ,MAAMQ,GAAiBC,EAAAA,EAAAA,cAClBvG,GACGqB,GAASgE,EAAAA,EAAAA,IAAOrF,EAAe,IAAIX,MAAK,KACpCgC,EAASwB,KACTxB,GAASiE,EAAAA,EAAAA,QACT/E,EAAAA,EAAAA,KAAoB,IAEtBc,KAGJmF,EAAgB,CAACxG,EAAeyG,KAClCrI,SAASsI,eAAe1G,GAAe2G,UAAYF,CAAnD,EAGEG,GAAsBL,EAAAA,EAAAA,cACxB,CACIvG,EACAC,EACA4G,EACAC,EACAC,EACAC,EACAC,GAAoB,KAGpB,GAAiB,KAAbhH,GADO,aACeiH,KAAKjH,GAAW,CAItCiF,GAAoBA,EAAiBiC,SAErC,IAAIC,EAAgBC,WAAWpH,GAC3BqH,GAAcC,MAAMH,IAAkBA,EAAgB,EAO1D,GANIH,IAEAG,EADAnH,EAAWqH,EAAaF,EAAgB,EAExCE,GAAa,GAEjBlJ,SAASsI,eAAe1G,GAAe2G,UAAY,GAE/Ca,SAASX,GAAmB,GAC5BW,SAASJ,GAAiBI,SAASX,GAEnCL,EACIxG,GACAsE,EAAAA,EAAAA,GAAU,2BACV,IACAuC,QAED,GACHW,SAASV,GAAmB,GAC5BU,SAASJ,GAAiBI,SAASV,GAEnCN,EACIxG,GACAsE,EAAAA,EAAAA,GAAU,2BACV,IACAwC,QAED,GACHU,SAAST,GAAoB,GAC7BS,SAASJ,GAAiBI,SAAST,IAAsB,EAC3D,CACE,IAAIU,EACAD,SAASJ,GAAiBI,SAAST,GACvCP,EACIxG,GACAsE,EAAAA,EAAAA,GAAU,4BACV,IACAyC,EACA,QACAU,EAEP,MACGpG,EAASmC,KAEb,MAAMgB,EAAQyB,EAAUyB,WACnBC,GAASA,EAAKX,cAAgBA,IAG/BI,IADgBC,WAAWpB,EAAUzB,GAAOvE,YAE5CgF,EAAejF,IACXiF,EAAejF,GAAe4H,QAClC1C,GAAoBA,EAAiBiC,SACrCG,GACIpC,EAAiBlF,EAAeC,EAAUoB,IAElD,MAAMwG,EAAgB,IAAI5B,GAC1B4B,EAAcrD,GAAS,IAChBqD,EAAcrD,GACjBvE,YAEJiG,EAAa2B,EAChB,IAEL,CAACxG,EAAU4E,IAGT6B,GAAevB,EAAAA,EAAAA,cAAY,EAAGwB,WAE5B,uBACI5D,UAAU,uBACVM,IAAKsD,EAAMC,MACXC,IAAKF,EAAMpD,QAGpB,IAEGuD,GAAc3B,EAAAA,EAAAA,cAAY,EAAGwB,WAE3B,gBAAC,EAAAI,SAAD,KACI,qBAAGpK,KAAMgK,EAAMzE,KAAMyE,EAAMpD,MAC3B,wBAAMR,UAAU,0BACXG,EAAAA,EAAAA,GAAU,uBAAuB,IAAEyD,EAAM/H,eAE7C+H,EAAMK,gBAAkBL,EAAMK,eAAe/D,OAAS,GACnD,uBAAKF,UAAU,0BACX,qBACIkE,KAAK,SACLlE,UAAU,+BACVF,QAAS,IACL4B,EAAyB,IAClBD,EACH,CAACmC,EAAMf,cAAepB,EAAsBmC,EAAMf,iBAG5D1C,EAAAA,EAAAA,GAAU,0BACR,wBAAMH,UAAY,sCAAoCyB,EAAsBmC,EAAMf,aAAe,0CAA4C,OAEhJpB,EAAsBmC,EAAMf,cACzBe,EAAMK,eAAe5J,KAAI,CAACP,EAAOgD,IAEzB,wBAAMkD,UAAU,8BAA8BlD,IAAKA,GAAOhD,MAM9E,wBAAMkG,UAAU,6BAA6B4D,EAAMO,SAG5D,CAAC1C,IAeE2C,IAbgBhC,EAAAA,EAAAA,cAAY,EAAGwB,YACjC,MAAMS,EAA2BpC,EAAsBqC,QAAQhK,GACpDA,EAAEiK,gCAAkCX,EAAM/H,gBAErD,OACI,gBAAC,EAAAmI,SAAD,KACI,gBAAC,EAAD,CACI/D,cAAeoE,IAH3B,GAOD,KAEkBjC,EAAAA,EAAAA,cAAY,EAAGwB,WAE5B,gBAAC,EAAAI,SAAD,KACKJ,EAAMjD,cACH,gBAAC,EAAAqD,SAAD,KACI,uBAAKhE,UAAU,iCACV4D,EAAMjD,eAEX,uBAAKX,UAAU,iCACV,IAAI,IACH4D,EAAMlD,MAAM,MAItBkD,EAAMlD,QAInB,KAEG8D,GAAkBpC,EAAAA,EAAAA,cACnBwB,GAEO,gBAAC,EAAAI,SAAD,KACKJ,EAAMa,WACH,2BAAMb,EAAM9H,UAEZ,uBAAKkE,UAAU,iBACX,yBACIA,UAAU,uBACVtD,KAAK,SACLgI,GAAId,EAAMf,YACV8B,IACIf,EAAMlB,gBAAkB,EAClBkB,EAAMlB,gBACN,EAEVkC,UAAW,EACXC,IACIjB,EAAMjB,gBAAkB,EAClBiB,EAAMjB,gBACN,IAEV7I,MAAO8J,EAAM9H,SAASgJ,WACtBC,KACInB,EAAMhB,iBAAmB,EACnBgB,EAAMhB,iBACN,EAEVoC,SAAWhM,GACPyJ,EACImB,EAAM/H,cACN7C,EAAMiM,OAAOnL,MACb8J,EAAMlB,gBACNkB,EAAMsB,gBACNtB,EAAMuB,iBACNvB,EAAMf,aACN,GAGRuC,OAASpM,GACLyJ,EACImB,EAAM/H,cACN7C,EAAMiM,OAAOnL,MACb8J,EAAMlB,gBACNkB,EAAMjB,gBACNiB,EAAMhB,iBACNgB,EAAMf,eAIlB,wBACI6B,GAAId,EAAM/H,cACVmE,UAAU,sBAOlC,CAACyC,IAGC4C,EAAoB,EAAGzB,WAErB,gBAAC,EAAAI,SAAD,KACKJ,EAAM0B,mBACH,gBAAC,EAAAtB,SAAD,KACI,uBAAKhE,UAAU,iCACV4D,EAAM0B,oBAEX,uBAAKtF,UAAU,iCACV,IAAI,IACH4D,EAAM2B,WAAW,MAI3B3B,EAAM2B,YAMhBC,GAAYpD,EAAAA,EAAAA,cACd,EAAGwB,WAEK,gBAAC,EAAAI,SAAD,MACMJ,EAAMa,aAAenD,EAAYsC,EAAMf,cACrC,qBACI7C,UAAU,kCACVF,QAAS,IACLyB,EAAe,IACRD,EACH,CAACsC,EAAMf,cAAc,IAG7B3I,OAAOiG,EAAAA,EAAAA,GAAU,qBAGvByD,EAAMa,YAAcnD,EAAYsC,EAAMf,cACpC,gBAAC,EAAAmB,SAAD,KACI,qBACIhE,UAAU,kCACVF,QAAS/G,gBACCoD,EAAAA,EAAAA,IACFyH,EAAM/H,eAEVsG,EAAeyB,EAAM/H,cAArB,EAEJ3B,OAAOiG,EAAAA,EAAAA,GAAU,gBAErB,qBACIH,UAAU,kCACVF,QAAS,IACLyB,EAAe,IACRD,EACH,CAACsC,EAAMf,cAAc,IAG7B3I,OAAOiG,EAAAA,EAAAA,GAAU,uBAOzC,CAACgC,EAAgBb,IAGfmE,GAAYrD,EAAAA,EAAAA,cAAY,EAAGT,UAEzB,sBAAI3B,UAAU,gBACTG,EAAAA,EAAAA,GAAU,uBAAuB,KAAGwB,EAAK+D,aAGnD,IAEH,OACI,uBAAK1F,UAAU,2BACX,uBAAKA,UAAU,4BACX,uBAAKA,UAAU,oCACX,uBAAKA,UAAU,+BACX,uBAAKA,UAAU,sCACf,uBAAKA,UAAU,qCACVG,EAAAA,EAAAA,GAAU,+BAEf,uBAAKH,UAAU,qCACVG,EAAAA,EAAAA,GAAU,kCAEf,uBAAKH,UAAU,qCACVG,EAAAA,EAAAA,GAAU,gCAGlB2B,EAAUzH,KAAI,CAACuJ,EAAOvD,IACnB,uBACIL,UAAU,iDACVlD,IAAK8G,EAAMf,aAEX,uBAAK7C,UAAU,0FACX,uBAAKA,UAAU,gCACX,gBAAC2D,EAAD,CAAc7G,IAAK,0BAA4BuD,EAAOuD,MAAOA,KAEjE,uBAAK5D,UAAU,mDACX,gBAAC+D,EAAD,CAAajH,IAAK,yBAA2BuD,EAAOuD,MAAOA,MAGnE,uBAAK5D,UAAU,4FACX,gBAACoE,EAAD,CAAcR,MAAOA,KAEzB,uBAAK5D,UAAU,wEACVwE,EAAgBZ,IAErB,uBAAK5D,UAAU,uHACX,gBAACqF,EAAD,CAAmBzB,MAAOA,KAE9B,uBAAK5D,UAAU,wFACX,gBAACwF,EAAD,CAAW5B,MAAOA,QAO9B,uBAAK5D,UAAU,kDACX,uBAAKA,UAAU,WACX,gBAACyF,EAAD,CAAW9D,KAAMA,OAI7B,uBAAK3B,UAAU,6DACV8B,EAAUzH,KAAI,CAACuJ,EAAOvD,IACnB,uBAAKL,UAAU,gBAAgBlD,IAAK8G,EAAMf,aACtC,uBAAK7C,UAAU,mBACX,gBAAC2D,EAAD,CAAcC,MAAOA,KAEzB,uBAAK5D,UAAU,mBACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,mBACX,uBAAKA,UAAU,+CACX,gBAAC+D,EAAD,CAAajH,IAAK,2BAA6BuD,EAAOuD,MAAOA,MAGrE,uBAAK5D,UAAU,8CACX,gBAACwF,EAAD,CAAW5B,MAAOA,MAG1B,uBAAK5D,UAAU,OACX,uBAAKA,UAAU,iDACX,2BACI,gBAACoE,EAAD,CAAcR,MAAOA,KAEzB,2BAAMY,EAAgBZ,MAG9B,uBAAK5D,UAAU,OACX,uBAAKA,UAAU,2DACX,gBAACqF,EAAD,CAAmBzB,MAAOA,UAM7C5B,EAAa3H,KAAI,CAACuJ,EAAOvD,IACtB,uBAAKL,UAAU,gBAAgBlD,IAAK8G,EAAMf,aACtC,uBAAK7C,UAAU,WACX,2BACI,gBAAC+D,EAAD,CAAajH,IAAK,sBAAwBuD,EAAOuD,MAAOA,KAE5D,uBAAK5D,UAAU,0CACX,gBAACqF,EAAD,CAAmBzB,MAAOA,SAK1C,uBAAK5D,UAAU,iBACX,uBAAKA,UAAU,WACX,gBAACyF,EAAD,CAAW9D,KAAMA,QAnGzC,ECtTJ,EAvCqB,EAAGgE,YAEhB,gBAAC,EAAA3B,SAAD,KACI,uBAAKhE,UAAU,OACX,uBAAKA,UAAU,YACX,sBAAIA,UAAU,oBACTG,EAAAA,EAAAA,GAAU,qBAIvB,uBAAKH,UAAU,OACX,uBAAKA,UAAU,oCACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,0BAIvB,uBAAKH,UAAU,OACV2F,GAAUA,EAAM,MACb,qBAAG3F,UAAU,8BACR2F,EAAM,KAAS,KAI3B,uBAAK3F,UAAU,OACd,uBAAKA,UAAU,oBACZtG,OAAOkM,SAASC,aAAavI,SAASqI,QAAUjM,OAAOkM,SAASC,aAAavI,SAASqI,OAAtC,MAC/C,qBAAG3F,UAAU,8BACVtG,OAAOkM,SAASC,aAAavI,SAASqI,OAAtC,KAAqD,MAM9D,gBAAC,EAAD,OCOZ,EA3CmB,EACfG,WACAtF,OACAkE,KACAqB,eAAe,KACfC,cAAc,KACdtJ,OAAO,OACPkI,YAAY,IACZ7E,WACAiF,WACAlL,QACAmM,QACAN,YAGI,uBAAK3F,UAAW8F,GACZ,yBAAO9F,UAAU,cAAckG,QAASxB,GACnCuB,GAEL,yBACIjG,UAAU,cACVD,SAAUA,EACV2E,GAAIA,EACJlE,KAAMA,EACN9D,KAAMA,EACN5C,MAAOA,EACPkM,YAAaA,EACbD,aAAcA,EACdf,SAAWhM,GAAUgM,EAAShM,EAAMiM,OAAOnL,OAC3C8K,UAAWA,IAEde,EAAOjB,IACJ,wBACI1E,UAAU,qDACV,iBAAgB0E,GAEfiB,EAAOjB,GAAI,KCxBhC,QAZA,UAAmB,OAAEyB,IACjB,OACI,uBAAKnG,UAAU,yCACVmG,EAAO9L,KAAI,CAACmJ,EAAM4C,IACf,gBAAC,EAAApC,SAAD,CAAUlH,IAAKsJ,GACX,4BAAO5C,GAAY,OAKtC,ECJK6C,EAAcC,IAChB,MAAMC,EAAiBC,EAAAA,GAAUC,UAC3BD,EAAAA,GAAUC,UAAUC,MACjBC,GAAYA,EAAQ7M,QAAUwM,EAAQK,UAEzC,KACN,OAAOJ,EAAiBA,EAAeK,KAAON,EAAQK,OAAtD,EA0MJ,EAvMqC,EACjC3B,WACA6B,SACAC,yBACAC,YACAC,uBAEA,MAAM,QAAEpK,EAAF,OAAW+I,EAAS,CAAC,IAAM/D,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YACxD,iBAAE2J,EAAmB,GAArB,YAAyBC,EAAzB,cAAsCC,GAAkBvK,EAExDwK,EAAQ,CACVtB,EACAuB,EACA3C,EACAqB,EAAe,KACfrJ,EAAO,SAEP,gBAAC,EAAD,CACIoJ,SAAUA,EACVpB,GAAK,GAAE2C,KAAY3C,IACnBlE,KAAO,GAAE6G,KAAY3C,IACrBqB,aAAcA,EACdhG,UAAWoH,EACXrN,OAAQiN,EAAUM,IAAa,CAAC,GAAG3C,IAAO,GAC1CM,SAAWlL,GAAUkL,EAASqC,EAAU3C,EAAI5K,GAC5CmM,OAAO9F,EAAAA,EAAAA,GAAW,yBAAwBuE,EAAG4C,iBAC7C3B,OAAQA,EACRjJ,KAAMA,IAIR6K,GAAkBC,EAAAA,EAAAA,UAAQ,IACrBT,EAAUU,0BAA4BR,EACvCA,EAAiBP,MACdJ,GACGA,EAAQtI,WAAa+I,EAAUU,2BAErC,MACP,CAACV,EAAUU,yBAA0BR,IAaxC,OACI,uBAAKjH,UAAU,gCACVgH,EACG,gBAAC,EAAAhD,SAAD,KACI,uBAAKhE,UAAU,kDACX,uBAAKA,UAAU,aACVoH,EACG,kBACA,kBACA,YACA,sBAGHA,EACG,kBACA,kBACA,WACA,wBAGR,uBAAKpH,UAAU,aACVoH,EACG,mBACA,kBACA,cACA,cACA,QAGR,uBAAKpH,UAAU,aACVoH,EACG,mBACA,kBACA,QACA,QACA,WAIZ,uBAAKpH,UAAU,mDACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,oBACX,yBACIA,UAAU,cACVkG,QAAQ,YAEP/F,EAAAA,EAAAA,GAAU,kCAGf,0BACIH,UAAU,cACVlG,MACIiN,EAAUU,0BAA4B,GAE1C1H,UAAWoH,EACXnC,SAAWhM,GACP8N,EACI9N,EAAMiM,OAAOnL,MACbmN,EAAiBP,MACZJ,GACGA,EAAQtI,WACRhF,EAAMiM,OAAOnL,QACnB6M,UAIV,0BAAQ7M,MAAM,GAAGiG,UAAQ,IACpBI,EAAAA,EAAAA,GACG,qDAGP8G,GACGA,EAAiB5M,KAAKiM,GAClB,0BACIxM,MAAOwM,EAAQtI,SACflB,IAAM,kBAAiBwJ,EAAQtI,YAtFjDsI,IACf,CACHA,EAAQA,QACRA,EAAQoB,QACRpB,EAAQqB,KACRtB,EAAWC,IAEVhC,QAAQhK,KAAQA,IAChBsN,KAAK,MAgF+BC,CAAiBvB,OAIjCX,EAAM,0BACH,wBACI3F,UAAU,qDACV,iBAAe,4BAEd2F,EAAM,yBAA6B,MAKnD4B,GACG,uBAAKvH,UAAU,aACX,uBAAKA,UAAU,oBACVkH,GAEL,uBAAKlH,UAAU,oBACVuH,EAAgBjB,SAErB,uBAAKtG,UAAU,oBACVuH,EAAgBG,SACb,4BAAOH,EAAgBG,SACzB,IAEDH,EAAgBI,MACb,4BAAOJ,EAAgBI,OAG/B,uBAAK3H,UAAU,oBACVqG,EAAWkB,MAK5B,uBAAKvH,UAAU,+CACX,gBAAC,EAAD,CACIF,QAAS+G,EACT3M,OAAOiG,EAAAA,EAAAA,GAAU,qBACjBH,UAAW,uCAKvB,gBAAC,EAAAgE,SAAD,KACI,gBAAC,EAAD,CACImC,OAAQ,CACJY,EAAS,gBAAT,UACAA,EAAS,gBAAT,YAGR,gBAAC,EAAD,CAAWZ,OAAQ,CAACe,KACpB,gBAAC,EAAD,CAAWf,OAAQ,CAACoB,EAAgBjB,WACpC,gBAAC,EAAD,CACIH,OAAQ,CAACoB,EAAgBG,QAASH,EAAgBI,QAEtD,gBAAC,EAAD,CAAWxB,OAAQ,CAACE,EAAWkB,MAC/B,gBAAC,EAAD,CACIpB,OAAQ,CAACY,EAAS,gBAAT,eAEb,gBAAC,EAAD,CACIZ,OAAQ,CAACY,EAAS,gBAAT,UA5I7B,ECyTJ,EA/WoC,EAChC/B,WACA6B,SACAE,YACAC,mBACAc,+BAEA,MAAM5K,GAAWmE,EAAAA,EAAAA,OACX,QAAEzE,EAAF,OAAW+I,EAAS,CAAC,IAAM/D,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YACxD,cAAE6J,EAAF,OAAiBY,EAAjB,aAAyBnI,GAAiBhD,GAC1C,gBAAEoL,EAAkB,CAAC,EAArB,mBAAwBC,EAAqB,CAAC,GAAMlB,EAEpDK,EAAQ,CACVtB,EACAuB,EACA3C,EACAqB,EAAe,KACfC,EAAc,KACdtJ,EAAO,OACPkI,EAAY,MAEZ,gBAAC,EAAD,CACIkB,SAAUA,EACVpB,GAAK,GAAE2C,KAAY3C,IACnBlE,KAAO,GAAE6G,KAAY3C,IACrBqB,aAAcA,EACdjM,OAAQiN,EAAUM,IAAa,CAAC,GAAG3C,IAAO,GAC1CM,SAAWlL,GAAUkL,EAASqC,EAAU3C,EAAI5K,GAC5CmM,OAAO9F,EAAAA,EAAAA,GAAW,yBAAwBuE,EAAG4C,iBAC7C3B,OAAQA,EACRK,YAAaA,EACbtJ,KAAMA,EACNkI,UAAWA,IAInB,OACI,uBAAK5E,UAAU,gCACVgH,EACG,gBAAC,EAAAhD,SAAD,KACI,uBAAKhE,UAAU,6BACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,2DAEnB,uBAAKA,UAAU,aACVoH,EACG,kBACA,kBACA,YACA,sBAEHA,EACG,kBACA,kBACA,WACA,uBAEHA,EACG,mBACA,kBACA,SACA,KACA,KACA,OACA,KAEHA,EACG,mBACA,kBACA,UACA,0BAEHA,EACG,kBACA,kBACA,UACA,sBACA,KACA,OACA,IAEHA,EACG,kBACA,kBACA,OACA,yBACA,KACA,OACA,KAEJ,uBAAKpH,UAAU,oBACX,yBACIA,UAAU,cACVkG,QAAQ,YAEP/F,EAAAA,EAAAA,GAAU,kCAEf,0BACIH,UAAU,cACV0E,GAAG,UACH5K,MAAOkO,EAAgBrB,QACvBZ,aAAa,UACbf,SAAWhM,IACPgM,EACI,qBACA,UACAhM,EAAMiM,OAAOnL,OAEjBkL,EACI,kBACA,UACAhM,EAAMiM,OAAOnL,MAHjB,GAOJ,0BAAQA,MAAM,GAAGiG,UAAQ,IACpBI,EAAAA,EAAAA,GACG,8CAGPqG,EAAAA,GAAUC,WACPD,EAAAA,GAAUC,UAAUpM,KAChB,EAAGuM,OAAM9M,WACL,0BACIA,MAAOA,EACPgD,IAAM,WAAUhD,KAEf8M,OAMxBQ,EACG,mBACA,kBACA,cACA,cACA,KACA,SAIZ,uBAAKpH,UAAU,6BACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,oBACX,yBACIA,UAAU,gCACVtD,KAAK,WACLgI,GAAG,yBACHlE,KAAK,yBACL0H,QACID,EAAmBE,yBACnB,EAEJnD,SAAWhM,IR+LLmP,MQ9LFnD,EACI,qBACA,yBACAhM,EAAMiM,OAAOiD,SAEjBhL,GRyLEiL,EQvLMnP,EAAMiM,OAAOiD,QRuLpB,CACrCxL,KAAM0L,EAAAA,GACNxL,QAAS,CACLuL,4BQ5LgC,IAOR,yBACInI,UAAU,gCACVkG,QAAQ,2BAEP/F,EAAAA,EAAAA,GACG,mDAKf8H,EAAmBE,wBAChB,uBAAKnI,UAAU,aACVoH,EACG,kBACA,qBACA,YACA,uBAEHA,EACG,kBACA,qBACA,WACA,wBAEHA,EACG,mBACA,qBACA,SACA,KACA,KACA,OACA,KAEHA,EACG,mBACA,qBACA,UACA,2BAEHA,EACG,kBACA,qBACA,UACA,uBACA,KACA,OACA,IAEHA,EACG,kBACA,qBACA,OACA,0BACA,KACA,OACA,KAEJ,uBAAKpH,UAAU,oBACX,yBACIA,UAAU,cACVkG,QAAQ,aAEP/F,EAAAA,EAAAA,GACG,kCAGR,0BACIH,UAAU,cACV0E,GAAG,WACH5K,MAAOmO,EAAmBtB,QAC1BZ,aAAa,UACbf,SAAWhM,IACPgM,EACI,qBACA,UACAhM,EAAMiM,OAAOnL,OAEjBkL,EACI,kBACA,UACAhM,EAAMiM,OAAOnL,MAHjB,GAOJ,0BAAQA,MAAM,GAAGiG,UAAQ,IACpBI,EAAAA,EAAAA,GACG,8CAGPqG,EAAAA,GAAUC,WACPD,EAAAA,GAAUC,UAAUpM,KAChB,EAAGuM,OAAM9M,WACL,0BACIA,MAAOA,EACPgD,IAAM,YAAWhD,KAEhB8M,OAMxBQ,EACG,mBACA,qBACA,cACA,eACA,KACA,SAKhB,uBAAKpH,UAAU,6BACX,uBAAKA,UAAU,aACVoH,EACG,mBACA,kBACA,QACA,QACA,KACA,WAIZ,uBACIpH,UAAY,oCACRmH,EAAgB,cAAgB,kBAGpC,4BACMA,GAAiBW,GACf,gCACI,yBACI9H,UAAU,gCACVtD,KAAK,WACLgI,GAAG,iBACHwD,QAASH,EACT/C,SAAWhM,GACPkE,ER7RlB6K,KAAD,CACrBrL,KAAM2L,EAAAA,GACNzL,QAAS,CACLmL,YQ2RwCO,CAAUtP,EAAMiM,OAAOiD,YAInC,yBACIlI,UAAU,gCACVkG,QAAQ,mBAEP/F,EAAAA,EAAAA,GACG,2CAMpB,gBAAC,EAAD,CACIL,QAAS+G,EACT3M,OAAOiG,EAAAA,EAAAA,GAAU,qBACjBH,UAAW,mCACXD,SAAUH,MAKtB,gBAAC,EAAAoE,SAAD,KACI,gBAAC,EAAD,CACImC,OAAQ,CACJY,EAAS,gBAAT,UACAA,EAAS,gBAAT,YAGPA,EAAS,gBAAT,QACG,gBAAC,EAAD,CACIZ,OAAQ,CAACY,EAAS,gBAAT,UAGjB,gBAAC,EAAD,CACIZ,OAAQ,CAACY,EAAS,gBAAT,WAEb,gBAAC,EAAD,CACIZ,OAAQ,CACJY,EAAS,gBAAT,QACAA,EAAS,gBAAT,QAGR,gBAAC,EAAD,CAAWZ,OAAQ,CAACE,EAAW2B,MAE/B,gBAAC,EAAD,CACI7B,OAAQ,CAACY,EAAS,gBAAT,eAEb,gBAAC,EAAD,CACIZ,OAAQ,CAACY,EAAS,gBAAT,UAnU7B,E,cC/CJ,MAAMwB,GAAyCC,EAAAA,EAAAA,MAASC,MAAM,CAC1DC,wBAAwBC,EAAAA,EAAAA,MACnBC,UAASzI,EAAAA,EAAAA,GAAW,6BACpB0I,MAAM,EAAC,IAAO1I,EAAAA,EAAAA,GAAW,6BAC9B9C,wBAAwBmL,EAAAA,EAAAA,MAASI,UAASzI,EAAAA,EAAAA,GAAW,wBACrD7B,uBAAuBkK,EAAAA,EAAAA,MAASI,UAASzI,EAAAA,EAAAA,GAAW,0BAGlD2I,GAA+BN,EAAAA,EAAAA,MAASC,MAAM,CAChD/N,OAAOqO,EAAAA,EAAAA,MACFH,UAASzI,EAAAA,EAAAA,GAAW,wBACpBzF,OAAMyF,EAAAA,EAAAA,GAAW,qBACtBnF,aAAa+N,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBAC1CwG,SAASqC,EAAAA,EAAAA,MACJJ,UAASzI,EAAAA,EAAAA,GAAW,wBACpB8I,SAAS,CAAC,KAAK9I,EAAAA,EAAAA,GAAU,wBAC9BwH,MAAMoB,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACnCuH,SAASqB,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACtCmG,SAASyC,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACtCrF,UAAUiO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACvCvF,WAAWmO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,0BAGtC+I,GAA0CV,EAAAA,EAAAA,MAASC,MAAM,CAC3DzN,aAAa+N,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBAC1CwG,SAASqC,EAAAA,EAAAA,MACJJ,UAASzI,EAAAA,EAAAA,GAAW,wBACpB8I,SAAS,CAAC,KAAK9I,EAAAA,EAAAA,GAAU,wBAC9BwH,MAAMoB,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACnCuH,SAASqB,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACtCmG,SAASyC,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACtCrF,UAAUiO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACvCvF,WAAWmO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,0BAGtCgJ,GAAgCX,EAAAA,EAAAA,MAASC,MAAM,CACjD/N,OAAOqO,EAAAA,EAAAA,MACFH,UAASzI,EAAAA,EAAAA,GAAW,wBACpBzF,OAAMyF,EAAAA,EAAAA,GAAW,qBACtBnF,aAAa+N,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBAC1CrF,UAAUiO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACvCvF,WAAWmO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACxCsH,0BAA0BsB,EAAAA,EAAAA,MAASH,UAC/BzI,EAAAA,EAAAA,GAAW,0BAIbiJ,GAA0CZ,EAAAA,EAAAA,MAASC,MAAM,CAC3DC,wBAAwBC,EAAAA,EAAAA,MACnBC,UAASzI,EAAAA,EAAAA,GAAW,6BACpB0I,MAAM,EAAC,IAAO1I,EAAAA,EAAAA,GAAW,6BAC9B9C,wBAAwBmL,EAAAA,EAAAA,MAASI,UAASzI,EAAAA,EAAAA,GAAW,wBACrD7B,uBAAuBkK,EAAAA,EAAAA,MAASI,UAASzI,EAAAA,EAAAA,GAAW,0BAGlDkJ,GAA2Cb,EAAAA,EAAAA,MAASC,MAAM,CAC5DzN,aAAa+N,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBAC1CwG,SAASqC,EAAAA,EAAAA,MACJJ,UAASzI,EAAAA,EAAAA,GAAW,wBACpB8I,SAAS,CAAC,KAAK9I,EAAAA,EAAAA,GAAU,wBAC9BwH,MAAMoB,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACnCuH,SAASqB,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACtCmG,SAASyC,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACtCrF,UAAUiO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACvCvF,WAAWmO,EAAAA,EAAAA,MAASH,UAASzI,EAAAA,EAAAA,GAAW,wBACxCzF,OAAOqO,EAAAA,EAAAA,MACFH,UAASzI,EAAAA,EAAAA,GAAW,wBACpBzF,OAAMyF,EAAAA,EAAAA,GAAW,uBC/CpBmJ,EAA8BrB,GAE5BA,GACAA,EAAmBE,yBAClBF,EAAmBrN,WAChBqN,EAAmBnN,UACnBmN,EAAmB3B,SACnB2B,EAAmBP,SACnBO,EAAmBN,MACnBM,EAAmBjN,aAIzBuO,EAAuB,CAAC/L,EAAQf,KAClC,MAAM,gBACFuL,EADE,yBAEFP,EAFE,mBAGFQ,GACAzK,EAEJ,OAAIf,EACO0M,EAA8BK,SAAS,IACvCxB,EACHP,6BAIDqB,EACFU,SAAS,IACHxB,IAEN9M,MAAMsC,GACC8L,EAA2BrB,GACpBiB,EACFM,SAAS,IACHvB,IAENzM,OAAOC,IAEJ,MADAA,EAAMgO,YAAc,qBACdhO,CAAN,IAGD+B,GAfnB,EAgQJ,EA5O6B,EACzBF,WACAoM,mBACAC,sBACA3C,mBACA4C,sBACA9B,+BAEA,MAAM5K,GAAWmE,EAAAA,EAAAA,OAEbzE,SAAS,SAAEiN,EAAF,cAAY1C,EAAZ,mBAA2B1K,EAA3B,aAA+CqN,IACxDxM,EAEEyM,GAAuB3H,EAAAA,EAAAA,cACzB,CAACiF,EAAU3C,EAAI5K,KACX6P,GAAqBK,IAAD,IACbA,EACH,CAAC3C,GAAW,IACL2C,EAAc3C,GACjB,CAAC3C,GAAK5K,MAJd,GAQJ,CAAC6P,IAEC7C,GAAyB1E,EAAAA,EAAAA,cAC3B,CAAC6H,EAAkBtD,KACfgD,GAAqBK,IAAD,IACbA,EACHvC,yBAA0BwC,EAC1BjC,gBAAiB,IACVgC,EAAchC,gBACjBrB,cALR,GASJ,CAACgD,IAGCO,GAAa9H,EAAAA,EAAAA,cAAY,KAC3BwH,GAAoB,EAApB,GACD,CAACA,IAEEO,GAA0B/H,EAAAA,EAAAA,cAAY,KACxC,MAAMgI,EAA0B,CAAC,4BA2CjClN,EAASyC,GAAkB,IAC3BzC,EV8KwB,CAC5BR,KAAM2N,EAAAA,GACNzN,QAAS,CACL+I,OAAQ,MU/KR4D,EAAqBG,EAAkBjN,GAClCvB,MAjBuB,KACxBgC,UVwKuBb,EUxKKqN,EVwKI,CAACxM,EAAUC,KACnD,MAAM,QAAEP,GAAYO,IAAWG,SACzBgN,EAAc,IAAK1N,KAAYP,GACrC,OAAOkB,EAAAA,EAAAA,IAAI,kCAAmC+M,GACzCpP,MAAMC,GAAaA,EAASC,SAC5BF,MAAK,IAAMgC,EAASoC,GAAsB,MAC1C9D,OAAOoC,IASJ,MARIA,EAAGzC,SACHyC,EAAGzC,SAASC,OAAOF,MAAMO,IACrByB,EAASY,EAAYrC,IACrByB,EAASoC,GAAsB,GAA/B,IAGJpC,EAASY,EAAYF,IAEnBA,CAAN,GAZR,IAH+BvB,KUzK3B,IAkBKnB,MA9CW,KACZ,MAAM,QAAE0B,GAAYU,GAChB,mBAAEb,EAAF,wBAAsB8N,GAA4B3N,GAChD,gBACFoL,EADE,yBAEFP,EAFE,mBAGFQ,GACAyB,EAGJ,GADAxM,EAASL,EAAsB,kBAAmBmL,IAC9CvL,EAAoB,CACpBS,EVlE0BuK,KAAD,CACrC/K,KAAM8N,EAAAA,GACN5N,QAAS,CACL6K,8BU+DiBgD,CAA0BhD,IACZ7K,EAAQqK,iBAAiBP,MAC3CgE,GAAMA,EAAE1M,WAAayJ,IAE1BvK,EAASa,EAAWwM,GACvB,MACGrN,EACIL,EACI,qBACAoL,IAGR/K,EAASa,EAAWiK,EAAgBrB,UAExCiD,GAAoB,EAApB,IAsBCpO,OAhBYC,IACbA,EAAMkP,KACFP,EAAwBQ,QAAQnP,EAAMkP,OAAS,EACzClP,EAAMkP,KACL,GAAElP,GAAOgO,aAAe,qBACrBhO,EAAMkP,OAEpBzN,EAASY,EAAYrC,GAArB,IAUCoP,SAAQ,KACL3N,EAASyC,GAAkB,GAA3B,GALR,GAOD,CACCzC,EACAwM,EACAjN,EACAa,EACAsM,IAGEkB,GAA+B1I,EAAAA,EAAAA,cAAY,IAEzC,gBAAC,EAAD,CACIyE,OAAQsD,EACRnF,SAAU+E,EACVhD,UAAW2C,EACX1C,iBAAkBA,EAClBc,yBAA0BA,KAGnC,CACC4B,EACA1C,EACA+C,EACAI,EACArC,IAGEiD,GAAgC3I,EAAAA,EAAAA,cAAY,IAE1C,gBAAC,EAAD,CACI4C,SAAU+E,EACVjD,uBAAwBA,EACxBD,OAAQsD,EACRpD,UAAW2C,EACX1C,iBAAkBA,KAG3B,CACC0C,EACA1C,EACAF,EACAiD,EACAI,IAGJ,OAAKhD,EA4ED,gBAAC,EAAAnD,SAAD,KACI,uBAAKhE,UAAU,qBACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,iCAEb6G,GACE,gBAAC,EAAD,CACIlH,QAASoK,EACThQ,MAAM,OACN8F,UAAW,uCAIrBvD,GAAsBqO,IACvBrO,GAAsBsO,KAxFvB,gBAAC,EAAA/G,SAAD,KACI,uBAAKhE,UAAU,qBACX,uBAAKA,UAAU,yCACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,gCAEd6G,GACG,gBAAC,EAAAhD,SAAD,KACI,yBAAOhE,UAAU,4BACZG,EAAAA,EAAAA,GACG,2CAEA,IAER,qBAAGvG,KAAMiQ,EAAU7J,UAAU,mBACxBG,EAAAA,EAAAA,GACG,uCAEJ,KAEF1D,GACEqN,IACItD,EAAAA,GAAUsD,aAAakB,MACvB,qBACIlL,QAAS,IACL5C,EACIV,GAAoB,IAG5BwD,UAAU,mBAETG,EAAAA,EAAAA,GACG,2CAIf1D,GACGqN,IACItD,EAAAA,GAAUsD,aAAakB,MACvB,qBACIlL,QAAS,IACL5C,EACIV,GAAoB,IAG5BwD,UAAU,mBAETG,EAAAA,EAAAA,GACG,6CAO1B6G,GACE,gBAAC,EAAD,CACIlH,QAASoK,EACThQ,OAAOiG,EAAAA,EAAAA,GAAU,iBACjBH,UAAW,uCAIrBvD,GACEqN,IAAiBtD,EAAAA,GAAUsD,aAAamB,kBACxCH,KACFrO,GACEqN,IAAiBtD,EAAAA,GAAUsD,aAAamB,mBACxCF,IAKhB,EC1MJ,EA/EgC,EAAGpF,aAC/B,MAAMzI,GAAWmE,EAAAA,EAAAA,OACX,gBAAElD,EAAF,uBAAmBd,IAA2BuE,EAAAA,EAAAA,KAC/CC,GAAUA,EAAMvE,SAASV,UAG9B,OAAKuB,GAA8C,IAA3BA,EAAgB+B,OAIT,IAA3B/B,EAAgB+B,OAEZ,2BAASF,UAAU,gCACf,uBAAKA,UAAU,oCACV7B,EAAgB9D,KAAK4C,GAClB,wBACI+C,UAAU,0BACVlD,IAAKG,EAAOyH,IAEZ,yBAAIzH,EAAOuD,WAS/B,gBAAC,EAAAwD,SAAD,KACI,uBAAKhE,UAAU,OACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,6BAI/B,uBAAKH,UAAU,eAC8D,GAA3DtG,OAAOC,SAASuR,OAAON,QAAQ,yBAAiClR,OAAOkM,SAASC,aAAavI,SAASqI,QAAUjM,OAAOkM,SAASC,aAAavI,SAASqI,OAAtC,wBAClH,wBAAM3F,UAAU,8BACXtG,OAAOkM,SAASC,aAAavI,SAASqI,OAAtC,uBAAuE,KAK/ExH,GAAmBA,EAAgB+B,OAAS,GACzC,2BAASF,UAAU,gCACf,uBAAKA,UAAU,oBACV7B,EAAgB9D,KAAK4C,GAClB,yBAAO+C,UAAU,2CAA2ClD,IAAKG,EAAOyH,IACpE,yBACIhI,KAAK,QACL8D,KAAK,kBACLR,UAAU,gCACVlG,MAAOmD,EAAOyH,GACdwD,QACIjL,EAAOyH,KAAOrH,GAAwBqH,GAE1CM,SAAU,IACN9H,EAASF,EAAYC,MAG7B,wBAAM+C,UAAU,WACZ,yBAAG,IAAE/C,EAAOuD,KAAK,IAAEvD,EAAO4D,sBAOlD,uBAAKb,UAAU,OACV2F,EAAM,wBACH,wBAAM3F,UAAU,sDACX2F,EAAM,uBAA2B,MAhE3C,IAoBX,EC6DJ,EApF+B,KAC3B,MAAMzI,GAAWmE,EAAAA,EAAAA,OACX,QAAEzE,EAAF,OAAW+I,EAAS,CAAC,IAAM/D,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YACxD,kBAAE0B,GAAsBpC,EACxBuO,GAAiBC,EAAAA,EAAAA,QAAO,MAQ9B,OANAlJ,EAAAA,EAAAA,YAAU,KACFyD,IAAWA,EAAM,cAAkBzF,SACnCiL,EAAeE,QAAQvR,MAAQ,GAClC,GACF,CAAC6L,IAGA,gBAAC,EAAA3B,SAAD,KACI,2BAAShE,UAAU,gCACf,uBAAKA,UAAU,oCACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,2BAGnB,uBAAKH,UAAU,oCACX,uBAAKA,UAAU,iBACX,uBAAKA,UAAU,oBACX,yBACIsL,IAAKH,EACLnL,UAAU,cACV0E,GAAG,gBACHsB,aAAa7F,EAAAA,EAAAA,GAAU,yBACvB6E,SAAWhM,GACPkE,EACI0B,EAAgB5F,EAAMiM,OAAOnL,UAIxC6L,GAAUA,EAAM,cACb,wBACI3F,UAAU,qDACV,iBAAe,iBAEd2F,EAAM,aAAiB,KAIpC,uBAAK3F,UAAU,4BACX,0BACIA,UAAU,wCACVF,QAAS,IAAM5C,GZoKP,CAACA,EAAUC,KAC/C,MAAM,QAAEP,GAAYO,IAAWG,SAC/B,OAAOC,EAAAA,EAAAA,IAAI,gCAAiCX,GACvC1B,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACHN,EAAS6B,EAAqBvB,EAAOwB,oBACrC9B,GAASO,EAAAA,EAAAA,OACTP,EAASS,EAAiBH,EAAOE,iBACjCtB,EAAAA,EAAAA,MAEAc,EACIY,EAAY,CACRU,WAAY,CACRK,aAAc,MAH1B,IAQHrD,OAAOoC,IACJV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,MAE/CyB,GAASO,EAAAA,EAAAA,MAAT,GAnBR,MYpK6B0C,EAAAA,EAAAA,GAAU,+BAIvB,uBAAKH,UAAU,iBACX,uBAAKA,UAAU,mBACVhB,GACGA,EAAkB3E,KAAKwE,GACnB,uBAAKmB,UAAU,OAAOlD,IAAK+B,GACvB,wBAAMmB,UAAU,wCACXG,EAAAA,EAAAA,GACG,gCACD,IAAI,IACLtB,EAAa,KAEnB,qBACImB,UAAU,kBACVF,QAAS,IACL5C,EZyKb2B,IAAiB,CAAC3B,EAAUC,KAC3D,MAAM,QAAEP,GAAYO,IAAWG,SAE/B,OADAV,EAAQiC,aAAeA,GAChB0M,EAAAA,EAAAA,IAAO,mCAAoC3O,GAC7C1B,MAAMC,GAAaA,EAASC,SAC5BF,MAAMsC,IACHN,EAAS6B,EAAqBvB,EAAOwB,oBACrC9B,GAASO,EAAAA,EAAAA,OACTP,EAASS,EAAiBH,EAAOE,gBACjCR,EAAS0B,EAAgB,KAEzB1B,EACIY,EAAY,CACRU,WAAY,CACRK,aAAc,MAH1B,IAQHrD,OAAOoC,IACJV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,MAE/CyB,GAASO,EAAAA,EAAAA,MAAT,GAnBR,EY3KgD+N,CACI3M,IAIZ3E,OAAOiG,EAAAA,EAAAA,GAAU,2BA5DzD,ECsBJ,EAvC0B,KACtB,MAAMwB,GAAOC,EAAAA,EAAAA,KAAaC,GAAUA,EAAMF,OAE1C,OACI,uBAAK3B,UAAU,oFACX,4BACKG,EAAAA,EAAAA,GAAU,gCAAiC,IAC5C,wBAAMH,UAAU,mCAAyC,IACxD2B,EAAK+D,YAEV,4BACKvF,EAAAA,EAAAA,GAAU,2BAA4B,IACvC,wBAAMH,UAAU,mCAAyC,IACxD2B,EAAK8J,UAEV,4BACKtL,EAAAA,EAAAA,GAAU,+BAAgC,IAC3C,wBAAMH,UAAU,mCAAyC,IACxD2B,EAAK+J,cAEV,4BACKvL,EAAAA,EAAAA,GAAU,8BAA+B,IAC1C,wBAAMH,UAAU,mCAAyC,IACxD2B,EAAKgK,aAEV,2BACKxL,EAAAA,EAAAA,GAAU,6BAA8B,IACzC,wBAAMH,UAAU,mCAAyC,IACxD2B,EAAKiK,YAEV,4BACKzL,EAAAA,EAAAA,GAAU,sBAAuB,IAClC,wBAAMH,UAAU,mCAAyC,IACxD2B,EAAKkK,KA9BlB,ECcJ,EAhB0B,KACtB,MAAM3O,GAAWmE,EAAAA,EAAAA,MACXyK,GAAYlK,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,SAASV,QAAQkP,YAEhE,OACI,uBAAK9L,UAAU,uFACVG,EAAAA,EAAAA,GAAU,0BACX,4BACIH,UAAU,sCACVlG,MAAOgS,EACP9G,SAAWhM,GAAUkE,EdiLR4O,KAAD,CACxBpP,KAAMqP,EAAAA,GACNnP,QAAS,CACLkP,ecpLsCE,CAAahT,EAAMiM,OAAOnL,UANpE,EC4CJ,EAhD+B,EAAG6L,aAC9B,MAAMzI,GAAWmE,EAAAA,EAAAA,OACX,QAAEzE,IAAYgF,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YAC3C,eAAEe,EAAF,sBAAkBC,GAA0B1B,EAElD,OACI,gBAAC,EAAAoH,SAAD,KACI,uBAAKhE,UAAU,OACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,4BAGlB9B,GAAkBA,EAAe6B,OAAS,GACvC,2BAASF,UAAU,gCACf,uBAAKA,UAAU,oCACV3B,EAAehE,KAAI,CAAC4C,EAAOoD,IACxB,yBAAOL,UAAU,gBAAgBlD,IAAKuD,EAAQpD,EAAOyH,IACjD,yBACIhI,KAAK,QACL8D,KAAK,iBACLR,UAAU,gCACVlG,MAAOmD,EAAOyH,GACdwD,QACIjL,EAAOyH,KAAOpG,EAAsBoG,GAExCM,SAAU,IACN9H,EAASqB,EAAWtB,MAG5B,wBAAM+C,UAAU,2BACZ,yBAAG,IAAE/C,EAAOuD,KAAK,WAOzC,uBAAKR,UAAU,OACV2F,EAAM,uBACH,wBAAM3F,UAAU,sDACX2F,EAAM,sBAA0B,KAnCrD,E,cCRJ,MAAMsG,GAAgB,wCAChBC,GAAoB,gCAEpBC,GAAkBC,IACpB,IAAIC,EACAC,EAAOF,EACX,MAAMG,EAAU,GACZC,EAAc,GAClB,KAAqD,QAA7CH,EAAUJ,GAAcQ,KAAKL,KACjCE,EAAOA,EAAKI,QAAQL,EAAQ,GAAI,IAChCA,EAAQ,IAA4B,KAAtBA,EAAQ,GAAGM,QAAiBJ,EAAQhQ,KAAK8P,EAAQ,IAEnE,KAAyD,QAAjDA,EAAUH,GAAkBO,KAAKL,KACrCC,EAAQ,IAA4B,KAAtBA,EAAQ,GAAGM,QAAiBH,EAAYjQ,KAAK8P,EAAQ,IAGvE,MAAO,CACHC,OACAC,UACAC,cAHJ,EAOEI,GAAgB,CAACC,EAAOC,KAC1B,MAAMC,EAAS9S,SAAS+S,cAAc,UACtCD,EAAOrQ,KAAO,kBACd,IACIqQ,EAAOE,YAAYhT,SAASiT,eAAeJ,GAC9C,CAAC,MAAOK,GAELJ,EAAOnG,KAAOkG,CACjB,CACD7S,SAASsI,eAAesK,GAAOI,YAAYF,EAA3C,EAGEK,GAAgB,CAACP,EAAOQ,KAC1B,MAAMN,EAAS9S,SAAS+S,cAAc,UACtCD,EAAOrQ,KAAO,kBACdqQ,EAAOzM,IAAM+M,EACbpT,SAASsI,eAAesK,GAAOI,YAAYF,EAA3C,EAoBJ,GAjBsBO,EAAAA,MAAW,UAAuB,eAAEC,IActD,MAbsBC,KAClB,MAAMC,GAAiBC,EAAAA,EAAAA,GAAiB,CACpCC,OAAQ,IAAM,+BAEZC,EAAO,CACTJ,iBACArB,kBACAS,iBACAQ,kBAEJ,OAAO,gBAACK,EAAmBG,EAA3B,EAGGC,CAAaN,EACvB,IC6DD,GAlHiC,KAC7B,MAAMrQ,GAAWmE,EAAAA,EAAAA,OACX,QAAEzE,EAAF,OAAW+I,EAAS,CAAC,IAAM/D,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YACxD,gBAAE0K,EAAkB,CAAC,GAAMpL,EAI3ByK,EAAW,qBAEXD,EAAQ,CACVtB,EACApB,EACAqB,EAAe,KACfC,EAAc,KACdtJ,EAAO,OACPkI,EAAY,MAEZ,uBAAK5E,UAAW8F,GACZ,yBAAO9F,UAAU,cAAckG,QAAU,GAAEmB,KAAY3C,MAClDvE,EAAAA,EAAAA,GAAW,4BAA2BuE,EAAG4C,kBAE9C,yBACItH,UAAU,cACV0E,GAAK,GAAE2C,KAAY3C,IACnBlE,KAAO,GAAE6G,KAAY3C,IACrBhI,KAAMA,EACN5C,OAAQ8C,EAAQyK,IAAa,CAAC,GAAG3C,IAAO,GACxCsB,YAAaA,EACbD,aAAcA,EACdf,SAAWhM,GAAUgM,SAASN,EAAI1L,EAAMiM,OAAOnL,OAC/C8K,UAAWA,IAEde,EAAQ,GAAE0B,KAAY3C,MACnB,wBACI1E,UAAU,qDACV,iBAAiB,GAAEqH,KAAY3C,KAE9BiB,EAAQ,GAAE0B,KAAY3C,KAAM,KAK7C,OACI,uBAAK1E,UAAU,4BAEP,uBAAKA,UAAU,aACVoH,EACG,kBACA,YACA,uBAEHA,EACG,kBACA,WACA,wBAEHA,EACG,mBACA,UACA,2BAEHA,EACG,kBACA,UACA,uBACA,KACA,OACA,IAEHA,EACG,kBACA,OACA,0BACA,KACA,OACA,KAEJ,uBAAKpH,UAAU,oBACX,yBAAOA,UAAU,cAAckG,QAAQ,aAClC/F,EAAAA,EAAAA,GAAU,kCAEf,0BACIH,UAAU,cACV0E,GAAG,WACH5K,MAAOkO,EAAgBrB,QACvB3B,SAAWhM,IACPgM,SAAS,UAAWhM,EAAMiM,OAAOnL,OACjCoD,EAASa,EAAW/E,EAAMiM,OAAOnL,OAAjC,GAGJ,0BAAQA,MAAM,GAAGiG,UAAQ,IACpBI,EAAAA,EAAAA,GACG,8CAGPqG,EAAAA,GAAUC,WACPD,EAAAA,GAAUC,UAAUpM,KAAI,EAAGuM,OAAM9M,WAC7B,0BACIA,MAAOA,EACPgD,IAAM,YAAWhD,KAEhB8M,OAKpBQ,EAAM,mBAAoB,cAAe,gBACzCA,EAAM,mBAAoB,QAAS,mBAjEpD,ECCJ,GA3CwC,KACpC,MAAMlK,GAAWmE,EAAAA,EAAAA,OACX,QAAEzE,IAAYgF,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YAC3C,kBAAEwQ,EAAoB,GAAtB,0BAA0BC,GAA8BnR,EAExDoR,EAA2BC,IAC7B/Q,ElBwDmC6Q,KAAD,CACtCrR,KAAMwR,EAAAA,GACNtR,QAAS,CACLmR,+BkB3DSI,CAA2BF,GAApC,EAGE5H,EAAcC,IAChB,MAAMK,EAAUH,EAAAA,GAAUC,UAAYD,EAAAA,GAAUC,UAAUC,MAAMpM,GAAMA,EAAER,QAAUwM,EAAQK,UAAW,KACrG,OAAOA,EAAUA,EAAQC,KAAON,EAAQK,OAAxC,EAOJ,OAAKmH,GAAkD,IAA7BA,EAAkB5N,OAKxC,gBAAC,EAAA8D,SAAD,KACI,yBAAOkC,QAAQ,gCAAgClG,UAAU,gBACpDG,EAAAA,EAAAA,GAAU,kCAEf,0BACIuE,GAAG,gCACH1E,UAAU,cACVlG,MAAOiU,EACP/I,SAAWhM,GAAUgV,EAAwBhV,EAAMiM,OAAOnL,QAEzDgU,EAAkBzT,KAAKiM,GACpB,0BAAQxM,MAAOwM,EAAQtI,SAAUlB,IAAKwJ,EAAQtI,UApBpCsI,IACf,CAACA,EAAQA,QAASA,EAAQoB,QAASpB,EAAQqB,KAAMtB,EAAWC,IAAUhC,QAAQhK,KAAQA,IAAGsN,KAAK,MAoBpFC,CAAiBvB,QAhB3B,IAGX,ECsDJ,GA3E6C,KACzC,MAAMpJ,GAAWmE,EAAAA,EAAAA,OACX,QAAEzE,EAAF,OAAW+I,EAAS,CAAC,IAAM/D,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YACvD8Q,EAAoBC,IAAuB7M,EAAAA,EAAAA,WAAS,IACpD8M,EAAiBC,IAAoB/M,EAAAA,EAAAA,WAAS,IAC9CgN,EAAUC,IAAejN,EAAAA,EAAAA,WAAS,IACnC,cAAE2F,EAAF,cAAiBuH,EAAjB,aAAgCC,GAAiB/R,EAEjDgS,EAAwB9U,IAC1B,MAAM6U,EAAyB,SAAV7U,EACrB2U,EAAYE,GACZzR,EnByDwByR,IAAiB,CAC7CzR,EACAC,KAEAD,EAAS,CACLR,KAAMmS,EAAAA,GACNjS,QAAS,CACL+R,kBAGR,MAAM,QAAE/R,GAAYO,IAAWG,SAC/B,OAAOnE,EAAAA,EAAAA,IAAM,GAAEwC,iBAA0BiB,GAASpB,OAAOoC,GACrDV,GAASW,EAAAA,EAAAA,GAAWD,GAAKnC,GAAUqC,EAAYrC,OADnD,EmBpEaqT,CAAgBH,GAAzB,EAQJ,OALAzM,EAAAA,EAAAA,YAAU,KACNmM,EAAoBG,GACpBD,GAAkBC,EAAlB,GACD,CAACA,IAGA,uBAAKxO,UAAU,gCACX,uBAAKA,UAAU,6CACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,qBACVG,EAAAA,EAAAA,GAAU,2BAEf,uBAAKH,UAAU,oBACX,yBACIA,UAAU,cACVkG,QAAQ,mCAEP/F,EAAAA,EAAAA,GACG,+CAGR,0BACIH,UAAU,cACV0E,GAAG,iCACH5K,MAAO6U,EACP5O,UAAWoH,EACXnC,SAAWhM,GACP4V,EAAqB5V,EAAMiM,OAAOnL,QAGrC4U,GACGA,EAAcrU,KAAKqC,GACf,0BACI5C,MAAO4C,EAAKiS,aACZ7R,IAAKJ,EAAK8D,MAET9D,EAAK8D,SAIrBmF,EAAM,cACH,wBACI3F,UAAU,qDACV,iBAAe,gBAEd2F,EAAM,aAAiB,MAKvCyI,IAAuBE,GACpB,gBAAC,GAAD,MAEHA,IAAoBF,GACjB,gBAAC,GAAD,OAjDhB,E,qECxBJ,MAAMW,GAAQrV,OAAOsV,aAAaC,QAAQ,4BACpCC,GAAa,cCcJC,GAAqBC,IAChC,GAlBkBA,IACM,WAAjBA,EAAKC,QAiBRC,CAAaF,KAdOA,MACfA,EAAK9O,KAAoB,KAAb8O,EAAK9O,IAaCiP,CAAiBH,GACtCA,EAAKI,YACPJ,EAAKI,WAAWC,aAZGL,KACvB,MAAMrC,EAAS9S,SAAS+S,cAAc,UACtCD,EAAOnG,KAAOwI,EAAKM,UACnB,IAAK,IAAIC,EAAIP,EAAKQ,WAAW1P,OAAS,EAAGyP,GAAK,EAAGA,IAC/C5C,EAAO8C,aAAaT,EAAKQ,WAAWD,GAAGnP,KAAM4O,EAAKQ,WAAWD,GAAG7V,OAElE,OAAOiT,CAAP,EAMiC+C,CAAgBV,GAAOA,OAEjD,CACL,IAAIO,EAAI,EACR,MAAMI,EAAWX,EAAKY,WACtB,KAAOL,EAAII,EAAS7P,QAClBiP,GAAkBY,EAASJ,KAE9B,CACD,OAAOP,CAAP,ECbEa,GAA2B,oBAElB,SAASC,KAEpB,MAAMC,EAAmB7C,EAAAA,OAA6B,OAE/C8C,EAAeC,GAAoB/C,EAAAA,SAA8B,OAEjEgD,EAASC,GAAcjD,EAAAA,SAAqC,OAC5DkD,EAAaC,GAAkBnD,EAAAA,SAA8B,KAE7DoD,EAAeC,GAAoBrD,EAAAA,SAExC,OAEKsD,EAAWC,GAAgBvD,EAAAA,UAAe,GAC3CpQ,GAAWmE,EAAAA,EAAAA,MAEXP,EAAiB,CAAC,EAClBgQ,EAAcxD,EAAAA,QAAa,GAEjC,IAAIyD,GAAUnP,EAAAA,EAAAA,KADAC,GAAqBA,EAAMF,OAEzC,MACMqP,GAAYpP,EAAAA,EAAAA,KADFC,GAAqBA,EAAMoP,UAEpCC,EAAUC,GAAa7D,EAAAA,SAAe0D,EAAUI,UACvDtQ,EAAeiQ,EAAQlV,eAAiB,IAAIoF,gBAE5CqM,EAAAA,WAAgB,KACRwD,EAAYzF,QACZyF,EAAYzF,SAAU,EAG1BgG,EAAoBf,GAAS,EAA7B,GACD,CAACU,EAAUI,WAEd9D,EAAAA,WAAgB,KACZgE,GAAsB,GACvB,IAEH,MAAMA,EAAuBvY,UAIzB,MAAMwY,EAAoB7X,OAAOsV,aAAaC,QAC1CgB,IAEJ,GAAIsB,EAAmB,CACnBV,GAAa,GACb,IACI,MAAMW,QFxCKC,EEwCiCF,EFtCpDG,KAAAA,IAA6D,GAAExC,4BAAsCuC,EAAW,CAC5GE,QAAS,CACL,yBAA0BjY,OAAOsV,aAAaC,QAAQ,kBACtD,yBAA4BF,MAErCvT,OAAMC,IACPH,QAAQsW,KAAKnW,EAAb,KEiCU,GAA0BgF,MAAtB+Q,EAWA,MAAM,IAAIK,MAAM,6BAThB,IAAKL,EAAmBnV,MAnDrB,YAmD6BmV,EAAmBnV,KAAKiU,QAAQwB,OAAOC,cACnE,MAAM,IAAIF,MAAM,6BAEpBG,EACIR,GAAoBnV,KAAKiU,QACzBkB,GAAoBnV,KAAK4V,aAMpC,CACD,MAEIC,IACAC,GACH,CApBD,QAsBItB,GAAa,EAChB,CACJ,MAEGsB,IFjEeV,KEkElB,EAGCO,EAAyB,CAC3B1B,EACA8B,KAEA7B,EAAWD,GACXG,EAAeD,GAGfL,EAAiB9E,QAASqE,UAAY0C,EAItCjD,GAAkBlV,SAASsI,eAAe,yBAI1C7I,OAAO2Y,KAAMC,IACTA,EAAIC,GAAG,gBAAgB,CAAClW,EAAMmW,KACtBA,EAAKC,eACLpC,EAAiBhU,EAAKqE,MACzB,GAHL,IAWAhH,OAAO2Y,KACP3Y,OAAO2Y,KAAKC,IACRA,EAAIC,GAAG,qBAAsBG,GACzBpX,QAAQC,IAAI,sBAAuBmX,KAEvCJ,EAAIC,GAAG,gCAAiCI,GACpCrX,QAAQC,IAAI,iCAAkCoX,KAGlDL,EAAIC,GAAG,gBAAgB,CAAClW,EAAMmW,KAC1BlX,QAAQC,IAAI,eAAgB,CAAEc,OAAMmW,SACpCnB,EAAoBf,EAApB,GAFJ,GAKP,EAGC6B,EAAsBpZ,UACxB8X,GAAa,GAEb,IACI,MAAM+B,QFnIdlB,KAAAA,KACG,GAAExC,oBAA6B,KAAM,CACtCyC,QAAS,CACP,yBAA0BjY,OAAOsV,aAAaC,QAAQ,kBACtD,yBAA4BF,MAG9BvT,OAAMC,IACNH,QAAQsW,KAAKnW,EAAb,IE4HMuW,EACIY,GAAiBvW,KAAKiU,QACtBsC,GAAiBvW,KAAK4V,cAI1BvY,OAAOsV,aAAa6D,QAChB5C,GACA2C,EAAgBvW,KAAKiU,QAAQ5L,GAEpC,CAZD,QAaImM,GAAa,EAChB,GAGCQ,EAAsBtY,MAAOuX,EAASwC,GAAW,KAEnDjC,GAAa,GACb,IAKI,GAHAnX,OAAO2Y,KAAMC,GAAQA,EAAIS,YAGV,MAAXzC,EAAiB,CACjB,MAAM0C,QFlIQvB,EEkIoCnB,EAAS5L,GFhIvEgN,KAAAA,KAA8D,GAAExC,+BAAyCuC,EACvG,KACA,CACEE,QAAS,CACP,yBAA0BjY,OAAOsV,aAAaC,QAAQ,kBACtD,yBAA4BF,MAInCvT,OAAMC,IACLH,QAAQsW,KAAKnW,EAAb,KEwHY8U,EAAWyC,GAAuB3W,MAAMiU,SAIxC5W,OAAO2Y,KAAMC,GAAQA,EAAIW,WACpBH,IACD5V,GACIgW,EAAAA,EAAAA,IAAmBnC,EAAQlV,cAAekV,EAAQjV,SAAUgF,EAAeiQ,EAAQlV,iBAEvFqB,EAASwB,KAEhB,CAEJ,CArBD,QAsBImS,GAAa,EAChB,CFnJqBY,KEmJrB,EAICS,EAAqB,KACvBxY,OAAOsV,aAAamE,WAAWlD,IAC/BI,EAAiB,MACjBF,EAAiB9E,QAASqE,UAAY,GACtCa,EAAW,MACXI,EAAiB,KAAjB,EAGJ,OACI,uBACIyC,MAAO,CACHC,UAAW,SACXC,MAAO,SAMX,gBAAC,KAAD,CAAOC,UAAU,WAAWC,MAAM,SAASC,KAAK,UAC5C,uBACInI,IAAK6E,EAELiD,MAAO,CAAEE,MAAO,UAInB5C,GACG,gBAAC,KAAD,CACIxW,MAAM,iBACNkZ,MAAOM,GACPC,UAAWC,IAEX,gBAAC,KAAD,CACIC,UAAW,EACXvT,IAAKoQ,EACLoD,MAAM,qBACNV,MAAO,CAAEC,UAAW,YAO/C,CAGD,MAAMK,GAAY,CAAEJ,MAAO,QACrBM,GAAiC,CACnCP,UAAW,OACXU,WAAY,KCgYhB,GAvjBiB,KACb,MAAM7W,GAAWmE,EAAAA,EAAAA,MACXM,GAAOC,EAAAA,EAAAA,KAAaC,GAAUA,EAAMF,OACpCrE,GAAWsE,EAAAA,EAAAA,KAAaC,GAAUA,EAAMvE,YAEvC0W,EAA0BC,IAA+BzS,EAAAA,EAAAA,WAC5D,IAEG0S,EAAyBC,IAA8B3S,EAAAA,EAAAA,WAC1D,IAEG4S,EAA2BC,IAAgC7S,EAAAA,EAAAA,WAC9D,IAEG8S,EAA0BC,IAA+B/S,EAAAA,EAAAA,WAC5D,IAEGgT,EAAyBC,IAA8BjT,EAAAA,EAAAA,WAC1D,IAEGkT,EAAwBC,IAA6BnT,EAAAA,EAAAA,WAAS,IAC9DsG,EAA0B8M,IAA+BpT,EAAAA,EAAAA,WAC5D,IAIA5E,SAAS,gBACLoL,EADK,mBAELC,EAFK,yBAGLR,EAHK,uBAILpK,EAJK,sBAKLiB,EALK,gBAMLH,EANK,eAOLE,IAEJf,GACG0J,EAAkB4C,IAAuBpI,EAAAA,EAAAA,WAAS,IAClDkI,EAAkBC,IAAuBnI,EAAAA,EAAAA,UAAS,CACrDwG,kBACAC,qBACAR,6BAEEoN,IAAWzS,EAAAA,EAAAA,cAAY,IAAMlF,GvBoLX,CAACA,EAAUC,KACnC,MAAM,QAAEP,GAAYO,IAAWG,SAC/B,OAAO4B,EAAQ,gBAAiBtC,EAASM,EAAzC,KuBtLuD,CAACA,IAClD4X,IAAgB1S,EAAAA,EAAAA,cACjB3G,IACGyB,EAASY,EAAYrC,IACrByB,EAASmC,EAAW,MAApB,GAEJ,CAACnC,IAoBC6X,IAAa3S,EAAAA,EAAAA,cAAY,KAC3B,MAAM,QAAExF,GAAYU,GAChB,mBACIb,EADJ,yBAEIgL,EAFJ,uBAGIiB,EAHJ,sBAIIpK,EAJJ,uBAKIjB,EALJ,aAMIsR,EANJ,cAOIqG,GACApY,EACFwN,EAA0B,CAC5B,2BACA,wBACA,yBACA,yBACA,iBAEE6K,EAAU,CAACxZ,EAAOgO,EAAc,qBAClChO,EAAMkP,KACFP,EAAwBQ,QAAQnP,EAAMkP,OAAS,EACzClP,EAAMkP,KACL,GAAElB,KAAehO,EAAMkP,OAClCmK,GAAcrZ,GACdyB,EAASoC,GAAsB,GAA/B,EAGJpC,EAASoC,GAAsB,IAC3B7C,EACIkS,EACAtF,EACKG,SAAS,IACH5M,EAAQqL,qBAEd/M,MAAK,KACFga,sBACK1L,SAAS,CACN/B,2BACAnJ,wBACAjB,yBACAqL,yBACAsM,kBAEH9Z,MAAK,KACF2Z,IAAU,IAEbrZ,OAAOC,IACJwZ,EAAQxZ,EAAO,kBAAf,GAZR,IAeHD,OAAOC,IACJwZ,EAAQxZ,EAAO,qBAAf,IAGR0N,EACKK,SAAS,IACH5M,EAAQoL,gBACXP,6BAEHvM,MAAK,KACFkO,EACKI,SAAS,CACNlL,wBACAjB,yBACAqL,yBACAsM,kBAEH9Z,MAAK,KACF2Z,IAAU,IAEbrZ,MAAMyZ,EAVX,IAYHzZ,MAAMyZ,GAGfnM,EACKU,SAAS,IACH5M,EAAQoL,kBAEd9M,MAAK,KAEEoO,EAA2B1M,EAAQqL,oBAEnCiB,EACKM,SAAS,IACH5M,EAAQqL,qBAEd/M,MAAK,KACFqN,EACKiB,SAAS,CACNlL,wBACAjB,yBACAqL,yBACAsM,kBAEH9Z,MAAK,KACF2Z,IAAU,IAEbrZ,MAAMyZ,EAVX,IAYHzZ,OAAOC,IACJwZ,EAAQxZ,EAAO,qBAAf,IAGR8M,EACKiB,SAAS,CACNlL,wBACAjB,yBACAqL,yBACAsM,kBAEH9Z,MAAK,KACF2Z,IAAU,IAEbrZ,MAAMyZ,EACd,IAEJzZ,MAAMyZ,EACd,GACF,CAAC3X,EAAUJ,EAAU2X,GAAUC,KAE5BK,IAAwB/S,EAAAA,EAAAA,cAAY,KACtC6R,GAA4B,GAC5BE,GAA2B,GAC3BE,GAA6B,GAC7BE,GAA4B,GAC5BE,GAA2B,GAC3BE,GAA0B,GAC1BC,GAA4B,EAA5B,GACD,IAEGQ,IAA4BhT,EAAAA,EAAAA,cAC7BiT,GACUlX,EAAgBuI,MAClBzJ,GAAWA,EAAOqY,kBAAoBD,KAG/C,CAAClX,IAGC2S,IAAc1F,EAAAA,EAAAA,SAAO,GAmJ3B,IAhJAlJ,EAAAA,EAAAA,YAAU,KACN,IAAK4O,GAAYzF,QACb,OAIJ,GAFAyF,GAAYzF,SAAU,GAEjB/N,EACD,OAGJ,MAAM,sBACFgB,EADE,uBAEFjB,EAFE,gBAGF2K,EAHE,mBAIFC,EAJE,kBAKF6F,GACAxQ,EAASV,QAGb0B,GAAyBpB,EAASqB,EAAWD,IAE7CjB,GAA0BH,EAASF,EAAYK,IAE/CsM,GAAqBK,IAAD,IACbA,EACHhC,gBAAiB,IACTA,GAAmB,CAAC,EACxBrB,QACIqB,GAAiBrB,SAAWH,EAAAA,GAAUC,UAAU,GAAG3M,OAE3DmO,mBAAoB,IACZA,GAAsB,CAAC,EAC3BtB,QACIsB,GAAoBtB,SAAWH,EAAAA,GAAUC,UAAU,GAAG3M,UAVlE,GAaD,CAACwD,EAAUJ,KAGdgF,EAAAA,EAAAA,YAAU,KAEN,OADAiT,KACQ7W,GAAuBgX,iBAC3B,KAAKC,EAAAA,GAAuBC,eACxBnB,GAA6B,GAC7BM,GAA0B,GAC1B,MACJ,KAAKY,EAAAA,GAAuBE,eACpBzO,GACAyN,GAA2B,GAE/BE,GAA0B,GAC1BC,GAA4B,GAC5B,MACJ,KAAKW,EAAAA,GAAuBG,cACpB1O,GACA2N,GAA0B,GAE9BF,GAA2B,GAGnC,OACIW,GAA0BO,EAAAA,GAAwBC,kBAE3C3B,GAA4B,GAGnCmB,GAA0BO,EAAAA,GAAwBE,iBAG9C5B,GAA4B,IAC5BM,GAA4B,QAIhClX,GAAwBiY,kBACxBK,EAAAA,GAAwBG,QAExBvB,GAA4B,GAC/B,GACF,CACClX,EACAiB,EACAH,EACAE,EACA8W,GACAC,GACApO,KAIJ9E,EAAAA,EAAAA,YAAU,KACNhF,EAASoC,GAAsB,IAC3B0H,GAGJuC,EACIG,EACApM,EAASV,QAAQH,oBAEhBvB,MAAK,KACFgC,EAASoC,GAAsB,GAA/B,IAEH9D,OAAM,KACH0B,EAASoC,GAAsB,GAA/B,GARR,GAUD,CACCpC,EACA8J,EACA0C,EACApM,EAASV,QAAQH,sBAIrByF,EAAAA,EAAAA,YAAU,KACN,GAAI5E,EAASE,QAAUF,EAASE,OAAOuY,YAEnC,YADArc,OAAOC,SAAW2D,EAASE,OAAOuY,aAItC,IAAKzY,EAASqI,OACV,OAGJ,MAAMqQ,EAAYC,OAAOC,KAAK5Y,EAASqI,QACvC,IAAKqQ,GAAaA,EAAU9V,OAAS,EACjC,OAGJ,MAAMiW,EAAYlc,SAASmc,cACtB,oBAAmBJ,EAAU,QAElC,IAAKG,EACD,OAGJ,MAAME,EAAYF,EAAUG,cAAcF,cAAc,SACpDC,GACAE,YAAW,IAAMF,EAAUG,SAAS,KACpCH,EAAUI,eAAe,CAAEC,SAAU,YAErCP,EAAUM,eAAe,CAAEC,SAAU,UACxC,GACF,CAACpZ,EAASE,OAAQF,EAASqI,UAEzBhE,IAASA,EAAKG,WAAaH,EAAKG,UAAU5B,OAAS,EACpD,OACI,uBAAKF,UAAU,OACX,uBAAKA,UAAU,oBACX,sBAAIA,UAAU,2CACTG,EAAAA,EAAAA,GAAW,0BAOhC,MAAM,QAAEvD,GAAF,OAAW+I,GAAS,CAAC,GAAMrI,GAC7B,cACII,GADJ,cAEIyJ,GAFJ,mBAGI1K,GAHJ,aAIIqN,GAJJ,oBAKI6M,GALJ,sBAMIC,GANJ,iBAQI3P,GARJ,YASIC,IACAtK,GACF2Q,GAAiB7P,GAAgBA,GAAc6P,eAAiB,KAChEsJ,GAAYnZ,GAAgBA,GAAcoZ,cAAgB,KAE5DrP,GAA4BR,IACtBA,GAAiBP,MACdJ,GAAYA,EAAQtI,WAAayJ,IAY9C,OACI,gBAAC,EAAAzD,SAAD,KACI,gBAAC,EAAD,CAAc2B,OAAQA,KACrB,gBAAC,EAAD,MAEAqO,GACGvX,IACI,gBAAC,EAAAuH,SAAD,KACI,uBAAKhE,UAAU,OACX,uBAAKA,UAAU,oCACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,8BAIvB,gBAAC,EAAD,CAAyBwF,OAAQA,MAI5ClJ,IAAsBma,IACnB,gBAAC,GAAD,MAGHxC,GACG,gBAAC,EAAD,CACI9W,SAAUA,EACVoM,iBAAkBA,EAClB1C,iBAAkBA,EAClB2C,oBAAqBA,EACrBC,oBAAqBA,EACrB9B,yBAA0BA,IAIjCrL,KAAuBma,IACpB,2BAAS5W,UAAU,oCACf,uBAAKA,UAAU,qBACX,gBAAC,GAAD,SAKVvD,IACE,2BAASuD,UAAU,oCACf,uBAAKA,UAAU,YACX,gBAACkQ,GAAD,QAKXzT,IAAsByX,GACnB,gBAAC,EAAD,CAAwBvO,OAAQA,KAGnCjI,IAAiB8W,GACd,gBAAC,GAAD,CACI1X,IAAK+Z,GACLtJ,eAAgBA,KAIvBmH,GACG,gBAAC,EAAA1Q,SAAD,KACI,uBAAKhE,UAAU,OACX,uBAAKA,UAAU,oCACX,sBAAIA,UAAU,4BACTG,EAAAA,EAAAA,GAAU,2BAKvB,2BAASH,UAAU,uDACf,gBAAC,EAAD,MACA,gBAAC,EAAD,OAGJ,uBAAKA,UAAU,OACX,uBAAKA,UAAU,oCACX,yBACIA,UAAU,gCACVtD,KAAK,WACLgI,GAAG,yBACHwD,QAAStL,GAAQ8L,uBACjB1D,SAAWhM,GACPkE,EvBhVGwL,KAAD,CAClChM,KAAMqa,EAAAA,GACNna,QAAS,CACL8L,4BuB8UgCA,CACI1P,EAAMiM,OAAOiD,YAK7B,yBACIlI,UAAU,gCACVkG,QAAQ,2BAEP/F,EAAAA,EAAAA,GACG,yCACD,IACH,qBACIH,UAAU,iBACVpG,KAAMgD,GAAQoa,SACd/R,OAAO,SACPgS,IAAI,eAEH9W,EAAAA,EAAAA,GAAU,yBAGlBwF,GAAM,wBACH,wBACI3F,UAAU,qDACV,iBAAe,0BAEd2F,GAAM,uBAA2B,MAMlD,uBAAK3F,UAAU,wBACX,uBAAKA,UAAU,oCACTmH,KACG1K,IACGqN,KACAtD,EAAAA,GAAUsD,aAAamB,iBAU3B,gBAAC,EAAD,CACIlL,UAAWzC,EAASoC,oBACpBM,UAAU,iCACVF,QAASiV,GACT7a,OAAOiG,EAAAA,EAAAA,GAAU,uBACjBzD,KAAK,WAdT,gBAAC,EAAD,CACIsD,UAAU,iCACVF,QAAS,IACJnG,SAASC,KAAOgD,GAAQiN,SAE7B3P,OAAOiG,EAAAA,EAAAA,GAAU,qCA0BzC,uBAAKH,UAAU,OACV2F,IAAUA,GAAM,SACb,qBAAG3F,UAAU,8BACR2F,GAAM,QAAY,IAG1BA,IAAUA,GAAM,SACb,qBAAG3F,UAAU,8BACR2F,GAAM,QAAY,KAnKvC,C","sources":["webpack:///./Scripts/Actions/Conversion.action.js","webpack:///./Scripts/Actions/Gtm.action.js","webpack:///./Scripts/Actions/Checkout.action.js","webpack:///./Scripts/Components/Button.js","webpack:///./Scripts/Components/ComplimentaryProducts.js","webpack:///./Scripts/Components/Hillerstorp/Cart.js","webpack:///./Scripts/Components/Hillerstorp/Checkout.Cart.js","webpack:///./Scripts/Components/InputField.js","webpack:///./Scripts/Components/InfoField.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerInfo.js","webpack:///./Scripts/Components/Checkout.PrivateCustomerInfo.js","webpack:///./Scripts/Components/Checkout.ValidationSchema.js","webpack:///./Scripts/Components/Checkout.CustomerInfo.js","webpack:///./Scripts/Components/Checkout.DeliveryMethods.js","webpack:///./Scripts/Components/Checkout.DiscountCodes.js","webpack:///./Scripts/Components/Checkout.OrderInfo.js","webpack:///./Scripts/Components/Checkout.OrderNote.js","webpack:///./Scripts/Components/Checkout.PaymentMethods.js","webpack:///./Scripts/Components/Payments/PaymentWidget.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerDropShip.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerShippingAddress.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerShippingInfo.js","webpack:///./Scripts/Components/Ingrid/api.ts","webpack:///./Scripts/Components/Ingrid/utils.ts","webpack:///./Scripts/Components/Ingrid/IngridApp.tsx","webpack:///./Scripts/Components/Hillerstorp/Checkout.js"],"sourcesContent":["import { post } from '../Services/http';\r\n\r\nexport const postConversionEvent = async (\r\n    event,\r\n    eventName,\r\n    cDetails = null\r\n) => {\r\n    await post(`/api/conversion`, {\r\n        event_id: event.ecommerce.transaction_id\r\n            ? event.ecommerce.transaction_id\r\n            : event.fb_event_id,\r\n        event_name: eventName,\r\n        event_source_url: window.location.href,\r\n        custom_data: {\r\n            ...(event.ecommerce.value && { value: event.ecommerce.value }),\r\n            currency: event.ecommerce.currency,\r\n            content_name: document.title,\r\n            content_ids: event.ecommerce.items.map((x) => x.item_id),\r\n            content_type: 'product_group',\r\n        },\r\n\r\n        user_data: {\r\n            ...(cDetails && cDetails.email && { em: cDetails.email }),\r\n            ...(cDetails && cDetails.firstName && { fn: cDetails.firstName }),\r\n            ...(cDetails && cDetails.lastName && { ln: cDetails.lastName }),\r\n            ...(cDetails &&\r\n                cDetails.phoneNumber && { ph: cDetails.phoneNumber }),\r\n        },\r\n    })\r\n        .then((response) => response.json())\r\n        .then((d) => {\r\n            console.log(d);\r\n        })\r\n        .catch((error) => {\r\n            if (error.message) {\r\n                console.log(error.message);\r\n            }\r\n        });\r\n};\r\n\r\nconst getCookieValue = (cname) => {\r\n    let name = cname + '=';\r\n    let decodedCookie = decodeURIComponent(document.cookie);\r\n    let ca = decodedCookie.split(';');\r\n    for (let i = 0; i < ca.length; i++) {\r\n        let c = ca[i];\r\n        while (c.charAt(0) == ' ') {\r\n            c = c.substring(1);\r\n        }\r\n        if (c.indexOf(name) == 0) {\r\n            return c.substring(name.length, c.length);\r\n        }\r\n    }\r\n    return '';\r\n};\r\n\r\nexport const cookieAccepted = () => {\r\n    const val = getCookieValue('cookie_consent_level');\r\n    if (val) {\r\n        const valObj = JSON.parse(val);\r\n        if (typeof valObj.targeting != 'undefined') {\r\n            return valObj.targeting;\r\n        }\r\n    }\r\n    return false;\r\n};\r\n","import { post } from '../Services/http';\r\nconst rootRoute = '/api/gtm';\r\nimport { postConversionEvent } from './Conversion.action';\r\n\r\nexport const addToCartEvent = async (articleNumber, quantity = 1) => {\r\n    try {\r\n        const response = await post(`${rootRoute}/add-to-cart`, {\r\n            articleNumber,\r\n            quantity,\r\n        });\r\n        const event = await response.json();\r\n        addToDataLayer(event);\r\n        if (\r\n            window.Cookiebot &&\r\n            window.Cookiebot.consent &&\r\n            window.Cookiebot.consent.marketing\r\n        )\r\n            await postConversionEvent(event, 'AddToCart');\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n};\r\n\r\nexport const removeFromCartEvent = async (articleNumber) => {\r\n    try {\r\n        const response = await post(`${rootRoute}/remove-from-cart`, {\r\n            articleNumber,\r\n        });\r\n        const event = await response.json();\r\n        addToDataLayer(event);\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n};\r\n\r\nexport const beginCheckoutEvent = async () => {\r\n    try {\r\n        const response = await post(`${rootRoute}/begin-checkout`);\r\n        const event = await response.json();\r\n        addToDataLayer(event);\r\n        if (\r\n            window.Cookiebot &&\r\n            window.Cookiebot.consent &&\r\n            window.Cookiebot.consent.marketing\r\n        )\r\n            await postConversionEvent(event, 'InitiateCheckout');\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n};\r\n\r\nconst addToDataLayer = (data) => {\r\n    dataLayer = window.dataLayer || [];\r\n    dataLayer.push({ ecommerce: null });\r\n    dataLayer.push(data);\r\n};\r\n","import { post, put, remove } from '../Services/http';\r\nimport { load as loadCart } from './Cart.action';\r\nimport { catchError } from './Error.action';\r\n\r\nimport {\r\n    CHECKOUT_SET_SELECTED_COMPANY_ADDRESS,\r\n    CHECKOUT_SET_PRIVATE_CUSTOMER,\r\n    CHECKOUT_SET_SIGN_UP,\r\n    CHECKOUT_SET_DELIVERY,\r\n    CHECKOUT_SET_COUNTRY,\r\n    CHECKOUT_SET_PAYMENT,\r\n    CHECKOUT_SET_DISCOUNT_CODE,\r\n    CHECKOUT_SET_ORDER_NOTE,\r\n    CHECKOUT_ACCEPT_TERMS_OF_CONDITION,\r\n    CHECKOUT_SUBMIT,\r\n    CHECKOUT_SUBMIT_ERROR,\r\n    CHECKOUT_SET_PAYMENT_WIDGET,\r\n    CHECKOUT_SET_USED_DISCOUNT_CODE,\r\n    CHECKOUT_USER_SUBSCRIBE,\r\n    CHECKOUT_SET_SELECTED_SHIPPING_TYPE,\r\n    CHECKOUT_SET_SELECTED_SHIPPING_ADDRESS,\r\n    CHECKOUT_UPDATE_CUSTOMER_INFO,\r\n    CHECKOUT_SET_SHOW_ALTERNATIVE_ADDRESS,\r\n    CLEAR_ERROR,\r\n    CHECKOUT_SET_STATUS_SUBMIT_BUTTON,\r\n    CHECKOUT_VALIDATE_ADDRESS,\r\n} from '../constants';\r\nimport { beginCheckoutEvent } from './Gtm.action';\r\nconst rootRoute = \"/api/checkout\";\r\nexport const setBusinessCustomer = (isBusinessCustomer) => ({\r\n    type: CHECKOUT_SET_PRIVATE_CUSTOMER,\r\n    payload: {\r\n        isBusinessCustomer,\r\n    },\r\n});\r\n\r\nexport const setSignUp = (signUp) => ({\r\n    type: CHECKOUT_SET_SIGN_UP,\r\n    payload: {\r\n        signUp,\r\n    },\r\n});\r\n\r\nexport const updateCustomerDetails = (key, data) => ({\r\n    type: CHECKOUT_UPDATE_CUSTOMER_INFO,\r\n    payload: {\r\n        key,\r\n        data,\r\n    },\r\n});\r\n\r\nexport const setShippingAddress = (propName, value) => ({\r\n    type: CHECKOUT_SET_CUSTOMER_INFO,\r\n    payload: {\r\n        key: 'shippingAddress',\r\n        data: {\r\n            [propName]: value,\r\n        },\r\n    },\r\n});\r\n\r\nexport const setSelectedCompanyAddress = (selectedCompanyAddressId) => ({\r\n    type: CHECKOUT_SET_SELECTED_COMPANY_ADDRESS,\r\n    payload: {\r\n        selectedCompanyAddressId,\r\n    },\r\n});\r\n\r\nexport const setSelectedShippingAddress = (selectedShippingAddressId) => ({\r\n    type: CHECKOUT_SET_SELECTED_SHIPPING_ADDRESS,\r\n    payload: {\r\n        selectedShippingAddressId,\r\n    },\r\n});\r\n\r\nexport const setDropShipping = (dropShipping) => (\r\n    dispatch,\r\n    getState\r\n) => {\r\n    dispatch({\r\n        type: CHECKOUT_SET_SELECTED_SHIPPING_TYPE,\r\n        payload: {\r\n            dropShipping,\r\n        },\r\n    });\r\n    const { payload } = getState().checkout;\r\n    return post(`${rootRoute}/shippingtype`, payload).catch((ex) =>\r\n        dispatch(catchError(ex, (error) => submitError(error)))\r\n    );\r\n};\r\n\r\nexport const setDelivery = (method) => (dispatch, getState) => {\r\n    dispatch({\r\n        type: CHECKOUT_SET_DELIVERY,\r\n        payload: {\r\n            selectedDeliveryMethod: method,\r\n        },\r\n    });\r\n    const { payload } = getState().checkout;\r\n    return put('/api/checkout/setDeliveryProvider', payload)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            dispatch(loadCart());\r\n            if (result !== null && result.paymentWidget) {\r\n                dispatch(setPaymentWidget(result.paymentWidget));\r\n            }\r\n        })\r\n        .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\r\n};\r\n\r\nexport const setCountry = (systemId) => (dispatch, getState) => {\r\n    dispatch({\r\n        type: CHECKOUT_SET_COUNTRY,\r\n        payload: {\r\n            selectedCountry: systemId,\r\n        },\r\n    });\r\n    const { payload } = getState().checkout;\r\n\r\n    // reset paymentWidget to null to avoid sending unnecessary request to payment provider\r\n    dispatch(setPaymentWidget(null));\r\n\r\n    return put('/api/checkout/setCountry', payload)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            dispatch(loadCart());\r\n            dispatch(setPaymentWidget(result.paymentWidget));\r\n            dispatch({\r\n                type: CHECKOUT_SET_DELIVERY,\r\n                payload: {\r\n                    deliveryMethods: result.deliveryMethods,\r\n                    selectedDeliveryMethod: result.selectedDeliveryMethod,\r\n                },\r\n            });\r\n            dispatch({\r\n                type: CHECKOUT_SET_PAYMENT,\r\n                payload: {\r\n                    paymentMethods: result.paymentMethods,\r\n                    selectedPaymentMethod: result.selectedPaymentMethod,\r\n                },\r\n            });\r\n        })\r\n        .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\r\n};\r\n\r\nexport const setPayment = (method) => (dispatch, getState) => {\r\n    dispatch({\r\n        type: CHECKOUT_SET_PAYMENT,\r\n        payload: {\r\n            selectedPaymentMethod: method,\r\n        },\r\n    });\r\n    const { payload } = getState().checkout;\r\n    // reset paymentWidget to null to avoid sending unnecessary request to payment provider\r\n    dispatch(setPaymentWidget(null));\r\n    // reset payment error on the checkout\r\n    dispatch(\r\n        submitError({\r\n            modelState: {\r\n                payment: [],\r\n            },\r\n        })\r\n    );\r\n    return put('/api/checkout/setPaymentProvider', payload)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            dispatch(loadCart());\r\n            dispatch(setPaymentWidget(result.paymentWidget));\r\n        })\r\n        .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\r\n};\r\n\r\nexport const reloadPayment = () => (dispatch, getState) => {\r\n    const { payload } = getState().checkout;\r\n    return put('/api/checkout/reloadPaymentWidget', payload)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            if (result && result.paymentWidget) {\r\n                dispatch(setPaymentWidget(result.paymentWidget));\r\n            }\r\n        })\r\n        .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\r\n};\r\n\r\nconst setPaymentWidget = (paymentWidget) => ({\r\n    type: CHECKOUT_SET_PAYMENT_WIDGET,\r\n    payload: {\r\n        paymentWidget,\r\n    },\r\n});\r\n\r\n\r\nexport const setOrderNote = (orderNote) => ({\r\n    type: CHECKOUT_SET_ORDER_NOTE,\r\n    payload: {\r\n        orderNote,\r\n    },\r\n});\r\n\r\nexport const acceptTermsOfCondition = (acceptTermsOfCondition) => ({\r\n    type: CHECKOUT_ACCEPT_TERMS_OF_CONDITION,\r\n    payload: {\r\n        acceptTermsOfCondition,\r\n    },\r\n});\r\nexport const userSubscribe = (userSubscribe) => ({\r\n    type: CHECKOUT_USER_SUBSCRIBE,\r\n    payload: {\r\n        userSubscribe,\r\n    },\r\n});\r\n\r\nexport const setDiscountCode = (discountCode) => ({\r\n    type: CHECKOUT_SET_DISCOUNT_CODE,\r\n    payload: {\r\n        discountCode,\r\n    },\r\n});\r\n\r\nexport const submitDiscountCode = () => (dispatch, getState) => {\r\n    const { payload } = getState().checkout;\r\n    return put('/api/checkout/setDiscountCode', payload)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            dispatch(setUsedDiscountCodes(result.usedDiscountCodes));\r\n            dispatch(loadCart());\r\n            dispatch(setPaymentWidget(result.paymentWidget));\r\n            beginCheckoutEvent();\r\n            // reset error of campaign code\r\n            dispatch(\r\n                submitError({\r\n                    modelState: {\r\n                        discountCode: [],\r\n                    },\r\n                })\r\n            );\r\n        })\r\n        .catch((ex) => {\r\n            dispatch(catchError(ex, (error) => submitError(error)));\r\n            // restore the initial cart\r\n            dispatch(loadCart());\r\n        });\r\n};\r\n\r\nexport const deleteDiscountCode = (discountCode) => (dispatch, getState) => {\r\n    const { payload } = getState().checkout;\r\n    payload.discountCode = discountCode;\r\n    return remove('/api/checkout/deleteDiscountCode', payload)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            dispatch(setUsedDiscountCodes(result.usedDiscountCodes));\r\n            dispatch(loadCart());\r\n            dispatch(setPaymentWidget(result.paymentWidget));\r\n            dispatch(setDiscountCode(''));\r\n            // reset error of campaign code\r\n            dispatch(\r\n                submitError({\r\n                    modelState: {\r\n                        discountCode: [],\r\n                    },\r\n                })\r\n            );\r\n        })\r\n        .catch((ex) => {\r\n            dispatch(catchError(ex, (error) => submitError(error)));\r\n            // restore the initial cart\r\n            dispatch(loadCart());\r\n        });\r\n};\r\n\r\nconst setUsedDiscountCodes = (usedDiscountCodes) => ({\r\n    type: CHECKOUT_SET_USED_DISCOUNT_CODE,\r\n    payload: {\r\n        usedDiscountCodes,\r\n    },\r\n});\r\n\r\nexport const submit = () => (dispatch, getState) => {\r\n    const { payload } = getState().checkout;\r\n    return _submit('/api/checkout', payload, dispatch);\r\n};\r\n\r\nexport const SaveShippingType = async () => {\r\n    try {\r\n        const { payload } = getState().checkout;\r\n        const response = await post(`${rootRoute}/set-shippingtype-additionalinfo`, { payload });\r\n\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n};\r\n\r\nconst _submit = (url, model, dispatch) => {\r\n    return post(url, model)\r\n        .then((response) => response.json())\r\n        .then((result) => {\r\n            dispatch(submitDone(result));\r\n        })\r\n        .catch((ex) => {\r\n            if (ex.response) {\r\n                ex.response.json().then((error) => {\r\n                    dispatch(submitError(error));\r\n                    dispatch(submitDone(null));\r\n                    // reload the cart, it might be changed after validation\r\n                    dispatch(loadCart());\r\n                });\r\n            } else {\r\n                dispatch(submitError(ex));\r\n            }\r\n            dispatch(setStatusSubmitButton(true));\r\n        });\r\n};\r\n\r\nexport const saveCustomerDetail = (data) => (dispatch, getState) => {\r\n    const { payload } = getState().checkout;\r\n    const updatedData = { ...payload, ...data };\r\n    return put('/api/checkout/setCustomerDetail', updatedData)\r\n        .then((response) => response.json())\r\n        .then(() => dispatch(setStatusSubmitButton(true)))\r\n        .catch((ex) => {\r\n            if (ex.response) {\r\n                ex.response.json().then((error) => {\r\n                    dispatch(submitError(error));\r\n                    dispatch(setStatusSubmitButton(false));\r\n                });\r\n            } else {\r\n                dispatch(submitError(ex));\r\n            }\r\n            throw ex;\r\n        });\r\n};\r\n\r\nexport const clearError = () => ({\r\n    type: CLEAR_ERROR,\r\n    payload: {\r\n        errors: [],\r\n    },\r\n});\r\n\r\nexport const submitDone = (result) => ({\r\n    type: CHECKOUT_SUBMIT,\r\n    payload: {\r\n        result,\r\n    },\r\n});\r\n\r\nexport const submitError = (error) => ({\r\n    type: CHECKOUT_SUBMIT_ERROR,\r\n    payload: {\r\n        error,\r\n    },\r\n});\r\n\r\nexport const setStatusSubmitButton = (value) => ({\r\n    type: CHECKOUT_SET_STATUS_SUBMIT_BUTTON,\r\n    payload: {\r\n        enableConfirmButton: value,\r\n    },\r\n});\r\n\r\nexport const setShowAlternativeAddress = (showAlternativeAddress) => ({\r\n    type: CHECKOUT_SET_SHOW_ALTERNATIVE_ADDRESS,\r\n    payload: {\r\n        showAlternativeAddress,\r\n    },\r\n});\r\nexport const setValidateStatus = (isValidating) => ({\r\n    type: CHECKOUT_VALIDATE_ADDRESS,\r\n    payload: {\r\n        isValidating,\r\n    },\r\n});\r\n","import React from 'react';\r\nimport { useCallback } from 'react';\r\nconst Button = ({\r\n    onClick,\r\n    title,\r\n    disabled = false,\r\n    type = 'button',\r\n    className,\r\n}) => {\r\n    return (\r\n        <button\r\n            className={className}\r\n            onClick={onClick}\r\n            disabled={disabled}\r\n            type={type}\r\n        >\r\n            {title}\r\n        </button>\r\n    );\r\n};\r\nexport default Button;\r\n","import React from 'react';\r\nimport { translate } from '../Services/translation';\r\nconst ComplimentaryProducts = ({ complimentary }) => {\r\n    return (\r\n        complimentary && complimentary.length > 0 &&\r\n        <div>\r\n            {translate('checkout.complimentaryproduct')}\r\n            {/* *TODO: modify styles in MidaqTheme/productHorizontalList.scss  */}\r\n            <div className=\"row product__vertical-list\">\r\n                <ul className=\"product__vertical-list-container\">\r\n                    {complimentary &&\r\n                        complimentary.map((product, index) => (\r\n                            <li className=\"product__vertical-list-item\" key={index}>\r\n                                <div className=\"product__vertical-list-price-container\" >\r\n                                    <div className=\"product__vertical-list-img-container\">\r\n                                        <img src={product.imageUrl} />\r\n                                    </div>\r\n                                    <div className=\"product__vertical-list-info-container\">\r\n                                        <a href={product.url}>\r\n                                            <span className=\"product__vertical-list-name\">{product.name}</span>\r\n                                            <span className=\"product__vertical-list-price\">\r\n                                                {\r\n                                                    (product.price != undefined && product.price.campaignPrice != undefined || '') &&\r\n                                                    <div>\r\n                                                        <span className=\"product__campaign-price\">\r\n                                                            {product.price.formattedCampaignPrice}\r\n                                                        </span> &nbsp;\r\n                                                        <span className=\"product__old-price\">\r\n                                                            {product.price.formattedPrice}\r\n                                                        </span>\r\n                                                    </div>\r\n                                                }\r\n                                                {product.price != undefined && product.price.campaignPrice == undefined &&\r\n                                                    <div>\r\n                                                        <span className=\"product__campaign-price\">\r\n                                                            {product.price.formattedPrice}\r\n                                                        </span>\r\n                                                    </div>\r\n                                                }\r\n                                            </span>\r\n                                        </a>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"product__vertical-list-button-container\">\r\n                                    <button className=\"button-pill button-pill--primary\" onClick={() => {\r\n                                        location.href = product.url\r\n                                    }}    >Visa</button>\r\n                                </div>\r\n                            </li>\r\n                        ))\r\n                    }\r\n                </ul>\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\nexport default ComplimentaryProducts;\r\n","import React, { useState, Fragment, useCallback, useEffect } from 'react';\r\nimport { translate } from '../../Services/translation';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n    reloadPayment,\r\n    //upgrade8.7  submitRequest,\r\n    submitDone,\r\n} from '../../Actions/Checkout.action';\r\nimport { update, loadError, reloadIngrid } from '../../Actions/Cart.action';\r\nimport { beginCheckoutEvent, removeFromCartEvent } from '../../Actions/Gtm.action';\r\nimport CoreComplimentaryProducts from '../ComplimentaryProducts';\r\n//upgrade8.7 import * as debounce from 'lodash.debounce';\r\nimport { debounce } from 'lodash-es';\r\nimport { catchError } from '../../Actions/Error.action';\r\n\r\nconst mapCartToAbort = {};\r\n\r\nconst quantityDispatch = debounce((articleNumber, quantity, dispatch) => {\r\n    mapCartToAbort[articleNumber] = new AbortController();\r\n    dispatch(update(articleNumber, quantity, mapCartToAbort[articleNumber]))\r\n        .then(() => {\r\n            dispatch(reloadPayment());\r\n            dispatch(reloadIngrid());\r\n            beginCheckoutEvent();\r\n        })\r\n        .catch((ex) => dispatch(catchError(ex, (error) => loadError(error))));\r\n}, 500);\r\n\r\nconst Cart = () => {\r\n    const dispatch = useDispatch();\r\n    const [removingRow, setRemovingRow] = useState({});\r\n    const [showProductsInPackage, setShowProductsInPackage] = useState({});\r\n    const cart = useSelector((state) => state.cart);\r\n    const [orderRows, setOrderRows] = useState(cart?.orderRows);\r\n    const { discountRows } = cart;\r\n    const { complimentaryProducts } = cart;\r\n    useEffect(() => {\r\n        setOrderRows(cart?.orderRows);\r\n    }, [cart]);\r\n\r\n    const removeOrderRow = useCallback(\r\n        (articleNumber) =>\r\n            dispatch(update(articleNumber, 0)).then(() => {\r\n                dispatch(reloadPayment());\r\n                dispatch(reloadIngrid());\r\n                beginCheckoutEvent();\r\n            }\r\n            )[dispatch]\r\n    );\r\n\r\n    const errorQuantity = (articleNumber, errorName) => {\r\n        document.getElementById(articleNumber).innerText = errorName;\r\n        // //upgrade8.7  dispatch(submitRequest());\r\n    };\r\n    const handleQuantityInput = useCallback(\r\n        (\r\n            articleNumber,\r\n            quantity,\r\n            minimumQuantity,\r\n            maximumQuantity,\r\n            quantityStepping,\r\n            rowSystemId,\r\n            ensureCorrectness = true\r\n        ) => {\r\n            const re = /^[0-9\\b]+$/;\r\n            if (quantity === '' || re.test(quantity)) {\r\n                // In case of onBlur event, we need ensureCorrectness as true in order to ensure if the value is a valid float number\r\n                // In case of onChange event, we accept invalid float number, but we don't send any request to the server.\r\n                //upgrade8.7 mapCartToAbort[articleNumber] && mapCartToAbort[articleNumber].abort();\r\n                quantityDispatch && quantityDispatch.cancel();\r\n\r\n                let floatQuantity = parseFloat(quantity);\r\n                let validValue = !isNaN(floatQuantity) && floatQuantity > 0;\r\n                if (ensureCorrectness) {\r\n                    quantity = validValue ? floatQuantity : 1;\r\n                    floatQuantity = quantity;\r\n                    validValue = true;\r\n                }\r\n                document.getElementById(articleNumber).innerText = '';\r\n                if (\r\n                    parseInt(minimumQuantity) > 0 &&\r\n                    parseInt(floatQuantity) < parseInt(minimumQuantity)\r\n                ) {\r\n                    errorQuantity(\r\n                        articleNumber,\r\n                        translate('product.minimumquantity') +\r\n                        ' ' +\r\n                        minimumQuantity\r\n                    );\r\n                } else if (\r\n                    parseInt(maximumQuantity) > 0 &&\r\n                    parseInt(floatQuantity) > parseInt(maximumQuantity)\r\n                ) {\r\n                    errorQuantity(\r\n                        articleNumber,\r\n                        translate('product.maximumquantity') +\r\n                        ' ' +\r\n                        maximumQuantity\r\n                    );\r\n                } else if (\r\n                    parseInt(quantityStepping) > 0 &&\r\n                    parseInt(floatQuantity) % parseInt(quantityStepping) !== 0\r\n                ) {\r\n                    var addQty =\r\n                        parseInt(floatQuantity) % parseInt(quantityStepping);\r\n                    errorQuantity(\r\n                        articleNumber,\r\n                        translate('product.multiplequantity') +\r\n                        ' ' +\r\n                        quantityStepping +\r\n                        ' add ' +\r\n                        addQty\r\n                    );\r\n                } else {\r\n                    dispatch(submitDone());\r\n                }\r\n                const index = orderRows.findIndex(\r\n                    (item) => item.rowSystemId === rowSystemId\r\n                );\r\n                const oldQuantity = parseFloat(orderRows[index].quantity);\r\n                if (floatQuantity !== oldQuantity) {\r\n                    mapCartToAbort[articleNumber] &&\r\n                        mapCartToAbort[articleNumber].abort();\r\n                    quantityDispatch && quantityDispatch.cancel();\r\n                    validValue &&\r\n                        quantityDispatch(articleNumber, quantity, dispatch);\r\n                }\r\n                const tempOrderRows = [...orderRows];\r\n                tempOrderRows[index] = {\r\n                    ...tempOrderRows[index],\r\n                    quantity,\r\n                };\r\n                setOrderRows(tempOrderRows);\r\n            }\r\n        },\r\n        [dispatch, orderRows]\r\n    );\r\n\r\n    const ProductImage = useCallback(({ order }) => {\r\n        return (\r\n            <img\r\n                className=\"checkout-cart__image\"\r\n                src={order.image}\r\n                alt={order.name}\r\n            />\r\n        );\r\n    }, []);\r\n\r\n    const ProductName = useCallback(({ order }) => {\r\n        return (\r\n            <Fragment>\r\n                <a href={order.url}>{order.name}</a>\r\n                <span className=\"checkout-cart__art-nr\">\r\n                    {translate('order.articlenumber')} {order.articleNumber}\r\n                </span>\r\n                {order.bundleVariants && order.bundleVariants.length > 0 &&\r\n                    <div className=\"checkout-cart__package\">\r\n                        <a\r\n                            role=\"button\"\r\n                            className=\"checkout-cart__package-label\"\r\n                            onClick={() =>\r\n                                setShowProductsInPackage({\r\n                                    ...showProductsInPackage,\r\n                                    [order.rowSystemId]: !showProductsInPackage[order.rowSystemId],\r\n                                })\r\n                            }\r\n                        >{translate('product.packages.label')}\r\n                            <span className={`checkout-cart__package-label-icon ${showProductsInPackage[order.rowSystemId] ? \"checkout-cart__package-label-icon--open\" : \"\"}`}></span>\r\n                        </a>\r\n                        {showProductsInPackage[order.rowSystemId] &&\r\n                            order.bundleVariants.map((value, key) => {\r\n                                return (\r\n                                    <span className='checkout-cart__package-item' key={key} >{value}</span>\r\n                                );\r\n                            })\r\n                        }\r\n                    </div >\r\n                }\r\n                <span className=\"checkout-cart__brand-name\">{order.brand}</span>\r\n            </Fragment >\r\n        );\r\n    }, [showProductsInPackage]);\r\n\r\n    const Complimentary = useCallback(({ order }) => {\r\n        const cartProductComplimentary = complimentaryProducts.filter((x) => {\r\n            return x.complimentaryBaseArticleNumber == order.articleNumber;\r\n        });\r\n        return (\r\n            <Fragment>\r\n                <CoreComplimentaryProducts\r\n                    complimentary={cartProductComplimentary}\r\n                />\r\n            </Fragment>\r\n        );\r\n    }, []);\r\n\r\n    const ProductPrice = useCallback(({ order }) => {\r\n        return (\r\n            <Fragment>\r\n                {order.campaignPrice ? (\r\n                    <Fragment>\r\n                        <div className=\"checkout-cart__campaign-price\">\r\n                            {order.campaignPrice}\r\n                        </div>\r\n                        <div className=\"checkout-cart__original-price\">\r\n                            {' '}\r\n                            ({order.price})\r\n                        </div>\r\n                    </Fragment>\r\n                ) : (\r\n                    order.price\r\n                )}\r\n            </Fragment>\r\n        );\r\n    }, []);\r\n\r\n    const ProductQuantity = useCallback(\r\n        (order) => {\r\n            return (\r\n                <Fragment>\r\n                    {order.isFreeGift ? (\r\n                        <div>{order.quantity}</div>\r\n                    ) : (\r\n                        <div className=\"checkout-flex\">\r\n                            <input\r\n                                className=\"checkout-cart__input\"\r\n                                type=\"number\"\r\n                                id={order.rowSystemId}\r\n                                min={\r\n                                    order.minimumQuantity > 0\r\n                                        ? order.minimumQuantity\r\n                                        : 1\r\n                                }\r\n                                maxLength={3}\r\n                                max={\r\n                                    order.maximumQuantity > 0\r\n                                        ? order.maximumQuantity\r\n                                        : 999\r\n                                }\r\n                                value={order.quantity.toString()}\r\n                                step={\r\n                                    order.quantityStepping > 0\r\n                                        ? order.quantityStepping\r\n                                        : 1\r\n                                }\r\n                                onChange={(event) =>\r\n                                    handleQuantityInput(\r\n                                        order.articleNumber,\r\n                                        event.target.value,\r\n                                        order.minimumQuantity,\r\n                                        order.maximumquantity,\r\n                                        order.quantitystepping,\r\n                                        order.rowSystemId,\r\n                                        false\r\n                                    )\r\n                                }\r\n                                onBlur={(event) =>\r\n                                    handleQuantityInput(\r\n                                        order.articleNumber,\r\n                                        event.target.value,\r\n                                        order.minimumQuantity,\r\n                                        order.maximumQuantity,\r\n                                        order.quantityStepping,\r\n                                        order.rowSystemId\r\n                                    )\r\n                                }\r\n                            />\r\n                            <span\r\n                                id={order.articleNumber}\r\n                                className=\"quantity-error\"\r\n                            ></span>\r\n                        </div>\r\n                    )}\r\n                </Fragment>\r\n            );\r\n        },\r\n        [handleQuantityInput]\r\n    );\r\n\r\n    const ProductTotalPrice = ({ order }) => {\r\n        return (\r\n            <Fragment>\r\n                {order.totalCampaignPrice ? (\r\n                    <Fragment>\r\n                        <div className=\"checkout-cart__campaign-price\">\r\n                            {order.totalCampaignPrice}\r\n                        </div>\r\n                        <div className=\"checkout-cart__original-price\">\r\n                            {' '}\r\n                            ({order.totalPrice})\r\n                        </div>\r\n                    </Fragment>\r\n                ) : (\r\n                    order.totalPrice\r\n                )}\r\n            </Fragment>\r\n        );\r\n    };\r\n\r\n    const RemoveBtn = useCallback(\r\n        ({ order }) => {\r\n            return (\r\n                <Fragment>\r\n                    {!order.isFreeGift && !removingRow[order.rowSystemId] && (\r\n                        <a\r\n                            className=\"table__icon table__icon--delete\"\r\n                            onClick={() =>\r\n                                setRemovingRow({\r\n                                    ...removingRow,\r\n                                    [order.rowSystemId]: true,\r\n                                })\r\n                            }\r\n                            title={translate('general.remove')}\r\n                        ></a>\r\n                    )}\r\n                    {!order.isFreeGift && removingRow[order.rowSystemId] && (\r\n                        <Fragment>\r\n                            <a\r\n                                className=\"table__icon table__icon--accept\"\r\n                                onClick={async () => {\r\n                                    await removeFromCartEvent(\r\n                                        order.articleNumber\r\n                                    );\r\n                                    removeOrderRow(order.articleNumber);\r\n                                }}\r\n                                title={translate('general.ok')}\r\n                            ></a>\r\n                            <a\r\n                                className=\"table__icon table__icon--cancel\"\r\n                                onClick={() =>\r\n                                    setRemovingRow({\r\n                                        ...removingRow,\r\n                                        [order.rowSystemId]: false,\r\n                                    })\r\n                                }\r\n                                title={translate('general.cancel')}\r\n                            ></a>\r\n                        </Fragment>\r\n                    )}\r\n                </Fragment>\r\n            );\r\n        },\r\n        [removeOrderRow, removingRow]\r\n    );\r\n\r\n    const CartTotal = useCallback(({ cart }) => {\r\n        return (\r\n            <h3 className=\"text--right\">\r\n                {translate('checkout.cart.total')}: {cart.orderTotal}\r\n            </h3>\r\n        );\r\n    }, []);\r\n\r\n    return (\r\n        <div className=\"row checkout__container\">\r\n            <div className=\"checkout-column small-12\">\r\n                <div className=\"simple-table hide-for-small-only\">\r\n                    <div className=\"row small-unstack no-margin\">\r\n                        <div className=\"columns small-12 medium-4 large-5\"></div>\r\n                        <div className=\"columns small-3 medium-2 large-2\">\r\n                            {translate('checkout.cart.header.price')}\r\n                        </div>\r\n                        <div className=\"columns small-4 medium-2 large-2\">\r\n                            {translate('checkout.cart.header.quantity')}\r\n                        </div>\r\n                        <div className=\"columns small-5 medium-3 large-3\">\r\n                            {translate('checkout.cart.header.total')}\r\n                        </div>\r\n                    </div>\r\n                    {orderRows.map((order, index) => (\r\n                        <div\r\n                            className=\"row small-unstack no-margin checkout-cart__row\"\r\n                            key={order.rowSystemId}\r\n                        >\r\n                            <div className=\"columns small-12 medium-4 large-5 checkout-cart__image-container checkout-cart__column\">\r\n                                <div className=\"checkout-cart__image-wrapper\">\r\n                                    <ProductImage key={'checkout-cart-row-image' + index} order={order} />\r\n                                </div>\r\n                                <div className=\"checkout-cart__image-info checkout-cart__column\">\r\n                                    <ProductName key={'checkout-cart-row-info' + index} order={order} />\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"columns small-3 medium-2 large-2 simple-table__cell--no-break-word checkout-cart__column\">\r\n                                <ProductPrice order={order} />\r\n                            </div>\r\n                            <div className=\"columns checkout-flex small-2 medium-2 large-2 checkout-cart__column\">\r\n                                {ProductQuantity(order)}\r\n                            </div>\r\n                            <div className=\"checkout-cart__total-price columns small-2 medium-3 large-2 simple-table__cell--no-break-word checkout-cart__column\">\r\n                                <ProductTotalPrice order={order} />\r\n                            </div>\r\n                            <div className=\"columns small-3 medium-1 large-1 checkout-cart__column checkout-cart__column--remove\">\r\n                                <RemoveBtn order={order} />\r\n                            </div>\r\n                            {/* <div className='row'>\r\n                                <Complimentary order={order} />\r\n                            </div> */}\r\n                        </div>\r\n                    ))}\r\n                    <div className=\"row small-unstack no-margin checkout-cart__row\">\r\n                        <div className=\"columns\">\r\n                            <CartTotal cart={cart} />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"small-12 simple-table checkout-mobile show-for-small-only\">\r\n                    {orderRows.map((order, index) => (\r\n                        <div className=\"row no-margin\" key={order.rowSystemId}>\r\n                            <div className=\"columns small-3\">\r\n                                <ProductImage order={order} />\r\n                            </div>\r\n                            <div className=\"columns small-9\">\r\n                                <div className=\"row\">\r\n                                    <div className=\"small-8 columns\">\r\n                                        <div className=\"flex-container flex-dir-column align-center\">\r\n                                            <ProductName key={'checkout-cart-row-mobile' + index} order={order} />\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"small-4 columns flex-container align-right\">\r\n                                        <RemoveBtn order={order} />\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"row\">\r\n                                    <div className=\"small-12 columns flex-container align-justify\">\r\n                                        <div>\r\n                                            <ProductPrice order={order} />\r\n                                        </div>\r\n                                        <div>{ProductQuantity(order)}</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"row\">\r\n                                    <div className=\"checkout-cart__total-price small-12 columns text--right\">\r\n                                        <ProductTotalPrice order={order} />\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    ))}\r\n                    {discountRows.map((order, index) => (\r\n                        <div className=\"row no-margin\" key={order.rowSystemId}>\r\n                            <div className=\"columns\">\r\n                                <div>\r\n                                    <ProductName key={'checkout-cart-norow' + index} order={order} />\r\n                                </div>\r\n                                <div className=\"checkout-cart__total-price text--right\">\r\n                                    <ProductTotalPrice order={order} />\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    ))}\r\n                    <div className=\"row no-margin\">\r\n                        <div className=\"columns\">\r\n                            <CartTotal cart={cart} />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default Cart;\r\n","import React, { Fragment } from 'react';\r\nimport Cart from './Cart';\r\nimport { translate } from '../../Services/translation';\r\n\r\nconst CheckoutCart = ({ errors }) => {\r\n    return (\r\n        <Fragment>\r\n            <div className=\"row\">\r\n                <div className=\"small-12\">\r\n                    <h2 className=\"checkout__title\">\r\n                        {translate('checkout.title')}\r\n                    </h2>\r\n                </div>\r\n            </div>\r\n            <div className=\"row\">\r\n                <div className=\"columns checkout-column small-12\">\r\n                    <h3 className=\"checkout__section-title\">\r\n                        {translate('checkout.cart.title')}\r\n                    </h3>\r\n                </div>\r\n            </div>\r\n            <div className=\"row\">\r\n                {errors && errors['cart'] && (\r\n                    <p className=\"checkout__validator--error\">\r\n                        {errors['cart'][0]}\r\n                    </p>\r\n                )}\r\n            </div>\r\n            {<div className=\"row\">\r\n              <div className=\"columns small-12\">\r\n                {window.__litium.preloadState.checkout.errors && window.__litium.preloadState.checkout.errors['cart'] && (\r\n                  <p className=\"checkout__validator--error\">\r\n                    {window.__litium.preloadState.checkout.errors['cart'][0]}\r\n                  </p>\r\n                )}\r\n              </div>\r\n            </div>\r\n            }\r\n            <Cart />\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default CheckoutCart;\r\n","import React from 'react';\r\n\r\nconst InputField = ({\r\n    cssClass,\r\n    name,\r\n    id,\r\n    autoComplete = null,\r\n    placeholder = null,\r\n    type = 'text',\r\n    maxLength = 200,\r\n    disabled,\r\n    onChange,\r\n    value,\r\n    label,\r\n    errors,\r\n}) => {\r\n    return (\r\n        <div className={cssClass}>\r\n            <label className=\"form__label\" htmlFor={id}>\r\n                {label}\r\n            </label>\r\n            <input\r\n                className=\"form__input\"\r\n                disabled={disabled}\r\n                id={id}\r\n                name={name}\r\n                type={type}\r\n                value={value}\r\n                placeholder={placeholder}\r\n                autoComplete={autoComplete}\r\n                onChange={(event) => onChange(event.target.value)}\r\n                maxLength={maxLength}\r\n            />\r\n            {errors[id] && (\r\n                <span\r\n                    className=\"form__validator--error form__validator--top-narrow\"\r\n                    data-error-for={id}\r\n                >\r\n                    {errors[id][0]}\r\n                </span>\r\n            )}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default InputField;\r\n","import React, { Fragment } from 'react';\r\n\r\nfunction InfoField({ values }) {\r\n    return (\r\n        <div className=\"small-12 medium-12 columns info-field\">\r\n            {values.map((item, idx) => (\r\n                <Fragment key={idx}>\r\n                    <span>{item}</span>&nbsp;\r\n                </Fragment>\r\n            ))}\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default InfoField;\r\n","import React, { Fragment, useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport constants from '../constants';\r\nimport { translate } from '../Services/translation';\r\nimport InputField from './InputField';\r\nimport InfoField from './InfoField';\r\nimport Button from './Button';\r\n\r\nconst getCountry = (address) => {\r\n    const addressCountry = constants.countries\r\n        ? constants.countries.find(\r\n            (country) => country.value === address.country\r\n        )\r\n        : null;\r\n    return addressCountry ? addressCountry.text : address.country;\r\n};\r\n\r\nconst CheckoutBusinessCustomerInfo = ({\r\n    onChange,\r\n    onSave,\r\n    onCompanyAddressChange,\r\n    valueForm,\r\n    isEditingAddress,\r\n}) => {\r\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\r\n    const { companyAddresses = [], companyName, authenticated } = payload;\r\n\r\n    const input = (\r\n        cssClass,\r\n        stateKey,\r\n        id,\r\n        autoComplete = 'on',\r\n        type = 'text'\r\n    ) => (\r\n        <InputField\r\n            cssClass={cssClass}\r\n            id={`${stateKey}-${id}`}\r\n            name={`${stateKey}-${id}`}\r\n            autoComplete={autoComplete}\r\n            disabled={!authenticated}\r\n            value={(valueForm[stateKey] || {})[id] || ''}\r\n            onChange={(value) => onChange(stateKey, id, value)}\r\n            label={translate(`checkout.customerinfo.${id.toLowerCase()}`)}\r\n            errors={errors}\r\n            type={type}\r\n        />\r\n    );\r\n\r\n    const selectedAddress = useMemo(() => {\r\n        return valueForm.selectedCompanyAddressId && companyAddresses\r\n            ? companyAddresses.find(\r\n                (address) =>\r\n                    address.systemId === valueForm.selectedCompanyAddressId\r\n            )\r\n            : null;\r\n    }, [valueForm.selectedCompanyAddressId, companyAddresses]);\r\n\r\n    const formattedAddress = (address) => {\r\n        return [\r\n            address.address,\r\n            address.zipCode,\r\n            address.city,\r\n            getCountry(address),\r\n        ]\r\n            .filter((x) => !!x)\r\n            .join(', ');\r\n    };\r\n\r\n    return (\r\n        <div className=\"row checkout-info__container\">\r\n            {isEditingAddress ? (\r\n                <Fragment>\r\n                    <div className=\"small-12 medium-6 checkout-column-left columns\">\r\n                        <div className=\"row-inner\">\r\n                            {input(\r\n                                'small-6 columns',\r\n                                'customerDetails',\r\n                                'firstName',\r\n                                'billing given-name'\r\n                            )}\r\n\r\n                            {input(\r\n                                'small-6 columns',\r\n                                'customerDetails',\r\n                                'lastName',\r\n                                'billing family-name'\r\n                            )}\r\n                        </div>\r\n                        <div className=\"row-inner\">\r\n                            {input(\r\n                                'small-12 columns',\r\n                                'customerDetails',\r\n                                'phoneNumber',\r\n                                'billing tel',\r\n                                'tel'\r\n                            )}\r\n                        </div>\r\n                        <div className=\"row-inner\">\r\n                            {input(\r\n                                'small-12 columns',\r\n                                'customerDetails',\r\n                                'email',\r\n                                'email',\r\n                                'email'\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"small-12 medium-6 columns checkout-column-right\">\r\n                        <div className=\"row-inner\">\r\n                            <div className=\"small-12 columns\">\r\n                                <label\r\n                                    className=\"form__label\"\r\n                                    htmlFor=\"address\"\r\n                                >\r\n                                    {translate('checkout.customerinfo.address')}\r\n                                </label>\r\n\r\n                                <select\r\n                                    className=\"form__input\"\r\n                                    value={\r\n                                        valueForm.selectedCompanyAddressId || ''\r\n                                    }\r\n                                    disabled={!authenticated}\r\n                                    onChange={(event) =>\r\n                                        onCompanyAddressChange(\r\n                                            event.target.value,\r\n                                            companyAddresses.find(\r\n                                                (address) =>\r\n                                                    address.systemId ===\r\n                                                    event.target.value\r\n                                            ).country\r\n                                        )\r\n                                    }\r\n                                >\r\n                                    <option value=\"\" disabled>\r\n                                        {translate(\r\n                                            'checkout.customerinfo.companyaddress.placeholder'\r\n                                        )}\r\n                                    </option>\r\n                                    {companyAddresses &&\r\n                                        companyAddresses.map((address) => (\r\n                                            <option\r\n                                                value={address.systemId}\r\n                                                key={`companyAddress-${address.systemId}`}\r\n                                            >\r\n                                                {formattedAddress(address)}\r\n                                            </option>\r\n                                        ))}\r\n                                </select>\r\n                                {errors['selectedCompanyAddressId'] && (\r\n                                    <span\r\n                                        className=\"form__validator--error form__validator--top-narrow\"\r\n                                        data-error-for=\"selectedCompanyAddressId\"\r\n                                    >\r\n                                        {errors['selectedCompanyAddressId'][0]}\r\n                                    </span>\r\n                                )}\r\n                            </div>\r\n                        </div>\r\n                        {selectedAddress && (\r\n                            <div className=\"row-inner\">\r\n                                <div className=\"small-12 columns\">\r\n                                    {companyName}\r\n                                </div>\r\n                                <div className=\"small-12 columns\">\r\n                                    {selectedAddress.address}\r\n                                </div>\r\n                                <div className=\"small-12 columns\">\r\n                                    {selectedAddress.zipCode && (\r\n                                        <span>{selectedAddress.zipCode}</span>\r\n                                    )}\r\n                                    &nbsp;\r\n                                    {selectedAddress.city && (\r\n                                        <span>{selectedAddress.city}</span>\r\n                                    )}\r\n                                </div>\r\n                                <div className=\"small-12 columns\">\r\n                                    {getCountry(selectedAddress)}\r\n                                </div>\r\n                            </div>\r\n                        )}\r\n                    </div>\r\n                    <div className=\"small-12 columns flex-container align-right\">\r\n                        <Button\r\n                            onClick={onSave}\r\n                            title={translate('checkout.continue')}\r\n                            className={\"button checkout__continue-button\"}\r\n                        />\r\n                    </div>\r\n                </Fragment>\r\n            ) : (\r\n                <Fragment>\r\n                    <InfoField\r\n                        values={[\r\n                            valueForm['customerDetails']['firstName'],\r\n                            valueForm['customerDetails']['lastName'],\r\n                        ]}\r\n                    />\r\n                    <InfoField values={[companyName]} />\r\n                    <InfoField values={[selectedAddress.address]} />\r\n                    <InfoField\r\n                        values={[selectedAddress.zipCode, selectedAddress.city]}\r\n                    />\r\n                    <InfoField values={[getCountry(selectedAddress)]} />\r\n                    <InfoField\r\n                        values={[valueForm['customerDetails']['phoneNumber']]}\r\n                    />\r\n                    <InfoField\r\n                        values={[valueForm['customerDetails']['email']]}\r\n                    />\r\n                </Fragment>\r\n            )}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default CheckoutBusinessCustomerInfo;\r\nexport { getCountry };\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport constants from '../constants';\r\nimport { translate } from '../Services/translation';\r\nimport {\r\n    setSignUp,\r\n    setShowAlternativeAddress,\r\n} from '../Actions/Checkout.action';\r\nimport InputField from './InputField';\r\nimport { Fragment } from 'react';\r\nimport InfoField from './InfoField';\r\nimport { getCountry } from './Checkout.BusinessCustomerInfo';\r\nimport Button from './Button';\r\n\r\nconst CheckoutPrivateCustomerInfo = ({\r\n    onChange,\r\n    onSave,\r\n    valueForm,\r\n    isEditingAddress,\r\n    signUpCheckboxVisibility,\r\n}) => {\r\n    const dispatch = useDispatch();\r\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\r\n    const { authenticated, signUp, isValidating } = payload;\r\n    const { customerDetails = {}, alternativeAddress = {} } = valueForm;\r\n\r\n    const input = (\r\n        cssClass,\r\n        stateKey,\r\n        id,\r\n        autoComplete = 'on',\r\n        placeholder = null,\r\n        type = 'text',\r\n        maxLength = 200\r\n    ) => (\r\n        <InputField\r\n            cssClass={cssClass}\r\n            id={`${stateKey}-${id}`}\r\n            name={`${stateKey}-${id}`}\r\n            autoComplete={autoComplete}\r\n            value={(valueForm[stateKey] || {})[id] || ''}\r\n            onChange={(value) => onChange(stateKey, id, value)}\r\n            label={translate(`checkout.customerinfo.${id.toLowerCase()}`)}\r\n            errors={errors}\r\n            placeholder={placeholder}\r\n            type={type}\r\n            maxLength={maxLength}\r\n        />\r\n    );\r\n\r\n    return (\r\n        <div className=\"row checkout-info__container\">\r\n            {isEditingAddress ? (\r\n                <Fragment>\r\n                    <div className=\"small-12 medium-6 columns\">\r\n                        <div className=\"row-inner\">\r\n                            <div className=\"small-12 columns checkout-info__placeholder-container\"></div>\r\n                        </div>\r\n                        <div className=\"row-inner\">\r\n                            {input(\r\n                                'small-6 columns',\r\n                                'customerDetails',\r\n                                'firstName',\r\n                                'billing given-name'\r\n                            )}\r\n                            {input(\r\n                                'small-6 columns',\r\n                                'customerDetails',\r\n                                'lastName',\r\n                                'billing family-name'\r\n                            )}\r\n                            {input(\r\n                                'small-12 columns',\r\n                                'customerDetails',\r\n                                'careOf',\r\n                                'on',\r\n                                null,\r\n                                'text',\r\n                                100\r\n                            )}\r\n                            {input(\r\n                                'small-12 columns',\r\n                                'customerDetails',\r\n                                'address',\r\n                                'billing street-address'\r\n                            )}\r\n                            {input(\r\n                                'small-6 columns',\r\n                                'customerDetails',\r\n                                'zipCode',\r\n                                'billing postal-code',\r\n                                null,\r\n                                'text',\r\n                                50\r\n                            )}\r\n                            {input(\r\n                                'small-6 columns',\r\n                                'customerDetails',\r\n                                'city',\r\n                                'billing address-level2',\r\n                                null,\r\n                                'text',\r\n                                100\r\n                            )}\r\n                            <div className=\"small-12 columns\">\r\n                                <label\r\n                                    className=\"form__label\"\r\n                                    htmlFor=\"country\"\r\n                                >\r\n                                    {translate('checkout.customerinfo.country')}\r\n                                </label>\r\n                                <select\r\n                                    className=\"form__input\"\r\n                                    id=\"country\"\r\n                                    value={customerDetails.country}\r\n                                    autoComplete=\"country\"\r\n                                    onChange={(event) => {\r\n                                        onChange(\r\n                                            'alternativeAddress',\r\n                                            'country',\r\n                                            event.target.value\r\n                                        );\r\n                                        onChange(\r\n                                            'customerDetails',\r\n                                            'country',\r\n                                            event.target.value\r\n                                        );\r\n                                    }}\r\n                                >\r\n                                    <option value=\"\" disabled>\r\n                                        {translate(\r\n                                            'checkout.customerinfo.country.placeholder'\r\n                                        )}\r\n                                    </option>\r\n                                    {constants.countries &&\r\n                                        constants.countries.map(\r\n                                            ({ text, value }) => (\r\n                                                <option\r\n                                                    value={value}\r\n                                                    key={`country-${value}`}\r\n                                                >\r\n                                                    {text}\r\n                                                </option>\r\n                                            )\r\n                                        )}\r\n                                </select>\r\n                            </div>\r\n                            {input(\r\n                                'small-12 columns',\r\n                                'customerDetails',\r\n                                'phoneNumber',\r\n                                'billing tel',\r\n                                null,\r\n                                'tel'\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"small-12 medium-6 columns\">\r\n                        <div className=\"row-inner\">\r\n                            <div className=\"small-12 columns\">\r\n                                <input\r\n                                    className=\"checkout-info__checkbox-input\"\r\n                                    type=\"checkbox\"\r\n                                    id=\"showAlternativeAddress\"\r\n                                    name=\"showAlternativeAddress\"\r\n                                    checked={\r\n                                        alternativeAddress.showAlternativeAddress ||\r\n                                        false\r\n                                    }\r\n                                    onChange={(event) => {\r\n                                        onChange(\r\n                                            'alternativeAddress',\r\n                                            'showAlternativeAddress',\r\n                                            event.target.checked\r\n                                        );\r\n                                        dispatch(\r\n                                            setShowAlternativeAddress(\r\n                                                event.target.checked\r\n                                            )\r\n                                        );\r\n                                    }}\r\n                                />\r\n                                <label\r\n                                    className=\"checkout-info__checkbox-label\"\r\n                                    htmlFor=\"showAlternativeAddress\"\r\n                                >\r\n                                    {translate(\r\n                                        'checkout.customerinfo.showAlternativeAddress'\r\n                                    )}\r\n                                </label>\r\n                            </div>\r\n                        </div>\r\n                        {alternativeAddress.showAlternativeAddress && (\r\n                            <div className=\"row-inner\">\r\n                                {input(\r\n                                    'small-6 columns',\r\n                                    'alternativeAddress',\r\n                                    'firstName',\r\n                                    'shipping given-name'\r\n                                )}\r\n                                {input(\r\n                                    'small-6 columns',\r\n                                    'alternativeAddress',\r\n                                    'lastName',\r\n                                    'shipping family-name'\r\n                                )}\r\n                                {input(\r\n                                    'small-12 columns',\r\n                                    'alternativeAddress',\r\n                                    'careOf',\r\n                                    'on',\r\n                                    null,\r\n                                    'text',\r\n                                    100\r\n                                )}\r\n                                {input(\r\n                                    'small-12 columns',\r\n                                    'alternativeAddress',\r\n                                    'address',\r\n                                    'shipping street-address'\r\n                                )}\r\n                                {input(\r\n                                    'small-6 columns',\r\n                                    'alternativeAddress',\r\n                                    'zipCode',\r\n                                    'shipping postal-code',\r\n                                    null,\r\n                                    'text',\r\n                                    50\r\n                                )}\r\n                                {input(\r\n                                    'small-6 columns',\r\n                                    'alternativeAddress',\r\n                                    'city',\r\n                                    'shipping address-level2',\r\n                                    null,\r\n                                    'text',\r\n                                    100\r\n                                )}\r\n                                <div className=\"small-12 columns\">\r\n                                    <label\r\n                                        className=\"form__label\"\r\n                                        htmlFor=\"country2\"\r\n                                    >\r\n                                        {translate(\r\n                                            'checkout.customerinfo.country'\r\n                                        )}\r\n                                    </label>\r\n                                    <select\r\n                                        className=\"form__input\"\r\n                                        id=\"country2\"\r\n                                        value={alternativeAddress.country}\r\n                                        autoComplete=\"country\"\r\n                                        onChange={(event) => {\r\n                                            onChange(\r\n                                                'alternativeAddress',\r\n                                                'country',\r\n                                                event.target.value\r\n                                            );\r\n                                            onChange(\r\n                                                'customerDetails',\r\n                                                'country',\r\n                                                event.target.value\r\n                                            );\r\n                                        }}\r\n                                    >\r\n                                        <option value=\"\" disabled>\r\n                                            {translate(\r\n                                                'checkout.customerinfo.country.placeholder'\r\n                                            )}\r\n                                        </option>\r\n                                        {constants.countries &&\r\n                                            constants.countries.map(\r\n                                                ({ text, value }) => (\r\n                                                    <option\r\n                                                        value={value}\r\n                                                        key={`country2-${value}`}\r\n                                                    >\r\n                                                        {text}\r\n                                                    </option>\r\n                                                )\r\n                                            )}\r\n                                    </select>\r\n                                </div>\r\n                                {input(\r\n                                    'small-12 columns',\r\n                                    'alternativeAddress',\r\n                                    'phoneNumber',\r\n                                    'shipping tel',\r\n                                    null,\r\n                                    'tel'\r\n                                )}\r\n                            </div>\r\n                        )}\r\n                    </div>\r\n                    <div className=\"small-12 medium-6 columns\">\r\n                        <div className=\"row-inner\">\r\n                            {input(\r\n                                'small-12 columns',\r\n                                'customerDetails',\r\n                                'email',\r\n                                'email',\r\n                                null,\r\n                                'email'\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                    <div\r\n                        className={`small-12 columns flex-container ${\r\n                            authenticated ? 'align-right' : 'align-justify'\r\n                        }`}\r\n                    >\r\n                        <div>\r\n                            {!authenticated && signUpCheckboxVisibility && (\r\n                                <>\r\n                                    <input\r\n                                        className=\"checkout-info__checkbox-input\"\r\n                                        type=\"checkbox\"\r\n                                        id=\"signupandlogin\"\r\n                                        checked={signUp}\r\n                                        onChange={(event) =>\r\n                                            dispatch(\r\n                                                setSignUp(event.target.checked)\r\n                                            )\r\n                                        }\r\n                                    />\r\n                                    <label\r\n                                        className=\"checkout-info__checkbox-label\"\r\n                                        htmlFor=\"signupandlogin\"\r\n                                    >\r\n                                        {translate(\r\n                                            'checkout.customerinfo.signupandlogin'\r\n                                        )}\r\n                                    </label>\r\n                                </>\r\n                            )}\r\n                        </div>\r\n                        <Button\r\n                            onClick={onSave}\r\n                            title={translate('checkout.continue')}\r\n                            className={\"button checkout__continue-button\"}\r\n                            disabled={isValidating}\r\n                        />\r\n                    </div>\r\n                </Fragment>\r\n            ) : (\r\n                <Fragment>\r\n                    <InfoField\r\n                        values={[\r\n                            valueForm['customerDetails']['firstName'],\r\n                            valueForm['customerDetails']['lastName'],\r\n                        ]}\r\n                    />\r\n                    {valueForm['customerDetails']['careOf'] && (\r\n                        <InfoField\r\n                            values={[valueForm['customerDetails']['careOf']]}\r\n                        />\r\n                    )}\r\n                    <InfoField\r\n                        values={[valueForm['customerDetails']['address']]}\r\n                    />\r\n                    <InfoField\r\n                        values={[\r\n                            valueForm['customerDetails']['zipCode'],\r\n                            valueForm['customerDetails']['city'],\r\n                        ]}\r\n                    />\r\n                    <InfoField values={[getCountry(customerDetails)]} />\r\n\r\n                    <InfoField\r\n                        values={[valueForm['customerDetails']['phoneNumber']]}\r\n                    />\r\n                    <InfoField\r\n                        values={[valueForm['customerDetails']['email']]}\r\n                    />\r\n                </Fragment>\r\n            )}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default CheckoutPrivateCustomerInfo;\r\n","import { string, object, boolean, mixed } from 'yup';\r\nimport { translate } from '../Services/translation';\r\n\r\nconst privateCustomerAdditionalDetailsSchema = object().shape({\r\n    acceptTermsOfCondition: boolean()\r\n        .required(translate(`validation.checkrequired`))\r\n        .oneOf([true], translate(`validation.checkrequired`)),\r\n    selectedDeliveryMethod: object().required(translate(`validation.required`)),\r\n    selectedPaymentMethod: object().required(translate(`validation.required`)),\r\n});\r\n\r\nconst privateCustomerAddressSchema = object().shape({\r\n    email: string()\r\n        .required(translate(`validation.required`))\r\n        .email(translate(`validation.email`)),\r\n    phoneNumber: string().required(translate(`validation.required`)),\r\n    country: mixed()\r\n        .required(translate(`validation.required`))\r\n        .notOneOf([''], translate('validation.required')),\r\n    city: string().required(translate(`validation.required`)),\r\n    zipCode: string().required(translate(`validation.required`)),\r\n    address: string().required(translate(`validation.required`)),\r\n    lastName: string().required(translate(`validation.required`)),\r\n    firstName: string().required(translate(`validation.required`)),\r\n});\r\n\r\nconst privateCustomerAlternativeAddressSchema = object().shape({\r\n    phoneNumber: string().required(translate(`validation.required`)),\r\n    country: mixed()\r\n        .required(translate(`validation.required`))\r\n        .notOneOf([''], translate('validation.required')),\r\n    city: string().required(translate(`validation.required`)),\r\n    zipCode: string().required(translate(`validation.required`)),\r\n    address: string().required(translate(`validation.required`)),\r\n    lastName: string().required(translate(`validation.required`)),\r\n    firstName: string().required(translate(`validation.required`)),\r\n});\r\n\r\nconst businessCustomerDetailsSchema = object().shape({\r\n    email: string()\r\n        .required(translate(`validation.required`))\r\n        .email(translate(`validation.email`)),\r\n    phoneNumber: string().required(translate(`validation.required`)),\r\n    lastName: string().required(translate(`validation.required`)),\r\n    firstName: string().required(translate(`validation.required`)),\r\n    selectedCompanyAddressId: string().required(\r\n        translate(`validation.required`)\r\n    ),\r\n});\r\n\r\nconst businessCustomerAdditionalDetailsSchema = object().shape({\r\n    acceptTermsOfCondition: boolean()\r\n        .required(translate(`validation.checkrequired`))\r\n        .oneOf([true], translate(`validation.checkrequired`)),\r\n    selectedDeliveryMethod: object().required(translate(`validation.required`)),\r\n    selectedPaymentMethod: object().required(translate(`validation.required`)),\r\n});\r\n\r\nconst businessCustomerAlternativeAddressSchema = object().shape({\r\n    phoneNumber: string().required(translate(`validation.required`)),\r\n    country: mixed()\r\n        .required(translate(`validation.required`))\r\n        .notOneOf([''], translate('validation.required')),\r\n    city: string().required(translate(`validation.required`)),\r\n    zipCode: string().required(translate(`validation.required`)),\r\n    address: string().required(translate(`validation.required`)),\r\n    lastName: string().required(translate(`validation.required`)),\r\n    firstName: string().required(translate(`validation.required`)),\r\n    email: string()\r\n        .required(translate(`validation.required`))\r\n        .email(translate(`validation.email`)),\r\n});\r\n\r\nexport {\r\n    privateCustomerAdditionalDetailsSchema,\r\n    privateCustomerAddressSchema,\r\n    privateCustomerAlternativeAddressSchema,\r\n    businessCustomerDetailsSchema,\r\n    businessCustomerAdditionalDetailsSchema,\r\n    businessCustomerAlternativeAddressSchema\r\n};\r\n","import React, { Fragment, useCallback } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport {\r\n    clearError,\r\n    setBusinessCustomer,\r\n    setSelectedCompanyAddress,\r\n    submitError,\r\n    updateCustomerDetails,\r\n    setCountry,\r\n    saveCustomerDetail,\r\n    setValidateStatus,\r\n} from '../Actions/Checkout.action';\r\nimport CheckoutBusinessCustomerInfo from './Checkout.BusinessCustomerInfo';\r\nimport CheckoutPrivateCustomerInfo from './Checkout.PrivateCustomerInfo';\r\nimport {\r\n    businessCustomerDetailsSchema,\r\n    privateCustomerAddressSchema,\r\n    privateCustomerAlternativeAddressSchema,\r\n} from './Checkout.ValidationSchema';\r\nimport constants from '../constants';\r\nimport { translate } from '../Services/translation';\r\nimport Button from './Button';\r\n\r\nconst validateAlternativeAddress = (alternativeAddress) => {\r\n    return (\r\n        alternativeAddress &&\r\n        alternativeAddress.showAlternativeAddress &&\r\n        (alternativeAddress.firstName ||\r\n            alternativeAddress.lastName ||\r\n            alternativeAddress.address ||\r\n            alternativeAddress.zipCode ||\r\n            alternativeAddress.city ||\r\n            alternativeAddress.phoneNumber)\r\n    );\r\n};\r\n\r\nconst validateCustomerInfo = (result, isBusinessCustomer) => {\r\n    const {\r\n        customerDetails,\r\n        selectedCompanyAddressId,\r\n        alternativeAddress,\r\n    } = result;\r\n\r\n    if (isBusinessCustomer) {\r\n        return businessCustomerDetailsSchema.validate({\r\n            ...customerDetails,\r\n            selectedCompanyAddressId,\r\n        });\r\n    }\r\n\r\n    return privateCustomerAddressSchema\r\n        .validate({\r\n            ...customerDetails,\r\n        })\r\n        .then((result) => {\r\n            if (validateAlternativeAddress(alternativeAddress)) {\r\n                return privateCustomerAlternativeAddressSchema\r\n                    .validate({\r\n                        ...alternativeAddress,\r\n                    })\r\n                    .catch((error) => {\r\n                        error.addressPath = 'alternativeAddress';\r\n                        throw error;\r\n                    });\r\n            } else {\r\n                return result;\r\n            }\r\n        });\r\n};\r\n\r\nconst CheckoutCustomerInfo = ({\r\n    checkout,\r\n    addressFormValue,\r\n    setAddressFormValue,\r\n    isEditingAddress,\r\n    setIsEditingAddress,\r\n    signUpCheckboxVisibility,\r\n}) => {\r\n    const dispatch = useDispatch();\r\n    const {\r\n        payload: { loginUrl, authenticated, isBusinessCustomer, checkoutMode },\r\n    } = checkout;\r\n\r\n    const onCustomerInfoChange = useCallback(\r\n        (stateKey, id, value) => {\r\n            setAddressFormValue((previousState) => ({\r\n                ...previousState,\r\n                [stateKey]: {\r\n                    ...previousState[stateKey],\r\n                    [id]: value,\r\n                },\r\n            }));\r\n        },\r\n        [setAddressFormValue]\r\n    );\r\n    const onCompanyAddressChange = useCallback(\r\n        (companyAddressId, country) => {\r\n            setAddressFormValue((previousState) => ({\r\n                ...previousState,\r\n                selectedCompanyAddressId: companyAddressId,\r\n                customerDetails: {\r\n                    ...previousState.customerDetails,\r\n                    country,\r\n                },\r\n            }));\r\n        },\r\n        [setAddressFormValue]\r\n    );\r\n\r\n    const onEditForm = useCallback(() => {\r\n        setIsEditingAddress(true);\r\n    }, [setIsEditingAddress]);\r\n\r\n    const onUpdateCustomerDetails = useCallback(() => {\r\n        const notCustomerDetailFields = ['selectedCompanyAddressId'];\r\n\r\n        const onValid = () => {\r\n            const { payload } = checkout,\r\n                { isBusinessCustomer, channelTwoLetterIsoCode } = payload;\r\n            const {\r\n                customerDetails,\r\n                selectedCompanyAddressId,\r\n                alternativeAddress,\r\n            } = addressFormValue;\r\n\r\n            dispatch(updateCustomerDetails('customerDetails', customerDetails));\r\n            if (isBusinessCustomer) {\r\n                dispatch(setSelectedCompanyAddress(selectedCompanyAddressId));\r\n                const companyAddress = payload.companyAddresses.find(\r\n                    (c) => c.systemId === selectedCompanyAddressId\r\n                );\r\n                dispatch(setCountry(channelTwoLetterIsoCode));\r\n            } else {\r\n                dispatch(\r\n                    updateCustomerDetails(\r\n                        'alternativeAddress',\r\n                        alternativeAddress\r\n                    )\r\n                );\r\n                dispatch(setCountry(customerDetails.country));\r\n            }\r\n            setIsEditingAddress(false);\r\n        };\r\n\r\n        const onSetCustomerDetail = () =>\r\n            dispatch(saveCustomerDetail(addressFormValue));\r\n\r\n        const onError = (error) => {\r\n            error.path =\r\n                notCustomerDetailFields.indexOf(error.path) >= 0\r\n                    ? error.path\r\n                    : `${error?.addressPath || 'customerDetails'}-${\r\n                          error.path\r\n                      }`;\r\n            dispatch(submitError(error));\r\n        };\r\n\r\n        dispatch(setValidateStatus(true));\r\n        dispatch(clearError());\r\n\r\n        validateCustomerInfo(addressFormValue, isBusinessCustomer)\r\n            .then(onSetCustomerDetail)\r\n            .then(onValid)\r\n            .catch(onError)\r\n            .finally(() => {\r\n                dispatch(setValidateStatus(false));\r\n            });\r\n    }, [\r\n        dispatch,\r\n        addressFormValue,\r\n        isBusinessCustomer,\r\n        checkout,\r\n        setIsEditingAddress,\r\n    ]);\r\n\r\n    const privateCustomerInfoComponent = useCallback(() => {\r\n        return (\r\n            <CheckoutPrivateCustomerInfo\r\n                onSave={onUpdateCustomerDetails}\r\n                onChange={onCustomerInfoChange}\r\n                valueForm={addressFormValue}\r\n                isEditingAddress={isEditingAddress}\r\n                signUpCheckboxVisibility={signUpCheckboxVisibility}\r\n            />\r\n        );\r\n    }, [\r\n        addressFormValue,\r\n        isEditingAddress,\r\n        onCustomerInfoChange,\r\n        onUpdateCustomerDetails,\r\n        signUpCheckboxVisibility,\r\n    ]);\r\n\r\n    const businessCustomerInfoComponent = useCallback(() => {\r\n        return (\r\n            <CheckoutBusinessCustomerInfo\r\n                onChange={onCustomerInfoChange}\r\n                onCompanyAddressChange={onCompanyAddressChange}\r\n                onSave={onUpdateCustomerDetails}\r\n                valueForm={addressFormValue}\r\n                isEditingAddress={isEditingAddress}\r\n            />\r\n        );\r\n    }, [\r\n        addressFormValue,\r\n        isEditingAddress,\r\n        onCompanyAddressChange,\r\n        onCustomerInfoChange,\r\n        onUpdateCustomerDetails,\r\n    ]);\r\n\r\n    if (!authenticated) {\r\n        return (\r\n            <Fragment>\r\n                <div className=\"row align-justify\">\r\n                    <div className=\"flex-container checkout__flex-wrapper\">\r\n                        <h3 className=\"checkout__section-title\">\r\n                            {translate('checkout.customerinfo.title')}\r\n                        </h3>\r\n                        {isEditingAddress && (\r\n                            <Fragment>\r\n                                <label className=\"checkout__text--in-line\">\r\n                                    {translate(\r\n                                        'checkout.customerinfo.existingcustomer'\r\n                                    )}\r\n                                </label>\r\n                                &nbsp;\r\n                                <a href={loginUrl} className=\"checkout__link\">\r\n                                    {translate(\r\n                                        'checkout.customerinfo.clicktologin'\r\n                                    )}\r\n                                </a>\r\n                                &nbsp;\r\n                                {!isBusinessCustomer &&\r\n                                    checkoutMode ===\r\n                                        constants.checkoutMode.both && (\r\n                                        <a\r\n                                            onClick={() =>\r\n                                                dispatch(\r\n                                                    setBusinessCustomer(true)\r\n                                                )\r\n                                            }\r\n                                            className=\"checkout__link\"\r\n                                        >\r\n                                            {translate(\r\n                                                'checkout.customerinfo.businesscustomer'\r\n                                            )}\r\n                                        </a>\r\n                                    )}\r\n                                {isBusinessCustomer &&\r\n                                    checkoutMode ===\r\n                                        constants.checkoutMode.both && (\r\n                                        <a\r\n                                            onClick={() =>\r\n                                                dispatch(\r\n                                                    setBusinessCustomer(false)\r\n                                                )\r\n                                            }\r\n                                            className=\"checkout__link\"\r\n                                        >\r\n                                            {translate(\r\n                                                'checkout.customerinfo.privatecustomer'\r\n                                            )}\r\n                                        </a>\r\n                                    )}\r\n                            </Fragment>\r\n                        )}\r\n                    </div>\r\n                    {!isEditingAddress && (\r\n                        <Button\r\n                            onClick={onEditForm}\r\n                            title={translate('checkout.edit')}\r\n                            className={'button checkout__continue-button'}\r\n                        />\r\n                    )}\r\n                </div>\r\n                {!isBusinessCustomer &&\r\n                    checkoutMode !== constants.checkoutMode.companyCustomers &&\r\n                    privateCustomerInfoComponent()}\r\n                {(isBusinessCustomer ||\r\n                    checkoutMode === constants.checkoutMode.companyCustomers) &&\r\n                    businessCustomerInfoComponent()}\r\n            </Fragment>\r\n        );\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <div className=\"row align-justify\">\r\n                <h3 className=\"checkout__section-title\">\r\n                    {translate('checkout.customerinfo.title')}\r\n                </h3>\r\n                {!isEditingAddress && (\r\n                    <Button\r\n                        onClick={onEditForm}\r\n                        title=\"edit\"\r\n                        className={'button checkout__continue-button'}\r\n                    />\r\n                )}\r\n            </div>\r\n            {!isBusinessCustomer && privateCustomerInfoComponent()}\r\n            {isBusinessCustomer && businessCustomerInfoComponent()}\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default CheckoutCustomerInfo;\r\nexport { validateAlternativeAddress, validateCustomerInfo };\r\n","import React, { Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { setDelivery } from '../Actions/Checkout.action';\r\nimport { translate } from '../Services/translation';\r\n\r\nconst CheckoutDeliveryMethods = ({ errors }) => {\r\n    const dispatch = useDispatch();\r\n    const { deliveryMethods, selectedDeliveryMethod } = useSelector(\r\n        (state) => state.checkout.payload\r\n    );\r\n    \r\n    if (!deliveryMethods || deliveryMethods.length === 0) {\r\n        return null;\r\n    }\r\n    \r\n    if (deliveryMethods.length === 1) {\r\n        return (\r\n            <section className=\"row checkout-info__container\">\r\n                <div className=\"columns checkout-column small-12\">\r\n                    {deliveryMethods.map((method) => (\r\n                        <span\r\n                            className=\"columns checkout-column\"\r\n                            key={method.id}\r\n                        >\r\n                            <b>{method.name}</b>\r\n                        </span>\r\n                    ))}\r\n                </div>\r\n            </section>\r\n        );\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <div className=\"row\">\r\n                <h3 className=\"checkout__section-title\">\r\n                    {translate('checkout.delivery.title')}\r\n                </h3>\r\n            </div>\r\n\r\n<div className=\"row column\">\r\n                 {window.location.search.indexOf('CanConfirmOrderError') != -1 && window.__litium.preloadState.checkout.errors && window.__litium.preloadState.checkout.errors['selectedDeliveryMethod'] && ( \r\n                <span className=\"checkout__validator--error\">\r\n                    {window.__litium.preloadState.checkout.errors['selectedDeliveryMethod'][0]}                \r\n                </span>\r\n                  )} \r\n            </div>            \r\n            \r\n            {deliveryMethods && deliveryMethods.length > 0 && (\r\n                <section className=\"row checkout-info__container\">\r\n                    <div className=\"columns small-12\">\r\n                        {deliveryMethods.map((method) => (\r\n                            <label className=\"row no-margin checkout-info__radio-label\" key={method.id}>\r\n                                <input\r\n                                    type=\"radio\"\r\n                                    name=\"deliveryMethods\"\r\n                                    className=\"checkout-info__checkbox-radio\"\r\n                                    value={method.id}\r\n                                    checked={\r\n                                        method.id === selectedDeliveryMethod?.id\r\n                                    }\r\n                                    onChange={() =>\r\n                                        dispatch(setDelivery(method))\r\n                                    }\r\n                                />\r\n                                <span className=\"columns\">\r\n                                    <b> {method.name} {method.formattedPrice}</b>\r\n                                </span>\r\n                            </label>\r\n                        ))}\r\n                    </div>\r\n                </section>\r\n            )}\r\n            <div className=\"row\">\r\n                {errors['selectedDeliveryMethod'] && (\r\n                    <span className=\"form__validator--error form__validator--top-narrow\">\r\n                        {errors['selectedDeliveryMethod'][0]}\r\n                    </span>\r\n                )}\r\n            </div>\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default CheckoutDeliveryMethods;\r\n","import React, { Fragment, useEffect, useRef } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../Services/translation';\r\nimport {\r\n    setDiscountCode,\r\n    submitDiscountCode,\r\n    deleteDiscountCode,\r\n} from '../Actions/Checkout.action';\r\n\r\nconst CheckoutPaymentMethods = () => {\r\n    const dispatch = useDispatch();\r\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\r\n    const { usedDiscountCodes } = payload;\r\n    const discountCodeEl = useRef(null);\r\n\r\n    useEffect(() => {\r\n        if (errors && !errors['discountCode']?.length) {\r\n            discountCodeEl.current.value = '';\r\n        }\r\n    }, [errors]);\r\n\r\n    return (\r\n        <Fragment>\r\n            <section className=\"row checkout-info__container\">\r\n                <div className=\"columns checkout-column small-12\">\r\n                    <h3 className=\"checkout__section-title\">\r\n                        {translate('checkout.discountcode')}\r\n                    </h3>\r\n                </div>\r\n                <div className=\"columns checkout-column small-12\">\r\n                    <div className=\"row no-margin\">\r\n                        <div className=\"small-6 medium-4\">\r\n                            <input\r\n                                ref={discountCodeEl}\r\n                                className=\"form__input\"\r\n                                id=\"campaign-code\"\r\n                                placeholder={translate('checkout.discountcode')}\r\n                                onChange={(event) =>\r\n                                    dispatch(\r\n                                        setDiscountCode(event.target.value)\r\n                                    )\r\n                                }\r\n                            />\r\n                            {errors && errors['discountCode'] && (\r\n                                <span\r\n                                    className=\"form__validator--error form__validator--top-narrow\"\r\n                                    data-error-for=\"campaign-code\"\r\n                                >\r\n                                    {errors['discountCode'][0]}\r\n                                </span>\r\n                            )}\r\n                        </div>\r\n                        <div className=\"small-5 medium-4 columns\">\r\n                            <button\r\n                                className=\"button checkout-info__campaign-button\"\r\n                                onClick={() => dispatch(submitDiscountCode())}\r\n                            >\r\n                                {translate('checkout.usediscountcode')}\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row no-margin\">\r\n                        <div className=\"chip__container\">\r\n                            {usedDiscountCodes &&\r\n                                usedDiscountCodes.map((discountCode) => (\r\n                                    <div className=\"chip\" key={discountCode}>\r\n                                        <span className=\"chip__label checkout-discount-codes\">\r\n                                            {translate(\r\n                                                'checkout.discountcodesuccess'\r\n                                            )}{' '}\r\n                                            \"{discountCode}\"\r\n                                        </span>\r\n                                        <i\r\n                                            className=\"fa fw fa-remove\"\r\n                                            onClick={() =>\r\n                                                dispatch(\r\n                                                    deleteDiscountCode(\r\n                                                        discountCode\r\n                                                    )\r\n                                                )\r\n                                            }\r\n                                            title={translate('general.remove')}\r\n                                        ></i>\r\n                                    </div>\r\n                                ))}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </section>\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default CheckoutPaymentMethods;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { translate } from '../Services/translation';\r\n\r\nconst CheckoutOrderInfo = () => {\r\n    const cart = useSelector((state) => state.cart);\r\n\r\n    return (\r\n        <div className=\"columns checkout-column-right small-12 medium-6 checkout-info__summary--full-row\">\r\n            <div>\r\n                {translate('checkout.order.productstotal')}{' '}\r\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\r\n                {cart.orderTotal}\r\n            </div>\r\n            <div>\r\n                {translate('checkout.order.discount')}{' '}\r\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\r\n                {cart.discount}\r\n            </div>\r\n            <div>\r\n                {translate('checkout.order.deliverycost')}{' '}\r\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\r\n                {cart.deliveryCost}\r\n            </div>\r\n            <div>\r\n                {translate('checkout.order.paymentcost')}{' '}\r\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\r\n                {cart.paymentCost}\r\n            </div>\r\n            <h3>\r\n                {translate('checkout.order.grandTotal')}{' '}\r\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\r\n                {cart.grandTotal}\r\n            </h3>\r\n            <div>\r\n                {translate('checkout.order.vat')}{' '}\r\n                <span className=\"checkout-info__summary--expand\"></span>{' '}\r\n                {cart.vat}\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default CheckoutOrderInfo;\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../Services/translation';\r\nimport { setOrderNote } from '../Actions/Checkout.action';\r\n\r\nconst CheckoutOrderNote = () => {\r\n    const dispatch = useDispatch();\r\n    const orderNote = useSelector((state) => state.checkout.payload.orderNote);\r\n\r\n    return (\r\n        <div className=\"columns checkout-column-left small-12 medium-6 checkout-info__summary--full-height\">\r\n            {translate('checkout.order.message')}\r\n            <textarea\r\n                className=\"form__input checkout-info__messages\"\r\n                value={orderNote}\r\n                onChange={(event) => dispatch(setOrderNote(event.target.value))}\r\n            ></textarea>\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default CheckoutOrderNote;\r\n","import React, { Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { setPayment } from '../Actions/Checkout.action';\r\nimport { translate } from '../Services/translation';\r\n\r\nconst CheckoutPaymentMethods = ({ errors }) => {\r\n    const dispatch = useDispatch();\r\n    const { payload } = useSelector((state) => state.checkout);\r\n    const { paymentMethods, selectedPaymentMethod } = payload;\r\n\r\n    return (\r\n        <Fragment>\r\n            <div className=\"row\">\r\n                <h3 className=\"checkout__section-title\">\r\n                    {translate('checkout.payment.title')}\r\n                </h3>\r\n            </div>\r\n            {paymentMethods && paymentMethods.length > 0 && (\r\n                <section className=\"row checkout-info__container\">\r\n                    <div className=\"columns checkout-column small-12\">\r\n                        {paymentMethods.map((method,index) => (\r\n                            <label className=\"row no-margin\" key={index + method.id}>\r\n                                <input\r\n                                    type=\"radio\"\r\n                                    name=\"paymentMethods\"\r\n                                    className=\"checkout-info__checkbox-radio\"\r\n                                    value={method.id}\r\n                                    checked={\r\n                                        method.id === selectedPaymentMethod.id\r\n                                    }\r\n                                    onChange={() =>\r\n                                        dispatch(setPayment(method))\r\n                                    }\r\n                                />\r\n                                <span className=\"columns checkout-column\">\r\n                                    <b> {method.name} </b>\r\n                                </span>\r\n                            </label>\r\n                        ))}\r\n                    </div>\r\n                </section>\r\n            )}\r\n            <div className=\"row\">\r\n                {errors['selectedPaymentMethod'] && (\r\n                    <span className=\"form__validator--error form__validator--top-narrow\">\r\n                        {errors['selectedPaymentMethod'][0]}\r\n                    </span>\r\n                )}\r\n            </div>\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default CheckoutPaymentMethods;\r\n","import React from 'react';\r\nimport DynamicComponent from '../DynamicComponent';\r\nconst scriptPattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script>/gi;\r\nconst scriptFilePattern = /<script.*?src=[\"'](.*?)[\"']/gi;\r\n\r\nconst extractScripts = (domString) => {\r\n    let matches,\r\n        html = domString;\r\n    const scripts = [],\r\n        scriptFiles = [];\r\n    while ((matches = scriptPattern.exec(domString)) !== null) {\r\n        html = html.replace(matches[0], '');\r\n        matches[1] && matches[1].trim() !== '' && scripts.push(matches[1]);\r\n    }\r\n    while ((matches = scriptFilePattern.exec(domString)) !== null) {\r\n        matches[1] && matches[1].trim() !== '' && scriptFiles.push(matches[1]);\r\n    }\r\n\r\n    return {\r\n        html,\r\n        scripts,\r\n        scriptFiles,\r\n    };\r\n};\r\n\r\nconst executeScript = (domId, scriptContent) => {\r\n    const script = document.createElement('script');\r\n    script.type = 'text/javascript';\r\n    try {\r\n        script.appendChild(document.createTextNode(scriptContent));\r\n    } catch (e) {\r\n        // to support IE\r\n        script.text = scriptContent;\r\n    }\r\n    document.getElementById(domId).appendChild(script);\r\n};\r\n\r\nconst includeScript = (domId, srciptUrl) => {\r\n    const script = document.createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.src = srciptUrl;\r\n    document.getElementById(domId).appendChild(script);\r\n};\r\n\r\nconst PaymentWidget = React.memo(function PaymentWidget({ responseString }) {\r\n    const renderWidget = (paymentSession) => {\r\n        const WidgetCheckout = DynamicComponent({\r\n            loader: () => import('./CheckoutWidget'),\r\n        });\r\n        const args = {\r\n            paymentSession,\r\n            extractScripts,\r\n            executeScript,\r\n            includeScript,\r\n        };\r\n        return <WidgetCheckout {...args} />;\r\n    };\r\n\r\n    return renderWidget(responseString);\r\n});\r\n\r\nexport default PaymentWidget;\r\n","import React from 'react';\r\nimport { translate } from '../Services/translation';\r\nimport constants from '../constants';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { setCountry } from '../Actions/Checkout.action';  ////upgrade8.7 setAlternativeAddress\r\n\r\nconst BusinessCustomerDropShip = () => {\r\n    const dispatch = useDispatch();\r\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\r\n    const { customerDetails = {} } = payload;\r\n    // //upgrade8.7 const onChange = (propName, value) => {\r\n    //     dispatch(setAlternativeAddress(propName, value));\r\n    // };\r\n    const stateKey = 'alternativeAddress';\r\n\r\n    const input = (\r\n        cssClass,\r\n        id,\r\n        autoComplete = 'on',\r\n        placeholder = null,\r\n        type = 'text',\r\n        maxLength = 200\r\n    ) => (\r\n        <div className={cssClass}>\r\n            <label className=\"form__label\" htmlFor={`${stateKey}-${id}`}>\r\n                {translate(`checkout.shippingAddress.${id.toLowerCase()}`)}\r\n            </label>\r\n            <input\r\n                className=\"form__input\"\r\n                id={`${stateKey}-${id}`}\r\n                name={`${stateKey}-${id}`}\r\n                type={type}\r\n                value={(payload[stateKey] || {})[id] || ''}\r\n                placeholder={placeholder}\r\n                autoComplete={autoComplete}\r\n                onChange={(event) => onChange(id, event.target.value)}\r\n                maxLength={maxLength}\r\n            />\r\n            {errors[`${stateKey}-${id}`] && (\r\n                <span\r\n                    className=\"form__validator--error form__validator--top-narrow\"\r\n                    data-error-for={`${stateKey}-${id}`}\r\n                >\r\n                    {errors[`${stateKey}-${id}`][0]}\r\n                </span>\r\n            )}\r\n        </div>\r\n    );\r\n    return (\r\n        <div className=\"checkout-info__container\">\r\n            {\r\n                <div className=\"row-inner\">\r\n                    {input(\r\n                        'small-6 columns',\r\n                        'firstName',\r\n                        'shipping given-name'\r\n                    )}\r\n                    {input(\r\n                        'small-6 columns',\r\n                        'lastName',\r\n                        'shipping family-name'\r\n                    )}\r\n                    {input(\r\n                        'small-12 columns',\r\n                        'address',\r\n                        'shipping street-address'\r\n                    )}\r\n                    {input(\r\n                        'small-6 columns',\r\n                        'zipCode',\r\n                        'shipping postal-code',\r\n                        null,\r\n                        'text',\r\n                        50\r\n                    )}\r\n                    {input(\r\n                        'small-6 columns',\r\n                        'city',\r\n                        'shipping address-level2',\r\n                        null,\r\n                        'text',\r\n                        100\r\n                    )}\r\n                    <div className=\"small-12 columns\">\r\n                        <label className=\"form__label\" htmlFor=\"country2\">\r\n                            {translate('checkout.customerinfo.country')}\r\n                        </label>\r\n                        <select\r\n                            className=\"form__input\"\r\n                            id=\"country2\"\r\n                            value={customerDetails.country}\r\n                            onChange={(event) => {\r\n                                onChange('country', event.target.value);\r\n                                dispatch(setCountry(event.target.value));\r\n                            }}\r\n                        >\r\n                            <option value=\"\" disabled>\r\n                                {translate(\r\n                                    'checkout.customerinfo.country.placeholder'\r\n                                )}\r\n                            </option>\r\n                            {constants.countries &&\r\n                                constants.countries.map(({ text, value }) => (\r\n                                    <option\r\n                                        value={value}\r\n                                        key={`country2-${value}`}\r\n                                    >\r\n                                        {text}\r\n                                    </option>\r\n                                ))}\r\n                        </select>\r\n                    </div>\r\n                    {input('small-12 columns', 'phoneNumber', 'shipping tel')}\r\n                    {input('small-12 columns', 'email', 'shipping email')}\r\n                </div>\r\n            }\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default BusinessCustomerDropShip;\r\n","import React, { Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { setSelectedShippingAddress } from '../Actions/Checkout.action';\r\nimport { translate } from '../Services/translation';\r\nimport constants from '../constants';\r\n\r\nconst BusinessCustomerShippingAddress = () => {\r\n    const dispatch = useDispatch();\r\n    const { payload } = useSelector((state) => state.checkout);\r\n    const { shippingAddresses = [], selectedShippingAddressId } = payload;\r\n\r\n    const onShippingAddressChange = (addressId) => {\r\n        dispatch(setSelectedShippingAddress(addressId));\r\n    };\r\n\r\n    const getCountry = (address) => {\r\n        const country = constants.countries ? constants.countries.find((x) => x.value === address.country) : null;\r\n        return country ? country.text : address.country;\r\n    };\r\n\r\n    const formattedAddress = (address) => {\r\n        return [address.address, address.zipCode, address.city, getCountry(address)].filter((x) => !!x).join(', ');\r\n    };\r\n\r\n    if (!shippingAddresses || shippingAddresses.length === 0) {\r\n        return null;\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <label htmlFor=\"checkout.shippinginfo.address\" className=\"form__label\">\r\n                {translate('checkout.shippinginfo.address')}\r\n            </label>\r\n            <select\r\n                id=\"checkout.shippinginfo.address\"\r\n                className=\"form__input\"\r\n                value={selectedShippingAddressId}\r\n                onChange={(event) => onShippingAddressChange(event.target.value)}\r\n            >\r\n                {shippingAddresses.map((address) => (\r\n                    <option value={address.systemId} key={address.systemId}>\r\n                        {formattedAddress(address)}\r\n                    </option>\r\n                ))}\r\n            </select>\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default BusinessCustomerShippingAddress;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../Services/translation';\r\nimport BusinessCustomerDropShip from './Checkout.BusinessCustomerDropShip';\r\nimport BusinessCustomerShippingAddress from './Checkout.BusinessCustomerShippingAddress';\r\nimport { setDropShipping } from '../Actions/Checkout.action';\r\n\r\nconst CheckoutBusinessCustomerShippingInfo = () => {\r\n    const dispatch = useDispatch();\r\n    const { payload, errors = {} } = useSelector((state) => state.checkout);\r\n    const [isDropShipSelected, setDropShipSelected] = useState(false);\r\n    const [isStoreSelected, setStoreSelected] = useState(true);\r\n    const [shipping, setShipping] = useState(false);\r\n    const { authenticated, shippingTypes, dropShipping } = payload;\r\n\r\n    const onShippingTypeChange = (value) => {\r\n        const dropShipping = value === 'true';\r\n        setShipping(dropShipping);\r\n        dispatch(setDropShipping(dropShipping));\r\n    };\r\n\r\n    useEffect(() => {\r\n        setDropShipSelected(shipping);\r\n        setStoreSelected(!shipping);\r\n    }, [shipping]);\r\n\r\n    return (\r\n        <div className=\"row checkout-info__container\">\r\n            <div className=\"small-12 medium-6 checkout-column columns\">\r\n                <div className=\"row-inner\">\r\n                    <div className=\"small-12 columns\">\r\n                        {translate('checkout.shipping.type')}\r\n                    </div>\r\n                    <div className=\"small-12 columns\">\r\n                        <label\r\n                            className=\"form__label\"\r\n                            htmlFor=\"checkout.shipping.shippingtype\"\r\n                        >\r\n                            {translate(\r\n                                'checkout.shipping.shippingtype.placeholder'\r\n                            )}\r\n                        </label>\r\n                        <select\r\n                            className=\"form__input\"\r\n                            id=\"checkout.shipping.shippingtype\"\r\n                            value={dropShipping}\r\n                            disabled={!authenticated}\r\n                            onChange={(event) =>\r\n                                onShippingTypeChange(event.target.value)\r\n                            }\r\n                        >\r\n                            {shippingTypes &&\r\n                                shippingTypes.map((type) => (\r\n                                    <option\r\n                                        value={type.dropShipping}\r\n                                        key={type.name}\r\n                                    >\r\n                                        {type.name}\r\n                                    </option>\r\n                                ))}\r\n                        </select>\r\n                        {errors['dropShipping'] && (\r\n                            <span\r\n                                className=\"form__validator--error form__validator--top-narrow\"\r\n                                data-error-for=\"dropShipping\"\r\n                            >\r\n                                {errors['dropShipping'][0]}\r\n                            </span>\r\n                        )}\r\n                    </div>\r\n                </div>\r\n                {isDropShipSelected && !isStoreSelected && (\r\n                    <BusinessCustomerDropShip />\r\n                )}\r\n                {isStoreSelected && !isDropShipSelected && (\r\n                    <BusinessCustomerShippingAddress />\r\n                )}\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default CheckoutBusinessCustomerShippingInfo;\r\n","import axios from \"axios\";\r\nimport { SIWSessionDTO } from \"./types\";\r\nconst token = window.localStorage.getItem('requestVerificationToken');\r\nconst serviceURL = \"/api/ingrid\";\r\n\r\n// checkout-demo-backend-stage service simulates the shops backend\r\n// It holds a mocked cart and passes requests to SIW service.\r\n// Your actual setup should look similar - You shouldn't call SIW directly from FE in order not to expose the private keys.\r\n\r\n// Creates a session with a basic cart, calls siw/session.create under the hood\r\nexport const createSession = () => {\r\n  return (\r\n    axios.post<{ session: SIWSessionDTO; html_snippet: string }>(\r\n      `${serviceURL}/session.create`, null, {\r\n      headers: {\r\n        'litium-request-context': window.localStorage.getItem('requestContext'),\r\n        'RequestVerificationToken': token\r\n      },\r\n    },\r\n    ).catch(error => {\r\n      console.warn(error);\r\n    }))\r\n}\r\n//Returns an existing session, calls siw/session.get under the hood\r\n\r\nexport const getSession = (sessionID: string) => {\r\n    return (\r\n        axios.get<{ session: SIWSessionDTO; html_snippet: string }>(`${serviceURL}/session.get?sessionId=` + sessionID, {\r\n            headers: {\r\n                'litium-request-context': window.localStorage.getItem('requestContext'),\r\n                'RequestVerificationToken': token\r\n            }\r\n    }).catch(error => {\r\n      console.warn(error);\r\n    }))\r\n   \r\n}\r\n//Adds a new product the the cart and bumps the price, calls siw/session.update under the hood\r\nexport const updateSession = (sessionID: string) => {\r\n  return (\r\n    axios.post<{ session: SIWSessionDTO; html_snippet: string }>(`${serviceURL}/session.update?sessionId=` + sessionID,\r\n      null,\r\n      {\r\n        headers: {\r\n          'litium-request-context': window.localStorage.getItem('requestContext'),\r\n          'RequestVerificationToken': token\r\n        }\r\n      }\r\n  )\r\n  .catch(error => {\r\n    console.warn(error);\r\n  }))\r\n  \r\n}\r\n","const isScriptNode = (node: HTMLScriptElement) => {\r\n    return node.tagName === \"SCRIPT\";\r\n  };\r\n  \r\n  const isExternalScript = (node: HTMLScriptElement) => {\r\n    return !!node.src && node.src !== \"\";\r\n  };\r\n  \r\n  const cloneScriptNode = (node: HTMLScriptElement) => {\r\n    const script = document.createElement(\"script\");\r\n    script.text = node.innerHTML;\r\n    for (let i = node.attributes.length - 1; i >= 0; i--) {\r\n      script.setAttribute(node.attributes[i].name, node.attributes[i].value);\r\n    }\r\n    return script;\r\n  };\r\n  \r\n  export const replaceScriptNode = (node: any) => {\r\n    if (isScriptNode(node) && !isExternalScript(node)) {\r\n      if (node.parentNode) {\r\n        node.parentNode.replaceChild(cloneScriptNode(node), node);\r\n      }\r\n    } else {\r\n      let i = 0;\r\n      const children = node.childNodes;\r\n      while (i < children.length) {\r\n        replaceScriptNode(children[i++]);\r\n      }\r\n    }\r\n    return node;\r\n  };\r\n  \r\n  export const setupGeneralJSListeners = () => {\r\n    if (window._sw) {\r\n      window._sw((api) => {\r\n        api.on(\"door_code_changed\", (doorCode) =>\r\n          console.log(\"door code changed: \", doorCode)\r\n        );\r\n        api.on(\"courier_instructions_changed\", (courierInstructions) =>\r\n          console.log(\"courier instructions changed: \", courierInstructions)\r\n        );\r\n  \r\n        api.on(\"data_changed\", (data, meta) => {\r\n          console.log(\"data changed\", { data, meta });\r\n        });\r\n      });\r\n    }\r\n  };\r\n  ","/* eslint-disable */\r\nimport React, { CSSProperties } from \"react\";\r\nimport { Button, Card, Col, Row, Space, Statistic, Typography } from \"antd\";\r\nimport ReactJson from \"react-json-view\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { update as deliveryCostUpdate } from '../../Actions/Cart.action';\r\nimport { reloadPayment } from '../../Actions/Checkout.action';\r\nimport {\r\n    createSession,\r\n    updateSession,\r\n    getSession,\r\n} from \"./api\";\r\nimport { replaceScriptNode, setupGeneralJSListeners } from \"./utils\";\r\nimport { SIWSessionDTO } from \"./types\";\r\nimport { RootState } from \"./store\";\r\n\r\nconst localStorageSessionIDKey = \"ingrid-session-id\";\r\nconst statusComplete = \"COMPLETE\";\r\nexport default function IngridApp() {\r\n    // This is where the Delivery Checkout will get injected\r\n    const widgetWrapperRef = React.useRef<HTMLDivElement>(null);\r\n    // Used to show the shipping price in 'total cost' section\r\n    const [shippingPrice, setShippingPrice] = React.useState<null | number>(null);\r\n    // Used to show the 'cart value' in 'total cost' for the user,\r\n    const [session, setSession] = React.useState<SIWSessionDTO | null>(null);\r\n    const [htmlSnippet, sethtmlSnippet] = React.useState<string | null>('');\r\n    // Used to show the final result after session is completed\r\n    const [sessionResult, setSessionResult] = React.useState<\r\n        SIWSessionDTO[\"result\"] | null\r\n    >(null);\r\n    // Just to lock the buttons while requests are pending\r\n    const [isLoading, setIsLoading] = React.useState(false);\r\n    const dispatch = useDispatch();\r\n    // const sessionResponse = useSelector((state) => state.ingrid);\r\n    const mapCartToAbort = {};\r\n    const firstRender = React.useRef(true);\r\n    const cart = (state: RootState) => state.cart\r\n    let cartObj = useSelector(cart);\r\n    const ingrid = (state: RootState) => state.ingrid\r\n    const ingridObj = useSelector(ingrid);\r\n    const [isReload, setReLoad] = React.useState(ingridObj.showInfo)\r\n    mapCartToAbort[cartObj.articleNumber] = new AbortController();\r\n\r\n    React.useEffect(() => {\r\n        if (firstRender.current) {\r\n            firstRender.current = false;\r\n            return;\r\n        }\r\n        handleUpdateSession(session, true);\r\n    }, [ingridObj.showInfo]);\r\n\r\n    React.useEffect(() => {\r\n        initDeliveryCheckout();\r\n    }, []);\r\n\r\n    const initDeliveryCheckout = async () => {\r\n\r\n        // The user might leave the checkout page and come back again after some time\r\n        // In that case, want to restore the previous session instead of creating a new one\r\n        const existingSessionID = window.localStorage.getItem(\r\n            localStorageSessionIDKey\r\n        );\r\n        if (existingSessionID) {\r\n            setIsLoading(true);\r\n            try {\r\n                const getSessionResponse = await getSession(existingSessionID);\r\n                if (getSessionResponse != undefined) {\r\n                    //if status is completed remove localstorage item\r\n                    if (!getSessionResponse.data || getSessionResponse.data.session.status.toUpperCase() == statusComplete) {\r\n                        throw new Error('Ingrid Session is corrupt');\r\n                    }\r\n                    handleIngridInitialize(\r\n                        getSessionResponse?.data.session,\r\n                        getSessionResponse?.data.html_snippet\r\n                    );\r\n                }\r\n                else {\r\n                    throw new Error('Ingrid Session is corrupt');\r\n                }\r\n            }\r\n            catch {\r\n                // If problem with session it is best to clear and generate new session.\r\n                handleClearSession();\r\n                handleCreateSession();\r\n            }\r\n            finally {\r\n                setIsLoading(false);\r\n            }\r\n        }\r\n        else {\r\n            handleCreateSession();\r\n        }\r\n    };\r\n\r\n    const handleIngridInitialize = (\r\n        session: SIWSessionDTO,\r\n        HTMLSnippet: string\r\n    ) => {\r\n        setSession(session);\r\n        sethtmlSnippet(htmlSnippet)\r\n        // Injecting the HTMLSnippet into the dom will setup the app via iframes\r\n        // and secure channels of communication between the iframes and the page\r\n        widgetWrapperRef.current!.innerHTML = HTMLSnippet;\r\n\r\n        // Most browsers will not automatically run an injected script\r\n        // We have to clone it, to trick the browser into runing it\r\n        replaceScriptNode(document.getElementById(\"shipwallet-container\"));\r\n\r\n        // Whenever the user selects a different shipping option,\r\n        // we want to update the shipping price in the 'total cost' section\r\n        window._sw!((api) => {\r\n            api.on(\"data_changed\", (data, meta) => {\r\n                if (meta.price_changed) {\r\n                    setShippingPrice(data.price);\r\n                }\r\n            });\r\n        });\r\n\r\n        // The function below will setup listeners that just console log the received values\r\n        // The events include, for example, address changes or courier instructions change\r\n        //setupGeneralJSListeners();\r\n\r\n        if (window._sw) {\r\n            window._sw((api) => {\r\n                api.on(\"door_code_changed\", (doorCode) =>\r\n                    console.log(\"door code changed: \", doorCode)\r\n                );\r\n                api.on(\"courier_instructions_changed\", (courierInstructions) =>\r\n                    console.log(\"courier instructions changed: \", courierInstructions)\r\n                );\r\n\r\n                api.on(\"data_changed\", (data, meta) => {\r\n                    console.log(\"data changed\", { data, meta });\r\n                    handleUpdateSession(session)\r\n                });\r\n            });\r\n        }\r\n    };\r\n\r\n    const handleCreateSession = async () => {\r\n        setIsLoading(true);\r\n\r\n        try {\r\n            const sessionResponse = await createSession();\r\n            handleIngridInitialize(\r\n                sessionResponse?.data.session,\r\n                sessionResponse?.data.html_snippet\r\n            );\r\n            // Save session ID in case user leaves the checkout without finishing the purchase\r\n            // We will use it on next checkout init to GET session instead of CREATING a new one\r\n            window.localStorage.setItem(\r\n                localStorageSessionIDKey,\r\n                sessionResponse.data.session.id\r\n            );\r\n        } finally {\r\n            setIsLoading(false);\r\n        }\r\n    };\r\n\r\n    const handleUpdateSession = async (session, isChange = false) => {\r\n\r\n        setIsLoading(true);\r\n        try {\r\n            // We need to suspend the widget, so the user cannot change anything while we're updating the session\r\n            window._sw!((api) => api.suspend());\r\n\r\n            // We update the session by simply adding another item to the cart and bumping the price\r\n            if (session != null) {\r\n                const updateSessionResponse = await updateSession(session!.id);\r\n\r\n                setSession(updateSessionResponse?.data?.session);\r\n                // Resuming the widget will make it interactive again\r\n                // And cause it to sync with our backend, So that whatever changes you made\r\n                // via `session.update`are visible on the widget now\r\n                window._sw!((api) => api.resume());\r\n                if (!isChange) {\r\n                    dispatch(\r\n                        deliveryCostUpdate(cartObj.articleNumber, cartObj.quantity, mapCartToAbort[cartObj.articleNumber])\r\n                    )\r\n                    dispatch(reloadPayment());\r\n                }\r\n            }\r\n\r\n        } finally {\r\n            setIsLoading(false);\r\n        }\r\n\r\n    };\r\n\r\n    const handleClearSession = () => {\r\n        window.localStorage.removeItem(localStorageSessionIDKey);\r\n        setShippingPrice(null);\r\n        widgetWrapperRef.current!.innerHTML = \"\";\r\n        setSession(null);\r\n        setSessionResult(null);\r\n    };\r\n\r\n    return (\r\n        <div\r\n            style={{\r\n                textAlign: \"center\",\r\n                width: \"100%\",\r\n                // maxWidth: \"610px\",      \r\n                // paddingBottom: \"30px\",\r\n                // paddingTop: \"15px\",\r\n            }}\r\n        >\r\n            <Space direction=\"vertical\" align=\"center\" size=\"middle\">\r\n                <div\r\n                    ref={widgetWrapperRef}\r\n                    // style={{ width: \"100%\", maxWidth: \"610px\" }}\r\n                    style={{ width: \"100%\" }}\r\n                />\r\n\r\n\r\n                {sessionResult && (\r\n                    <Card\r\n                        title=\"Session result\"\r\n                        style={cardStyle}\r\n                        headStyle={cardHeaderStyle}\r\n                    >\r\n                        <ReactJson\r\n                            collapsed={1}\r\n                            src={sessionResult}\r\n                            theme=\"grayscale:inverted\"\r\n                            style={{ textAlign: \"left\" }}\r\n                        />\r\n                    </Card>\r\n                )}\r\n            </Space>\r\n        </div>\r\n    );\r\n}\r\n\r\n// const cardStyle = { maxWidth: 610, width: \"100%\" };\r\nconst cardStyle = { width: \"100%\" };\r\nconst cardHeaderStyle: CSSProperties = {\r\n    textAlign: \"left\",\r\n    fontWeight: 500,\r\n};\r\n","import React, {\r\n    Fragment,\r\n    useCallback,\r\n    useEffect,\r\n    useRef,\r\n    useState,\r\n} from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n    acceptTermsOfCondition,\r\n    //upgrade8.7 setBusinessCustomer,\r\n    setDelivery,\r\n    setPayment,\r\n    //upgrade8.7  reloadPayment,\r\n    setStatusSubmitButton,\r\n    submit,\r\n    //upgrade8.7  setCustomerDetails,\r\n    //upgrade8.7   setAlternativeAddress,\r\n    //upgrade8.7  submitRequest,\r\n    submitDone,\r\n    submitError,\r\n    userSubscribe,\r\n} from '../../Actions/Checkout.action';\r\n\r\n//upgrade8.7 import Cart from './Cart';\r\n\r\nimport constants, {\r\n    PaymentIntegrationType,\r\n    ShippingIntegrationType,\r\n} from '../../constants';\r\nimport { translate } from '../../Services/translation';\r\nimport Button from '../Button';\r\nimport CheckoutCart from './Checkout.Cart';\r\nimport CheckoutCustomerInfo, {\r\n    validateAlternativeAddress,\r\n    validateCustomerInfo,\r\n} from '../Checkout.CustomerInfo';\r\nimport CheckoutDeliveryMethods from '../Checkout.DeliveryMethods';\r\nimport CheckoutDiscountCodes from '../Checkout.DiscountCodes';\r\nimport CheckoutOrderInfo from '../Checkout.OrderInfo';\r\nimport CheckoutOrderNote from '../Checkout.OrderNote';\r\nimport CheckoutPaymentMethods from '../Checkout.PaymentMethods';\r\nimport {\r\n    businessCustomerAdditionalDetailsSchema,\r\n    businessCustomerDetailsSchema,\r\n    privateCustomerAdditionalDetailsSchema,\r\n    privateCustomerAddressSchema,\r\n    privateCustomerAlternativeAddressSchema,\r\n    businessCustomerAlternativeAddressSchema,\r\n} from '../Checkout.ValidationSchema';\r\nimport PaymentWidget from '../Payments/PaymentWidget';\r\nimport CheckoutBusinessCustomerShippingInfo from '../Checkout.BusinessCustomerShippingInfo';\r\nimport BusinessCustomerShippingAddress from '../Checkout.BusinessCustomerShippingAddress';\r\nimport IngridApp from '../Ingrid/IngridApp';\r\n\r\nconst Checkout = () => {\r\n    const dispatch = useDispatch();\r\n    const cart = useSelector((state) => state.cart);\r\n    const checkout = useSelector((state) => state.checkout);\r\n\r\n    const [shippingOptionVisibility, setShippingOptionVisibility] = useState(\r\n        true\r\n    );\r\n    const [paymentOptionVisibility, setPaymentOptionVisibility] = useState(\r\n        true\r\n    );\r\n    const [customerDetailsVisibility, setCustomerDetailsVisibility] = useState(\r\n        true\r\n    );\r\n    const [deliveryWidgetVisibility, setDeliveryWidgetVisibility] = useState(\r\n        true\r\n    );\r\n    const [paymentWidgetVisibility, setPaymentWidgetVisibility] = useState(\r\n        true\r\n    );\r\n    const [orderSummaryVisibility, setOrderSummaryVisibility] = useState(true);\r\n    const [signUpCheckboxVisibility, setSignUpCheckboxVisibility] = useState(\r\n        true\r\n    );\r\n\r\n    const {\r\n        payload: {\r\n            customerDetails,\r\n            alternativeAddress,\r\n            selectedCompanyAddressId,\r\n            selectedDeliveryMethod,\r\n            selectedPaymentMethod,\r\n            deliveryMethods,\r\n            paymentMethods,\r\n        },\r\n    } = checkout;\r\n    const [isEditingAddress, setIsEditingAddress] = useState(true);\r\n    const [addressFormValue, setAddressFormValue] = useState({\r\n        customerDetails,\r\n        alternativeAddress,\r\n        selectedCompanyAddressId,\r\n    });\r\n    const onSubmit = useCallback(() => dispatch(submit()), [dispatch]);\r\n    const onSubmitError = useCallback(\r\n        (error) => {\r\n            dispatch(submitError(error));\r\n            dispatch(submitDone(null));\r\n        },\r\n        [dispatch]\r\n    );\r\n    // upgrade8.7\r\n    // const onCustomerDetailsChangeCb = useCallback(\r\n    //     (stateKey, propName, value) => {\r\n    //         switch (stateKey) {\r\n    //             case 'customerDetails':\r\n    //                 dispatch(setCustomerDetails(propName, value));\r\n    //                 break;\r\n    //             case 'alternativeAddress':\r\n    //                 dispatch(setAlternativeAddress(propName, value));\r\n    //                 break;\r\n    //             // case 'shippingAddress':\r\n    //             //     dispatch(setShippingAddress(propName, value));\r\n    //             //     break;\r\n    //         }\r\n    //     },\r\n    //     [dispatch]\r\n    // );\r\n\r\n    const placeOrder = useCallback(() => {\r\n        const { payload } = checkout,\r\n            {\r\n                isBusinessCustomer,\r\n                selectedCompanyAddressId,\r\n                acceptTermsOfCondition,\r\n                selectedPaymentMethod,\r\n                selectedDeliveryMethod,\r\n                dropShipping,\r\n                userSubscribe,\r\n            } = payload;\r\n        const notCustomerDetailFields = [\r\n            'selectedCompanyAddressId',\r\n            'selectedPaymentMethod',\r\n            'selectedDeliveryMethod',\r\n            'acceptTermsOfCondition',\r\n            'userSubscribe',\r\n        ];\r\n        const onError = (error, addressPath = 'customerDetails') => {\r\n            error.path =\r\n                notCustomerDetailFields.indexOf(error.path) >= 0\r\n                    ? error.path\r\n                    : `${addressPath}-${error.path}`;\r\n            onSubmitError(error);\r\n            dispatch(setStatusSubmitButton(true));\r\n        };\r\n\r\n        dispatch(setStatusSubmitButton(false));\r\n        if (isBusinessCustomer) {\r\n            if (dropShipping) {\r\n                businessCustomerAlternativeAddressSchema\r\n                    .validate({\r\n                        ...payload.alternativeAddress,\r\n                    })\r\n                    .then(() => {\r\n                        dropShipDetailsSchema\r\n                            .validate({\r\n                                selectedCompanyAddressId,\r\n                                selectedPaymentMethod,\r\n                                selectedDeliveryMethod,\r\n                                acceptTermsOfCondition,\r\n                                userSubscribe,\r\n                            })\r\n                            .then(() => {\r\n                                onSubmit();\r\n                            })\r\n                            .catch((error) => {\r\n                                onError(error, 'dropShipDetails');\r\n                            });\r\n                    })\r\n                    .catch((error) => {\r\n                        onError(error, 'alternativeAddress');\r\n                    });\r\n            } else {\r\n                businessCustomerDetailsSchema\r\n                    .validate({\r\n                        ...payload.customerDetails,\r\n                        selectedCompanyAddressId,\r\n                    })\r\n                    .then(() => {\r\n                        businessCustomerAdditionalDetailsSchema\r\n                            .validate({\r\n                                selectedPaymentMethod,\r\n                                selectedDeliveryMethod,\r\n                                acceptTermsOfCondition,\r\n                                userSubscribe,\r\n                            })\r\n                            .then(() => {\r\n                                onSubmit();\r\n                            })\r\n                            .catch(onError);\r\n                    })\r\n                    .catch(onError);\r\n            }\r\n        } else {\r\n            privateCustomerAddressSchema\r\n                .validate({\r\n                    ...payload.customerDetails,\r\n                })\r\n                .then(() => {\r\n                    if (\r\n                        validateAlternativeAddress(payload.alternativeAddress)\r\n                    ) {\r\n                        privateCustomerAlternativeAddressSchema\r\n                            .validate({\r\n                                ...payload.alternativeAddress,\r\n                            })\r\n                            .then(() => {\r\n                                privateCustomerAdditionalDetailsSchema\r\n                                    .validate({\r\n                                        selectedPaymentMethod,\r\n                                        selectedDeliveryMethod,\r\n                                        acceptTermsOfCondition,\r\n                                        userSubscribe,\r\n                                    })\r\n                                    .then(() => {\r\n                                        onSubmit();\r\n                                    })\r\n                                    .catch(onError);\r\n                            })\r\n                            .catch((error) => {\r\n                                onError(error, 'alternativeAddress');\r\n                            });\r\n                    } else {\r\n                        privateCustomerAdditionalDetailsSchema\r\n                            .validate({\r\n                                selectedPaymentMethod,\r\n                                selectedDeliveryMethod,\r\n                                acceptTermsOfCondition,\r\n                                userSubscribe,\r\n                            })\r\n                            .then(() => {\r\n                                onSubmit();\r\n                            })\r\n                            .catch(onError);\r\n                    }\r\n                })\r\n                .catch(onError);\r\n        }\r\n    }, [checkout, dispatch, onSubmit, onSubmitError]);\r\n\r\n    const resetVisibilityValues = useCallback(() => {\r\n        setShippingOptionVisibility(true);\r\n        setPaymentOptionVisibility(true);\r\n        setCustomerDetailsVisibility(true);\r\n        setDeliveryWidgetVisibility(true);\r\n        setPaymentWidgetVisibility(true);\r\n        setOrderSummaryVisibility(true);\r\n        setSignUpCheckboxVisibility(true);\r\n    }, []);\r\n\r\n    const checkIntegrationTypeExist = useCallback(\r\n        (integrationTypeCheck) => {\r\n            return deliveryMethods.find(\r\n                (method) => method.integrationType === integrationTypeCheck\r\n            );\r\n        },\r\n        [deliveryMethods]\r\n    );\r\n\r\n    const firstRender = useRef(true);\r\n\r\n    // Sets default value on first load.\r\n    useEffect(() => {\r\n        if (!firstRender.current) {\r\n            return;\r\n        }\r\n        firstRender.current = false;\r\n\r\n        if (!checkout) {\r\n            return;\r\n        }\r\n\r\n        const {\r\n            selectedPaymentMethod,\r\n            selectedDeliveryMethod,\r\n            customerDetails,\r\n            alternativeAddress,\r\n            shippingAddresses,\r\n        } = checkout.payload;\r\n\r\n        // set selected value for payment method on load.\r\n        selectedPaymentMethod && dispatch(setPayment(selectedPaymentMethod));\r\n        // set selected value for delivery method on load.\r\n        selectedDeliveryMethod && dispatch(setDelivery(selectedDeliveryMethod));\r\n        // fill default select value to the state\r\n        setAddressFormValue((previousState) => ({\r\n            ...previousState,\r\n            customerDetails: {\r\n                ...(customerDetails ?? {}),\r\n                country:\r\n                    customerDetails?.country ?? constants.countries[0].value,\r\n            },\r\n            alternativeAddress: {\r\n                ...(alternativeAddress ?? {}),\r\n                country:\r\n                    alternativeAddress?.country ?? constants.countries[0].value,\r\n            },\r\n        }));\r\n    }, [checkout, dispatch]);\r\n\r\n    // Show or hide different sections depending on payment and delivery methods.\r\n    useEffect(() => {\r\n        resetVisibilityValues();\r\n        switch (selectedPaymentMethod?.integrationType) {\r\n            case PaymentIntegrationType.IframeCheckout:\r\n                setCustomerDetailsVisibility(false);\r\n                setOrderSummaryVisibility(false);\r\n                break;\r\n            case PaymentIntegrationType.PaymentWidgets:\r\n                if (isEditingAddress) {\r\n                    setPaymentWidgetVisibility(false);\r\n                }\r\n                setOrderSummaryVisibility(false);\r\n                setSignUpCheckboxVisibility(false);\r\n                break;\r\n            case PaymentIntegrationType.DirectPayment:\r\n                if (isEditingAddress) {\r\n                    setOrderSummaryVisibility(false);\r\n                }\r\n                setPaymentWidgetVisibility(false);\r\n                break;\r\n        }\r\n        if (\r\n            checkIntegrationTypeExist(ShippingIntegrationType.DeliveryCheckout)\r\n        ) {\r\n            return setShippingOptionVisibility(false);\r\n        }\r\n        if (\r\n            checkIntegrationTypeExist(ShippingIntegrationType.PaymentCheckout)\r\n        ) {\r\n            return (\r\n                setShippingOptionVisibility(false) &&\r\n                setDeliveryWidgetVisibility(false)\r\n            );\r\n        }\r\n        if (\r\n            selectedDeliveryMethod?.integrationType ===\r\n            ShippingIntegrationType.Inline\r\n        ) {\r\n            setDeliveryWidgetVisibility(false);\r\n        }\r\n    }, [\r\n        selectedDeliveryMethod,\r\n        selectedPaymentMethod,\r\n        deliveryMethods,\r\n        paymentMethods,\r\n        resetVisibilityValues,\r\n        checkIntegrationTypeExist,\r\n        isEditingAddress,\r\n    ]);\r\n\r\n    // Update place order button's status when the state of Customer Information form is changed.\r\n    useEffect(() => {\r\n        dispatch(setStatusSubmitButton(false));\r\n        if (isEditingAddress) {\r\n            return;\r\n        }\r\n        validateCustomerInfo(\r\n            addressFormValue,\r\n            checkout.payload.isBusinessCustomer\r\n        )\r\n            .then(() => {\r\n                dispatch(setStatusSubmitButton(true));\r\n            })\r\n            .catch(() => {\r\n                dispatch(setStatusSubmitButton(false));\r\n            });\r\n    }, [\r\n        dispatch,\r\n        isEditingAddress,\r\n        addressFormValue,\r\n        checkout.payload.isBusinessCustomer,\r\n    ]);\r\n\r\n    // Scroll the the first field that has validation error when saving the form.\r\n    useEffect(() => {\r\n        if (checkout.result && checkout.result.redirectUrl) {\r\n            window.location = checkout.result.redirectUrl;\r\n            return;\r\n        }\r\n\r\n        if (!checkout.errors) {\r\n            return;\r\n        }\r\n\r\n        const errorKeys = Object.keys(checkout.errors);\r\n        if (!errorKeys || errorKeys.length < 1) {\r\n            return;\r\n        }\r\n\r\n        const errorNode = document.querySelector(\r\n            `[data-error-for=\"${errorKeys[0]}\"]`\r\n        );\r\n        if (!errorNode) {\r\n            return;\r\n        }\r\n\r\n        const inputNode = errorNode.parentElement.querySelector('input');\r\n        if (inputNode) {\r\n            setTimeout(() => inputNode.focus(), 1000);\r\n            inputNode.scrollIntoView({ behavior: 'smooth' });\r\n        } else {\r\n            errorNode.scrollIntoView({ behavior: 'smooth' });\r\n        }\r\n    }, [checkout.result, checkout.errors]);\r\n\r\n    if (!cart || !cart.orderRows || cart.orderRows.length < 1) {\r\n        return (\r\n            <div className=\"row\">\r\n                <div className=\"columns small-12\">\r\n                    <h2 className=\"checkout__title checkout__title--empty\">\r\n                        {translate(`checkout.cart.empty`)}\r\n                    </h2>\r\n                </div>\r\n            </div>\r\n        );\r\n    }\r\n\r\n    const { payload, errors = {} } = checkout,\r\n        {\r\n            paymentWidget,\r\n            authenticated,\r\n            isBusinessCustomer,\r\n            checkoutMode,\r\n            showDeliveryMethods,\r\n            isDropShippingEnabled,\r\n            // selectedCompanyAddressId,\r\n            companyAddresses,\r\n            companyName,\r\n        } = payload;\r\n    const responseString = paymentWidget ? paymentWidget.responseString : null;\r\n    const updateKey = paymentWidget ? paymentWidget._force_update : null;\r\n    const selectedAddress =\r\n        selectedCompanyAddressId && companyAddresses\r\n            ? companyAddresses.find(\r\n                (address) => address.systemId === selectedCompanyAddressId\r\n            )\r\n            : null;\r\n    const getCountry = (address) => {\r\n        const addressCountry = constants.countries\r\n            ? constants.countries.find(\r\n                (country) => country.value === address.country\r\n            )\r\n            : null;\r\n        return addressCountry ? addressCountry.text : address.country;\r\n    };\r\n\r\n    return (\r\n        <Fragment>\r\n            <CheckoutCart errors={errors} />\r\n            {<CheckoutDiscountCodes />}\r\n\r\n            {shippingOptionVisibility &&\r\n                isBusinessCustomer && ( ////upgrade8.7 showDeliveryMethods\r\n                    <Fragment>\r\n                        <div className=\"row\">\r\n                            <div className=\"columns checkout-column small-12\">\r\n                                <h3 className=\"checkout__section-title\">\r\n                                    {translate('checkout.delivery.title')}\r\n                                </h3>\r\n                            </div>\r\n                        </div>\r\n                        <CheckoutDeliveryMethods errors={errors} />\r\n                    </Fragment>\r\n                )}\r\n\r\n            {isBusinessCustomer && isDropShippingEnabled && (\r\n                <CheckoutBusinessCustomerShippingInfo />\r\n            )}\r\n\r\n            {customerDetailsVisibility && (\r\n                <CheckoutCustomerInfo\r\n                    checkout={checkout}\r\n                    addressFormValue={addressFormValue}\r\n                    isEditingAddress={isEditingAddress}\r\n                    setAddressFormValue={setAddressFormValue}\r\n                    setIsEditingAddress={setIsEditingAddress}\r\n                    signUpCheckboxVisibility={signUpCheckboxVisibility}\r\n                />\r\n            )}\r\n\r\n            {isBusinessCustomer && !isDropShippingEnabled && (\r\n                <section className=\"row checkout-info__container1111\">\r\n                    <div className=\"small-12 medium-6\">\r\n                        <BusinessCustomerShippingAddress />\r\n                    </div>\r\n                </section>\r\n            )}\r\n\r\n            {!isBusinessCustomer && (\r\n                <section className=\"row checkout-info__container1234\">\r\n                    <div className=\"small-12\">\r\n                        <IngridApp />\r\n                    </div>\r\n                </section>\r\n            )}\r\n\r\n            {isBusinessCustomer && paymentOptionVisibility && (\r\n                <CheckoutPaymentMethods errors={errors} />\r\n            )}\r\n\r\n            {paymentWidget && paymentWidgetVisibility && (\r\n                <PaymentWidget\r\n                    key={updateKey}\r\n                    responseString={responseString}\r\n                />\r\n            )}\r\n\r\n            {orderSummaryVisibility && (\r\n                <Fragment>\r\n                    <div className=\"row\">\r\n                        <div className=\"columns checkout-column small-12\">\r\n                            <h3 className=\"checkout__section-title\">\r\n                                {translate('checkout.order.title')}\r\n                            </h3>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <section className=\"row checkout-info__container checkout-info__summary\">\r\n                        <CheckoutOrderNote />\r\n                        <CheckoutOrderInfo />\r\n                    </section>\r\n\r\n                    <div className=\"row\">\r\n                        <div className=\"columns checkout-column small-12\">\r\n                            <input\r\n                                className=\"checkout-info__checkbox-input\"\r\n                                type=\"checkbox\"\r\n                                id=\"acceptTermsOfCondition\"\r\n                                checked={payload.acceptTermsOfCondition}\r\n                                onChange={(event) =>\r\n                                    dispatch(\r\n                                        acceptTermsOfCondition(\r\n                                            event.target.checked\r\n                                        )\r\n                                    )\r\n                                }\r\n                            />\r\n                            <label\r\n                                className=\"checkout-info__checkbox-label\"\r\n                                htmlFor=\"acceptTermsOfCondition\"\r\n                            >\r\n                                {translate(\r\n                                    'checkout.terms.acceptTermsOfCondition'\r\n                                )}{' '}\r\n                                <a\r\n                                    className=\"checkout__link\"\r\n                                    href={payload.termsUrl}\r\n                                    target=\"_blank\"\r\n                                    rel=\"noreferrer\"\r\n                                >\r\n                                    {translate('checkout.terms.link')}\r\n                                </a>\r\n                            </label>\r\n                            {errors['acceptTermsOfCondition'] && (\r\n                                <span\r\n                                    className=\"form__validator--error form__validator--top-narrow\"\r\n                                    data-error-for=\"acceptTermsOfCondition\"\r\n                                >\r\n                                    {errors['acceptTermsOfCondition'][0]}\r\n                                </span>\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div className=\"row checkout__submit\">\r\n                        <div className=\"columns checkout-column small-12\">\r\n                            {!authenticated &&\r\n                                (isBusinessCustomer ||\r\n                                    checkoutMode ===\r\n                                    constants.checkoutMode.companyCustomers) ? (\r\n                                <Button\r\n                                    className=\"button checkout__submit-button\"\r\n                                    onClick={() =>\r\n                                        (location.href = payload.loginUrl)\r\n                                    }\r\n                                    title={translate('checkout.login.to.placeorder')}\r\n                                >\r\n                                </Button>\r\n                            ) : (\r\n                                <Button\r\n                                    disabled={!checkout.enableConfirmButton}\r\n                                    className=\"button checkout__submit-button\"\r\n                                    onClick={placeOrder}\r\n                                    title={translate('checkout.placeorder')}\r\n                                    type=\"submit\"\r\n                                />\r\n\r\n                                ////upgrade8.7  <button\r\n                                //         type=\"submit\"\r\n                                //         className=\"button checkout__submit-button\"\r\n                                //         disabled={checkout.isSubmitting}\r\n                                //         onClick={placeOrder}\r\n                                //     >\r\n                                //         {translate('checkout.placeorder')}\r\n                                //     </button>\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                </Fragment>\r\n            )}\r\n\r\n            <div className=\"row\">\r\n                {errors && errors['general'] && (\r\n                    <p className=\"checkout__validator--error\">\r\n                        {errors['general'][0]}\r\n                    </p>\r\n                )}\r\n                {errors && errors['payment'] && (\r\n                    <p className=\"checkout__validator--error\">\r\n                        {errors['payment'][0]}\r\n                    </p>\r\n                )}\r\n            </div>\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default Checkout;\r\n"],"names":["postConversionEvent","async","event","eventName","cDetails","post","event_id","ecommerce","transaction_id","fb_event_id","event_name","event_source_url","window","location","href","custom_data","value","currency","content_name","document","title","content_ids","items","map","x","item_id","content_type","user_data","email","em","firstName","fn","lastName","ln","phoneNumber","ph","then","response","json","d","console","log","catch","error","message","rootRoute","addToCartEvent","articleNumber","quantity","addToDataLayer","Cookiebot","consent","marketing","removeFromCartEvent","beginCheckoutEvent","data","dataLayer","push","setBusinessCustomer","isBusinessCustomer","type","CHECKOUT_SET_PRIVATE_CUSTOMER","payload","updateCustomerDetails","key","CHECKOUT_UPDATE_CUSTOMER_INFO","setDelivery","method","dispatch","getState","CHECKOUT_SET_DELIVERY","selectedDeliveryMethod","checkout","put","result","loadCart","paymentWidget","setPaymentWidget","ex","catchError","submitError","setCountry","systemId","CHECKOUT_SET_COUNTRY","selectedCountry","deliveryMethods","CHECKOUT_SET_PAYMENT","paymentMethods","selectedPaymentMethod","setPayment","modelState","payment","reloadPayment","CHECKOUT_SET_PAYMENT_WIDGET","setDiscountCode","discountCode","CHECKOUT_SET_DISCOUNT_CODE","setUsedDiscountCodes","usedDiscountCodes","CHECKOUT_SET_USED_DISCOUNT_CODE","_submit","url","model","submitDone","setStatusSubmitButton","CHECKOUT_SUBMIT","CHECKOUT_SUBMIT_ERROR","CHECKOUT_SET_STATUS_SUBMIT_BUTTON","enableConfirmButton","setValidateStatus","isValidating","CHECKOUT_VALIDATE_ADDRESS","onClick","disabled","className","complimentary","length","translate","product","index","src","imageUrl","name","undefined","price","campaignPrice","formattedCampaignPrice","formattedPrice","mapCartToAbort","quantityDispatch","debounce","AbortController","update","reloadIngrid","loadError","useDispatch","removingRow","setRemovingRow","useState","showProductsInPackage","setShowProductsInPackage","cart","useSelector","state","orderRows","setOrderRows","discountRows","complimentaryProducts","useEffect","removeOrderRow","useCallback","errorQuantity","errorName","getElementById","innerText","handleQuantityInput","minimumQuantity","maximumQuantity","quantityStepping","rowSystemId","ensureCorrectness","test","cancel","floatQuantity","parseFloat","validValue","isNaN","parseInt","addQty","findIndex","item","abort","tempOrderRows","ProductImage","order","image","alt","ProductName","Fragment","bundleVariants","role","brand","ProductPrice","cartProductComplimentary","filter","complimentaryBaseArticleNumber","ProductQuantity","isFreeGift","id","min","maxLength","max","toString","step","onChange","target","maximumquantity","quantitystepping","onBlur","ProductTotalPrice","totalCampaignPrice","totalPrice","RemoveBtn","CartTotal","orderTotal","errors","__litium","preloadState","cssClass","autoComplete","placeholder","label","htmlFor","values","idx","getCountry","address","addressCountry","constants","countries","find","country","text","onSave","onCompanyAddressChange","valueForm","isEditingAddress","companyAddresses","companyName","authenticated","input","stateKey","toLowerCase","selectedAddress","useMemo","selectedCompanyAddressId","zipCode","city","join","formattedAddress","signUpCheckboxVisibility","signUp","customerDetails","alternativeAddress","checked","showAlternativeAddress","CHECKOUT_SET_SHOW_ALTERNATIVE_ADDRESS","CHECKOUT_SET_SIGN_UP","setSignUp","privateCustomerAdditionalDetailsSchema","object","shape","acceptTermsOfCondition","boolean","required","oneOf","privateCustomerAddressSchema","string","mixed","notOneOf","privateCustomerAlternativeAddressSchema","businessCustomerDetailsSchema","businessCustomerAdditionalDetailsSchema","businessCustomerAlternativeAddressSchema","validateAlternativeAddress","validateCustomerInfo","validate","addressPath","addressFormValue","setAddressFormValue","setIsEditingAddress","loginUrl","checkoutMode","onCustomerInfoChange","previousState","companyAddressId","onEditForm","onUpdateCustomerDetails","notCustomerDetailFields","CLEAR_ERROR","updatedData","channelTwoLetterIsoCode","CHECKOUT_SET_SELECTED_COMPANY_ADDRESS","setSelectedCompanyAddress","c","path","indexOf","finally","privateCustomerInfoComponent","businessCustomerInfoComponent","both","companyCustomers","search","discountCodeEl","useRef","current","ref","remove","deleteDiscountCode","discount","deliveryCost","paymentCost","grandTotal","vat","orderNote","CHECKOUT_SET_ORDER_NOTE","setOrderNote","scriptPattern","scriptFilePattern","extractScripts","domString","matches","html","scripts","scriptFiles","exec","replace","trim","executeScript","domId","scriptContent","script","createElement","appendChild","createTextNode","e","includeScript","srciptUrl","React","responseString","paymentSession","WidgetCheckout","DynamicComponent","loader","args","renderWidget","shippingAddresses","selectedShippingAddressId","onShippingAddressChange","addressId","CHECKOUT_SET_SELECTED_SHIPPING_ADDRESS","setSelectedShippingAddress","isDropShipSelected","setDropShipSelected","isStoreSelected","setStoreSelected","shipping","setShipping","shippingTypes","dropShipping","onShippingTypeChange","CHECKOUT_SET_SELECTED_SHIPPING_TYPE","setDropShipping","token","localStorage","getItem","serviceURL","replaceScriptNode","node","tagName","isScriptNode","isExternalScript","parentNode","replaceChild","innerHTML","i","attributes","setAttribute","cloneScriptNode","children","childNodes","localStorageSessionIDKey","IngridApp","widgetWrapperRef","shippingPrice","setShippingPrice","session","setSession","htmlSnippet","sethtmlSnippet","sessionResult","setSessionResult","isLoading","setIsLoading","firstRender","cartObj","ingridObj","ingrid","isReload","setReLoad","showInfo","handleUpdateSession","initDeliveryCheckout","existingSessionID","getSessionResponse","sessionID","axios","headers","warn","Error","status","toUpperCase","handleIngridInitialize","html_snippet","handleClearSession","handleCreateSession","HTMLSnippet","_sw","api","on","meta","price_changed","doorCode","courierInstructions","sessionResponse","setItem","isChange","suspend","updateSessionResponse","resume","deliveryCostUpdate","removeItem","style","textAlign","width","direction","align","size","cardStyle","headStyle","cardHeaderStyle","collapsed","theme","fontWeight","shippingOptionVisibility","setShippingOptionVisibility","paymentOptionVisibility","setPaymentOptionVisibility","customerDetailsVisibility","setCustomerDetailsVisibility","deliveryWidgetVisibility","setDeliveryWidgetVisibility","paymentWidgetVisibility","setPaymentWidgetVisibility","orderSummaryVisibility","setOrderSummaryVisibility","setSignUpCheckboxVisibility","onSubmit","onSubmitError","placeOrder","userSubscribe","onError","dropShipDetailsSchema","resetVisibilityValues","checkIntegrationTypeExist","integrationTypeCheck","integrationType","PaymentIntegrationType","IframeCheckout","PaymentWidgets","DirectPayment","ShippingIntegrationType","DeliveryCheckout","PaymentCheckout","Inline","redirectUrl","errorKeys","Object","keys","errorNode","querySelector","inputNode","parentElement","setTimeout","focus","scrollIntoView","behavior","showDeliveryMethods","isDropShippingEnabled","updateKey","_force_update","CHECKOUT_ACCEPT_TERMS_OF_CONDITION","termsUrl","rel"],"sourceRoot":""}