{"version":3,"file":"script/bundle-15.b6dc122e7c.js","mappings":"whBAAA,SAASA,IAAiS,OAApRA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAUJ,EAASa,MAAMC,KAAMR,UAAY,CAElV,QAAgBS,IAAAA,EACdC,OADc,IAEXC,EAAKC,EAAAH,EAAAI,GAAA,OACSC,EAAAA,cAAoB,MAAOpB,EAAS,CACrDqB,QAAS,YACTC,MAAO,8BACNL,GAAqBG,EAAAA,cAAoB,OAAQ,CAClDG,EAAG,+CACF,C,kbCVH,SAASvB,IAAiS,OAApRA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAUJ,EAASa,MAAMC,KAAMR,UAAY,CAElV,QAAgBS,IAAAA,EACdC,OADc,IAEXC,EAAKC,EAAAH,EAAAI,GAAA,OACSC,EAAAA,cAAoB,MAAOpB,EAAS,CACrDsB,MAAO,6BACPD,QAAS,aACRJ,GAAqBG,EAAAA,cAAoB,OAAQ,CAClDG,EAAG,wEACYH,EAAAA,cAAoB,OAAQ,CAC3CG,EAAG,0CACF,C,wKCOI,MAmDMC,EAAgDA,CACzDC,EACAC,KAEA,MAAMC,GAAsBC,EAAAA,EAAAA,IACxBF,GAGJ,OAAOD,IAA2BE,EAC5BA,EACA,IAAI,EAGDE,EACTC,GAEO,CAAC,KAAM,MAAMC,SAASD,GACvBA,EACA,I,kDC/EV,MAyFaE,EAAmBC,IAIH,IAHzB,CACIC,EAAAA,EAAmBC,eACnBD,EAAAA,EAAmBE,wBACrBC,QAAQJ,E,qmCC3FkC,IAE3CK,EAAI,SAAJA,GAAI,OAAJA,EAAI,0CAAJA,CAAI,EAAJA,GAAI,IAQT,MAAMC,EAAc,IAAIC,IACXC,GAAmBC,EAAAA,EAAAA,IAAU,CACtCC,YAAa,mBACbC,UAAWC,EAAAA,EACXC,SAAU7C,OAAO8C,KAAKT,GACtBU,UAAYC,IAAO,CACfC,iBAAkBD,EAAQE,MAGxB,CACEA,MAAQC,IACJb,EAAYc,IAAID,GAEhB,MAAQ,GADQE,EAAAA,GAAW,GAAK,6CACiBC,IAAAA,UAAYC,EAAAA,EAAC,CAAC,EACxDJ,GAAM,IACTK,OAAQ,mBACR,EAERC,aAAc,CAACpB,EAAKqB,uBAGxBC,oBAAqBX,EAAQY,SAG3B,CACEV,MAAQC,IAEG,CACHU,IAAM,GAFMR,EAAAA,GAAW,GAAK,6CAG5BS,OAAQ,SACRC,KAAMZ,IAGda,qBAAqBb,EAAMrC,GAAgC,IAA5BmD,EAAQnD,EAARmD,SAAUC,EAAcpD,EAAdoD,eACrC,IAAK,MAAMC,KAAY7B,EAAa,CAChC,MAAM8B,EAAcH,EAChBzB,EAAiB6B,KAAKC,gBAClB,mBACAH,GACCI,IAAU,IAAAC,EAEPD,EAAME,cACiB,QADJD,EACfD,EAAME,qBAAa,IAAAD,OAAA,EAAnBA,EAAqBE,QAChBC,IAAI,IAAAC,EAAA,QACAzB,SAAW,QAALyB,EAANzB,EAAQ0B,WAAG,IAAAD,GAAXA,EAAa9C,SAAS6C,EAAKG,IAAG,GACtC,KAIjB,UACUZ,CACV,CAAE,MACEE,EAAYW,MAChB,CACJ,CACJ,EACAC,gBAAiB,CAAC3C,EAAKqB,uBAG3BuB,wBAAyBjC,EAAQY,SAG/B,CACEV,MAAQC,IAEG,CACHU,IAAM,GAFMR,EAAAA,GAAW,GAAK,sDAG5BS,OAAQ,OACRC,KAAIR,EAAA,GAAOJ,KAGnBa,qBAAqBb,EAAM+B,GAAgC,IAA5BjB,EAAQiB,EAARjB,SAAUC,EAAcgB,EAAdhB,eACrC,IAAK,MAAMC,KAAY7B,EAAa,CAChC,MAAM8B,EAAcH,EAChBzB,EAAiB6B,KAAKC,gBAClB,mBACAH,GACCI,IAAU,IAAAY,EACY,QAAnBA,EAAAZ,EAAME,qBAAa,IAAAU,GAAnBA,EAAqBC,SAAST,IAAS,IAAAU,EAC/BV,EAAKG,MAA4B,QAA1BO,EAAKlC,EAAOmC,sBAAc,IAAAD,OAAA,EAArBA,EAAuBP,KACnC9E,OAAOC,OAAO0E,EAAM,CAChBY,6BACIpC,EAAOmC,eAAeE,UAElC,GACF,KAId,UACUtB,CACV,CAAE,MACEE,EAAYW,MAChB,CACJ,CACJ,QASRvC,EAHAiD,yBAGAjD,EAFAkD,+BAEAlD,EADAmD,kC,2ECvHG,MAAMC,EAAiBA,KAC1B,MAAQC,GAAmBC,EAAAA,EAAAA,MAAnBD,eACR,OACIE,EAAAA,EAAAA,KAACC,EAAAA,EAAK,CAAC,aAAW,OAAOC,KAAMJ,EAAe,KAAKK,UAC/CH,EAAAA,EAAAA,KAACI,EAAAA,EAAW,KACR,C,uFCLT,MAAMC,EAAatF,IAA+C,IAA5CuF,EAAYvF,EAAZuF,aAAcC,EAAaxF,EAAbwF,cAAeC,EAAQzF,EAARyF,SACtD,MAAQC,GAAMC,EAAAA,EAAAA,MAAND,EACFE,EAAoBpD,IAAAA,MAASqD,OAAOC,SAASC,OAAQ,CACvDC,mBAAmB,IACpBC,YACGC,EAAuBN,EACtB,gBAAeA,IAChB,GAEN,OACIO,EAAAA,EAAAA,MAAA,OAAKC,UAAW,mBAAmBhB,SAAA,EAC7BK,IACEU,EAAAA,EAAAA,MAAAE,EAAAA,SAAA,CAAAjB,SAAA,EACIH,EAAAA,EAAAA,KAAA,OAAKmB,UAAW,OAAOhB,UACnBH,EAAAA,EAAAA,KAAA,KACImB,UAAU,OACVjB,KAAO,GAAEI,IAAeW,IAAuBd,SAEzCM,EADLF,EACO,4BACA,kCAGhBP,EAAAA,EAAAA,KAAA,OAAKmB,UAAW,OAAOhB,UACnBH,EAAAA,EAAAA,KAACqB,EAAAA,GAAK,CACFC,QAAQ,oCAERC,WAAY,CAAEC,GAAGxB,EAAAA,EAAAA,KAAA,KAAGmB,UAAU,kBAK9CnB,EAAAA,EAAAA,KAACH,EAAAA,EAAc,MACb,C,8ECrCP,MAAM4B,EAIK,e,kGCHlB,QAA4E,yBAA5E,EAA4K,6B,iBCA5K,QAAiJ,iD,oCCO1I,MAAMC,EAA+BA,KACxC,MAAQjB,GAAMC,EAAAA,EAAAA,MAAND,EACFvC,GAAWyD,EAAAA,EAAAA,KACXC,GAAgCC,EAAAA,EAAAA,GAClCC,EAAAA,GAmBJ,OAjBmBD,EAAAA,EAAAA,GAAeE,EAAAA,KAkB9Bb,EAAAA,EAAAA,MAAA,OAAKC,UAAU,MAAKhB,SAAA,EAChBe,EAAAA,EAAAA,MAAA,SACIC,UAAY,kGAAiGhB,SAAA,CAC5GM,EAAE,4CACHT,EAAAA,EAAAA,KAAA,SACIgC,KAAK,WACLb,UAAY,qBAAoBnG,IAChCiH,QAASL,EACTM,SAxB+BjE,UAG3C,MAAMgE,EAAUE,EAAE/H,OAAO6H,cACnBG,EAAAA,GAAeC,KACjB,0DACA,CAAEC,gCAAiCL,IAGvC/D,GACIqE,EAAAA,EAAAA,IAAiC,CAC7BX,8BAA+BK,IAEtC,QAcGjC,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,sCAAqChB,SAC/CM,EAAE,6CAGX,IAAI,E,YCzBL,MAAM+B,EAAiBzH,IAGE,IAF5B0H,EAAa1H,EAAb0H,cACAC,EAAK3H,EAAL2H,MAEA,MAAQjC,GAAMC,EAAAA,EAAAA,MAAND,EACAX,GAAmBC,EAAAA,EAAAA,MAAnBD,eACR6C,GAAiDC,EAAAA,EAAAA,KAAzCC,EAAiBF,EAAjBE,kBAAmBC,EAAiBH,EAAjBG,kBACrB5E,GAAWyD,EAAAA,EAAAA,KACXoB,GAAqBlB,EAAAA,EAAAA,GAAemB,EAAAA,IACpCC,GAAoBpB,EAAAA,EAAAA,GAAeqB,EAAAA,IAQzC,OACIhC,EAAAA,EAAAA,MAAA,OAAKC,UAAWnG,EAAsBmF,SAAA,CACjCuC,IACG1C,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,YAAWhB,UACtBH,EAAAA,EAAAA,KAAA,UAAAG,SAASuC,MAGhBK,aAAkB,EAAlBA,EAAoBI,KAAIhE,IAAA,IAAGiE,EAAgBjE,EAAhBiE,iBAAkBC,EAAWlE,EAAXkE,YAAW,OACrDnC,EAAAA,EAAAA,MAACoC,EAAAA,EAAM,CACHC,OAAK,EACLC,MAAM,WACNrC,UAAY,GACRnG,yCAEAyH,EAAgB,OAAS,KAG7BgB,QAASA,KAvBEC,QAwBWN,GAAoB,IAvBlDH,aAAiB,EAAjBA,EAAmBG,oBAAqBM,GAG5CxF,GAASyF,EAAAA,EAAAA,GAAqBD,EAAM5D,GAoBqB,EAE7C,uBAAsBsD,EAAiBjD,SAAA,EACvCe,EAAAA,EAAAA,MAAA,QACIC,UAAY,8BACRsB,EAAgB,OAAS,IAC1BtC,SAAA,EACHH,EAAAA,EAAAA,KAAC4D,EAAAA,EAAI,CACDC,iBAAiBC,EAAAA,EAAAA,IACbV,GAEJjC,UAAU,UAEb8B,aAAiB,EAAjBA,EAAmBG,oBACpBA,GACIpD,EAAAA,EAAAA,KAAA,UAAAG,SAASkD,KAETrD,EAAAA,EAAAA,KAAA,QAAAG,SAAOkD,QAGdJ,aAAiB,EAAjBA,EAAmBG,oBAChBA,IACApD,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CAAC5C,UAAU,mBAxBpBiC,EA0BA,KAEbpD,EAAAA,EAAAA,KAAC0B,EAA4B,IAC5BmB,IACG3B,EAAAA,EAAAA,MAAA,OAAKC,UAAU,iCAAgChB,SAAA,CAC1CM,EAAE,sCAAsC,KACzCT,EAAAA,EAAAA,KAACsD,EAAAA,EAAM,CACHE,MAAM,OACNC,QAASA,IAAMX,EAAkBkB,EAAAA,EAAQC,UAAU9D,SAClDM,EAAE,2CAIb,E,8CC7Fd,QAA6F,+B,qsDCwBtF,MAAMyD,EAAgCnJ,IASH,IAAAoJ,EAAA,IARtCC,EAAiBrJ,EAAjBqJ,kBACAC,EAA+BtJ,EAA/BsJ,gCACAC,EAAQvJ,EAARuJ,SACAnD,EAASpG,EAAToG,UAASoD,EAAAxJ,EACTyJ,uBAAAA,OAAsB,IAAAD,EAAG,EAACA,EAC1BE,EAA0B1J,EAA1B0J,2BACAC,EAAQ3J,EAAR2J,SAAQC,EAAA5J,EACR6J,MAAAA,OAAK,IAAAD,EAAG,CAAC,EAACA,EAEV,MAAQlE,GAAMC,EAAAA,EAAAA,MAAND,EACgCoE,EAAAC,GAAZC,EAAAA,EAAAA,UAAS,IAAG,GAAjCjE,EAAM+D,EAAA,GAAEG,EAASH,EAAA,GACqCI,EAAAH,GAAfC,EAAAA,EAAAA,WAAS,GAAM,GAAtDG,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GACpCG,EAAkBC,GACpBA,EAAEC,cAAcvJ,SAAS+E,EAAOwE,eAC9BC,EAA4BnB,EAAkBzF,QAChDQ,IAAA,IAAGqG,EAAIrG,EAAJqG,KAAM3B,EAAe1E,EAAf0E,gBAAe,OACpBuB,EAAeI,IAASJ,EAAevB,EAAgB,IAEzD4B,EAGL,QAHgCtB,EAAGC,EAAkBsB,MACjDC,GACGA,EAAE9B,kBAAoBQ,EAAgCiB,uBAC7D,IAAAnB,OAAA,EAHmCA,EAGjCqB,KAGGI,EACmC,IAArCL,EAA0BhL,OACpB,EACAgL,EAA0BhL,OAS9BsL,E,+VAA8BrI,CAAA,CAChCsI,OAAS,GAdS,EAWkB,GANEC,KAAKC,IAC3CJ,EACApB,IAKCoB,GAAcpB,EAAyB,EAAI,QAG5CyB,MAAO,OACPC,OAAQ,EACRC,UAAW,QACRvB,GAGP,OACI1D,EAAAA,EAAAA,MAAA,OAAKC,UAAWA,EAAUhB,SAAA,CACpB+E,GAeElF,EAAAA,EAAAA,KAACoG,EAAAA,EAAW,CACRC,WAAS,EACTlF,UAAU,QACVqE,KAAK,kBACLc,YACI7B,GACAhE,EAAE,yCAEN,aACIgE,GACAhE,EAAE,yCAEN8F,MAAOzF,EACP0F,aAAa,MACbtE,SAAWC,GAAM6C,EAAU7C,EAAE/H,OAAOmM,OACpCE,OAAQA,KACJC,YAAW,KACPvB,GAAmB,EAAM,GAC1B,IAAI,EAEXwB,QAASA,IAAMxB,GAAmB,MAlCtCnF,EAAAA,EAAAA,KAAC4G,EAAAA,EAAc,CACXrD,OAAK,EACLE,QAASA,KACL0B,GAAmB,EAAK,EAE5B0B,MACI7G,EAAAA,EAAAA,KAAC4D,EAAAA,EAAI,CACDzC,UAAWnG,EACX6I,gBAAiBQ,IAExBlE,SACAsF,IA0BRP,IACGlF,EAAAA,EAAAA,KAAA,OAAKmB,WAAW2F,EAAAA,EAAAA,GAAWpC,GAAY,qBAAqBvE,UACxDH,EAAAA,EAAAA,KAAA,OACImB,UAAU,yCACV4F,YAAc5E,GAAMA,EAAE6E,iBACtBpC,MAAOiB,EAAU1F,UACjBH,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,mBAAkBhB,SAC5BoF,EAA0BhL,OAAS,GAChCyF,EAAAA,EAAAA,KAAAoB,EAAAA,SAAA,CAAAjB,SACKoF,EAA0BpC,KACtB8D,IACG/F,EAAAA,EAAAA,MAAA,OAIIC,UAAU,qGACVsC,QAASA,KACL0B,GAAmB,GACnBb,EACI2C,EAAgBpD,gBACnB,EACH1D,SAAA,EACFH,EAAAA,EAAAA,KAAC4D,EAAAA,EAAI,CACDzC,WAAW2F,EAAAA,EAAAA,GACP9L,EACA,QAEJ6I,gBACIoD,EAAgBpD,kBAGvBoD,EAAgBzB,OAlBbyB,EAAgBpD,sBAwBpC7D,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,gDAA+ChB,SACzDM,EAAE,iDAOzB,E,oBC1IP,MAAMyG,EAAwBA,KACjC,MAAQzG,GAAMC,EAAAA,EAAAA,MAAND,EACFvC,GAAWyD,EAAAA,EAAAA,KACXsF,GAAkBpF,EAAAA,EAAAA,GAAesF,EAAAA,IACjCC,GAAuBvF,EAAAA,EAAAA,GACzBwF,EAAAA,IAEEC,GAAsCzF,EAAAA,EAAAA,GACxC0F,EAAAA,IAEEC,GACF3F,EAAAA,EAAAA,GAAe4F,EAAAA,MACdH,EAEClD,GAAoBsD,EAAAA,EAAAA,UACtB,IACIN,EAAqBjE,KAAKU,IAAe,CACrCA,kBACA2B,KAAM/E,GAAEkH,EAAAA,EAAAA,IAA2B9D,SAE3C,CAACpD,EAAG2G,IAMR,OAJAQ,EAAAA,EAAAA,YAAU,KACN1J,GAAS2J,EAAAA,EAAAA,MAAgC,GAC1C,CAAC3J,KAGAgD,EAAAA,EAAAA,MAAA,OAAKC,UAAU,MAAKhB,SAAA,EAChBH,EAAAA,EAAAA,KAAA,QAAMmB,UAAU,iCAAgChB,UAC5CH,EAAAA,EAAAA,KAAA,UAAAG,SAASM,EAAE,kCAEd6G,IACGtH,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,sCAAqChB,UAChDH,EAAAA,EAAAA,KAAC8H,EAAAA,EAAI,CAAC3G,UAAU,+BAGvBqG,IACGxH,EAAAA,EAAAA,KAACkE,EAA6B,CAC1BQ,UAAQ,EACRN,kBAAmBA,EACnBC,gCACI4C,EAAgBpD,gBAEpBS,SAAWT,IACP3F,GAAS6J,EAAAA,EAAAA,IAAqBlE,GAAiB,MAIzD,ECzDDmE,EAAmBjN,IAEH,IADzBkN,EAAmBlN,EAAnBkN,oBAEA,MAAQxH,GAAMC,EAAAA,EAAAA,MAAND,EACR,OACIS,EAAAA,EAAAA,MAAA,OAAKC,UAAU,OAAMhB,SAAA,CAChB8H,IACG/G,EAAAA,EAAAA,MAAAE,EAAAA,SAAA,CAAAjB,SAAA,EACIH,EAAAA,EAAAA,KAACkH,EAAqB,KACtBlH,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,sBAGvBnB,EAAAA,EAAAA,KAACwC,EAAc,CAACE,MAAOjC,EAAE,0BACzBT,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,oBACb,E,aCrBd,QAAuB,cC2BV+G,EAAmBnN,IAOH,IANzB0I,EAAO1I,EAAP0I,QACA0E,EAASpN,EAAToN,UACAC,EAAQrN,EAARqN,SACAC,EAAmBtN,EAAnBsN,oBACAC,EAAQvN,EAARuN,SAAQC,EAAAxN,EACRyN,6BAAAA,OAA4B,IAAAD,GAAQA,EAEpC,MAAQ9H,GAAMC,EAAAA,EAAAA,MAAND,EAEFgI,GAAwB5G,EAAAA,EAAAA,GAAe6G,EAAAA,IACvCC,GAA8B9G,EAAAA,EAAAA,GAChC+G,EAAAA,IAEEX,GACDI,GAAuBM,EACtBE,GAA+BhH,EAAAA,EAAAA,GACjCiH,EAAAA,IAGE9H,GAAc8C,EAAAA,EAAAA,IAChB2E,GAGJ,OACIzI,EAAAA,EAAAA,KAAA,OACImB,WAAW2F,EAAAA,EAAAA,GACP,uEACA+B,GAAgC,uBAClC1I,UACFe,EAAAA,EAAAA,MAAA,OACI6H,aAAcA,IAAMZ,EAAU1G,GAC9BuH,aAAcZ,EAASjI,SAAA,EACvBH,EAAAA,EAAAA,KAAA,UACImB,WAAW2F,EAAAA,EAAAA,GACP,uFACAwB,GAAY,UAEhB7E,QAAUtB,IACN8G,EAAAA,EAAWC,YACP,iBACA,oBACA,cAEJzF,EAAQtB,EAAGV,EAAyB,EACtCtB,SACDqI,GACGtH,EAAAA,EAAAA,MAAA,QACI,cAAY,oBACZC,UAAU,qCAAoChB,SAAA,EAC9CH,EAAAA,EAAAA,KAACmJ,EAAAA,EAAa,CAAChI,UAAU,qBACxBV,EAAE,4CAGPT,EAAAA,EAAAA,KAAA,QACI,cAAY,oBACZmB,UAAU,yBAAwBhB,UAClCH,EAAAA,EAAAA,KAAC4D,EAAAA,EAAI,CACDzC,WAAW2F,EAAAA,EAAAA,GAAW9L,GACtB6I,gBAAiB7C,SAKjChB,EAAAA,EAAAA,KAACoJ,EAAAA,EAAS,CACNd,SAAUA,EACVnH,UAAWkI,EAAAA,EAAgBC,WAAWnJ,UACtCH,EAAAA,EAAAA,KAACgI,EAAgB,CACbC,oBAAqBA,IAAuB,UAItD,E,ojCC5FP,MAAMsB,EAAoB,KAuCjC,EArCmBxO,IAAkC,IAA/ByO,EAAgBzO,EAAhByO,iBAAkBC,EAAM1O,EAAN0O,OACpC,MAAQhJ,GAAMC,EAAAA,EAAAA,MAAND,EACFiJ,GAAWC,EAAAA,EAAAA,KAC8B9E,EAAAC,GAAfC,EAAAA,EAAAA,WAAS,GAAM,GAAxCuD,EAAQzD,EAAA,GAAE+E,EAAW/E,EAAA,GAEtBgF,GAAqBC,EAAAA,EAAAA,KACtBC,GAAUA,EAAMC,YAAYH,qBAGjC,OACI3I,EAAAA,EAAAA,MAAA,OAAKC,UAAU,8CAA6ChB,SAAA,EACxDH,EAAAA,EAAAA,KAAA,OAAAG,WACOsJ,IACCzJ,EAAAA,EAAAA,KAACsD,EAAAA,EAAM,CAACE,MAAM,OAAOC,QAASgG,EAAQ5C,MAAM7G,EAAAA,EAAAA,KAACiK,EAAAA,EAAQ,IAAI9J,UACnDuJ,GAAYjJ,EAAE,kCAI5BT,EAAAA,EAAAA,KAAA,OAAAG,SACKqJ,IAAqBK,IAClB7J,EAAAA,EAAAA,KAAA,QAAMmB,UAAW,oBAAoBhB,UACjCH,EAAAA,EAAAA,KAACkI,EAAgB,CACbC,UAAWA,IAAMyB,GAAY,GAC7BxB,SAAUA,IAAMwB,GAAY,GAC5BnG,QAASA,IAAMmG,GAAatB,GAC5B7B,OAAQA,IAAMmD,GAAY,GAC1BtB,SAAUA,EACV4B,mBAAmB,EACnB1B,8BAA8B,EAC9BH,qBAAqB,UAKnC,C,0DC3Cd,QAAyE,wB,oCCMlE,MAaM8B,EAAsBhL,IAAA,IAC/BgC,EAAShC,EAATgC,UAASiJ,EAAAjL,EACTkL,MAAAA,OAAK,IAAAD,GAAQA,EAAA,OAEbpK,EAAAA,EAAAA,KAAA,MACImB,WAAW2F,EAAAA,EAAAA,GACP9L,EAAAA,EAAOsP,oBACPD,GAASrP,EAAAA,EAAOuP,yBAChBpJ,IAEN,ECtBOqJ,EAAgBzP,IAKvB,IAJF0P,EAAkB1P,EAAlB0P,mBACAC,EAAuB3P,EAAvB2P,wBACAC,EAAiB5P,EAAjB4P,kBACAxJ,EAASpG,EAAToG,UAEA,MAAQV,GAAMC,EAAAA,EAAAA,MAAND,EAEFmK,EAAoBH,EAAmB9L,QACzCQ,GAAOA,EAAJuE,OAAoBgH,IAU3B,OACIxJ,EAAAA,EAAAA,MAAAE,EAAAA,SAAA,CAAAjB,SAAA,EACIH,EAAAA,EAAAA,KAACmK,EAAmB,CAAChJ,UAAU,mBAC/BD,EAAAA,EAAAA,MAAA,OAAKC,WAAW2F,EAAAA,EAAAA,GAAW,4BAA6B3F,GAAWhB,SAAA,EAC/DH,EAAAA,EAAAA,KAAC4D,EAAAA,EAAI,CACDC,gBAAiB6G,EACjBvJ,UAAU,uBAEdD,EAAAA,EAAAA,MAAA,UACIC,WAAW2F,EAAAA,EAAAA,GACP,gEACA9L,GAEJkH,SAAWC,IArBT0I,MACe,KADfA,EAqBwB1I,EAAE/H,OAAOmM,OApB7BhM,QAIlBoQ,EAAkBE,EAgBoC,EAAA1K,SAAA,EAC1CH,EAAAA,EAAAA,KAAA,UAAQuG,MAAM,GAAEpG,SACXuK,EACKjK,GACIkH,EAAAA,EAAAA,IACI+C,IAGR,OAPW,kBASpBE,EAAkBzH,KAAI,CAACvE,EAAMkM,KAC1B9K,EAAAA,EAAAA,KAAA,UAAQuG,MAAO3H,EAAK8E,KAAKvD,SACpBvB,EAAK4G,MADsB,GAAE5G,EAAK8E,QAAQoH,eAM5D,C,sCCzDJ,MAAMC,EAAwB9M,UAEjC,IAAI+M,EAAa,EAEjB,OAAO,IAAIC,SAASC,IAAY,IAAAC,EACjB,QAAPA,EAACvK,cAAM,IAAAuK,GAANA,EAAQC,IACTF,IAGJ,MAAMG,EAAuBA,MACrBzK,OAAOwK,GAAGE,YAAcN,EATjB,IAUPE,EAAQtK,OAAOwK,GAAGG,WAGtBP,IACAtE,WAAW2E,EAAsB,IAAML,EAAW,EAEtDK,GAAsB,GACxB,C,sCCjBN,QAA8E,0BAA9E,EAAuL,gCAAvL,EAAqR,0B,oCCI9Q,MAAMG,EAAiBzQ,IAAkB,IAAfoF,EAAQpF,EAARoF,SAC7B,OACIe,EAAAA,EAAAA,MAAA,OAAKC,UAAY,GAAEnG,IAAwBmF,SAAA,EACvCH,EAAAA,EAAAA,KAACyL,IAAU,CAACC,SAAUC,EAAAA,EAAiBC,EAAAA,EAAYC,IAAI7F,IAAI7F,UACvDH,EAAAA,EAAAA,KAAA,OAAKmB,UAAWnG,EAA2BmF,UACvCH,EAAAA,EAAAA,KAAA,OACI8L,IAAI,6CACJC,IAAI,UAIhB/L,EAAAA,EAAAA,KAAA,OACImB,UAAY,YAAWnG,8BAAkDmF,SACxEA,MAEH,C,gBChBd,G,yCAAI7C,GAEA,MAAM,IAAI0O,MACN,+GAIR,IAAIC,GAAmB,EAEhB,SAASC,IACZD,IADuC3R,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,KAAAA,UAAA,EAE3C,CAEO,SAAS8R,IACZ,QAASH,CACb,CAEO,SAASI,EAAyBC,EAAUC,GAC/C,MAAMC,EAAO,CACTC,MAAO,uBACPH,WACAC,cACAG,0BAA2BT,GAE/BrL,OAAO+L,UAAUC,KAAKJ,EAC1B,C,gBCxBA,G,sBAAIlP,GAEA,MAAM,IAAI0O,MACN,+GAIR,MA+BA,EA/BsB,WAClB,MAAMa,EAAS,CAAC,EAwBhB,MAAO,CACH3O,SAvBc,SAAUuO,EAAOK,GAC/B,MAAMC,EAAYF,EAAOJ,GAEzB,YAAyB,IAAdM,IAIXA,EAAU1N,SAAQ,SAAU2N,GACxBA,EAASF,EACb,KAEO,EACX,EAYIG,UAVe,SAAUR,EAAOO,QACH,IAAlBH,EAAOJ,KACdI,EAAOJ,GAAS,IAGpBI,EAAOJ,GAAOG,KAAKI,EACvB,EAMJ,CA7BsB,E,6CCPtB,MAAME,EAAe,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE7CC,EAAyC1M,GAC3C,IACAyM,EAAa/J,KAAKO,IAAI,CACrBA,OACA8B,KAAM/E,GAAEkH,EAAAA,EAAAA,IAA2BjE,QAEvC,CAAEA,KAAM,KAAM8B,KAAM,SACjB4H,EAAAA,EAAAA,IAAsB3M,G,iCCZjC,MAwCA,EAxCyB,CACrB4M,gBAAiB,SAAUP,GACvBlM,OAAO+L,UAAY/L,OAAO+L,WAAa,GACvC/L,OAAO+L,UAAUC,KAAKE,EAC1B,EAEAQ,WAAY,SAAUC,GAClB,MAAMT,EAAU,CACZL,MAAO,aACPe,cAAeD,EAAcE,UAAY,GACzCC,YAAaH,EAAcI,QAAU,GACrCC,WAAYL,EAAcM,OAAS,GACnCC,WAAYP,EAAchH,OAAS,IACnCwH,oBAAqBjT,KAAKkT,kBAAkBT,GAC5CU,YAAaV,EAAcU,aAG3BV,EAAcjB,SAAW,IACzBQ,EAAkB,SAAIS,EAAcjB,SAAS4B,YAGjDpT,KAAKuS,gBAAgBP,EACzB,EAEAqB,cAAe,WACX,MAAMrB,EAAU,CACZL,MAAO,gBACP2B,cAAexN,OAAOC,SAASwN,SAAWzN,OAAOC,SAASyN,MAE9DxT,KAAKuS,gBAAgBP,EACzB,EAEAkB,kBAAmB,SAAUT,GACzB,YAAoCpB,IAAhCoB,EAAcgB,gBAGVhB,EAAcgB,aAC1B,E,sJCpBIC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EAyBAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,C,yMC/CR,MACaC,EAAuB,eA2BvBlG,EAAcA,CAACyE,EAAQE,KAChC5E,EAAAA,EAAWC,YA7BkB,SA6BoByE,EAAQE,EAAM,C,oBCpC9DwB,EAAsB,SAAtBA,GAAsB,OAAtBA,EAAsB,oCAAtBA,EAAsB,+CAAtBA,EAAsB,6BAAtBA,EAAsB,2CAAtBA,EAAsB,wCAAtBA,EAAsB,4BAAtBA,EAAsB,oCAAtBA,EAAsB,0CAAtBA,EAAsB,4DAAtBA,EAAsB,0CAAtBA,EAAsB,iDAAtBA,EAAsB,8BAAtBA,EAAsB,+BAAtBA,EAAsB,gCAAtBA,EAAsB,+CAAtBA,EAAsB,uDAAtBA,EAAsB,yDAAtBA,EAAsB,0DAAtBA,EAAsB,oCAAtBA,EAAsB,2CAAtBA,EAAsB,kCAAtBA,EAAsB,kBAAtBA,CAAsB,EAAtBA,GAAsB,IA0BvBA,EAAuBC,eACvBD,EAAuBE,6BAIvBF,EAAuBG,cACvBH,EAAuBI,oBACvBJ,EAAuBK,sBACvBL,EAAuBM,O,sMCzB3B,MAAMC,GAAQC,EAAAA,EAAAA,aAAY,CACtBrK,KAAM,gBACNsK,aAAc,CAAEC,qBAAqB,GACrCC,SAAU,CACNC,wBAAyB,CACrBC,QAASA,CACLnG,EACA4D,KAEA,MAAQb,EAAYa,EAAZb,QACR/C,EAAMgG,oBAAsBjD,EAAQiD,mBAAmB,EAE3DI,QAASA,IAGG,SADJC,EAAAA,QAAWC,WAAWC,EAAAA,MAC+B,IAAvCC,EAAAA,EAAaC,sBAEV,CAAE1D,QAAS,CAAEiD,qBAAqB,IAChD,CAAEjD,QAAS,CAAEiD,qBAAqB,KAGjDU,kBAAmB,CACfP,QAAUnG,IACNA,EAAMgG,qBAAsB,CAAI,EAEpCI,QAASA,KACLC,EAAAA,QAAWM,aACPJ,EAAAA,IACA,EACAK,KAEJP,EAAAA,QAAWQ,YAAYC,EAAAA,IAChB,CAAE/D,QAAS,CAAC,QAM5BgE,EAAuDlB,EAAMmB,QAEvDC,GAFyBF,EAAvBb,wBAA0Ca,EAAjBL,kBAEXb,EAAMM,Q,+DCO9Be,EAAAA,GAAYC,KACZD,EAAAA,GAAYE,KACZF,EAAAA,GAAYG,YACZH,EAAAA,GAAYI,WAIZJ,EAAAA,GAAYC,KACZD,EAAAA,GAAYE,KACZF,EAAAA,GAAYG,YACZH,EAAAA,GAAYI,WA3DjB,MAkFaC,EAASA,CAClBxF,EACAxF,EACAiL,IACCzF,EAAI0F,QAAQlL,EAAc,GAAEiL,GAtFe,a,ypCCehD,MAAME,GAA2BC,EAAAA,EAAAA,IAAe,CAC5CC,eAAiBC,IACbA,EAAQC,IAAI,SAAU,oBACtBD,EAAQC,IAAI,eAAgB,oBACrBD,GAEXE,QAAS,+CAGAC,EAIT9T,MAAO+T,EAAMC,EAAKC,KAClB,MAAMC,EAAwBH,aAAI,EAAJA,EAAMG,sBACpC,IAAKA,EACD,MAAO,CACHC,MAAO,CACHC,OAAQ,IACRC,WAAY,cACZ9F,KAAM,qCAKlB,MAAMsF,EAAW,WAAUK,EAAsBI,UAAUJ,EAAsBK,+BACjF,OAAOC,EAAkBX,EAAlBW,CAA2BT,EAAMC,EAAKC,EAAa,EAGxDO,EAAqBX,IACvBJ,EAAAA,EAAAA,IAAe,CACXC,eAAgBA,CAACC,EAAO7W,KACpB,MAAM2X,GAASC,EADiB5X,EAAR4X,YACgBC,KAAKC,gBAM7C,OALIH,GACAd,EAAQC,IAAI,gBAAkB,UAASa,EAAMI,WAEjDlB,EAAQC,IAAI,SAAU,oBACtBD,EAAQC,IAAI,eAAgB,oBACrBD,CAAO,EAElBE,YAiCKiB,GAAcrW,EAAAA,EAAAA,IAAU,CACjCC,YAAa,cACbC,UAAWqB,MAAO+T,EAAMC,EAAKC,KACzB,MAAMc,EAAkBf,EAAIU,WAAyBC,KAChDC,gBAGJI,SAFmDhB,EAAI/T,SACpDgV,EAAAA,GAAUlW,UAAUmW,0BAA0BC,cAASjH,KADnDK,KAAM6G,OAAsB,IAAAJ,EAAG,CAAC,EAACA,EAGnCd,EACFkB,aAAsB,EAAtBA,EAAwBlB,sBAC5B,IAAKA,EACD,MAAO,CACHC,MAAO,CACHC,OAAQ,IACRC,WAAY,cACZ9F,KAAM,qCAIlB,MAAM8G,EAA6B9V,EAAAA,EAAA,GAC5BwU,GAAI,IACPG,0BAGJ,IAAIoB,EACJ,GAAIP,SAAAA,EAAgBF,SAMhB,GALAS,QAAexB,EACXuB,EACArB,EACAC,GAEAqB,EAAOnB,OAAiC,MAAxBmB,EAAOnB,MAAMC,OAAgB,CAC7C,MAAMmB,QAA8B/B,EAChC,CACI3T,IAAM,aAAYqU,EAAsBsB,SACxC1V,OAAQ,OACRC,KAAM,CACF0V,WAAY,gBACZC,cAAeX,EAAeY,eAGtC3B,EACAC,GAIE2B,EACFL,aAAqB,EAArBA,EAAuBhH,KAC3ByF,EAAI/T,UACA4V,EAAAA,EAAAA,GAAwB,CACpBhB,QAASe,EAAmBE,SAC5BH,aAAcC,EAAmBF,cACjCK,UAAWH,EAAmBI,cAGtCV,QAAexB,EACXuB,EACArB,EACAC,EAER,MACG,CACH,MAAMQ,OA5FDzU,OACbgU,EACAC,EACAC,KAC2B,IAAA+B,EAAAC,EAC3B,MAAMC,QAA2BvX,EAAAA,EAAAA,GAC7B,CACIiB,IAAK,kCACLC,OAAQ,OACRC,KAAM,CAAEwU,UAAWL,EAAsBK,YAE7CP,EACAC,GAeJ,aAZqBT,EACjB,CACI3T,IAAM,sCAAqCqU,EAAsBsB,SACjE1V,OAAQ,OACRC,KAAM,CACF0U,MAAoC,QAA/BwB,EAAwB,QAAxBC,EAAEC,EAAkB5H,YAAI,IAAA2H,OAAA,EAAtBA,EAAwBzB,aAAK,IAAAwB,EAAAA,EAAI,GACxCG,mBAAmB,IAG3BpC,EACAC,IAEU1F,IAAI,EAiEU8H,CAChBrC,EACAC,EACAC,GAEJF,EAAI/T,UAAS4V,EAAAA,EAAAA,GAAwBpB,IACrCa,QAAexB,EACXuB,EACArB,EACAC,EAER,CACA,OAAOqB,CAAM,EAEjBvW,UAAYC,IAAO,CACfsX,WAAYtX,EAAQY,SAAgD,CAChEV,MAAQqX,IACG,CACH1W,IAAK,cACLC,OAAQ,OACRC,KAAM,CAAEwO,KAAMgI,EAAWhI,UAIrCiI,eAAgBxX,EAAQY,SAGtB,CACEV,MAAQqX,IACG,CACH1W,IAAK,kBACLC,OAAQ,OACRC,KAAM,CAAEwO,KAAMgI,EAAWhI,UAIrCkI,WAAYzX,EAAQE,MAAqC,CACrDA,MAAOA,KACI,CACHW,IAAK,cACLC,OAAQ,OAERC,KAAM,CAAEwO,KAAM,CAAC,WAW/BuG,EAHA4B,sBAGA5B,EAFA6B,0BAEA7B,EADA8B,kB,kGC7MW,MAAMC,UAAsBC,EAAAA,UAMvCC,cACIC,QACAna,KAAKoa,GAAKC,SAASC,cAAc,OACjCta,KAAKua,kBAAoBF,SAASG,eAAe,iBACrD,CAEAC,oBACQza,KAAKua,oBACLva,KAAKua,kBAAkBG,YAAY1a,KAAKoa,IACxCxO,YAAW,KACP5L,KAAKoa,GAAGO,UAAUpY,IAAI,yBAAyB,GAChD,GAEX,CAEAqY,uBACQ5a,KAAKua,mBACLva,KAAKua,kBAAkBM,YAAY7a,KAAKoa,GAEhD,CAEAU,SACI,MAAAC,EAAmD/a,KAAKG,MAAhDkF,EAAQ0V,EAAR1V,SAAQ2V,EAAAD,EAAE1U,UAAAA,OAAS,IAAA2U,EAAG,iBAAgBA,EAE9C,OADAhb,KAAKoa,GAAG/T,UAAYA,EACb4U,EAAAA,aAAsB5V,EAAUrF,KAAKoa,GAChD,EA/BiBJ,EACVkB,UAGN,E,6DCiBE,MAAMC,GAAcvZ,EAAAA,EAAAA,IAAU,CACjCC,YAAa,cACbC,UAAWC,EAAAA,EACXG,UAAYC,IAAO,CACfiZ,YAAajZ,EAAQE,MAGnB,CACEA,MAAOpC,IAAA,IAAGob,EAAMpb,EAANob,OAAQC,EAAYrb,EAAZqb,aAAY,OAC1BtW,EAAAA,EAAAA,IAAgB,cAAaqW,IAAUC,EAAa,QAK7BH,EAAxBI,mB,kCC3BR,MAIMC,GAAYzG,E,KAAAA,aAAY,CACjCrK,KAAM,YACNsK,aANwC,CACxCyG,QAAQ,GAMRvG,SAAU,CACNwG,cAAeA,CACXzM,EAAKhP,KAQJ,IANG+R,EAAO/R,EAAP+R,QAOJ,MAAA2J,EAII3J,EAHA4J,MAAAA,OAAK,IAAAD,EAAG1M,EAAM2M,MAAKD,EAAAE,EAGnB7J,EAFAlO,KAAAA,OAAI,IAAA+X,EAAG5M,EAAMnL,KAAI+X,EACjBC,EACA9J,EADA8J,WAGJ7M,EAAMnL,KAAOA,EACbmL,EAAM2M,MAAQA,EACd3M,EAAMwM,QAAS,EACfxM,EAAM6M,WAAaA,CAAU,EAEjCC,eAAiB9M,IACbA,EAAMnL,KAAO,KACbmL,EAAM2M,MAAQ,KACd3M,EAAMwM,QAAS,EACfxM,EAAM6M,WAAa,IAAI,KAK5BE,EAA0CR,EAAUvF,QAE3D,GAF4B+F,EAAbN,cAA6BM,EAAdD,eAEfP,EAAiB,Q,ylCC1ChC,MAAMS,EAAchc,IAQd,IAPFic,EAAWjc,EAAXic,YACA1K,EAAQvR,EAARuR,SACA2K,EAAMlc,EAANkc,OACAC,EAAYnc,EAAZmc,aACAC,EAAIpc,EAAJoc,KAAIC,EAAArc,EACJsc,KAAAA,OAAI,IAAAD,GAAQA,EACZ3T,EAAO1I,EAAP0I,QAEA,MAAQ3D,GAAmBC,EAAAA,EAAAA,MAAnBD,eACFwX,EAAgBC,EAAAA,EAAMC,iBAAiBP,GAEvCQ,EAAQA,KACVvW,EAAAA,EAAAA,MAAAE,EAAAA,SAAA,CAAAjB,SAAA,EACIe,EAAAA,EAAAA,MAAA,OACIC,UAAWnG,EAAAA,EAAO0c,mBAClB9S,MAAO,CAAEqB,MAAmB,KAATgR,EAAF,KAAqB9W,SAAA,EACtCH,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CACPxW,UAAY,iBAAekW,EAAO,YAAc,OAEpDrX,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CACPxW,UAAY,gBAAekW,EAAO,YAAc,aAEpDrX,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CACPxW,UAAY,gBAAekW,EAAO,YAAc,aAEpDrX,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CACPxW,UAAY,gBAAekW,EAAO,YAAc,aAEpDrX,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CACPxW,UAAY,gBAAekW,EAAO,YAAc,gBAGxDnW,EAAAA,EAAAA,MAAA,OAAKC,UAAWnG,EAAAA,EAAO4c,gBAAgBzX,SAAA,EACnCH,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CAACxW,UAAU,kBACtBnB,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CAACxW,UAAU,uBACtBnB,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CAACxW,UAAU,uBACtBnB,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CAACxW,UAAU,uBACtBnB,EAAAA,EAAAA,KAAC2X,EAAAA,EAAU,CAACxW,UAAU,4BAIlC,OAAOgW,GACHnX,EAAAA,EAAAA,KAAC6X,EAAAA,SAAQ,CAAA1X,UACLe,EAAAA,EAAAA,MAAA,OACIC,UAAY,GAAEnG,EAAAA,EAAO8c,sBACjBT,EAAOrc,EAAAA,EAAOqc,KAAOrc,EAAAA,EAAO+c,QAC7B5X,SAAA,EACHH,EAAAA,EAAAA,KAACC,EAAAA,EAAKzC,EAAAA,EAAA,CACF2D,UAAU,oBACVjB,KAAMJ,EACD,qBAAoBwM,KAAY0K,MAEjCE,GAAY,IAChBc,SAAS,EACTvU,QAASA,EAAQtD,UACjBH,EAAAA,EAAAA,KAACyX,EAAK,QAGVzX,EAAAA,EAAAA,KAAA,OAAKmB,UAAY,GAAEnG,EAAAA,EAAO8c,2BAA2B3X,UACjDH,EAAAA,EAAAA,KAAA,IAAAxC,EAAAA,EAAA,CACI0C,KAAMJ,EACD,qBAAoBwM,KAAY0K,MAEjCE,GAAY,IAAA/W,SACfmX,aAMjBtX,EAAAA,EAAAA,KAAC6X,EAAAA,SAAQ,CAAA1X,UACLe,EAAAA,EAAAA,MAAA,OACIC,UAAY,GAAEnG,EAAAA,EAAO8c,sBACjBT,EAAOrc,EAAAA,EAAOqc,KAAOrc,EAAAA,EAAO+c,QAC7B5X,SAAA,EACHH,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,oBAAmBhB,UAC9BH,EAAAA,EAAAA,KAACyX,EAAK,OAEVzX,EAAAA,EAAAA,KAAA,OAAKmB,UAAU,eAAchB,SAAEmX,QAG1C,EAGLP,EAAYkB,aAAe,CAAC,EAE5BlB,EAAYf,UAQX,E,qDClGM,MAAMkC,GAAmBxb,EAAAA,EAAAA,IAAU,CACtCC,YAAa,mBACbC,UAAWC,EAAAA,EACXG,UAAYC,IAAO,CACfkb,gBAAiBlb,EAAQE,MAGvB,CACEA,MAAOA,KACI,CACHW,IAAK,mCACLC,OAAQ,eAOema,EAA5BE,uB,2CCzBf,MAAMC,EAAe,CACjBC,oBAAqB,qBACrBC,YAAa,cACbC,iBAAkB,sBAClBC,uBAAwB,yBACxBC,6BAA8B,+BAC9BC,eAAgB,iBAChBC,cAAe,gBACfC,wBAAyB,0BACzBC,kBAAmB,oBACnBC,sBAAuB,qBACvBC,yBAA0B,wBAC1BC,8BAA+B,4BAC/BC,+BAAgC,4BAChCC,oCAAqC,gCACrCC,+DACI,0DACJC,8BAA+B,mCAC/BC,0BAA2B,4BAC3BC,yBAA0B,2BAC1BC,sBAAuB,wBACvBC,wBAAyB,0BACzBC,yBAA0B,wBAC1BC,yBAA0B,wBAG1BC,uBAAwB,wBACxBC,sBAAuB,uBACvBC,mBAAoB,qBAEpBC,cAAe,eAEfC,aAAc,wBACdC,oCAAqC,2B,oDCjClC,MAAMC,EAAiB,MACjBC,EAAkB,KAClBC,EAAoB,E,2CCF1B,IAAKC,EAAW,SAAXA,GAAW,OAAXA,EAAW,YAAXA,EAAW,gBAAXA,CAAW,MAKXpJ,EAAW,SAAXA,GAAW,OAAXA,EAAW,mBAAXA,EAAW,mBAAXA,EAAW,iCAAXA,EAAW,+BAAXA,CAAW,K,2HCFhB,MAAMqJ,EAAuBC,IAChCzQ,EAAAA,EAAAA,KAAY0Q,EAAAA,EAAAA,IAAuBD,G,6sECyBhC,MAEDE,EACFA,CACIC,EACAja,EACAvC,EACA+F,EACA0W,EACAC,EACAC,IAEJ,SACIvZ,EACAwZ,GAGA,GACuB,iBAAZxZ,GACPA,EAAQyZ,SAASC,EAAAA,KACjBJ,EAEA,MAAM,IAAI5O,MACL,4DAA2D1K,oCAEnE,QAAA2Z,EAAA3gB,UAAAC,OAVEyX,EAAI,IAAAkJ,MAAAD,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJnJ,EAAImJ,EAAA,GAAA7gB,UAAA6gB,GAWP,MAAMC,EAAc3a,EAChBa,EACA9D,EAAAA,EAAA,GACKsd,GAAO,IAAEO,IAAKpX,EAAU0W,gCAE1B3I,GAWP,OATI1U,EAAAA,IACAge,EACIha,EACAwZ,EACA7W,EACAyW,EACAxc,GAGD2c,EAAkCvZ,EAAU8Z,CACvD,EAEEG,EAAwBpe,GACZ,OAAVA,GACG,CAAC,IAAK,OAAQ,IAAIpB,SAASoB,GAczBuD,EAAgBA,KACzB,MAAMxC,GAAWyD,EAAAA,EAAAA,KACV6Z,EAAoE1W,GAA5B2W,EAAAA,EAAAA,GAAS,oBAAmB,GAAhC,GACrCZ,EAAkCU,EACpCC,GAEEvX,GAAW6F,EAAAA,EAAAA,GAAYpB,EAAAA,IAGvBiS,IADF7Q,EAAAA,EAAAA,IAAaC,IAAgB,IAAA2R,EAAA,OAAiB,QAAjBA,EAAK3R,EAAMsI,cAAM,IAAAqJ,OAAA,EAAZA,EAAcC,eAAe,KAAK,IACvB5f,SAASkI,GAC1D2X,GAA2BC,EAAAA,EAAAA,GAAeC,EAAAA,IAAlCrb,EAACmb,EAADnb,EAAGsb,EAAKH,EAALG,MAAOC,EAAIJ,EAAJI,KACZC,EAAgC7gB,EAAAA,SAClC,IACIqf,EACIuB,EACAvb,EACAvC,EACA+F,EACA0W,GACA,EACAE,IAER,CACIF,EACAqB,EACAvb,EACAvC,EACA+F,EACA4W,IAGR,MAAO,CAAEpa,EAAGsb,EAAQE,EAAW,IAAM,MAAOD,OAAM,EAGhDV,EAA6B,SAC/Bha,GAMC,IALDwZ,EAAOxgB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,CAAC,EACX2J,EAAgB3J,UAAAC,OAAA,EAAAD,UAAA,QAAA6R,EAEhB6P,EAAS1hB,UAAAC,OAAA,EAAAD,UAAA,QAAA6R,EACTjO,EAAqB5D,UAAAC,OAAA,EAAAD,UAAA,QAAA6R,EAErB,MAAA+P,EAA4BF,EAAKG,WAAWC,eACxC9a,EACAwZ,GAFIrgB,EAAGyhB,EAAHzhB,IAAK4hB,EAAUH,EAAVG,WAIPC,EAAYD,EAAWA,EAAW9hB,OAAS,GACjDgiB,EAA8BP,EAAKG,WAAWjR,QAAQzQ,EAAG+C,EAAAA,EAAA,GAClDsd,GAAO,IACVO,IAAKpX,EACLuY,GAAIF,KAHAG,EAAGF,EAAHE,IAKFC,EALmBH,EAAZI,cAKyBrb,EAEtCpD,GACI0e,EAAAA,EAAAA,IAAkB,CAAEniB,IAAKiiB,EAAetB,YAAaqB,EAAKH,cAElE,EAqDO,MAAMO,EAAqBA,KAIvB,CACH5Y,UAJsB6F,EAAAA,EAAAA,GAAYpB,EAAAA,MAW7B3I,EAAkBA,KAC3B,MAAMkD,GAAoB6G,EAAAA,EAAAA,GAAYpB,EAAAA,IAMtC,MAAO,CACH5I,gBANiBgd,EAAAA,EAAAA,SAAO,SACxBhf,GAEA,OAAOgC,EAAAA,EAAAA,IAAehC,EAAKmF,EAC/B,IAEiC8Z,QAChC,EAUQ1b,EAASpG,IAClB,MAAMiD,GAAWyD,EAAAA,EAAAA,KACXsC,GAAW6F,EAAAA,EAAAA,GAAYpB,EAAAA,IACtB8S,EAAoE1W,GAA5B2W,EAAAA,EAAAA,GAAS,oBAAmB,GAAhC,GACrCZ,EAAkCU,EACpCC,GAIEb,IADF7Q,EAAAA,EAAAA,IAAaC,IAAgB,IAAAiT,EAAA,OAAiB,QAAjBA,EAAKjT,EAAMsI,cAAM,IAAA2K,OAAA,EAAZA,EAAcrB,eAAe,KAAK,IACvB5f,SAASkI,GAC1DgZ,GAA2BpB,EAAAA,EAAAA,GAAeC,EAAAA,IAAlCrb,EAACwc,EAADxc,EAAGsb,EAAKkB,EAALlB,MAAOC,EAAIiB,EAAJjB,KACV1a,EAAgCrG,EAAhCqG,QAASnB,EAAuBlF,EAAvBkF,SAAU+c,EAAajiB,EAAbiiB,SACrBjB,EAAW7gB,EAAAA,SACb,IACIqf,EACIuB,EACAvb,EACAvC,EACA+F,EACA0W,GACA,EACAE,IAER,CACIF,EACAqB,EACAvb,EACAvC,EACA+F,EACA4W,IAMR,IAAKvZ,EACD,MAAM,IAAI0K,MAAM,oDAEpB,IAAK1K,EAAQyZ,SAASC,EAAAA,IAClB,MAAM,IAAIhP,MACL,8DAA6D1K,MAGtE,GAAInB,EACA,MAAM,IAAI6L,MACL,gEAA+D1K,wBAGxE,GAAI4b,EACA,MAAM,IAAIlR,MACN,kEAGR,OAAK+P,GAGE/b,EAAAA,EAAAA,KAACmd,EAAAA,EAAc3f,EAAA,CAACgf,GAAIY,EAAAA,GAAa3c,EAAGwb,GAAchhB,KAF9C+E,EAAAA,EAAAA,KAAAoB,EAAAA,SAAA,CAAAjB,SAAE,OAEqD,C,mDC/R/D,MAAMkd,EAAkCxZ,GAC3CA,SAEkC,OAAlCA,EAAgByB,cAOPgY,EAAwBzZ,IAChCwZ,EAA+BxZ,IACE,OAAlCA,EAAgByB,cAEPiY,EAA4B1Z,IACpCwZ,EAA+BxZ,IACE,OAAlCA,EAAgByB,a,4DChBb,MAGM1J,EAA8BiI,IAEnB,CAChB2Z,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,OANI/Z,aAAe,EAAfA,EAAiByB,gBAAiB,OAQnB,MAGlBxB,EAAqCsS,IAE3B,CACfyH,GAAI,KACJC,GAAI,KACJJ,GAAI,KACJC,GAAI,KACJC,GAAI,OANIxH,aAAY,EAAZA,EAAc9Q,gBAAiB,OAQjB,MAGjByY,EAA8B3H,IAEpB,CACf0H,GAAI,KACJJ,GAAI,KACJC,GAAI,KACJC,GAAI,OALIxH,aAAY,EAAZA,EAAc9Q,gBAAiB,OAOjB,MAGjB0Y,EAA4BA,CAACC,EAAOC,KAC5CD,GAAS,MAAME,iBAAmBD,GAAU,MAAMC,a,unCC1BhD,MAAMC,EAA6BA,IAAMC,IA0C1CA,EAA8B,WAKO,IAAAtjB,EAAAT,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAP,CAAC,EAACgkB,EAAAvjB,EAJlCwjB,WAAAA,OAAU,IAAAD,GAAOA,EACjB1Z,EAAK7J,EAAL6J,MACA4Z,EAAOzjB,EAAPyjB,QACAC,EAAc1jB,EAAd0jB,eAEA,MAAQxa,GAAa4Y,EAAAA,EAAAA,KAAb5Y,SACFya,GAAoB7c,EAAAA,EAAAA,GAAe8c,EAAAA,IAEzC,OAAOC,EAAAA,EAAAA,cACFC,IACGC,EAAAA,EAAAA,GACIP,EAAaG,EAAkBK,KAAOC,OAAOH,GAASA,EACtD5a,EAAQzG,EAAAA,EAAA,CAEJyhB,SAAUP,EAAkBhb,KAC5Bwb,sBAAuBR,EAAkBS,SACzCC,sBAAuBX,EACjB,EACAC,EAAkBS,UACpBva,EAAQ,CAAEA,SAAU,CAAC,GACrB4Z,EAAU,CAAEA,WAAY,CAAC,KAGzC,CACID,EACAta,EACAya,EACAF,EACA5Z,EACA6Z,GAGZ,C,unCC9EA,MAAMY,GAAeC,EAAAA,EAAAA,KAEfC,EAAgBthB,UAClB,GAAIX,EAAAA,GACA,OAEJ,GAAI+hB,EAAaG,eACb,OAEJ,MAAMC,EAAWJ,EAAaK,OAC9B,GAAID,EACA,IACI,MAAME,EAAcN,EAAaO,YAC3BC,EAAe,CACjBC,UAA0C,IAA/B/Z,KAAKga,IAAI,EAAG,EAAIJ,GAC3BK,QAASA,KACLX,EAAaY,aACbV,GAAe,GAGvB,GAAIE,EAASS,UAAU/J,OAAQ,CAC3B,MAIApb,SAHUolB,EAAAA,GAAaC,IACd,2BAA0BX,EAASS,UAAU/J,WAGzC3J,KAAK5N,MAAQ,CAAC,EADnByhB,EAAQtlB,EAARslB,SAAUC,EAAOvlB,EAAPulB,QAASC,EAAgBxlB,EAAhBwlB,kBAE3BC,EAAAA,EAAAA,KAEIpL,EAAAA,EAAAA,eAAcqL,EAAAA,EAAW,CACrBJ,WACAC,UACAC,mBACAve,KAAMyd,EAASzd,KACfke,UAAWT,EAASS,YAExBL,EAER,MAAO,GAAIJ,EAASS,UAAUQ,QAAS,CACnC,MAAAC,EACIlB,EAASS,UADLQ,EAAOC,EAAPD,QAASE,EAAMD,EAANC,OAAQC,EAAWF,EAAXE,YAAaC,EAAUH,EAAVG,YAEtCN,EAAAA,EAAAA,KACIxgB,EAAAA,EAAAA,KAAC+gB,EAAAA,EAAY,CACTL,QAASA,EACTE,OAAQA,EACRC,YAAaA,EACbC,WAAYA,IACdtjB,EAAAA,EAAA,GACGqiB,GAAY,IAAE7d,KAAMyd,EAASS,UAAUle,OAEpD,CACJ,CAAE,MAAOG,GAGL,MAFAkd,EAAaY,aACbV,IACMpd,CACV,CACJ,EAGE6e,EAAqB/iB,eACvB+D,EACAke,GAeC,IADDe,EAAY3mB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,GAEkB,YAA7B6a,SAAS+L,kBAIb7B,EAAahiB,IAAI,CAAE2E,OAAMke,aAAae,GACtC1B,IACJ,EAwCa4B,EAAmB,SAC5BT,EACAE,GAIAI,EAAmB,UAAW,CAC1BN,UACAE,SACAC,YANgBvmB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,KAOnBwmB,WANexmB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,KAOlB0H,KAAMwe,EAAAA,GAAMY,KAAKC,SAEzB,C,uDC9IO,MAAMvR,EAAe,CACxBwR,KAAM,GACNC,oBAC0B,QAAtBC,EAAAC,EAAAA,EAASC,qBAAa,IAAAF,OAAA,EAAtBA,EAAwBre,KAAIpI,IAAyB,CACjDgE,GAD6BhE,EAAFgE,GAE3B2D,MAFmC3H,EAAJyK,KAG/BtF,KAHyCnF,EAAJmF,WAIlC,GACXyhB,YAAY,EACZvP,MAAO,MAGLwP,GAAkB/R,EAAAA,EAAAA,aAAY,CAChCrK,KAAM,aACNsK,eACAE,SAAU,CACN6R,WAAYA,CAAC9X,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QAClB/C,EAAMwX,mBACFzU,EAAQyU,oBAAsBxX,EAAMwX,kBAAkB,EAE9DO,oBAAsB/X,IAClBA,EAAM4X,YAAa,EACnB5X,EAAMqI,MAAQ,IAAI,EAEtB2P,oBAAqBA,CAAChY,EAAO4D,KACzB5D,EAAMuX,KAAO3T,EAAOb,QACpB/C,EAAM4X,YAAa,EACnB5X,EAAMqI,MAAQ,IAAI,EAEtB4P,wBAAyBA,CAACjY,EAAO4D,KAC7B5D,EAAM4X,YAAa,EACnB5X,EAAMqI,MAAQzE,EAAOb,OAAO,KAK3BoD,EAAU0R,EAAgB1R,QAEhC+R,EAKHL,EAAgB7Q,QAJNkR,EAAVJ,WACmBI,EAAnBH,oBACmBG,EAAnBF,oBACuBE,EAAvBD,uB,++BCZJ,G,WAAI1kB,EAAAA,GAEA,MAAM,IAAI0O,MACN,2GAKR,MAiFMkW,EAjEmBC,KAA4B,IAAAC,EACjD,MAAMC,EACiB,iBAAZC,SAAkD,gBAAf,QAAXF,EAAAE,QAAQC,WAAG,IAAAH,OAAA,EAAXA,cAE7BI,GAAaC,EAAAA,EAAAA,gBAAe,CAC9BvS,SAASwS,EAAAA,EAAAA,SAAYP,GACrBQ,WAAaC,IACT,MAAMC,EAAc,CAChBC,EAAAA,GAAYH,WACZI,EAAAA,EAAQJ,WACRK,EAAAA,GAAYL,WACZM,EAAAA,GAAkBN,WAClBO,EAAAA,GAAeP,WACfQ,EAAAA,EAAcR,WACdS,EAAAA,GAAQT,WACRU,EAAAA,GAAUV,WACVW,EAAAA,GAAaX,WACbY,EAAAA,GAAqBZ,WACrBlmB,EAAAA,GAAiBkmB,WACjBzK,EAAAA,EAAiByK,WACjBa,EAAAA,GAAYb,WACZc,EAAAA,GAAkBd,WAClB5P,EAAAA,GAAY4P,WACZe,EAAAA,GAA4Bf,WAC5B1M,EAAAA,EAAY0M,WACZgB,EAAAA,EAAOhB,WACPiB,EAAAA,GAAYjB,WACZkB,EAAAA,GAAclB,WACdmB,EAAAA,GAAmBnB,YAKvB,OAHIR,GACAU,EAAYjW,MAAKmX,EAAAA,EAAAA,GAAiB5B,IAE/BS,IAAuBoB,OAAOnB,EAAY,EAGrDoB,UAAW5B,GAAUzhB,OAAOC,SAASC,OAAO/E,SAAS,eACrDmoB,UAAW,CAACC,EAAAA,MAIhB,MAzDiDC,EAGjDC,EACAnC,KAEKmC,EAAOC,KAGZD,EAAOC,IAAIC,OAAO,kBAAkB,KAEhC,MAAMC,EAAkBC,EAAQ,KAChCvC,EAAMwC,eAAeF,EAAgB,GACvC,EA2CFJ,CAA6CC,EAAQ7B,GAC9CA,CAAU,EAwBPmC,EAAgBC,EAAAA,EAAAA,OAE9BC,EAAAA,EAAAA,GAAgBpD,EAAAA,EAAhBoD,CAA0B3C,EAAMhkB,UAazB,MAAM4mB,EAA2B7pB,IACpC+E,EAAAA,EAAAA,KAAC+kB,EAAAA,G,+VAAQvnB,CAAA,CAAC0kB,MAAOA,GAAWjnB,G,gJCzHhC,MAsHa4mB,EAAaA,IAAO3jB,IAC7BA,GAAS8mB,EAAAA,EAAAA,IAAYlV,EAAAA,GAAc,C,q+CCpIvC,MAAMF,GAAQC,EAAAA,EAAAA,aAAY,CACtBrK,KAAM,WACNsK,aAAY,IACZE,SAAU,CACN6R,WAAYA,CAACoD,EAAMlqB,IACfyC,EAAA,GAD0BzC,EAAP+R,SAGvBoY,qBAAuBnb,IACnBA,EAAMqI,MAAQ,IAAI,EAEtB+S,qBAAsBA,CAACpb,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QAC5B,MAAAsY,EAKItY,EAJAyG,OAAAA,OAAM,IAAA6R,EAAG,CAAC,EAACA,EAAAC,EAIXvY,EAHAwY,SAAAA,OAAQ,IAAAD,EAAG,KAAIA,EAAAE,EAGfzY,EAFA0Y,YAAAA,OAAW,IAAAD,EAAG,KAAIA,EAAAE,EAElB3Y,EADA4Y,8BAAAA,OAA6B,IAAAD,EAAG,KAAIA,EAGxC,OAAAjoB,EAAAA,EAAA,GACOuM,GAAK,IACRub,WACAlT,MAAO,KACPuT,WAAW,EACXH,gBACGI,EAAAA,EAAAA,GAAUrS,EAAQmS,GAA8B,EAG3DG,yBAA0BA,CAAC9b,EAAK+b,KAAkB,IAAdhZ,EAAOgZ,EAAPhZ,SAChC/C,EAAKvM,EAAA,IAAQooB,EAAAA,EAAAA,GAAU,CAAC,KAClBxT,MAAQtF,EACd/C,EAAM4b,WAAY,CAAI,EAE1BI,qBAAsBA,CAAChc,EAAKic,KAAkB,IAAdlZ,EAAOkZ,EAAPlZ,QAC5B/C,EAAMkc,QAAOzoB,EAAAA,EAAA,GACNuM,EAAMkc,SAAO,IAChB,CAACnZ,EAAQnO,QAAMnB,EAAAA,EAAA,GACRuM,EAAMkc,QAAQnZ,EAAQnO,SAAO,IAChCkM,cAAeiC,EAAQvG,SAE9B,EAEL2f,WAAYA,CAACnc,EAAKoc,KAAkB,IAAdrZ,EAAOqZ,EAAPrZ,QAClB,MAAQqJ,EAAwBrJ,EAAxBqJ,OAAWiQ,EAAQlrB,EAAK4R,EAAO3R,GACvC,OAAAqC,EAAAA,EAAA,GACOuM,GAAK,IACR2M,MAAO,IACA3M,EAAM2M,MAAMvT,KAAKwC,GAChBA,EAAEwQ,SAAWA,EAAM3Y,EAAAA,EAAA,GAAQmI,GAAMygB,GAAazgB,KAGtD0gB,eAAgB,IACTtc,EAAMsc,eAAeljB,KAAKwC,GACzBA,EAAEwQ,SAAWA,EAAM3Y,EAAAA,EAAA,GAAQmI,GAAMygB,GAAazgB,MAErD,EAGT2gB,iBAAkBA,CAACvc,EAAKwc,KAAkB,IAAdzZ,EAAOyZ,EAAPzZ,QACxB,OAAO/C,EAAMsc,eAAeG,MACvB7gB,GAAMA,EAAEwQ,SAAWrJ,EAAQlO,KAAKuX,SAE/BpM,EAAKvM,EAAAA,EAAA,GAEEuM,GAAK,IACRsc,eAAgB,IAAItc,EAAMsc,eAAgBvZ,EAAQlO,OACrD,EAEX6nB,oBAAqBA,CAAC1c,EAAK2c,KAAkB,IAAd5Z,EAAO4Z,EAAP5Z,QAC3B,OAAO/C,EAAMsc,eAAeG,MACvB7gB,GAAMA,EAAEwQ,SAAWrJ,EAAQlO,KAAKuX,SACpC3Y,EAAAA,EAAA,GAEYuM,GAAK,IACRsc,eAAgBtc,EAAMsc,eAAe1nB,QAChCgH,GAAMA,EAAEwQ,SAAWrJ,EAAQlO,KAAKuX,WAGzCpM,CAAK,EAEf4c,gBAAiBA,CAAC5c,EAAK6c,KAAkB,IAAd9Z,EAAO8Z,EAAP9Z,QACvB/C,EAAM8c,aAAe/Z,EACrB/C,EAAM+c,kBAAqBha,GAAWA,EAAQ,GAAG/N,IAAO,CAAC,EAE7DgoB,qBAAsBA,CAAChd,EAAKid,KAAkB,IAAdla,EAAOka,EAAPla,QAC5B/C,EAAM+c,kBAAoBha,CAAO,EAErCma,gBAAiBA,CAACld,EAAKmd,KAAkB,IAAdpa,EAAOoa,EAAPpa,QACvB/C,EAAMod,aAAera,CAAO,EAEhCsa,MAAOA,CAACrd,EAAKsd,KAAWA,EAAPva,QACGgD,YAAY,KAKjCgB,EAaHlB,EAAMmB,QAZN8Q,EAAU/Q,EAAV+Q,WAEAsD,GADoBrU,EAApBoU,qBACoBpU,EAApBqU,sBAWSjV,GAVeY,EAAxB+U,yBACoB/U,EAApBiV,qBACUjV,EAAVoV,WACgBpV,EAAhBwV,iBACmBxV,EAAnB2V,oBACe3V,EAAf6V,gBACe7V,EAAfmW,gBACoBnW,EAApBiW,qBACKjW,EAALsW,MAEmBxX,EAAMM,Q,4DChHtB,MAAMoX,EAAqBvd,GAAqBA,EAAMC,YAEhDud,EAAyBxd,IAAgB,IAAAyd,EAAA,OAClDzd,SAAkB,QAAbyd,EAALzd,EAAOC,mBAAW,IAAAwd,OAAb,EAALA,EAAoBC,eAAe,EAC1BjN,EACRD,GAAyBxQ,IAAgB,IAAA2d,EAAA,OACU,KAApB,QAA5BA,EAAAH,EAAsBxd,UAAM,IAAA2d,OAAA,EAA5BA,EAA+BnN,GAAqB,EAW/CoN,EAAqB5d,IAAgB,IAAA6d,EAAA,QAC5C7d,SAAkB,QAAb6d,EAAL7d,EAAOC,mBAAW,IAAA4d,IAAlBA,EAAoB/d,mBAAkB,C,4OCd5C,MAcMge,GAAahY,EAAAA,EAAAA,aAAY,CAC3BrK,KAAM,QACNsK,aARoC,CACpCgY,cAAe,GACfC,gBAAiB,GACjBC,mBAAoB,GAMpBhY,SAAU,CACNiY,kBAAmBA,CAACle,EAAO4D,KACvB,MAAiBwI,EAAWxI,EAApBb,QAER/C,EAAM+d,cAAgB/d,EAAM+d,cAAcnpB,QACrCgH,GAAMA,IAAMwQ,IAGjBpM,EAAM+d,cAAcI,QAAQ/R,GAE5BpM,EAAM+d,cAAgB/d,EAAM+d,cAAclY,MACtC,EA5BmB,GA8BtB,EAELuY,kBAAmBA,CAACpe,EAAO4D,KACvB,MAAQb,EAAYa,EAAZb,QACR/C,EAAM+d,cAAgBhb,EAAQ8C,MAAM,EAlCb,GAkC2C,EAOtEwY,SAAUA,CACNre,EACA4D,KAEA,MAAA0a,EAEI1a,EADAb,QAAWqJ,EAAMkS,EAANlS,OAAQmS,EAAMD,EAANC,OAGjBP,EAAkB,IAAIvrB,IAAIuN,EAAMge,iBAAmB,IACrDO,EACAP,EAAgB1qB,IAAI8Y,GAEpB4R,EAAgBQ,OAAOpS,GAE3BpM,EAAMge,gBAAkB7M,MAAMsN,KAAKT,EAAgB,EAEvDU,uBAAyB1e,IACrBA,EAAMie,mBAAqBje,EAAMie,mBAAqB,CAAC,EAE3DU,iBAAkBA,CAAC3e,EAAO4D,KACtB,MAAiBgb,EAAYhb,EAArBb,QACFib,EAAkB,IAAIvrB,IAAIuN,EAAMge,iBAAmB,IACzDY,SAAAA,EAAStpB,SAAS8W,GAAW4R,EAAgB1qB,IAAI8Y,KACjDpM,EAAMge,gBAAkB7M,MAAMsN,KAAKT,EAAgB,EAEvDa,oBAAqBA,CAAC7e,EAAO4D,KACzB,MAAiBgb,EAAYhb,EAArBb,QACFib,EAAkB,IAAIvrB,IAAIuN,EAAMge,iBAAmB,IACzDY,SAAAA,EAAStpB,SAAS8W,GAAW4R,EAAgBQ,OAAOpS,KACpDpM,EAAMge,gBAAkB7M,MAAMsN,KAAKT,EAAgB,EAEvDlG,WAAYA,CAAC9X,EAAO4D,MACRkb,EAAAA,EAAAA,GAAgBlb,EAAOb,QAAQ,KAK5Cgc,EAQHjB,EAAW9W,QAJX2X,GAHiBI,EAAjBb,kBACiBa,EAAjBX,kBACQW,EAARV,SACgBU,EAAhBJ,kBACAE,EAAmBE,EAAnBF,oBACA/G,EAAUiH,EAAVjH,WAIJ,GAH0BiH,EAAtBL,uBAGWZ,EAAkB,Q,8kCCtF1B,MAGMkB,EAAyBpF,EAAAA,EAAOqF,gBAAgB,CACzDhsB,UAAYC,IAAO,CACfgsB,uBAAwBhsB,EAAQE,MAG9B,CACEO,aAAc,CAACwrB,EAAAA,EAAWC,qBAC1BhsB,MAAOA,IAEK,GADQG,EAAAA,GAAW,GAAK,wCAIxC8rB,yBAA0BnsB,EAAQY,SAGhC,CACEoB,gBAAiB,CAACiqB,EAAAA,EAAWC,qBAC7BhsB,MAAQC,IAGG,CACHU,IAAM,GAHMR,EAAAA,GAAW,GAAK,sCAI5BS,OAAQ,MACRC,KAAMZ,IAGda,qBAAoBlD,EAAAoE,GAA+C,IAA5C1E,EAAGM,EAAHN,IAAK8L,EAAKxL,EAALwL,MAAWrI,EAAQiB,EAARjB,SAAUC,EAAcgB,EAAdhB,eAC7C,MAAME,EAAcH,EAChB6qB,EAAuBzqB,KAAKC,gBACxB,8BACA,GACCC,IAAK,IAAA6qB,EAAA,OAAA7rB,EAAAA,EAAA,GACCgB,GAAK,IACR8qB,KAAgB,QAAZD,EAAE7qB,EAAM8qB,YAAI,IAAAD,OAAA,EAAVA,EAAYlmB,KAAKomB,GACfA,EAAI9uB,MAAQA,EACZ+C,EAAAA,EAAA,GACO+rB,GAAG,IACNhjB,UAGDgjB,KACT,KAId,UACUprB,CACV,CAAE,MACEE,EAAYW,MAChB,CACJ,QAMR+pB,EADIS,+BACJT,EADoCU,oCAGXV,EAAd/rB,S,8EChER,MAEM+E,EAAoBgI,IAAgB,IAAA2f,EAAA,OAAiB,QAAjBA,EAAK3f,EAAM4f,cAAM,IAAAD,OAAA,EAAZA,EAAcE,UAAU,EAEjEC,EAAqB9f,IAAgB,IAAA+f,EAAA,OAClC,QADkCA,EAC9C/f,EAAM4f,cAAM,IAAAG,OAAA,EAAZA,EAAcC,WAAW,EAEhBC,EAAkBjgB,IAAgB,IAAAkgB,EAAA,OAAKlgB,SAAa,QAARkgB,EAALlgB,EAAO4f,cAAM,IAAAM,OAAR,EAALA,EAAe3d,QAAQ,EAwB9D4d,EAAyBngB,IAAgB,IAAAogB,EAAAC,EAAAC,EAAAC,EAAA,OACtC,QAAZH,EAAApgB,EAAM4f,cAAM,IAAAQ,GAAa,QAAbC,EAAZD,EAAcJ,mBAAW,IAAAK,OAAb,EAAZA,EAA2BG,UAC0B,QAAzC,QAAZF,EAAAtgB,EAAM4f,cAAM,IAAAU,GAAa,QAAbC,EAAZD,EAAcN,mBAAW,IAAAO,OAAb,EAAZA,EAA2BC,QAAQjlB,cAAsB,C,gEClC7D,MAAMklB,EAAwB,IAAIC,EAAAA,EAAepS,EAAAA,EAAaO,eACxD8R,EAA+B,IAAID,EAAAA,EACrCpS,EAAAA,EAAaQ,yBAOJ8R,EAAgCA,KAAsB,IAAAC,EAAAC,EAC/D,MAAMC,EAIe,QAJDF,GAAGC,EAAAL,EAClBO,SAGAC,wBAAgB,IAAAJ,OAAA,EAJEA,EAAAhwB,KAAAiwB,GAMjBI,EAA0BH,aAAc,EAAdA,EAAgB3nB,KAAK+nB,IAAW,IAAAC,EAAAC,EAC5D,MAAO,CACHC,KAAMH,EAAOzwB,IACb6wB,MAC4B,iBAAjBJ,EAAO3kB,MACR2kB,EAAO3kB,MACK,QADA4kB,EACZD,EAAO3kB,aAAK,IAAA4kB,OAAA,EAAZA,EAAcG,MACxB9F,YAC4B,iBAAjB0F,EAAO3kB,MACI,QADc6kB,EAC1BF,EAAO3kB,aAAK,IAAA6kB,OAAA,EAAZA,EAAc5F,YACd,CAAE+F,EAAGL,EAAOzwB,KACzB,IAGL,OAAOwwB,QAAAA,EAA2B,EAAE,EA4B3BO,EAAuCA,KAAM,IAAAC,EAAAC,EACtD,MAAMC,EAEe,QAFMF,GAAGC,EAAAhB,EACzBK,SACAC,wBAAgB,IAAAS,OAAA,EAFSA,EAAA7wB,KAAA8wB,GAGzBhmB,MAAM9G,GAASA,EAAK2H,OAAS3H,EAAKnE,MACjCmxB,EAAc,CAChBjtB,QAAQgtB,aAAqB,EAArBA,EAAuBlxB,MAAO,KACtC8L,OAAOolB,aAAqB,EAArBA,EAAuBplB,QAAS,MAE3C,OAAOqlB,EAAYjtB,QAAUitB,EAAYrlB,MAAQqlB,EAAc,CAAC,CAAC,C,2kCC1C9D,MAAM9b,EAAqC,CAC9C+b,OAAQ,CACJnV,MAAO,GACPrE,OAAQ,eAEZyZ,SAAU,CACNpV,MAAO,GACPrE,OAAQ,eAEZyY,eAAgB,GAChBa,sBAAuB,CAAEplB,MAAO,GAAI5H,OAAQ,KAc1CotB,GAAuBlc,EAAAA,EAAAA,aAAY,CACrCrK,KAAM,kBACNsK,eACAE,SAAU,CACN6R,WAAYA,IAfIgH,MACpB,MAAMiC,GAAiBH,EAAAA,EAAAA,OAAmC,GACpDgB,GAAwBH,EAAAA,EAAAA,MAE9B,OAAAhuB,EAAAA,EAAA,GACOsS,GAAY,IACfgb,iBACAa,yBAAqB,EASV9C,GAEXmD,yBAA0BA,CACtBjiB,EAAKhP,KAEJ,IADC+R,EAAO/R,EAAP+R,QAEF/C,EAAM+gB,eAAiBhe,CAAO,EAElCmf,gCAAiCA,CAACliB,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QACvC/C,EAAM4hB,sBAAwB7e,CAAO,EAEzCof,wBAAyBA,CAACniB,EAAK+b,KAAkB,IAAdhZ,EAAOgZ,EAAPhZ,QAC/B/C,EAAM+hB,SAAWhf,CAAO,EAE5Bqf,8BAA+BA,CAACpiB,EAAKic,KAAkB,IAAdlZ,EAAOkZ,EAAPlZ,QACrC/C,EAAM+hB,SAASzZ,OAASvF,CAAO,EAEnCsf,kBAAmBA,CAACriB,EAAKoc,KAAkB,IAAdrZ,EAAOqZ,EAAPrZ,QACzB,MAAMuf,EAAoBtiB,EAAM+gB,eAAewB,WAC1CxrB,GAAWA,EAAOuqB,OAASve,EAAQue,OAGpCgB,GAAqB,GACrBtiB,EAAM+gB,eAAeuB,GAAmBf,MAAQxe,EAAQwe,MACxDvhB,EAAM+gB,eAAeuB,GAAmB7G,YACpC1Y,EAAQ0Y,YAGZzb,EAAM+gB,eAAe5C,QACjBne,EAAM+gB,eAAeyB,OAAOF,EAAmB,GAAG,KAGtDtiB,EAAM+gB,eAAe5C,QAAQpb,EACjC,EAEJ0f,mBAAoBA,CAACziB,EAAKwc,KAAkB,IAAdzZ,EAAOyZ,EAAPzZ,QAC1B/C,EAAM+gB,eAAiB/gB,EAAM+gB,eAAensB,QACvCmC,GAAWA,EAAOuqB,OAASve,GAC/B,EAEL2f,yBAA0BA,CAAC1iB,EAAK2c,KAAkB,IAAd5Z,EAAO4Z,EAAP5Z,QAChC/C,EAAM4hB,sBAAwB7e,CAAO,KAK1C4f,EASHX,EAAqBhb,QARrB8Q,EAAU6K,EAAV7K,WAUS3R,GATewc,EAAxBV,yBAC+BU,EAA/BT,gCACuBS,EAAvBR,wBAC6BQ,EAA7BP,8BACiBO,EAAjBN,kBACkBM,EAAlBF,mBACwBE,EAAxBD,yBAGmBV,EAAqB7b,Q,+mCCnE5C,MAAMyc,GAAyB9c,EAAAA,EAAAA,aAAY,CACvCrK,KAAM,oBACNsK,aAAc,CACV8c,SAAS,EACTC,UAAU,EACVC,eAAe,EACfC,SAAS,EACTC,UAAW,CACPC,mBAAmB,EACnBC,qBAAqB,EACrBC,kBAAkB,EAClBC,wBAAwB,EACxBC,uBAAuB,EACvBC,oBAAoB,EACpBC,wBAAwB,GAE5BC,YAAa,CACT,CAACC,EAAAA,EAAYR,oBAAoB,EACjC,CAACQ,EAAAA,EAAYC,UAAU,EACvB,CAACD,EAAAA,EAAYE,UAAU,IAG/B3d,SAAU,CACN4d,YAAY7jB,GACRA,EAAM8iB,UAAW,CACrB,EACAgB,iBAAiB9jB,EAAOgH,GACpBhH,EAAM+iB,cAAgB/b,EAAQjE,QACzB/C,EAAM+iB,gBACP/iB,EAAMgjB,SAAU,EAExB,EACAe,gBAAgB/jB,EAAO4D,GACnB5D,EAAMgjB,QAAUpf,EAAOb,OAC3B,EACAihB,kBAAkBhkB,EAAO4D,GACrB,MAAMqf,EAAYrf,EAAOb,QACzB/C,EAAMijB,UAASxvB,EAAAA,EAAA,GAAQuM,EAAMijB,WAAcA,EAC/C,EACAgB,kBAAkBjkB,EAAO4D,GACrB,MAAMsgB,EAAYtgB,EAAOb,QACzB/C,EAAMyjB,YAAYS,IAAa,EAC/BC,EAAAA,GAAWC,QACP9V,EAAAA,EAAaU,sBACbhP,EAAMyjB,YAEd,EACAY,kBAAkBrkB,EAAO4D,GACrB,MAAM6f,EAAc7f,EAAOb,QAC3B/C,EAAMyjB,YAAcA,EACpBU,EAAAA,GAAWC,QACP9V,EAAAA,EAAaU,sBACbhP,EAAMyjB,YAEd,EACAa,WAAWtkB,EAAO4D,GACd,MAAMif,EAAUjf,EAAOb,QACvB/C,EAAM6iB,QAAUA,CACpB,KAIF7b,EAAU4b,EAAuB5b,QAEvC,GADqCA,EAAtBid,kBACArB,EAA8B,SAKhC2B,EAAOA,IAAMrwB,MAAOC,EAAUyU,KACvC,IAAI4b,EAAM,KACV,IACIA,QAAYC,EAAAA,EAAAA,KAChB,CAAE,MAAOpc,GACL,CAQJ,GANAlU,EACI6S,EAAQ8c,iBACI,OAARU,GAAgBA,EAAIE,aAAeF,EAAIG,cAInC,OAARH,GAAgC,OAAhBA,EAAII,QAAkB,CACtCzwB,EAAS6S,EAAQ+c,gBAAgBS,EAAII,QAAQ5B,UAGxCwB,EAAII,QAAQC,KAAKC,IAAI,wBAChBN,EAAII,QAAQC,KAAK/c,IAAI,CACvB,gCACA,iCACA,kBAGR,MAAMmb,QAAkB8B,EAAAA,EAAAA,MACxB5wB,EAAS6S,EAAQgd,kBAAkBf,GACvC,CACA9uB,EAAS6S,EAAQsd,WAAmB,OAARE,IAAgBQ,EAAAA,EAAAA,IAAcpc,KAG1D,MAAM6a,EAAcU,EAAAA,GAAWc,QAAQ3W,EAAAA,EAAaU,uBAChC,OAAhByU,GACAtvB,EAAS6S,EAAQqd,kBAAkBZ,IAEvCtvB,EAAS6S,EAAQ6c,cAAc,C,8EC9I5B,MAAM9wB,EAAW,CAAEmyB,YAAa,eAW1B7L,GAAU1mB,EAAAA,EAAAA,IAAU,CAC7BC,YAAa,UACbC,UAAWC,EAAAA,EACXC,SAAU7C,OAAOi1B,OAAOpyB,GACxBE,UAAYC,IAAO,CACfkyB,eAAgBlyB,EAAQE,MAA2C,CAC/DO,aAAc,CAACZ,EAASmyB,aACxB9xB,MAAOpC,IAAgB,IAAbq0B,EAAMr0B,EAANq0B,OAEN,MAAQ,GADQ9xB,EAAAA,GAAW,GAAK,+BACGC,IAAAA,UAAa,CAAE6xB,YAAW,QAMlBhM,EAA5CiM,uBAA4CjM,EAApBpmB,UAAoBomB,EAAT9kB,I,+GC+D/C,IAEEgxB,EAAoB,SAApBA,GAAoB,OAApBA,EAAoB,gBAApBA,EAAoB,oBAApBA,CAAoB,EAApBA,GAAoB,IASlB,MAwCMxM,GAAcpmB,EAAAA,EAAAA,IAAU,CACjCC,YAAa,eACbC,UAAW2yB,EAAAA,EACXvyB,UAAYC,IAAO,CACfuyB,oBAAqBvyB,EAAQE,MAG3B,CACEA,MAAOA,IAEK,GADQG,EAAAA,GAAW,GAAK,0DAGpC4U,aAAc,CACVud,qBAAsBA,IAAM,QAGpCC,oBAAqBzyB,EAAQE,MAG3B,CACEA,MAAO2oB,IAOD,IANF6J,EAAmB7J,EAAnB6J,oBACAC,EAAY9J,EAAZ8J,aACAhuB,EAA6BkkB,EAA7BlkB,8BAA6BiuB,EAAA/J,EAC7BgK,2BAAAA,OAA0B,IAAAD,EAAG,EAACA,EAAAE,EAAAjK,EAC9BkK,SAAAA,OAAQ,IAAAD,EAAG,GAAEA,EAAAE,EAAAnK,EACboK,oBAAAA,OAAmB,IAAAD,EAAG,GAAEA,EAExB,MAAM9yB,EAAQI,IAAAA,UAAa,CACvBoyB,sBACAC,eACAhuB,gCACAkuB,6BACAE,WACAE,wBAGJ,MAAQ,GADQ5yB,EAAAA,GAAW,GAAK,sDAC0BH,GAAO,EAErE+U,aAAc,CACVud,qBAAsBA,IAAM,QAGpCU,qBAAsBlzB,EAAQE,MAG5B,CACEA,MAAO6oB,IAA8C,IAA3C2J,EAAmB3J,EAAnB2J,oBAAmBS,EAAApK,EAAEqK,WAAAA,OAAU,IAAAD,EAAG,GAAEA,EAC1C,MAAMjzB,EAAQI,IAAAA,UAAa,CACvBoyB,sBACAU,eAGJ,MAAQ,GADQ/yB,EAAAA,GAAW,GAAK,6DACiCH,GAAO,EAE5E+U,aAAc,CACVud,qBAAsBA,IAAM,QAGpCa,SAAUrzB,EAAQE,MAA+C,CAC7DA,MAAOgpB,IAA0B,IAAvB/iB,EAAgB+iB,EAAhB/iB,iBAEN,MAAQ,GADQ9F,EAAAA,GAAW,GAAK,gEACoC8F,GAAkB,EAE1F8O,aAAc,CACVud,qBAAsBA,IAAM,QAGpCc,iBAAkBtzB,EAAQE,MAGxB,CACEA,MAAOA,IAEK,GADQG,EAAAA,GAAW,GAAK,uDAGpC4U,aAAc,CACVud,qBAAsBA,IAAM,QAGpCe,oBAAqBvzB,EAAQE,MAG3B,CACEA,MAAOopB,IAA0B,IAAvBnjB,EAAgBmjB,EAAhBnjB,iBAEN,MAAQ,GADQ9F,EAAAA,GAAW,GAAK,4EACgD8F,GAAkB,EAEtG8O,aAAc,CACVud,qBAAsBA,IAAM,MAEhCgB,kBAAoBC,GACTA,EAAS5E,UAAY,KAGpC5uB,iBAAkBD,EAAQE,MAA4C,CAClEA,MAAOA,IAEK,GADQG,EAAAA,GAAW,GAAK,uCAGpC4U,aAAc,CACVud,qBAAsBA,IAAM,MAEhCgB,kBAAmBA,CAACC,EAAUC,EAAOC,IAC1BA,IAAQtB,EAAqBuB,SAC9BH,GACAI,EAAAA,EAAAA,GAA4CJ,KAG1DK,mBAAoB9zB,EAAQE,MAG1B,CACEA,MAAOupB,IAO2B,IAN9BsK,EAAItK,EAAJsK,KACArB,EAAmBjJ,EAAnBiJ,oBACAC,EAAYlJ,EAAZkJ,aACAhuB,EAA6B8kB,EAA7B9kB,8BACAqvB,EAAUvK,EAAVuK,WACAC,EAAUxK,EAAVwK,WAEA,MAAM/zB,EAAQI,IAAAA,UAAa,CACvByzB,OACAE,aACAvB,sBACAC,eACAhuB,gCACAqvB,eAGJ,MAAQ,GADQ3zB,EAAAA,GAAW,GAAK,6CACiBH,GAAO,EAE5D+U,aAAc,CACVud,qBACIiB,GACCA,EAASha,SAGtBya,2BAA4Bl0B,EAAQE,MAGlC,CACEA,MAAQqX,IAGG,CACH1W,IAAM,GAHMR,EAAAA,GAAW,GAAK,gDAI5BS,OAAQ,OACRC,KAAMwW,IAGdtC,aAAc,CACVud,qBACIiB,GACCA,EAASha,SAItB0a,kBAAmBn0B,EAAQE,MAGzB,CACEA,MAAQqX,IACG,CACH1W,IAAK,yCACLC,OAAQ,OACRC,KAAMwW,IAGdtC,aAAc,CACVud,qBAAuBiB,GACnBA,EAASha,SAGrB2a,sBAAuBp0B,EAAQY,SAG7B,CACEV,MAAQqX,IACG,CACH1W,IAAK,+CACLC,OAAQ,OACRC,KAAMwW,IAGdtC,aAAc,CAEVud,qBAAsBA,IAAM,MAEhCgB,kBAAmBA,CACfC,EACAY,EACAV,KACC,IAAAW,EAAAC,EAID,OAHAC,EAAAA,EAAAA,IAAiBb,EAAI7xB,GAAI,CACrB2yB,WAA6B,QAAnBH,EAAEb,EAASA,gBAAQ,IAAAa,GAAQ,QAARC,EAAjBD,EAAmBhe,cAAM,IAAAie,OAAR,EAAjBA,EAA2BG,eAEpCjB,CAAQ,IAGvBkB,cAAe30B,EAAQE,MAGrB,CACEA,MAAQC,GAII,GAHQE,EAAAA,GAAW,GAAK,iDAElBC,IAAAA,UAAaH,KAG/B8U,aAAc,CACVud,qBAAuBiB,GACnBA,EAASha,SAGrBmb,aAAc50B,EAAQE,MAAiD,CACnEA,MAAQC,IACG,CACHU,IAAK,0DACLC,OAAQ,OACRC,KAAMZ,IAGd8U,aAAc,CACVud,qBAAuBiB,GACnBA,EAASha,aAwBzBoM,EAdAgP,4BAcAhP,EAbAiP,iBAaAjP,EAZAkP,6BAYAlP,EAXAmP,yBAWAnP,EAVAoP,mCAUApP,EATAqP,0BASArP,EARApjB,yBAQAojB,EAPAsP,iCAOAtP,EANAuP,2BAMAvP,EALAwP,4BAKAxP,EAJAyP,4BAIAzP,EAHA0P,sBAGA1P,EAFA2P,qBAEA3P,EADA9lB,UAG+B8lB,EAAYxkB,KAAhCC,e,gEC7Yf,MAAMm0B,EAAiB,IAAIjI,EAAAA,EAAepS,EAAAA,EAAaM,gBAE1Cga,EAAkB5zB,GAAO2zB,EAAetS,IAAIrhB,GAE5C0yB,EAAmBA,CAAC1yB,EAAIyN,IAASkmB,EAAe7gB,IAAI9S,EAAIyN,E,2kCC0B9D,MAAM0G,E,MAAYyQ,EAAOqF,gBAAgB,CAC5ChsB,UAAYC,IAAO,CACf21B,qBAAsB31B,EAAQE,MAG5B,CACEA,MAAOA,KACI,CACHW,IAAK,yCACLC,OAAQ,UAIpB80B,iBAAkB51B,EAAQE,MAGxB,CACEA,MAAQC,GACH,wCAAuCG,IAAAA,UAAaH,OAE7D01B,wBAAyB71B,EAAQY,SAG/B,CACEV,MAAQC,IACG,CACHU,IAAK,kDACLC,OAAQ,OACRC,KAAMZ,MAIlB21B,sBAAuB91B,EAAQY,SAG7B,CACEV,MAAQC,IACG,CACHU,IAAK,gDACLC,OAAQ,OACRC,KAAMZ,MAIlB41B,sBAAuB/1B,EAAQE,MAG7B,CACEA,MAAOA,IAAM,2CAEjB81B,sBAAuBh2B,EAAQY,SAG7B,CACEV,MAAQC,IACG,CACHU,IAAK,2CACLC,OAAQ,MACRC,KAAMZ,MAIlB81B,0BAA2Bj2B,EAAQE,MAGjC,CACEA,MAAOA,IAAM,wCAEjBg2B,0BAA2Bl2B,EAAQY,SAGjC,CACEV,MAAQC,IACG,CACHU,IAAK,sCACLC,OAAQ,MACRC,KAAMZ,IAGdg2B,eAAeC,EAAOt4B,IAClBmD,EAD8BnD,EAARmD,UAElBgV,EAAU5U,KAAKC,gBACX,oDACA4N,GACC3N,IACGvE,OAAOC,OAAOsE,EAAO,CACjB80B,gBAAe91B,EAAAA,EAAA,GACRgB,EAAM80B,iBAAe,IACxB1G,QAASyG,EAAQzG,WAEvB,IAIlB,EACA3tB,gBAAiB,CAAC,+CAEtBs0B,qCAAsCt2B,EAAQE,MAG5C,CACEA,MAAOA,IACH,6DAERq2B,6CAA8Cv2B,EAAQE,MAGpD,CACEA,MAAOA,IACH,+DACJO,aAAc,CAAC,+CAEnB+1B,wBAAyBx2B,EAAQY,SAG/B,CACEV,MAAQC,IACG,CACHU,IAAK,2CACLC,OAAQ,MACRC,KAAMZ,IAGdg2B,eAAeC,EAAOl0B,IAClBjB,EAD8BiB,EAARjB,UAElBgV,EAAU5U,KAAKC,gBACX,oDACA4N,GACC3N,IACGvE,OAAOC,OAAOsE,EAAO,CACjBk1B,UAASl2B,EAAAA,EAAA,GACFgB,EAAMk1B,WAAS,IAClBC,eACIN,EAAQO,cACRC,EAAAA,GAA2BC,OAErC,IAIlB,EACA70B,gBAAiB,CAAC,+CAEtB80B,oCAAqC92B,EAAQE,MAG3C,CACEA,MAAOA,IAAM,+BAEjB62B,8CAA+C/2B,EAAQE,MAGrD,CACEA,MAAOA,IAAM,0CAEjB82B,iCAAkCh3B,EAAQY,SAGxC,CACEV,MAAQC,IACG,CACHU,IAAK,yBACLC,OAAQ,MACRC,KAAMZ,MAIlB82B,0BAA2Bj3B,EAAQY,SAGjC,CACEV,MAAQC,IACG,CACHU,IAAK,oCACLC,OAAQ,MACRC,KAAMZ,MAIlB+2B,qBAAsBl3B,EAAQE,MAG5B,CACEA,MAAOA,IAAM,2CAEjBi3B,mBAAoBn3B,EAAQY,SAG1B,CACEV,MAAQC,IACG,CACHU,IAAK,gCACLC,OAAQ,MACRC,KAAMZ,MAIlB+V,0BAA2BlW,EAAQE,MAGjC,CACEA,MAAOA,IAAM,6DAwBrB+V,EAlBAmhB,6BAkBAnhB,EAjBAohB,yBAiBAphB,EAhBAqhB,mCAgBArhB,EAfAshB,iCAeAthB,EAdAuhB,8BAcAvhB,EAbAwhB,iCAaAxhB,EAZAyhB,kCAYAzhB,EAXA0hB,qCAWA1hB,EAVA2hB,6CAUA3hB,EATA4hB,qDASA5hB,EARA6hB,mCAQA7hB,EAPA8hB,qCAOA9hB,EANA+hB,6BAMA/hB,EALAgiB,8BAKAhiB,EAJAiiB,4CAIAjiB,EAHAkiB,sDAGAliB,EAFAmiB,4CAEAniB,EADAoiB,iC,sDC7PG,MAAM7R,GAAoB/mB,EAAAA,EAAAA,IAAU,CACvCC,YAAa,oBACbC,UAAWC,EAAAA,EACXG,UAAYC,IAAO,CACfs4B,kBAAmBt4B,EAAQE,MAA0C,CACjEA,MAAOA,IAAM,2CAK0BsmB,EAApC+R,0BAAoC/R,EAATnlB,I,8FCRnC,IAAKm3B,EAAM,SAANA,GAAM,OAANA,EAAM,sBAANA,EAAM,kBAANA,CAAM,MAeX,MAAMxS,GAAoBvmB,EAAAA,EAAAA,IAAU,CACvCC,YAAa,oBACbC,WAAW84B,EAAAA,EAAAA,GAAoB,CAAEC,OAAQvzB,EAAAA,KACzCpF,UAAYC,IAAO,CACf24B,WAAY34B,EAAQY,SAGlB,CACEV,MAAQqX,IAIG,CACH1W,IAAK,wBACLC,OAAQ,OACRC,MANY63B,EAAAA,EAAAA,IAAerhB,EAAY,CACvCshB,gBAAgB,IAMhBlkB,QAAS,CACL,eAAgB,uCAI5B3T,uBACI83B,EAAAA,GACIA,EAAAA,GACA,oBAER,QAK6B9S,EAA1B+S,qB,0DCkxBR,IAoxCKnC,EAA0B,SAA1BA,GAA0B,OAA1BA,EAA0B,UAA1BA,EAA0B,gBAA1BA,EAA0B,YAA1BA,CAA0B,MAihD1BoC,EAAqB,SAArBA,GAAqB,OAArBA,EAAqB,kBAArBA,EAAqB,YAArBA,CAAqB,K,ihDCrlH1B,IAAK35B,EAAI,SAAJA,GAAI,OAAJA,EAAI,sBAAJA,CAAI,MAST,MAwCMknB,GAAc9mB,EAAAA,EAAAA,IAAU,CACjCC,YAAa,cACbC,UAAW2yB,EAAAA,EACXzyB,SAAU7C,OAAO8C,KAAKT,GACtBU,UAAYC,IAAO,CACfi5B,YAAaj5B,EAAQE,MAA4C,CAC7DA,MAAQC,IACJ,MAAM+4B,EAAc54B,IAAAA,UAAaH,GAEjC,MAAQ,GADQE,EAAAA,GAAW,GAAK,sCACU64B,GAAa,EAE3Dz4B,aAAc,CAACpB,EAAK85B,WACpBlkB,aAAc,CACVud,qBAAuBiB,GACnBA,EAASha,MAAMvT,KAAKwC,IAAC,CACjBwQ,OAAQxQ,EAAEwQ,OACVkgB,YAAY,SAI5BC,oBAAqBr5B,EAAQY,SAG3B,CACEoB,gBAAiB,CAAC3C,EAAK85B,WACvBj5B,MAAQC,IAEG,CACHU,IAAM,GAFMR,EAAAA,GAAW,GAAK,gCAG5BS,OAAQ,SACRC,KAAMZ,IAGdg2B,eAAgBn1B,MAAOb,EAAM0oB,KAAmB,IAAf5nB,EAAQ4nB,EAAR5nB,SACzBd,EAAOurB,SAAWvrB,EAAOurB,QAAQpuB,OAAS,IAC1C0O,EAAAA,EAAWC,YACP,YACA,eACA,UAEJhL,GAAS0qB,EAAAA,EAAAA,IAAoBxrB,EAAOurB,UACxC,IAGR4N,mBAAoBt5B,EAAQE,MAG1B,CACEA,MAAQC,IACJ,MAAM+4B,EAAc54B,IAAAA,UAAaH,GAEjC,MAAQ,GADQE,EAAAA,GAAW,GAAK,sCACU64B,GAAa,EAE3D1F,kBAAmBA,CAACC,EAA+B8F,EAAGnD,KAAY,IAAAoD,EAC9D,OAAAj5B,EAAAA,EAAA,GAAYkzB,GAAQ,IAAEgG,KAAkB,QAAdD,EAAEpD,EAAQqD,YAAI,IAAAD,EAAAA,EAAI,GAAC,EAEjD/4B,aAAc,CAACpB,EAAK85B,WACpBO,mBAAoB3Q,IAId,IAAA4Q,EAAA5Q,EAHF6Q,UAAsBC,GAALF,EAAJF,KAAuBx7B,EAAA07B,EAAAz7B,IACpC47B,EAAkB/Q,EAAlB+Q,mBACAC,EAAYhR,EAAZgR,aAGA,OAAOC,EAAAA,EAAAA,IAA0B,CAC7BD,eACAH,UAAWC,EACXC,sBACF,EAENG,aAAY/Q,GAA8B,IAA3BgR,EAAUhR,EAAVgR,WAAYC,EAAWjR,EAAXiR,YACvB,OAAOD,aAAU,EAAVA,EAAYT,SAASU,aAAW,EAAXA,EAAaV,KAC7C,EACAW,MAAOA,CAACC,EAAkB5G,KAAa,IAAA6G,EAAAC,EACnC,OAAAh6B,EAAAA,EAAA,GACO85B,GAAgB,IACnB5gB,MAAO,IACuB,QAA1B6gB,EAAID,EAAiB5gB,aAAK,IAAA6gB,EAAAA,EAAI,MACZ,QAAlBC,EAAI9G,EAASha,aAAK,IAAA8gB,EAAAA,EAAI,IAE1BC,WAAY/G,EAAS+G,WACrBf,KAAMhG,EAASgG,MAAI,EAG3BxkB,aAAc,CACVud,qBAAuBiB,GACnBA,EAASha,MAAMvT,KAAKwC,IAAC,CACjBwQ,OAAQxQ,EAAEwQ,OACVkgB,YAAY,aAahC7S,EALAkU,oBAKAlU,EAJAmU,2BAIAnU,EAHAoU,+BAGApU,EAFAxmB,UAEAwmB,EADAllB,I,6DCrKG,IAAKhC,EAAI,SAAJA,GAAI,OAAJA,EAAI,gDAAJA,CAAI,MAGT,MAAMonB,GAA8BhnB,EAAAA,EAAAA,IAAU,CACjDC,YAAa,8BACbC,UAAWC,EAAAA,EACXC,SAAU7C,OAAO8C,KAAKT,GACtBU,UAAYC,IAAO,CACf46B,iCAAkC56B,EAAQE,MAGxC,CACEO,aAAc,CAACpB,EAAKw7B,wBACpB36B,MAAOA,IAEK,GADQG,EAAAA,GAAW,GAAK,uDAQ5ComB,EADWqU,yCACXrU,EADqD1mB,UACrD0mB,EADgEplB,I,mHCZ7D,MAAMsK,EAA6BmB,KACrChI,EAAAA,EAAAA,IAAiBgI,KAAUmgB,EAAAA,EAAAA,IAAsBngB,GACzC1C,EAAuC0C,GAChDA,EAAMiuB,eAAeC,8BAGZ9wB,EAAyB4C,GAClCA,EAAMiuB,eAAe/wB,gBACZM,EAA6CwC,GACtDA,EAAMiuB,eAAe1wB,oCACZG,EAA6CsC,GACtDA,EAAMiuB,eAAeE,oCACZC,EAAuCpuB,IAAgB,IAAAquB,EAAA,OAC5B,QAD4BA,EAChEruB,EAAMiuB,eAAe/wB,uBAAe,IAAAmxB,OAAA,EAApCA,EAAsCv0B,eAAe,EAoB5CiF,EAAsCiB,MAC9ChI,EAAAA,EAAAA,IAAiBgI,IACjBA,EAAMiuB,eAAeK,uBACrBtuB,EAAMiuB,eAAeM,4BAfEvuB,KAAqB,IAAAwuB,EAAAC,EAAAC,EAC7C,MAAMC,GAAc7O,EAAAA,EAAAA,IAAkB9f,GACtC,IAAK2uB,EACD,OAAO,EAEX,MAAMC,EAAUD,SAAoB,QAATH,EAAXG,EAAanO,eAAO,IAAAgO,OAAT,EAAXA,EAAsBjzB,cAItC,OAHqB1J,EAAAA,EAAAA,IAA2B+8B,OAEd,QAA9BH,GAAAt1B,EAAAA,EAAAA,IAAwB6G,UAAM,IAAAyuB,GAAkB,QAAlBC,EAA9BD,EAAgCp1B,wBAAgB,IAAAq1B,OAAlB,EAA9BA,EAAkDnzB,gBAAiB,KACvC,EAO/BszB,CAAmB7uB,G,wCCzCjB,MAMD6F,GAAQC,E,KAAAA,aAAY,CACtBrK,KAAM,SACNsK,aARqC,CACrC+oB,8BAA8B,EAC9BC,yBAAyB,EACzBnd,gBAAiB,IAMjB3L,SAAU,CACN+oB,gCAAiCA,CAAChvB,EAAKhP,KAAkB,IAAd+R,EAAO/R,EAAP+R,QACvC/C,EAAM8uB,6BAA+B/rB,CAAO,EAEhDksB,2BAA4BA,CAACjvB,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QAClC/C,EAAM+uB,wBAA0BhsB,CAAO,EAE3CmsB,kBAAmBA,CAAClvB,EAAK+b,KAAyC,IAArChZ,EAAOgZ,EAAPhZ,QACpB/C,EAAM4R,gBAAgB5f,SAAS+Q,KAChC/C,EAAM4R,gBAAkB,IAAI5R,EAAM4R,gBAAiB7O,GACvD,KAKLgE,EAIHlB,EAAMmB,QAEGb,GALsBY,EAA/BioB,gCAC0BjoB,EAA1BkoB,2BACiBloB,EAAjBmoB,kBAGmBrpB,EAAMM,Q,+nCCf7B,MA8DMgpB,EAAsBA,IAAMj7B,MAAOC,EAAUyU,KAC/C,MAAAwmB,EAGIxmB,IAFe8U,EAAe0R,EAA9BnvB,YAAeyd,gBACLmC,EAAUuP,EAApBxP,OAAUC,WAEd,GAAInC,GAAmBA,EAAgB,qBAAuBmC,EAC1D,IAAI,IAAAwP,EACA,IAAIC,EAAiBC,EAAAA,GAAMC,KAAKC,EAAAA,GAAWC,iBAC3C,GAAmB,QAAfL,EAACC,SAAc,IAAAD,IAAdA,EAAgBM,SAAU,KAAAC,EAC3B,MAAMC,QAAwBC,EAAAA,EAAAA,MAC1BD,SAAqB,QAAND,EAAfC,EAAiBptB,YAAI,IAAAmtB,GAArBA,EAAuBjjB,QACvB2iB,EAAiB,CACbK,SAAUE,EAAgBptB,KAAKkK,MAAMojB,QACjC,CAACC,EAAKrZ,IAAOljB,EAAAA,EAAA,GACNu8B,GAAG,IACN,CAACrZ,EAAQ1e,OAAO,KAEpB,CAAC,GAELg4B,kBAAmBJ,EAAgBptB,KAAKkK,MAAM/X,QACzC+hB,GACGA,EAAQuZ,WACRhE,EAAAA,GAAsBiE,UAC5B3/B,QAEN++B,EAAAA,GAAMa,MAAMX,EAAAA,GAAWC,gBAAiBJ,GAEhD,CACAn7B,GAASk8B,EAAAA,EAAAA,IAAkBf,GAC/B,CAAE,MAAOjnB,GAGL,OADAknB,EAAAA,GAAMe,OAAOb,EAAAA,GAAWC,iBAChBrnB,EAAMsO,SACV,KAAK4Z,EAAAA,GAAWC,iBACNr8B,EAASs8B,KACf55B,OAAOC,SAAW,gBAClB,MACJ,KAAKy5B,EAAAA,GAAWG,UAChB,KAAKH,EAAAA,GAAWI,UAChB,KAAKJ,EAAAA,GAAWK,QAChB,KAAKL,EAAAA,GAAWM,QACZ,MACJ,SACIC,EAAAA,EAAAA,GAAOzoB,GAGnB,CACJ,EAGE0oB,EAAoBA,IAAM78B,MAAOC,EAAUyU,KAI7C,GADIA,IADAgX,OAAUC,WAId,IAAI,IAAAmR,EACA,IAAIC,EAAe1B,EAAAA,GAAMC,KAAKC,EAAAA,GAAWyB,eACzC,GAAiB,QAAbF,EAACC,SAAY,IAAAD,IAAZA,EAAcG,OAAQ,KAAAC,EACvB,MAAMC,QAAsBC,EAAAA,EAAAA,MAC5B,GAAID,SAAmB,QAAND,EAAbC,EAAe5uB,YAAI,IAAA2uB,GAAnBA,EAAqBD,OAAQ,CAC7B,MAAMI,EAAWF,EAAc5uB,KAAK0uB,OAAOpB,QACvC,CAACC,EAAKwB,IAAK/9B,EAAAA,EAAA,GAAWu8B,GAAG,IAAE,CAACwB,EAAMv5B,MAAOu5B,EAAMjQ,SAC/C,CAAC,GAEL0P,EAAe,CACXE,OAAQI,EACRtB,kBAAmBsB,EAASE,gBAAkB,EAAI,GAEtDlC,EAAAA,GAAMa,MAAMX,EAAAA,GAAWyB,cAAeD,EAC1C,CACJ,CACA98B,GAASu9B,EAAAA,EAAAA,IAAgBT,GAC7B,CAAE,MAAO5oB,GAELknB,EAAAA,GAAMe,OAAOb,EAAAA,GAAWyB,eACpB7oB,EAAMsO,UAAY4Z,EAAAA,GAAWC,mBACvBr8B,EAASs8B,KACf55B,OAAOC,SAAW,gBAE1B,GAaE25B,EAAeA,IAAMv8B,UACvBq7B,EAAAA,GAAMe,OAAOb,EAAAA,GAAWkC,kBACxBpC,EAAAA,GAAMe,OAAOb,EAAAA,GAAWC,iBACxBH,EAAAA,GAAMe,OAAOb,EAAAA,GAAWyB,eAOxBU,UAAUC,eAAe,0BAEzB19B,GAAS29B,EAAAA,EAAAA,MAAS,EAGtB,GACIC,OA3KYhvB,GAAY,CAAC5O,EAAU69B,KAG/BA,IADA/xB,YAAeyd,gBAGE,mBAGjBvpB,GAAS89B,EAAAA,EAAAA,IAAgBlvB,aAAO,EAAPA,EAASmvB,cAClC/9B,GAASg+B,EAAAA,EAAAA,QAHTt7B,OAAOC,SAASX,KAAQ,UAAQi8B,EAAAA,EAAAA,GAAarvB,aAAO,EAAPA,EAASmvB,cAI1D,EAkKAG,iCAxJAA,CAACnO,EAAWoO,EAAS35B,EAAO45B,EAAatP,IACzC/uB,MAAOC,EAAUyU,KACb,MAAQ4pB,EAAsB5pB,IAAtB4pB,kBACHA,EAAkB3P,UAG0B,IAA7C2P,EAAkB/O,YAAYS,IAGlC/vB,GACIs+B,EAAAA,EAAAA,IAA2B,CACvBvO,YACAoO,UACA35B,QACA45B,cACAtP,cAEP,EAwILyP,iBArIsBl2B,GAAWrI,IACjC,MAAMw+B,EAAgBC,EAAAA,GAA6B,YAC7CC,EAAUF,EAAcniC,OAC9B,IACI6V,EAAAA,QAAWM,aAAagsB,EAAcjiC,IAAK8L,EAAOq2B,EACtD,CAAE,MAAOz6B,IACL04B,EAAAA,EAAAA,GAAO14B,EACX,CACAjE,GAAS2+B,EAAAA,EAAAA,IAAWt2B,GAAO,EA8H3Bu2B,iBA3HsBv2B,GAAWrI,IACjC,MAAMw+B,EAAgBC,EAAAA,GAA6B,YAC7CC,EAAUF,EAAcniC,OAC9B,IACI6V,EAAAA,QAAWM,aAAagsB,EAAcjiC,IAAK8L,EAAOq2B,EACtD,CAAE,MAAOz6B,IACL04B,EAAAA,EAAAA,GAAO14B,EACX,CACAjE,GAAS6+B,EAAAA,EAAAA,IAAWx2B,GAAO,EAoH3B2yB,sBACA4B,oBACAkC,qBAhCyBA,IAAO9+B,IAChCo7B,EAAAA,GAAMe,OAAOb,EAAAA,GAAWC,iBACxBv7B,EAASg7B,IAAsB,EA+B/B+D,mBA5BuBA,IAAO/+B,IAC9Bo7B,EAAAA,GAAMe,OAAOb,EAAAA,GAAWyB,eACxB/8B,EAAS48B,IAAoB,EA2B7BN,e,srCCvMJ,MAAM0C,GAAUrtB,EAAAA,EAAAA,aAAY,CACxBrK,KAAM,KACNsK,aAAc,CACV+sB,WAAY5rB,EAAAA,GAAYC,MAE5BlB,SAAU,CACN6R,WAAYA,CAACoD,EAAMlqB,IACfyC,EAAA,GAD0BzC,EAAP+R,SAKvBqwB,mBAAoBA,CAACpzB,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QAC1B/C,EAAMqzB,iBAAmBtwB,CAAO,EAGpCuwB,eAAgBA,CAACtzB,EAAK+b,KAAkB,IAAdhZ,EAAOgZ,EAAPhZ,QACtB,MACIwwB,EAMAxwB,EANAwwB,SACAC,EAKAzwB,EALAywB,QACA76B,EAIAoK,EAJApK,MACA86B,EAGA1wB,EAHA0wB,SACAC,EAEA3wB,EAFA2wB,WACAC,EACA5wB,EADA4wB,WAEJ3zB,EAAM4zB,WAAUngC,EAAAA,EAAA,GACTuM,EAAM4zB,YAAU,IACnBC,KAAMvjB,EAAAA,GAAYwjB,KAClBP,WACAC,UACA76B,QACA86B,WACAC,aACAC,cACH,EAELI,gBAAkB/zB,IACdA,EAAM4zB,WAAWC,KAAOvjB,EAAAA,GAAY0jB,MAAM,EAE9CC,oBAAqBA,CAACj0B,EAAKic,KAAkB,IAAdlZ,EAAOkZ,EAAPlZ,QAC3B/C,EAAMk0B,gBAAkB,CACpBL,KAAMvjB,EAAAA,GAAYwjB,KAClBn7B,MAAOoK,EAAQpK,MACfw7B,SAAUpxB,EAAQoxB,SAClBC,YAAarxB,EAAQqxB,YACrBC,eAAgBtxB,EAAQsxB,eACxBjoB,OAAQrJ,EAAQqJ,OAChBkoB,UAAWvxB,EAAQuxB,UACnBC,aAAcxxB,EAAQwxB,aACtBC,gBAAiBzxB,EAAQyxB,gBACzBC,aAAc1xB,EAAQ0xB,aACzB,EAELC,qBAAuB10B,IACnBA,EAAMk0B,gBAAgBL,KAAOvjB,EAAAA,GAAY0jB,MAAM,EAEnDvB,2BAA4BA,CAACzyB,EAAKoc,KAAkB,IAAdrZ,EAAOqZ,EAAPrZ,QAClC,MAAQmhB,EACJnhB,EADImhB,UAAWoO,EACfvvB,EADeuvB,QAAS35B,EACxBoK,EADwBpK,MAAO45B,EAC/BxvB,EAD+BwvB,YAAatP,EAC5ClgB,EAD4CkgB,UAEhDjjB,EAAM20B,uBAAsBlhC,EAAAA,EAAA,GACrBuM,EAAM20B,wBAAsB,IAC/Bd,KAAMvjB,EAAAA,GAAYwjB,KAClB5P,YACAoO,UACA35B,QACA45B,cACAtP,aACH,EAEL2R,4BAA8B50B,IAC1BA,EAAM20B,uBAAuBd,KAAOvjB,EAAAA,GAAY0jB,MAAM,EAE1Da,UAAWA,CAAC70B,EAAKwc,KAAkB,IAAdzZ,EAAOyZ,EAAPzZ,QACjB,MAAQ+xB,EAAkB/xB,EAAlB+xB,QAASryB,EAASM,EAATN,KACjBzC,EAAM+0B,OAAS,CACXC,aAAcF,EACdG,iBAAkBxyB,EACrB,EAEL0vB,WAAanyB,IACTA,EAAM+0B,OAAS,CACXC,aAAc,KACdC,iBAAkB,KACrB,EAELnC,WAAYA,CAAC9yB,EAAK2c,KAAkB,IAAd5Z,EAAO4Z,EAAP5Z,QAClB/C,EAAM8yB,WAAa/vB,CAAO,EAE9BiwB,WAAYA,CAAChzB,EAAK6c,KAAkB,IAAd9Z,EAAO8Z,EAAP9Z,QAClB/C,EAAMgzB,WAAajwB,CAAO,EAE9BstB,kBAAmBA,CAACrwB,EAAKid,KAAkB,IAAdla,EAAOka,EAAPla,QACzB/C,EAAMsvB,eAAiBvsB,EAAQ4sB,SAC/B3vB,EAAMmxB,OAAO+D,yBAA2BnyB,EAAQktB,iBAAiB,EAErEyB,gBAAiBA,CAAC1xB,EAAKmd,KAAkB,IAAdpa,EAAOoa,EAAPpa,QACvB/C,EAAMixB,aAAeluB,EAAQouB,OAC7BnxB,EAAMmxB,OAAOgE,uBAAyBpyB,EAAQktB,iBAAiB,EAEnEgC,gBAAiBA,CAACjyB,EAAKsd,KAAkB,IAAdva,EAAOua,EAAPva,QACvB/C,EAAMo1B,YAAc,CAChBvB,KAAMvjB,EAAAA,GAAYwjB,KAClB5B,YAAanvB,IAAW,EAC3B,EAELsyB,iBAAmBr1B,IACfA,EAAMo1B,YAAYvB,KAAOvjB,EAAAA,GAAY0jB,MAAM,EAE/CsB,yBAA2Bt1B,IACvBA,EAAMu1B,qBAAqB1B,KAAOvjB,EAAAA,GAAYwjB,IAAI,EAEtD0B,0BAA4Bx1B,IACxBA,EAAMu1B,qBAAqB1B,KAAOvjB,EAAAA,GAAY0jB,MAAM,EAExDyB,eAAiBz1B,IACbA,EAAM01B,gBAAiB,CAAI,EAE/BC,gBAAkB31B,IACdA,EAAM01B,gBAAiB,CAAK,EAEhC5D,OAAS9xB,IACLA,EAAMmxB,QAASyE,EAAAA,EAAAA,KAAkB,EAErCC,iBAAkBA,CAAC71B,EAAK81B,KAAkB,IAAd/yB,EAAO+yB,EAAP/yB,QACxB/C,EAAM+1B,aAAe,CACjBlC,KAAMvjB,EAAAA,GAAYwjB,KAClBj/B,KAAMkO,EACT,EAELizB,kBAAoBh2B,IAChBA,EAAM+1B,aAAe,CACjBlC,KAAMvjB,EAAAA,GAAY0jB,OAClBn/B,KAAM,CAAC,EACV,EAELohC,eAAgBA,CAACj2B,EAAKk2B,KAAkB,IAAdnzB,EAAOmzB,EAAPnzB,QACtB/C,EAAMm2B,WAAa,CACf3pB,QAAQ,EACR4pB,SAAUrzB,EACb,EAELszB,gBAAkBr2B,IACdA,EAAMm2B,WAAa,CACf3pB,QAAQ,EACR4pB,SAAU,KACb,EAELE,gBAAiBA,CAACt2B,EAAKu2B,KAAkB,IAAdxzB,EAAOwzB,EAAPxzB,QACvB/C,EAAMw2B,YAAc,CAChBhqB,QAAQ,EACR4pB,SAAUrzB,EACb,EAEL0zB,iBAAmBz2B,IACfA,EAAMw2B,YAAc,CAChBhqB,QAAQ,EACR4pB,SAAU,KACb,EAELM,sBAAwB12B,IACpBA,EAAM22B,kBAAkBnqB,QAAS,CAAI,EAEzCoqB,uBAAyB52B,IACrBA,EAAM22B,kBAAkBnqB,QAAS,CAAK,EAE1CqqB,2BAA6B72B,IACzBA,EAAM82B,uBAAuBtqB,QAAS,CAAI,EAE9CuqB,4BAA8B/2B,IAC1BA,EAAM82B,uBAAuBtqB,QAAS,CAAK,EAE/CwqB,4BAA6BA,CAACh3B,EAAKi3B,KAAkB,IAAdl0B,EAAOk0B,EAAPl0B,QACnC/C,EAAMk3B,sBAAwBn0B,CAAO,EAEzCo0B,qBAAsBA,CAClBn3B,EAAKo3B,KAEJ,IAAAC,EAAAD,EADCr0B,QAAAA,OAAO,IAAAs0B,GAAOA,EAEhBr3B,EAAMm3B,qBAAuBp0B,CAAO,EAExCu0B,oBAAsBt3B,IAClBA,EAAMu3B,gBAAgB/qB,QAAS,CAAI,EAEvCgrB,qBAAuBx3B,IACnBA,EAAMu3B,gBAAgB/qB,QAAS,CAAK,EAExCirB,kBAAoBz3B,IAChBA,EAAM03B,cAAclrB,QAAS,CAAI,EAErCmrB,mBAAqB33B,IACjBA,EAAM03B,cAAclrB,QAAS,CAAK,KAKvCorB,EAsCHzE,EAAQnsB,QArCR8Q,EAAU8f,EAAV9f,WAIAmc,GAHkB2D,EAAlBxE,mBACcwE,EAAdtE,eACesE,EAAf7D,gBACmB6D,EAAnB3D,qBAEAxB,GADoBmF,EAApBlD,qBAC0BkD,EAA1BnF,4BAEAK,GAD2B8E,EAA3BhD,4BACUgD,EAAV9E,YACAzC,EAAiBuH,EAAjBvH,kBACAqB,EAAekG,EAAflG,gBACAO,EAAe2F,EAAf3F,gBAQAe,GAPgB4E,EAAhBvC,iBACwBuC,EAAxBtC,yBACyBsC,EAAzBpC,0BACcoC,EAAdnC,eACemC,EAAfjC,gBACgBiC,EAAhB/B,iBACiB+B,EAAjB5B,kBACU4B,EAAV5E,YACAlB,EAAM8F,EAAN9F,OACA+C,EAAS+C,EAAT/C,UACA1C,EAAUyF,EAAVzF,WACA8D,EAAc2B,EAAd3B,eAgBS9vB,GAfMyxB,EAAfvB,gBACeuB,EAAftB,gBACgBsB,EAAhBnB,iBACqBmB,EAArBlB,sBACsBkB,EAAtBhB,uBAC0BgB,EAA1Bf,2BAC2Be,EAA3Bb,4BAC2Ba,EAA3BZ,4BACoBY,EAApBT,qBACmBS,EAAnBN,oBACoBM,EAApBJ,qBACiBI,EAAjBH,kBACkBG,EAAlBD,mBAGmBxE,EAAQhtB,Q,uDC3O/B,MAAM0xB,GAAY/xB,EAAAA,EAAAA,aAAY,CAC1BrK,KAAM,OACNsK,cAAc+Y,EAAAA,EAAAA,KACd7Y,SAAU,CACN6xB,YAAaA,CAAC93B,EAAKhP,KAAkB,IAAd+R,EAAO/R,EAAP+R,QACnB/C,EAAM4X,WAAa7U,CAAO,EAE9Bg1B,YAAaA,CAAC/3B,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QACnB/C,EAAM4X,YAAa,EACnB5X,EAAMg4B,kBAAoBj1B,EAAQi1B,kBAClCh4B,EAAMi4B,OAAS,CAAC,CAAC,EAErBC,SAAUA,CAACl4B,EAAK+b,KAAkB,IAAdhZ,EAAOgZ,EAAPhZ,QAChB/C,EAAMi4B,OAAOl1B,EAAQ/N,IAAM+N,EAAQ4T,OAAO,KAK/CwhB,EAA+CN,EAAU7wB,QAEhE,GAF0BmxB,EAAXL,YAAwBK,EAAXJ,YAAqBI,EAARD,SAE1BL,EAAiB,Q,kCCxBzB,MA4BMO,EACK,cAKlB,OACW,CACHC,YAAa,KACbC,gBAAiB,CACbC,UAAU,EACV3gB,YAAY,GAEhB2gB,UAAU,EACV3gB,YAAY,EACZ4gB,QAAS,CACLD,UAAU,EACV3gB,YAAY,EACZ6gB,eAAgB,KAChBC,gBAAiB,KACjBC,gBAAiBP,EACjBQ,iBAAkB,KAClBC,kBAAmB,KACnBC,oBAAqB,KACrBC,kBAAmB,KACnBC,SAAS,EACTC,aAAc,CACVC,YAAY,EACZ7wB,WAAOjG,EACPzI,KAAM,GACN6C,WAAO4F,GAEX+2B,gCAAgC,GAEpCC,aAAc,KACdC,MAAO,CACHxF,KAAM,GACNyF,iBAAkB,GAClBC,mBAAoB,IAExBC,sBAAuB,KACvBC,aAAc,CACVC,gBAAiB,KACjBC,mBAAoB,KACpBC,iBAAkB,KAClBC,iBAAkB,KAClBC,wBAAyB,KACzBC,UAAU,EACVniB,YAAY,GAEhBoiB,qBAAsB,KACtBC,cAAe,CAAC,EAChBC,wBAAwB,EACxBC,mBAAoB,CAChBC,UAAU,GAEdC,kBAAmB,CACfC,SAAU,KACVC,cAAe,KACf5B,gBAAiBP,EACjBa,aAAc,O,kkCCnF1B,MAAMuB,GAAgB10B,EAAAA,EAAAA,aAAY,CAC9BrK,KAAM,WACNsK,cAAc+Y,EAAAA,EAAAA,MACd7Y,SAAU,CACNw0B,gBAAiBA,CAACz6B,EAAKhP,KAAkB,IAAd+R,EAAO/R,EAAP+R,QACvB,MACIs1B,EAQAt1B,EARAs1B,YACA4B,EAOAl3B,EAPAk3B,cACAb,EAMAr2B,EANAq2B,aACAK,EAKA12B,EALA02B,aACAO,EAIAj3B,EAJAi3B,qBACAR,EAGAz2B,EAHAy2B,sBACAkB,EAEA33B,EAFA23B,gBACAP,EACAp3B,EADAo3B,mBAEJn6B,EAAMq4B,YAAW5kC,EAAA,GAAQ4kC,GACzBr4B,EAAMo5B,aAAY3lC,EAAA,GAAQ2lC,GAC1Bp5B,EAAM4X,YAAa,EACnB5X,EAAMu4B,UAAW,EACjBv4B,EAAMw0B,gBAAkByF,EAAczF,gBACtCx0B,EAAM26B,YAAcV,EAAcU,YAClC36B,EAAM46B,WAAaX,EAAcW,WACjC56B,EAAMw5B,sBAAwBA,EAC9Bx5B,EAAMy5B,aAAaC,gBAAkBD,EAAaC,gBAClD15B,EAAMy5B,aAAaE,mBACfF,EAAaE,mBACjB35B,EAAMy5B,aAAaG,iBAAmBH,EAAaG,iBACnD55B,EAAMy5B,aAAaK,6BACoB13B,IAAnCq3B,EAAaoB,kBACP,CAAE7lC,GAAIykC,EAAaoB,wBACnBz4B,EACVpC,EAAMy5B,aAAaM,SAAWN,EAAaM,SAC3C/5B,EAAMg6B,qBAAuBA,EAC7Bh6B,EAAM06B,gBAAkBA,EACxB16B,EAAMi6B,cAAgBA,EACtBj6B,EAAMk6B,wBAAyB,EAC/Bl6B,EAAMm6B,mBAAqBA,CAAkB,EAEjDW,uBAAwBA,CAAC96B,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QAC9B/C,EAAMy5B,aAAaC,gBAAkB32B,CAAO,EAEhDg4B,0BAA2BA,CAAC/6B,EAAK+b,KAAkB,IAAdhZ,EAAOgZ,EAAPhZ,QACjC/C,EAAMk6B,uBAAyBn3B,EAAQi4B,SAAS,EAEpDC,sBAAuBA,CAACj7B,EAAKic,KAAkB,IAAdlZ,EAAOkZ,EAAPlZ,QAC7B/C,EAAMw4B,QAAQC,eAAiB11B,EAC/B/C,EAAMw4B,QAAQ5gB,YAAa,CAAK,EAEpCsjB,wBAAyBA,CAACl7B,EAAKoc,KAAkB,IAAdrZ,EAAOqZ,EAAPrZ,QAC/B/C,EAAMy5B,aAAaI,iBAAmB92B,CAAO,EAEjD+0B,YAAaA,CAAC93B,EAAKwc,KAAkB,IAAdzZ,EAAOyZ,EAAPzZ,QACnB/C,EAAM4X,WAAa7U,EACnB/C,EAAMu4B,UAAW,CAAK,EAE1B1D,UAAWA,CAAC70B,EAAK2c,KAAkB,IAAd5Z,EAAO4Z,EAAP5Z,QACjB,MAAQ8wB,EAA+C9wB,EAA/C8wB,KAAMyF,EAAyCv2B,EAAzCu2B,iBAAkBC,EAAuBx2B,EAAvBw2B,mBAChCv5B,EAAMq5B,MAAQ,CACVxF,OACAyF,mBACAC,qBACH,EAEL4B,cAAgBn7B,IACZA,EAAMs4B,gBAAgBC,UAAW,EACjCv4B,EAAMs4B,gBAAgB1gB,YAAa,CAAK,EAE5Cua,WAAanyB,IACTA,EAAMq5B,MAAQ,CACVxF,KAAM,GACT,EAELuH,YAAaA,CAACp7B,EAAK6c,KAAkB,IAAd9Z,EAAO8Z,EAAP9Z,QACnB/C,EAAMu4B,SAAWx1B,EACjB/C,EAAM4X,YAAa,CAAK,EAE5ByjB,mBAAoBA,CAACr7B,EAAKid,KAAkB,IAAdla,EAAOka,EAAPla,QAC1B/C,EAAMw4B,QAAQ5gB,WAAa7U,EAC3B/C,EAAMw4B,QAAQD,UAAW,CAAK,EAElC+C,mBAAoBA,CAACt7B,EAAKmd,KAAkB,IAAdpa,EAAOoa,EAAPpa,QAC1B/C,EAAMw4B,QAAQD,SAAWx1B,EACzB/C,EAAMw4B,QAAQ5gB,YAAa,CAAK,EAEpC2jB,kBAAmBA,CAACv7B,EAAKsd,KAAkB,IAAdva,EAAOua,EAAPva,QACzB/C,EAAMw4B,QAAQQ,QAAUj2B,CAAO,EAEnCy4B,qBAAsBA,CAACx7B,EAAK81B,KAAkB,IAAd/yB,EAAO+yB,EAAP/yB,QAC5B/C,EAAMw4B,QAAQK,kBAAoB91B,CAAO,EAE7C04B,2BAA4BA,CAACz7B,EAAKk2B,KAAkB,IAAdnzB,EAAOmzB,EAAPnzB,QAClC/C,EAAMs4B,gBAAgB1gB,WAAa7U,EACnC/C,EAAMs4B,gBAAgBC,UAAW,CAAK,EAE1CmD,2BAA4BA,CAAC17B,EAAKu2B,KAAkB,IAAdxzB,EAAOwzB,EAAPxzB,QAClC/C,EAAMs4B,gBAAgBC,SAAWx1B,EACjC/C,EAAMs4B,gBAAgB1gB,YAAa,CAAK,EAE5C+jB,mBAAoBA,CAAC37B,EAAKi3B,KAAkB,IAAdl0B,EAAOk0B,EAAPl0B,QAC1B/C,EAAMw4B,QAAQE,gBAAkB31B,EAChC/C,EAAMs4B,gBAAgBC,UAAW,CAAK,EAE1CqD,oBAAqBA,CAAC57B,EAAKo3B,KAAkB,IAAdr0B,EAAOq0B,EAAPr0B,QAC3B/C,EAAMw4B,QAAQI,iBAAmB71B,CAAO,EAE5C84B,mBAAoBA,CAAC77B,EAAK87B,KAAkB,IAAd/4B,EAAO+4B,EAAP/4B,QAC1B/C,EAAMw4B,QAAQG,gBAAkB51B,CAAO,EAE3Cg5B,oBAAqBA,CAAC/7B,EAAKg8B,KAAkB,IAAdj5B,EAAOi5B,EAAPj5B,QAC3B/C,EAAMi8B,iBAAmBl5B,CAAO,EAEpCm5B,yBAA0BA,CAACl8B,EAAKm8B,KAAkB,IAAdp5B,EAAOo5B,EAAPp5B,QAChC/C,EAAMw5B,sBAAwBz2B,CAAO,EAEzCq5B,wBAAyBA,CAACp8B,EAAKq8B,KAAkB,IAAdt5B,EAAOs5B,EAAPt5B,QAC/B/C,EAAMg6B,qBAAoBvmC,EAAAA,EAAA,GACnBuM,EAAMg6B,sBACNj3B,EACN,EAELu5B,eAAgBA,CAACt8B,EAAKu8B,KAAkB,IAAdx5B,EAAOw5B,EAAPx5B,QACtB/C,EAAMq4B,YAAW5kC,EAAAA,EAAA,GAAQuM,EAAMq4B,aAAgBt1B,EAAS,EAE5Dy5B,sBAAuBA,CAACx8B,EAAKy8B,KAAkB,IAAd15B,EAAO05B,EAAP15B,QAC7B/C,EAAMq4B,YAAYqE,QAAOjpC,EAAAA,EAAA,GAClBuM,EAAMq4B,YAAYqE,SAClB35B,EACN,EAEL45B,mBAAoBA,CAAC38B,EAAK48B,KAAkB,IAAd75B,EAAO65B,EAAP75B,QAC1B/C,EAAMy5B,aAAaK,wBAA0B/2B,CAAO,EAExD85B,wBAAyBA,CAAC78B,EAAK88B,KAAkB,IAAd/5B,EAAO+5B,EAAP/5B,QAC/B/C,EAAMy5B,aAAa7hB,WAAa7U,CAAO,EAE3Cg6B,yBAA0BA,CAAC/8B,EAAKg9B,KAAkB,IAAdj6B,EAAOi6B,EAAPj6B,QAChC/C,EAAMy5B,aAAawD,sBAAwBl6B,CAAO,EAEtDm6B,iBAAkBA,CAACl9B,EAAKm9B,KAAkB,IAAdp6B,EAAOo6B,EAAPp6B,QACxB/C,EAAMw4B,QAAQ4E,cAAgBr6B,CAAO,EAEzCs6B,gBAAiBA,CAACr9B,EAAKs9B,KAAkB,IAAdv6B,EAAOu6B,EAAPv6B,QACvB/C,EAAMw4B,QAAQS,aAAYxlC,EAAAA,EAAA,GACnBuM,EAAMw4B,QAAQS,cACdl2B,EACN,EAELw6B,0BAA2BA,CAACv9B,EAAKw9B,KAAkB,IAAdz6B,EAAOy6B,EAAPz6B,QACjC/C,EAAMw4B,QAAQS,aAAaC,WAAan2B,CAAO,EAEnD06B,uBAAwBA,CAACz9B,EAAK09B,KAAkB,IAAd36B,EAAO26B,EAAP36B,QAC9B/C,EAAMw4B,QAAQM,oBAAsB/1B,CAAO,EAE/C46B,qBAAsBA,CAAC39B,EAAK49B,KAAkB,IAAd76B,EAAO66B,EAAP76B,QAC5B/C,EAAMw4B,QAAQO,kBAAoBh2B,CAAO,EAE7C86B,qBAAsBA,CAAC79B,EAAK89B,KAAkB,IAAd/6B,EAAO+6B,EAAP/6B,QAC5B/C,EAAMq6B,kBAAoBt3B,CAAO,EAErCg7B,kCAAmCA,CAAC/9B,EAAKg+B,KAAkB,IAAdj7B,EAAOi7B,EAAPj7B,QACzC/C,EAAMw4B,QAAQW,+BAAiCp2B,CAAO,KAK3Dk7B,EAmCHzD,EAAcxzB,QAElB,GApCai3B,EAATpJ,UACUoJ,EAAV9L,WACa8L,EAAb9C,cACe8C,EAAfxD,gBACsBwD,EAAtBnD,uBACyBmD,EAAzBlD,0BACqBkD,EAArBhD,sBACuBgD,EAAvB/C,wBACW+C,EAAXnG,YACWmG,EAAX7C,YAC0B6C,EAA1BxC,2BAC0BwC,EAA1BvC,2BACkBuC,EAAlB5C,mBACkB4C,EAAlB3C,mBACiB2C,EAAjB1C,kBACoB0C,EAApBzC,qBACkByC,EAAlBtC,mBACmBsC,EAAnBrC,oBACmBqC,EAAnBlC,oBACwBkC,EAAxB/B,yBACuB+B,EAAvB7B,wBACc6B,EAAd3B,eACqB2B,EAArBzB,sBACkByB,EAAlBtB,mBACuBsB,EAAvBpB,wBACwBoB,EAAxBlB,yBACkBkB,EAAlBpC,mBACgBoC,EAAhBf,iBACee,EAAfZ,gBACyBY,EAAzBV,0BACsBU,EAAtBR,uBACoBQ,EAApBN,qBACoBM,EAApBJ,qBACiCI,EAAjCF,kCAGWvD,EAAqB,Q,qFCvMpC,MA6Ba0D,EAAyBC,GAAqBhqC,IACvDA,GAASiqC,EAAAA,EAAAA,IAAcD,GAAiB,C,iCCtCrC,MAAME,EAAc,CACvBC,KAAM,OACNC,WAAY,aACZC,QAAS,UACTC,cAAe,gBACfC,eAAgB,iBAChBC,WAAY,a,+FCET,MAAM54B,EAAe,CACxB64B,OAAQ,EACRC,YAAa,GACbC,WAAY,EACZC,cAAe,GACfC,WAAY,GACZC,cAAe,EACf1M,YAAa,KACb2M,UAAU,EACVC,OAAQ,GACR/yB,OAAQ,EACRmK,QAAS,KACTkiB,eAAgB,GAChB2G,QAAS,GACTC,cAAe,KACf3F,gBAAiB,GACjB4F,cAAe,GACfC,eAAgB,EAChB5mC,MAAO,KACP6mC,UAAWnB,EAAAA,EAAYG,QACvBiB,YAAa,MAGX55B,GAAQC,EAAAA,EAAAA,aAAY,CACtBrK,KAAM,aACNsK,eACAE,SAAU,CACNy5B,kBAAmBA,IACR35B,EAEXq4B,cAAeA,CAACp+B,EAAKhP,KAA8C,IAAA2uC,EAAA3uC,EAA1C+R,QAAWlO,EAAI8qC,EAAJ9qC,KAAM0hB,EAAOopB,EAAPppB,QAAS6oB,EAAOO,EAAPP,QAC/C,MAAMK,EAAc5qC,EAAK4qC,YACnBG,EAAU/qC,EAAK+qC,QACfC,GAAYC,EAAAA,EAAAA,GACdL,EAAYP,SACZO,EAAYM,WACZN,EAAYO,SACZJ,EAAQK,SACRL,EAAQM,oBACRN,EAAQO,mBACRP,EAAQQ,gBACRR,EAAQS,uBAENC,GAAgBC,EAAAA,EAAAA,GAClBV,EACAJ,EAAYe,WACZZ,EAAQa,iBACRhB,EAAYiB,WACZd,EAAQK,SAAW,GAEvBjgC,EAAM4+B,OAAS0B,EAAc1B,OAC7B5+B,EAAM2gC,mBAAqBlB,EAAYkB,mBACvC3gC,EAAM6+B,YAAchqC,EAAKgqC,YACzB7+B,EAAM8+B,WAAaW,EAAYX,WAC/B9+B,EAAM++B,cAAgBlqC,EAAKgqC,YAAYzlC,KAClCwnC,GAAeA,EAAWtf,OAE/BthB,EAAMuyB,YAAckN,EAAYlN,YAChCvyB,EAAM6gC,QAAUpB,EAAYoB,QAC5B7gC,EAAMk/B,SAAWO,EAAYP,SAC7Bl/B,EAAMm/B,OAASM,EAAYN,OAC3Bn/B,EAAMoM,OAASqzB,EAAYrzB,OAC3BpM,EAAMuW,QAAUA,EAChBvW,EAAMy4B,eAAiBgH,EAAYhH,eACnCz4B,EAAMo/B,QAAUA,EAChBp/B,EAAM05B,gBAAkB+F,EAAY/F,gBACpC15B,EAAMs/B,cAAgBG,EAAYH,cAClCt/B,EAAMu/B,eAAiBE,EAAYF,eACnCv/B,EAAMrH,MAAQ8mC,EAAY9mC,MAC1BqH,EAAMw/B,UAAYC,EAAYP,SACxBb,EAAAA,EAAYE,WACZF,EAAAA,EAAYC,KAClBt+B,EAAMy/B,YAAcA,GACpBqB,EAAAA,EAAAA,GAA4B9gC,EAAM,EAEtC+gC,aAAcA,CAAC/gC,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QACpB/C,EAAMw/B,UAAYz8B,CAAO,EAE7Bi+B,cAAeA,CAAChhC,EAAK+b,KAA6C,IAAhCijB,EAAUjjB,EAAnBhZ,QAAqBk8B,EAAaljB,EAAbkjB,cAC1Cj/B,EAAMg/B,WAAaA,EACnBh/B,EAAMi/B,cAAgBA,CAAa,KAKxCl4B,EACHlB,EAAMmB,QADwBo3B,GAAFr3B,EAAjB24B,kBAAgC34B,EAAbq3B,eAErBj4B,GAFgDY,EAAZg6B,aAA2Bh6B,EAAbi6B,cAExCn7B,EAAMM,Q,wlCC9E7B,MAAM86B,EAAa,CACfzwC,OAAQ,GACRuL,OAAQ,GACRG,MAAO,GACPglC,OAAQ,KAGNC,EAAY,CACd,EAAG,GACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,KACJ,GAAI,KACJ,GAAI,IACJ,GAAI,MAGKC,EAAqC,CAAC,KAAM,KAAM,MAEzDC,GAA0Bv7B,EAAAA,EAAAA,aAAY,CACxCrK,KAAM,qBACNsK,aAAc,CACVu7B,IAAG7tC,EAAA,GAAOwtC,GACVM,0BAA2B,GAC3BC,wBAAyB,GACzBP,aACAQ,WAAY,KACZC,kBAAmB,EACnBC,2BAA2B,EAC3BC,kBAAmB,CACf,CACIC,aAAc,kBACdC,QAAS,aAEb,CACID,aAAc,iBACdC,QAAS,aAEb,CACID,aAAc,gBACdC,QAAS,kBAEb,CACID,aAAc,MACdC,QAAS,aAEb,CACID,aAAc,iBACdC,QAAS,aAEb,CACID,aAAc,WACdC,QAAS,aAEb,CACID,aAAc,eACdC,QAAS,aAEb,CACID,aAAc,uBACdC,QAAS,WAGjBC,gDAAiD,CAC7CC,GAAI,CAAEA,GAAI,KAEdC,WAAW,GAEfh8B,SAAU,CACNi8B,6BAA8BA,CAACliC,EAAO4D,KAClC,MAAMu+B,EAAiBf,EAAmCpvC,SACtD4R,EAAOb,QAAQo/B,gBAEbv+B,EAAOb,QAAQo/B,eACf,KACNniC,EAAMmiC,eAAiBA,EACvBniC,EAAMoiC,kBAAoBD,EAC1BniC,EAAMqiC,oBAAsBF,CAAc,EAE9CG,qBAAsBA,CAACtiC,EAAO4D,KAC1B5D,EAAMoiC,kBAAoBx+B,EAAOb,QAAQq/B,iBAAiB,EAE9DG,uBAAwBA,CAACviC,EAAO4D,KAC5B5D,EAAMqiC,oBAAsBz+B,EAAOb,QAAQs/B,mBAAmB,EAElEG,sBAAwBxiC,IACpBA,EAAMshC,IAAG7tC,EAAA,GAAQwtC,GACjB,MAAMzkC,EAAQ2kC,EAAU,GACxBnhC,EAAMyhC,WAAajlC,EAAQ,KAAS,EAAI,KAAO,IAC/CwD,EAAM0hC,kBAAoB,CAAC,EAE/Be,aAAcA,CAACziC,EAAO4D,KAClB,MAAA0a,EAA8B1a,EAAOb,QAA7B2/B,EAAUpkB,EAAVokB,WAAYlmC,EAAK8hB,EAAL9hB,MACpBwD,EAAMshC,IAAIoB,GAAclmC,CAAK,EAEjCmmC,gBAAiBA,CAAC3iC,EAAO4D,KACrB,MAAMpH,EAAQ2kC,EAAUv9B,EAAOb,QAAQvG,OACvCwD,EAAMyhC,WAAajlC,EAAQ,KAAS,EAAI,KAAO,IAC/CwD,EAAMshC,IAAIJ,OAAS1kC,EACnBwD,EAAM0hC,kBAAoB99B,EAAOb,QAAQvG,KAAK,EAElDomC,cAAeA,CAAC5iC,EAAO4D,KACnB5D,EAAMyhC,WAAa79B,EAAOb,QAAQ0+B,UAAU,EAEhDoB,8BAAgC7iC,IAC5BA,EAAM2hC,2BAA4B,CAAI,EAE1CmB,aAAe9iC,IACXA,EAAMiiC,WAAY,CAAI,EAE1Bc,oBAAqBA,CAAC/iC,EAAO4D,KACzB,MAAQo/B,EAA4Cp/B,EAAOb,QAAnDigC,wCAEFjB,EACFiB,EAAwCjT,QACpC,CAACkT,EAAMC,KACH,MACyBzkB,EAErBykB,EAFAC,oBACmBC,EACnBF,EADAG,kBAKJ,OAHAJ,EAAKxkB,GAAQwkB,EAAKxkB,IAAS,CAAC,EAC5BwkB,EAAKxkB,GAAM2kB,GAAMH,EAAKxkB,GAAM2kB,IAAO,GACnCH,EAAKxkB,GAAM2kB,GAAIvgC,KAAKqgC,GACbD,CAAI,GAEf,CAAC,GAGHzB,EAA0B,IACzB,IAAI/uC,IACHuwC,EAAwC5pC,KACpCpI,GAAoBA,EAAjBqyC,sBAKT9B,EAA4B,IAC3B,IAAI9uC,IACHuwC,EAAwC5pC,KACpChE,GAAsBA,EAAnB+tC,wBAKfnjC,EAAMuhC,0BAA4BA,EAClCvhC,EAAMwhC,wBAA0BA,EAChCxhC,EAAMiiC,WAAY,EAClBjiC,EAAM+hC,gDACFA,EACJ/hC,EAAM2hC,2BAA4B,CAAK,KA+D5C2B,EAWHjC,EAAwBr6B,QAC5B,GAXgBs8B,EAAZb,aACaa,EAAbV,cAC6BU,EAA7BT,8BAC4BS,EAA5BpB,6BACmBoB,EAAnBP,oBACqBO,EAArBd,sBACoBc,EAApBhB,qBACsBgB,EAAtBf,uBACee,EAAfX,gBACYW,EAAZR,aAEWzB,EAA+B,Q,oJC7NvC,MAsBMkC,EAA4BC,GAAwBrvC,IAC7D,MAAQ+uC,EAAkBM,EAAlBN,QAASruC,EAAS2uC,EAAT3uC,KACjBV,GAASsvC,EAAAA,EAAAA,IAAWP,IACpB/uC,GAASuvC,EAAAA,EAAAA,IAAe7uC,EAAK4qC,cAC7BtrC,EAASwvC,EAAe9uC,GAAM,EAG5B8uC,EAAkBC,GAAc,CAACzvC,EAAUyU,KAC7C,MAAM5I,EAAQ4I,IACRqlB,GAAiBG,EAAAA,EAAAA,IAAoCpuB,GACrD6jC,GAA4BllC,EAAAA,EAAAA,IAA4BqB,GACxD8jC,GACFxwB,EAAAA,EAAAA,IAA+B2a,KAC/Bha,EAAAA,EAAAA,IAA0B4vB,EAA2B,MACnDhsC,GACFE,EAAAA,EAAAA,GAAoCiI,GAClC+jC,EACFH,EAAUnE,YAAYsE,4BACpBC,EACFnsC,GACAgsC,IAA8BE,IAC7BD,EACL3vC,GACI8vC,EAAAA,EAAAA,IACID,EACMH,EACAE,GAEb,C,iFC7DL,MAAMG,GAAmBp+B,EAAAA,EAAAA,aAAY,CACjCrK,KAAM,cACNsK,aAAc,CAAC,EACfE,SAAU,CACNk+B,aAAcA,CAACnkC,EAAKhP,KAAkB,IAAd+R,EAAO/R,EAAP+R,QACpB/C,EAAMg7B,UAAYj4B,CAAO,EAE7B2gC,eAAgBA,CAAC1jC,EAAK5K,KAAkB,IAAd2N,EAAO3N,EAAP2N,QACtB/C,EAAMy/B,aAAc2E,EAAAA,EAAAA,IAAerhC,EAAQ,EAE/C0gC,WAAYA,CAACzjC,EAAK+b,KAAkB,IAAdhZ,EAAOgZ,EAAPhZ,QAClB/C,EAAMkjC,QAAUngC,CAAO,EAE3BshC,eAAgBA,CAACrkC,EAAKic,KAAkB,IAAdlZ,EAAOkZ,EAAPlZ,QACtB/C,EAAMskC,YAAcvhC,CAAO,EAE/BkhC,sCAAuCA,CAACjkC,EAAKoc,KAAkB,IAAdrZ,EAAOqZ,EAAPrZ,QAC7C/C,EAAMukC,mCAAqCxhC,CAAO,EAEtDyhC,+BAAiCxkC,IAC7BA,EAAMykC,sBAAwB,KAC9BzkC,EAAM0kC,2BACFC,EAAAA,GAA4BC,8BAA8B,EAElEC,yBAA0BA,CAAC7kC,EAAKwc,KAAkB,IAAdzZ,EAAOyZ,EAAPzZ,QAChC/C,EAAMykC,sBAAwB1hC,EAC9B/C,EAAM0kC,2BACFC,EAAAA,GAA4BG,OAAO,EAE3CC,2BAA6B/kC,IACzBA,EAAMykC,sBAAwB,KAC9BzkC,EAAM0kC,2BACFC,EAAAA,GAA4BG,OAAO,EAE3CE,kCAAoChlC,IAChCA,EAAMykC,sBAAwB,KAC9BzkC,EAAM0kC,2BACFC,EAAAA,GAA4BnG,OAAO,EAE3CyG,mCAAqCjlC,IACjCA,EAAM0kC,2BACFC,EAAAA,GAA4BO,YAAY,KAKxD,EAAehB,EAAwB,QAEhCiB,EAWHjB,EAAiBl9B,QATjB08B,GADYyB,EAAZhB,aACcgB,EAAdzB,gBACAD,EAAU0B,EAAV1B,WAEAQ,GADckB,EAAdd,eACqCc,EAArClB,uCAC8BkB,EAA9BX,+BACwBW,EAAxBN,yBAC0BM,EAA1BJ,2BACiCI,EAAjCH,kCACkCG,EAAlCF,kC,4vCCvBJ,MAAMG,EAA4C,CAC9CC,KAAM,KACNC,aAAc,KACdC,iBAAkB,KAClBl9B,MAAO,MAGJ,IAAKs8B,EAA2B,SAA3BA,GAA2B,OAA3BA,EAA2B,kBAA3BA,EAA2B,kBAA3BA,EAA2B,4BAA3BA,EAA2B,gEAA3BA,CAA2B,MAwEhC,MAAM5+B,EAA8B,CACvC65B,QAAS,KACT4F,eAAgB,KAChB3G,YAAa,GACb4G,WAAW,EACXhG,YAAa,CAAC,EACdiG,cAAe,GACfC,UAAW,GACXrB,YAAa,KACbsB,sBAAuB,KACvB/F,UAAW,KACXgG,cAAe,KACfC,eAAgB,KAChBC,iBAAkBX,EAClBY,aAAc,KACdC,kBAAmB,KACnBxB,sBAAuB,KACvBC,2BAA4BC,EAA4BG,QACxDP,mCAAoC,KACpC2B,mBAAmB,GAGjBC,GAAgBrgC,EAAAA,EAAAA,aAAY,CAC9BrK,KAAM,WACNsK,eACAE,SAAU,CACNmgC,sBAAwBpmC,IACpBA,EAAM+lC,iBAAmBX,CAAuB,EAEpD1F,kBAAmBA,IACR35B,EAEXsgC,sBAAuBA,CACnBrmC,EACA4D,KAEA5D,EAAMwlC,eAAiB5hC,EAAOb,OAAO,EAEzCujC,gBAAiBA,CAACtmC,EAAKhP,KAAkB,IAAd+R,EAAO/R,EAAP+R,QACvB/C,EAAMy/B,YAAY8G,aAAexjC,CAAO,EAE5CyjC,wBAAyBA,CAACxmC,EAAO4D,KAC7B,IAAK5D,EAAMy/B,YAAYgH,UACnB,MAAM,IAAIxkC,MAAM,qBAGpBjC,EAAMy/B,YAAYgH,UAAUC,qBAAuB9iC,EAAOb,OAAO,EAErE2gC,eAAgBA,CACZ1jC,EACA4D,KAEA5D,EAAMy/B,YAAc2E,EAAexgC,EAAOb,QAAQ,EAEtD4jC,gBAAiBA,CACb3mC,EACA4D,KAEA5D,EAAMgmC,aAAepiC,EAAOb,OAAO,EAEvC6jC,eAAgBA,CACZ5mC,EACA4D,KAEA5D,EAAM6+B,YAAcj7B,EAAOb,QAAQ3J,KAC/B,CAAAhE,EAAqB2L,KAAK,IAAvB/L,EAAEI,EAAFJ,GAAc,MAAe,CAC5BA,GAAI+L,EACJhN,IAFOqB,EAAJe,KAGHsF,KAHarG,EAAJksB,KAITwd,WAAY9pC,EACf,GACJ,EAEL6xC,aAAcA,CAAC7mC,EAAO4D,KAClB5D,EAAMylC,UAAY7hC,EAAOb,OAAO,EAEpC+jC,oBAAqBA,CACjB9mC,EACA4D,KAEA,MAAQb,EAAYa,EAAZb,QACR/C,EAAM+lC,iBAAiBT,aAAeviC,EAAQuiC,aAC9CtlC,EAAM+lC,iBAAiBR,iBAAmBxiC,EAAQwiC,iBAClDvlC,EAAM+lC,iBAAiB19B,MAAQtF,EAAQsF,KAAK,EAEhD0+B,WAAYA,CACR/mC,EACA4D,KAKC,IAAAojC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACD,MAAAhpB,EAAsC1a,EAAOb,QAArC68B,EAAOthB,EAAPshB,QAASxzB,EAAMkS,EAANlS,OAAQ7J,EAAQ+b,EAAR/b,SAEiB,IAAAglC,EAA1C,IAAqB,QAAjBP,EAAAhnC,EAAMy/B,mBAAW,IAAAuH,OAAA,EAAjBA,EAAmB56B,UAAWA,EAS9B,YARA0kB,EAAAA,EAAAA,GAAO,IAAI7uB,MAAO,uCAAuC,CACrDulC,SAAU,CACN76B,MAAO,CACH86B,cAAgC,QAAnBF,EAAEvnC,EAAMy/B,mBAAW,IAAA8H,OAAA,EAAjBA,EAAmBn7B,OAClCs7B,cAAet7B,MAY/B,MAAMu7B,GAAkB3nC,EAAM4/B,QACxBgI,EACFhI,EAAQQ,kBAAoByH,EAAAA,EAAkBC,IAKlD,KAHIH,GACAC,IACqB,QAArBX,EAAc,QAAdC,EAAClnC,EAAM4/B,eAAO,IAAAsH,OAAA,EAAbA,EAAea,aAAK,IAAAd,EAAAA,EAAI,KAAoB,QAAnBE,EAAMvH,EAAQmI,aAAK,IAAAZ,EAAAA,EAAI,IACnC,OAElB,MAAMa,EAAYC,EACdrI,EACAr9B,EACAvC,EAAM4/B,SAGJsI,GAAgC,QAAbd,EAAApnC,EAAM4/B,eAAO,IAAAwH,OAAA,EAAbA,EAAenH,WAAY,EAC9CkI,EAAmBvI,EAAQK,UAAY,EACvCmI,EAAa,CACfL,MAAOnI,EAAQmI,OAAS,EACxBtH,iBAAkBb,EAAQa,kBAAoB,EAC9CJ,sBAAuBT,EAAQS,uBAAyB,KACxDgI,sBAAuBzI,EAAQyI,uBAAyB,KACxDlI,mBAAoBP,EAAQO,mBAC5BC,gBAA8B,QAAbiH,EAAArnC,EAAM4/B,eAAO,IAAAyH,GAAbA,EAAejH,gBAC1BpgC,EAAM4/B,QAAQQ,gBACdR,EAAQQ,iBAAmB,KAGjCH,SACIkI,EAAmBD,EACbC,EACAD,EAGVhI,qBACiB,QAAboH,EAAAtnC,EAAM4/B,eAAO,IAAA0H,OAAA,EAAbA,EAAepH,sBACfN,EAAQM,sBACR,IAGRY,EAAAA,EAAAA,GAA4BsH,GAE5BpoC,EAAM4/B,QAAOnsC,EAAAA,EAAA,GAAQ20C,GAAeJ,EAAW,EAEnDM,kBAAmBA,CAACtoC,EAAO4D,KACvB5D,EAAM8lC,eAAiBliC,EAAOb,OAAO,EAEzCwlC,aAAcA,CAACvoC,EAAO4D,KAClB5D,EAAM6/B,UAAYj8B,EAAOb,OAAO,EAEpCylC,iBAAkBA,CAACxoC,EAAO4D,KACtB5D,EAAM6lC,cAAgBjiC,EAAOb,OAAO,EAExC0lC,qBAAsBA,CAACzoC,EAAO4D,KAC1B5D,EAAMimC,kBAAoBriC,EAAOb,OAAO,EAE5C8hC,yBAA0BA,CACtB7kC,EACA4D,KAEA5D,EAAMykC,sBAAwB7gC,EAAOb,QACrC/C,EAAM0kC,2BACFC,EAA4BG,OAAO,EAE3Cb,sCAAuCA,CACnCjkC,EACA4D,KAEA5D,EAAMukC,mCAAqC3gC,EAAOb,OAAO,EAE7DyhC,+BAAiCxkC,IAC7BA,EAAMykC,sBAAwB,KAC9BzkC,EAAM0kC,2BACFC,EAA4BC,8BAA8B,EAElEG,2BAA6B/kC,IACzBA,EAAMykC,sBAAwB,KAC9BzkC,EAAM0kC,2BACFC,EAA4BG,OAAO,EAE3CE,kCAAoChlC,IAChCA,EAAMykC,sBAAwB,KAC9BzkC,EAAM0kC,2BACFC,EAA4BnG,OAAO,EAE3CyG,mCAAqCjlC,IACjCA,EAAM0kC,2BACFC,EAA4BO,YAAY,EAEhDb,eAAgBA,CAACrkC,EAAO4D,KACpB5D,EAAMskC,YAAc1gC,EAAOb,OAAO,EAEtC2lC,iBAAkBA,CACd1oC,EACA4D,KAEA5D,EAAM0lC,cAAgB9hC,EAAOb,OAAO,EAExC4lC,aAAcA,CAAC3oC,EAAO4D,KAClB5D,EAAM2lC,UAAY/hC,EAAOb,OAAO,EAEpC6lC,yBAA0BA,CACtB5oC,EACA4D,KAEA5D,EAAM4lC,sBAAwBhiC,EAAOb,OAAO,EAEhD8lC,qBAAsBA,CAAC7oC,EAAO4D,KAC1B5D,EAAMkmC,kBAAoBtiC,EAAOb,OAAO,EAE5C+lC,uBAAwBA,CACpB9oC,EACA4D,KAEI5D,EAAMy/B,YAAYsJ,sBAClB/oC,EAAMy/B,YAAYsJ,oBAAoBC,oBAClCplC,EAAOb,QACf,KAKZ,EAAeojC,EAAqB,QAEvB/B,EACT3E,IAAiC,IAAAwJ,EAAAC,EAAA,OAAAz1C,EAAAA,EAAA,GAE9BgsC,GAAW,IACdsE,4BAC2C,QADhBkF,EACvBxJ,EAAYsE,mCAA2B,IAAAkF,OAAA,EAAvCA,EAAyC1tC,cAC7C4jC,OAA0B,QAApB+J,EAAEzJ,EAAYN,cAAM,IAAA+J,OAAA,EAAlBA,EAAoB9vC,KAAK+vC,IAAG,CAChCC,UAAWD,EAAIC,UACfC,eAAgBF,EAAIC,UACpBE,OAAQH,EAAII,MACZC,OAAQL,EAAIK,OACZC,SAAUN,EAAIM,SACdC,UAAWP,EAAIO,UACfC,SAAUR,EAAIQ,SACdC,MAAOT,EAAIS,OAAS,UACrB,EAgLD3B,EAAsB,SACxBrI,EACAr9B,GAEC,IADDsnC,EAA+Bt5C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,KAElC,MAAMu5C,IAAkBD,UAAAA,EAAiBE,eACnCA,IACAxnC,GAAYA,IAAaq9B,EAAQS,sBAKvC,MAAO,CACH2J,qBAJEH,UAAAA,EAAiBG,oBAAqBpK,EAAQoK,mBAE1BF,KAAmBC,EAGzCA,gBAER,EAgMOE,EAiBH9D,EAAcn/B,QAhBmBijC,EAAjCjF,kCACkCiF,EAAlChF,mCACqBgF,EAArB7D,sBAC0B6D,EAA1BlF,2BACUkF,EAAVlD,WACekD,EAAf3D,gBACuB2D,EAAvBzD,wBACgByD,EAAhBzB,iBACwByB,EAAxBpF,yBAC8BoF,EAA9BzF,+BACcyF,EAAd5F,eACgB4F,EAAhBvB,iBACYuB,EAAZtB,aACwBsB,EAAxBrB,yBACqCqB,EAArChG,sCACsBgG,EAAtBnB,sB,2CC9wBJ,MAoBaoB,EAAuBpwC,GAChCqwC,EArBsB,KAqBWrwC,GAKxBswC,EAAmBtwC,GAC5BuwC,EAAaC,EAAgBxwC,GAE3BuwC,EAAeA,CAACE,EAA0B5wC,MAC1C4wC,EAAM5uC,MAAM6uC,GAAML,EAAcxwC,EAAM6wC,KAEtCL,EAAgBA,CAACM,EAAYC,IAC/BD,EAAGr2B,gBAAkBs2B,EAAGt2B,cActBk2B,EAAiB,CACnB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,K,qqCC3DJ,MAAM/Z,EAAa,CACfG,UAAW,YACXia,QAAS,UACTha,UAAW,YACXC,QAAS,UACTC,QAAS,UACT+Z,iBAAkB,mBAClBpa,WAAY,cAGVqa,EAA4B,CAE9BC,OAAQ,mBAER,mBAAoB,kBAMlBC,EAAe,CAEjBC,cAAe,CAEXC,iBAAiB,EACjBpjC,QAASgjC,GAEbK,iBAAkB,CAEdD,iBAAiB,EACjBpjC,QAASgjC,IAeXM,EAAkBC,GAAsC,MAAfA,EAEzCC,EAAqBt3C,IACvB,MAAMu3C,EAAkB,gBACxB,OAAOA,EAAgBC,KAAKx3C,GAAO,IAC7BA,aAAG,EAAHA,EAAK0T,QAAQ6jC,EAAiB,MAAO,IAAIE,MAAOC,WAChD13C,GACK,KAAKw3C,KAAKx3C,GAAO,IAAM,IAAM,KAC9B,MACA,IAAIy3C,MAAOC,SAAS,EAG5BC,EAAwBx3C,SAC1By3C,IAAKl4C,EAAAA,EAAC,CAAC,EACA4U,EAAMujC,QAAM,IACf73C,IAAKs3C,EAAkBhjC,EAAMujC,OAAO73C,QAmCtC83C,EAA4BxjC,IAAsB,IAAAyjC,EAAAC,EACpD,MA9DwBC,KACxB,IAII,MADgD,qBAFzBC,KAAKC,MAAMF,GAEfG,eAAeC,SAEtC,CAAE,MACE,OAAO,CACX,GAsDIC,CAAgC,QAAdP,EAACzjC,EAAMihB,eAAO,IAAAwiB,OAAA,EAAbA,EAAenlB,UAjCXzyB,UACAA,UACvBy3C,IAAAA,KAAU51C,EAAAA,EAAAA,IAAe,gBAAgBu2C,EAAAA,EAAAA,OAUtCC,GACFC,MAAK,IAAMd,EAAsBrjC,KACjCokC,OAX2Bv4C,UAE3B,IAAAw4C,EAKD,OAJIvB,EAA6C,QAA/BuB,EAACC,EAAuBrjB,eAAO,IAAAojB,OAAA,EAA9BA,EAAgCpkC,UAE/CD,EAAMsO,QAAU4Z,EAAWC,YAExBtvB,QAAQ0rC,OAAOvkC,EAAM,IAwBrBwkC,CAAuBxkC,GACvB8iC,EAA4B,QAAdY,EAAC1jC,EAAMihB,eAAO,IAAAyiB,OAAA,EAAbA,EAAezjC,QAlBlBpU,UACCA,UACpBy3C,IAAAA,KAAU51C,EAAAA,EAAAA,IAAe,gBAAgBu2C,EAAAA,EAAAA,OACtCQ,GAAkBN,MAAM7lB,IAAa,IAAAomB,EAExC,OADgC,QAAhBA,EAAGpmB,EAASlkB,YAAI,IAAAsqC,OAAA,EAAbA,EAAeltB,YAEvB6rB,EAAsBrjC,IAGjCA,EAAMsO,QAAU4Z,EAAWC,WAEpBtvB,QAAQ0rC,OAAOvkC,GAAM,IAQrB2kC,CAAmB3kC,GAEvBnH,QAAQ0rC,OAAOvkC,EAAM,EAOhC,SAAS4kC,EAAsBC,GAC3B,IAAIC,EAUJ,OARIA,OADkB/qC,IAAlB8qC,EACWvB,IAAAA,SAEAuB,EAEfC,EAASC,aAAazmB,SAAS0mB,KAC1B1mB,GAAaA,GACdklB,GAEGsB,CACX,CAEA,MAAMG,EAAkD,CAAC,EAYzD,SAASC,EAAmBC,GACxB,GAAIj6C,EAAAA,GACA,MAAM,IAAI0O,MACN,kIAGR,IAAIwrC,EAMJ,OALID,KAAWF,IACXG,EAASH,EAAaE,GAASC,QAGnCH,EAAaE,GAAW7B,IAAAA,YAAkBl7C,SACnC,CACHg9C,SACAC,YAAaJ,EAAaE,GAAS7kC,MAE3C,CAMA,SAASglC,IAAyC,IAApBC,EAAOr9C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,SACpC,OAAmBo2B,IACf,GACIA,EAAS9e,SACT8e,EAAS9e,QAAQ,sBACjB8e,EAAS9e,QAAQ,uBAAyB+lC,EAE1C,MAAM,IAAI3rC,MAAMsuB,EAAWqa,kBAE3B,OAAOjkB,CACX,CAER,CA0BA,SAASknB,IACL,OAAmBlnB,IAER,CACHlkB,KAFqBkkB,EAAjBlkB,KAGJ6F,OAHqBqe,EAAXre,QAMtB,CAOA,SAASwlC,IAAiD,IAArCC,EAA8Bx9C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,CAAC,EACnD,OAAQ8X,IACJ,MAAMC,EAASD,EAAMse,UAAYte,EAAMse,SAASre,OAC1CqO,EAAUtO,EAAMsO,QAAUtO,EAAMsO,QAAUtO,EAAMlE,WAetD,MAbIwnC,IAAAA,SAAetjC,GACfA,EAAMsO,QAAU4Z,EAAWI,UACpBha,EAAQ3kB,SAAS,YAAyB,MAAXsW,EACtCD,EAAMsO,QAAU4Z,EAAWM,QACpBla,EAAQ3kB,SAAS,WACxBqW,EAAMsO,QAAU4Z,EAAWK,QACpBja,EAAQ3kB,SAAS,mBACxBqW,EAAMsO,QAAU4Z,EAAWoa,QACT,MAAXriC,EACPD,EAAMsO,QAAU4Z,EAAWC,WACpBloB,GAAUA,KAAUylC,IAC3B1lC,EAAMsO,QAAUo3B,EAAezlC,IAE7BD,CAAK,CAEnB,C,sMCnOA2lC,IAAAA,OAAkBC,KAClBD,IAAAA,OAAkBE,KAClBF,IAAAA,OAAkBG,KAClBH,IAAAA,OAAkBI,KAClBJ,IAAAA,OAAkBK,KAEX,MAODC,EAAkB,mBAQXC,EAAqC,SAC9CC,EACAC,GAEC,IADD19B,EAAOxgB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEX,MAMMm+C,EANc,CAChB39B,EAAQ49B,gBAAkB,MAC1B,QACA59B,EAAQ69B,aAAe,QACtB79B,EAAQ89B,aAAe,SAEDj6C,OAAOk6C,SAASC,KAAK,KAEhD,MAnB+BC,EAACR,EAAMC,KAEtC,MAAMQ,EAASR,IAAmBQ,SAClC,OAAOR,EAAiBD,GAAMU,GAAGZ,GAAiBW,OAAOA,EAAO,EAgBzDD,CAAoBR,EAAMC,GAAkBC,OAAOA,EAC9D,EAqCaS,EAEF,QAFEA,EAGA,UAHAA,EAIA,UAIeh/B,EAAAA,GACCC,EAAAA,GACEC,EAAAA,E,0gDClF/B,MAAM++B,EAAmBA,KAErB,GAAI77C,EAAAA,GACA,MAAM,IAAI0O,MAAM,mDACpB,EAWEotC,EAAaA,CAACtnC,EAAiBunC,KACjC,MAAMC,EAAeA,CACjBx7C,EACAy7C,EACAC,KAMA,MAAQC,EAAkCF,EAAlCE,cAAkBC,EAAWx+C,EAAKq+C,EAAgBp+C,GACpDw8C,EAAUl2B,EAAAA,EAASk2B,QACzB,GAAI8B,EAAe,CACf,MAAAE,GAAgCrC,EAAAA,EAAAA,IAAmBmC,GAA3CjC,EAAMmC,EAANnC,OAAQC,EAAWkC,EAAXlC,YAEhBiC,EAAYjC,YAAcA,EACtBD,GACAA,GAER,CACA,MAAMoC,EA3BKC,EAAC/nC,EAAiBhU,IAC7BgU,EAAQiJ,SAAS,MAAjBjJ,MAAyBhU,GAAAA,EAAKg8C,WAAW,KAClChoC,EAAUhU,EAAIi8C,UAAU,GAE5BjoC,EAAUhU,EAuBG+7C,CAAW/nC,EAAShU,GAC9Bk8C,EAAeX,GACfv5C,EAAAA,EAAAA,IAAe85C,GAASvD,EAAAA,EAAAA,MACxBuD,EACN,OAAOJ,GAAYxC,EAAAA,EAAAA,MAAyBgD,EAAcN,GACrDnD,KACGoB,GAAUD,EAAAA,EAAAA,IAAqBC,GAAYjnB,GAAaA,GAE3D6lB,MAAKqB,EAAAA,EAAAA,OACLpB,OAAMqB,EAAAA,EAAAA,MAAc,EAG7B,MAAO,CACHz3B,IAAK,SACDtiB,GAEC,IADDy7C,EAAkCj/C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAGw6C,EAAAA,GAAaC,cAGlD,OADAoE,IACOG,EAAax7C,EAAKy7C,GAAkB,CAAC7D,EAAO53C,EAAK63C,IACpDD,EAAMt1B,IAAetiB,EAAK63C,IAElC,EACAtzC,KAAM,SACFvE,EACAgP,GAEC,IADDysC,EAAkCj/C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAGw6C,EAAAA,GAAaC,cAGlD,OADAoE,IACOG,EAAax7C,EAAKy7C,GAAkB,CAAC7D,EAAO53C,EAAK63C,IACpDD,EAAMrzC,KACFvE,EACAgP,EACA6oC,IAGZ,EACAsE,IAAK,SACDn8C,EACAgP,GAEC,IADDysC,EAAkCj/C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAGw6C,EAAAA,GAAaC,cAGlD,OADAoE,IACOG,EAAax7C,EAAKy7C,GAAkB,CAAC7D,EAAO53C,EAAK63C,IACpDD,EAAMuE,IACFn8C,EACAgP,EACA6oC,IAGZ,EACAptB,OAAQ,SACJzqB,GAEC,IADDy7C,EAAkCj/C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAGw6C,EAAAA,GAAaC,cAGlD,OADAoE,IACOG,EAAax7C,EAAKy7C,GAAkB,CAAC7D,EAAO53C,EAAK63C,IACpDD,EAAMntB,OAAkBzqB,EAAK63C,IAErC,EACAtiB,QAAS,SACLsiB,GAEC,IADD4D,EAAkCj/C,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAGw6C,EAAAA,GAAaC,cAGlD,OADAoE,IACOG,EACH3D,EAAO73C,IACPy7C,GACA,CAAC7D,EAAO53C,EAAKo8C,IACFxE,EAAMriB,QAAO71B,EAAAA,EAAAA,EAAC,CAAC,EAAIm4C,GAAWuE,GAAc,IAAEp8C,UAGjE,EACH,EAGCq8C,EAAc70B,IAChB,MAAMqQ,EAASyjB,EAAY,QAAO9zB,KAAY,GAC9C,SAAS80B,EAA0B1pB,GAC/B,GAAwB,iBAAbA,GAAyB,SAAUA,EAC1C,OAAOA,EAASlkB,IAExB,CACA,MAAO,CACH6tC,QAASA,CACLC,EACAxtC,EACAysC,IAEA5jB,EACKtzB,KACI,aAAYi4C,IACbxtC,EACAysC,GAEHhD,KAAK6D,GACdj9C,MAAOA,CAACo9C,EAAmBhB,IACvB5jB,EACKvV,IAAK,YAAWm6B,IAAahB,GAC7BhD,KAAK6D,GACjB,EAIQh4C,GADgBg3C,EAAW,IACVA,EAAW,KAAK,IACjCj5B,EAAei5B,EAAWoB,EAAAA,EAAUC,SAAS,GAE7CC,GADetB,EAAW,YACLA,EAAWoB,EAAAA,EAAUG,uBAK1CC,GAJ6BT,EAAW,yBACVA,EACvC,2BAEyCA,EACzC,4B,yDCjJJ,MAcMU,EAXEv9C,EAAAA,GACO2N,QAAQ0rC,cAGa,IAArB/1C,OAAOk6C,UACP7vC,QAAQC,UAGZ,kCAiBE6vC,EAAcA,IACvB,IAAI9vC,SAASC,IACTxE,WAAWwE,EAAS,EAAE,IA+BxB8vC,EAAW/8C,MACbg9C,EACAC,KAEA,UACUL,CACV,CAAE,MAAOzoC,GAML,OALI9U,EAAAA,KACAu9B,EAAAA,EAAAA,GAAO,gEAGLkgB,IACCE,GACX,CAEA,aAAaH,UAAUE,SAASC,EAAc,CAAEC,YAAW,EASlDC,EAAuBF,GAChCD,EAASC,EAAc,a,6jCC9F3B,MAAMG,EAAiB,IAAIC,IAEpB,SAASC,EAAWxvC,GAAoC,IAAvBgP,EAAgBxgB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAAG,CAAC,EACxD,GAAIgD,EAAAA,GAGA,MAAM,IAAI0O,MAAM,+CAEpB,MAAMuvC,EAAsB,CACxBC,QAAS1gC,EAAQ0gC,SAAW,EAC5BC,eAAgB3gC,EAAQ2gC,gBAAkB,CAAC,GAEzCC,EAAUN,EAAeh7B,IAAItU,GACnC,GAAI4vC,EAKA,OAAOA,EAGX,MAAMC,EAAa,IAAI1wC,SAAc,CAACC,EAASyrC,KAC3C,GAA8D,OAA1DxhC,SAASymC,cAAe,sBAAqB9vC,OAE7C,YADAZ,IAIJ,GAAI4P,EAAQrgB,IAAK,CACb,MAAMohD,EAAgB1mC,SAASymC,cAC1B,2BAA0B9gC,EAAQrgB,SAGpB,IAAAqhD,EAAnB,GAAID,EACA1mC,SAAS4mC,KAAKpmC,YAAYkmC,GACZ,QAAdC,EAAAhhC,EAAQkhC,cAAM,IAAAF,GAAdA,EAAAlhD,KAAAkgB,EAER,CAEA,MAAMmhC,EAAS9mC,SAASC,cAAc,UAEtC,IAAI8mC,EACAX,EAAoBC,QAAU,IAC9BU,EAAex1C,YAAW,KAAM,IAAAy1C,EAC5BF,EAAOG,OAAS,KAChBH,EAAOI,QAAU,KACjBlnC,SAAS4mC,KAAKpmC,YAAYsmC,GACZ,QAAdE,EAAArhC,EAAQkhC,cAAM,IAAAG,GAAdA,EAAAvhD,KAAAkgB,GACA67B,EAAO,IAAI3qC,MAAM,uBAAuB,GACzCuvC,EAAoBC,UAG3BS,EAAOnwC,IAAMA,EAETgP,EAAQrgB,MACR8gD,EAAoBE,eAAcj+C,EAAAA,EAAA,GAC3B+9C,EAAoBE,gBAAc,IACrChhD,IAAKqgB,EAAQrgB,OAGrB,IAAK,MAAM6hD,KAAariD,OAAO8C,KAC3Bw+C,EAAoBE,gBAEpBQ,EAAOM,aACF,QAAOD,IACRf,EAAoBE,eAAea,IAG3CL,EAAOh+C,OAAQ,EACfg+C,EAAOG,OAAS,KACRF,GAAcM,aAAaN,GAC/BhxC,GAAS,EAEb+wC,EAAOI,QAAWjqC,IACV8pC,GAAcM,aAAaN,GAC/BvF,EAAOvkC,EAAM,EAEjB+C,SAAS4mC,KAAKvmC,YAAYymC,EAAO,IAGrC,OADAb,EAAevpC,IAAI/F,EAAK6vC,GACjBA,CACX,C,6nDClEuB,IAAIc,OACtB,OAAMC,EAAAA,GAAc5D,KAAK,YAXN,CACpB,SACA,WACA,UACA,aACA,kBACA,aAEA,8BAGsDA,KAAK,SAX/D,MAgCa6D,EACTn3B,IAEA,MAAAo3B,GAIIC,EAAAA,EAAAA,GAA6Br3B,GAHnBs3B,EAAaF,EAAvBnvC,SACYsvC,EAAeH,EAA3B/T,WAGEmU,EAvBex3B,KACrB,GAAIA,EAAYy3B,WAAaz3B,EAAY03B,QAErC,OADkC13B,EAA1B23B,WAAqBjiD,EAAKsqB,EAAWrqB,GAGjD,OAAOqqB,CAAW,EAkBW43B,CAFlBliD,EAAA0hD,EAAAS,IAGLxU,EAAayU,SAASR,GAAiBC,GAAmB,IAAK,IAIrE,OAHIlU,EAAa,IACbmU,EAAqBnU,WAAaA,GAE/BmU,CAAoB,EAkExB,SAASO,EACZ/3B,GAG4CA,EAApCg4B,WAAoCh4B,EAAxBi4B,WACpB,OADuCviD,EAAKsqB,EAAWk4B,EAE3D,CAyCO,MAQDC,EAAYC,GACVA,SAA6C,KAARA,IAAsB,IAARA,EASpD,SAAS99C,EACZhC,EACAsF,GAEA,IAAKu6C,EAAS7/C,GACV,OAAOA,EAOX,GAJoB,CAAC2jB,EAAAA,EAASo8B,UAAW,gBACRn4C,MAC5Bo4C,IAAoC,IAAzBhgD,EAAIzB,QAAQyhD,KAGxB,OAAOhgD,EAGX,IAAKsF,EAED,OADAy3B,EAAAA,EAAAA,GAAQ,iCAAgC/8B,KACjCA,EAGX,GAAIA,EAAIg8C,WAAW,MACf,MAAM,IAAI9tC,MACL,8CAA6ClO,0CAItD,MAAMigD,EAAkB,sBAClBC,EAAY,IAAIC,IAAIngD,EAAKigD,GAM/B,OAJAC,EAAU3vC,SAAW6vC,EACjBF,EAAU3vC,SACVjL,GAEG46C,EAAU9vC,WAAWsD,QAAQusC,EAAiB,GACzD,CAKO,MAAMI,EAAqBr9C,GAC9BvD,IAAAA,MAASuD,EAAQ,CAAEC,mBAAmB,IAY7B80B,EAAiB,SAC1BrQ,GAAmB,IAAAM,EAAAxrB,UAAAC,OAAA,QAAA4R,IAAA7R,UAAA,GAAAA,UAAA,GAMQ,CAAC,EAAC8jD,EAAAt4B,EAJzBgQ,eAAAA,OAAc,IAAAsoB,GAAOA,EAAAC,EAAAv4B,EACrBw4B,OAAAA,OAAM,IAAAD,GAAOA,EAAAE,EAAAz4B,EACb04B,UAAAA,OAAS,IAAAD,GAAOA,EAAAE,EAAA34B,EAChB44B,YAAAA,OAAW,IAAAD,EAAG,SAAQA,EAAA,OAG1BlhD,IAAAA,UAAaioB,EAAa,CACtBsQ,eAAgBA,EAChBwoB,OAAQA,EACRE,UAAWA,EACXE,YAAaA,GACf,EAEAR,EAAoBA,CAACS,EAAcv7C,KAErC,MAAMw7C,EAAa,CACf5iC,KAAM,CACF6iC,cAAeC,EAAAA,GACfC,QAASC,EAAAA,KAGXC,GAAeC,EAAAA,EAAAA,GAAoBP,EAAM,CAC3CC,aACAO,WAAW,IAOf,OAL0BC,EAAAA,EAAAA,GAAsB5hD,EAAAA,EAAC,CAAC,EAC3CyhD,GAAY,IACfJ,cAAeC,EAAAA,GACf9F,OAAQ51C,IAEY,C","sources":["webpack://touchweb/./src/blueprint/theme/icons2/arrow-down.svg","webpack://touchweb/./src/blueprint/theme/icons2/loading.svg","webpack://touchweb/./src/apps/my-tradera/app/components/settings/selling/item-localization.tsx","webpack://touchweb/./src/apps/my-tradera/app/data/shipping-providers.ts","webpack://touchweb/./src/apps/my-tradera/saved-searches/saved-searches-api.ts","webpack://touchweb/./src/apps/registration/components/common/form/form-footer-logo.jsx","webpack://touchweb/./src/apps/registration/components/common/form/form-footer.jsx","webpack://touchweb/./src/components/site-header/hover-menu/constants.ts","webpack://touchweb/./src/components/localization/language-select.module.scss","webpack://touchweb/./src/components/localization/translation-preferred-menu-item.module.scss","webpack://touchweb/./src/components/localization/translation-preferred-menu-item.tsx","webpack://touchweb/./src/components/localization/language-select.tsx","webpack://touchweb/./src/components/localization/shipping-country-select-dropdown.module.scss","webpack://touchweb/./src/components/localization/shipping-country-select-dropdown.tsx","webpack://touchweb/./src/components/localization/shipping-country-select.tsx","webpack://touchweb/./src/components/localization/localization-menu.tsx","webpack://touchweb/./src/components/site-header/localization-link.module.scss","webpack://touchweb/./src/components/site-header/localization-link.tsx","webpack://touchweb/./src/apps/registration/components/common/form/form-header.jsx","webpack://touchweb/./src/apps/registration/components/common/form/select-country.module.scss","webpack://touchweb/./src/components/separator/separator.tsx","webpack://touchweb/./src/apps/registration/components/common/form/select-country.jsx","webpack://touchweb/./src/apps/registration/components/common/kount-session-id-awaiter.js","webpack://touchweb/./src/apps/registration/components/common/user-reg-wrapper.module.scss","webpack://touchweb/./src/apps/registration/components/common/user-reg-wrapper.jsx","webpack://touchweb/./src/apps/registration/helpers/blueshift.js","webpack://touchweb/./src/apps/registration/helpers/event-emitter.js","webpack://touchweb/./src/apps/registration/helpers/get-available-user-registration-countries.js","webpack://touchweb/./src/apps/registration/services/google-tag-manager.js","webpack://touchweb/./src/apps/tradera/components/app-download-badge/app-download-badge.tsx","webpack://touchweb/./src/apps/tradera/components/discover/helpers/search-gtm.js","webpack://touchweb/./src/apps/tradera/components/vip/api/vip-api-constants.ts","webpack://touchweb/./src/apps/tradera/state/wish-list-nudge/reducer.ts","webpack://touchweb/./src/components/item-card/item-card-parts/item-card-image-size.ts","webpack://touchweb/./src/components/messaging/firebase-api.ts","webpack://touchweb/./src/components/portals/loading-portal.jsx","webpack://touchweb/./src/components/quick-view/ajax-item-api.ts","webpack://touchweb/./src/components/quick-view/quick-view-reducer.ts","webpack://touchweb/./src/components/rating-stars/rating-stars.jsx","webpack://touchweb/./src/components/referral-modal/services/referral-modal-api.ts","webpack://touchweb/./src/constants/storage.js","webpack://touchweb/./src/constants/time.ts","webpack://touchweb/./src/constants/ui.ts","webpack://touchweb/./src/hooks/use-is-feature-enabled.ts","webpack://touchweb/./src/lang/translate.tsx","webpack://touchweb/./src/localization/countrycode.js","webpack://touchweb/./src/localization/languagecode.js","webpack://touchweb/./src/localization/use-localized-price-formatter.ts","webpack://touchweb/./src/services/toasts.tsx","webpack://touchweb/./src/state/categories/reducer.js","webpack://touchweb/./src/state/configure-store.tsx","webpack://touchweb/./src/state/discover/actions.js","webpack://touchweb/./src/state/discover/reducer.js","webpack://touchweb/./src/state/environment/selectors.ts","webpack://touchweb/./src/state/items/reducer.ts","webpack://touchweb/./src/state/member-server-storage/member-server-storage-api.ts","webpack://touchweb/./src/state/member/selectors.ts","webpack://touchweb/./src/state/personalisation/helpers.ts","webpack://touchweb/./src/state/personalisation/reducer.ts","webpack://touchweb/./src/state/push-notifications/push-notifications-slice.js","webpack://touchweb/./src/state/services/cart-api.ts","webpack://touchweb/./src/state/services/discover-api.ts","webpack://touchweb/./src/state/services/helpers/saved-searches-storage.js","webpack://touchweb/./src/state/services/member-api.ts","webpack://touchweb/./src/state/services/messaging-stats-api.ts","webpack://touchweb/./src/state/services/touchweb-search-api.ts","webpack://touchweb/./src/state/services/types/webapi-member-generated.ts","webpack://touchweb/./src/state/services/wish-list-api.ts","webpack://touchweb/./src/state/services/wish-list-items-ending-today-api.ts","webpack://touchweb/./src/state/shipping-region/selectors.ts","webpack://touchweb/./src/state/status/reducer.ts","webpack://touchweb/./src/state/ui/actions.js","webpack://touchweb/./src/state/ui/reducer.ts","webpack://touchweb/./src/state/views/cart/reducer.js","webpack://touchweb/./src/state/views/checkout/initial-state.js","webpack://touchweb/./src/state/views/checkout/reducer.js","webpack://touchweb/./src/state/views/report-item/actions.js","webpack://touchweb/./src/state/views/report-item/constants.ts","webpack://touchweb/./src/state/views/report-item/reducer.js","webpack://touchweb/./src/state/views/shipping-calculator/reducer.js","webpack://touchweb/./src/state/views/tradera-shop/actions.js","webpack://touchweb/./src/state/views/tradera-shop/reducer.ts","webpack://touchweb/./src/state/views/view-item/reducer.ts","webpack://touchweb/./src/utils/allowed-buyer-region.ts","webpack://touchweb/./src/utils/api.ts","webpack://touchweb/./src/utils/date.js","webpack://touchweb/./src/utils/http.ts","webpack://touchweb/./src/utils/scheduler.ts","webpack://touchweb/./src/utils/script.ts","webpack://touchweb/./src/utils/url.ts"],"sourcesContent":["function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 9.2l4.9-5 1.4 1.4L8 12 1.7 5.6l1.4-1.4z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.98 3.08a7 7 0 10-.06 9.9l-.77-.78a5.9 5.9 0 11.05-8.35l.78-.77z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.47 1.96L11.1 4.21l2.5.5-.12-2.76z\"\n})));","import { classNames } from 'tradera/utils/class-names';\nimport type { TFunction } from 'i18next';\nimport React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useCurrentLanguage, useTranslator } from 'tradera/lang/translate';\nimport { mapCountryCodeToCountryKey } from 'tradera/localization/countries';\nimport { mapLanguageCodeToLanguageKey } from 'tradera/localization/map-language-code-to-language-key';\nimport { webApiClient } from 'tradera/utils/http';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera/localization/countrycode';\nimport { getLanguageFromCountryCode } from 'tradera/localization/languagecode';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\n\ntype ItemLocalizationProps = {\n itemLocalization: {\n selectedDescriptionLanguageCodeIso2: string;\n shippingFromCountryCodeIso2: string;\n };\n};\n\nexport const ItemLocalization = ({\n itemLocalization\n}: ItemLocalizationProps) => {\n const memberCountryCode = useSelector(selectShippingRegionCountryCodeIso2);\n const { defaultCountryCodeIso2, defaultLanguageCodeIso2 } =\n useDefaultItemLocalizationSettingValues();\n const [\n selectedDescriptionLanguageCodeIso2,\n setSelectedDescriptionLanguageCodeIso2\n ] = useState(\n itemLocalization.selectedDescriptionLanguageCodeIso2 ||\n defaultLanguageCodeIso2\n );\n\n const [shippingFromCountryCodeIso2, setShippingFromCountryCodeIso2] =\n useState(\n itemLocalization.shippingFromCountryCodeIso2 ||\n defaultCountryCodeIso2\n );\n\n if (isSwedenCountryCodeOrUndefined(memberCountryCode)) {\n return null;\n }\n\n const onSelectedDescriptionLanguageChange = (languageCodeIso2: string) => {\n webApiClient.put('/member/profile/selected-description-language', {\n languageCodeIso2\n });\n setSelectedDescriptionLanguageCodeIso2(languageCodeIso2);\n };\n\n const onShippingFromCountryChange = (countryCodeIso2: string) => {\n webApiClient.put('/member/profile/shipping-from-country', {\n countryCodeIso2\n });\n setShippingFromCountryCodeIso2(countryCodeIso2);\n };\n return (\n \n );\n};\n\nexport const getDefaultSelectedDescriptionLanguageCodeIso2 = (\n memberLanguageCodeIso2: string | null,\n memberCountryCodeIso2: string\n) => {\n const countryLanguageCode = getLanguageFromCountryCode(\n memberCountryCodeIso2\n );\n\n return memberLanguageCodeIso2 === countryLanguageCode\n ? countryLanguageCode\n : 'sv';\n};\n\nexport const getDefaultShippingFromCountryCodeIso2 = (\n memberCountryCodeCodeIso2: string\n) => {\n return ['DK', 'SE'].includes(memberCountryCodeCodeIso2)\n ? memberCountryCodeCodeIso2\n : null;\n};\n\nexport const useDefaultItemLocalizationSettingValues = (): {\n defaultCountryCodeIso2: string | null;\n defaultLanguageCodeIso2: string;\n} => {\n const countryCode = useSelector(selectShippingRegionCountryCodeIso2);\n const { language } = useCurrentLanguage();\n\n return {\n defaultCountryCodeIso2:\n getDefaultShippingFromCountryCodeIso2(countryCode),\n defaultLanguageCodeIso2: getDefaultSelectedDescriptionLanguageCodeIso2(\n language,\n countryCode\n )\n };\n};\n\ntype ItemLocalizationSettingsProps = {\n selectedDescriptionLanguageCodeIso2: string;\n shippingFromCountryCodeIso2: string | null;\n onSelectedDescriptionLanguageChange: (languageCodeIso2: string) => void;\n onShippingFromCountryChange: (countryCodeIso2: string) => void;\n narrowSelector?: boolean;\n};\nexport const ItemLocalizationSettings = ({\n selectedDescriptionLanguageCodeIso2,\n shippingFromCountryCodeIso2,\n onSelectedDescriptionLanguageChange,\n onShippingFromCountryChange,\n narrowSelector = false\n}: ItemLocalizationSettingsProps) => {\n const { t } = useTranslator();\n const memberCountryCode = useSelector(selectShippingRegionCountryCodeIso2);\n\n const descriptionLanguages = [\n ...new Set([getLanguageFromCountryCode(memberCountryCode), 'sv', 'en'])\n ].map((code) => getLanguageOption(code, t));\n\n const shippingFromCountries = [\n getCountryOption('SE', t),\n getCountryOption('DK', t)\n ];\n\n const labelClassName = classNames(\n 'col-12',\n narrowSelector ? 'col-md-8' : 'col-md-6'\n );\n const selectorClassName = classNames(\n 'col-12',\n narrowSelector ? 'col-md-4' : 'col-md-6'\n );\n\n const showShippingFrom = ['DK', 'SE'].includes(memberCountryCode);\n const topRowClassName = classNames('row', showShippingFrom && 'mb-4');\n\n return (\n
\n
\n
\n \n {t('myt_settings_selectedDescriptionLanguage')}\n \n
\n {t('myt_settings_selectedDescriptionLanguage_info')}\n
\n
\n
\n \n onSelectedDescriptionLanguageChange(e.target.value)\n }>\n {descriptionLanguages.map(({ value, text }) => (\n \n ))}\n \n
\n
\n {showShippingFrom && shippingFromCountryCodeIso2 && (\n
\n
\n \n {t('myt_settings_shippingFromCountry')}\n \n
\n {t('myt_settings_shippingFromCountry_info')}\n
\n
\n
\n \n onShippingFromCountryChange(e.target.value)\n }>\n {shippingFromCountries.map(({ value, text }) => (\n \n ))}\n \n
\n
\n )}\n
\n );\n};\n\ntype Option = { value: string; text: string };\n\nconst getLanguageOption = (code: string, t: TFunction): Option => ({\n value: code,\n text: t(mapLanguageCodeToLanguageKey(code))\n});\n\nconst getCountryOption = (code: string, t: TFunction): Option => ({\n value: code,\n text: t(mapCountryCodeToCountryKey(code))\n});\n","import { SHIPPING_PROVIDERS } from 'tradera/components/shipping-product/shipping-providers';\nimport type { TranslationFunction } from 'tradera/lang/translate';\n\ninterface ShippingProvider {\n text: string;\n type: SHIPPING_PROVIDERS;\n logoImgUrl: string | null;\n}\n\nconst shippingProviders = (t: TranslationFunction): ShippingProvider[] => [\n {\n text: t('shippingProviders_schenkerPrivpak'),\n type: SHIPPING_PROVIDERS.SCHENKER,\n logoImgUrl: '/static/images/shipping/schenker.svg'\n },\n {\n text: t('shippingProviders_posten'),\n type: SHIPPING_PROVIDERS.POSTNORD,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordParcel'),\n type: SHIPPING_PROVIDERS.POSTNORD_PARCEL,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordStamp'),\n type: SHIPPING_PROVIDERS.POSTNORD_STAMP,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordStamp'),\n type: SHIPPING_PROVIDERS.POSTNORD_STAMP_DENMARK,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_dhl'),\n type: SHIPPING_PROVIDERS.DHL,\n logoImgUrl: '/static/images/shipping/dhl.svg'\n },\n {\n text: t('shippingProviders_dhl'),\n type: SHIPPING_PROVIDERS.DHL_NETHERLANDS,\n logoImgUrl: '/static/images/shipping/dhl.svg'\n },\n {\n text: t('shippingProviders_bussgods'),\n type: SHIPPING_PROVIDERS.BUSSGODS,\n logoImgUrl: '/static/images/shipping/bussgods.svg'\n },\n {\n text: t('shippingProviders_bringDenmark'),\n type: SHIPPING_PROVIDERS.BRING_DENMARK,\n logoImgUrl: '/static/images/shipping/bring.svg'\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_PROVIDERS.ALTERNATIVE,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_PROVIDERS.ALTERNATIVE_DENMARK,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_PROVIDERS.ALTERNATIVE_NETHERLANDS,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_PROVIDERS.TAKE_AWAY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_PROVIDERS.TAKE_AWAY_ONLY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_notSpecified_full'),\n type: SHIPPING_PROVIDERS.NOT_SPECIFIED,\n logoImgUrl: null\n }\n];\n\nconst shippingProvidersMap = (\n t: TranslationFunction\n): Record =>\n shippingProviders(t).reduce(\n (obj, provider) => ({\n ...obj,\n [provider.type]: provider\n }),\n {} as Record\n );\n\nexport const isStampProvider = (provider: SHIPPING_PROVIDERS): boolean =>\n [\n SHIPPING_PROVIDERS.POSTNORD_STAMP,\n SHIPPING_PROVIDERS.POSTNORD_STAMP_DENMARK\n ].indexOf(provider) !== -1;\n\nexport default {\n get: (t: TranslationFunction) => shippingProviders(t),\n map: (t: TranslationFunction) => shippingProvidersMap(t)\n};\n","import qs from 'qs';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport type {\n GetSavedSearchesWithItemsApiResponse,\n SavedsearchesitemsRequest,\n RemoveSavedSearchesApiResponse,\n RemoveSavedSearchesApiRequest,\n SavedSearchEmailNotificationApiRequest,\n SavedSearchEmailNotificationApiResponse\n} from 'tradera/state/services/types/webapi-discover-generated';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\n\nenum Tags {\n SAVED_SEARCHES_LIST = 'SAVED_SEARCHES_LIST'\n}\n\n// This was previously a variable that would keep track of the latest cacheKey.\n// With that we would only update the latest cache key, so if the user goes\n// from page 1 to page 2, and back to page 1, the cache would not be updated for page\n// 1 since page 2 would be the latest cache key.\nconst cacheKeySet = new Set();\nexport const savedSearchesApi = createApi({\n reducerPath: 'savedSearchesApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: Object.keys(Tags),\n endpoints: (builder) => ({\n getSavedSearches: builder.query<\n GetSavedSearchesWithItemsApiResponse,\n SavedsearchesitemsRequest\n >({\n query: (params) => {\n cacheKeySet.add(params);\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/savedsearchesitems?${qs.stringify({\n ...params,\n sortBy: 'Alphabetical'\n })}`;\n },\n providesTags: [Tags.SAVED_SEARCHES_LIST]\n }),\n\n removeSavedSearches: builder.mutation<\n RemoveSavedSearchesApiResponse,\n RemoveSavedSearchesApiRequest\n >({\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/discover/removesavedsearches`,\n method: 'DELETE',\n body: params\n };\n },\n async onQueryStarted(params, { dispatch, queryFulfilled }) {\n for (const cacheKey of cacheKeySet) {\n const patchResult = dispatch(\n savedSearchesApi.util.updateQueryData(\n 'getSavedSearches',\n cacheKey,\n (draft) => {\n // eslint-disable-next-line better-mutation/no-mutation\n draft.savedSearches =\n draft.savedSearches?.filter(\n (item) =>\n !params?.ids?.includes(item.id)\n );\n }\n )\n );\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n }\n },\n invalidatesTags: [Tags.SAVED_SEARCHES_LIST]\n }),\n\n toggleEmailNotification: builder.mutation<\n SavedSearchEmailNotificationApiResponse,\n SavedSearchEmailNotificationApiRequest\n >({\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/discover/savedsearchemailnotification`,\n method: 'POST',\n body: { ...params }\n };\n },\n async onQueryStarted(params, { dispatch, queryFulfilled }) {\n for (const cacheKey of cacheKeySet) {\n const patchResult = dispatch(\n savedSearchesApi.util.updateQueryData(\n 'getSavedSearches',\n cacheKey,\n (draft) => {\n draft.savedSearches?.forEach((item) => {\n if (item.id === params.savedSearchDto?.id) {\n Object.assign(item, {\n hasEnabledEmailNotifications:\n params.savedSearchDto.sendMail\n });\n }\n });\n }\n )\n );\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n }\n }\n })\n })\n});\n\nexport const {\n useGetSavedSearchesQuery,\n useRemoveSavedSearchesMutation,\n useToggleEmailNotificationMutation\n} = savedSearchesApi;\n","import ALink from 'tradera/components/alink/alink';\nimport React from 'react';\nimport { useUrlLocalizer } from 'tradera/lang/translate';\nimport { TraderaLogo } from 'tradera/components/tradera-logo/tradera-logo';\n\nexport const FormFooterLogo = () => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { Trans, useTranslator } from 'tradera/lang/translate';\nimport qs from 'qs';\nimport { FormFooterLogo } from 'tradera/apps/registration/components/common/form/form-footer-logo';\n\nexport const FormFooter = ({ registerLink, isCompanyLink, logoOnly }) => {\n const { t } = useTranslator();\n const countryCodeFromQs = qs.parse(window.location.search, {\n ignoreQueryPrefix: true\n }).countryCode;\n const countryCodeUrlSuffix = countryCodeFromQs\n ? `?countryCode=${countryCodeFromQs}`\n : '';\n\n return (\n
\n {!logoOnly && (\n <>\n
\n \n {isCompanyLink\n ? t('registration_company_link')\n : t('registration_private_link')}\n \n
\n
\n }}\n />\n
\n \n )}\n \n
\n );\n};\n","export const HOVER_MENUS = {\n WISHLIST: 'Wishlist',\n SELL: 'Selling',\n BUY: 'Buying',\n LOCALIZATION: 'Localization',\n CURRENCY: 'Currency',\n HOW_TRADERA_WORKS: 'HowTraderaWorks'\n} as const;\n","// extracted by mini-css-extract-plugin\nexport default {\"language-select\":\"language-select--CAP5u\",\"languageSelect\":\"language-select--CAP5u\",\"language-select-row\":\"language-select-row--ESoX4\",\"languageSelectRow\":\"language-select-row--ESoX4\"};","// extracted by mini-css-extract-plugin\nexport default {\"translation-preferred-form-toggle-input\":\"translation-preferred-form-toggle-input--vxp2V\",\"translationPreferredFormToggleInput\":\"translation-preferred-form-toggle-input--vxp2V\"};","import { touchWebClient } from 'tradera/utils/http';\nimport { selectAutomaticTranslationPreferred } from 'tradera/state/language/selectors';\nimport styles from './translation-preferred-menu-item.module.scss';\nimport { setAutomaticTranslationPreferred } from 'tradera/state/language/reducer';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { selectIsLoggedIn } from 'tradera/state/member/selectors';\nimport { useAppDispatch, useAppSelector } from 'tradera/state/hooks';\n\nexport const TranslationPreferredMenuItem = () => {\n const { t } = useTranslator();\n const dispatch = useAppDispatch();\n const automaticTranslationPreferred = useAppSelector(\n selectAutomaticTranslationPreferred\n );\n const isLoggedIn = useAppSelector(selectIsLoggedIn);\n\n const onAutomaticTranslationPreferredChanged = async (\n e: React.ChangeEvent\n ) => {\n const checked = e.target.checked;\n await touchWebClient.post(\n 'my/profile/save-automatic-translation-preferred-setting',\n { isAutomaticTranslationPreferred: checked }\n );\n\n dispatch(\n setAutomaticTranslationPreferred({\n automaticTranslationPreferred: checked\n })\n );\n };\n return isLoggedIn ? (\n
\n \n {t('profileMenu_translationPreferredHeading')}\n \n \n
\n {t('profileMenu_translationPreferredText')}\n
\n
\n ) : null;\n};\n","import React from 'react';\nimport {\n selectAvailableLanguages,\n selectPreferredLanguage\n} from 'tradera/state/language/selectors';\nimport { setPreferredLanguage } from 'tradera/state/language/actions';\nimport { useTranslator, useUrlLocalizer } from 'tradera/lang/translate';\nimport { SURVEYS } from 'tradera/constants/surveys';\nimport Flag from 'tradera/components/flag/flag';\nimport { getCountryCodeForFlagFromLanguage } from 'tradera/localization/languagecode';\nimport { useQualtive } from 'tradera/hooks/use-qualtive';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport styles from './language-select.module.scss';\nimport { TranslationPreferredMenuItem } from './translation-preferred-menu-item';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { useAppDispatch, useAppSelector } from 'tradera/state/hooks';\n\ntype PlainLanguageSelectProps = {\n inProfileMenu?: boolean;\n title?: string;\n};\n\nexport const LanguageSelect = ({\n inProfileMenu,\n title\n}: PlainLanguageSelectProps) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n const dispatch = useAppDispatch();\n const availableLanguages = useAppSelector(selectAvailableLanguages);\n const preferredLanguage = useAppSelector(selectPreferredLanguage);\n\n const onLanguageChanged = (code: string) => {\n if (preferredLanguage?.languageCodeIso2 === code) {\n return;\n }\n dispatch(setPreferredLanguage(code, toLocalizedUrl));\n };\n return (\n
\n {title && (\n
\n {title}\n
\n )}\n {availableLanguages?.map(({ languageCodeIso2, displayName }) => (\n {\n onLanguageChanged(languageCodeIso2 || '');\n }}\n data-language-select={languageCodeIso2}>\n \n \n {preferredLanguage?.languageCodeIso2 ===\n languageCodeIso2 ? (\n {displayName}\n ) : (\n {displayName}\n )}\n \n {preferredLanguage?.languageCodeIso2 ===\n languageCodeIso2 && (\n \n )}\n \n ))}\n \n {isQualtiveEnabled && (\n
\n {t('siteHeader_languageDisclaimerShort')} \n openQualtiveModal(SURVEYS.language)}>\n {t('siteHeader_languageLeaveFeedBack')}\n \n
\n )}\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"shipping-country-flag\":\"shipping-country-flag--awFdJ\",\"shippingCountryFlag\":\"shipping-country-flag--awFdJ\"};","import { useState } from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport Flag from 'tradera/components/flag/flag';\nimport { classNames } from 'tradera/utils/class-names';\nimport { SearchInput } from 'tradera/components/form-controls/search-input/search-input';\nimport { DropdownButton } from 'tradera/components/dropdown-button/dropdown-button';\n\nimport styles from './shipping-country-select-dropdown.module.scss';\n\ntype ShippingCountry = {\n name: string;\n countryCodeIso2: string;\n};\n\ntype ShippingCountrySelectDropdownProps = {\n shippingCountries: ShippingCountry[];\n selectedShippingCountryCodeIso2: string;\n onSelect: (countryCodeIso2: string) => void;\n className?: string;\n itemsBeforeScrollCount?: number;\n shippingCountryPlaceholder?: string;\n relative?: boolean;\n style?: React.CSSProperties;\n};\n\nexport const ShippingCountrySelectDropdown = ({\n shippingCountries,\n selectedShippingCountryCodeIso2,\n onSelect,\n className,\n itemsBeforeScrollCount = 5,\n shippingCountryPlaceholder,\n relative,\n style = {}\n}: ShippingCountrySelectDropdownProps) => {\n const { t } = useTranslator();\n const [search, setSearch] = useState('');\n const [isSearchEnabled, setIsSearchEnabled] = useState(false);\n const includesSearch = (v: string) =>\n v.toLowerCase().includes(search.toLowerCase());\n const filteredShippingCountries = shippingCountries.filter(\n ({ name, countryCodeIso2 }) =>\n includesSearch(name) || includesSearch(countryCodeIso2)\n );\n const selectedShippingCountryName = shippingCountries.find(\n (x) =>\n x.countryCodeIso2 === selectedShippingCountryCodeIso2.toLowerCase()\n )?.name;\n\n const paddingHeight = 7;\n const listLength =\n filteredShippingCountries.length === 0\n ? 1\n : filteredShippingCountries.length;\n const minOfListOrItemsBeforeScrollCount = Math.min(\n listLength,\n itemsBeforeScrollCount\n );\n const height =\n paddingHeight +\n minOfListOrItemsBeforeScrollCount * 35 +\n (listLength <= itemsBeforeScrollCount ? 0 : 21);\n const listStyle: React.CSSProperties = {\n height: `${height}px`,\n width: '100%',\n zIndex: 1,\n overflowY: 'auto',\n ...style\n };\n\n return (\n
\n {!isSearchEnabled ? (\n {\n setIsSearchEnabled(true);\n }}\n icon={\n \n }>\n {selectedShippingCountryName}\n \n ) : (\n setSearch(e.target.value)}\n onBlur={() => {\n setTimeout(() => {\n setIsSearchEnabled(false);\n }, 100);\n }}\n onClear={() => setIsSearchEnabled(false)}\n />\n )}\n {isSearchEnabled && (\n
\n e.preventDefault()}\n style={listStyle}>\n
\n {filteredShippingCountries.length > 0 ? (\n <>\n {filteredShippingCountries.map(\n (shippingCountry) => (\n {\n setIsSearchEnabled(false);\n onSelect(\n shippingCountry.countryCodeIso2\n );\n }}>\n \n {shippingCountry.name}\n
\n )\n )}\n \n ) : (\n
\n {t('siteHeader_shippingCountryNoResults')}\n
\n )}\n
\n
\n \n )}\n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport {\n selectAvailableShippingCountryCodes,\n selectShippingCountry,\n selectIsLoadingAvailableShippingCountries,\n selectHasLoadedAvailableShippingCountries\n} from 'tradera/state/shipping-region/selectors';\nimport {\n updateShippingRegion,\n getAvailableShippingCountries\n} from 'tradera/state/shipping-region/actions';\nimport { ShippingCountrySelectDropdown } from './shipping-country-select-dropdown';\nimport Load from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport { mapCountryCodeToCountryKey } from 'tradera/localization/countries';\nimport { useAppDispatch, useAppSelector } from 'tradera/state/hooks';\n\nexport const ShippingCountrySelect = () => {\n const { t } = useTranslator();\n const dispatch = useAppDispatch();\n const shippingCountry = useAppSelector(selectShippingCountry);\n const shippingCountryCodes = useAppSelector(\n selectAvailableShippingCountryCodes\n );\n const isLoadingAvailableShippingCountries = useAppSelector(\n selectIsLoadingAvailableShippingCountries\n );\n const showShippingCountries =\n useAppSelector(selectHasLoadedAvailableShippingCountries) &&\n !isLoadingAvailableShippingCountries;\n\n const shippingCountries = useMemo(\n () =>\n shippingCountryCodes.map((countryCodeIso2) => ({\n countryCodeIso2,\n name: t(mapCountryCodeToCountryKey(countryCodeIso2))\n })),\n [t, shippingCountryCodes]\n );\n useEffect(() => {\n dispatch(getAvailableShippingCountries());\n }, [dispatch]);\n\n return (\n
\n \n {t('siteHeader_shippingCountry')}\n \n {isLoadingAvailableShippingCountries && (\n
\n \n
\n )}\n {showShippingCountries && (\n {\n dispatch(updateShippingRegion(countryCodeIso2));\n }}\n />\n )}\n
\n );\n};\n","import { LanguageSelect } from './language-select';\nimport { ShippingCountrySelect } from './shipping-country-select';\nimport { useTranslator } from 'tradera/lang/translate';\n\ntype LocalizationMenuProps = {\n showRegionSelection: boolean;\n};\n\nexport const LocalizationMenu = ({\n showRegionSelection\n}: LocalizationMenuProps) => {\n const { t } = useTranslator();\n return (\n
\n {showRegionSelection && (\n <>\n \n
\n \n )}\n \n
\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"flag\":\"flag--TeCvn\"};","import { GtmService } from 'tradera/services/google-tagmanager-service';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { selectPreferredLanguageCode } from 'tradera/state/language/selectors';\nimport {\n selectShowLocalizationRegionPicker,\n selectShowRegionSelection\n} from 'tradera/state/shipping-region/selectors';\nimport HoverMenu from './hover-menu/hover-menu';\nimport hoverMenuStyles from './hover-menu/hover-menu.module.scss';\nimport { LocalizationMenu } from 'tradera/components/localization/localization-menu';\nimport TranslateIcon from '@tradera/blueprint/theme/icons2/translate.svg?jsx';\nimport { getCountryCodeForFlagFromLanguage } from 'tradera/localization/languagecode';\nimport Flag from 'tradera/components/flag/flag';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { classNames } from 'tradera/utils/class-names';\nimport { useAppSelector } from 'tradera/state/hooks';\n\nimport styles from './localization-link.module.scss';\n\ntype LocalizationLinkProps = {\n onClick: (e: React.MouseEvent, menu: string) => void;\n mouseOver: (menu: string) => void;\n mouseOut: () => void;\n showMenu: boolean;\n hideRegionSelection?: boolean;\n showIconAndTextInsteadOfFlag?: boolean;\n};\n\nexport const LocalizationLink = ({\n onClick,\n mouseOver,\n mouseOut,\n hideRegionSelection,\n showMenu,\n showIconAndTextInsteadOfFlag = false\n}: LocalizationLinkProps) => {\n const { t } = useTranslator();\n\n const preferredLanguageCode = useAppSelector(selectPreferredLanguageCode);\n const showRegionSelectionAppState = useAppSelector(\n selectShowRegionSelection\n );\n const showRegionSelection =\n !hideRegionSelection && showRegionSelectionAppState;\n const showLocalizationRegionPicker = useAppSelector(\n selectShowLocalizationRegionPicker\n );\n\n const countryCode = getCountryCodeForFlagFromLanguage(\n preferredLanguageCode\n );\n\n return (\n \n mouseOver(HOVER_MENUS.LOCALIZATION)}\n onMouseLeave={mouseOut}>\n {\n GtmService.trackAction(\n 'Top navigation',\n 'Localization menu',\n 'Open/Close'\n );\n onClick(e, HOVER_MENUS.LOCALIZATION);\n }}>\n {showIconAndTextInsteadOfFlag ? (\n \n \n {t('siteHeader_localizationLink_language')}\n \n ) : (\n \n \n \n )}\n \n \n \n \n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { LocalizationLink } from 'tradera/components/site-header/localization-link';\nimport BackIcon from '@tradera/blueprint/theme/icons2/back.svg?jsx';\nimport { useTranslator } from 'tradera/lang/translate';\nimport useIsMobile from 'tradera/hooks/use-is-mobile';\nimport { Button } from 'tradera/components/atoms/button/button';\n\nexport const SwedenCountryCode = 'se';\n\nconst FormHeader = ({ showLanguageMenu, onBack }) => {\n const { t } = useTranslator();\n const isMobile = useIsMobile();\n const [showMenu, setShowMenu] = useState(false);\n\n const isNativeAppContext = useSelector(\n (state) => state.environment.isNativeAppContext\n );\n\n return (\n
\n
\n {!!onBack && (\n \n )}\n
\n
\n {showLanguageMenu && !isNativeAppContext && (\n \n setShowMenu(true)}\n mouseOut={() => setShowMenu(false)}\n onClick={() => setShowMenu(!showMenu)}\n onBlur={() => setShowMenu(false)}\n showMenu={showMenu}\n transparentHeader={true}\n showIconAndTextInsteadOfFlag={true}\n hideRegionSelection={true}\n />\n \n )}\n
\n
\n );\n};\nexport default FormHeader;\n","// extracted by mini-css-extract-plugin\nexport default {\"country-select\":\"country-select--CeA2U\",\"countrySelect\":\"country-select--CeA2U\"};","import { classNames } from 'tradera/utils/class-names';\nimport React from 'react';\n\nimport styles from './separator.module.scss';\n\ntype SeparatorProps = { className?: string; thick?: boolean };\n\nexport const VerticalSeparator = ({\n className,\n thick = false\n}: SeparatorProps) => (\n \n);\n\nexport const HorizontalSeparator = ({\n className,\n thick = false\n}: SeparatorProps) => (\n \n);\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport Flag from 'tradera/components/flag/flag';\nimport styles from './select-country.module.scss';\nimport { mapCountryCodeToCountryKey } from 'tradera/localization/countries';\nimport { classNames } from 'tradera/utils/class-names';\nimport { HorizontalSeparator } from 'tradera/components/separator/separator';\n\nexport const SelectCountry = ({\n availableCountries,\n selectedCountryCodeIso2,\n onCountrySelected,\n className\n}) => {\n const { t } = useTranslator();\n\n const filteredCountries = availableCountries.filter(\n ({ code }) => code !== selectedCountryCodeIso2\n );\n const onChange = (selectedValue) => {\n if (selectedValue.length !== 2) {\n return;\n }\n\n onCountrySelected(selectedValue);\n };\n\n return (\n <>\n \n
\n \n onChange(e.target.value)}>\n \n {filteredCountries.map((item, index) => (\n \n ))}\n \n
\n \n );\n};\n","export const waitForCountSessionId = async () => {\n const maxRetries = 3;\n let retryCount = 0;\n\n return new Promise((resolve) => {\n if (!window?.ka) {\n resolve();\n }\n\n const tryGetKountSessionId = () => {\n if (window.ka.collectEnd || retryCount > maxRetries) {\n resolve(window.ka.sessionId);\n }\n // eslint-disable-next-line better-mutation/no-mutation\n retryCount++;\n setTimeout(tryGetKountSessionId, 500 * retryCount);\n };\n tryGetKountSessionId();\n });\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"user-reg-wrapper\":\"user-reg-wrapper--QKYEl\",\"userRegWrapper\":\"user-reg-wrapper--QKYEl\",\"user-reg-wrapper-image\":\"user-reg-wrapper-image--BABgB\",\"userRegWrapperImage\":\"user-reg-wrapper-image--BABgB\",\"user-reg-content\":\"user-reg-content--rR19J\",\"userRegContent\":\"user-reg-content--rR19J\"};","import React from 'react';\nimport styles from './user-reg-wrapper.module.scss';\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera/constants/breakpoints';\nimport MediaQuery from 'react-responsive';\n\nexport const UserRegWrapper = ({ children }) => {\n return (\n
\n \n
\n \n
\n
\n \n {children}\n
\n \n );\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { isServer } from 'tradera/utils/nextjs';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation may not compatible with SSR where global properties are shared between server instances'\n );\n}\n\nlet acceptsMarketing = true;\n\nexport function setAcceptsMarketing(accepts = true) {\n acceptsMarketing = accepts;\n}\n\nexport function getAcceptsMarketing() {\n return !!acceptsMarketing;\n}\n\nexport function triggerUserSignedUpEvent(memberId, memberEmail) {\n const data = {\n event: 'blueshiftSignupEvent',\n memberId,\n memberEmail,\n memberMarketingSubscribed: acceptsMarketing\n };\n window.dataLayer.push(data);\n}\n","/* eslint-disable better-mutation/no-mutation */\n'use strict';\n\nimport { isServer } from 'tradera/utils/nextjs';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation may not compatible with SSR where global properties are shared between server instances'\n );\n}\n\nconst EventEmitter = (function () {\n const _queue = {};\n\n const _dispatch = function (event, payload) {\n const callbacks = _queue[event];\n\n if (typeof callbacks === 'undefined') {\n return false;\n }\n\n callbacks.forEach(function (callback) {\n callback(payload);\n });\n\n return true;\n };\n\n const _subscribe = function (event, callback) {\n if (typeof _queue[event] === 'undefined') {\n _queue[event] = [];\n }\n\n _queue[event].push(callback);\n };\n\n return {\n dispatch: _dispatch,\n subscribe: _subscribe\n };\n})();\n\nexport default EventEmitter;\n","import {\n getAvailableCountries,\n mapCountryCodeToCountryKey\n} from 'tradera/localization/countries';\n\nconst topCountries = ['se', 'dk', 'fi', 'de', 'no', 'nl', 'fr'];\n\nexport const getAvailableUserRegistrationCountries = (t) => {\n return [\n ...topCountries.map((code) => ({\n code,\n name: t(mapCountryCodeToCountryKey(code))\n })),\n { code: null, name: ' ' },\n ...getAvailableCountries(t)\n ];\n};\n","'use strict';\n\nconst GoogleTagManager = {\n pushToDataLayer: function (payload) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(payload);\n },\n\n trackEvent: function (analyticsData) {\n const payload = {\n event: 'trackEvent',\n eventCategory: analyticsData.category || '',\n eventAction: analyticsData.action || '',\n eventLabel: analyticsData.label || '',\n eventValue: analyticsData.value || '0',\n eventNonInteractive: this._isNonInteractive(analyticsData),\n hitCallback: analyticsData.hitCallback\n };\n\n if (analyticsData.memberId > 0) {\n payload['memberId'] = analyticsData.memberId.toString();\n }\n\n this.pushToDataLayer(payload);\n },\n\n trackPageView: function () {\n const payload = {\n event: 'trackPageview',\n customPageUrl: window.location.pathname + window.location.hash\n };\n this.pushToDataLayer(payload);\n },\n\n _isNonInteractive: function (analyticsData) {\n if (analyticsData.userTriggered === undefined) {\n return true;\n }\n return !analyticsData.userTriggered;\n }\n};\n\nexport default GoogleTagManager;\n","import { useCurrentLanguage, useTranslator } from 'tradera/lang/translate';\nimport AppstoreBadgeEn from 'tradera/blueprint/theme/logos/app-store-badge-en.svg?next-image';\nimport AppstoreBadgeSv from 'tradera/blueprint/theme/logos/app-store-badge-sv.svg?next-image';\nimport AppstoreBadgeDa from 'tradera/blueprint/theme/logos/app-store-badge-da.svg?next-image';\nimport AppstoreBadgeDe from 'tradera/blueprint/theme/logos/app-store-badge-de.svg?next-image';\nimport AppstoreBadgeNl from 'tradera/blueprint/theme/logos/app-store-badge-nl.svg?next-image';\nimport AppstoreBadgeFr from 'tradera/blueprint/theme/logos/app-store-badge-fr.svg?next-image';\nimport GooglePlayBadgeEn from 'tradera/blueprint/theme/logos/google-play-badge-en.svg?next-image';\nimport GooglePlayBadgeSv from 'tradera/blueprint/theme/logos/google-play-badge-sv.svg?next-image';\nimport GooglePlayBadgeDa from 'tradera/blueprint/theme/logos/google-play-badge-da.svg?next-image';\nimport GooglePlayBadgeDe from 'tradera/blueprint/theme/logos/google-play-badge-de.svg?next-image';\nimport GooglePlayBadgeNl from 'tradera/blueprint/theme/logos/google-play-badge-nl.svg?next-image';\nimport GooglePlayBadgeFr from 'tradera/blueprint/theme/logos/google-play-badge-fr.svg?next-image';\n\ntype BadgeMap = {\n [key: string]: string | undefined;\n};\n\nconst googlePlayBadges: BadgeMap = {\n sv: GooglePlayBadgeSv,\n da: GooglePlayBadgeDa,\n de: GooglePlayBadgeDe,\n fr: GooglePlayBadgeFr,\n nl: GooglePlayBadgeNl,\n en: GooglePlayBadgeEn\n};\n\nexport const GooglePlayBadge = ({ height = '30' }) => {\n const { language } = useCurrentLanguage();\n const { t } = useTranslator();\n\n const badge = googlePlayBadges[language] ?? googlePlayBadges['en'];\n\n return (\n \n );\n};\n\nconst appleStoreBadges: BadgeMap = {\n sv: AppstoreBadgeSv,\n da: AppstoreBadgeDa,\n de: AppstoreBadgeDe,\n fr: AppstoreBadgeFr,\n nl: AppstoreBadgeNl,\n en: AppstoreBadgeEn\n};\n\ntype AppstoreProps = {\n height?: string;\n className?: string;\n};\n\nexport const AppstoreBadge = ({ height = '30', className }: AppstoreProps) => {\n const { language } = useCurrentLanguage();\n const { t } = useTranslator();\n\n const badge = appleStoreBadges[language] ?? googlePlayBadges['en'];\n\n return (\n \n );\n};\n","/**\n * This is a helper class for sending google analytics events for the search experience\n * This is a wrapper for the GtmService. Do not call GTM or GA directly but use the GtmService.\n * Events tracked by this file set all GA categories to \"Search\" to namespace events\n */\nimport { GtmService } from 'tradera/services/google-tagmanager-service';\n\nconst GA_EVENT_SEARCH_CATEGORY = 'Search';\nexport const GA_EVENT_SAVE_SEARCH = 'Saved Search';\nexport const GA_EVENT_SAVE_SEARCH_MODAL = 'Save search modal';\nexport const GA_EVENT_SAVE_SEARCH_RELATED = 'Save search related';\nexport const GA_EVENT_SAVE_SEARCH_STICKY = 'Save search sticky';\nexport const GA_EVENT_SAVE_SEARCH_BANNER = 'Save search banner';\n\nconst filterNameMappings = {\n itemCondition: 'Condition',\n itemType: 'Ad Format',\n sellerType: 'Seller Type',\n county: 'Geo - Selected',\n countyBox: 'Geo',\n itemStatus: 'Item Status',\n shoeTypes: 'Type',\n subDepartments: 'Department',\n shoeSizes: 'Size',\n brandTags: 'Brand',\n sortBy: 'Sorting',\n price: 'Price',\n Layout: 'Layout'\n};\n\n/**\n * Generic action tracker for things that happen in the Search.\n * @param {string} action\n * @param {string} label\n */\nexport const trackAction = (action, label) => {\n GtmService.trackAction(GA_EVENT_SEARCH_CATEGORY, action, label);\n};\n\nconst getFilterLabel = (key) => {\n if (key in filterNameMappings) {\n return filterNameMappings[key];\n } else {\n return key;\n }\n};\n\n/**\n * translates the tech names of the filters to ga friendly names. to see the techie names a filter has\n * see the URL paramters on a search or a browse page.\n * @param {string} filter the name of the filter\n * @param {string} value the value the filter gets\n */\nexport const trackFilter = (filter, value) => {\n const action = getFilterLabel(filter);\n trackAction(`Filter ${action}`, value);\n};\n\nexport const trackButton = (label) => {\n trackAction('Button', label);\n};\n\nexport const trackLink = (action, label) => {\n trackAction(`Link - ${action}`, label);\n};\n\nexport const trackPriceFilter = (fromPrice, toPrice) => {\n // get a label that represents the current selected value\n const lbl = [];\n if (fromPrice !== '1' && typeof fromPrice !== 'undefined') {\n lbl.push('Min set');\n }\n if (typeof toPrice !== 'undefined') {\n lbl.push('Max set');\n }\n if (lbl.length === 0) {\n lbl.push('All');\n }\n trackAction(`Filter Price`, lbl.join(' and '));\n};\n\n/**\n * Tracks to google tag manager that a new search was made\n * @param {object} searchResults data returned fromm ajax when doing a search or browsing.\n * Note: needs to be the normalized version.\n */\nexport const trackNewSearch = (categoryPath, itemIds, metaTitle) => {\n if (typeof categoryPath === 'undefined' || categoryPath.length === 0) {\n return;\n }\n\n const reverseCategoryPath = categoryPath\n .filter((c) => c.id > 0)\n .map((c) => c.name)\n .reverse();\n\n GtmService.trackGtmEvent('viewCategory', {\n category: reverseCategoryPath.join(' > ')\n });\n\n GtmService.push({\n 'page.content-group-2': reverseCategoryPath.slice(0, 3).join(' > '),\n categoryId: categoryPath.length > 0 ? categoryPath[0].id : null\n });\n\n if (itemIds && itemIds.length >= 3) {\n GtmService.trackGtmEvent('viewItems', {\n itemIds: itemIds.slice(0, 3),\n keywords: categoryPath[0].name\n });\n }\n\n GtmService.push({\n ga_page_title: metaTitle\n });\n};\n","enum BID_VALIDATION_RESULTS {\n AUCTION_HAS_ENDED = 'AuctionHasEnded',\n AUCTION_HAS_NOT_STARTED = 'AuctionHasNotStarted',\n BELOW_MINIMUM = 'BelowMinimum',\n BELOW_OWN_LEADING_BID = 'BelowOwnLeadingBid',\n BELOW_RESERVE_PRICE = 'BelowReservePrice',\n BID_NOT_FOUND = 'BidNotFound',\n BIDDER_IS_BLOCKED = 'BidderIsBlocked',\n BUYING_LIMIT_REACHED = 'BuyingLimitReached',\n EQUAL_OR_HIGHER_THAN_BUY_IT_NOW = 'EqualOrHigherThanBuyItNow',\n HIGHER_BIDDER_EXISTS = 'HigherBidderExists',\n ITEM_NO_LONGER_AVAILABLE = 'ItemNoLongerAvailable',\n ITEM_NOT_FOUND = 'ItemNotFound',\n LEADING_BIDDER = 'LeadingBidder',\n NO_LONGER_VALID = 'NoLongerValid',\n ONLY_EU_BUYERS_ACCEPTED = 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED = 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED = 'OnlySwedishBuyersAccepted',\n SUCCESSFULLY_CHANGED_AUTOBID = 'SuccessfullyChangedAutoBid',\n USER_IS_SUSPENDED = 'UserIsSuspended',\n MAX_PLACED_BIDS_LIMIT = 'MaxPlacedBidsLimit',\n BID_AMOUNT_LIMIT = 'BidAmountLimit',\n OFFLINE = 'Offline'\n}\n\nconst BID_VALIDATION_SUCCESSES: string[] = [\n BID_VALIDATION_RESULTS.LEADING_BIDDER,\n BID_VALIDATION_RESULTS.SUCCESSFULLY_CHANGED_AUTOBID\n];\n\nconst BID_VALIDATION_RETRY: string[] = [\n BID_VALIDATION_RESULTS.BELOW_MINIMUM,\n BID_VALIDATION_RESULTS.BELOW_RESERVE_PRICE,\n BID_VALIDATION_RESULTS.BELOW_OWN_LEADING_BID,\n BID_VALIDATION_RESULTS.OFFLINE\n];\n\nconst BIN_VALIDATION_RESULTS = {\n ITEM_NOT_FOUND: 'ItemNotFound',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n ITEM_HAS_ENDED: 'ItemHasEnded',\n ITEM_ALREADY_PURCHASED_BY_OTHER_USER: 'ItemAlreadyPurchasedByOtherUser',\n PURCHASE_DID_NOT_SUCCEED: 'PurchaseDidNotSucceed'\n};\n\nexport {\n BID_VALIDATION_RESULTS,\n BID_VALIDATION_SUCCESSES,\n BID_VALIDATION_RETRY,\n BIN_VALIDATION_RESULTS\n};\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport GdprSettings from 'tradera/utils/gdpr-settings';\nimport cookieUtil from 'tradera/utils/cookie';\nimport {\n WISH_LIST_NOTIFICATION_DISPLAY_COUNT,\n WISH_LIST_NOTIFICATION_HIDDEN\n} from 'tradera/constants/cookies';\n\nconst slice = createSlice({\n name: 'wishListNudge',\n initialState: { wishListNudgeHidden: false },\n reducers: {\n shouldShowWishListNudge: {\n reducer: (\n state,\n action: PayloadAction<{ wishListNudgeHidden: boolean }>\n ) => {\n const { payload } = action;\n state.wishListNudgeHidden = payload.wishListNudgeHidden;\n },\n prepare: () => {\n const isHidden =\n cookieUtil.readCookie(WISH_LIST_NOTIFICATION_HIDDEN) ===\n 'true' || GdprSettings.isFunctionalEnabled() === false;\n\n if (isHidden) return { payload: { wishListNudgeHidden: true } };\n return { payload: { wishListNudgeHidden: false } };\n }\n },\n hideWishListNudge: {\n reducer: (state) => {\n state.wishListNudgeHidden = true;\n },\n prepare: () => {\n cookieUtil.createCookie(\n WISH_LIST_NOTIFICATION_HIDDEN,\n true,\n Infinity\n );\n cookieUtil.eraseCookie(WISH_LIST_NOTIFICATION_DISPLAY_COUNT);\n return { payload: {} };\n }\n }\n }\n});\n\nexport const { shouldShowWishListNudge, hideWishListNudge } = slice.actions;\n\nexport const wishListNudge = slice.reducer;\n","import { ITEM_LAYOUT } from 'tradera/constants/ui';\n\ntype PixelDensity = '1x' | '1.5x' | '2x' | '3x';\n// Resolutions are square (equal width & height) that match img-proxy nginx config\n// `small` is a 250px JPG fallback for Safari 14-15.6 on macOS 10.x - the rest are WEBP\ntype ItemImageResolution = 250 | 500 | 750 | 1000 | 'small';\n\nconst DEFAULT_RESOLUTION: ItemImageResolution = 500;\n\nexport type SrcSetMap = {\n [key in PixelDensity]?: ItemImageResolution;\n};\n\ntype PixelDensityResolution = {\n [key in ItemImageResolution]?: SrcSetMap;\n};\n\nconst pixelDensityResolution: PixelDensityResolution = {\n 250: {\n '1x': 250,\n '2x': 250,\n '3x': 500\n },\n 500: {\n '1x': 250,\n '1.5x': 250,\n '2x': 500\n },\n 750: {\n '1x': 500,\n '1.5x': 750\n }\n};\n\nconst pixelDensityResolutionDesktop: PixelDensityResolution = {\n 250: {\n '1x': 250,\n '2x': 500,\n '3x': 750\n },\n 500: {\n '1x': 500,\n '1.5x': 750,\n '2x': 1000\n },\n 750: {\n '1x': 750,\n '1.5x': 1000\n }\n};\n\ntype LayoutImageResolution = {\n [key in ITEM_LAYOUT]: ItemImageResolution;\n};\n\nconst layoutImageResolution: LayoutImageResolution = {\n [ITEM_LAYOUT.LIST]: 250,\n [ITEM_LAYOUT.GRID]: 250,\n [ITEM_LAYOUT.GRID_MEDIUM]: 500,\n [ITEM_LAYOUT.GRID_LARGE]: 750\n};\n\nconst fullWidthLayoutImageResolution: LayoutImageResolution = {\n [ITEM_LAYOUT.LIST]: 250,\n [ITEM_LAYOUT.GRID]: 500,\n [ITEM_LAYOUT.GRID_MEDIUM]: 750,\n [ITEM_LAYOUT.GRID_LARGE]: 750\n};\n\ntype ImageSizeArgs = {\n itemLayout?: ITEM_LAYOUT;\n isSiteWidthFull?: boolean;\n isMobile?: boolean;\n};\n\nexport const getItemLayoutSrcSet = ({\n itemLayout = ITEM_LAYOUT.GRID,\n isSiteWidthFull = false,\n isMobile = false\n}: ImageSizeArgs) => {\n const imageResolution = isSiteWidthFull\n ? fullWidthLayoutImageResolution[itemLayout]\n : layoutImageResolution[itemLayout];\n\n return isMobile\n ? pixelDensityResolution[imageResolution]\n : pixelDensityResolutionDesktop[imageResolution];\n};\n\nexport const getSrc = (\n src: string,\n placeholder: string | RegExp,\n resolution?: ItemImageResolution\n) => src.replace(placeholder, `${resolution || DEFAULT_RESOLUTION}-square`);\n\nexport const getSrcSet = (\n src: string,\n placeholder: string | RegExp,\n srcSetMap?: SrcSetMap\n) => {\n if (!srcSetMap) {\n return getSrc(src, placeholder, DEFAULT_RESOLUTION);\n }\n\n return Object.entries(srcSetMap)\n .map(\n ([pixelDensity, resolution]) =>\n `${getSrc(src, placeholder, resolution)} ${pixelDensity}`\n )\n .join(', ');\n};\n","import type {\n BaseQueryApi,\n BaseQueryFn,\n FetchArgs,\n FetchBaseQueryError\n} from '@reduxjs/toolkit/query/react';\nimport { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';\nimport type {\n AddMessageRequest,\n AddMessageResponse,\n GetProfileResponse,\n InitiateThreadRequest,\n InitiateThreadResponse,\n FirebaseIdToken,\n FirebaseRefreshedIdToken\n} from 'tradera/components/messaging/firebase.types';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport type { RootState } from '../../state/configure-store';\nimport { receivedFirebaseIdToken } from 'tradera/state/auth/reducer';\nimport { memberApi } from 'tradera/state/services/member-api';\nimport type { FirebaseConfiguration } from 'tradera/state/services/types/webapi-member-generated';\n\nconst identitytoolkitBaseQuery = fetchBaseQuery({\n prepareHeaders: (headers) => {\n headers.set('Accept', 'application/json');\n headers.set('Content-Type', 'application/json');\n return headers;\n },\n baseUrl: 'https://identitytoolkit.googleapis.com/v1/'\n});\n\nexport const firebaseBaseQueryFn: BaseQueryFn<\n FetchArgs & { firebaseConfiguration: FirebaseConfiguration },\n unknown,\n FetchBaseQueryError\n> = async (args, api, extraOptions) => {\n const firebaseConfiguration = args?.firebaseConfiguration;\n if (!firebaseConfiguration) {\n return {\n error: {\n status: 400,\n statusText: 'Bad Request',\n data: 'No Messaging configuration found'\n }\n };\n }\n\n const baseUrl = `https://${firebaseConfiguration.region}-${firebaseConfiguration.projectId}.cloudfunctions.net`;\n return firebaseBaseQuery(baseUrl)(args, api, extraOptions);\n};\n\nconst firebaseBaseQuery = (baseUrl: string) =>\n fetchBaseQuery({\n prepareHeaders: (headers, { getState }) => {\n const token = (getState() as RootState).auth.firebaseIdToken;\n if (token) {\n headers.set('authorization', `Bearer ${token.idToken}`);\n }\n headers.set('Accept', 'application/json');\n headers.set('Content-Type', 'application/json');\n return headers;\n },\n baseUrl\n });\n\nconst getToken = async (\n api: BaseQueryApi,\n extraOptions: object,\n firebaseConfiguration: FirebaseConfiguration\n): Promise => {\n const customTokenResult = (await isomorphicWebApiBaseQuery(\n {\n url: '/api/webapi/auth/firebase-token',\n method: 'POST',\n body: { projectId: firebaseConfiguration.projectId }\n },\n api,\n extraOptions\n )) as { data?: { token: string } };\n\n const result = await identitytoolkitBaseQuery(\n {\n url: `accounts:signInWithCustomToken?key=${firebaseConfiguration.apiKey}`,\n method: 'POST',\n body: {\n token: customTokenResult.data?.token ?? '',\n returnSecureToken: true\n }\n },\n api,\n extraOptions\n );\n return result.data as FirebaseIdToken;\n};\n\nexport const firebaseApi = createApi({\n reducerPath: 'firebaseApi',\n baseQuery: async (args, api, extraOptions) => {\n const currentIdToken = (api.getState() as RootState).auth\n .firebaseIdToken;\n const { data: messagingConfiguration = {} } = await api.dispatch(\n memberApi.endpoints.getMessagingConfiguration.initiate(undefined)\n );\n const firebaseConfiguration =\n messagingConfiguration?.firebaseConfiguration;\n if (!firebaseConfiguration) {\n return {\n error: {\n status: 400,\n statusText: 'Bad Request',\n data: 'No Messaging configuration found'\n }\n };\n }\n const argsWithFirebaseConfiguration = {\n ...args,\n firebaseConfiguration\n };\n\n let result;\n if (currentIdToken?.idToken) {\n result = await firebaseBaseQueryFn(\n argsWithFirebaseConfiguration,\n api,\n extraOptions\n );\n if (result.error && result.error.status === 401) {\n const refreshedIdTokenQuery = await identitytoolkitBaseQuery(\n {\n url: `token?key=${firebaseConfiguration.apiKey}`,\n method: 'POST',\n body: {\n grant_type: 'refresh_token',\n refresh_token: currentIdToken.refreshToken\n }\n },\n api,\n extraOptions\n );\n\n //Not sure why but when refreshing the token the object names have underscores instead of camelCase\n const refreshedTokenData =\n refreshedIdTokenQuery?.data as FirebaseRefreshedIdToken;\n api.dispatch(\n receivedFirebaseIdToken({\n idToken: refreshedTokenData.id_token,\n refreshToken: refreshedTokenData.refresh_token,\n expiresIn: refreshedTokenData.expires_in\n })\n );\n result = await firebaseBaseQueryFn(\n argsWithFirebaseConfiguration,\n api,\n extraOptions\n );\n }\n } else {\n const token = await getToken(\n api,\n extraOptions,\n firebaseConfiguration\n );\n api.dispatch(receivedFirebaseIdToken(token));\n result = await firebaseBaseQueryFn(\n argsWithFirebaseConfiguration,\n api,\n extraOptions\n );\n }\n return result;\n },\n endpoints: (builder) => ({\n addMessage: builder.mutation({\n query: (parameters) => {\n return {\n url: '/addMessage',\n method: 'POST',\n body: { data: parameters.data }\n };\n }\n }),\n initiateThread: builder.mutation<\n InitiateThreadResponse,\n InitiateThreadRequest\n >({\n query: (parameters) => {\n return {\n url: '/initiateThread',\n method: 'POST',\n body: { data: parameters.data }\n };\n }\n }),\n getProfile: builder.query({\n query: () => {\n return {\n url: '/getProfile',\n method: 'POST',\n //Firebase http function requires a body\n body: { data: {} }\n };\n }\n })\n })\n});\n\nexport const {\n useAddMessageMutation,\n useInitiateThreadMutation,\n useGetProfileQuery\n} = firebaseApi;\n","import { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class LoadingPortal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n };\n\n constructor() {\n super();\n this.el = document.createElement('div');\n this.loadingPortalRoot = document.getElementById('loading-portal');\n }\n\n componentDidMount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.appendChild(this.el);\n setTimeout(() => {\n this.el.classList.add('loading-portal-visible');\n }, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children, className = 'loading-portal' } = this.props;\n this.el.className = className;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport type { BrowseItemApiDto } from 'tradera/state/services/types/webapi-browse-generated';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { toLocalizedUrl } from 'tradera/utils/url';\n\ntype AjaxItemDto = Pick<\n BrowseItemApiDto,\n | 'imageFormats'\n | 'shortDescription'\n | 'longDescription'\n | 'itemId'\n | 'itemCondition'\n | 'itemType'\n | 'endDate'\n | 'bidCount'\n | 'openingBid'\n | 'fixedPrice'\n | 'quantity'\n | 'shippingOptions'\n | 'paymentOptions'\n> & {\n url: string;\n auctionVisits: number;\n};\n\nexport const ajaxItemApi = createApi({\n reducerPath: 'ajaxItemApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n getAjaxItem: builder.query<\n AjaxItemDto,\n { itemId: number; languageCode: string }\n >({\n query: ({ itemId, languageCode }) =>\n toLocalizedUrl(`/ajax/item/${itemId}`, languageCode)\n })\n })\n});\n\nexport const { useGetAjaxItemQuery } = ajaxItemApi;\n","/* eslint-disable better-mutation/no-mutation */\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport type { PossibleItemTypes } from '../item-card/item-card';\n\ntype QuickViewState = {\n item?: PossibleItemTypes | null;\n items?: PossibleItemTypes[] | null;\n isOpen: boolean;\n openedFrom?: string | null;\n};\n\nexport const initialState: QuickViewState = {\n isOpen: false\n};\n\nexport const quickView = createSlice({\n name: 'quickView',\n initialState,\n reducers: {\n openQuickView: (\n state,\n {\n payload\n }: PayloadAction<{\n item?: PossibleItemTypes;\n items?: PossibleItemTypes[] | null;\n openedFrom?: string;\n }>\n ) => {\n const {\n items = state.items,\n item = state.item,\n openedFrom\n } = payload;\n\n state.item = item;\n state.items = items;\n state.isOpen = true;\n state.openedFrom = openedFrom;\n },\n closeQuickView: (state) => {\n state.item = null;\n state.items = null;\n state.isOpen = false;\n state.openedFrom = null;\n }\n }\n});\n\nexport const { openQuickView, closeQuickView } = quickView.actions;\n\nexport default quickView.reducer;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer } from 'tradera/lang/translate';\nimport utils from './rating-utils';\nimport RatingIcon from '@tradera/blueprint/theme/icons2/rating.svg?jsx';\nimport styles from './rating-stars.module.scss';\n\n// Rating is multipled with 20.5 to account for margin between stars and rounding up\nimport ALink from 'tradera/components/alink/alink';\n\nconst RatingStars = ({\n memberAlias,\n memberId,\n rating,\n gaAttributes,\n link,\n dark = false,\n onClick\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const displayRating = utils.getDisplayRating(rating);\n\n const Stars = () => (\n <>\n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n );\n return link ? (\n \n \n \n \n \n\n
\n \n {displayRating}\n \n
\n \n
\n ) : (\n \n \n
\n \n
\n
{displayRating}
\n \n
\n );\n};\n\nRatingStars.defaultProps = {};\n\nRatingStars.propTypes = {\n memberAlias: PropTypes.string,\n memberId: PropTypes.number,\n rating: PropTypes.number,\n gaAttributes: PropTypes.object,\n dark: PropTypes.bool,\n link: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default RatingStars;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport type {\n GenerateMemberReferralCodeApiRequest,\n GenerateMemberReferralCodeApiResponse\n} from 'tradera/state/services/types/webapi-member-generated';\n\nexport const referralModalApi = createApi({\n reducerPath: 'referralModalApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n getReferralCode: builder.query<\n GenerateMemberReferralCodeApiResponse,\n GenerateMemberReferralCodeApiRequest\n >({\n query: () => {\n return {\n url: '/api/webapi/member/referral-code',\n method: 'POST'\n };\n }\n })\n })\n});\n\nexport const { useGetReferralCodeQuery } = referralModalApi;\n","const STORAGE_KEYS = {\n COOKIE_NOTIFICATION: 'cookieNotification',\n ITEMS_CLICK: 'items-click',\n SAVE_SEARCH_HINT: 'save-search-tooltip',\n SHARE_WISHLIST_TOOLTIP: 'share-wishlist-tooltip',\n SHARE_WISHLIST_TOOLTIP_SANTA: 'share-wishlist-tooltip-santa',\n SAVED_SEARCHES: 'saved-searches',\n SEARCH_RECENT: 'search-recent',\n RECENT_BRAND_ATTRIBUTES: 'recent-brand-attributes',\n WEB_PUSH_ACCEPTED: 'web_push_accepted',\n WEB_PUSH_SHOWN_MODALS: 'webPushModalsShown',\n SELLER_LIST_COMPACT_VIEW: 'sellerListCompactView',\n SYI_NEW_LAYOUT_INFO_DISMISSED: 'syiNewLayoutInfoDismissed',\n SYI_RESELL_SHOWN_FOR_DRAFT_IDS: 'syiResellShownForDraftIds',\n SYI_RESELL_ITEM_SHOWN_FOR_DRAFT_IDS: 'syiResellItemShownForDraftIds',\n SHIPPING_CONFIRMATION_PAGE_DIGITAL_STAMP_MODAL_DISMISSED_COUNT:\n 'shippingConfirmationPageDigitalStampModalDismissedCount',\n SELLER_LIST_MARK_AS_SENT_HINT: 'seller-list-mark-as-sent-tooltip',\n WISHLIST_BADGE_DATE_SHOWN: 'wishlist-badge-date-shown',\n ONBOARD_BUYER_CATEGORIES: 'onboard-buyer-categories',\n ONBOARD_SELLER_CLOSED: 'onboard-seller-closed',\n VIEWED_START_PAGE_COUNT: 'viewed-start-page-count',\n FEATURE_MODAL_MAO_ACTIVE: 'featureModalMaoActive',\n FEATURE_MODAL_MGM_ACTIVE: 'featureModalMgmActive',\n // State caches\n // NOTE: Even if these keys aren't used, we check for the values which are defined in utils/cache.js so don't remove these even if they looked unused\n CACHE_MESSAGING_BADGES: 'cache.messagingBadges',\n CACHE_SYSTEM_MESSAGES: 'cache.systemMessages',\n CACHE_SYSTEM_BADGE: 'cache.systemBadges',\n // Apple ID login user\n APPLE_ID_USER: 'appleId.user',\n\n USER_PROFILE: 'tradera--user-profile',\n HAS_SHOWED_MFA_VERIFICATION_MESSAGE: 'hasShowedMfaVerification'\n};\n\nconst STORAGE_VALUES = {\n SAVE_SEARCH_HINT_CLICKED: 'CLOSE_CLICKED',\n SHARE_WISHLIST_TOOLTIP_CLICKED: 'CLOSE_CLICKED',\n SHARE_WISHLIST_TOOLTIP_SANTA_CLICKED: 'CLOSE_CLICKED',\n SELLER_LIST_MARK_AS_SENT_HINT_CLICKED: 'CLOSE_CLICKED',\n FEATURE_MODAL_MAO_DISMISSED_CLICKED: 'CLOSE_CLICKED',\n FEATURE_MODAL_MGM_DISMISSED_CLICKED: 'CLOSE_CLICKED',\n ONBOARD_SELLER_CLOSED_CLICKED: 'CLOSE_CLICKED'\n};\n\nexport { STORAGE_KEYS, STORAGE_VALUES };\n","export const DAY_IN_SECONDS = 24 * 60 * 60;\nexport const HOUR_IN_SECONDS = 60 * 60;\nexport const MINUTE_IN_SECONDS = 60;\n\nexport const DAY_IN_MILLISECONDS = DAY_IN_SECONDS * 1000;\nexport const HOUR_IN_MILLISECONDS = HOUR_IN_SECONDS * 1000;\nexport const MINUTE_IN_MILLISECONDS = MINUTE_IN_SECONDS * 1000;\nexport const SECOND_IN_MILLISECONDS = 1000;\n","export enum MODAL_STATE {\n OPEN = 'OPEN',\n CLOSED = 'CLOSED'\n}\n\nexport enum ITEM_LAYOUT {\n GRID = 'layout-grid',\n LIST = 'layout-list',\n GRID_MEDIUM = 'layout-grid-medium',\n GRID_LARGE = 'layout-grid-large'\n}\n\nexport enum SITE_LAYOUT {\n DEFAULT = 'site-width-default',\n FULL_WIDTH = 'site-width-full'\n}\n","import { useSelector } from 'react-redux';\nimport { selectIsFeatureEnabled } from 'tradera/state/environment/selectors';\n\nexport const useIsFeatureEnabled = (featureName: string) =>\n useSelector(selectIsFeatureEnabled(featureName));\n","import React, { useRef } from 'react';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport {\n NS_TOUCHWEB,\n I18N_FRONTEND_NAMESPACES,\n TRANS_SUFFIX\n} from './constants.mjs';\nimport { isServer } from 'tradera/utils/nextjs';\nimport {\n useAppSelector as useSelector,\n useAppDispatch\n} from 'tradera/state/hooks';\n\n// eslint-disable-next-line no-restricted-imports\nimport {\n type TFunction,\n type TranslationProps,\n useTranslation,\n Trans as TransComponent,\n I18nextProvider as NextI18nextProvider\n} from 'react-i18next';\nimport type { i18n } from 'i18next';\nimport type { AppDispatch, RootState } from 'tradera/state/configure-store';\nimport { addTranslationKey } from 'tradera/state/translations/reducer';\nimport { selectPreferredLanguageCode } from 'tradera/state/language/selectors';\nimport { useQuery } from 'tradera/hooks/use-query';\n\nexport type TranslationFunction = TFunction;\n\nexport const I18nextProvider = NextI18nextProvider;\n\nconst createWrappedT =\n (\n i18nObject: i18n,\n t: TranslationFunction,\n dispatch: AppDispatch,\n language: string,\n hasLoadedAllTranslations: boolean,\n throwOnTransSuffix?: boolean,\n isShowingTranslationKeysEnabled?: boolean\n ) =>\n (\n i18nKey: string,\n options?: TranslationProps | string,\n ...args: object[]\n ) => {\n if (\n typeof i18nKey === 'string' &&\n i18nKey.endsWith(TRANS_SUFFIX) &&\n throwOnTransSuffix\n ) {\n throw new Error(\n `t function keys should not have \"Trans\" suffix, got key \"${i18nKey}\". Use Trans component instead.`\n );\n }\n const translation = t(\n i18nKey,\n // @ts-ignore: TS2698 because I have no idea how these types from/using i18n work\n { ...options, lng: language, hasLoadedAllTranslations },\n // @ts-ignore: TS2345 because I have no idea how these types from/using i18n work\n ...args\n );\n if (isServer) {\n addTranslationForHydration(\n i18nKey,\n options,\n language,\n i18nObject,\n dispatch\n );\n }\n return isShowingTranslationKeysEnabled ? i18nKey : translation;\n };\n\nconst isQueryToggleEnabled = (query: string | null) => {\n if (query === null) return false;\n return ['1', 'true', ''].includes(query);\n};\n\n/**\n * i18next translation wrappers for translating static text in react components\n * When to use what?\n * -----\n * 1. For functional components use `useTranslator()` hook\n * 2. For class components use `withTranslator()` HOC\n */\n\n/**\n * Translation hook, wrapper for react-i18next\n */\nexport const useTranslator = () => {\n const dispatch = useAppDispatch();\n const [isShowingTranslationKeysEnabledQuery] = useQuery('translation-keys');\n const isShowingTranslationKeysEnabled = isQueryToggleEnabled(\n isShowingTranslationKeysEnabledQuery\n );\n const language = useSelector(selectPreferredLanguageCode);\n const loadedLanguages =\n useSelector((state: RootState) => state.status?.loadedLanguages) || [];\n const hasLoadedAllTranslations = loadedLanguages.includes(language);\n const { t, ready, i18n } = useTranslation(I18N_FRONTEND_NAMESPACES);\n const wrappedT: TranslationFunction = React.useMemo(\n () =>\n createWrappedT(\n i18n,\n t,\n dispatch,\n language,\n hasLoadedAllTranslations,\n true,\n isShowingTranslationKeysEnabled\n ),\n [\n hasLoadedAllTranslations,\n i18n,\n t,\n dispatch,\n language,\n isShowingTranslationKeysEnabled\n ]\n );\n return { t: ready ? wrappedT : () => '...', i18n };\n};\n\nconst addTranslationForHydration = (\n i18nKey: string,\n options = {},\n language: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n i18n: any,\n dispatch: AppDispatch\n) => {\n const { key, namespaces } = i18n.translator.extractFromKey(\n i18nKey,\n options\n );\n const namespace = namespaces[namespaces.length - 1];\n const { res, exactUsedKey } = i18n.translator.resolve(key, {\n ...options,\n lng: language,\n ns: namespace\n });\n const pluralizedKey = exactUsedKey || i18nKey;\n\n dispatch(\n addTranslationKey({ key: pluralizedKey, translation: res, namespace })\n );\n};\n\nexport type WithTranslatorProps = ReturnType['t'];\n\n/**\n * Translation HOC, wrapper for react-i18next\n */\nexport function withTranslator<\n TComponent extends WithTranslatorProps = WithTranslatorProps\n>(\n WrappedComponent: React.ComponentType\n): React.ComponentType {\n function WithTranslator(\n props: Omit\n ) {\n const { t } = useTranslator();\n return ;\n }\n\n WithTranslator.displayName = `withTranslator(${\n WrappedComponent.displayName || WrappedComponent.name\n }`;\n return WithTranslator;\n}\n\nexport type WithUrlLocalizerProps = ReturnType<\n typeof useUrlLocalizer\n>['toLocalizedUrl'];\n\n/**\n * Localization HOC, wrapper for URL-localizer\n * @param {Component} WrappedComponent\n */\nexport function withUrlLocalizer<\n TComponent extends WithUrlLocalizerProps = WithUrlLocalizerProps\n>(WrappedComponent: React.ComponentType) {\n function WithUrlLocalizer(\n props: Omit\n ) {\n const { toLocalizedUrl } = useUrlLocalizer();\n return ;\n }\n\n WithUrlLocalizer.displayName = `withUrlLocalizer(${\n WrappedComponent.displayName || WrappedComponent.name\n }`;\n\n return WithUrlLocalizer;\n}\n\n/**\n * Current language hook, wrapper for react-i18next\n */\nexport const useCurrentLanguage = () => {\n const preferredLanguage = useSelector(selectPreferredLanguageCode);\n // Using language from Redux instead of i18n.language since that\n // will always be 'sv' if we don't clone the instance.\n return {\n language: preferredLanguage\n };\n};\n\n/**\n * Returns function to append language prefix to link\n */\nexport const useUrlLocalizer = () => {\n const preferredLanguage = useSelector(selectPreferredLanguageCode);\n const urlLocalizer = useRef(function toLocalizedUrlWrapper(\n url: T\n ): T | string {\n return toLocalizedUrl(url, preferredLanguage);\n });\n return {\n toLocalizedUrl: urlLocalizer.current\n };\n};\n\nexport type TransProps = Omit<\n React.ComponentProps,\n 'i18nKey'\n> & {\n i18nKey: string;\n};\n\nexport const Trans = (props: TransProps) => {\n const dispatch = useAppDispatch();\n const language = useSelector(selectPreferredLanguageCode);\n const [isShowingTranslationKeysEnabledQuery] = useQuery('translation-keys');\n const isShowingTranslationKeysEnabled = isQueryToggleEnabled(\n isShowingTranslationKeysEnabledQuery\n );\n const loadedLanguages =\n useSelector((state: RootState) => state.status?.loadedLanguages) || [];\n const hasLoadedAllTranslations = loadedLanguages.includes(language);\n const { t, ready, i18n } = useTranslation(I18N_FRONTEND_NAMESPACES);\n const { i18nKey, children, defaults } = props;\n const wrappedT = React.useMemo(\n () =>\n createWrappedT(\n i18n,\n t,\n dispatch,\n language,\n hasLoadedAllTranslations,\n false,\n isShowingTranslationKeysEnabled\n ),\n [\n hasLoadedAllTranslations,\n i18n,\n t,\n dispatch,\n language,\n isShowingTranslationKeysEnabled\n ]\n );\n\n // TODO: since we don't have TS everywhere we still need to check these things, when we have TS we can use TS to enforce most of it instead instead\n\n if (!i18nKey) {\n throw new Error('Trans component key must have a i18nKey property');\n }\n if (!i18nKey.endsWith(TRANS_SUFFIX)) {\n throw new Error(\n `Trans component key must have the \"Trans\" suffix, got key \"${i18nKey}\"`\n );\n }\n if (children) {\n throw new Error(\n `Trans component must not have children, use components or t('${i18nKey}') function instead`\n );\n }\n if (defaults) {\n throw new Error(\n 'Trans components must not have defaults, use lokalise instead.'\n );\n }\n if (!ready) {\n return <>...;\n }\n return ;\n};\n","export const isSwedenCountryCodeOrUndefined = (countryCodeIso2) =>\n countryCodeIso2 === undefined ||\n countryCodeIso2 === null ||\n countryCodeIso2.toLowerCase() === 'se';\n\nexport const isSwedenCountryNameOrUndefined = (countryName) =>\n countryName === undefined ||\n countryName === null ||\n countryName.toLowerCase() === 'sweden';\n\nexport const isDenmarkCountryCode = (countryCodeIso2) =>\n !isSwedenCountryCodeOrUndefined(countryCodeIso2) &&\n countryCodeIso2.toLowerCase() === 'dk';\n\nexport const isNetherlandsCountryCode = (countryCodeIso2) =>\n !isSwedenCountryCodeOrUndefined(countryCodeIso2) &&\n countryCodeIso2.toLowerCase() === 'nl';\n\nexport const areCountryCodesIso2Equal = (first, second) =>\n (first || 'SE').toUpperCase() === (second || 'SE').toUpperCase();\n","export const isSwedishOrUndefined = (languageCodeIso2) =>\n languageCodeIso2 === undefined || languageCodeIso2.toLowerCase() === 'sv';\n\nexport const getLanguageFromCountryCode = (countryCodeIso2) => {\n const key = countryCodeIso2?.toLowerCase() || 'se';\n const languageMap = {\n se: 'sv',\n dk: 'da',\n de: 'de',\n fr: 'fr',\n nl: 'nl'\n };\n return languageMap[key] || 'en';\n};\n\nexport const getCountryCodeForFlagFromLanguage = (languageCode) => {\n const key = languageCode?.toLowerCase() || 'sv';\n const countryMap = {\n en: 'gb', // We default to GB which isn't strictly correct\n da: 'dk',\n de: 'de',\n fr: 'fr',\n nl: 'nl'\n };\n return countryMap[key] || 'se';\n};\n\nexport const getCountryCodeFromLanguage = (languageCode) => {\n const key = languageCode?.toLowerCase() || 'sv';\n const countryMap = {\n da: 'dk',\n de: 'de',\n fr: 'fr',\n nl: 'nl'\n };\n return countryMap[key] || 'se';\n};\n\nexport const areLanguageCodesIso2Equal = (first, second) =>\n (first || 'SV').toUpperCase() === (second || 'SV').toUpperCase();\n","import { useCallback } from 'react';\nimport { useCurrentLanguage } from 'tradera/lang/translate';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport { selectPreferredCurrency } from 'tradera/state/multi-currency/selectors';\nimport type {\n OverrideFormatPriceOptions,\n Price\n} from 'tradera/localization/format-price';\nimport { formatPrice } from 'tradera/localization/format-price';\n\n/**\n * Formats a price in the current language and currency.\n */\nexport const useLocalizedPriceFormatter = () => _useLocalizedPriceFormatter();\n\n/**\n * Same as useLocalizedPriceFormatter but it always rounds up. Needed for fixed prices,\n * so we never display a price that is lower than what the user will pay in the end.\n */\nexport const useLocalizedPriceFormatterRoundingUp = () =>\n _useLocalizedPriceFormatter({ roundUp: true });\n\n/**\n * Does not convert anything. If you for some reason are working with the local currency\n * it could be used but avoid it. Example of usage: in the bid-modal we want to display\n * the exact amount that was input\n */\nexport const useLocalizedPriceFormatterNoConversion = () =>\n _useLocalizedPriceFormatter({ conversion: false });\n\n/**\n * Makes the conversion but leaves the symbol. Used to compare local amounts to make a\n * decision in the code.\n */\nexport const useLocalizedPriceFormatterNoSymbol = () =>\n _useLocalizedPriceFormatter({ style: 'decimal' });\n\n/**\n * Formats a price in the current language and currency but forces the value to be\n * rendered using up to two decimals, even for currencies which are normally without\n * decimals.\n */\nexport const useLocalizedPriceFormatterAllowFractions = () =>\n _useLocalizedPriceFormatter({ allowFractions: true });\n\ntype LocalizedPriceFormatterOptions = {\n allowFractions?: boolean;\n conversion?: boolean;\n roundUp?: OverrideFormatPriceOptions['roundUp'];\n style?: OverrideFormatPriceOptions['style'];\n};\n\n/**\n * Internal to this module, needed to limit the scope of the API.\n */\nconst _useLocalizedPriceFormatter = ({\n conversion = true,\n style,\n roundUp,\n allowFractions\n}: LocalizedPriceFormatterOptions = {}) => {\n const { language } = useCurrentLanguage();\n const preferredCurrency = useAppSelector(selectPreferredCurrency);\n\n return useCallback(\n (price: Price) =>\n formatPrice(\n conversion ? preferredCurrency.rate * Number(price) : price,\n language,\n {\n currency: preferredCurrency.code,\n minimumFractionDigits: preferredCurrency.decimals,\n maximumFractionDigits: allowFractions\n ? 2\n : preferredCurrency.decimals,\n ...(style ? { style } : {}),\n ...(roundUp ? { roundUp } : {})\n }\n ),\n [\n conversion,\n language,\n preferredCurrency,\n roundUp,\n style,\n allowFractions\n ]\n );\n};\n","import { createElement } from 'react';\nimport { toast } from 'react-toastify';\n\nimport { ItemToast } from 'tradera/components/toasts/item-toast';\nimport { MessageToast } from 'tradera/components/toasts/message-toast';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { webApiClient } from '../utils/http';\nimport { createQueue } from './toast-queue';\nimport type { ItemBasicInfoApiResponse } from 'tradera/state/services/types/webapi-browse-generated';\n\nconst queuedToasts = createQueue();\n\nconst openNextToast = async () => {\n if (isServer) {\n return;\n }\n if (queuedToasts.isInProgress()) {\n return;\n }\n const nextItem = queuedToasts.next();\n if (nextItem) {\n try {\n const queueLength = queuedToasts.getLength();\n const toastOptions = {\n autoClose: Math.max(2, 5 - queueLength) * 1000,\n onClose: () => {\n queuedToasts.notifyDone();\n openNextToast();\n }\n };\n if (nextItem.eventData.itemId) {\n const response =\n await webApiClient.get(\n `/browse/item-basic-info/${nextItem.eventData.itemId}`\n );\n const { imageUrl, itemUrl, shortDescription } =\n response.data.item || {};\n toast(\n // TODO: convert to JSX when we have a proper story for this\n createElement(ItemToast, {\n imageUrl,\n itemUrl,\n shortDescription,\n type: nextItem.type,\n eventData: nextItem.eventData\n }),\n toastOptions\n );\n } else if (nextItem.eventData.message) {\n const { message, header, messageData, headerData } =\n nextItem.eventData;\n toast(\n ,\n { ...toastOptions, type: nextItem.eventData.type }\n );\n }\n } catch (e) {\n queuedToasts.notifyDone();\n openNextToast();\n throw e;\n }\n }\n};\n\nconst handleNotification = async (\n type: string,\n eventData:\n | {\n message: string;\n header?: string | null;\n messageData: unknown;\n headerData: unknown;\n type: (typeof toast.TYPE)[keyof typeof toast.TYPE] | string;\n }\n | {\n itemId: number;\n newLeadingBidAmount?: number;\n price?: number;\n timeLeftMinutes?: number;\n },\n ttlInMinutes = 10\n) => {\n if (document.visibilityState !== 'visible') {\n // We don't want to show messages if page is not visible. If we do they will queue up!\n return;\n }\n queuedToasts.add({ type, eventData }, ttlInMinutes);\n openNextToast();\n};\n\nexport const showItemOutbiddedToast = (\n itemId: number,\n newLeadingBidAmount: number\n) =>\n handleNotification('ItemOutbidded', {\n itemId,\n newLeadingBidAmount\n });\n\nexport const showItemFirstBidToast = (itemId: number) =>\n handleNotification('ItemFirstBid', { itemId });\n\nexport const showItemSoldToast = (itemId: number, price: number) =>\n handleNotification('ItemSold', { itemId, price });\n\nexport const showItemWonToast = (itemId: number, price: number) =>\n handleNotification('ItemWon', { itemId, price });\n\nexport const showItemPaidToast = (itemId: number) =>\n handleNotification('ItemPaid', { itemId });\n\nexport const showItemWishListReminderToast = (\n itemId: number,\n timeLeftMinutes: number\n) =>\n handleNotification(\n 'ItemWishListReminder',\n { itemId, timeLeftMinutes },\n timeLeftMinutes > 10 ? 10 : 2\n );\n\n/**\n *\n * @param message The message translation key\n * @param header The header translation key\n * @param messageData Any data that's needed for the message translation key\n * @param headerData Any data that's needed for the header translation key\n */\nexport const showSuccessToast = (\n message: string,\n header?: string,\n messageData: unknown = null,\n headerData: unknown = null\n) => {\n handleNotification('Message', {\n message,\n header,\n messageData,\n headerData,\n type: toast.TYPE.SUCCESS\n });\n};\n\nexport const showErrorToast = (\n message: string,\n header?: string | null,\n messageData: unknown = null,\n headerData: unknown = null\n) => {\n handleNotification('Message', {\n header,\n message,\n messageData,\n headerData,\n type: toast.TYPE.ERROR\n });\n};\n\nexport const showInfoToast = (\n message: string,\n header?: string,\n messageData = null,\n headerData = null\n) => {\n handleNotification('Message', {\n message,\n header,\n messageData,\n headerData,\n type: toast.TYPE.INFO\n });\n};\n\n// export const ToastTestButton = () => (\n// {\n// e.preventDefault();\n// showItemWishListReminderToast(85391643, 3);\n// showItemOutbiddedToast(85391639, 99);\n// showItemFirstBidToast(85391639);\n// showItemSoldToast(85391639, 1234);\n// showItemWonToast(85391639, 1234);\n// showItemPaidToast(85391639);\n// }}>\n// Test\n// \n// );\n","/* eslint-disable better-mutation/no-mutation */\nimport initData from 'init-data';\nimport { createSlice } from '@reduxjs/toolkit';\n\nexport const initialState = {\n list: [],\n topLevelCategories:\n initData.allCategories?.map(({ id, name, href }) => ({\n id,\n title: name,\n href\n })) || [],\n isFetching: false,\n error: null\n};\n\nconst categoriesSlice = createSlice({\n name: 'categories',\n initialState,\n reducers: {\n initialize: (state, { payload }) => {\n state.topLevelCategories =\n payload.topLevelCategories || state.topLevelCategories;\n },\n requestCategoryList: (state) => {\n state.isFetching = true;\n state.error = null;\n },\n receiveCategoryList: (state, action) => {\n state.list = action.payload;\n state.isFetching = false;\n state.error = null;\n },\n handleCategoryListError: (state, action) => {\n state.isFetching = false;\n state.error = action.payload;\n }\n }\n});\n\nexport const reducer = categoriesSlice.reducer;\n\nexport const {\n initialize,\n requestCategoryList,\n receiveCategoryList,\n handleCategoryListError\n} = categoriesSlice.actions;\n","import React from 'react';\nimport { configureStore } from '@reduxjs/toolkit';\nimport type { Store } from '@reduxjs/toolkit';\nimport { Provider } from 'react-redux';\nimport rootReducer from './root-reducer';\nimport { routerMiddleware } from 'connected-react-router';\nimport { getHistory } from 'tradera/utils/history';\nimport { sentryReduxEnhancer } from 'tradera/utils/sentry/redux';\nimport { initializeState } from './state-initializer';\nimport initData from 'tradera/legacy/static/packages/init-data';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { discoverApi } from './services/discover-api';\nimport { feesApi } from './services/fees-api';\nimport { touchwebSearchApi } from './services/touchweb-search-api';\nimport { touchwebSyiApi } from './services/touchweb-syi-api';\nimport { cartApi } from './services/cart-api';\nimport { messagingStatsApi } from './services/messaging-stats-api';\nimport type { History } from 'history';\nimport { bidHistoryApi } from 'tradera/components/bid-history/bid-history-api';\nimport { draftsApi } from 'tradera/apps/syi/state/drafts-api';\nimport { templatesApi } from 'tradera/apps/syi/state/templates-api';\nimport { shippingComplaintApi } from './services/shipping-complaint-api';\nimport { savedSearchesApi } from 'tradera/apps/my-tradera/saved-searches/saved-searches-api';\nimport { pickListApi } from 'tradera/apps/my-tradera/pick-list2/services/pick-list-api';\nimport { referralModalApi } from 'tradera/components/referral-modal/services/referral-modal-api';\nimport { wishListApi } from './services/wish-list-api';\nimport { wishListItemsEndingTodayApi } from './services/wish-list-items-ending-today-api';\nimport { ajaxItemApi } from 'tradera/components/quick-view/ajax-item-api';\nimport { firebaseApi } from 'tradera/components/messaging/firebase-api';\nimport { webApi } from 'tradera/state/services/webapi-api';\nimport { topListsApi } from 'tradera/apps/tradera/components/top-lists/top-lists-api';\nimport { sellerListApi } from 'tradera/apps/my-tradera/app/components/seller-list/seller-list-api';\nimport { bookedShipmentsApi } from 'tradera/apps/my-tradera/app/containers/booked-shipment-api';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation is not compatible with SSR as global properties are shared between server instances'\n );\n}\n\n// Hot reloading\nconst enableWebPackHotModuleReplacementForReducers = (\n // webpack modules are not typed\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n module: any,\n store: Store\n) => {\n if (!module.hot) {\n return;\n }\n module.hot.accept('./root-reducer', () => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const nextRootReducer = require('./root-reducer');\n store.replaceReducer(nextRootReducer);\n });\n};\n\nconst initializeStore = (browserHistory: History) => {\n const isProd =\n typeof process === 'object' && process.env?.NODE_ENV === 'production';\n\n const reduxStore = configureStore({\n reducer: rootReducer(browserHistory),\n middleware: (getDefaultMiddleware) => {\n const middlewares = [\n discoverApi.middleware,\n feesApi.middleware,\n pickListApi.middleware,\n touchwebSearchApi.middleware,\n touchwebSyiApi.middleware,\n bidHistoryApi.middleware,\n cartApi.middleware,\n draftsApi.middleware,\n templatesApi.middleware,\n shippingComplaintApi.middleware,\n savedSearchesApi.middleware,\n referralModalApi.middleware,\n wishListApi.middleware,\n messagingStatsApi.middleware,\n firebaseApi.middleware,\n wishListItemsEndingTodayApi.middleware,\n ajaxItemApi.middleware,\n webApi.middleware,\n topListsApi.middleware,\n sellerListApi.middleware,\n bookedShipmentsApi.middleware\n ];\n if (browserHistory) {\n middlewares.push(routerMiddleware(browserHistory));\n }\n return getDefaultMiddleware().concat(middlewares);\n },\n // If url contains ?debug-redux devtools will be enabled in production;\n devTools: !isProd || window.location.search.includes('debug-redux'),\n enhancers: [sentryReduxEnhancer]\n });\n\n enableWebPackHotModuleReplacementForReducers(module, reduxStore);\n return reduxStore;\n};\n\ntype SelectFn = (state: ReturnType) => RootState;\ntype OnChangeFn = (previousState: RootState, currentState: RootState) => void;\n\n// make it possible to observe state changes. used by syi\nexport const observeStore = function (select: SelectFn, onChange: OnChangeFn) {\n let currentState: RootState;\n function handleChange() {\n const nextState = select(store.getState());\n if (nextState !== currentState) {\n const previousState = currentState;\n // eslint-disable-next-line better-mutation/no-mutation\n currentState = nextState;\n onChange(previousState, currentState);\n }\n }\n\n const unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n};\n\nconst store = initializeStore(getHistory());\n\ninitializeState(initData)(store.dispatch);\n\nexport default store;\n\n// Ref: https://redux-toolkit.js.org/tutorials/typescript\n// Infer the `RootState` and `AppDispatch` types from the store itself\nexport type RootState = ReturnType;\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\nexport type AppDispatch = typeof store.dispatch;\nexport type GetState = () => RootState;\n\n// Don't know how to type this properly...\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ProviderWithGlobalStore = (props: any) => (\n \n);\n","import { logger } from 'packages/logger';\n\nimport { getSearchResults } from './api';\nimport pageActions from '../page/actions';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { reload } from 'tradera/utils/location';\nimport { initialState } from './initial-state';\nimport * as discoverTracking from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { replacePartInPath } from 'tradera/utils/url';\nimport {\n handleSearchResultsError,\n requestSearchResults,\n initialize as initReducer,\n receiveSearchResults as receiveSearchResultsReducerAction\n} from './reducer';\nimport { wishlistAddRange } from 'tradera/state/items/reducer';\n\nconst updatePageMetaForSearchResults = () => (dispatch, getState) => {\n const discover = getState().discover;\n const { reduxContainer } = discover;\n const { pageMeta } = reduxContainer;\n dispatch(\n pageActions.setPageMeta({\n ...pageMeta\n })\n );\n};\n\n/**\n *\n * @param {object} payload the normalized version of the response\n * @param {string} payload.endpoint\n * @param {object} payload.queryParams\n * @param {object} payload.result\n * @param {object} [?payload.result.categoryPath]\n * @param {object[]} [payload.result.items]\n * @param {object} [payload.result.itemsOnDisplay]\n * @param {object[]} [payload.result.itemsOnDisplay.items]\n * @param {object} [payload.result.reduxContainer]\n * @param {object} [payload.result.reduxContainer.ads]\n * @param {object} [payload.result.reduxContainer.pageMeta]\n */\nexport const receiveSearchResults =\n (payload, shippingRegionCountryCodeIso2) => (dispatch) => {\n dispatch(\n receiveSearchResultsReducerAction({\n ...payload,\n shippingRegionCountryCodeIso2\n })\n );\n const items = payload.result?.items || [];\n dispatch(\n wishlistAddRange(\n items\n .filter((item) => item.inWishList)\n .map((item) => item.itemId)\n )\n );\n };\n\nexport const fetchSearchResults = (\n endpoint,\n queryParams,\n pageType,\n onLoaded\n) => {\n return async (dispatch, getState) => {\n dispatch(requestSearchResults());\n const {\n environment: { version }\n } = getState();\n\n return getSearchResults(endpoint, queryParams, '', version)\n .then(({ data: result }) => {\n const { isRedirect, fromCategoryId, toCategoryId } = result;\n\n if (isRedirect) {\n const newPathname = replacePartInPath(\n window.location.pathname,\n `${fromCategoryId}`,\n `${toCategoryId}`\n );\n const newUrl = newPathname + window.location.search;\n window.location.replace(newUrl);\n return;\n }\n\n const searchResults = { result, endpoint, queryParams };\n const shippingRegionCountryCodeIso2 =\n selectShippingRegionCountryCodeIso2(getState());\n dispatch(\n receiveSearchResults(\n searchResults,\n shippingRegionCountryCodeIso2\n )\n );\n return searchResults;\n })\n .catch((error) => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n break;\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n default:\n dispatch(handleSearchResultsError(error.message));\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n })\n .finally(() => {\n dispatch(afterReceiveSearchResults(pageType, onLoaded));\n });\n };\n};\n\nexport const afterReceiveSearchResults =\n (pageType, onLoaded) => (dispatch, getState) => {\n dispatch(updatePageMetaForSearchResults(pageType));\n dispatch(() => {\n trackNewSearch(getState);\n onLoaded();\n });\n };\n\nexport const initialize = () => (dispatch) => {\n dispatch(initReducer(initialState));\n};\n\nconst trackNewSearch = (getState) => {\n const state = getState();\n const { categoryPath, items, metaTitle } = state.discover;\n discoverTracking.trackNewSearch(\n categoryPath,\n items.map((x) => x.itemId),\n metaTitle\n );\n};\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { normalize } from './helpers';\nimport { initialState } from './initial-state';\n\nconst slice = createSlice({\n name: 'discover',\n initialState,\n reducers: {\n initialize: (_state, { payload }) => {\n return { ...payload };\n },\n requestSearchResults: (state) => {\n state.error = null;\n },\n receiveSearchResults: (state, { payload }) => {\n const {\n result = {},\n endpoint = null,\n queryParams = null,\n shippingRegionCountryCodeIso2 = 'se'\n } = payload;\n\n return {\n ...state,\n endpoint,\n error: null,\n hasResult: true,\n queryParams,\n ...normalize(result, shippingRegionCountryCodeIso2)\n };\n },\n handleSearchResultsError: (state, { payload }) => {\n state = { ...normalize({}) };\n state.error = payload;\n state.hasResult = true;\n },\n setSingleFilterValue: (state, { payload }) => {\n state.filters = {\n ...state.filters,\n [payload.filter]: {\n ...state.filters[payload.filter],\n selectedValue: payload.value\n }\n };\n },\n updateItem: (state, { payload }) => {\n const { itemId, ...itemData } = payload;\n return {\n ...state,\n items: [\n ...state.items.map((x) =>\n x.itemId === itemId ? { ...x, ...itemData } : x\n )\n ],\n itemsOnDisplay: [\n ...state.itemsOnDisplay.map((x) =>\n x.itemId === itemId ? { ...x, ...itemData } : x\n )\n ]\n };\n },\n addItemOnDisplay: (state, { payload }) => {\n return state.itemsOnDisplay.some(\n (x) => x.itemId === payload.item.itemId\n )\n ? state\n : {\n ...state,\n itemsOnDisplay: [...state.itemsOnDisplay, payload.item]\n };\n },\n removeItemOnDisplay: (state, { payload }) => {\n return state.itemsOnDisplay.some(\n (x) => x.itemId === payload.item.itemId\n )\n ? {\n ...state,\n itemsOnDisplay: state.itemsOnDisplay.filter(\n (x) => x.itemId !== payload.item.itemId\n )\n }\n : state;\n },\n setCategoryPath: (state, { payload }) => {\n state.categoryPath = payload;\n state.currentCategoryId = (payload && payload[0].id) || 0;\n },\n setCurrentCategoryId: (state, { payload }) => {\n state.currentCategoryId = payload;\n },\n setIsFilterOpen: (state, { payload }) => {\n state.isFilterOpen = payload;\n },\n reset: (state, { payload }) => {\n state = payload.initialState;\n }\n }\n});\n\nexport const {\n initialize,\n requestSearchResults,\n receiveSearchResults,\n handleSearchResultsError,\n setSingleFilterValue,\n updateItem,\n addItemOnDisplay,\n removeItemOnDisplay,\n setCategoryPath,\n setIsFilterOpen,\n setCurrentCategoryId,\n reset\n} = slice.actions;\nexport const reducer = slice.reducer;\n","import type { RootState } from '../configure-store';\n\nexport const selectEnvironment = (state: RootState) => state.environment;\n\nexport const selectFeatureSwitches = (state: RootState) =>\n state?.environment?.featureSwitches;\nexport const selectIsFeatureEnabled =\n (featureName: string) => (state: RootState) =>\n selectFeatureSwitches(state)?.[featureName] === true;\n\nexport const selectEnvVariables = (state: RootState) =>\n state.environment.variables;\n\nexport const selectWebLiveUrl = (state: RootState) =>\n state.environment.variables.PUBLIC_WEB_LIVE_URL;\n\nexport const selectBrowserName = (state: RootState) =>\n state?.environment?.browserName;\n\nexport const selectIsNativeApp = (state: RootState) =>\n !!state?.environment?.isNativeAppContext;\n\nexport const selectNativeAppLanguage = (state: RootState) =>\n state?.environment?.appLanguage;\n","/* eslint-disable better-mutation/no-mutation */\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport { getInitialState } from './initial-state';\nimport type { InitData } from 'tradera/state/init-data/types';\n\n// The max size of the item cache\nconst RECENTLY_VIEWED_MAX_LENGTH = 20;\n\ntype ItemsState = {\n recentItemIds: number[];\n wishListItemIds: number[];\n wishListAddedCount: number;\n};\n\nexport const initialState: ItemsState = {\n recentItemIds: [],\n wishListItemIds: [],\n wishListAddedCount: 0\n};\n\nconst itemsSlice = createSlice({\n name: 'items',\n initialState,\n reducers: {\n addRecentlyViewed: (state, action) => {\n const { payload: itemId } = action;\n // Remove item if already present\n state.recentItemIds = state.recentItemIds.filter(\n (x) => x !== itemId\n );\n // Add to front of list\n state.recentItemIds.unshift(itemId);\n // Limit list length\n state.recentItemIds = state.recentItemIds.slice(\n 0,\n RECENTLY_VIEWED_MAX_LENGTH\n );\n },\n setRecentlyViewed: (state, action) => {\n const { payload } = action;\n state.recentItemIds = payload.slice(0, RECENTLY_VIEWED_MAX_LENGTH);\n },\n /**\n *\n * @param state\n * @param action { payload: { itemId: number; exists: boolean } } where exists is true if the item should be added to the wishlist, false if it should be removed\n */\n wishlist: (\n state,\n action: PayloadAction<{ itemId: number; exists: boolean }>\n ) => {\n const {\n payload: { itemId, exists }\n } = action;\n\n const wishListItemIds = new Set(state.wishListItemIds || []);\n if (exists) {\n wishListItemIds.add(itemId);\n } else {\n wishListItemIds.delete(itemId);\n }\n state.wishListItemIds = Array.from(wishListItemIds);\n },\n wishlistCountIncrement: (state) => {\n state.wishListAddedCount = state.wishListAddedCount + 1;\n },\n wishlistAddRange: (state, action: PayloadAction) => {\n const { payload: itemIds } = action;\n const wishListItemIds = new Set(state.wishListItemIds || []);\n itemIds?.forEach((itemId) => wishListItemIds.add(itemId));\n state.wishListItemIds = Array.from(wishListItemIds);\n },\n wishlistRemoveRange: (state, action: PayloadAction) => {\n const { payload: itemIds } = action;\n const wishListItemIds = new Set(state.wishListItemIds || []);\n itemIds?.forEach((itemId) => wishListItemIds.delete(itemId));\n state.wishListItemIds = Array.from(wishListItemIds);\n },\n initialize: (state, action: PayloadAction) => {\n state = getInitialState(action.payload);\n }\n }\n});\n\nexport const {\n addRecentlyViewed,\n setRecentlyViewed,\n wishlist,\n wishlistAddRange,\n wishlistRemoveRange,\n initialize,\n wishlistCountIncrement\n} = itemsSlice.actions;\n\nexport default itemsSlice.reducer;\n","import type {\n MemberServerStorageListApiResponse,\n MemberServerStoragePutApiRequest,\n MemberServerStoragePutApiResponse\n} from 'tradera/state/services/types/webapi-member-generated';\nimport { webApi, webApiTags } from 'tradera/state/services/webapi-api';\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport const MYT_SOLD_MORE_ACTIONS_POPOVER_DISMISSED =\n 'myt_sold_more_actions_popover_dismissed';\n\nexport const memberServerStorageApi = webApi.injectEndpoints({\n endpoints: (builder) => ({\n getMemberServerStorage: builder.query<\n MemberServerStorageListApiResponse,\n void\n >({\n providesTags: [webApiTags.MemberServerStorage],\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/member/server-storage`;\n }\n }),\n addToMemberServerStorage: builder.mutation<\n MemberServerStoragePutApiResponse,\n MemberServerStoragePutApiRequest\n >({\n invalidatesTags: [webApiTags.MemberServerStorage],\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n\n return {\n url: `${baseUrl}/member/server-storage`,\n method: 'PUT',\n body: params\n };\n },\n async onQueryStarted({ key, value }, { dispatch, queryFulfilled }) {\n const patchResult = dispatch(\n memberServerStorageApi.util.updateQueryData(\n 'getMemberServerStorage',\n void 0,\n (draft) => ({\n ...draft,\n rows: draft.rows?.map((row) => {\n if (row.key === key) {\n return {\n ...row,\n value\n };\n }\n return row;\n })\n })\n )\n );\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n }\n })\n })\n});\n\nconst { useGetMemberServerStorageQuery, useAddToMemberServerStorageMutation } =\n memberServerStorageApi;\n\nexport const { endpoints } = memberServerStorageApi;\n\nexport const useIsMemberServerStorageKeyTruthy = (\n key: string,\n defaultValue?: boolean\n): boolean => {\n const { data } = useGetMemberServerStorageQuery();\n if (!data && typeof defaultValue !== 'undefined') return defaultValue;\n return data?.rows?.find((row) => row.key === key)?.value === '1';\n};\n\nexport const useSetMemberServerStorageKeyToTruthy = () => {\n const [addToMemberServerStorage, responseObject] =\n useAddToMemberServerStorageMutation();\n const action = (key: string) =>\n addToMemberServerStorage({\n key,\n value: (1).toString()\n });\n return [action, responseObject] as const;\n};\n","import { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { areCountryCodesIso2Equal } from 'tradera/localization/countrycode';\nimport type { RootState } from '../configure-store';\nimport { RequirementTypeApi } from '../services/types/webapi-member-generated';\n\nexport const selectMember = (state: RootState) => state.member;\n\nexport const selectIsLoggedIn = (state: RootState) => state.member?.isLoggedIn;\n\nexport const selectGeolocation = (state: RootState) =>\n state.member?.geolocation;\n\nexport const selectMemberId = (state: RootState) => state?.member?.memberId;\n\nexport const selectMemberAlias = (state: RootState) =>\n state.member?.memberAlias;\n\nexport const selectMemberEmail = (state: RootState) =>\n state.member?.memberEmail;\n\nexport const selectMemberFirstName = (state: RootState) =>\n state.member?.memberFirstName;\n\nexport const selectMemberLastName = (state: RootState) =>\n state.member?.memberLastName;\n\nexport const selectMemberBirthdate = (state: RootState) =>\n state.member?.memberBirthdate;\n\nexport const selectCurrencyCode = (state: RootState) =>\n state.member?.currencyCode;\n\n// Prefer using selectShippingRegionCountryCodeIso2 to be safe for all users, non-logged in and logged in.\nexport const selectMemberCountryCodeIso2 = (state: RootState) =>\n state.member?.memberCountryCodeIso2;\n\nexport const selectIsOutsideSweden = (state: RootState) =>\n state.member?.geolocation?.isoCode &&\n state.member?.geolocation?.isoCode.toLowerCase() !== 'se';\n\nexport const showDanishFromCountry = (state: RootState) => {\n const fromCountry = selectShippingRegionCountryCodeIso2(state);\n return areCountryCodesIso2Equal(fromCountry, 'DK');\n};\n\nexport const selectMemberTown = (state: RootState) => state.member?.memberTown;\n\nexport const selectMemberPermissions = (state: RootState) =>\n state.member.permissions;\n\nexport const selectIsUnderage = (state: RootState) => {\n const permissions = selectMemberPermissions(state);\n return (\n permissions?.sellPermission?.isPermitted === false &&\n permissions?.sellPermission?.requirementsNotMet?.includes(\n RequirementTypeApi.IsOverMinimumAge\n )\n );\n};\n\nexport const selectIsCompany = (state: RootState) => state.member?.isCompany;\n\nexport const selectIsImpersonationSession = (state: RootState) =>\n state.member?.isImpersonationSession;\n\nexport const selectMemberState = (state: RootState) =>\n state.member?.memberState;\n\nexport const selectIsTrustedMember = (state: RootState) =>\n state.member?.isTrustedMember;\n","import StorageService from 'tradera/services/storage-service';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\nimport type { RecentSearch } from 'tradera/state/personalisation/reducer';\n\nconst recentSearchesService = new StorageService(STORAGE_KEYS.SEARCH_RECENT);\nconst recentBrandAttributesService = new StorageService(\n STORAGE_KEYS.RECENT_BRAND_ATTRIBUTES\n);\n\ntype RecentSearchFromLocalStorage = Omit;\n\ntype LegacyRecentSearchFromLocalStorage = number;\n\nexport const getRecentSearchesLocalStorage = (): RecentSearch[] => {\n const recentSearches = recentSearchesService\n .fetch<\n RecentSearchFromLocalStorage | LegacyRecentSearchFromLocalStorage\n >()\n .orderByTimestamp?.();\n\n const formattedRecentSearches = recentSearches?.map((recent) => {\n return {\n text: recent.key,\n count:\n typeof recent.value === 'number'\n ? recent.value\n : recent.value?.count,\n queryParams:\n typeof recent.value === 'object'\n ? recent.value?.queryParams\n : { q: recent.key }\n };\n });\n\n return formattedRecentSearches ?? [];\n};\n\nexport const setRecentSearchLocalStorage = (\n searchTerm: string,\n queryParams: object,\n count: number\n) => {\n recentSearchesService.set(searchTerm, {\n count,\n queryParams\n });\n};\n\nexport const removeRecentSearchLocalStorage = (searchTerm: string) => {\n if (!searchTerm || searchTerm.length < 3) {\n return;\n }\n recentSearchesService.remove(searchTerm);\n};\n\nexport const setRecentBrandAttributesLocalStorage = (\n filter: string,\n value: string\n) => {\n recentBrandAttributesService.set(filter, value);\n};\n\nexport const getRecentBrandAttributesLocalStorage = () => {\n const recentBrandAttributes = recentBrandAttributesService\n .fetch()\n .orderByTimestamp?.()\n .find((item) => item.value && item.key);\n const recentBrand = {\n filter: recentBrandAttributes?.key || null,\n value: recentBrandAttributes?.value || null\n };\n return recentBrand.filter && recentBrand.value ? recentBrand : {};\n};\n","/* eslint-disable better-mutation/no-mutation */\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport {\n getRecentBrandAttributesLocalStorage,\n getRecentSearchesLocalStorage\n} from './helpers';\n\nexport type RecentSearch = {\n text: string;\n count: number;\n queryParams: Record;\n};\n\ntype PersonalisationState = {\n brands: {\n items: unknown[];\n status: string;\n };\n searches: {\n items: unknown[];\n status: string;\n };\n recentSearches: RecentSearch[];\n recentBrandAttributes: {\n value: string;\n filter: string;\n };\n};\n\nexport const initialState: PersonalisationState = {\n brands: {\n items: [],\n status: 'NOT_FETCHED'\n },\n searches: {\n items: [],\n status: 'NOT_FETCHED'\n },\n recentSearches: [],\n recentBrandAttributes: { value: '', filter: '' }\n};\n\nconst getInitialState = () => {\n const recentSearches = getRecentSearchesLocalStorage() || [];\n const recentBrandAttributes = getRecentBrandAttributesLocalStorage();\n\n return {\n ...initialState,\n recentSearches,\n recentBrandAttributes\n } as PersonalisationState;\n};\n\nconst personalisationSlice = createSlice({\n name: 'personalisation',\n initialState,\n reducers: {\n initialize: () => {\n return getInitialState();\n },\n initializeRecentSearches: (\n state,\n { payload }: PayloadAction\n ) => {\n state.recentSearches = payload;\n },\n initializeRecentBrandAttributes: (state, { payload }) => {\n state.recentBrandAttributes = payload;\n },\n setPersonalisedSearches: (state, { payload }) => {\n state.searches = payload;\n },\n setPersonalisedSearchesStatus: (state, { payload }) => {\n state.searches.status = payload;\n },\n setRecentSearches: (state, { payload }) => {\n const recentSearchIndex = state.recentSearches.findIndex(\n (search) => search.text === payload.text\n );\n\n if (recentSearchIndex > -1) {\n state.recentSearches[recentSearchIndex].count = payload.count;\n state.recentSearches[recentSearchIndex].queryParams =\n payload.queryParams;\n\n // Move the search to the top of the list\n state.recentSearches.unshift(\n state.recentSearches.splice(recentSearchIndex, 1)[0]\n );\n } else {\n state.recentSearches.unshift(payload);\n }\n },\n removeRecentSearch: (state, { payload }) => {\n state.recentSearches = state.recentSearches.filter(\n (search) => search.text !== payload\n );\n },\n setRecentBrandAttributes: (state, { payload }) => {\n state.recentBrandAttributes = payload;\n }\n }\n});\n\nexport const {\n initialize,\n initializeRecentSearches,\n initializeRecentBrandAttributes,\n setPersonalisedSearches,\n setPersonalisedSearchesStatus,\n setRecentSearches,\n removeRecentSearch,\n setRecentBrandAttributes\n} = personalisationSlice.actions;\n\nexport const reducer = personalisationSlice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\n\n/**\n * HOW IT WORKS\n *\n * urban airship has something called channels. A tradera member subscribes to a channel to get push notifications.\n * each channel has tags that indicate what kind of push notifications the member wants to receive. In the case of the wish list\n * reminder that particular setting subscribes the user to 2 different notifications: reminder 15 minutes before auction ends\n * and reminder 3 minutes before the auction ends. In order to be able to have 1 push notification setting that subscribes\n * to multiple push notifications at tradera we call these tag groups.\n *\n *\n * Urban airship docs:\n * https://docs.airship.com/reference/libraries/web-notify-sdk/latest/index.html\n *\n * web_version_2:\n * Version 1 of push notifications was just targetted at wish list reminders, 3 min and 15 min. When this release was done\n * the code did subscribe the user to all notifications even though the user only wanted to signup for wish list reminders.\n * Since the app push notifier only sent wishlist reminders for web push it was not a problem that the user was subscribed to all\n * kinds of notifications. In the next release when tradera wanted to offer all sorts of push notifications but wanted the users\n * to on their own sign up then we had to update all the current subscriptions. Since this is not possible via the urban airship\n * to update channels via the REST API and then see the updated reflected in the Web SDK we had to introduce the tag web_version_2\n * that indicates if the user has updated their push notification settings.\n *\n * opt-in dialog sample usage:\n * import uiActions from 'tradera/state/ui/actions';\n * import { MODAL_TYPES } from 'tradera/constants/push-notifications';\n *\n * uiActions.openNotificationOptinModalAction(\n * MODAL_TYPES.wishlistReminders\n * )\n *\n */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport { logger } from 'packages/logger';\nimport {\n CHANNEL_TAG_GROUPS,\n MODAL_TYPES\n} from 'tradera/state/push-notifications/constants';\nimport { localStore } from 'tradera/utils/storage';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\nimport {\n getUrbanSdk,\n getTagGroupsFromUrbanAirship,\n isPushEnabled\n} from './helpers';\n\nconst pushNotificationsSlice = createSlice({\n name: 'pushNotifications',\n initialState: {\n enabled: false,\n initDone: false,\n pushSupported: false,\n optedIn: false,\n tagGroups: {\n wishlistReminders: false,\n buyingListingOutbid: false,\n buyingListingWon: false,\n sellingListingFirstBid: false,\n sellingListingAllBids: false,\n sellingListingSold: false,\n sellingPaymentReceived: false\n },\n shownModals: {\n [MODAL_TYPES.wishlistReminders]: false,\n [MODAL_TYPES.default]: false,\n [MODAL_TYPES.selling]: false\n }\n },\n reducers: {\n setInitDone(state) {\n state.initDone = true;\n },\n setPushSupported(state, actions) {\n state.pushSupported = actions.payload;\n if (!state.pushSupported) {\n state.optedIn = false;\n }\n },\n setOptedInValue(state, action) {\n state.optedIn = action.payload;\n },\n setTagGroupsValue(state, action) {\n const tagGroups = action.payload;\n state.tagGroups = { ...state.tagGroups, ...tagGroups };\n },\n setShownModalTrue(state, action) {\n const modalType = action.payload;\n state.shownModals[modalType] = true;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setAllShownModals(state, action) {\n const shownModals = action.payload;\n state.shownModals = shownModals;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setEnabled(state, action) {\n const enabled = action.payload;\n state.enabled = enabled;\n }\n }\n});\n\nconst actions = pushNotificationsSlice.actions;\nexport const { setShownModalTrue } = actions;\nexport default pushNotificationsSlice.reducer;\n\n/**\n * this should be called as soon as the store is mounted\n */\nexport const init = () => async (dispatch, getState) => {\n let sdk = null;\n try {\n sdk = await getUrbanSdk();\n } catch (error) {\n // not able to init sdk\n }\n dispatch(\n actions.setPushSupported(\n sdk !== null && sdk.canRegister && sdk.isSupported\n )\n );\n\n if (sdk !== null && sdk.channel !== null) {\n dispatch(actions.setOptedInValue(sdk.channel.optedIn));\n\n // has this user been upgraded to version 2?\n if (!sdk.channel.tags.has('web_version_2')) {\n await sdk.channel.tags.set([\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin',\n 'web_version_2'\n ]);\n }\n const tagGroups = await getTagGroupsFromUrbanAirship();\n dispatch(actions.setTagGroupsValue(tagGroups));\n }\n dispatch(actions.setEnabled(sdk !== null && isPushEnabled(getState)));\n\n // load modal shown settings from local store\n const shownModals = localStore.getItem(STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS);\n if (shownModals !== null) {\n dispatch(actions.setAllShownModals(shownModals));\n }\n dispatch(actions.setInitDone());\n};\n\nexport const optIn = () => async (dispatch, getState) => {\n try {\n dispatch(actions.setOptedInValue(true));\n const memberId = getState().member.memberId;\n const sdk = await getUrbanSdk();\n const channel = await sdk.register();\n await channel.namedUser.set(memberId.toString());\n return channel;\n } catch (error) {\n dispatch(actions.setOptedInValue(false));\n return null;\n }\n};\n\nexport const optOut = () => async (dispatch) => {\n try {\n dispatch(actions.setOptedInValue(false));\n const sdk = await getUrbanSdk();\n if (sdk !== null && sdk.channel !== null) {\n await sdk.channel.optOut();\n }\n } catch (error) {\n dispatch(actions.setOptedInValue(true));\n return null;\n }\n};\n\nconst saveTagsToUrbanAirshipAndUpdateState = async (\n channel,\n tagGroups,\n tagGroupValue,\n dispatch,\n getState\n) => {\n // check what tag groups to set and not set\n const tagGroupsToSet = { ...getState().pushNotifications.tagGroups };\n for (const t of tagGroups) {\n tagGroupsToSet[t] = tagGroupValue;\n }\n\n // get the actual tags that we want to get push notifications for and\n // register these tags in urban airship\n let channelTags = ['web_version_2'];\n for (const [group, enabled] of Object.entries(tagGroupsToSet)) {\n if (enabled) {\n channelTags = [...channelTags, ...CHANNEL_TAG_GROUPS[group]];\n }\n }\n\n dispatch(actions.setTagGroupsValue(tagGroupsToSet));\n await channel.tags.set(channelTags);\n};\n\nexport const addTagGroups = (tagGroupsToAdd) => async (dispatch, getState) => {\n try {\n // no sdk? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null) {\n return;\n }\n\n let channel = sdk.channel;\n if (channel === null) {\n channel = await dispatch(optIn());\n if (channel === null) {\n dispatch(actions.setPushSupported(false));\n // seems user clicked on block notifications in the browser, abort\n return;\n }\n }\n\n saveTagsToUrbanAirshipAndUpdateState(\n channel,\n tagGroupsToAdd,\n true,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n};\n\nexport const removeTagGroups =\n (tagGroupsToRemove) => async (dispatch, getState) => {\n try {\n // no sdk and no subscription? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null || sdk.channel === null) {\n return;\n }\n saveTagsToUrbanAirshipAndUpdateState(\n sdk.channel,\n tagGroupsToRemove,\n false,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n };\n","import qs from 'qs';\nimport type {\n CartRequest,\n CartSummaryApiResponse\n} from 'tradera/state/services/types/webapi-shopping-generated';\nimport { isomorphicWebApiBaseQuery } from './utils/webapi-base-query';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport const tagTypes = { CartSummary: 'CartSummary' } as const;\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getCartSummaryParams = (cartId: string): CartRequest => {\n return { cartId };\n};\n\nexport const cartApi = createApi({\n reducerPath: 'cartApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: Object.values(tagTypes),\n endpoints: (builder) => ({\n getCartSummary: builder.query({\n providesTags: [tagTypes.CartSummary],\n query: ({ cartId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/shopping/cart?${qs.stringify({ cartId })}`;\n }\n })\n })\n});\n\nexport const { useGetCartSummaryQuery, endpoints, util } = cartApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { storeSavedSearch } from './helpers/saved-searches-storage';\nimport { sortSavedSearchesResponseOnLatestTotalCount } from './helpers/search-mapper';\nimport qs from 'qs';\nimport {\n type BlueshiftRecommendations4ApiResponse,\n type GetFavouriteSellersAndItems2ApiResponse,\n type ExecuteSavedSearchApiResponse,\n type ExecuteSavedSearchForCurrentUserApiRequest,\n type GetSavedSearchesApiResponse,\n type FavouritesellersAndItems2Request,\n type RecommendationsV4Request,\n type ItemsByIdsApiResponse,\n type ItemsItemsByIdsRequest,\n type IndependentSearchApiRequest,\n type IndependentSearchApiResponse,\n type CategoryPageApiRequest,\n type CategoryPageApiResponse,\n type BrandSuggestionsApiResponse,\n type IdeasApiResponse,\n type TrendingSearchesApiResponse,\n type TrendingSearchViewModel,\n SearchSortOrderApiDto,\n type CausePageApiRequest,\n type CausePageApiResponse,\n type StartPageSellersOfInterestRequest,\n type SellersOfInterestApiResponse,\n type StartPageIdeasRequest,\n type StartPageTrendingSearchesRequest\n} from './types/webapi-discover-generated';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { isomorphicBaseQueryForWishListableItems } from './utils/webapi-base-query';\n\nexport type RecommendationsQueryParams = {\n slot: string;\n userLanguage: string;\n automaticTranslationPreferred: boolean;\n shippingCountryCode: string;\n maxResults: number;\n pageNumber: number;\n};\n\nexport type SuggestedRecommendationsQueryParams = {\n slot: string;\n userLanguage: string;\n automaticTranslationPreferred: boolean;\n shippingCountryCode: string;\n maxResults?: number;\n pageNumber?: number;\n};\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getRecommendationsQueryParams = ({\n slot,\n userLanguage,\n automaticTranslationPreferred,\n shippingCountryCode,\n maxResults = 36,\n pageNumber = 1\n}: SuggestedRecommendationsQueryParams): RecommendationsQueryParams => ({\n slot,\n maxResults,\n userLanguage: userLanguage.toLowerCase(),\n automaticTranslationPreferred,\n shippingCountryCode: shippingCountryCode.toUpperCase(),\n pageNumber\n});\n\ntype FavouriteSellersQueryParams = {\n shippingCountryCode: string;\n userLanguage: string;\n automaticTranslationPreferred: boolean;\n};\n\nexport type LastChanceQueryParams = {\n automaticTranslationPreferred: boolean;\n itemCount: number;\n shippingCountryCode: string;\n userLanguage: string;\n};\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getFavouriteSellersQueryParams = ({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred\n}: FavouriteSellersQueryParams): FavouriteSellersQueryParams => ({\n shippingCountryCode: shippingCountryCode.toUpperCase(),\n userLanguage: userLanguage.toLowerCase(),\n automaticTranslationPreferred\n});\n\nenum SavedSearchesSorting {\n Sorted = 'sorted',\n Unsorted = 'unsorted'\n}\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching.\n */\nexport const getSavedSearchesQueryParams = (isSortingRequired: boolean) =>\n isSortingRequired\n ? SavedSearchesSorting.Sorted\n : SavedSearchesSorting.Unsorted;\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getInstagramQueryParams = () => ({});\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getLastSearchQueryParams = (\n queryParams: Record | undefined\n) => {\n const modifiedParams = {\n ...queryParams,\n // We always want to sort on newest added to get a more \"alive\" feeling on the start page.\n // And it would be confusing for the user if they clicked the link to get to all search\n // results if they didn't see the same items on top as they did on the start page.\n sortBy: SearchSortOrderApiDto.AddedOn\n };\n return modifiedParams;\n};\n\nexport const getRecentlyViewedQueryParams = (\n languageCode: string,\n automaticTranslationPreferred: boolean,\n itemIds: number[]\n) => ({\n searchLanguageCodeIso2: languageCode,\n automaticTranslationPreferred,\n itemIds\n});\n\nexport const discoverApi = createApi({\n reducerPath: 'discoveryApi',\n baseQuery: isomorphicBaseQueryForWishListableItems,\n endpoints: (builder) => ({\n getBrandSuggestions: builder.query<\n BrandSuggestionsApiResponse,\n unknown\n >({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/brand-suggestions`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getFavouriteSellers: builder.query<\n GetFavouriteSellersAndItems2ApiResponse,\n FavouritesellersAndItems2Request\n >({\n query: ({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred,\n maxItemsPerFavouriteSeller = 3,\n maxItems = 20,\n maxFavouriteSellers = 20\n }) => {\n const query = qs.stringify({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred,\n maxItemsPerFavouriteSeller,\n maxItems,\n maxFavouriteSellers\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/favouritesellers-and-items2?${query}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getSellersOfInterest: builder.query<\n SellersOfInterestApiResponse,\n StartPageSellersOfInterestRequest\n >({\n query: ({ shippingCountryCode, maxSellers = 20 }) => {\n const query = qs.stringify({\n shippingCountryCode,\n maxSellers\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/sellers-of-interest?${query}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getIdeas: builder.query({\n query: ({ languageCodeIso2 }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/ideas?languageCodeIso2=${languageCodeIso2}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getInstagramFeed: builder.query<\n GetFavouriteSellersAndItems2ApiResponse,\n FavouritesellersAndItems2Request\n >({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/instagram-feed`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getTrendingSearches: builder.query<\n TrendingSearchViewModel[],\n StartPageTrendingSearchesRequest\n >({\n query: ({ languageCodeIso2 }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/trending-searches?languageCodeIso2=${languageCodeIso2}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n },\n transformResponse: (response: TrendingSearchesApiResponse) => {\n return response.searches || [];\n }\n }),\n getSavedSearches: builder.query({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/savedsearches`;\n },\n extraOptions: {\n getWishListableItems: () => null\n },\n transformResponse: (response, _meta, arg) => {\n return arg === SavedSearchesSorting.Unsorted\n ? response\n : sortSavedSearchesResponseOnLatestTotalCount(response);\n }\n }),\n getRecommendations: builder.query<\n BlueshiftRecommendations4ApiResponse,\n RecommendationsV4Request\n >({\n query: ({\n slot,\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred,\n maxResults,\n pageNumber\n }: RecommendationsQueryParams) => {\n const query = qs.stringify({\n slot,\n pageNumber,\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred,\n maxResults\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/recommendations-v4?${query}`;\n },\n extraOptions: {\n getWishListableItems: (\n response: BlueshiftRecommendations4ApiResponse\n ) => response.items\n }\n }),\n getIndependentSearchResult: builder.query<\n IndependentSearchApiResponse,\n IndependentSearchApiRequest\n >({\n query: (parameters) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n\n return {\n url: `${baseUrl}/discover/web/independent-search`,\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n getWishListableItems: (\n response: IndependentSearchApiResponse\n ) => response.items\n }\n }),\n\n getCategoryResult: builder.query<\n CategoryPageApiResponse,\n CategoryPageApiRequest\n >({\n query: (parameters) => {\n return {\n url: '/api/webapi/discover/web/category-page',\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n getWishListableItems: (response: CategoryPageApiResponse) =>\n response.items\n }\n }),\n getSavedSearchResults: builder.mutation<\n ExecuteSavedSearchApiResponse,\n ExecuteSavedSearchForCurrentUserApiRequest\n >({\n query: (parameters) => {\n return {\n url: '/api/webapi/discover/savedsearches/search-v2',\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n //response.response?.result?.items are of type SearchResultItem2ApiDto which does not currently have the \"inWishList\" property\n getWishListableItems: () => null\n },\n transformResponse: (\n response: ExecuteSavedSearchApiResponse,\n meta,\n arg\n ) => {\n storeSavedSearch(arg.id, {\n totalItems: response.response?.result?.itemsMatched\n });\n return response;\n }\n }),\n getItemsByIds: builder.query<\n ItemsByIdsApiResponse,\n ItemsItemsByIdsRequest\n >({\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n\n const query = qs.stringify(params);\n return `${baseUrl}/discover/web/items/items-by-ids?${query}`;\n },\n extraOptions: {\n getWishListableItems: (response: ItemsByIdsApiResponse) =>\n response.items\n }\n }),\n getCausePage: builder.query({\n query: (params) => {\n return {\n url: '/api/webapi/discover/web/custom-result-pages/cause-page',\n method: 'POST',\n body: params\n };\n },\n extraOptions: {\n getWishListableItems: (response: ItemsByIdsApiResponse) =>\n response.items\n }\n })\n })\n});\n\n// KATS: break this up into more files, do not append more endpoints to this file,\n// we have decided that it's an anti-pattern to have a single file with all endpoints.\n// https://traderasweden.slack.com/archives/C01BUB6G7UJ/p1699018076088839?thread_ts=1698937051.165139&cid=C01BUB6G7UJ\nexport const {\n useGetBrandSuggestionsQuery,\n useGetIdeasQuery,\n useGetSellersOfInterestQuery,\n useGetInstagramFeedQuery,\n useGetIndependentSearchResultQuery,\n useGetCategoryResultQuery,\n useGetSavedSearchesQuery,\n useGetSavedSearchResultsMutation,\n useGetRecommendationsQuery,\n useGetFavouriteSellersQuery,\n useGetTrendingSearchesQuery,\n useGetItemsByIdsQuery,\n useGetCausePageQuery,\n endpoints\n} = discoverApi;\n\nexport const { updateQueryData } = discoverApi.util;\n","import StorageService from 'tradera/services/storage-service';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\n\nconst storageService = new StorageService(STORAGE_KEYS.SAVED_SEARCHES);\n\nexport const getSavedSearch = (id) => storageService.get(id);\n\nexport const storeSavedSearch = (id, data) => storageService.set(id, data);\n\nexport const removeSavedSearch = (id) => storageService.remove(id);\n","import qs from 'qs';\nimport {\n type GetKycPendingActionsApiResponse,\n type QuestionnaireRequest,\n type GetKycQuestionnairePageDefinitionApiResponse,\n type GetMemberVerificationStatusApiResponse,\n type InitializeQuestionnaireApiRequest,\n type InitializeQuestionnaireApiResponse,\n type CompleteQuestionnaireApiResponse,\n type CompleteQuestionnaireApiRequest,\n type GetMemberCompanyMoneyTransferLicenseStatusApiResponse,\n type SetMakeAnOfferMemberEnabledApiResponse,\n type SetMakeAnOfferMemberEnabledApiRequest,\n type SetMessagingSilentApiRequest,\n type SetMessagingSilentApiResponse,\n type GetMessagingSilentApiResponse,\n type GetMemberEmailNotificationsSettingsViewModelApiResponse,\n type SetMessagingEmailNotifyApiResponse,\n type SetMessagingEmailNotifyApiRequest,\n MessagingEmailNotification,\n type UpdateMemberEmailSettingsApiResponse,\n type UpdateMemberEmailSettingsApiRequest,\n type GetMemberCompanyDac7StatusApiResponse,\n type UpdateMemberVatNumberApiRequest,\n type UpdateMemberVatNumberApiResponse,\n type GetMemberHasTaxIdentificationNumberApiResponse,\n type UpdateMemberTaxIdentificationNumberApiRequest,\n type UpdateMemberTaxIdentificationNumberApiResponse,\n type GetMessagingConfigurationApiResponse,\n type GetMemberShouldCollectTaxIdentificationNumberApiResponse\n} from './types/webapi-member-generated';\nimport { webApi } from './webapi-api';\n\nexport const memberApi = webApi.injectEndpoints({\n endpoints: (builder) => ({\n getPendingKycActions: builder.query<\n GetKycPendingActionsApiResponse,\n void\n >({\n query: () => {\n return {\n url: '/api/webapi/member/kyc/pending-actions',\n method: 'GET'\n };\n }\n }),\n getQuestionnaire: builder.query<\n GetKycQuestionnairePageDefinitionApiResponse,\n QuestionnaireRequest\n >({\n query: (params) =>\n `/api/webapi/member/kyc/questionnaire?${qs.stringify(params)}`\n }),\n initializeQuestionnaire: builder.mutation<\n InitializeQuestionnaireApiResponse,\n InitializeQuestionnaireApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/kyc/initialize-questionnaire',\n method: 'POST',\n body: params\n };\n }\n }),\n completeQuestionnaire: builder.mutation<\n CompleteQuestionnaireApiResponse,\n CompleteQuestionnaireApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/kyc/complete-questionnaire',\n method: 'POST',\n body: params\n };\n }\n }),\n getVerificationStatus: builder.query<\n GetMemberVerificationStatusApiResponse,\n void\n >({\n query: () => '/api/webapi/member/verification-status'\n }),\n setMakeAnOfferEnabled: builder.mutation<\n SetMakeAnOfferMemberEnabledApiResponse,\n SetMakeAnOfferMemberEnabledApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/make-an-offer-enabled',\n method: 'PUT',\n body: params\n };\n }\n }),\n getSilentMessagingEnabled: builder.query<\n GetMessagingSilentApiResponse,\n void\n >({\n query: () => '/api/webapi/member/messaging/silent'\n }),\n setSilentMessagingEnabled: builder.mutation<\n SetMessagingSilentApiResponse,\n SetMessagingSilentApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/messaging/silent',\n method: 'PUT',\n body: params\n };\n },\n onQueryStarted(request, { dispatch }) {\n dispatch(\n memberApi.util.updateQueryData(\n 'getMemberEmailNotificationsSettingsViewModel',\n undefined,\n (draft) => {\n Object.assign(draft, {\n silentMessaging: {\n ...draft.silentMessaging,\n enabled: request.enabled\n }\n });\n }\n )\n );\n },\n invalidatesTags: ['memberemailnotificationssettingsviewmodel']\n }),\n getCompanyMoneyTransferLicenseStatus: builder.query<\n GetMemberCompanyMoneyTransferLicenseStatusApiResponse,\n void\n >({\n query: () =>\n '/api/webapi/member/company-money-transfer-license-status'\n }),\n getMemberEmailNotificationsSettingsViewModel: builder.query<\n GetMemberEmailNotificationsSettingsViewModelApiResponse,\n void\n >({\n query: () =>\n '/api/webapi/member/memberemailnotificationssettingsviewmodel',\n providesTags: ['memberemailnotificationssettingsviewmodel']\n }),\n setMessagingEmailNotify: builder.mutation<\n SetMessagingEmailNotifyApiResponse,\n SetMessagingEmailNotifyApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/messaging/emailnotify',\n method: 'PUT',\n body: params\n };\n },\n onQueryStarted(request, { dispatch }) {\n dispatch(\n memberApi.util.updateQueryData(\n 'getMemberEmailNotificationsSettingsViewModel',\n undefined,\n (draft) => {\n Object.assign(draft, {\n messaging: {\n ...draft.messaging,\n emailNotifyAll:\n request.emailNotify ===\n MessagingEmailNotification.All\n }\n });\n }\n )\n );\n },\n invalidatesTags: ['memberemailnotificationssettingsviewmodel']\n }),\n getMemberHasTaxIdentificationNumber: builder.query<\n GetMemberHasTaxIdentificationNumberApiResponse,\n void\n >({\n query: () => '/api/webapi/member/has-tin'\n }),\n getMemberShouldCollectTaxIdentificationNumber: builder.query<\n GetMemberShouldCollectTaxIdentificationNumberApiResponse,\n void\n >({\n query: () => '/api/webapi/member/should-collect-tin'\n }),\n setMemberTaxIdentificationNumber: builder.mutation<\n UpdateMemberTaxIdentificationNumberApiResponse,\n UpdateMemberTaxIdentificationNumberApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/tin',\n method: 'PUT',\n body: params\n };\n }\n }),\n updateMemberEmailSettings: builder.mutation<\n UpdateMemberEmailSettingsApiResponse,\n UpdateMemberEmailSettingsApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/email-settings',\n method: 'PUT',\n body: params\n };\n }\n }),\n getCompanyDac7Status: builder.query<\n GetMemberCompanyDac7StatusApiResponse,\n void\n >({\n query: () => '/api/webapi/member/company-dac7-status'\n }),\n setMemberVatNumber: builder.mutation<\n UpdateMemberVatNumberApiResponse,\n UpdateMemberVatNumberApiRequest\n >({\n query: (params) => {\n return {\n url: '/api/webapi/member/vat-number',\n method: 'PUT',\n body: params\n };\n }\n }),\n getMessagingConfiguration: builder.query<\n GetMessagingConfigurationApiResponse,\n void\n >({\n query: () => '/api/webapi/member/messaging/messaging-configuration'\n })\n })\n});\n\nexport const {\n useGetPendingKycActionsQuery,\n useGetQuestionnaireQuery,\n useInitializeQuestionnaireMutation,\n useCompleteQuestionnaireMutation,\n useGetVerificationStatusQuery,\n useSetMakeAnOfferEnabledMutation,\n useGetSilentMessagingEnabledQuery,\n useSetSilentMessagingEnabledMutation,\n useGetCompanyMoneyTransferLicenseStatusQuery,\n useGetMemberEmailNotificationsSettingsViewModelQuery,\n useSetMessagingEmailNotifyMutation,\n useUpdateMemberEmailSettingsMutation,\n useGetCompanyDac7StatusQuery,\n useSetMemberVatNumberMutation,\n useGetMemberHasTaxIdentificationNumberQuery,\n useGetMemberShouldCollectTaxIdentificationNumberQuery,\n useSetMemberTaxIdentificationNumberMutation,\n useGetMessagingConfigurationQuery\n} = memberApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport type { GetMessagingStatsApiResponse } from 'tradera/state/services/types/webapi-member-generated';\n\nexport const messagingStatsApi = createApi({\n reducerPath: 'messagingStatsApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n getMessagingStats: builder.query({\n query: () => '/api/webapi/member/messaging/stats'\n })\n })\n});\n\nexport const { useGetMessagingStatsQuery, util } = messagingStatsApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport * as searchGtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { httpClientBaseQuery } from './utils/http-client-base-query';\nimport { touchWebClient } from 'tradera/utils/http';\nimport { toSearchString } from 'tradera/utils/url';\n\nexport enum SortBy {\n Relevance = 'Relevance',\n AddedOn = 'AddedOn'\n}\n\ntype TouchwebSaveSearchRequest = {\n savedQueryName: string;\n categoryId?: number;\n};\n\ntype TouchwebSaveSearchResponse = {\n id: number;\n message?: string;\n};\n\nexport const touchwebSearchApi = createApi({\n reducerPath: 'touchwebSearchApi',\n baseQuery: httpClientBaseQuery({ client: touchWebClient }),\n endpoints: (builder) => ({\n saveSearch: builder.mutation<\n TouchwebSaveSearchResponse,\n TouchwebSaveSearchRequest\n >({\n query: (parameters) => {\n const payload = toSearchString(parameters, {\n addQueryPrefix: false\n });\n return {\n url: '/my/savedsearches/add',\n method: 'POST',\n body: payload,\n headers: {\n 'content-type': 'application/x-www-form-urlencoded'\n }\n };\n },\n async onQueryStarted() {\n searchGtm.trackAction(\n searchGtm.GA_EVENT_SAVE_SEARCH,\n 'Save POST Request'\n );\n }\n })\n })\n});\n\nexport const { useSaveSearchMutation } = touchwebSearchApi;\n","/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport interface ActivesummaryRequest {\n request?: MemberActiveItemsSummaryApiRequest;\n}\n\nexport interface AutoShipmentCheckoutEnabledUpdateParams {\n request?: SetAutoShipmentCheckoutMemberEnabledApiRequest;\n}\n\nexport interface BankIdPasswordRecoveryCancelCreateParams {\n request?: BankIdPasswordRecoveryCancelApiRequest;\n}\n\nexport interface BankIdProgressWithIdRequest {\n bankIdOrderRef?: string;\n /** @format int32 */\n memberid?: number;\n}\n\nexport interface BankIdRecoveryWithIdCreateParams {\n request?: BankIdBeginWithIdApiRequest;\n}\n\nexport interface BankaccountCreateParams {\n request?: SetBankAccountPayoutTransferMethodApiRequest;\n}\n\nexport interface BankaccountDeleteParams {\n request?: RemoveBankAccountPayoutTransferMethodApiRequest;\n}\n\nexport interface BankidVerificationRequest {\n /** @format int32 */\n fixedPrice?: number;\n}\n\nexport interface BlockedMembersCreateParams {\n request?: BlockMemberApiRequest;\n}\n\nexport interface BlockedMembersDeleteParams {\n request?: UnblockMemberApiRequest;\n}\n\nexport interface BlockedMembersRequest {\n request?: GetBlockedMembersApiRequest;\n}\n\nexport interface BlueshiftCredentialsRequest {\n request?: GetBlueshiftEventApiCredentialsApiRequest;\n}\n\nexport interface BraintreeOnboardingDetailsRequest {\n request?: GetBraintreeOnboardingDetailsApiRequest;\n}\n\nexport interface BuyerCreateParams {\n request?: SaveFeedbackAsBuyerApiRequest;\n}\n\nexport interface BuyerRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface BuyerTransactionVisibilityCreateParams {\n request?: SetBuyerTransactionVisibilityApiRequest;\n}\n\nexport interface ChangeStatusToAppealedCreateParams {\n request?: ChangeDisputeStatusToAppealedApiRequest;\n}\n\nexport interface ChangealiasCreateParams {\n request?: ChangeAliasApiRequest;\n}\n\nexport interface ChangeemailCreateParams {\n request?: ChangeEmailWithIdApiRequest;\n memberId: string;\n}\n\nexport interface ChangepasswordCreate2Params {\n request?: ChangePasswordWithIdApiRequest;\n memberId: string;\n}\n\nexport interface ChangepasswordCreateParams {\n request?: ChangePasswordApiRequest;\n}\n\nexport interface CombinedShippingDaysUpdateParams {\n request?: SetCombinedShippingMemberDaysApiRequest;\n}\n\nexport interface CombinedShippingEnabledUpdateParams {\n request?: SetCombinedShippingMemberEnabledApiRequest;\n}\n\nexport interface CommentCreateParams {\n request?: CommentFeedbackApiRequest;\n}\n\nexport interface CommitonpaymentEnabledUpdateParams {\n request?: SetCommitOnPaymentMemberEnabledApiRequest;\n}\n\nexport interface CompanyContactSsnRequest {\n request?: MemberHasCompanyContactSsnApiRequest;\n}\n\nexport interface CompanyContactSsnUpdateParams {\n request?: UpdateMemberCompanyContactSsnApiRequest;\n}\n\nexport interface CompanyDac7StatusRequest {\n request?: GetMemberCompanyDac7StatusApiRequest;\n}\n\nexport interface CompanyMoneyTransferLicenseStatusRequest {\n request?: GetMemberCompanyMoneyTransferLicenseStatusApiRequest;\n}\n\nexport interface CompleteQuestionnaireCreateParams {\n request?: CompleteQuestionnaireApiRequest;\n}\n\nexport interface CompletehyperwallettransfermethodCreateParams {\n request?: CompleteHyperwalletTransferMethodApiRequest;\n}\n\nexport interface ConfirmCreateParams {\n request?: ConfirmMutualFeedbackRemovalApiRequest;\n}\n\nexport interface ConfirmationValidationRequest {\n /** @format int32 */\n id?: number;\n}\n\nexport interface ConsentCreateParams {\n request?: SetMemberConsentApiRequest;\n}\n\nexport interface ContactSellerCreateParams {\n request?: ContactSellerApiRequest;\n}\n\nexport interface CreateCreateParams {\n request?: CreateFeedbackRemovalApiRequest;\n}\n\nexport interface CreateVerificationCodeCreateParams {\n request?: CreateVerificationCodeApiRequest;\n}\n\nexport interface CreateVerificationCodeWithMemberIdCreateParams {\n request?: CreateVerificationCodeWithMemberIdApiRequest;\n}\n\nexport interface CreationValidationRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface CurrencyUpdateParams {\n request?: UpdateMemberCurrencyApiRequest;\n}\n\nexport interface DeactivateaccountCreateParams {\n request?: DeactivateMemberAccountPermanentlyApiRequest;\n}\n\nexport interface DeactivateaccountRequest {\n request?: GetAccountDeactivationSettingsApiRequest;\n}\n\nexport interface DeactivateaccounttemporarilyCreateParams {\n request?: DeactivateMemberAccountTemporarilyApiRequest;\n}\n\nexport interface DenyCreateParams {\n request?: DenyMutualFeedbackRemovalApiRequest;\n}\n\nexport interface DetailsRequest {\n request?: MemberContactDetailsApiRequest;\n}\n\nexport interface DetailsUpdateParams {\n request?: UpdateMemberContactDetailsApiRequest;\n}\n\nexport interface DisputeCreateParams {\n request?: CreateDisputeApiRequest;\n}\n\nexport interface DisputeRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface DisputeMessageCreateParams {\n request?: AddDisputeMessageApiRequest;\n}\n\nexport interface DisputesRequest {\n transactionIds?: number[];\n}\n\nexport interface EmailSettingsRequest {\n request?: MemberEmailSettingsApiRequest;\n}\n\nexport interface EmailSettingsUpdateParams {\n request?: UpdateMemberEmailSettingsApiRequest;\n}\n\nexport interface EmailnotifyRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface EmailnotifyUpdateParams {\n request?: SetMessagingEmailNotifyApiRequest;\n}\n\nexport interface EndingtodaycountRequest {\n request?: GetWishlistItemsEndingTodayCountApiRequest;\n}\n\nexport interface FeatureSummaryByIdsRequest {\n itemIds?: number[];\n}\n\nexport interface FeedbackRequest {\n /** @format int32 */\n memberId?: number;\n feedbackRoleFilter?: FeedbackRoleFilter;\n feedbackRatingFilter?: FeedbackRatingFilter;\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface FeedbackRemovalDetailsRequest {\n /** @format int32 */\n feedbackRemovalRequestId?: number;\n}\n\nexport interface FeedbackRemovalsCreateParams {\n request?: FeedbackRemovalsApiRequest;\n}\n\nexport interface FeedbacksRequest {\n /** @format int32 */\n transactionId?: number;\n showDeleted?: boolean;\n}\n\nexport interface FindRequest {\n query?: string;\n /** @format int32 */\n page?: number;\n /** @format int32 */\n pageSize?: number;\n}\n\nexport interface GetGeoParams {\n request?: GetMemberGeoDataApiRequest;\n}\n\nexport interface GetSsnParams {\n request?: MemberHasSsnApiRequest;\n}\n\nexport interface GetavailablecountriesforshippingRequest {\n request?: GetAvailableCountriesForShippingApiRequest;\n}\n\nexport interface GetcreditmemobyencryptedidRequest {\n encryptedId?: string;\n}\n\nexport interface GetcreditmemopdfRequest {\n /** @format int64 */\n invoiceId?: number;\n creditMemoDocumentId?: string;\n}\n\nexport interface GetcreditmemopdfbyidRequest {\n /** @format int64 */\n creditMemoId?: number;\n}\n\nexport interface GethyperwalletmemberdetailsRequest {\n request?: GetHyperwalletMemberDetailsApiRequest;\n}\n\nexport interface GetinvoicecsvRequest {\n /** @format int64 */\n invoiceId?: number;\n}\n\nexport interface GetinvoicepdfRequest {\n /** @format int64 */\n invoiceId?: number;\n}\n\nexport interface GetinvoicepdfbyencryptedidRequest {\n encryptedId?: string;\n}\n\nexport interface GetinvoicesRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n}\n\nexport interface GetiscombinedshippingenabledRequest {\n request?: GetIsCombinedShippingEnabledApiRequest;\n}\n\nexport interface GetistraderapayenabledRequest {\n request?: GetIsTraderaPayEnabledApiRequest;\n}\n\nexport interface GetshippinginvoicememberRequest {\n request?: GetShippingInvoiceMemberApiRequest;\n}\n\nexport interface GettraderapayonboardingdetailsRequest {\n request?: GetTraderaPayOnboardingDetailsApiRequest;\n}\n\nexport interface GradeTransactionsRequest {\n gradeIds?: number[];\n}\n\nexport interface HasTinRequest {\n request?: GetMemberHasTaxIdentificationNumberApiRequest;\n}\n\nexport interface HyperwalletauthenticationtokenRequest {\n request?: GetHyperwalletAuthenticationTokenApiRequest;\n}\n\nexport interface HyperwallettransfermethodviewmodelRequest {\n request?: GetHyperwalletTransferMethodViewModelApiRequest;\n}\n\nexport interface ImageUploadUrlRequest {\n contentType?: string;\n}\n\nexport interface InitializeQuestionnaireCreateParams {\n request?: InitializeQuestionnaireApiRequest;\n}\n\nexport interface ItemIdsRequest {\n request?: GetWishListItemIdsApiRequest;\n}\n\nexport interface ItemShippedCreateParams {\n request?: SetItemShippedApiRequest;\n}\n\nexport interface ItemShippingBookedCreateParams {\n request?: SetItemShippingBookedApiRequest;\n}\n\nexport interface ItemVisibilityCreateParams {\n request?: SetItemVisibilityApiRequest;\n}\n\nexport interface ItemsRequest {\n /** @format int32 */\n memberId?: number;\n role?: FeedbackRoleFilter;\n rating?: FeedbackRatingFilter;\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface LanguageUpdateParams {\n request?: UpdateMemberLanguageApiRequest;\n}\n\nexport interface LastnotifiedCreateParams {\n request?: SetLastNotifiedApiRequest;\n}\n\nexport interface ListingFeeRequest {\n request?: MemberListingFeeApiRequest;\n}\n\nexport interface MakeAnOfferEnabledUpdateParams {\n request?: SetMakeAnOfferMemberEnabledApiRequest;\n}\n\nexport interface MarkAsEscalatedCreateParams {\n request?: MarkDisputeAsEscalatedApiRequest;\n}\n\nexport interface MarkAsSolvedCreateParams {\n request?: MarkDisputeAsSolvedApiRequest;\n}\n\nexport interface MarkedAsPaidBySellerCreateParams {\n request?: MarkAsPaidBySellerApiRequest;\n}\n\nexport interface MatchbankCreateParams {\n request?: MatchBankApiRequest;\n}\n\nexport interface McpStrikeConfirmCreateParams {\n request?: ConfirmMutualCancelOfPurchaseStrikeApiRequest;\n}\n\nexport interface McpStrikeCreateParams {\n request?: AddMutualCancelOfPurchaseStrikeApiRequest;\n}\n\nexport interface McpStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface MemberLocalizationRequest {\n request?: GetMemberLocalizationApiRequest;\n}\n\nexport interface MemberconsentRequest {\n request?: GetMemberConsentApiRequest;\n}\n\nexport interface MemberemailnotificationssettingsviewmodelRequest {\n request?: GetMemberEmailNotificationsSettingsViewModelApiRequest;\n}\n\nexport interface MemberprofilesettingsviewmodelRequest {\n request?: GetMemberProfileSettingsViewModelApiRequest;\n}\n\nexport interface MembersecuritysettingsviewmodelRequest {\n request?: GetMemberSecuritySettingsViewModelApiRequest;\n}\n\nexport interface MembersellersettingsviewmodelRequest {\n request?: GetMemberSellerSettingsViewModelApiRequest;\n}\n\nexport interface MessagingConfigurationRequest {\n request?: GetMessagingConfigurationApiRequest;\n}\n\nexport interface MoneyTransferLicenseAgreementRequest {\n /** @format date-time */\n asOf?: string;\n}\n\nexport interface NewDisputePageRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n itemIds?: number[];\n}\n\nexport interface NotificationsRequest {\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface PagedTransactionsRequest {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface PaymentproviderDeleteParams {\n request?: RemovePayoutTransferMethodApiRequest;\n}\n\nexport interface PayoutfrequencyRequest {\n request?: GetPayoutFrequencyApiRequest;\n}\n\nexport interface PayoutfrequencyoptionsRequest {\n request?: GetPayoutFrequencyOptionsApiRequest;\n}\n\nexport interface PayoutsettingsmodalviewmodelRequest {\n tinkRedirectPath?: string;\n}\n\nexport interface PayoutsettingsviewmodelRequest {\n request?: GetPayoutSettingsViewModelApiRequest;\n}\n\nexport interface PaypalCreateParams {\n request?: SetPayPalPayoutTransferMethodApiRequest;\n}\n\nexport interface PaypalDeleteParams {\n request?: RemovePayPalPayoutTransferMethodApiRequest;\n}\n\nexport interface PendingActionsRequest {\n request?: GetKycPendingActionsApiRequest;\n}\n\nexport interface PicklistRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n retrieveHidden?: boolean;\n paidStatus?: PickListFilterPaidStatus;\n shippedStatus?: PickListFilterShippedStatus;\n /** @format date-time */\n from?: string;\n /** @format date-time */\n to?: string;\n}\n\nexport interface PicklistV2Request {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n retrieveHidden?: boolean;\n paidStatus?: PickListFilterPaidStatus;\n shippedStatus?: PickListFilterShippedStatus;\n /** @format date-time */\n fromDate?: string;\n /** @format date-time */\n toDate?: string;\n}\n\nexport interface PonrStrikeCreateParams {\n request?: AddPurchaseOrderNotReceivedStrikeApiRequest;\n}\n\nexport interface PonrStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface ProfilePageRequest {\n /** @format int32 */\n memberId?: number;\n languageCodeIso2?: string;\n}\n\nexport interface PublicProfileHeroImageDeleteParams {\n request?: RemoveMemberPublicProfileHeroImageApiRequest;\n}\n\nexport interface PublicProfileHeroImageUpdateParams {\n request?: UpdateMemberPublicProfileHeroImageApiRequest;\n}\n\nexport interface PublicProfileInformationUpdateParams {\n request?: UpdateMemberPublicProfileInformationApiRequest;\n}\n\nexport interface PublicprofileRequest {\n /** @format int32 */\n memberId?: number;\n toLanguageCodeIso2?: string;\n}\n\nexport interface PurchaseRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface PurchaseorderRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PurchaseorderitemRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PutSsnParams {\n request?: UpdateMemberSsnApiRequest;\n}\n\nexport interface PutTinParams {\n request?: UpdateMemberTaxIdentificationNumberApiRequest;\n}\n\nexport interface QuestionnaireRequest {\n actionType?: string;\n languageCodeIso2?: string;\n}\n\nexport interface ReferralCodeCreateParams {\n request?: GenerateMemberReferralCodeApiRequest;\n}\n\nexport interface RemovetraderapaypayoutdestinationCreateParams {\n request?: RemoveTraderaPayPayoutDestinationApiRequest;\n}\n\nexport interface ResendverificationCreateParams {\n request?: ResendPayoutTransferMethodVerificationCodeApiRequest;\n}\n\nexport interface RestartItemsSummaryRequest {\n itemIds?: number[];\n}\n\nexport interface SelectedDescriptionLanguageUpdateParams {\n request?: UpdateMemberSelectedDescriptionLanguageApiRequest;\n}\n\nexport interface SellerAutoFeedbackRequest {\n request?: SellerAutoFeedbackApiRequest;\n}\n\nexport interface SellerAutoFeedbackUpdateParams {\n request?: SaveSellerAutoFeedbackSettingsApiRequest;\n}\n\nexport interface SellerAutoPaymentReminderRequest {\n request?: SellerAutoPaymentReminderApiRequest;\n}\n\nexport interface SellerAutoPaymentReminderUpdateParams {\n request?: SaveSellerAutoPaymentReminderSettingsApiRequest;\n}\n\nexport interface SellerCreateParams {\n request?: SaveFeedbackAsSellerApiRequest;\n}\n\nexport interface SellerRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface SelloprofileRequest {\n request?: MemberSelloProfileApiRequest;\n}\n\nexport interface ServerStorageRequest {\n request?: MemberServerStorageListApiRequest;\n}\n\nexport interface ServerStorageUpdateParams {\n request?: MemberServerStoragePutApiRequest;\n}\n\nexport interface SessionDataRequest {\n request?: MemberSessionDataApiRequest;\n}\n\nexport interface SethyperwalletpayeeverificationassubmittedCreateParams {\n request?: SetHyperwalletPayeeVerificationAsSubmittedApiRequest;\n}\n\nexport interface SetpayoutfrequencyCreateParams {\n request?: SetPayoutFrequencyApiRequest;\n}\n\nexport interface ShippingFeeRuleFreeShippingCostLimitUpdateParams {\n request?: SetShippingFeeRuleFreeShippingCostLimitApiRequest;\n}\n\nexport interface ShippingFeeRuleShippingOptionUpdateParams {\n request?: SetShippingFeeRuleShippingOptionApiRequest;\n}\n\nexport interface ShippingFromCountryUpdateParams {\n request?: UpdateMemberShippingFromCountryApiRequest;\n}\n\nexport interface ShopDetailsRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface ShopitemOrderhistoryRequest {\n /** @format int32 */\n itemId?: number;\n}\n\nexport interface ShouldCollectTinRequest {\n request?: GetMemberShouldCollectTaxIdentificationNumberApiRequest;\n}\n\nexport interface SilentRequest {\n request?: GetMessagingSilentApiRequest;\n}\n\nexport interface SilentUpdateParams {\n request?: SetMessagingSilentApiRequest;\n}\n\nexport interface SmsCheckCreateParams {\n request?: SmsCheckApiRequest;\n}\n\nexport interface SmsVerificationCreateParams {\n request?: SendVerificationSmsApiRequest;\n}\n\nexport interface SmsVerificationRequest {\n action?: string;\n}\n\nexport interface SmsVerificationWithIdCreateParams {\n request?: SendVerificationSmsWithIdApiRequest;\n}\n\nexport interface SolditemsRequest {\n soldItemStateFilter?: string;\n soldItemOrderBy?: string;\n retrieveHidden?: boolean;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface SoldsummaryRequest {\n request?: MemberSoldItemsSummaryApiRequest;\n}\n\nexport interface StatsRequest {\n request?: GetMessagingStatsApiRequest;\n}\n\nexport interface StatsThisMonthRequest {\n request?: MemberStatsThisMonthApiRequest;\n}\n\nexport interface SummaryRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface SuspendedUntilRequest {\n request?: GetMemberSuspendedUntilApiRequest;\n}\n\nexport interface SwishCreateParams {\n request?: SetSwishPayoutTransferMethodApiRequest;\n}\n\nexport interface SystemMessagesRequest {\n request?: GetSystemMessagesApiRequest;\n}\n\nexport interface TinImageUploadUrlCreateParams {\n request?: CreateTaxIdentificationImageUploadUrlApiRequest;\n}\n\nexport interface TinkBankaccountsRequest {\n code?: string;\n}\n\nexport interface TinkaccountCreateParams {\n request?: SetPayoutTransferMethodUsingTinkApiRequest;\n}\n\nexport interface ResponseError {\n errorCode?: string | null;\n fieldName?: string | null;\n message?: string | null;\n}\n\nexport interface ResponseError5 {\n transactionIds?: number[];\n}\n\nexport interface ResponseError7 {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface ResponseError9 {\n request?: WebChangeEmailWithIdApiRequest;\n}\n\nexport interface ResponseStatus {\n errorCode?: string | null;\n errors?: ResponseError[] | null;\n message?: string | null;\n stackTrace?: string | null;\n}\n\nexport interface BankIdAuthenticationBeginApiResponse {\n autoStartToken?: string | null;\n bankIdOrderRef?: string | null;\n qrData?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdAuthenticationCancelApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdAuthenticationProgressApiResponse {\n isCompleted: boolean;\n progress?: string | null;\n qrData?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ItemImageUrls {\n medium?: string | null;\n normal?: string | null;\n}\n\nexport enum ItemTransactionTypeApiDto {\n Auction = 'Auction',\n Bin = 'Bin',\n Cart = 'Cart',\n PurchaseOfferOnActive = 'PurchaseOfferOnActive',\n PurchaseOfferOnEnded = 'PurchaseOfferOnEnded'\n}\n\nexport enum ItemTypeApiDto {\n Auction = 'Auction',\n AuctionBin = 'AuctionBin',\n PureBin = 'PureBin',\n ShopItem = 'ShopItem'\n}\n\nexport interface BlockMemberApiRequest {\n aliasToBlock?: string | null;\n}\n\nexport interface BlockMemberApiResponse {\n /** @format int32 */\n blockedMemberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AddDisputeMessageApiRequest {\n attachments?: string[] | null;\n message?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface AddDisputeMessageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangeDisputeStatusToAppealedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface ChangeDisputeStatusToAppealedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDisputeApiRequest {\n message?: string | null;\n /** @format int32 */\n reason: number;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface CreateDisputeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDisputeApiResponse {\n dispute?: DisputeApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDisputesApiResponse {\n disputes?: DisputeApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkDisputeAsEscalatedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MarkDisputeAsEscalatedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkDisputeAsSolvedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MarkDisputeAsSolvedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DisputeApiDto {\n /** @format int32 */\n buyerMemberId: number;\n isHandledByExternalPart: boolean;\n /** @format int32 */\n itemId: number;\n message?: string | null;\n messages?: DisputeMessageDto[] | null;\n /** @format int32 */\n sellerMemberId: number;\n status: DisputeStatus;\n /** @format date-time */\n timeStamp: string;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface DisputeMessageDto {\n attachments?: string[] | null;\n /** @format date-time */\n created: string;\n /** @format uuid */\n id: string;\n sentBy: MessageSentBy;\n text?: string | null;\n}\n\nexport enum DisputeStatus {\n New = 'New',\n WaitingForSeller = 'WaitingForSeller',\n TraderaIsInvestigating = 'TraderaIsInvestigating',\n ToBeClosed = 'ToBeClosed',\n WaitingForBuyer = 'WaitingForBuyer',\n BuyerWonDispute = 'BuyerWonDispute',\n SellerWonDispute = 'SellerWonDispute',\n WaitingForReturn = 'WaitingForReturn',\n Appealed = 'Appealed',\n AvslutadUnder120Kr = 'AvslutadUnder120Kr',\n NotEscalated = 'NotEscalated',\n BuyerMarkedAsSolved = 'BuyerMarkedAsSolved'\n}\n\nexport enum MessageSentBy {\n CsAgent = 'CsAgent',\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport interface ItemInfoDto {\n imageUrl?: string | null;\n /** @format int32 */\n itemId: number;\n itemUrl?: string | null;\n /** @format double */\n price: number;\n shortDescription?: string | null;\n}\n\nexport interface ItemStrikeSubmission {\n strikeSubmitted: boolean;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface PurchaseOrderDto {\n /** @format double */\n buyerProtectionCost: number;\n items?: ItemInfoDto[] | null;\n /** @format uuid */\n purchaseOrderId: string;\n /** @format double */\n shippingCost: number;\n}\n\nexport interface AddPurchaseOrderNotReceivedStrikeApiRequest {\n comment?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddPurchaseOrderNotReceivedStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PurchaseOrderNotReceivedStrikeApiResponse {\n items?: ItemStrikeSubmission[] | null;\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface AddMutualCancelOfPurchaseStrikeApiRequest {\n comment?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddMutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ConfirmMutualCancelOfPurchaseStrikeApiRequest {\n approved: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface ConfirmMutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MutualCancelOfPurchaseStrikeApiResponse {\n items?: StrikeItem[] | null;\n /** @format uuid */\n purchaseOrderId: string;\n responseStatus?: ResponseStatus | null;\n strikeConfirmed: boolean;\n strikeSubmitted: boolean;\n}\n\nexport interface StrikeItem {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface AddUnpaidPurchaseOrderStrikeApiRequest {\n comment?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddUnpaidPurchaseOrderStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UnpaidItemStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface UnpaidPurchaseOrderStrikeApiResponse {\n items?: ItemStrikeSubmission[] | null;\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface CommentFeedbackApiRequest {\n comment?: string | null;\n /** @format int32 */\n gradeId: number;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface CommentFeedbackApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ContactSellerApiRequest {\n /** @format int32 */\n itemId: number;\n message?: string | null;\n sendCopytoSender: boolean;\n}\n\nexport interface ContactSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface Country {\n countryCodeIso2?: string | null;\n countryNameEng?: string | null;\n countryNameSwe?: string | null;\n}\n\nexport interface BlockedMemberDto {\n alias?: string | null;\n /** @format date-time */\n createdDate: string;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface BookedShipping {\n hasShipmentLabel: boolean;\n hasShipmentReceipt: boolean;\n /** @format uuid */\n shipmentCheckoutId: string;\n /** @format uuid */\n shipmentId: string;\n shippingType?: string | null;\n trackingId?: string | null;\n trackingLink?: string | null;\n}\n\nexport interface BuyerPaidDataDto {\n /** @format int32 */\n numberOfItems: number;\n /** @format uuid */\n purchaseOrderId: string;\n shipmentBookingType?: string | null;\n}\n\nexport interface BuyerProtectionApiDto {\n /** @format double */\n buyerProtectionCost: number;\n}\n\nexport interface ContactDetailsApiDto {\n countryCodeIso2?: string | null;\n alias?: string | null;\n companyName?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n isCompany: boolean;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n organizationNumber?: string | null;\n phoneNumber?: string | null;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport interface CreditSafeLookupResult {\n firstName?: string | null;\n givenName?: string | null;\n lastName?: string | null;\n socialSecurityNumber?: string | null;\n}\n\nexport interface CreditSafeNameVerificationResult {\n lookupResult?: CreditSafeLookupResult | null;\n status: CreditSafeNameVerificationStatus;\n}\n\nexport enum CreditSafeNameVerificationStatus {\n Valid = 'Valid',\n Invalid = 'Invalid',\n SSNFail = 'SSNFail',\n NotFound = 'NotFound',\n Error = 'Error'\n}\n\nexport interface DetailedSellerRatingApiDto {\n /** @format double */\n averageRating: number;\n category?: string | null;\n /** @format int32 */\n categoryCount: number;\n}\n\nexport interface DetailedSellerRatingSummaryForMemberApiDto {\n communication?: DetailedSellerRatingApiDto | null;\n deliveryTime?: DetailedSellerRatingApiDto | null;\n /** @format double */\n detailedSellerRatingAverage: number;\n itemDescription?: DetailedSellerRatingApiDto | null;\n /** @format int32 */\n memberId: number;\n shippingCost?: DetailedSellerRatingApiDto | null;\n}\n\nexport interface DiscountDto {\n /** @format double */\n amount: number;\n /** @format date-time */\n created: string;\n type?: string | null;\n}\n\nexport interface FeatureSummaryApiDto {\n /** @format int32 */\n cost: number;\n /** @format int32 */\n count: number;\n name?: string | null;\n}\n\nexport interface FeedbackItemApiDto {\n feedbackMemberCountryCodeIso2?: string | null;\n /** @format date-time */\n created: string;\n feedbackMemberAlias?: string | null;\n /** @format int32 */\n feedbackMemberId: number;\n feedbackMemberRole: FeedbackRoleApiDto;\n /** @format int32 */\n gradeId: number;\n /** @format int32 */\n itemCategoryId: number;\n /** @format date-time */\n itemEndDate: string;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemMaxBid: number;\n itemShortDescription?: string | null;\n mutualFeedbackRemovalItem?: MutualFeedbackRemovalItemApiDto | null;\n rating: FeedbackRatingApiDto;\n reply?: string | null;\n text?: string | null;\n /** @format int32 */\n totalRating: number;\n}\n\nexport enum FeedbackRatingApiDto {\n None = 'None',\n Negative = 'Negative',\n Positive = 'Positive'\n}\n\nexport enum FeedbackRatingFilter {\n All = 'All',\n Positive = 'Positive',\n Negative = 'Negative'\n}\n\nexport interface FeedbackReminderDataDto {\n isSeller: boolean;\n}\n\nexport enum FeedbackRoleApiDto {\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport enum FeedbackRoleFilter {\n All = 'All',\n Seller = 'Seller',\n Buyer = 'Buyer',\n LeftBy = 'LeftBy'\n}\n\nexport interface FeedbackSummaryItemApiDto {\n /** @format int32 */\n totalNegative: number;\n /** @format int32 */\n totalPositive: number;\n}\n\nexport interface ItemTransactionApiDto {\n /** @format int32 */\n bidCount?: number | null;\n /** @format int32 */\n buyItNowPrice?: number | null;\n /** @format int32 */\n buyerMemberId: number;\n discounts?: DiscountDto[] | null;\n hasBuyerLeftFeedback: boolean;\n hasSellerLeftFeedback: boolean;\n hasTraderaAsMerchantOfRecord: boolean;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n isHidden: boolean;\n isPaid: boolean;\n isPaynovaPayment: boolean;\n /** @format int32 */\n itemCategoryId: number;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemPrice?: number | null;\n itemResellPublished: boolean;\n itemTitle?: string | null;\n itemTransactionType: ItemTransactionTypeApiDto;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n orderNumber: number;\n paidStatus?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n selectedShipping?: ShippingApiDto | null;\n sellerAlias?: string | null;\n /** @format int32 */\n sellerMemberId: number;\n /** @format int32 */\n sellerRating: number;\n trackingLink?: string | null;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n transactionId: number;\n}\n\nexport enum MemberAccountState {\n None = 'None',\n Active = 'Active',\n TemporarySuspended = 'TemporarySuspended',\n PermanentlySuspended = 'PermanentlySuspended',\n Deregistered = 'Deregistered'\n}\n\nexport interface MemberActiveItemsSummaryApiDto {\n /** @format int32 */\n auctionCount: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n bidSum: number;\n /** @format int32 */\n buyItNowCount: number;\n /** @format int32 */\n itemCount: number;\n /** @format int32 */\n shopItemCount: number;\n /** @format int32 */\n sumOpeningBids: number;\n}\n\nexport interface MemberContactDetailsApiDto {\n countryCodeIso2?: string | null;\n alias?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n phoneNumber?: string | null;\n ssn?: string | null;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport interface MemberLoginDetailDto {\n accountState: MemberAccountState;\n alias?: string | null;\n hasTraderMessage: boolean;\n heroImageUrl?: string | null;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n /** @format int32 */\n totalRating: number;\n}\n\nexport interface MemberPermissionsApiDto {\n apiRegistrationPermission?: PermissionApiDto | null;\n sellPermission?: PermissionApiDto | null;\n}\n\nexport interface MemberSoldItemApiDto {\n /** @format int32 */\n bidCount?: number | null;\n bookedShipping?: BookedShipping | null;\n buyerContactDetails?: MemberContactDetailsApiDto | null;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n buyerTotalRating: number;\n /** @format int32 */\n categoryId: number;\n discounts?: DiscountDto[] | null;\n /** @format int32 */\n fixedPrice?: number | null;\n hasBuyerLeftFeedback: boolean;\n hasSellerLeftFeedback: boolean;\n hiddenBySeller: boolean;\n isDiscountAfterPaymentSupported: boolean;\n isDiscountBeforePaymentSupported: boolean;\n isMarkedAsPaidByBuyer: boolean;\n isMarkedAsPaidBySeller: boolean;\n isMarkedAsShipped: boolean;\n /** @deprecated */\n isPaidWithIntegratedPaymentOption: boolean;\n isShippingBooked: boolean;\n /** @format int32 */\n itemId: number;\n itemTitle?: string | null;\n itemTransactionType: ItemTransactionTypeApiDto;\n /** @format int32 */\n leadingBid?: number | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n offeredShippingOptions?: ShippingApiDto[] | null;\n /** @format int32 */\n openingBid?: number | null;\n paidStatus?: string | null;\n /** @deprecated */\n paymentProvider?: string | null;\n /** @format int32 */\n price: number;\n /** @format uuid */\n purchaseOrderId: string;\n /** @format int32 */\n reservedPrice?: number | null;\n selectedShipping?: ShippingApiDto | null;\n shippingDiscount?: ShippingDiscount | null;\n soldItemState?: string | null;\n /** @deprecated */\n trackingLink?: string | null;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n transactionId: number;\n userReference?: string | null;\n}\n\nexport interface MemberSoldItemsSummaryApiDto {\n /** @format int32 */\n auctionCount: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n bidSum: number;\n /** @format int32 */\n buyItNowCount: number;\n /** @format int32 */\n itemCount: number;\n /** @format int32 */\n shopItemCount: number;\n /** @format int32 */\n sumOpeningBids: number;\n /** @format int32 */\n totalPrice: number;\n}\n\nexport interface MutualFeedbackRemovalItemApiDto {\n /** @format int32 */\n feedbackRemovalRequestId?: number | null;\n status: MutualFeedbackRemovalStatus;\n /** @deprecated */\n statusText?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport enum MutualFeedbackRemovalStatus {\n Available = 'Available',\n Unavailable = 'Unavailable',\n Requested = 'Requested',\n Received = 'Received',\n Denied = 'Denied'\n}\n\nexport interface NotificationApiDto {\n /** @format int32 */\n amount: number;\n buyerPaidData?: BuyerPaidDataDto | null;\n feedbackReminderData?: FeedbackReminderDataDto | null;\n isRead: boolean;\n /** @format int32 */\n itemId: number;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n /** @format int32 */\n memberId: number;\n purchaseOrderUnpaidData?: PurchaseOrderUnpaidDataDto | null;\n shipmentSentData?: ShipmentSentDataDto | null;\n /** @format date-time */\n timeStamp: string;\n title?: string | null;\n type?: string | null;\n wishListItemsEndingTodayData?: WishListItemsEndingTodayDataDto | null;\n wishlistItemPriceLoweredData?: WishlistItemPriceLoweredDataDto | null;\n}\n\nexport interface OfferedShippingOption {\n /** @format int32 */\n cost: number;\n type?: string | null;\n}\n\nexport interface PaymentOptionApiDto {\n displayName?: string | null;\n paymentType?: string | null;\n}\n\nexport interface PermissionApiDto {\n isPermitted: boolean;\n requirementsNotMet?: RequirementTypeApi[] | null;\n}\n\nexport interface PickListBuyerApiDto {\n buyerContactDetails?: MemberContactDetailsApiDto | null;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n feedbackCount: number;\n items?: MemberSoldItemApiDto[] | null;\n}\n\nexport interface PickListBuyerV2ApiDto {\n buyerContactDetails?: ContactDetailsApiDto | null;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n items?: PickListItemApiDto[] | null;\n}\n\nexport interface PickListItemApiDto {\n hasSellerLeftFeedback: boolean;\n hiddenBySeller: boolean;\n isMarkedAsPaidBySeller: boolean;\n isMarkedAsShipped: boolean;\n /** @format int32 */\n itemId: number;\n itemTitle?: string | null;\n itemUrl?: string | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n offeredShippingOptions?: OfferedShippingOption[] | null;\n /** @format int32 */\n price: number;\n /** @format uuid */\n purchaseOrderId: string;\n selectedShipping?: SelectedShippingOption | null;\n temporaryShippingAddress?: Address | null;\n /** @format double */\n totalDiscountAmount: number;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n transactionId: number;\n userReference?: string | null;\n}\n\nexport interface PublicProfileApiDto {\n alias?: string | null;\n city?: string | null;\n country?: string | null;\n /** @format double */\n detailedSellerRating?: number | null;\n hasShop: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format int32 */\n totalRating: number;\n zipCode?: string | null;\n}\n\nexport interface PurchaseOrderUnpaidDataDto {\n /** @format int32 */\n numberOfItems: number;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport enum RequirementTypeApi {\n Unknown = 'Unknown',\n IsOverMinimumAge = 'IsOverMinimumAge'\n}\n\nexport interface SelectedShippingOption {\n /** @format int32 */\n cost: number;\n type?: string | null;\n}\n\nexport enum SellerAutoFeedbackCriteria {\n Manual = 'Manual',\n PositiveFeedback = 'PositiveFeedback',\n Paid = 'Paid'\n}\n\nexport interface ShipmentSentDataDto {\n /** @format int32 */\n numberOfItems: number;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface ShippingApiDto {\n fromCountryCodeIso2?: string | null;\n toCountryCodeIso2?: string | null;\n /** @format double */\n cost: number;\n isFreeShipping: boolean;\n isTakeaway: boolean;\n name?: string | null;\n partnerProvider?: string | null;\n /** @format int32 */\n productId?: number | null;\n type?: string | null;\n /** @format int32 */\n weight?: number | null;\n}\n\nexport interface TotalFeedbackSummaryForMemberApiDto {\n lastMonth?: FeedbackSummaryItemApiDto | null;\n lastSixMonths?: FeedbackSummaryItemApiDto | null;\n lastTwelveMonths?: FeedbackSummaryItemApiDto | null;\n /** @format int32 */\n memberId: number;\n sinceRegistration?: FeedbackSummaryItemApiDto | null;\n unique?: FeedbackSummaryItemApiDto | null;\n}\n\nexport interface TranslatedFeedbackItemApiDto {\n /** @format int32 */\n gradeId: number;\n reply?: string | null;\n text?: string | null;\n}\n\nexport interface WishListItemsEndingTodayDataDto {\n /** @format int32 */\n numberOfItems: number;\n}\n\nexport enum WishListStatusFilter {\n All = 'All',\n Active = 'Active',\n Ended = 'Ended'\n}\n\nexport interface WishlistItemPriceLoweredDataDto {\n currencyCode?: string | null;\n /** @format int32 */\n newPrice: number;\n}\n\nexport interface GetNotificationsApiResponse {\n items?: NotificationApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n /** @format int64 */\n unreadCount: number;\n}\n\nexport type GetUnreadNotificationsCountApiRequest = object;\n\nexport interface GetUnreadNotificationsCountApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n unreadCount: number;\n}\n\nexport type SetLastNotifiedApiRequest = object;\n\nexport interface SetLastNotifiedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreditMemoByEncryptedIdApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreditMemoDto {\n creditMemoDocumentId?: string | null;\n /** @format int64 */\n invoiceId: number;\n}\n\nexport interface GetBraintreeInvoicePaymentApiResponse {\n /** @format double */\n amount: number;\n /** @format int64 */\n invoiceId: number;\n orderId?: string | null;\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n}\n\nexport interface GetCreditMemoPdfApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoiceCsvApiResponse {\n /** @format byte */\n csvFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoicePdfApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoicesApiResponse {\n invoices?: InvoiceDto[] | null;\n isBillingUnderMaintenance: boolean;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface InvoiceDto {\n /** @format double */\n amountOwed: number;\n creditMemos?: CreditMemoDto[] | null;\n csvGenerated: boolean;\n /** @format date-time */\n dueDate: string;\n /** @format double */\n invoiceAmount: number;\n /** @format date-time */\n invoiceDate: string;\n /** @format int64 */\n invoiceId: number;\n /** @format int64 */\n ocr: number;\n paymentStatus?: string | null;\n}\n\nexport interface FindMembersApiResponse {\n members?: MemberLoginDetailDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n}\n\nexport interface GetAllItemsForLeaveFeedbackAsBuyerApiResponse {\n items?: ItemTransactionApiDto[] | null;\n /** @format int64 */\n itemsLeft: number;\n /** @format int64 */\n paidTotalCount: number;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface GetAllItemsForLeaveFeedbackAsSellerApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n /** @format int64 */\n itemsLeft: number;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport type GetAvailableCountriesForShippingApiRequest = object;\n\nexport interface GetAvailableCountriesForShippingApiResponse {\n availableCountries?: Country[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBlockedMembersApiRequest = object;\n\nexport interface GetBlockedMembersApiResponse {\n blockedMembers?: BlockedMemberDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBlueshiftEventApiCredentialsApiRequest = object;\n\nexport interface GetBlueshiftEventApiCredentialsApiResponse {\n eventApiKey?: string | null;\n eventSignature?: string | null;\n responseStatus?: ResponseStatus | null;\n verificationKey?: string | null;\n}\n\nexport interface GetImageUploadUrlApiResponse {\n responseStatus?: ResponseStatus | null;\n signedUrl?: string | null;\n}\n\nexport type GetIsCombinedShippingEnabledApiRequest = object;\n\nexport interface GetIsCombinedShippingEnabledApiResponse {\n isEnabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetItemsForLeaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n transactions?: ItemTransactionApiDto[] | null;\n}\n\nexport interface GetItemsForLeaveFeedbackAsSellerApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberGeoDataApiRequest = object;\n\nexport interface GetMemberGeoDataApiResponse {\n /** @format double */\n latitude: number;\n /** @format double */\n longitude: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSuspendedUntilApiRequest = object;\n\nexport interface GetMemberSuspendedUntilApiResponse {\n canAccessMessaging: boolean;\n responseStatus?: ResponseStatus | null;\n /** @format date-time */\n suspendedUntil?: string | null;\n}\n\nexport type GetMemberVatDetailsApiRequest = object;\n\nexport interface GetMemberVatDetailsApiResponse {\n memberIsSubjectToVat: boolean;\n responseStatus?: ResponseStatus | null;\n /** @format byte */\n selectableVatValues?: string | null;\n}\n\nexport interface GetMemberWithAliasApiResponse {\n alias?: string | null;\n hasShopAccount: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetSystemMessagesApiRequest = object;\n\nexport interface GetSystemMessagesApiResponse {\n items?: SystemMessage[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface GetTransactionFeedbacksApiResponse {\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GradeTransactionsApiResponse {\n gradesTransactions?: Record;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CompleteQuestionnaireApiRequest {\n languageCodeIso2?: string | null;\n fieldValues?: Record;\n /** @format int32 */\n questionnaireId: number;\n}\n\nexport interface CompleteQuestionnaireApiResponse {\n alias?: string | null;\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n ruleViolations?: Record;\n}\n\nexport type GetKycPendingActionsApiRequest = object;\n\nexport interface GetKycPendingActionsApiResponse {\n /** @format int32 */\n memberId: number;\n pendingActionActionTypes?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetKycQuestionnairePageDefinitionApiResponse {\n alias?: string | null;\n /** @format int32 */\n memberId: number;\n pageDefinition?: any;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface InitializeQuestionnaireApiRequest {\n alias?: string | null;\n}\n\nexport interface InitializeQuestionnaireApiResponse {\n /** @format int32 */\n questionnaireId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface LeaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n transaction?: ItemTransactionApiDto | null;\n}\n\nexport interface LeaveFeedbackAsSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n transaction?: ItemTransactionApiDto | null;\n}\n\nexport type MemberContactDetailsApiRequest = object;\n\nexport interface MemberContactDetailsApiResponse {\n countryCodeIso2?: string | null;\n alias?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n phoneNumber?: string | null;\n responseStatus?: ResponseStatus | null;\n ssn?: string | null;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport type MemberEmailSettingsApiRequest = object;\n\nexport interface MemberEmailSettingsApiResponse {\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUnknownDeviceOrIpEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n /** @format int32 */\n memberId: number;\n notifyBeforeWishListItemEnds: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyWhenItemBecomesUnsold: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberFeedbackApiResponse {\n accountState: MemberAccountState;\n detailedSellerRatingSummaryForMember?: DetailedSellerRatingSummaryForMemberApiDto | null;\n items?: FeedbackItemApiDto[] | null;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n totalFeedbackSummary?: TotalFeedbackSummaryForMemberApiDto | null;\n}\n\nexport interface MemberFeedbackItemsApiResponse {\n items?: FeedbackItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberFeedbackSummaryApiResponse {\n accountState: MemberAccountState;\n detailedSellerRatingSummary?: DetailedSellerRatingSummaryForMemberApiDto | null;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n totalFeedbackSummary?: TotalFeedbackSummaryForMemberApiDto | null;\n}\n\nexport interface MemberPurchaseApiResponse {\n buyer?: MemberContactDetailsApiDto | null;\n item?: ItemTransactionApiDto | null;\n responseStatus?: ResponseStatus | null;\n seller?: MemberContactDetailsApiDto | null;\n}\n\nexport interface MemberPurchaseOrderApiResponse {\n buyer?: ContactDetailsApiDto | null;\n items?: ItemTransactionApiDto[] | null;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n seller?: ContactDetailsApiDto | null;\n}\n\nexport interface MemberPurchaseOrderItemApiResponse {\n items?: ItemTransactionApiDto[] | null;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSelloProfileApiRequest = object;\n\nexport interface MemberSelloProfileApiResponse {\n accountState: MemberAccountState;\n alias?: string | null;\n city?: string | null;\n /** @format int32 */\n combinedShippingDays: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n email?: string | null;\n firstName?: string | null;\n hasShop: boolean;\n isCompanyUser: boolean;\n isSwedishUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalRating: number;\n}\n\nexport type MemberServerStorageListApiRequest = object;\n\nexport interface MemberServerStorageListApiResponse {\n responseStatus?: ResponseStatus | null;\n rows?: Row[] | null;\n}\n\nexport interface MemberServerStoragePutApiRequest {\n key?: string | null;\n value?: string | null;\n}\n\nexport interface MemberServerStoragePutApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSessionDataApiRequest = object;\n\nexport interface MemberSessionDataApiResponse {\n countryCodeIso2?: string | null;\n languageCodeIso2?: string | null;\n /** @format int32 */\n age?: number | null;\n alias?: string | null;\n aliasSlug?: string | null;\n appleId?: string | null;\n automaticTranslationPreferred: boolean;\n birthDate?: string | null;\n blueshiftEventSignature?: string | null;\n city?: string | null;\n country?: string | null;\n currencyCode?: string | null;\n /** @format float */\n detailedSellerRating?: number | null;\n email?: string | null;\n facebookId?: string | null;\n firstName?: string | null;\n gender?: string | null;\n googleId?: string | null;\n hasTraderaPay: boolean;\n heroImageUrl?: string | null;\n isBuyer: boolean;\n isSeller: boolean;\n isTrustedMember: boolean;\n klarnaId?: string | null;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n memberIdHash?: string | null;\n /** @format int32 */\n memberState: number;\n permissions?: MemberPermissionsApiDto | null;\n /** @format date-time */\n registrationDate: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberShopDetailsApiResponse {\n alias?: string | null;\n companyInfo?: string | null;\n contactInfo?: string | null;\n hasLogo: boolean;\n logoFormat?: string | null;\n /** @format int32 */\n memberId: number;\n purchaseTerms?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FirebaseConfiguration {\n apiKey?: string | null;\n authDomain?: string | null;\n databaseUrl?: string | null;\n functionsEmulatorUrl?: string | null;\n projectId?: string | null;\n region?: string | null;\n storageBucket?: string | null;\n}\n\nexport type GetMessagingConfigurationApiRequest = object;\n\nexport interface GetMessagingConfigurationApiResponse {\n firebaseConfiguration?: FirebaseConfiguration | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMessagingEmailNotifyApiResponse {\n emailNotify: MessagingEmailNotification;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMessagingItemApiResponse {\n /** @format int32 */\n price: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMessagingSilentApiRequest = object;\n\nexport interface GetMessagingSilentApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMessagingStatsApiRequest = object;\n\nexport interface GetMessagingStatsApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n threads: number;\n /** @format int32 */\n threadsUnread: number;\n}\n\nexport enum MessagingEmailNotification {\n All = 'All',\n Unread = 'Unread',\n None = 'None'\n}\n\nexport interface SetMessagingEmailNotifyApiRequest {\n emailNotify: MessagingEmailNotification;\n}\n\nexport interface SetMessagingEmailNotifyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMessagingSilentApiRequest {\n enabled: boolean;\n}\n\nexport interface SetMessagingSilentApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ConfirmMutualFeedbackRemovalApiRequest {\n /** @format int32 */\n feedbackRemovalRequestId: number;\n}\n\nexport interface ConfirmMutualFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum ConfirmationStatus {\n ConfirmationAllowed = 'ConfirmationAllowed',\n RequestIsOlderThen30Days = 'RequestIsOlderThen30Days',\n RequestedBySubmitter = 'RequestedBySubmitter'\n}\n\nexport interface CreateFeedbackRemovalApiRequest {\n comment?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface CreateFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum CreationStatus {\n CreationAllowed = 'CreationAllowed',\n CreatedBySubmitter = 'CreatedBySubmitter',\n CanBeAcceptedByReceiver = 'CanBeAcceptedByReceiver'\n}\n\nexport interface DenyMutualFeedbackRemovalApiRequest {\n /** @format int32 */\n feedbackRemovalRequestId: number;\n}\n\nexport interface DenyMututalFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum FeedbackRemovalFlowStatus {\n CanBeStarted = 'CanBeStarted',\n CanBeAccepted = 'CanBeAccepted',\n SubmittedAlready = 'SubmittedAlready',\n NotApplicable = 'NotApplicable'\n}\n\nexport enum FeedbackRemovalState {\n Pending = 'Pending',\n Accepted = 'Accepted',\n Rejected = 'Rejected'\n}\n\nexport interface FlowStatusRequest {\n /** @format int32 */\n feedbackMemberId: number;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface FlowStatusResponse {\n feedbacksRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n flowStatus: FeedbackRemovalFlowStatus;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MemberDetails {\n alias?: string | null;\n /** @format int32 */\n id: number;\n}\n\nexport interface MutualFeedbackRemovalApiDto {\n comment?: string | null;\n /** @format date-time */\n completed?: string | null;\n /** @format date-time */\n created: string;\n fromMember?: MemberDetails | null;\n /** @format int32 */\n id: number;\n isCompleted: boolean;\n /** @format int32 */\n itemId: number;\n status?: FeedbackRemovalState | null;\n toMember?: MemberDetails | null;\n /** @format int32 */\n transactionBuyerMemberId: number;\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n transactionSellerMemberId: number;\n}\n\nexport interface TransactionFeedbackApiDto {\n /** @format date-time */\n created: string;\n fromMemberAlias?: string | null;\n /** @format int32 */\n fromMemberId: number;\n memberRole: TransactionFeedbackRole;\n rating: TransactionFeedbackRating;\n text?: string | null;\n toMemberAlias?: string | null;\n /** @format int32 */\n toMemberId: number;\n}\n\nexport enum TransactionFeedbackRating {\n None = 'None',\n Negative = 'Negative',\n Positive = 'Positive'\n}\n\nexport enum TransactionFeedbackRole {\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport interface FeedbackRemovalApiResponse {\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FeedbackRemovalsApiRequest {\n feedbacks?: FlowStatusRequest[] | null;\n}\n\nexport interface FeedbackRemovalsApiResponse {\n feedbacksRemovalRequests?: FlowStatusResponse[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateConfirmationApiResponse {\n confirmationStatus: ConfirmationStatus;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateCreationApiResponse {\n creationStatus: CreationStatus;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum AvailablePayoutOption {\n SwedishBankAccount = 'SwedishBankAccount',\n InternationalBankAccount = 'InternationalBankAccount',\n PayPal = 'PayPal',\n Swish = 'Swish',\n Tink = 'Tink',\n Unknown = 'Unknown'\n}\n\nexport interface CompleteHyperwalletTransferMethodApiRequest {\n transferMethodToken?: string | null;\n transferMethodType?: string | null;\n}\n\nexport interface CompleteHyperwalletTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletAuthenticationTokenApiRequest = object;\n\nexport interface GetHyperwalletAuthenticationTokenApiResponse {\n authenticationToken?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletMemberDetailsApiRequest = object;\n\nexport interface GetHyperwalletMemberDetailsApiResponse {\n payeeVerificationStatus?: string | null;\n responseStatus?: ResponseStatus | null;\n userToken?: string | null;\n}\n\nexport type GetHyperwalletTransferMethodViewModelApiRequest = object;\n\nexport interface GetHyperwalletTransferMethodViewModelApiResponse {\n responseStatus?: ResponseStatus | null;\n userToken?: string | null;\n widgetBaseUrl?: string | null;\n}\n\nexport type GetIsTraderaPayEnabledApiRequest = object;\n\nexport interface GetIsTraderaPayEnabledApiResponse {\n isEnabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetPayoutSettingsModalViewModelApiResponse {\n availablePayoutOptions?: AvailablePayoutOption[] | null;\n hyperwallet?: PayoutSettingsModalHyperwallet | null;\n member?: PayoutSettingsModalMember | null;\n payoutFrequencyOption?: string | null;\n responseStatus?: ResponseStatus | null;\n tink?: PayoutSettingsModalTink | null;\n}\n\nexport type GetPayoutSettingsViewModelApiRequest = object;\n\nexport interface GetPayoutSettingsViewModelApiResponse {\n hyperwalletOnboardingProblems?: HyperwalletOnboardingProblem[] | null;\n hyperwalletPayeeVerificationStatus?: string | null;\n payoutDestination?: string | null;\n payoutDestinationType?: string | null;\n payoutFrequencyOption?: string | null;\n payoutFrequencyOptions?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetPayoutTransferMethodUpdateStatusApiResponse {\n errorCode?: string | null;\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n}\n\nexport interface HyperwalletOnboardingProblem {\n details?: string | null;\n type?: string | null;\n}\n\nexport interface MatchBankApiRequest {\n bankAccountNumber?: string | null;\n clearingNumber?: string | null;\n}\n\nexport interface MatchBankApiResponse {\n bankFound: boolean;\n /** @deprecated */\n bankName?: string | null;\n ok: boolean;\n /** @deprecated */\n requireBankIdVerification: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PayoutSettingsModalHyperwallet {\n userToken?: string | null;\n widgetBaseUrl?: string | null;\n}\n\nexport interface PayoutSettingsModalMember {\n emailAddress?: string | null;\n isCompany: boolean;\n /** @format int32 */\n memberId: number;\n phoneNumber?: string | null;\n requireBankIdVerification: boolean;\n}\n\nexport interface PayoutSettingsModalTink {\n tinkLinkUrl?: string | null;\n}\n\nexport type RemoveBankAccountPayoutTransferMethodApiRequest = object;\n\nexport interface RemoveBankAccountPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemovePayPalPayoutTransferMethodApiRequest = object;\n\nexport interface RemovePayPalPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemovePayoutTransferMethodApiRequest = object;\n\nexport interface RemovePayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ResendPayoutTransferMethodVerificationCodeApiRequest {\n /** @format uuid */\n processCorrelationId: string;\n swishNumber?: string | null;\n}\n\nexport interface ResendPayoutTransferMethodVerificationCodeApiResponse {\n errorCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetBankAccountPayoutTransferMethodApiRequest {\n bankAccountNumber?: string | null;\n bankIdOrderRef?: string | null;\n clearingNumber?: string | null;\n}\n\nexport interface SetBankAccountPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SetHyperwalletPayeeVerificationAsSubmittedApiRequest = object;\n\nexport interface SetHyperwalletPayeeVerificationAsSubmittedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayPalPayoutTransferMethodApiRequest {\n bankIdOrderRef?: string | null;\n emailAddress?: string | null;\n}\n\nexport interface SetPayPalPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayoutTransferMethodUsingTinkApiRequest {\n accountNumber?: string | null;\n bankIdOrderRef?: string | null;\n}\n\nexport interface SetPayoutTransferMethodUsingTinkApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetSwishPayoutTransferMethodApiRequest {\n bankIdOrderRef?: string | null;\n swishNumber?: string | null;\n}\n\nexport interface SetSwishPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface VerifyPayoutTransferMethodApiRequest {\n /** @format uuid */\n processCorrelationId: string;\n verificationCode?: string | null;\n}\n\nexport interface VerifyPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdBeginWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n}\n\nexport interface BankIdPasswordRecoveryCancelApiRequest {\n bankIdOrderRef?: string | null;\n /** @format int32 */\n memberid: number;\n}\n\nexport interface ChangeAliasApiRequest {\n browser?: string | null;\n ipAddress?: string | null;\n location?: string | null;\n newAlias?: string | null;\n operatingSystem?: string | null;\n}\n\nexport interface ChangeAliasApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangeEmailWithIdApiRequest {\n bankIdOrderRef?: string | null;\n email?: string | null;\n /** @format int32 */\n memberId: number;\n userIpAddress?: string | null;\n}\n\nexport interface ChangeEmailWithIdApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangePasswordApiRequest {\n password?: string | null;\n}\n\nexport interface ChangePasswordApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangePasswordWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n password?: string | null;\n}\n\nexport interface CreateTaxIdentificationImageUploadUrlApiRequest {\n contentType?: string | null;\n}\n\nexport interface CreateTaxIdentificationImageUploadUrlApiResponse {\n objectName?: string | null;\n responseStatus?: ResponseStatus | null;\n uploadUrl?: string | null;\n}\n\nexport type CreateVerificationCodeApiRequest = object;\n\nexport interface CreateVerificationCodeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateVerificationCodeWithMemberIdApiRequest {\n /** @format int32 */\n memberId: number;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface CreateVerificationCodeWithMemberIdApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type DeactivateMemberAccountPermanentlyApiRequest = object;\n\nexport interface DeactivateMemberAccountPermanentlyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DeactivateMemberAccountTemporarilyApiRequest {\n comment?: string | null;\n}\n\nexport interface DeactivateMemberAccountTemporarilyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GenerateMemberReferralCodeApiRequest = object;\n\nexport interface GenerateMemberReferralCodeApiResponse {\n /** @format double */\n amount: number;\n referralCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetAccountDeactivationSettingsApiRequest = object;\n\nexport interface GetAccountDeactivationSettingsApiResponse {\n isAccountDeactivationAllowed: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBraintreeOnboardingDetailsApiRequest = object;\n\nexport interface GetBraintreeOnboardingDetailsApiResponse {\n isAccountDetailsSupplied: boolean;\n maskedBankAccount?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMemberBankIdVerificationApiResponse {\n bankIdFormattedPersonalNumber?: string | null;\n /** @format date-time */\n lastVerifiedDate: string;\n /** @format date-time */\n manualIdentityVerificationValidTo: string;\n needInitialVerification: boolean;\n needsVerification: boolean;\n responseStatus?: ResponseStatus | null;\n supportsVerification: boolean;\n verificationReason: VerificationReason;\n}\n\nexport type GetMemberCompanyDac7StatusApiRequest = object;\n\nexport interface GetMemberCompanyDac7StatusApiResponse {\n isUnderDac7Requirements: boolean;\n hasRegisteredTaxIdentificationNumber: boolean;\n hasRegisteredVatNumber: boolean;\n responseStatus?: ResponseStatus | null;\n shouldProvideTaxBasis: boolean;\n /** @deprecated */\n shouldProvideVatNumber: boolean;\n}\n\nexport type GetMemberCompanyMoneyTransferLicenseStatusApiRequest = object;\n\nexport interface GetMemberCompanyMoneyTransferLicenseStatusApiResponse {\n hasApprovedMoneyTransferLicenseAgreement: boolean;\n hasCompanyContactSsn: boolean;\n /** @deprecated */\n isCompanyContactSignatory: boolean;\n isEligibleToSignMoneyTransferLicenseAgreement: boolean;\n /** @deprecated */\n isUnderLicense: boolean;\n moneyTransferLicenseAgreementName?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberConsentApiRequest = object;\n\nexport interface GetMemberConsentApiResponse {\n hasTraderaPayConsent: boolean;\n isEligibleToSignMoneyTransferLicenseAgreement: boolean;\n /** @deprecated */\n isUnderLicense: boolean;\n needsConsentOfTraderaPayAgreement?: string | null;\n responseStatus?: ResponseStatus | null;\n signatoryVerificationRequired: boolean;\n}\n\nexport type GetMemberEmailNotificationsSettingsViewModelApiRequest = object;\n\nexport interface GetMemberEmailNotificationsSettingsViewModelApiResponse {\n email?: MemberEmailNotificationsSettingsEmailApiDto | null;\n /** @format int32 */\n memberId: number;\n messaging?: MemberEmailNotificationsSettingsMessagingApiDto | null;\n responseStatus?: ResponseStatus | null;\n silentMessaging?: MemberSilentMessagingSettingApiDto | null;\n}\n\nexport type GetMemberHasTaxIdentificationNumberApiRequest = object;\n\nexport interface GetMemberHasTaxIdentificationNumberApiResponse {\n hasTaxIdentificationNumber: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberLocalizationApiRequest = object;\n\nexport interface GetMemberLocalizationApiResponse {\n languageCodeIso2?: string | null;\n automaticTranslationPreferred: boolean;\n currencyCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberProfileSettingsViewModelApiRequest = object;\n\nexport interface GetMemberProfileSettingsViewModelApiResponse {\n accountInformation?: MemberProfileSettingsAccountInformationApiDto | null;\n /** @format int32 */\n memberId: number;\n personalData?: MemberProfileSettingsPersonalDataApiDto | null;\n presentation?: MemberProfileSettingsPresentationApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSecuritySettingsViewModelApiRequest = object;\n\nexport interface GetMemberSecuritySettingsViewModelApiResponse {\n accountDeactivation?: MemberSecuritySettingsAccountDeactivationApiDto | null;\n memberBlocking?: MemberSecuritySettingsMemberBlockingApiDto | null;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSellerSettingsViewModelApiRequest = object;\n\nexport interface GetMemberSellerSettingsViewModelApiResponse {\n autoFeedback?: MemberSellerSettingsAutoFeedbackApiDto | null;\n autoShipmentCheckout?: MemberSellerSettingsAutoShipmentCheckoutApiDto | null;\n combinedShipping?: MemberSellerSettingsCombinedShippingApiDto | null;\n commitOnPayment?: MemberSellerSettingsCommitOnPaymentApiDto | null;\n itemLocalization?: MemberSellerSettingsItemLocalizationApiDto | null;\n makeAnOffer?: MemberSellerSettingsMakeAnOfferApiDto | null;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n shippingFeeRule?: MemberSellerSettingsShippingFeeRuleApiDto | null;\n}\n\nexport type GetMemberShouldCollectTaxIdentificationNumberApiRequest = object;\n\nexport interface GetMemberShouldCollectTaxIdentificationNumberApiResponse {\n responseStatus?: ResponseStatus | null;\n shouldCollectBirthDate: boolean;\n shouldCollectTaxIdentificationNumber: boolean;\n}\n\nexport type GetMemberVerificationStatusApiRequest = object;\n\nexport interface GetMemberVerificationStatusApiResponse {\n hasAnyActiveTraderaPayConsent: boolean;\n hasCompanyContactSsn: boolean;\n hasSsn: boolean;\n isEligibleToSignMoneyTransferLicenseAgreement: boolean;\n /** @deprecated */\n isUnderLicense: boolean;\n needsBankIdVerification: boolean;\n needsConsentOfTraderaPayAgreement?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMoneyTransferLicenseAgreementApiResponse {\n agreementName?: string | null;\n /** @format date-time */\n inEffectAsOf: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetPayoutFrequencyApiRequest = object;\n\nexport type GetPayoutFrequencyOptionsApiRequest = object;\n\nexport type GetShippingInvoiceMemberApiRequest = object;\n\nexport interface GetShippingInvoiceMemberApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetTraderaPayOnboardingDetailsApiRequest = object;\n\nexport interface GetTraderaPayOnboardingDetailsApiResponse {\n isBankAccountDetailsSupplied: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetTranslatedMemberFeedbackApiResponse {\n isTranslationOnDemandDisabled: boolean;\n items?: TranslatedFeedbackItemApiDto[] | null;\n providerName?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface HeroImageUrlApiDto {\n max?: string | null;\n med?: string | null;\n min?: string | null;\n}\n\nexport interface MemberEmailNotificationsSettingsEmailApiDto {\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUnknownDeviceOrIpEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n notifyBeforeWishListItemEnds: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyWhenItemBecomesUnsold: boolean;\n}\n\nexport interface MemberEmailNotificationsSettingsMessagingApiDto {\n emailNotifyAll: boolean;\n isAllowedToSetParticipation: boolean;\n participates: boolean;\n}\n\nexport type MemberHasCompanyContactSsnApiRequest = object;\n\nexport interface MemberHasCompanyContactSsnApiResponse {\n hasCompanyContactSsn: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberHasSsnApiRequest = object;\n\nexport interface MemberHasSsnApiResponse {\n hasSsn: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberProfileSettingsAccountInformationApiDto {\n alias?: string | null;\n emailAddress?: string | null;\n}\n\nexport interface MemberProfileSettingsPersonalDataApiDto {\n countryCodeIso2?: string | null;\n city?: string | null;\n country?: string | null;\n firstName?: string | null;\n isNameChangeAllowed: boolean;\n lastName?: string | null;\n phoneNumber?: string | null;\n phoneNumberUnvalidated?: string | null;\n streetName?: string | null;\n zipCode?: string | null;\n}\n\nexport interface MemberProfileSettingsPresentationApiDto {\n heroImageUrls?: HeroImageUrlApiDto | null;\n information?: string | null;\n}\n\nexport interface MemberSecuritySettingsAccountDeactivationApiDto {\n isAccountDeactivationAllowed: boolean;\n}\n\nexport interface MemberSecuritySettingsBlockedMemberApiDto {\n alias?: string | null;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface MemberSecuritySettingsMemberBlockingApiDto {\n blockedMembers?: MemberSecuritySettingsBlockedMemberApiDto[] | null;\n}\n\nexport interface MemberSellerSettingsAutoFeedbackApiDto {\n enabled: boolean;\n message?: string | null;\n type: SellerAutoFeedbackType;\n}\n\nexport interface MemberSellerSettingsAutoShipmentCheckoutApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsCombinedShippingApiDto {\n /** @format int32 */\n days: number;\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsCommitOnPaymentApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsItemLocalizationApiDto {\n selectedDescriptionLanguageCodeIso2?: string | null;\n shippingFromCountryCodeIso2?: string | null;\n}\n\nexport interface MemberSellerSettingsMakeAnOfferApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsShippingFeeRuleApiDto {\n /** @format int32 */\n freeShippingCostLimit: number;\n shippingOption?: string | null;\n useFreeShippingCostLimit: boolean;\n}\n\nexport interface MemberSilentMessagingSettingApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface PayoutFrequencyApiResponse {\n payoutFrequencyOption?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PayoutFrequencyOptionsApiResponse {\n options?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum RecoveryFlowType {\n Email = 'Email',\n Sms = 'Sms'\n}\n\nexport interface RemoveMemberPublicProfileHeroImageApiRequest {\n userIpAddress?: string | null;\n}\n\nexport interface RemoveMemberPublicProfileHeroImageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemoveTraderaPayPayoutDestinationApiRequest = object;\n\nexport interface RemoveTraderaPayPayoutDestinationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveSellerAutoFeedbackSettingsApiRequest {\n criteria: SellerAutoFeedbackCriteria;\n message?: string | null;\n}\n\nexport interface SaveSellerAutoFeedbackSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveSellerAutoPaymentReminderSettingsApiRequest {\n enabled: boolean;\n}\n\nexport interface SaveSellerAutoPaymentReminderSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveWinnerEmailApiRequest {\n winnerEmail?: string | null;\n}\n\nexport interface SaveWinnerEmailApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum SellerAutoFeedbackType {\n Manual = 'Manual',\n PositiveFeedback = 'PositiveFeedback',\n Paid = 'Paid'\n}\n\nexport interface SendVerificationSmsApiRequest {\n cellphoneNumber?: string | null;\n countryCode?: string | null;\n}\n\nexport interface SendVerificationSmsApiResponse {\n errorMessage?: string | null;\n responseStatus?: ResponseStatus | null;\n sentToCountryCode?: string | null;\n sentToTelephoneNumber?: string | null;\n smsSid?: string | null;\n successful: boolean;\n}\n\nexport interface SendVerificationSmsWithIdApiRequest {\n cellphoneNumber?: string | null;\n countryCode?: string | null;\n /** @format int32 */\n memberId: number;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCombinedShippingMemberDaysApiRequest {\n /** @format int32 */\n days: number;\n}\n\nexport interface SetCombinedShippingMemberDaysApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCombinedShippingMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetCombinedShippingMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCommitOnPaymentMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetCommitOnPaymentMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMakeAnOfferMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetMakeAnOfferMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMemberConsentApiRequest {\n agreementName?: string | null;\n}\n\nexport interface SetMemberConsentApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayoutFrequencyApiRequest {\n payoutFrequencyOption?: string | null;\n}\n\nexport interface SetPayoutFrequencyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetShippingFeeRuleFreeShippingCostLimitApiRequest {\n /** @format int32 */\n freeShippingCostLimit: number;\n useFreeShippingCostLimit: boolean;\n}\n\nexport interface SetShippingFeeRuleFreeShippingCostLimitApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetShippingFeeRuleShippingOptionApiRequest {\n shippingOption?: string | null;\n}\n\nexport interface SetShippingFeeRuleShippingOptionApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SmsCheckApiRequest {\n smsSid?: string | null;\n}\n\nexport interface SmsCheckApiResponse {\n responseStatus?: ResponseStatus | null;\n successful: boolean;\n}\n\nexport interface SmsVerificationDTO {\n action?: string | null;\n cellphoneNumber?: string | null;\n /** @format date-time */\n timestamp: string;\n}\n\nexport interface SmsVerificationsApiResponse {\n responseStatus?: ResponseStatus | null;\n verifications?: SmsVerificationDTO[] | null;\n}\n\nexport interface TaxIdentificationNumberImage {\n filename?: string | null;\n objectName?: string | null;\n}\n\nexport interface TinkBankAccountDto {\n accountNumber?: string | null;\n icon?: string | null;\n name?: string | null;\n}\n\nexport interface TinkGetBankAccountsApiResponse {\n accounts?: TinkBankAccountDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberCompanyContactSsnApiRequest {\n companyContactSsn?: string | null;\n}\n\nexport interface UpdateMemberCompanyContactSsnApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberContactDetailsApiRequest {\n alias?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n lastName?: string | null;\n phoneNumber?: string | null;\n streetName?: string | null;\n town?: string | null;\n userIpAddress?: string | null;\n zipCode?: string | null;\n}\n\nexport interface UpdateMemberContactDetailsApiResponse {\n creditSafeVerificationResult?: CreditSafeNameVerificationResult | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberCurrencyApiRequest {\n currencyCode?: string | null;\n}\n\nexport interface UpdateMemberCurrencyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberEmailSettingsApiRequest {\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUnknownDeviceOrIpEmails?: boolean | null;\n acceptsUpiInfoEmails: boolean;\n notifyBeforeWishListItemEnds: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyWhenItemBecomesUnsold: boolean;\n}\n\nexport interface UpdateMemberEmailSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberLanguageApiRequest {\n languageCodeIso2?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberLanguageApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPublicProfileHeroImageApiRequest {\n heroImageUrl?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberPublicProfileHeroImageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPublicProfileInformationApiRequest {\n information?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberPublicProfileInformationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberSelectedDescriptionLanguageApiRequest {\n languageCodeIso2?: string | null;\n}\n\nexport interface UpdateMemberSelectedDescriptionLanguageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberShippingFromCountryApiRequest {\n countryCodeIso2?: string | null;\n}\n\nexport interface UpdateMemberShippingFromCountryApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberSsnApiRequest {\n ssn?: string | null;\n}\n\nexport interface UpdateMemberSsnApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberTaxIdentificationNumberApiRequest {\n birthDate?: string | null;\n images?: TaxIdentificationNumberImage[] | null;\n taxIdentificationNumber?: string | null;\n}\n\nexport interface UpdateMemberTaxIdentificationNumberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberTranslationPreferredApiRequest {\n isAutomaticTranslationPreferred: boolean;\n}\n\nexport interface UpdateMemberTranslationPreferredApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberVatNumberApiRequest {\n vatNumber?: string | null;\n}\n\nexport interface UpdateMemberVatNumberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateExistingPasswordForMemberApiRequest {\n existingPassword?: string | null;\n}\n\nexport interface ValidateExistingPasswordForMemberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum VerificationReason {\n VerificationNotNeeded = 'VerificationNotNeeded',\n NeedInitialVerification = 'NeedInitialVerification',\n NeedsVerificationFixedPriceLimitTwoMonthValidation = 'NeedsVerificationFixedPriceLimitTwoMonthValidation',\n NeedsVerificationFixedPriceLimitExpensive = 'NeedsVerificationFixedPriceLimitExpensive'\n}\n\nexport interface VerifyNonMobilePincodeApiRequest {\n pincode?: string | null;\n}\n\nexport interface VerifyNonMobilePincodeWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n pincode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface VerifyPincodeApiRequest {\n pincode?: string | null;\n}\n\nexport interface VerifyPincodeApiResponse {\n hasActiveVerificationCode: boolean;\n responseStatus?: ResponseStatus | null;\n success: boolean;\n /** @format int32 */\n verificationAttempts: number;\n}\n\nexport interface VerifyPincodeWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n pincode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface PublicProfileApiResponse {\n selectedDescriptionLanguageCodeIso2?: string | null;\n shippingFromCountryCodeIso2?: string | null;\n accountState: MemberAccountState;\n alias?: string | null;\n city?: string | null;\n /** @format int32 */\n combinedShippingDays: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n firstName?: string | null;\n hasShop: boolean;\n heroImage?: string | null;\n information?: string | null;\n isCompanyUser: boolean;\n isSwedishUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n shopLogoUrl?: string | null;\n /** @format int32 */\n totalRating: number;\n translatedInformation?: string | null;\n}\n\nexport interface Row {\n /** @format date-time */\n createdDate: string;\n key?: string | null;\n /** @format date-time */\n updatedDate: string;\n value?: string | null;\n}\n\nexport interface SaveFeedbackAsBuyerApiRequest {\n /** @format int32 */\n commResponsiveness?: number | null;\n comment?: string | null;\n isPositive: boolean;\n /** @format int32 */\n itemAsDescribed?: number | null;\n /**\n * @deprecated\n * @format int32\n */\n itemId: number;\n reportInr: boolean;\n /**\n * @deprecated\n * @format int32\n */\n sellerMemberId: number;\n /** @format int32 */\n shippingHandlingCharges?: number | null;\n /** @format int32 */\n shippingTime?: number | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface SaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveFeedbackAsSellerApiRequest {\n /**\n * @deprecated\n * @format int32\n */\n buyerMemberId: number;\n comment?: string | null;\n isPositive: boolean;\n /**\n * @deprecated\n * @format int32\n */\n itemId: number;\n /** @format int32 */\n paymentTime?: number | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface SaveFeedbackAsSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SellerAutoFeedbackApiRequest = object;\n\nexport interface SellerAutoFeedbackApiResponse {\n /** @format date-time */\n created: string;\n criteria: SellerAutoFeedbackCriteria;\n message?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SellerAutoPaymentReminderApiRequest = object;\n\nexport interface SellerAutoPaymentReminderApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CampaignCodeItem {\n auctionId?: number[] | null;\n campaignCode?: string | null;\n /** @format int32 */\n campaignCodeId: number;\n}\n\nexport interface CommissionFeeSummaryDto {\n /** @format double */\n maxFee: number;\n /** @format double */\n maxPercentage: number;\n /** @format double */\n minFee: number;\n /** @format double */\n minPercentage: number;\n}\n\nexport interface FeatureSummaryByIdsApiResponse {\n campaignCodes?: CampaignCodeItem[] | null;\n featureSummaryList?: FeatureSummaryApiDto[] | null;\n isCompanyUser: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FeatureSummaryDto {\n /** @format int32 */\n count: number;\n name?: string | null;\n /** @format int32 */\n price: number;\n}\n\nexport interface ItemApiDto {\n /** @format int32 */\n id: number;\n mainImageUrl?: ItemImageUrls | null;\n mainImageUrlTemplate?: string | null;\n /** @format int32 */\n price: number;\n /** @deprecated */\n selectedShipping?: SelectedShipping | null;\n shortDescription?: string | null;\n}\n\nexport interface MarkAsPaidBySellerApiRequest {\n paidConfirmed: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface MarkAsPaidBySellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberActiveItemsSummaryApiRequest = object;\n\nexport interface MemberActiveItemsSummaryApiResponse {\n responseStatus?: ResponseStatus | null;\n summary?: MemberActiveItemsSummaryApiDto | null;\n}\n\nexport type MemberListingFeeApiRequest = object;\n\nexport interface MemberListingFeeApiResponse {\n /** @format int32 */\n maxFreeListingsPerMonth: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberPickListApiResponse {\n /** @format int32 */\n hiddenCount: number;\n items?: PickListBuyerApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberPickListV2ApiResponse {\n /** @format int64 */\n filterHitCount: number;\n /** @format int32 */\n hiddenCount: number;\n items?: PickListBuyerV2ApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberSoldItemBuyerInfoApiResponse {\n buyerContactDetails?: ContactDetailsApiDto | null;\n buyerProfile?: PublicProfileApiDto | null;\n items?: MemberSoldItemApiDto[] | null;\n paidStatus?: string | null;\n paymentMethod?: string | null;\n paymentOptions?: PaymentOptionApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n sellerContactDetails?: ContactDetailsApiDto | null;\n /** @format double */\n totalOrderPrice: number;\n /** @format double */\n totalOrderPriceWithoutShipping: number;\n /** @format double */\n vatPercent?: number | null;\n}\n\nexport interface MemberSoldItemByTransactionIdApiResponse {\n item?: MemberSoldItemApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberSoldItemShippingInfoV2ApiResponse {\n buyerContactDetails?: ContactDetailsApiDto | null;\n isQuickFlowPossible: boolean;\n /** @deprecated */\n item?: ItemApiDto | null;\n items?: ItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n selectedShipping?: SelectedShipping | null;\n}\n\nexport interface MemberSoldItemsApiResponse {\n /** @format int32 */\n hiddenCount: number;\n items?: MemberSoldItemApiDto[] | null;\n /** @format int32 */\n notPaidCount: number;\n /** @format int32 */\n paidCount: number;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n shippedCount: number;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberSoldItemsByPurchaseOrderIdApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSoldItemsSummaryApiRequest = object;\n\nexport interface MemberSoldItemsSummaryApiResponse {\n responseStatus?: ResponseStatus | null;\n summary?: MemberSoldItemsSummaryApiDto | null;\n}\n\nexport type MemberStatsThisMonthApiRequest = object;\n\nexport interface MemberStatsThisMonthApiResponse {\n /** @format int32 */\n activeThisMonthCount: number;\n /** @format int32 */\n listedThisMonthCount: number;\n /** @format int32 */\n maxFreeListingsPerMonth: number;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n soldThisMonthCount: number;\n /** @format int32 */\n unsoldThisMonthCount: number;\n}\n\nexport interface OrderInfoApiResponse {\n bookedShipping?: BookedShipping | null;\n buyerProtection?: BuyerProtectionApiDto | null;\n /** @format double */\n discountCodeAmount?: number | null;\n discounts?: DiscountDto[] | null;\n isFeedbackLeftByBuyer: boolean;\n isMarkedAsShipped: boolean;\n items?: OrderItem[] | null;\n offeredShippingOptions?: ShippingApiDto[] | null;\n paidStatus?: string | null;\n paymentMethod?: string | null;\n /** @format double */\n paymentMethodAmount?: number | null;\n paymentOptions?: PaymentOptionApiDto[] | null;\n /** @format uuid */\n purchaseOrderId: string;\n responseStatus?: ResponseStatus | null;\n selectedShipping?: ShippingApiDto | null;\n sellerContactDetails?: ContactDetailsApiDto | null;\n sellerProfile?: PublicProfileApiDto | null;\n shippingDiscount?: ShippingDiscount | null;\n /** @format double */\n totalOrderPrice: number;\n /** @format double */\n totalOrderPriceWithoutShipping: number;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface OrderItem {\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n /** @format int32 */\n itemId: number;\n /** @format double */\n price: number;\n shortDescription?: string | null;\n /** @format date-time */\n transactionDate: string;\n}\n\nexport interface RestartItemsSummaryApiResponse {\n commission?: CommissionFeeSummaryDto | null;\n features?: FeatureSummaryDto[] | null;\n isCompany: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SelectedShipping {\n /** @format int32 */\n productId?: number | null;\n providerId?: string | null;\n}\n\nexport interface SetItemShippedApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n shipped: boolean;\n}\n\nexport interface SetItemShippedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemShippingBookedApiRequest {\n booked: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface SetItemShippingBookedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetTransactionItemShippedApiRequest {\n shipped: boolean;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface SetTransactionItemShippedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ShopItemPurchaseHistoryApiResponse {\n /** @format int32 */\n categoryId: number;\n /** @format date-time */\n endDate: string;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n /** @format int32 */\n itemId: number;\n purchases?: ShopItemPurchase[] | null;\n responseStatus?: ResponseStatus | null;\n shortDescription?: string | null;\n userReference?: string | null;\n}\n\nexport interface SetBuyerTransactionVisibilityApiRequest {\n hidden: boolean;\n transactionIdList?: number[] | null;\n}\n\nexport interface SetBuyerTransactionVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemVisibilityApiRequest {\n hidden: boolean;\n itemIds?: number[] | null;\n}\n\nexport interface SetItemVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetTransactionVisibilityApiRequest {\n hidden: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface SetTransactionVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SystemMessage {\n severity: SystemMessageSeverity;\n type: SystemMessageType;\n}\n\nexport enum SystemMessageSeverity {\n Warning = 'Warning',\n Info = 'Info'\n}\n\nexport enum SystemMessageType {\n InvoiceOverdue = 'InvoiceOverdue',\n InvoiceUnpaid = 'InvoiceUnpaid',\n PayoutFailed = 'PayoutFailed',\n PayoutReadyBankAccountMissing = 'PayoutReadyBankAccountMissing',\n BankAccountMissing = 'BankAccountMissing',\n HyperwalletPayeeVerificationRequired = 'HyperwalletPayeeVerificationRequired',\n HyperwalletPayeeVerificationUnderReview = 'HyperwalletPayeeVerificationUnderReview',\n PayoutProviderOnboardingFailed = 'PayoutProviderOnboardingFailed',\n KycQuestionnaire = 'KycQuestionnaire',\n PayoutReadyVerificationRequired = 'PayoutReadyVerificationRequired',\n OutstandingTraderaPayLicense = 'OutstandingTraderaPayLicense',\n PayoutReadyOutstandingTraderaPayLicense = 'PayoutReadyOutstandingTraderaPayLicense',\n CollectVatNumber = 'CollectVatNumber',\n CollectTin = 'CollectTin'\n}\n\nexport interface UnblockMemberApiRequest {\n /** @format int32 */\n memberIdToUnblock: number;\n}\n\nexport interface UnblockMemberApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface NewDisputePageApiResponse {\n purchaseOrder?: PurchaseOrderDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ProfilePageApiResponse {\n accountState?: string | null;\n alias?: string | null;\n city?: string | null;\n cleanedAlias?: string | null;\n /** @format int32 */\n combinedShippingDays: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n existsInFavouriteSellers: boolean;\n hasShop: boolean;\n heroImageUrl?: string | null;\n inFavouriteSellers: boolean;\n intro?: string | null;\n isCompany: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n /** @format int32 */\n profileMemberId: number;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalRating?: number | null;\n translatedIntro?: string | null;\n}\n\nexport interface WebChangeEmailWithIdApiRequest {\n bankIdOrderRef?: string | null;\n email?: string | null;\n /** @format int32 */\n memberId: number;\n}\n\nexport enum ItemState {\n BidderAuctionRemoved = 'BidderAuctionRemoved',\n BidderBidRemoved = 'BidderBidRemoved',\n BidderEndedWon = 'BidderEndedWon',\n BidderEndedReservedPriceNotReached = 'BidderEndedReservedPriceNotReached',\n BidderEndedNotWon = 'BidderEndedNotWon',\n BidderActiveLeading = 'BidderActiveLeading',\n BidderActiveReservedPriceNotReached = 'BidderActiveReservedPriceNotReached',\n BidderActiveOverbidden = 'BidderActiveOverbidden',\n GeneralActive = 'GeneralActive',\n GeneralEnded = 'GeneralEnded',\n PurchasedNotPaid = 'PurchasedNotPaid',\n PurchasedPaid = 'PurchasedPaid',\n PurchasedDone = 'PurchasedDone',\n ShopItemActive = 'ShopItemActive',\n ShopItemEnded = 'ShopItemEnded',\n ShopItemEndedWon = 'ShopItemEndedWon',\n BuyItNowEndedWon = 'BuyItNowEndedWon',\n BuyItNowEnded = 'BuyItNowEnded',\n BuyItNowActive = 'BuyItNowActive',\n SellerActiveBids = 'SellerActiveBids',\n SellerActiveNoBids = 'SellerActiveNoBids',\n SellerReservedPriceNotReached = 'SellerReservedPriceNotReached',\n SellerSoldNotPaid = 'SellerSoldNotPaid',\n SellerSoldDone = 'SellerSoldDone',\n SellerSoldShipped = 'SellerSoldShipped',\n SellerSoldPaid = 'SellerSoldPaid',\n SellerSoldShippingBooked = 'SellerSoldShippingBooked'\n}\n\nexport interface WishListApiResponse {\n items: WishListItemCardViewModel[];\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n}\n\nexport interface WishListItemCardViewModel {\n /** @format int32 */\n buyNowPrice: number;\n displayHighlighted: boolean;\n /** @format date-time */\n endDate: string;\n hasFreeShipping: boolean;\n imageSecondaryUrl: string;\n imageUrl: string;\n isActive: boolean;\n isLeading: boolean;\n isOverbidden: boolean;\n isWinner: boolean;\n /** @format int32 */\n itemId: number;\n itemState: ItemState;\n itemType: string;\n itemUrl: string;\n /** @format int32 */\n maxBidAmount: number;\n preferredShipping: WishListItemShippingOptionViewModel;\n /** @format int32 */\n price: number;\n sellerAlias: string;\n /** @format int32 */\n sellerMemberId: number;\n shortDescription: string;\n /** @format int32 */\n totalBids: number;\n}\n\nexport interface WishListItemShippingOptionViewModel {\n /** @format double */\n cost: number;\n type: string;\n}\n\nexport interface AddItemToWishListApiRequest {\n /** @format int32 */\n itemId: number;\n}\n\nexport interface AddItemToWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n wishListItems?: WishListItemDto[] | null;\n}\n\nexport type GetWishListItemIdsApiRequest = object;\n\nexport interface GetWishListItemIdsApiResponse {\n responseStatus?: ResponseStatus | null;\n wishListItemsIds?: number[] | null;\n}\n\nexport type GetWishlistItemsEndingTodayCountApiRequest = object;\n\nexport interface GetWishlistItemsEndingTodayCountApiResponse {\n /** @format int32 */\n numberOfItems: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberBidInfo {\n auctionRemoved: boolean;\n bidRemoved: boolean;\n /** @format int32 */\n maxBidAmount: number;\n /** @format int32 */\n memberId: number;\n reservePriceReached: boolean;\n}\n\nexport interface RemoveItemFromWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface RemoveItemsFromWishListApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface WishListItemDto {\n /** @format date-time */\n addedToWishList: string;\n /** @format int32 */\n bidCount: number;\n boughtByCurrentMember: boolean;\n /** @format int32 */\n categoryId: number;\n /** @format int32 */\n currentBidAmount: number;\n displayHighlighted: boolean;\n /** @format date-time */\n endDate: string;\n /** @format int32 */\n fixedPrice: number;\n hasCommitUpFront: boolean;\n hasEnded: boolean;\n hasReservePrice: boolean;\n isAvailableForOffers?: boolean | null;\n isBuyItNow: boolean;\n isPaid?: boolean | null;\n isShopItem: boolean;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemPrice?: number | null;\n /** @format int32 */\n leadingBidMemberId?: number | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n memberBid?: MemberBidInfo | null;\n /** @format int32 */\n nextValidBidAmount?: number | null;\n /** @format int32 */\n openingBid?: number | null;\n preferredShipping?: ShippingApiDto | null;\n reservePriceReached: boolean;\n secondaryImage?: ItemImageUrls | null;\n secondaryImageTemplate?: string | null;\n sellerAlias?: string | null;\n /** @format int32 */\n sellerMemberId: number;\n /** @format int32 */\n sellerTotalRating: number;\n title?: string | null;\n /** @format date-time */\n transactionDate?: string | null;\n /** @format int32 */\n transactionType?: number | null;\n type: ItemTypeApiDto;\n}\n\nexport interface Address {\n countryCodeIso2?: string | null;\n city?: string | null;\n country?: string | null;\n street?: string | null;\n zipCode?: string | null;\n}\n\nexport interface ShippingDiscount {\n partnerProvider?: string | null;\n /** @format int32 */\n price: number;\n /** @format int32 */\n shippingProductId?: number | null;\n shippingProvider?: string | null;\n}\n\nexport enum PickListFilterPaidStatus {\n All = 'All',\n Paid = 'Paid',\n Unpaid = 'Unpaid'\n}\n\nexport enum PickListFilterShippedStatus {\n All = 'All',\n Shipped = 'Shipped',\n NotShipped = 'NotShipped'\n}\n\nexport interface ShopItemPurchase {\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n buyerTotalRating: number;\n /** @format int32 */\n categoryId: number;\n /** @format int32 */\n price: number;\n /** @format date-time */\n transactionDate: string;\n}\n\nexport interface TransactionFeedbackRemovalRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface TransactionItemShippedCreateParams {\n request?: SetTransactionItemShippedApiRequest;\n}\n\nexport interface TransactionVisibilityCreateParams {\n request?: SetTransactionVisibilityApiRequest;\n}\n\nexport interface TransactionsRequest {\n transactionIds?: number[];\n}\n\nexport interface TranslatedRequest {\n toLanguageCodeIso2?: string;\n feedbackIds?: number[];\n}\n\nexport interface TranslationPreferredUpdateParams {\n request?: UpdateMemberTranslationPreferredApiRequest;\n}\n\nexport interface UnreadNotificationsCountRequest {\n request?: GetUnreadNotificationsCountApiRequest;\n}\n\nexport interface UpiStrikeRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface UppoStrikeCreateParams {\n request?: AddUnpaidPurchaseOrderStrikeApiRequest;\n}\n\nexport interface UppoStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface ValidateExistingPasswordCreateParams {\n request?: ValidateExistingPasswordForMemberApiRequest;\n}\n\nexport interface VatNumberUpdateParams {\n request?: UpdateMemberVatNumberApiRequest;\n}\n\nexport interface VatdetailsRequest {\n request?: GetMemberVatDetailsApiRequest;\n}\n\nexport interface VerificationStatusRequest {\n request?: GetMemberVerificationStatusApiRequest;\n}\n\nexport interface VerifyCreateParams {\n request?: VerifyPayoutTransferMethodApiRequest;\n}\n\nexport interface VerifyNonmobilePincodeCreateParams {\n request?: VerifyNonMobilePincodeApiRequest;\n}\n\nexport interface VerifyNonmobilePincodeWithIdCreateParams {\n request?: VerifyNonMobilePincodeWithIdApiRequest;\n}\n\nexport interface VerifyPincodeCreateParams {\n request?: VerifyPincodeApiRequest;\n}\n\nexport interface VerifyPincodeWithIdCreateParams {\n request?: VerifyPincodeWithIdApiRequest;\n}\n\nexport interface WinnerEmailUpdateParams {\n request?: SaveWinnerEmailApiRequest;\n}\n\nexport interface WishListRequest {\n shippingCountryCodeIso2?: string;\n languageCodeIso2?: string;\n automaticTranslationPreferred?: boolean;\n statusFilter?: string;\n /** @format int32 */\n pageSize?: number;\n /** @format int32 */\n page?: number;\n}\n\nexport interface WishlistCreateParams {\n request?: AddItemToWishListApiRequest;\n}\n\nexport interface WishlistDeleteParams {\n request?: RemoveItemsFromWishListApiRequest;\n}\n\nexport interface WishlistRequest {\n statusFilter?: WishListStatusFilter;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n languageCodeIso2?: string;\n}\n\nexport interface WithAliasRequest {\n alias?: string;\n}\n","import qs from 'qs';\nimport type {\n RemoveItemFromWishListApiResponse,\n RemoveItemsFromWishListApiRequest,\n WishListApiResponse,\n WishListRequest\n} from 'tradera/state/services/types/webapi-member-generated';\nimport { isomorphicBaseQueryForWishListableItems } from './utils/webapi-base-query';\nimport {\n createApi,\n defaultSerializeQueryArgs\n} from '@reduxjs/toolkit/query/react';\nimport { isServer } from 'tradera/utils/nextjs';\nimport {\n selectAutomaticTranslationPreferred,\n selectPreferredLanguageCode\n} from '../language/selectors';\nimport { useAppSelector } from '../hooks';\nimport { selectShippingRegionCountryCodeIso2 } from '../shipping-region/selectors';\nimport { GtmService } from 'tradera/services/google-tagmanager-service';\nimport { wishlistRemoveRange } from '../items/reducer';\n\nexport enum Tags {\n WISH_LIST = 'WISH_LIST'\n}\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getDefaultWishListParams = ({\n page = 1,\n pageSize = 50,\n statusFilter = 'all',\n languageCodeIso2 = 'sv',\n shippingCountryCodeIso2 = 'SE',\n automaticTranslationPreferred = true\n}: WishListRequest): WishListRequest => {\n return {\n page,\n pageSize,\n statusFilter,\n languageCodeIso2,\n shippingCountryCodeIso2,\n automaticTranslationPreferred\n };\n};\n\nexport const useWishListParams = ({\n page,\n pageSize,\n statusFilter\n}: Pick) => {\n const languageCodeIso2 = useAppSelector(selectPreferredLanguageCode);\n const shippingCountryCodeIso2 = useAppSelector(\n selectShippingRegionCountryCodeIso2\n );\n const automaticTranslationPreferred = useAppSelector(\n selectAutomaticTranslationPreferred\n );\n return getDefaultWishListParams({\n page,\n pageSize,\n statusFilter,\n languageCodeIso2,\n shippingCountryCodeIso2,\n automaticTranslationPreferred\n });\n};\n\nexport const wishListApi = createApi({\n reducerPath: 'wishListApi',\n baseQuery: isomorphicBaseQueryForWishListableItems,\n tagTypes: Object.keys(Tags),\n endpoints: (builder) => ({\n getWishList: builder.query({\n query: (params) => {\n const queryString = qs.stringify(params);\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/member/web/wish-list?${queryString}`;\n },\n providesTags: [Tags.WISH_LIST],\n extraOptions: {\n getWishListableItems: (response: WishListApiResponse) =>\n response.items.map((x) => ({\n itemId: x.itemId,\n inWishList: true\n }))\n }\n }),\n deleteWishListItems: builder.mutation<\n RemoveItemFromWishListApiResponse,\n RemoveItemsFromWishListApiRequest\n >({\n invalidatesTags: [Tags.WISH_LIST],\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/member/wishlist`,\n method: 'DELETE',\n body: params\n };\n },\n onQueryStarted: async (params, { dispatch }) => {\n if (params.itemIds && params.itemIds.length > 0) {\n GtmService.trackAction(\n 'Wish list',\n 'Batch select',\n 'Delete'\n );\n dispatch(wishlistRemoveRange(params.itemIds));\n }\n }\n }),\n getWishListEndless: builder.query<\n WishListApiResponse & { page: number },\n WishListRequest\n >({\n query: (params) => {\n const queryString = qs.stringify(params);\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/member/web/wish-list?${queryString}`;\n },\n transformResponse: (response: WishListApiResponse, _, request) => {\n return { ...response, page: request.page ?? 1 };\n },\n providesTags: [Tags.WISH_LIST],\n serializeQueryArgs: ({\n queryArgs: { page, ...otherQueryArgs },\n endpointDefinition,\n endpointName\n }) => {\n // Exclude pageNumber from queryArgs to be ablue to use same cache for infiniteScroll\n return defaultSerializeQueryArgs({\n endpointName,\n queryArgs: otherQueryArgs,\n endpointDefinition\n });\n },\n forceRefetch({ currentArg, previousArg }) {\n return currentArg?.page !== previousArg?.page;\n },\n merge: (currentCacheData, response) => {\n return {\n ...currentCacheData,\n items: [\n ...(currentCacheData.items ?? []),\n ...(response.items ?? [])\n ],\n totalCount: response.totalCount,\n page: response.page\n };\n },\n extraOptions: {\n getWishListableItems: (response: WishListApiResponse) =>\n response.items.map((x) => ({\n itemId: x.itemId,\n inWishList: true\n }))\n }\n })\n })\n});\n\nexport const {\n useGetWishListQuery,\n useGetWishListEndlessQuery,\n useDeleteWishListItemsMutation,\n endpoints,\n util\n} = wishListApi;\n","import type { GetWishlistItemsEndingTodayCountApiResponse } from 'tradera/state/services/types/webapi-member-generated';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\n\nexport enum Tags {\n WISH_LIST_ENDING_TODAY = 'WISH_LIST_ENDING_TODAY'\n}\nexport const wishListItemsEndingTodayApi = createApi({\n reducerPath: 'wishListItemsEndingTodayApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: Object.keys(Tags),\n endpoints: (builder) => ({\n getWishlistItemsEndingTodayCount: builder.query<\n GetWishlistItemsEndingTodayCountApiResponse,\n void\n >({\n providesTags: [Tags.WISH_LIST_ENDING_TODAY],\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/member/wishlist/endingtodaycount`;\n }\n })\n })\n});\n\nexport const { useGetWishlistItemsEndingTodayCountQuery, endpoints, util } =\n wishListItemsEndingTodayApi;\n","import {\n selectGeolocation,\n selectIsLoggedIn,\n selectIsOutsideSweden\n} from 'tradera/state/member/selectors';\nimport { selectPreferredLanguage } from 'tradera/state/language/selectors';\nimport { getLanguageFromCountryCode } from 'tradera/localization/languagecode';\nimport {\n isDenmarkCountryCode,\n isNetherlandsCountryCode,\n isSwedenCountryCodeOrUndefined\n} from 'tradera/localization/countrycode';\nimport type { RootState } from '../configure-store';\n\nexport const selectShowRegionSelection = (state: RootState) =>\n !selectIsLoggedIn(state) && selectIsOutsideSweden(state);\nexport const selectAvailableShippingCountryCodes = (state: RootState) =>\n state.shippingRegion.availableShippingCountryCodes;\nexport const selectAvailableShippingCountries = (state: RootState) =>\n state.shippingRegion.availableShippingCountries;\nexport const selectShippingCountry = (state: RootState) =>\n state.shippingRegion.shippingCountry;\nexport const selectIsLoadingAvailableShippingCountries = (state: RootState) =>\n state.shippingRegion.isLoadingAvailableShippingCountries;\nexport const selectHasLoadedAvailableShippingCountries = (state: RootState) =>\n state.shippingRegion.hasLoadedAvailableShippingCountries;\nexport const selectShippingRegionCountryCodeIso2 = (state: RootState) =>\n state.shippingRegion.shippingCountry?.countryCodeIso2;\nexport const selectIsSwedishVisitor = (state: RootState) =>\n isSwedenCountryCodeOrUndefined(selectShippingRegionCountryCodeIso2(state));\nexport const selectIsDanishVisitor = (state: RootState) =>\n isDenmarkCountryCode(selectShippingRegionCountryCodeIso2(state));\nexport const selectIsDutchVisitor = (state: RootState) =>\n isNetherlandsCountryCode(selectShippingRegionCountryCodeIso2(state));\n\nconst gpsMatchesLanguage = (state: RootState) => {\n const geoLocation = selectGeolocation(state);\n if (!geoLocation) {\n return true;\n }\n const country = geoLocation?.isoCode?.toLowerCase();\n const expectedLang = getLanguageFromCountryCode(country);\n const language =\n selectPreferredLanguage(state)?.languageCodeIso2?.toLowerCase() || 'sv';\n return expectedLang === language;\n};\n\nexport const selectShowLocalizationRegionPicker = (state: RootState) =>\n !selectIsLoggedIn(state) &&\n !state.shippingRegion.regionPickerDismissed &&\n !state.shippingRegion.shippingCountryCookieValue &&\n !gpsMatchesLanguage(state);\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\ntype StatusState = {\n isActionsPerFullPageLoadDone: boolean;\n hasReportedViewportDiff: boolean;\n loadedLanguages: string[];\n};\n\nexport const initialState: StatusState = {\n isActionsPerFullPageLoadDone: false,\n hasReportedViewportDiff: false,\n loadedLanguages: []\n};\n\nconst slice = createSlice({\n name: 'status',\n initialState,\n reducers: {\n setIsActionsPerFullPageLoadDone: (state, { payload }) => {\n state.isActionsPerFullPageLoadDone = payload;\n },\n setHasReportedViewportDiff: (state, { payload }) => {\n state.hasReportedViewportDiff = payload;\n },\n addLoadedLanguage: (state, { payload }: PayloadAction) => {\n if (!state.loadedLanguages.includes(payload)) {\n state.loadedLanguages = [...state.loadedLanguages, payload];\n }\n }\n }\n});\n\nexport const {\n setIsActionsPerFullPageLoadDone,\n setHasReportedViewportDiff,\n addLoadedLanguage\n} = slice.actions;\n\nexport const reducer = slice.reducer;\n","import { logger } from 'packages/logger';\nimport { getReturnUrl } from 'tradera/utils/login';\nimport { DEFAULT_COOKIES } from 'tradera/constants/cookies';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { cache, CACHE_KEYS } from 'tradera/utils/cache';\nimport cookieUtil from 'tradera/utils/cookie';\nimport {\n openProfileMenu,\n closeModal,\n openNotificationOptinModal,\n itemLayout,\n siteLayout,\n logOut,\n setSystemMessages,\n setSystemBadges\n} from './reducer';\nimport { getSystemMessages, getSystemBadges } from './api';\nimport { SystemMessageSeverity } from '../services/types/webapi-member-generated';\n\n/**\n * signIn\n * @param {object} [payload]\n * @param {string} payload.redirectUrl - where to send the user after login completes\n * @param {boolean} [payload.siteHeader] - Experiment: different behaviour for clicks in site header\n */\nconst signIn = (payload) => (dispatch, getStore) => {\n const {\n environment: { featureSwitches }\n } = getStore();\n\n if (!featureSwitches['login-anywhere']) {\n window.location.href = `/login${getReturnUrl(payload?.redirectUrl)}`;\n } else {\n dispatch(openProfileMenu(payload?.redirectUrl));\n dispatch(closeModal());\n }\n};\n\n/**\n * Open a notification optin modal\n *\n * @param {boolean} type - type of notifications to show modal for\n * @returns {function(*, *): boolean}\n */\nconst openNotificationOptinModalAction =\n (modalType, gaLabel, title, description, tagGroups) =>\n async (dispatch, getState) => {\n const { pushNotifications } = getState();\n if (!pushNotifications.enabled) {\n return;\n }\n if (pushNotifications.shownModals[modalType] === true) {\n return;\n }\n dispatch(\n openNotificationOptinModal({\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n })\n );\n };\n\nconst updateItemLayout = (value) => (dispatch) => {\n const defaultCookie = DEFAULT_COOKIES['ITEM_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n dispatch(itemLayout(value));\n};\n\nconst updateSiteLayout = (value) => (dispatch) => {\n const defaultCookie = DEFAULT_COOKIES['SITE_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n dispatch(siteLayout(value));\n};\n\nconst fetchSystemMessages = () => async (dispatch, getState) => {\n const {\n environment: { featureSwitches },\n member: { isLoggedIn }\n } = getState();\n if (featureSwitches && featureSwitches['mytradera-alerts'] && isLoggedIn) {\n try {\n let systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES);\n if (!systemMessages?.messages) {\n const fetchedMessages = await getSystemMessages();\n if (fetchedMessages?.data?.items) {\n systemMessages = {\n messages: fetchedMessages.data.items.reduce(\n (acc, message) => ({\n ...acc,\n [message.type]: true\n }),\n {}\n ),\n notificationCount: fetchedMessages.data.items.filter(\n (message) =>\n message.severity ===\n SystemMessageSeverity.Warning\n ).length\n };\n cache.write(CACHE_KEYS.SYSTEM_MESSAGES, systemMessages);\n }\n }\n dispatch(setSystemMessages(systemMessages));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n await dispatch(logOutAction());\n window.location = '/login/logout';\n break;\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error);\n break;\n }\n }\n }\n};\n\nconst fetchSystemBadges = () => async (dispatch, getState) => {\n const {\n member: { isLoggedIn }\n } = getState();\n if (!isLoggedIn) return;\n\n try {\n let systemBadges = cache.read(CACHE_KEYS.SYSTEM_BADGES);\n if (!systemBadges?.badges) {\n const fetchedBadges = await getSystemBadges();\n if (fetchedBadges?.data?.badges) {\n const badgeMap = fetchedBadges.data.badges.reduce(\n (acc, badge) => ({ ...acc, [badge.type]: badge.count }),\n {}\n );\n systemBadges = {\n badges: badgeMap,\n notificationCount: badgeMap.PayoutsActivity ? 1 : 0\n };\n cache.write(CACHE_KEYS.SYSTEM_BADGES, systemBadges);\n }\n }\n dispatch(setSystemBadges(systemBadges));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_BADGES);\n if (error.message === API_ERRORS.LOGGED_OUT) {\n await dispatch(logOutAction());\n window.location = '/login/logout';\n }\n }\n};\n\nconst reloadSystemMessages = () => (dispatch) => {\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch(fetchSystemMessages());\n};\n\nconst reloadSystemBadges = () => (dispatch) => {\n cache.remove(CACHE_KEYS.SYSTEM_BADGES);\n dispatch(fetchSystemBadges());\n};\n\nconst logOutAction = () => async (dispatch) => {\n cache.remove(CACHE_KEYS.MESSAGING_BADGES);\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n cache.remove(CACHE_KEYS.SYSTEM_BADGES);\n\n // This is a hacky way to log out from Firebase even though the Firebase\n // app might not be loaded currently. We can use the firebase.auth().signOut()\n // method if inside Messaging and the Firebase app is loaded, but after\n // leaving Messaging we need to delete the database that holds auth information\n // to make sure the user is logged out.\n indexedDB.deleteDatabase('firebaseLocalStorageDb');\n\n dispatch(logOut());\n};\n\nexport default {\n signIn,\n openNotificationOptinModalAction,\n updateItemLayout,\n updateSiteLayout,\n fetchSystemMessages,\n fetchSystemBadges,\n reloadSystemMessages,\n reloadSystemBadges,\n logOutAction\n};\n\nexport { signIn };\n","/* eslint-disable better-mutation/no-mutation */\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport { MODAL_STATE, ITEM_LAYOUT } from 'tradera/constants/ui';\nimport { getInitialBadges, type UiState } from './initial-state';\n\nconst uiSlice = createSlice({\n name: 'ui',\n initialState: {\n itemLayout: ITEM_LAYOUT.LIST\n } as UiState,\n reducers: {\n initialize: (_state, { payload }) => {\n return {\n ...payload\n };\n },\n toggleHeaderSearch: (state, { payload }) => {\n state.showHeaderSearch = payload;\n },\n\n openVideoModal: (state, { payload }) => {\n const {\n videoUrl,\n videoId,\n title,\n pageType,\n buttonLink,\n buttonText\n } = payload;\n state.videoModal = {\n ...state.videoModal,\n open: MODAL_STATE.OPEN,\n videoUrl,\n videoId,\n title,\n pageType,\n buttonLink,\n buttonText\n };\n },\n closeVideoModal: (state) => {\n state.videoModal.open = MODAL_STATE.CLOSED;\n },\n openNewMessageModal: (state, { payload }) => {\n state.newMessageModal = {\n open: MODAL_STATE.OPEN,\n title: payload.title,\n senderId: payload.senderId,\n recipientId: payload.recipientId,\n recipientAlias: payload.recipientAlias,\n itemId: payload.itemId,\n itemTitle: payload.itemTitle,\n itemImageUrl: payload.itemImageUrl,\n purchaseOrderId: payload.purchaseOrderId,\n itemSellerId: payload.itemSellerId\n };\n },\n closeNewMessageModal: (state) => {\n state.newMessageModal.open = MODAL_STATE.CLOSED;\n },\n openNotificationOptinModal: (state, { payload }) => {\n const { modalType, gaLabel, title, description, tagGroups } =\n payload;\n state.notificationOptinModal = {\n ...state.notificationOptinModal,\n open: MODAL_STATE.OPEN,\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n };\n },\n closeNotificationOptinModal: (state) => {\n state.notificationOptinModal.open = MODAL_STATE.CLOSED;\n },\n openModal: (state, { payload }) => {\n const { modalId, data } = payload;\n state.modals = {\n currentModal: modalId,\n currentModalData: data\n };\n },\n closeModal: (state) => {\n state.modals = {\n currentModal: null,\n currentModalData: null\n };\n },\n itemLayout: (state, { payload }) => {\n state.itemLayout = payload;\n },\n siteLayout: (state, { payload }) => {\n state.siteLayout = payload;\n },\n setSystemMessages: (state, { payload }) => {\n state.systemMessages = payload.messages;\n state.badges.messageNotificationCount = payload.notificationCount;\n },\n setSystemBadges: (state, { payload }) => {\n state.systemBadges = payload.badges;\n state.badges.badgeNotificationCount = payload.notificationCount;\n },\n openProfileMenu: (state, { payload }) => {\n state.profileMenu = {\n open: MODAL_STATE.OPEN,\n redirectUrl: payload || false\n };\n },\n closeProfileMenu: (state) => {\n state.profileMenu.open = MODAL_STATE.CLOSED;\n },\n openCategoryDropdownMenu: (state) => {\n state.categoryDropdownMenu.open = MODAL_STATE.OPEN;\n },\n closeCategoryDropdownMenu: (state) => {\n state.categoryDropdownMenu.open = MODAL_STATE.CLOSED;\n },\n openSearchForm: (state) => {\n state.showSearchForm = true;\n },\n closeSearchForm: (state) => {\n state.showSearchForm = false;\n },\n logOut: (state) => {\n state.badges = getInitialBadges();\n },\n openItemSettings: (state, { payload }) => {\n state.itemSettings = {\n open: MODAL_STATE.OPEN,\n item: payload\n };\n },\n closeItemSettings: (state) => {\n state.itemSettings = {\n open: MODAL_STATE.CLOSED,\n item: {}\n };\n },\n openShareModal: (state, { payload }) => {\n state.shareModal = {\n isOpen: true,\n settings: payload\n };\n },\n closeShareModal: (state) => {\n state.shareModal = {\n isOpen: false,\n settings: null\n };\n },\n openHelpSection: (state, { payload }) => {\n state.helpSection = {\n isOpen: true,\n settings: payload\n };\n },\n closeHelpSection: (state) => {\n state.helpSection = {\n isOpen: false,\n settings: null\n };\n },\n openWishListSideSheet: (state) => {\n state.wishListSideSheet.isOpen = true;\n },\n closeWishListSideSheet: (state) => {\n state.wishListSideSheet.isOpen = false;\n },\n openNotificationsSideSheet: (state) => {\n state.notificationsSideSheet.isOpen = true;\n },\n closeNotificationsSideSheet: (state) => {\n state.notificationsSideSheet.isOpen = false;\n },\n updateProductCommunications: (state, { payload }) => {\n state.productCommunications = payload;\n },\n showSaveSearchBanner: (\n state,\n { payload = true }: PayloadAction\n ) => {\n state.showSaveSearchBanner = payload;\n },\n openCollectSsnModal: (state) => {\n state.collectSsnModal.isOpen = true;\n },\n closeCollectSsnModal: (state) => {\n state.collectSsnModal.isOpen = false;\n },\n openReferralModal: (state) => {\n state.referralModal.isOpen = true;\n },\n closeReferralModal: (state) => {\n state.referralModal.isOpen = false;\n }\n }\n});\n\nexport const {\n initialize,\n toggleHeaderSearch,\n openVideoModal,\n closeVideoModal,\n openNewMessageModal,\n closeNewMessageModal,\n openNotificationOptinModal,\n closeNotificationOptinModal,\n itemLayout,\n setSystemMessages,\n setSystemBadges,\n openProfileMenu,\n closeProfileMenu,\n openCategoryDropdownMenu,\n closeCategoryDropdownMenu,\n openSearchForm,\n closeSearchForm,\n openItemSettings,\n closeItemSettings,\n siteLayout,\n logOut,\n openModal,\n closeModal,\n openShareModal,\n closeShareModal,\n openHelpSection,\n closeHelpSection,\n openWishListSideSheet,\n closeWishListSideSheet,\n openNotificationsSideSheet,\n closeNotificationsSideSheet,\n updateProductCommunications,\n showSaveSearchBanner,\n openCollectSsnModal,\n closeCollectSsnModal,\n openReferralModal,\n closeReferralModal\n} = uiSlice.actions;\n\nexport const reducer = uiSlice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\n\nconst cartSlice = createSlice({\n name: 'cart',\n initialState: getInitialState(),\n reducers: {\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n },\n setCartData: (state, { payload }) => {\n state.isFetching = false;\n state.merchantPreOrders = payload.merchantPreOrders;\n state.errors = {};\n },\n setError: (state, { payload }) => {\n state.errors[payload.id] = payload.message;\n }\n }\n});\n\nexport const { setFetching, setCartData, setError } = cartSlice.actions;\n\nexport default cartSlice.reducer;\n","export const MODAL_TYPE = {\n SWISH_HANDEL: 'SWISH_HANDEL',\n TRUSTLY: 'TRUSTLY'\n};\n\nexport const PAYMENT_OPTIONS = {\n CARD: 'Card',\n PAYPAL: 'PayPal',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard',\n KLARNA: 'Klarna',\n TRUSTLY: 'Trustly',\n WALLET: 'Wallet',\n NO_PAYMENT_METHOD: 'NoPaymentMethod'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount',\n UNAVAILABLE_DUE_TO_SHIPPING_NOT_TRACEABLE:\n 'UnavailableDueToShippingNotTraceable',\n UNAVAILABLE_DUE_TO_SHIPPING_NOT_TRACEABLE_TO_SERVICEPOINT:\n 'UnavailableDueToShippingNotTraceableToServicePoint',\n AVAILABLE_WITH_DISTURBANCE: 'AvailableWithDisturbance'\n};\n\nexport const BUYER_PROTECTION_STATE = {\n NOT_SELECTED: 'NotSelected',\n NOT_ADDED: 'NotAdded',\n ADDED: 'Added'\n};\n\nexport default () => {\n return {\n buyerMember: null,\n checkoutSummary: {\n hasError: false,\n isFetching: false\n },\n hasError: false,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n buyerProtection: BUYER_PROTECTION_STATE.NOT_SELECTED,\n orderCalculation: null,\n paymentMethodData: null,\n paymentMethodAmount: null,\n discountCodeValue: null,\n isValid: false,\n discountCode: {\n validating: false,\n error: undefined,\n code: '',\n value: undefined\n },\n showSelectedPaymentAsPayButton: false\n },\n sellerMember: null,\n modal: {\n open: '',\n paymentAttemptId: '',\n trustlyRedirectUrl: ''\n },\n ongoingPaymentAttempt: null,\n shippingInfo: {\n shippingOptions: null,\n shippingPriceRange: null,\n shippingDiscount: null,\n collectionPoints: null,\n selectedCollectionPoint: null,\n isBooked: false,\n isFetching: false\n },\n combinedShippingInfo: null,\n purchaseOrder: {},\n shippingOptionsLoading: false,\n verificationStatus: {\n needsKyc: false\n },\n preselectedValues: {\n shipping: null,\n paymentOption: null,\n buyerProtection: BUYER_PROTECTION_STATE.NOT_SELECTED,\n discountCode: null\n }\n };\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from 'tradera/state/views/checkout/initial-state';\n\nconst checkoutSlice = createSlice({\n name: 'checkout',\n initialState: getInitialState(),\n reducers: {\n receiveCheckout: (state, { payload }) => {\n const {\n buyerMember,\n purchaseOrder,\n sellerMember,\n shippingInfo,\n combinedShippingInfo,\n ongoingPaymentAttempt,\n shippingFeeRule,\n verificationStatus\n } = payload;\n state.buyerMember = { ...buyerMember };\n state.sellerMember = { ...sellerMember };\n state.isFetching = false;\n state.hasError = false;\n state.purchaseOrderId = purchaseOrder.purchaseOrderId;\n state.orderNumber = purchaseOrder.orderNumber;\n state.paidStatus = purchaseOrder.paidStatus;\n state.ongoingPaymentAttempt = ongoingPaymentAttempt;\n state.shippingInfo.shippingOptions = shippingInfo.shippingOptions;\n state.shippingInfo.shippingPriceRange =\n shippingInfo.shippingPriceRange;\n state.shippingInfo.shippingDiscount = shippingInfo.shippingDiscount;\n state.shippingInfo.selectedCollectionPoint =\n shippingInfo.collectionPointId !== undefined\n ? { id: shippingInfo.collectionPointId }\n : undefined;\n state.shippingInfo.isBooked = shippingInfo.isBooked;\n state.combinedShippingInfo = combinedShippingInfo;\n state.shippingFeeRule = shippingFeeRule;\n state.purchaseOrder = purchaseOrder;\n state.shippingOptionsLoading = false;\n state.verificationStatus = verificationStatus;\n },\n receiveShippingOptions: (state, { payload }) => {\n state.shippingInfo.shippingOptions = payload;\n },\n setShippingOptionsLoading: (state, { payload }) => {\n state.shippingOptionsLoading = payload.isLoading;\n },\n receivePaymentOptions: (state, { payload }) => {\n state.payment.paymentOptions = payload;\n state.payment.isFetching = false;\n },\n receiveCollectionPoints: (state, { payload }) => {\n state.shippingInfo.collectionPoints = payload;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n state.hasError = false;\n },\n openModal: (state, { payload }) => {\n const { open, paymentAttemptId, trustlyRedirectUrl } = payload;\n state.modal = {\n open,\n paymentAttemptId,\n trustlyRedirectUrl\n };\n },\n cancelPayment: (state) => {\n state.checkoutSummary.hasError = false;\n state.checkoutSummary.isFetching = false;\n },\n closeModal: (state) => {\n state.modal = {\n open: ''\n };\n },\n setHasError: (state, { payload }) => {\n state.hasError = payload;\n state.isFetching = false;\n },\n setPaymentFetching: (state, { payload }) => {\n state.payment.isFetching = payload;\n state.payment.hasError = false;\n },\n setPaymentHasError: (state, { payload }) => {\n state.payment.hasError = payload;\n state.payment.isFetching = false;\n },\n setPaymentIsValid: (state, { payload }) => {\n state.payment.isValid = payload;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.checkoutSummary.hasError = false;\n },\n setOrderCalculation: (state, { payload }) => {\n state.payment.orderCalculation = payload;\n },\n setBuyerProtection: (state, { payload }) => {\n state.payment.buyerProtection = payload;\n },\n setSelectedShipping: (state, { payload }) => {\n state.selectedShipping = payload;\n },\n setOngoingPaymentAttempt: (state, { payload }) => {\n state.ongoingPaymentAttempt = payload;\n },\n setCombinedShippingInfo: (state, { payload }) => {\n state.combinedShippingInfo = {\n ...state.combinedShippingInfo,\n ...payload\n };\n },\n setBuyerMember: (state, { payload }) => {\n state.buyerMember = { ...state.buyerMember, ...payload };\n },\n setBuyerMemberAddress: (state, { payload }) => {\n state.buyerMember.address = {\n ...state.buyerMember.address,\n ...payload\n };\n },\n setCollectionPoint: (state, { payload }) => {\n state.shippingInfo.selectedCollectionPoint = payload;\n },\n setShippingInfoFetching: (state, { payload }) => {\n state.shippingInfo.isFetching = payload;\n },\n setCollectionPointSaving: (state, { payload }) => {\n state.shippingInfo.savingCollectionPoint = payload;\n },\n setDropinLoading: (state, { payload }) => {\n state.payment.dropinLoading = payload;\n },\n setDiscountCode: (state, { payload }) => {\n state.payment.discountCode = {\n ...state.payment.discountCode,\n ...payload\n };\n },\n setDiscountCodeValidating: (state, { payload }) => {\n state.payment.discountCode.validating = payload;\n },\n setPaymentMethodAmount: (state, { payload }) => {\n state.payment.paymentMethodAmount = payload;\n },\n setDiscountCodeValue: (state, { payload }) => {\n state.payment.discountCodeValue = payload;\n },\n setPreselectedValues: (state, { payload }) => {\n state.preselectedValues = payload;\n },\n setShowSelectedPaymentAsPayButton: (state, { payload }) => {\n state.payment.showSelectedPaymentAsPayButton = payload;\n }\n }\n});\n\nexport const {\n openModal,\n closeModal,\n cancelPayment,\n receiveCheckout,\n receiveShippingOptions,\n setShippingOptionsLoading,\n receivePaymentOptions,\n receiveCollectionPoints,\n setFetching,\n setHasError,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n setPaymentFetching,\n setPaymentHasError,\n setPaymentIsValid,\n setPaymentMethodData,\n setSelectedPayment,\n setOrderCalculation,\n setSelectedShipping,\n setOngoingPaymentAttempt,\n setCombinedShippingInfo,\n setBuyerMember,\n setBuyerMemberAddress,\n setCollectionPoint,\n setShippingInfoFetching,\n setCollectionPointSaving,\n setBuyerProtection,\n setDropinLoading,\n setDiscountCode,\n setDiscountCodeValidating,\n setPaymentMethodAmount,\n setDiscountCodeValue,\n setPreselectedValues,\n setShowSelectedPaymentAsPayButton\n} = checkoutSlice.actions;\n\nexport default checkoutSlice.reducer;\n","import { setReportItem, setViewState } from './reducer';\nimport { getReportItemModel, postReport } from './api';\nimport { VIEW_STATES } from './constants';\nimport { logger } from 'packages/logger';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { getBackToHereRedirectUrl } from 'tradera/utils/url';\nimport { getReturnUrl } from 'tradera/utils/login';\n\nconst onLoggedOut = () => {\n window.location = `/login${getReturnUrl(getBackToHereRedirectUrl())}`;\n};\n\nexport const loadReportItemModel = (itemId) => async (dispatch, getState) => {\n const reportItem = getState().views.reportItem;\n const isLoaded = reportItem.itemId === itemId;\n if (isLoaded) {\n dispatch(\n setViewState(\n reportItem.hasEnded ? VIEW_STATES.ITEM_ENDED : VIEW_STATES.FORM\n )\n );\n return;\n }\n try {\n dispatch(setViewState(VIEW_STATES.LOADING));\n const { data } = await getReportItemModel(itemId);\n\n dispatch(handleReportItemModel(data));\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const handleReportItemModel = (reportItemModel) => (dispatch) => {\n dispatch(setReportItem(reportItemModel));\n};\n\nexport const submitReport =\n (itemId, reason, message, categoryId) => async (dispatch) => {\n dispatch(setViewState(VIEW_STATES.SUBMITTING));\n try {\n await postReport(itemId, reason, message, categoryId);\n dispatch(setViewState(VIEW_STATES.SUBMIT_SUCCESS));\n } catch (error) {\n logger(error);\n dispatch(setViewState(VIEW_STATES.SUBMIT_FAILED));\n }\n };\n","export const VIEW_STATES = {\n FORM: 'FORM',\n ITEM_ENDED: 'ITEM_ENDED',\n LOADING: 'LOADING',\n SUBMIT_FAILED: 'SUBMIT_FAILED',\n SUBMIT_SUCCESS: 'SUBMIT_SUCCESS',\n SUBMITTING: 'SUBMITTING'\n} as const;\n\nexport const REASONS = {\n NONE: '0',\n SUSPECTED_FRAUD: '1',\n ITEM_IS_A_COUNTERFEIT: '2',\n BRAND_NAME_MISUSE: '3',\n WRONG_CATEGORY: '4',\n PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD: '5',\n OTHER_PROHIBITED_ITEM: '6',\n OTHER_PROHIBITED_SETUP: '7',\n OTHER: '8'\n} as const;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport { assertNoUndefinedProperties } from 'tradera/utils/assert';\nimport { getItemState } from '../view-item/item-state-helper';\nimport { getAmountDetails } from 'tradera/apps/tradera/components/vip/bidding/bid-details'; // TODO put getAmountDetails somewhere else\nimport { VIEW_STATES } from './constants';\n\nexport const initialState = {\n amount: 0,\n breadCrumbs: [],\n categoryId: 0,\n categoryNames: [],\n categories: [],\n categoryLevel: 0,\n description: null,\n hasEnded: false,\n images: [],\n itemId: 0,\n itemUrl: null,\n paymentOptions: [],\n reasons: [],\n resultMessage: null,\n shippingOptions: [],\n shippingTerms: [],\n sellerMemberId: 0,\n title: null,\n viewState: VIEW_STATES.LOADING,\n itemDetails: null\n};\n\nconst slice = createSlice({\n name: 'reportItem',\n initialState,\n reducers: {\n resetInitialState: () => {\n return initialState;\n },\n setReportItem: (state, { payload: { item, itemUrl, reasons } }) => {\n const itemDetails = item.itemDetails;\n const bidInfo = item.bidInfo;\n const itemState = getItemState(\n itemDetails.hasEnded,\n itemDetails.hasStarted,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n const amountDetails = getAmountDetails(\n itemState,\n itemDetails.fixedPrice,\n bidInfo.leadingBidAmount,\n itemDetails.openingBid,\n bidInfo.bidCount > 0\n );\n state.amount = amountDetails.amount;\n state.allowedBuyerRegion = itemDetails.allowedBuyerRegion;\n state.breadCrumbs = item.breadCrumbs;\n state.categoryId = itemDetails.categoryId;\n state.categoryNames = item.breadCrumbs.map(\n (breadCrumb) => breadCrumb.text\n );\n state.description = itemDetails.description;\n state.endDate = itemDetails.endDate;\n state.hasEnded = itemDetails.hasEnded;\n state.images = itemDetails.images;\n state.itemId = itemDetails.itemId;\n state.itemUrl = itemUrl;\n state.paymentOptions = itemDetails.paymentOptions;\n state.reasons = reasons;\n state.shippingOptions = itemDetails.shippingOptions;\n state.shippingTerms = itemDetails.shippingTerms;\n state.sellerMemberId = itemDetails.sellerMemberId;\n state.title = itemDetails.title;\n state.viewState = itemDetails.hasEnded\n ? VIEW_STATES.ITEM_ENDED\n : VIEW_STATES.FORM;\n state.itemDetails = itemDetails;\n assertNoUndefinedProperties(state);\n },\n setViewState: (state, { payload }) => {\n state.viewState = payload;\n },\n setCategories: (state, { payload: categories, categoryLevel }) => {\n state.categories = categories;\n state.categoryLevel = categoryLevel;\n }\n }\n});\n\nexport const { resetInitialState, setReportItem, setViewState, setCategories } =\n slice.actions;\nexport const reducer = slice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport ENDPOINTS from 'tradera/constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n finalizeResponse,\n handleError\n} from 'tradera/utils/api';\n\nimport {\n selectBox,\n isLoadingShippingProducts,\n selectIsBoxValid\n} from './selectors';\n\nconst defaultBox = {\n length: 15,\n height: 15,\n width: 15,\n weight: 1000\n};\n\nconst weightMap = {\n 1: 50,\n 2: 100,\n 3: 250,\n 4: 500,\n 5: 1000,\n 6: 2000,\n 7: 3000,\n 8: 5000,\n 9: 7000,\n 10: 9000,\n 11: 10000,\n 12: 12000,\n 13: 15000,\n 14: 20000,\n 15: 35000\n};\n\nexport const shippingCalculatorEnabledCountries = ['DK', 'NL', 'SE'];\n\nconst shippingCalculatorSlice = createSlice({\n name: 'shippingCalculator',\n initialState: {\n box: { ...defaultBox },\n availableFromCountryCodes: [],\n availableToCountryCodes: [],\n defaultBox,\n weightUnit: 'kg',\n weightSliderValue: 5,\n isLoadingShippingProducts: false,\n shippingProviders: [\n {\n providerName: 'SchenkerPrivpak',\n service: 'traceable'\n },\n {\n providerName: 'PostNordParcel',\n service: 'traceable'\n },\n {\n providerName: 'PostNordStamp',\n service: 'stamps_digital'\n },\n {\n providerName: 'DHL',\n service: 'traceable'\n },\n {\n providerName: 'DhlNetherlands',\n service: 'traceable'\n },\n {\n providerName: 'Bussgods',\n service: 'traceable'\n },\n {\n providerName: 'BringDenmark',\n service: 'traceable'\n },\n {\n providerName: 'PostNordStampDenmark',\n service: 'stamps'\n }\n ],\n internationalProductsGroupedByFromThenToCountry: {\n SE: { SE: [] }\n },\n showError: false\n },\n reducers: {\n initializeShippingCalculator: (state, action) => {\n const defaultCountry = shippingCalculatorEnabledCountries.includes(\n action.payload.defaultCountry\n )\n ? action.payload.defaultCountry\n : 'SE';\n state.defaultCountry = defaultCountry;\n state.selectedToCountry = defaultCountry;\n state.selectedFromCountry = defaultCountry;\n },\n setSelectedToCountry: (state, action) => {\n state.selectedToCountry = action.payload.selectedToCountry;\n },\n setSelectedFromCountry: (state, action) => {\n state.selectedFromCountry = action.payload.selectedFromCountry;\n },\n setDefaultValuesOnBox: (state) => {\n state.box = { ...defaultBox };\n const value = weightMap[5];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.weightSliderValue = 5;\n },\n updateFilter: (state, action) => {\n const { filterName, value } = action.payload;\n state.box[filterName] = value;\n },\n setWeightFilter: (state, action) => {\n const value = weightMap[action.payload.value];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.box.weight = value;\n state.weightSliderValue = action.payload.value;\n },\n setWeightUnit: (state, action) => {\n state.weightUnit = action.payload.weightUnit;\n },\n beginFetchingShippingProducts: (state) => {\n state.isLoadingShippingProducts = true;\n },\n setShowError: (state) => {\n state.showError = true;\n },\n setShippingProducts: (state, action) => {\n const { internationalShippingCalculatorProducts } = action.payload;\n\n const internationalProductsGroupedByFromThenToCountry =\n internationalShippingCalculatorProducts.reduce(\n (prev, product) => {\n const {\n fromCountryCodeIso2: from,\n toCountryCodeIso2: to\n } = product;\n prev[from] = prev[from] || {};\n prev[from][to] = prev[from][to] || [];\n prev[from][to].push(product);\n return prev;\n },\n {}\n );\n\n const availableToCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ toCountryCodeIso2 }) => toCountryCodeIso2\n )\n )\n ];\n\n const availableFromCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ fromCountryCodeIso2 }) => fromCountryCodeIso2\n )\n )\n ];\n\n state.availableFromCountryCodes = availableFromCountryCodes;\n state.availableToCountryCodes = availableToCountryCodes;\n state.showError = false;\n state.internationalProductsGroupedByFromThenToCountry =\n internationalProductsGroupedByFromThenToCountry;\n state.isLoadingShippingProducts = false;\n }\n }\n});\n\nexport const setDefaultValues = () => (dispatch, getState) => {\n const state = getState();\n dispatch(setDefaultValuesOnBox());\n dispatch(fetchShippingProducts());\n dispatch(\n initializeShippingCalculator({\n defaultCountry: state.views.shippingCalculator.defaultCountry\n })\n );\n};\n\nexport const fetchShippingProducts = () => async (dispatch, getState) => {\n const { length, height, width, weight } = selectBox(getState());\n\n if (isLoadingShippingProducts(getState())) {\n return;\n }\n\n if (!selectIsBoxValid(getState())) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n return;\n }\n dispatch(beginFetchingShippingProducts());\n\n try {\n const response = await axiosWithTokenRefresh()\n .get(ENDPOINTS.INTERNATIONAL_SHIPPING_CALCULATOR, {\n params: {\n lengthInMillimeters: length * 10,\n heightInMillimeters: height * 10,\n widthInMillimeters: width * 10,\n weightInGrams: weight\n },\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts:\n response.data.internationalShippingCalculatorProducts\n })\n );\n } catch (e) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n dispatch(setShowError());\n }\n};\n\nexport const {\n updateFilter,\n setWeightUnit,\n beginFetchingShippingProducts,\n initializeShippingCalculator,\n setShippingProducts,\n setDefaultValuesOnBox,\n setSelectedToCountry,\n setSelectedFromCountry,\n setWeightFilter,\n setShowError\n} = shippingCalculatorSlice.actions;\nexport default shippingCalculatorSlice.reducer;\n","import {\n selectAutomaticTranslationPreferred,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport { getTraderaShopProductData } from './api';\nimport { logger } from 'packages/logger';\nimport { fetchDescription, getItemsFromSeller } from '../view-item/api';\nimport {\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription,\n setCurrentDescriptionLanguageCodeIso2,\n setIsLoading,\n setItemDetails,\n setProduct,\n setSellerItems,\n setTranslatedDescription,\n setTranslationOnDemandDisabled\n} from './reducer';\nimport { translatedDescriptionStates } from '../view-item/reducer';\nimport {\n selectTranslatedDescription,\n selectTranslatedDescriptionState\n} from './selectors';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera/localization/countrycode';\nimport { areLanguageCodesIso2Equal } from 'tradera/localization/languagecode';\nimport { selectIsFeatureEnabled } from 'tradera/state/environment/selectors';\n\nexport const fetchTraderaShopProductData =\n (urlSlug) => async (dispatch, getState) => {\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n dispatch(setIsLoading(true));\n try {\n const traderaShopProduct = await getTraderaShopProductData(\n urlSlug,\n preferredLanguageCode\n );\n dispatch(handleTraderaShopProduct(traderaShopProduct));\n dispatch(setIsLoading(false));\n } catch (error) {\n const status = error.response && error.response.status;\n if (status === 404) {\n // Handle server side.\n window.location.reload();\n } else {\n logger(error);\n }\n }\n };\n\nexport const handleTraderaShopProduct = (traderaShopProduct) => (dispatch) => {\n const { product, item } = traderaShopProduct;\n dispatch(setProduct(product));\n dispatch(setItemDetails(item.itemDetails));\n dispatch(setTranslation(item));\n};\n\nconst setTranslation = (itemModel) => (dispatch, getState) => {\n const state = getState();\n const shippingRegion = selectShippingRegionCountryCodeIso2(state);\n const preferredLanguageCodeIso2 = selectPreferredLanguageCode(state);\n const disabledForEnglishLangSwedes =\n isSwedenCountryCodeOrUndefined(shippingRegion) &&\n areLanguageCodesIso2Equal(preferredLanguageCodeIso2, 'en');\n const automaticTranslationPreferred =\n selectAutomaticTranslationPreferred(state);\n const descriptionLanguageCodeIso2 =\n itemModel.itemDetails.descriptionLanguageCodeIso2;\n const shouldTranslateDescriptionOnLoad =\n automaticTranslationPreferred &&\n preferredLanguageCodeIso2 !== descriptionLanguageCodeIso2 &&\n !disabledForEnglishLangSwedes;\n dispatch(\n setCurrentDescriptionLanguageCodeIso2(\n shouldTranslateDescriptionOnLoad\n ? preferredLanguageCodeIso2\n : descriptionLanguageCodeIso2\n )\n );\n};\n\nexport const loadTranslatedDescription =\n (itemId, languageCodeIso2, descriptionLanguageCodeIso2) =>\n async (dispatch, getState) => {\n const isOnDemandItemDescriptionTranslation = selectIsFeatureEnabled(\n 'on-demand-item-description-translation'\n )(getState());\n\n if (!languageCodeIso2 || !isOnDemandItemDescriptionTranslation) {\n return;\n }\n\n if (\n languageCodeIso2.toLowerCase() ===\n descriptionLanguageCodeIso2.toLowerCase()\n ) {\n return;\n }\n\n if (\n selectTranslatedDescriptionState(getState()) ===\n translatedDescriptionStates.LOADING ||\n selectTranslatedDescription(getState())?.languageCodeIso2 ===\n languageCodeIso2\n ) {\n return;\n }\n\n dispatch(beginLoadingTranslatedDescription());\n\n try {\n const result = await fetchDescription(itemId, languageCodeIso2);\n if (result.data.translations.isTranslationOnDemandDisabled) {\n dispatch(setTranslationOnDemandDisabled());\n return;\n }\n\n dispatch(\n setTranslatedDescription({\n title: result.data.translations.title,\n description: result.data.translations.description,\n additionalDescriptions:\n result.data.translations.additionalDescriptions,\n languageCodeIso2: result.data.translations.languageCodeIso2,\n providerName: 'Google Translate',\n shippingTerms: result.data.translations.shippingTerms\n })\n );\n } catch (e) {\n dispatch(failedLoadingTranslatedDescription());\n }\n };\n\nexport const fetchItemsFromSeller =\n ({ SellerMemberId, Size }) =>\n async (dispatch, getState) => {\n try {\n const preferredLanguageCode = selectPreferredLanguageCode(\n getState()\n );\n const params = {\n SellerMemberId,\n Size,\n SearchResultLanguageCodeIso2: preferredLanguageCode\n };\n const result = await getItemsFromSeller(\n params,\n preferredLanguageCode\n );\n const { items, itemsMatched } = result.data.result;\n dispatch(setSellerItems({ items, itemsMatched }));\n } catch (e) {\n dispatch(setSellerItems(null));\n }\n };\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport {\n mapItemDetails,\n translatedDescriptionStates\n} from '../view-item/reducer';\n\ntype TraderaShopSlice = {\n product: object;\n itemDetails: object;\n isLoading: boolean;\n sellerItems?: [];\n translatedDescription: object | null;\n translatedDescriptionState: string | null;\n currentDescriptionLanguageCodeIso2: string | null;\n};\n\nconst traderaShopSlice = createSlice({\n name: 'traderaShop',\n initialState: {} as Partial,\n reducers: {\n setIsLoading: (state, { payload }) => {\n state.isLoading = payload;\n },\n setItemDetails: (state, { payload }) => {\n state.itemDetails = mapItemDetails(payload);\n },\n setProduct: (state, { payload }) => {\n state.product = payload;\n },\n setSellerItems: (state, { payload }) => {\n state.sellerItems = payload;\n },\n setCurrentDescriptionLanguageCodeIso2: (state, { payload }) => {\n state.currentDescriptionLanguageCodeIso2 = payload;\n },\n setTranslationOnDemandDisabled: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.TRANSLATION_ON_DEMAND_DISABLED;\n },\n setTranslatedDescription: (state, { payload }) => {\n state.translatedDescription = payload;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n resetTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n beginLoadingTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.LOADING;\n },\n failedLoadingTranslatedDescription: (state) => {\n state.translatedDescriptionState =\n translatedDescriptionStates.SERVER_ERROR;\n }\n }\n});\n\nexport default traderaShopSlice.reducer;\n\nexport const {\n setIsLoading,\n setItemDetails,\n setProduct,\n setSellerItems,\n setCurrentDescriptionLanguageCodeIso2,\n setTranslationOnDemandDisabled,\n setTranslatedDescription,\n resetTranslatedDescription,\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription\n} = traderaShopSlice.actions;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\nimport { type ITEM_STATES, VIEW_ITEM_STATES } from './constants';\nimport TRANSACTION_TYPES from 'tradera/constants/transaction-types';\nimport { placeBidApi } from './api';\nimport { logger } from 'packages/logger';\nimport * as analytics from '../../../apps/tradera/components/vip/helpers/analytics';\nimport * as itemActions from '../../items/actions';\nimport { assertNoUndefinedProperties } from 'tradera/utils/assert';\nimport {\n selectAutomaticTranslationPreferred,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport {\n selectBidInfo,\n selectItemId,\n selectItemDetails,\n selectBreadcrumbs,\n selectViewItem\n} from './selectors';\nimport { GtmService as gtm } from 'tradera/services/google-tagmanager-service';\nimport { getItemState } from './item-state-helper';\nimport { BID_VALIDATION_RESULTS } from 'tradera/apps/tradera/components/vip/api/vip-api-constants';\nimport { selectExistsInWishList } from 'tradera/state/items/selectors';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera/localization/countrycode';\nimport { areLanguageCodesIso2Equal } from 'tradera/localization/languagecode';\nimport type {\n ItemBidInfoViewModel,\n ItemCategoryViewModel,\n ItemDetailsViewModel,\n ItemPageModel,\n ItemPurchaseViewModel,\n ItemTranslationsViewModel\n} from 'tradera/state/services/types/webapi-browse-generated';\nimport type { AppDispatch, GetState } from 'tradera/state/configure-store';\nimport type ITEM_TYPES from 'tradera/constants/item-types';\nimport type { ItemCardViewModel } from 'tradera/state/services/types/webapi-discover-generated';\nimport { DEFAULT_LANGUAGE } from 'tradera/lang/constants.mjs';\nimport { wishlist } from 'tradera/state/items/reducer';\n\ntype PlaceBidResponse = {\n info?: string | null;\n isSuccessful: boolean | null;\n validationResult: {\n code: BID_VALIDATION_RESULTS;\n } | null;\n error: unknown | null;\n};\n\nconst initialPlaceBidResponse: PlaceBidResponse = {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n};\n\nexport enum translatedDescriptionStates {\n DEFAULT = 'DEFAULT',\n LOADING = 'LOADING',\n SERVER_ERROR = 'SERVER_ERROR',\n TRANSLATION_ON_DEMAND_DISABLED = 'TRANSLATION_ON_DEMAND_DISABLED'\n}\n\ntype ItemTranslations = ItemTranslationsViewModel & {\n providerName: string;\n};\n\nexport type ItemDetails = Omit & {\n images?: {\n thumbnail?: string | null;\n multiThumbnail?: string | null;\n medium?: string | null;\n normal?: string | null;\n smallFit?: string | null;\n mediumFit?: string | null;\n largeFit?: string | null;\n video?: string | null;\n }[];\n};\n\ntype Breadcrumbs = {\n id: number;\n url?: string | null;\n name?: string | null;\n categoryId: number;\n};\n\ntype BidInfo = Omit & {\n bidId?: number | null;\n bidCount: number | null;\n hasLeadingBid?: boolean;\n};\n\ntype BidToasterData = {\n leadingBidMemberAlias?: string;\n placeBidValidationCode?: string;\n leadingBidAmount?: number;\n nextValidBidAmount?: number;\n myMaxBidAmount?: number;\n};\n\nexport type SellerItems = {\n items: ItemCardViewModel[];\n itemsMatched: number;\n};\n\ntype ViewItemState = {\n bidInfo: BidInfo | null;\n bidToasterData: BidToasterData | null;\n breadCrumbs: Breadcrumbs[];\n categoryItems: ItemCardViewModel[];\n combinedShippingItems: ItemCardViewModel[] | null;\n currentDescriptionLanguageCodeIso2: string | null;\n isBidding: boolean;\n itemDetails: ItemDetails;\n itemState: ITEM_STATES | null;\n myMaxBidAmount: number | null;\n placeBidResponse: PlaceBidResponse;\n purchaseInfo: ItemPurchaseViewModel | null;\n sellerItems: SellerItems | null;\n serverSecondsLeft: number | null;\n shopItems: ItemCardViewModel[];\n translatedDescription: ItemTranslations | null;\n translatedDescriptionState: translatedDescriptionStates;\n viewItemState: VIEW_ITEM_STATES | null;\n isWishlistPending: boolean;\n};\n\nexport const initialState: ViewItemState = {\n bidInfo: null,\n bidToasterData: null,\n breadCrumbs: [],\n isBidding: false,\n itemDetails: {} as ItemDetails,\n categoryItems: [],\n shopItems: [],\n sellerItems: null,\n combinedShippingItems: null,\n itemState: null,\n viewItemState: null,\n myMaxBidAmount: null,\n placeBidResponse: initialPlaceBidResponse,\n purchaseInfo: null,\n serverSecondsLeft: null,\n translatedDescription: null,\n translatedDescriptionState: translatedDescriptionStates.DEFAULT,\n currentDescriptionLanguageCodeIso2: null,\n isWishlistPending: false\n};\n\nconst viewItemSlice = createSlice({\n name: 'viewItem',\n initialState,\n reducers: {\n resetPlaceBidResponse: (state) => {\n state.placeBidResponse = initialPlaceBidResponse;\n },\n resetInitialState: () => {\n return initialState;\n },\n setShowBiddingToaster: (\n state,\n action: PayloadAction\n ) => {\n state.bidToasterData = action.payload;\n },\n setIsRestricted: (state, { payload }) => {\n state.itemDetails.isRestricted = payload;\n },\n setIsInternationalWacko: (state, action: PayloadAction) => {\n if (!state.itemDetails.wackoInfo) {\n throw new Error('wackoInfo is null');\n }\n\n state.itemDetails.wackoInfo.isInternationalWacko = action.payload;\n },\n setItemDetails: (\n state,\n action: PayloadAction\n ) => {\n state.itemDetails = mapItemDetails(action.payload);\n },\n setPurchaseInfo: (\n state,\n action: PayloadAction\n ) => {\n state.purchaseInfo = action.payload;\n },\n setBreadCrumbs: (\n state,\n action: PayloadAction\n ) => {\n state.breadCrumbs = action.payload.map(\n ({ id, href, text }, index) => ({\n id: index,\n url: href,\n name: text,\n categoryId: id\n })\n );\n },\n setIsBidding: (state, action: PayloadAction) => {\n state.isBidding = action.payload;\n },\n setPlaceBidResponse: (\n state,\n action: PayloadAction\n ) => {\n const { payload } = action;\n state.placeBidResponse.isSuccessful = payload.isSuccessful;\n state.placeBidResponse.validationResult = payload.validationResult;\n state.placeBidResponse.error = payload.error;\n },\n setBidInfo: (\n state,\n action: PayloadAction<{\n bidInfo: BidInfo;\n itemId: number;\n memberId: number;\n }>\n ) => {\n const { bidInfo, itemId, memberId } = action.payload;\n // Ensure bid is for current item.\n if (state.itemDetails?.itemId !== itemId) {\n logger(new Error(`setBidInfo was not for current item`), {\n contexts: {\n items: {\n currentItemId: state.itemDetails?.itemId,\n bidInfoItemId: itemId\n }\n }\n });\n return;\n }\n\n // Ensure incoming data is for latest bid. It is possible to get stale data in\n // the response from place bid due to eventual consistency. When that happens\n // we should have received the latest bid before via web socket. For items where\n // web socket updates are not enabled (too long time left of auction) the effect\n // is considered acceptable. Just make sure to not overwrite newer data here.\n const isFirstBidInfo = !state.bidInfo;\n const isBinPurchase =\n bidInfo.transactionType === TRANSACTION_TYPES.BIN;\n const isLatestBid =\n isFirstBidInfo ||\n isBinPurchase ||\n (state.bidInfo?.bidId ?? 0) <= (bidInfo.bidId ?? 0);\n if (!isLatestBid) return;\n\n const bidStatus = getLeadingBidStatus(\n bidInfo,\n memberId,\n state.bidInfo\n );\n\n const existingBidCount = state.bidInfo?.bidCount || 0;\n const incomingBidCount = bidInfo.bidCount || 0;\n const newBidInfo = {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId: bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias: bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: state.bidInfo?.transactionType\n ? state.bidInfo.transactionType\n : bidInfo.transactionType || null,\n\n // Never update with a lower bidCount. Can happen if place-bid-response comes before WebSocket event.\n bidCount:\n incomingBidCount > existingBidCount\n ? incomingBidCount\n : existingBidCount,\n\n // Never reset if reservePriceReached was true. Can happen if place-bid-response comes before WebSocket event.\n reservePriceReached:\n state.bidInfo?.reservePriceReached ||\n bidInfo.reservePriceReached ||\n false\n };\n\n assertNoUndefinedProperties(newBidInfo);\n\n state.bidInfo = { ...newBidInfo, ...bidStatus };\n },\n setMyMaxBidAmount: (state, action: PayloadAction) => {\n state.myMaxBidAmount = action.payload;\n },\n setItemState: (state, action: PayloadAction) => {\n state.itemState = action.payload;\n },\n setViewItemState: (state, action: PayloadAction) => {\n state.viewItemState = action.payload;\n },\n setServerSecondsLeft: (state, action: PayloadAction) => {\n state.serverSecondsLeft = action.payload;\n },\n setTranslatedDescription: (\n state,\n action: PayloadAction\n ) => {\n state.translatedDescription = action.payload;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n setCurrentDescriptionLanguageCodeIso2: (\n state,\n action: PayloadAction\n ) => {\n state.currentDescriptionLanguageCodeIso2 = action.payload;\n },\n setTranslationOnDemandDisabled: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.TRANSLATION_ON_DEMAND_DISABLED;\n },\n resetTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n beginLoadingTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.LOADING;\n },\n failedLoadingTranslatedDescription: (state) => {\n state.translatedDescriptionState =\n translatedDescriptionStates.SERVER_ERROR;\n },\n setSellerItems: (state, action: PayloadAction) => {\n state.sellerItems = action.payload;\n },\n setCategoryItems: (\n state,\n action: PayloadAction\n ) => {\n state.categoryItems = action.payload;\n },\n setShopItems: (state, action: PayloadAction) => {\n state.shopItems = action.payload;\n },\n setCombinedShippingItems: (\n state,\n action: PayloadAction\n ) => {\n state.combinedShippingItems = action.payload;\n },\n setIsWishlistPending: (state, action: PayloadAction) => {\n state.isWishlistPending = action.payload;\n },\n setPaymentAmountForBid: (\n state,\n action: PayloadAction\n ) => {\n if (state.itemDetails.paymentCalculations) {\n state.itemDetails.paymentCalculations.paymentAmountForBid =\n action.payload;\n }\n }\n }\n});\n\nexport default viewItemSlice.reducer;\n\nexport const mapItemDetails = (\n itemDetails: ItemDetailsViewModel\n): ItemDetails => ({\n ...itemDetails,\n descriptionLanguageCodeIso2:\n itemDetails.descriptionLanguageCodeIso2?.toLowerCase(),\n images: itemDetails.images?.map((img) => ({\n thumbnail: img.thumbnail,\n multiThumbnail: img.thumbnail,\n medium: img.small,\n normal: img.normal,\n smallFit: img.smallFit,\n mediumFit: img.mediumFit,\n largeFit: img.largeFit,\n video: img.video || null\n }))\n});\n\nexport const handleItemModel =\n (itemModel: ItemPageModel, memberId: number) =>\n (dispatch: AppDispatch, getState: GetState) => {\n if (!itemModel.itemDetails) throw new Error('itemDetails is missing');\n\n const previousItemId = selectItemId(getState());\n dispatch(viewItemSlice.actions.setItemDetails(itemModel.itemDetails));\n dispatch(setTranslation(itemModel));\n\n dispatch(\n viewItemSlice.actions.setPurchaseInfo(\n itemModel.purchaseInfo ?? null\n )\n );\n\n dispatch(\n wishlist({\n itemId: itemModel.itemDetails.itemId,\n exists: !!itemModel.itemDetails.inWishList\n })\n );\n dispatch(\n viewItemSlice.actions.setBreadCrumbs(itemModel.breadCrumbs ?? [])\n );\n\n if (!itemModel.bidInfo) throw new Error('bidInfo is missing');\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo: itemModel.bidInfo,\n itemId: itemModel.itemDetails.itemId,\n memberId\n })\n );\n\n if (itemModel.bidInfo.myMaxBidAmount) {\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(\n itemModel.bidInfo.myMaxBidAmount\n )\n );\n }\n\n const isSafeToShowWinnerStatus =\n itemModel.itemDetails.hasEnded &&\n !itemModel.hasBidsWinnerToBeConfirmed;\n\n const viewItemState = isSafeToShowWinnerStatus\n ? VIEW_ITEM_STATES.ENDED\n : itemModel.itemDetails.hasStarted\n ? VIEW_ITEM_STATES.ACTIVE\n : VIEW_ITEM_STATES.NOT_STARTED;\n\n dispatch(viewItemSlice.actions.setViewItemState(viewItemState));\n\n const { itemDetails, bidInfo } = selectViewItem(getState());\n if (!bidInfo) throw new Error('bidInfo is missing');\n\n dispatch(updateItemState(itemDetails, bidInfo, viewItemState));\n\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(\n itemModel.serverSecondsLeft\n )\n );\n\n const isNewPage = previousItemId != selectItemId(getState());\n if (isNewPage) {\n handleNewPage(getState);\n }\n };\n\nconst setTranslation =\n (itemModel: ItemPageModel) =>\n (dispatch: AppDispatch, getState: GetState) => {\n const state = getState();\n\n const shippingRegion = selectShippingRegionCountryCodeIso2(state);\n const preferredLanguageCodeIso2 = selectPreferredLanguageCode(state);\n\n const disabledForEnglishLangSwedes =\n isSwedenCountryCodeOrUndefined(shippingRegion) &&\n areLanguageCodesIso2Equal(preferredLanguageCodeIso2, 'en');\n const automaticTranslationPreferred =\n selectAutomaticTranslationPreferred(state);\n\n const descriptionLanguageCodeIso2 =\n itemModel.itemDetails?.descriptionLanguageCodeIso2 ||\n DEFAULT_LANGUAGE;\n\n const shouldTranslateDescriptionOnLoad =\n automaticTranslationPreferred &&\n preferredLanguageCodeIso2 !== descriptionLanguageCodeIso2 &&\n !disabledForEnglishLangSwedes;\n\n dispatch(\n viewItemSlice.actions.setCurrentDescriptionLanguageCodeIso2(\n shouldTranslateDescriptionOnLoad\n ? preferredLanguageCodeIso2\n : descriptionLanguageCodeIso2\n )\n );\n if (itemModel.translations) {\n dispatch(\n viewItemSlice.actions.setTranslatedDescription({\n ...itemModel.translations,\n providerName: 'Google Translate'\n })\n );\n } else {\n dispatch(viewItemSlice.actions.resetTranslatedDescription());\n }\n };\n\nexport const handleNewPage = (getState: GetState) => {\n const currentItemDetails = selectItemDetails(getState());\n const currentBidInfo = selectBidInfo(getState());\n const breadCrumbs = selectBreadcrumbs(getState());\n const swedishCategoryPath = breadCrumbs.map((b) => b.name).join(' > ');\n\n const getAuctionState = () => {\n const hasWon =\n currentItemDetails.hasEnded && currentBidInfo?.hasLeadingBid;\n const isLeading =\n !currentItemDetails.hasEnded && currentBidInfo?.hasLeadingBid;\n if (hasWon) return 'won';\n if (isLeading) return 'leading';\n return currentItemDetails.hasEnded ? 'ended' : 'normal';\n };\n\n const contentGroup = `${currentItemDetails.itemType}-${getAuctionState()}`;\n gtm.trackGtmEvent('viewItem', {\n page: {\n itemState: contentGroup,\n 'content-group-2': swedishCategoryPath,\n 'content-group-3': contentGroup\n },\n itemType: currentItemDetails.itemType,\n itemId: currentItemDetails.itemId,\n itemFixedPrice: currentItemDetails.fixedPrice || 0,\n itemCategory: swedishCategoryPath,\n itemStatus: currentItemDetails.hasEnded ? 'inactive' : 'active',\n itemEndDate: dayjs(currentItemDetails.endDate).format('YYYYMMDD')\n });\n};\n\nconst updateItemState =\n (\n itemDetails: ItemDetails,\n bidInfo: BidInfo,\n viewItemState: VIEW_ITEM_STATES\n ) =>\n (dispatch: AppDispatch) => {\n if (!itemDetails.itemType) throw new Error('itemType is missing');\n if (!bidInfo.nextValidBidAmount)\n throw new Error('nextValidBidAmount is missing');\n\n const itemType = itemDetails.itemType as ITEM_TYPES;\n const transactionType = bidInfo.transactionType as TRANSACTION_TYPES;\n\n const itemState = getItemState(\n viewItemState === VIEW_ITEM_STATES.ENDED,\n viewItemState !== VIEW_ITEM_STATES.NOT_STARTED,\n itemType,\n bidInfo.bidCount ?? 0,\n bidInfo.reservePriceReached,\n bidInfo.nextValidBidAmount,\n transactionType,\n bidInfo.leadingBidderMemberId ?? undefined,\n itemDetails.isCancelled\n );\n dispatch(viewItemSlice.actions.setItemState(itemState));\n };\n\nconst getLeadingBidStatus = (\n bidInfo: BidInfo,\n memberId: number,\n previousBidInfo: BidInfo | null = null\n) => {\n const hadLeadingBid = !!previousBidInfo?.hasLeadingBid;\n const hasLeadingBid =\n !!memberId && memberId === bidInfo.leadingBidderMemberId;\n const hadLostLeadingBid =\n !!previousBidInfo?.hasLostLeadingBid || bidInfo.hasLostLeadingBid;\n const hasLostLeadingBid =\n (hadLostLeadingBid || hadLeadingBid) && !hasLeadingBid;\n return {\n hasLostLeadingBid,\n hasLeadingBid\n };\n};\n\nexport const toggleWishList =\n (itemId: number, forceAdd = false) =>\n (dispatch: AppDispatch, getState: GetState) => {\n if (getState().views.viewItem.isWishlistPending) {\n return;\n }\n dispatch(viewItemSlice.actions.setIsWishlistPending(true));\n const shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip = true;\n const inWishListOldValue =\n getState().items.wishListItemIds.includes(itemId);\n const inWishListNewValue = !inWishListOldValue || forceAdd;\n\n const itemDetails = getState().views.viewItem.itemDetails;\n\n const wishListCountOldValue = itemDetails.wishListCount ?? 0;\n let wishListCountNewValue = wishListCountOldValue;\n if (Number.isInteger(wishListCountNewValue)) {\n if (inWishListOldValue && !inWishListNewValue) {\n wishListCountNewValue--;\n } else if (!inWishListOldValue && inWishListNewValue) {\n wishListCountNewValue++;\n }\n }\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListNewValue,\n wishListCount: wishListCountNewValue\n })\n );\n\n const showWishlistModals = !forceAdd;\n\n return dispatch(\n itemActions.wishlist(\n itemId,\n inWishListNewValue,\n shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip,\n showWishlistModals\n )\n )\n .then((inWishListNewValue) => {\n if (inWishListNewValue !== undefined) {\n analytics.trackWishlist(itemId, inWishListNewValue);\n } else {\n //Restore previous value;\n const itemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListOldValue,\n wishListCount: wishListCountOldValue\n })\n );\n }\n return inWishListNewValue;\n })\n .finally(() => {\n dispatch(viewItemSlice.actions.setIsWishlistPending(false));\n });\n };\n\nexport const placeBid =\n (\n itemId: number,\n memberId: number,\n amount: number,\n onLoggedOut: () => void\n ) =>\n async (dispatch: AppDispatch, getState: GetState) => {\n dispatch(viewItemSlice.actions.setIsBidding(true));\n\n const existsInWishList = selectExistsInWishList(itemId)(getState());\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n const { gaTrackingSessionId } = getState().environment;\n\n try {\n const result = await placeBidApi(\n itemId,\n amount,\n onLoggedOut,\n preferredLanguageCode,\n gaTrackingSessionId ?? ''\n );\n\n if (!result) {\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.OFFLINE\n },\n error: null\n })\n );\n dispatch(viewItemSlice.actions.setIsBidding(false));\n dispatch(\n viewItemSlice.actions.setShowBiddingToaster({\n placeBidValidationCode: BID_VALIDATION_RESULTS.OFFLINE\n })\n );\n return;\n }\n const {\n analyticsData,\n bidInfo,\n isSuccessful,\n item: updatedItem,\n validationResult,\n myMaxBidAmount,\n serverSecondsLeft\n } = result;\n\n if (isSuccessful) {\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo,\n itemId,\n memberId\n })\n );\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(myMaxBidAmount)\n );\n } else if (bidInfo.leadingBidAmount) {\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo,\n itemId,\n memberId\n })\n );\n }\n dispatch(\n viewItemSlice.actions.setShowBiddingToaster({\n leadingBidMemberAlias: bidInfo.leadingBidMemberAlias,\n placeBidValidationCode: validationResult.code,\n leadingBidAmount: bidInfo.leadingBidAmount,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n myMaxBidAmount: result.myMaxBidAmount\n })\n );\n analytics.trackBidPlaced(\n itemId,\n validationResult.code,\n analyticsData.isMaxBid,\n analyticsData.potentialBidChange,\n analyticsData.bidId,\n analyticsData.transactionTotal\n );\n\n const currentItemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...currentItemDetails,\n ...updatedItem\n })\n );\n\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful,\n validationResult: {\n code: validationResult.code as BID_VALIDATION_RESULTS\n },\n error: null\n })\n );\n\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(serverSecondsLeft)\n );\n } catch (error) {\n logger(error);\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: null,\n error\n })\n );\n }\n dispatch(viewItemSlice.actions.setIsBidding(false));\n\n // Add item to wish list if it doesn't already exist in list\n if (!existsInWishList) {\n dispatch(toggleWishList(itemId, true));\n }\n };\n\nexport const {\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription,\n resetPlaceBidResponse,\n resetTranslatedDescription,\n setBidInfo,\n setIsRestricted,\n setIsInternationalWacko,\n setViewItemState,\n setTranslatedDescription,\n setTranslationOnDemandDisabled,\n setSellerItems,\n setCategoryItems,\n setShopItems,\n setCombinedShippingItems,\n setCurrentDescriptionLanguageCodeIso2,\n setPaymentAmountForBid\n} = viewItemSlice.actions;\n","const SwedenCountryCode = 'SE';\n\nexport const isInternationalShippingToCountryAllowed = (\n region: string,\n countryCodeIso2: string\n) => {\n switch (region) {\n case 'Sweden':\n return isSwedenCountryCode(countryCodeIso2);\n case 'Nordic':\n return isNordicCountryCode(countryCodeIso2);\n case 'EU':\n return isEuCountryCode(countryCodeIso2);\n case 'International':\n return true;\n default:\n throw `Unhandled buyer region: ${region}`;\n }\n};\n\nexport const isSwedenCountryCode = (countryCodeIso2: string) =>\n isCountryCode(SwedenCountryCode, countryCodeIso2);\n\nexport const isNordicCountryCode = (countryCodeIso2: string) =>\n containsCode(nordicCountryCodes, countryCodeIso2);\n\nexport const isEuCountryCode = (countryCodeIso2: string) =>\n containsCode(euCountryCodes, countryCodeIso2);\n\nconst containsCode = (codes: readonly string[], code: string) =>\n !!codes.find((c) => isCountryCode(code, c));\n\nconst isCountryCode = (c1: string, c2: string) =>\n c1.toUpperCase() === c2.toUpperCase();\n\nconst nordicCountryCodes = [\n 'SE',\n 'FI',\n 'NO',\n 'DK',\n 'IS',\n 'GL',\n 'FO',\n 'AX',\n 'SJ'\n] as const;\n\nconst euCountryCodes = [\n 'AT',\n 'BE',\n 'BG',\n 'CZ',\n 'DE',\n 'DK',\n 'EE',\n 'EL',\n 'ES',\n 'FI',\n 'FR',\n 'GR',\n 'HR',\n 'HU',\n 'IE',\n 'IT',\n 'LT',\n 'LU',\n 'LV',\n 'MT',\n 'NL',\n 'PL',\n 'PT',\n 'RO',\n 'SE',\n 'SI',\n 'SK'\n] as const;\n","import axios, {\n type AxiosError,\n type AxiosInstance,\n type AxiosResponse,\n type CancelTokenSource\n} from 'axios';\n\nimport { logger } from 'packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { getLanguage } from 'tradera/utils/language';\nimport { toLocalizedUrl } from 'tradera/utils/url';\n\n/**\n * Standardized api error codes\n */\nconst API_ERRORS = {\n IGNORE_ME: 'IGNORE_ME',\n ABORTED: 'ABORTED',\n CANCELLED: 'CANCELLED',\n NETWORK: 'NETWORK',\n TIMEOUT: 'TIMEOUT',\n VERSION_MISMATCH: 'VERSION_MISMATCH',\n LOGGED_OUT: 'LOGGED_OUT'\n};\n\nconst defaultJsonRequestHeaders = {\n // Force json response\n Accept: 'application/json',\n // For WebAPI and RequiresAuthorization to handle ajax request\n 'X-Requested-With': 'XMLHttpRequest'\n};\n\n/**\n * Standard Axios configs\n */\nconst axiosConfigs = {\n // Requests to endpoints with authentication\n authenticated: {\n // Send auth cookies\n withCredentials: true,\n headers: defaultJsonRequestHeaders\n },\n notAuthenticated: {\n // Dont send auth cookies\n withCredentials: false,\n headers: defaultJsonRequestHeaders\n }\n};\n\nconst isMissingAuthToken = (responseString: string) => {\n try {\n const responseObject = JSON.parse(responseString);\n const isMissing =\n responseObject.responseStatus.errorCode === 'MissingAuthToken';\n return isMissing;\n } catch {\n return false;\n }\n};\n\nconst isUnauthorized = (statusCode: number) => statusCode === 401;\n\nconst addAntiCacheParam = (url?: string) => {\n const antiCacheRegExp = /([?&]_=)[^&]*/;\n return antiCacheRegExp.test(url || '')\n ? url?.replace(antiCacheRegExp, '$1' + new Date().getTime())\n : url +\n (/\\?/.test(url || '') ? '&' : '?') +\n '_=' +\n new Date().getTime();\n};\n\nconst submitOriginalRequest = async (error: AxiosError) =>\n axios({\n ...error.config,\n url: addAntiCacheParam(error.config.url)\n });\n\nconst handleMissingAuthToken = async (error: AxiosError) => {\n const refreshAccessToken = async () =>\n axios.get(toLocalizedUrl('/login/state', getLanguage()));\n const handleErrorAfterRefresh = async (\n errorAfterRefreshToken: AxiosError\n ) => {\n if (isUnauthorized(errorAfterRefreshToken.request?.status)) {\n // eslint-disable-next-line better-mutation/no-mutation\n error.message = API_ERRORS.LOGGED_OUT;\n }\n return Promise.reject(error);\n };\n return refreshAccessToken()\n .then(() => submitOriginalRequest(error))\n .catch(handleErrorAfterRefresh);\n};\n\nconst handleUnauthorized = async (error: AxiosError) => {\n const checkLoginState = async () =>\n axios.get(toLocalizedUrl('/login/state', getLanguage()));\n return checkLoginState().then((response) => {\n const isLoggedIn = response.data?.isLoggedIn;\n if (isLoggedIn) {\n return submitOriginalRequest(error);\n }\n // eslint-disable-next-line better-mutation/no-mutation\n error.message = API_ERRORS.LOGGED_OUT;\n // eslint-disable-next-line promise/no-return-wrap\n return Promise.reject(error);\n });\n};\n\nconst errorResponseInterceptor = (error: AxiosError) => {\n if (isMissingAuthToken(error.request?.response)) {\n return handleMissingAuthToken(error);\n } else if (isUnauthorized(error.request?.status)) {\n return handleUnauthorized(error);\n }\n return Promise.reject(error);\n};\n\n/**\n * Create Axios instance or decorate existing instance with interceptor for expired token responses\n *\n */\nfunction axiosWithTokenRefresh(axiosInstance?: AxiosInstance) {\n let instance;\n if (axiosInstance === undefined) {\n instance = axios.create();\n } else {\n instance = axiosInstance;\n }\n instance.interceptors.response.use(\n (response) => response,\n errorResponseInterceptor\n );\n return instance;\n}\n\nconst cancelTokens: Record = {};\n\n/**\n * Create new or return existing cancellation function\n *\n * Usage:\n * const { cancel, cancelToken } = utilizeCancelToken('tokenId')\n * if (cancel) cancel();\n * axios.get('http://api.com/...', { cancelToken });\n *\n * @param {string} tokenId - A string ID shared between requests that cancel together\n */\nfunction utilizeCancelToken(tokenId: string) {\n if (isServer) {\n throw new Error(\n 'This implementation is not compatible with SSR as global properties like cancelTokens here are shared between server instances'\n );\n }\n let cancel;\n if (tokenId in cancelTokens) {\n cancel = cancelTokens[tokenId].cancel;\n }\n // eslint-disable-next-line better-mutation/no-mutation\n cancelTokens[tokenId] = axios.CancelToken.source();\n return {\n cancel,\n cancelToken: cancelTokens[tokenId].token\n };\n}\n\n/**\n * Check response version and throw error if different from current\n *\n */\nfunction checkResponseVersion(version = '12.0.0') {\n return (response: AxiosResponse) => {\n if (\n response.headers &&\n response.headers['X-Tradera-Version'] &&\n response.headers['X-Tradera-Version'] !== version\n ) {\n throw new Error(API_ERRORS.VERSION_MISMATCH);\n } else {\n return response;\n }\n };\n}\n\n/**\n * Checks redirect response for logged out user\n * This is an old solution. New solutions return a 401 response instead (see handleError).\n * Requires Axios config to include { withCredentials: true }\n *\n */\nfunction checkResponseLoggedOut() {\n return (response: AxiosResponse) => {\n if (\n response.data &&\n typeof response.data === 'string' &&\n response.data.includes('Logga in')\n ) {\n throw new Error(API_ERRORS.LOGGED_OUT);\n } else {\n return response;\n }\n };\n}\n\n/**\n * Final standardized formatting of an api response\n *\n */\nfunction finalizeResponse() {\n return (response: AxiosResponse) => {\n const { data, status } = response;\n return {\n data,\n status\n };\n };\n}\n\ntype StatusHandlers = Record;\n\n/**\n * Common network request error handling\n */\nfunction handleError(statusHandlers: StatusHandlers = {}) {\n return (error: AxiosError) => {\n const status = error.response && error.response.status;\n const message = error.message ? error.message : error.toString();\n /* eslint-disable better-mutation/no-mutation */\n if (axios.isCancel(error)) {\n error.message = API_ERRORS.CANCELLED;\n } else if (message.includes('timeout') || status === 408) {\n error.message = API_ERRORS.TIMEOUT;\n } else if (message.includes('Network')) {\n error.message = API_ERRORS.NETWORK;\n } else if (message.includes('Request aborted')) {\n error.message = API_ERRORS.ABORTED;\n } else if (status === 401) {\n error.message = API_ERRORS.LOGGED_OUT;\n } else if (status && status in statusHandlers) {\n error.message = statusHandlers[status];\n }\n throw error;\n };\n}\n\nfunction reloadOnUnauthorized(error: AxiosError) {\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n window.location.reload();\n break;\n default:\n throw error;\n }\n}\n\nfunction logError(error: AxiosError, scope: object) {\n switch (error.message) {\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error, scope);\n break;\n }\n}\n\nexport {\n addAntiCacheParam,\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n checkResponseVersion,\n checkResponseLoggedOut,\n defaultJsonRequestHeaders,\n errorResponseInterceptor,\n finalizeResponse,\n handleError,\n logError,\n reloadOnUnauthorized,\n utilizeCancelToken\n};\n","import plainDayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport {\n DAY_IN_SECONDS,\n HOUR_IN_SECONDS,\n MINUTE_IN_SECONDS\n} from 'tradera/constants/time';\nimport 'dayjs/locale/sv';\nimport 'dayjs/locale/da';\nimport 'dayjs/locale/de';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/nl';\n\nplainDayjs.extend(isBetween);\nplainDayjs.extend(isSameOrAfter);\nplainDayjs.extend(utc);\nplainDayjs.extend(timezone);\nplainDayjs.extend(localizedFormat);\n\nexport const dayjs = plainDayjs;\n\nexport const localizedDayjs =\n (locale) =>\n (...args) =>\n dayjs(...args).locale(locale);\n\nconst swedishTimeZone = 'Europe/Stockholm';\n\nexport const swedishTimeZoneDate = (date, localizedDayjsFn) => {\n // This is a workaround for locale being lost when using .tz() in Nextweb\n const locale = localizedDayjsFn().locale();\n return localizedDayjsFn(date).tz(swedishTimeZone).locale(locale);\n};\n\nexport const formatUtcDateAsSwedishTimeZoneDate = (\n date,\n localizedDayjsFn,\n options = {}\n) => {\n const formatArray = [\n options.includeWeekday && 'ddd', // tor\n 'D MMM', // 19 okt\n options.includeYear && 'YYYY', // 2023\n !options.excludeTime && 'HH:mm' // 09:50\n ];\n const format = formatArray.filter(Boolean).join(' ');\n\n return swedishTimeZoneDate(date, localizedDayjsFn).format(format);\n};\n\nexport const getCurrentSwedishTimeZoneDate = () =>\n dayjs().tz(swedishTimeZone).format('YYYYMMDD');\n\n/**\n * Format a number of seconds to an object of time units\n *\n * @param {number} seconds\n * @param {object} [options]\n * @param {string} [options.startUnit] - Time part to start counting from, empty for all parts\n * @param {string} [options.endUnit] - Time part to stop counting on, empty for all parts\n * @returns {{string: integer}}\n */\nexport const getTimeSpanParts = (seconds, options = {}) => {\n const optionsWithDefaults = {\n startUnit: '',\n endUnit: '',\n ...options\n };\n const parts = {};\n let remaining = seconds;\n let started = !optionsWithDefaults.startUnit;\n for (const [part, length] of Object.entries(TIME_SPAN_UNIT_LENGTHS)) {\n if (!started && part === optionsWithDefaults.startUnit) started = true;\n if (started) {\n if (remaining >= length) {\n parts[part] = Math.floor(remaining / length);\n }\n // eslint-disable-next-line better-mutation/no-mutation\n remaining %= length;\n if (remaining === 0 || optionsWithDefaults.endUnit === part) break;\n }\n }\n return parts;\n};\n\nexport const TIME_SPAN_UNITS = {\n DAYS: 'days',\n HOURS: 'hours',\n MINUTES: 'minutes',\n SECONDS: 'seconds'\n};\n\nconst TIME_SPAN_UNIT_LENGTHS = {\n [TIME_SPAN_UNITS.DAYS]: DAY_IN_SECONDS,\n [TIME_SPAN_UNITS.HOURS]: HOUR_IN_SECONDS,\n [TIME_SPAN_UNITS.MINUTES]: MINUTE_IN_SECONDS,\n [TIME_SPAN_UNITS.SECONDS]: 1\n};\n","import ENDPOINTS from 'tradera/constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n checkResponseVersion,\n finalizeResponse,\n handleError,\n utilizeCancelToken,\n axiosConfigs\n} from 'tradera/utils/api';\nimport initData from 'tradera/legacy/static/packages/init-data';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport { getLanguage } from 'tradera/utils/language';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\ntype HttpClientConfig = AxiosRequestConfig & { cancelTokenId?: string };\n\nconst ensureClientOnly = () => {\n // Cancel tokens would be shared per server instance so ensure we are not on server.\n if (isServer) {\n throw new Error('This HTTP client is only safe to use on frontend');\n }\n};\n\n// Prevents URL:s that begins with // when that was not intended.\nconst getSafeUrl = (baseUrl: string, url?: string) => {\n if (baseUrl.endsWith('/') && url?.startsWith('/')) {\n return baseUrl + url.substring(1);\n }\n return baseUrl + url;\n};\n\nconst httpClient = (baseUrl: string, shouldLocalizeUrl?: boolean) => {\n const axiosWrapper = (\n url: string | undefined,\n httpClientConfig: HttpClientConfig,\n axiosCaller: (\n axios: AxiosInstance,\n url: string,\n config: AxiosRequestConfig\n ) => Promise>\n ) => {\n const { cancelTokenId, ...axiosConfig } = httpClientConfig;\n const version = initData.version;\n if (cancelTokenId) {\n const { cancel, cancelToken } = utilizeCancelToken(cancelTokenId);\n // eslint-disable-next-line better-mutation/no-mutation\n axiosConfig.cancelToken = cancelToken;\n if (cancel) {\n cancel();\n }\n }\n const safeUrl = getSafeUrl(baseUrl, url);\n const localizedUrl = shouldLocalizeUrl\n ? toLocalizedUrl(safeUrl, getLanguage())\n : safeUrl;\n return axiosCaller(axiosWithTokenRefresh(), localizedUrl, axiosConfig)\n .then(\n version ? checkResponseVersion(version) : (response) => response\n )\n .then(finalizeResponse())\n .catch(handleError());\n };\n\n return {\n get: (\n url: string,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.get(url, config)\n );\n },\n post: (\n url: string,\n payload: TRequest,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.post, TRequest>(\n url,\n payload,\n config\n )\n );\n },\n put: (\n url: string,\n payload: TRequest,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.put, TRequest>(\n url,\n payload,\n config\n )\n );\n },\n delete: (\n url: string,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.delete(url, config)\n );\n },\n request: (\n config: AxiosRequestConfig,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(\n config.url,\n httpClientConfig,\n (axios, url, enhancedConfig) => {\n return axios.request({ ...config, ...enhancedConfig, url });\n }\n );\n }\n };\n};\n\nconst trpcClient = (endpoint: string) => {\n const client = httpClient(`/api/${endpoint}`, false);\n function unpackResponse(response: { data: TResponse }) {\n if (typeof response === 'object' && 'data' in response) {\n return response.data;\n }\n }\n return {\n command: (\n commandName: string,\n payload: TRequest,\n httpClientConfig?: HttpClientConfig\n ): Promise =>\n client\n .post(\n `/commands/${commandName}`,\n payload,\n httpClientConfig\n )\n .then(unpackResponse),\n query: (queryName: string, httpClientConfig: HttpClientConfig) =>\n client\n .get(`/queries/${queryName}`, httpClientConfig)\n .then(unpackResponse)\n };\n};\n\nexport const defaultClient = httpClient('');\nexport const touchWebClient = httpClient('/', true);\nexport const webApiClient = httpClient(ENDPOINTS.WEB_API, false);\nexport const cmsApiClient = httpClient('/api/cms');\nexport const marketingApiClient = httpClient(ENDPOINTS.MARKETING_PUBLIC_API);\nexport const memberIdentificationClient = trpcClient('member-identification');\nexport const translationDynamicApiClient = trpcClient(\n 'translation-dynamic-api'\n);\nexport const shippingRecommendationsClient = trpcClient(\n 'shipping-recommendations'\n);\n","import { logger } from 'tradera/legacy/static/packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { TaskPriority } from 'src/types/scheduler-polyfill.d.ts';\n\ntype isInputPendingOptions = { includeContinuous: boolean };\ntype PostTaskCallback = () => unknown;\n\ndeclare global {\n interface Navigator {\n scheduling: {\n isInputPending: (options?: isInputPendingOptions) => boolean;\n };\n }\n\n interface Window {\n scheduler: Scheduler;\n }\n}\n\nconst LONG_RUNNING_TASK_DURATION = 50; // ms\n\nconst polyfillScheduler = () => {\n if (isServer) {\n return Promise.reject();\n }\n\n if (typeof window.scheduler !== 'undefined') {\n return Promise.resolve();\n }\n\n return import('scheduler-polyfill');\n};\n\nconst schedulerPolyfill = polyfillScheduler();\n\nexport const isInputPending = (): boolean =>\n Boolean(navigator.scheduling?.isInputPending({ includeContinuous: true }));\n\n/**\n * Pauses a synchronous task to allow other main thread tasks on the event loop to run (good for INP)\n * Note that nested setTimeout can cause an up to a 15ms delay in loops\n * (https://chromestatus.com/feature/5710690097561600), so use sparingly and with `isInputPending`:\n * if (isInputPending()) {\n * await yieldToMain();\n * }\n * Docs: https://web.dev/articles/optimize-long-tasks#use_asyncawait_to_create_yield_points\n */\nexport const yieldToMain = (): Promise =>\n new Promise((resolve) => {\n setTimeout(resolve, 0);\n });\n\n/**\n * Loop through an array (or other iterable object) of as a background task\n *\n * For each iteration this will pause if there is a user interaction event that needs\n * to be handled on the main thread or if it has exceeded the limit of a long running task (>=50ms);\n */\nexport const forEachYield = async (\n array: Array,\n callback: (\n element: ArrayType,\n index: number,\n array: Array\n ) => void\n): Promise => {\n let deadline = performance.now() + LONG_RUNNING_TASK_DURATION;\n let index = 0;\n\n for (const element of array) {\n if (isInputPending() || performance.now() >= deadline) {\n // There's a pending user input. Yield here:\n await yieldToMain();\n deadline = performance.now() + LONG_RUNNING_TASK_DURATION;\n }\n callback(element, index, array);\n index += 1;\n }\n};\n\nconst postTask = async (\n taskCallback: PostTaskCallback,\n priority: TaskPriority\n) => {\n try {\n await schedulerPolyfill;\n } catch (error) {\n if (isServer) {\n logger('scheduler-polyfill does not support a node environment');\n }\n // Fallback to ensure taskCallback() is always called\n await yieldToMain();\n return taskCallback();\n }\n\n return await scheduler.postTask(taskCallback, { priority });\n};\n\nexport const queueUserBlockingTask = (taskCallback: PostTaskCallback) =>\n postTask(taskCallback, 'user-blocking');\n\nexport const queueUserVisibleTask = (taskCallback: PostTaskCallback) =>\n postTask(taskCallback, 'user-visible');\n\nexport const queueBackgroundTask = (taskCallback: PostTaskCallback) =>\n postTask(taskCallback, 'background');\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { isServer } from 'tradera/utils/nextjs';\n\ntype Options = {\n timeout?: number;\n dataAttributes?: Record;\n key?: string;\n unload?: () => void;\n};\n\nconst scriptPromises = new Map>();\n\nexport function loadScript(src: string, options: Options = {}) {\n if (isServer) {\n // Since we use a global variable we cannot support SSR as\n // all requests would share the same variable.\n throw new Error('loadScript() is not supported on the server');\n }\n const optionsWithDefaults = {\n timeout: options.timeout || 0,\n dataAttributes: options.dataAttributes || {}\n };\n const promise = scriptPromises.get(src);\n if (promise) {\n // Every time we call loadScript with the same src, we return the same promise.\n // This is so that everyone waiting for that promise can get the same result.\n // If we don't do this and loadScript is called twice, the second call can\n // resolve before script.onload() has happened.\n return promise;\n }\n\n const newPromise = new Promise((resolve, reject) => {\n if (document.querySelector(`head > script[src=\"${src}\"]`) !== null) {\n resolve();\n return;\n }\n\n if (options.key) {\n const scriptWithKey = document.querySelector(\n `head > script[data-key=\"${options.key}\"]`\n );\n\n if (scriptWithKey) {\n document.head.removeChild(scriptWithKey);\n options.unload?.();\n }\n }\n\n const script = document.createElement('script');\n\n let timeoutTimer: ReturnType;\n if (optionsWithDefaults.timeout > 0) {\n timeoutTimer = setTimeout(() => {\n script.onload = null;\n script.onerror = null;\n document.head.removeChild(script);\n options.unload?.();\n reject(new Error('SCRIPT_LOAD_TIMEOUT'));\n }, optionsWithDefaults.timeout);\n }\n\n script.src = src;\n\n if (options.key) {\n optionsWithDefaults.dataAttributes = {\n ...optionsWithDefaults.dataAttributes,\n key: options.key\n };\n }\n for (const attribute of Object.keys(\n optionsWithDefaults.dataAttributes\n )) {\n script.setAttribute(\n `data-${attribute}`,\n optionsWithDefaults.dataAttributes[attribute]\n );\n }\n script.async = true;\n script.onload = () => {\n if (timeoutTimer) clearTimeout(timeoutTimer);\n resolve();\n };\n script.onerror = (error) => {\n if (timeoutTimer) clearTimeout(timeoutTimer);\n reject(error);\n };\n document.head.appendChild(script);\n });\n scriptPromises.set(src, newPromise);\n return newPromise;\n}\n","import qs from 'qs';\nimport HOSTS from 'tradera/constants/hosts';\nimport initData from 'tradera/legacy/static/packages/init-data';\nimport { formatNextPathnameInfo } from 'next/dist/shared/lib/router/utils/format-next-pathname-info';\nimport { getNextPathnameInfo } from 'next/dist/shared/lib/router/utils/get-next-pathname-info';\n\nimport { logger } from 'packages/logger';\nimport {\n URL_LANGUAGES,\n DEFAULT_LANGUAGE,\n SUPPORTED_LANGUAGES\n} from 'tradera/lang/constants.mjs';\nimport { removePropertiesWithoutValue } from 'tradera/utils/object';\n\n// List of SPA paths for the regex match, without initial slash\nconst SPA_REGEX_PATHS = [\n 'search',\n 'campaign',\n 'charity',\n 'categories',\n 'profile\\\\/items',\n 'brand\\\\/.+',\n // Category\n '[a-z]+[\\\\w\\\\-]+[\\\\-|_]\\\\d+'\n];\nconst SPA_PATH_REGEX = new RegExp(\n `^(/(${URL_LANGUAGES.join('|')}))?/(${SPA_REGEX_PATHS.join('|')})`\n);\n\n/**\n * Removes priceRange from query params if fromPrice or toPrice is present.\n */\nconst prunePriceRange = (queryParams: Record) => {\n if (queryParams.fromPrice || queryParams.toPrice) {\n const { priceRange, ...result } = queryParams;\n return result;\n }\n return queryParams;\n};\n\ntype FormatQueryParamsQueryParams = Record & {\n category?: string;\n categoryId?: string;\n};\n/**\n * Format query params parsed from query string\n */\nexport const formatQueryParams = (\n queryParams: FormatQueryParamsQueryParams\n) => {\n const {\n category: queryCategory,\n categoryId: queryCategoryId,\n ...rest\n } = removePropertiesWithoutValue(queryParams);\n const formattedQueryParams = prunePriceRange(rest);\n const categoryId = parseInt(queryCategory || queryCategoryId || '0', 10);\n if (categoryId > 0) {\n formattedQueryParams.categoryId = categoryId;\n }\n return formattedQueryParams;\n};\n\n/**\n * Check if url is absolute\n */\nexport const isAbsoluteUrl = (url: string): boolean =>\n new RegExp('^(?:[a-z]+:)?//', 'i').test(url);\n\n/**\n * Tests if a given url or path is an SPA link or not\n */\nexport function isSpaLink(urlOrPath: string): boolean {\n let pathname;\n if (/(^http)s?:\\/\\//i.test(urlOrPath)) {\n try {\n pathname = new URL(urlOrPath).pathname;\n } catch {\n return false;\n }\n } else {\n pathname = urlOrPath;\n }\n return SPA_PATH_REGEX.test(pathname);\n}\n\n/**\n * Takes an object and returns a new object without route parameters\n */\nexport const stripRouteParametersFromQueryParameters = (\n queryParams: Record,\n params: Record | undefined\n) => {\n if (!params) return queryParams;\n\n const excludeKeys = new Set(Object.keys(params));\n\n const filteredPairs = Object.entries(queryParams).filter(\n ([key]) => !excludeKeys.has(key)\n );\n return Object.fromEntries(filteredPairs);\n};\n\n/**\n * Takes an object and returns a new object without pagination properties\n */\nexport function stripCategoryIdFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { categoryId, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Removes tradera base from a url, leaving path and query\n */\nexport const stripHost = (url: string): string =>\n typeof url === 'string' && url.startsWith('http')\n ? url.replace(HOSTS.TRADERA, '')\n : url;\n\n/**\n * Takes an object and returns a new object without itm properties\n * Itm tags should no longer be used, so this method will then be obsolete\n */\nexport function stripItmFromQueryParameters>(\n queryParams: T\n): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { itm_source, itm_medium, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an object and returns a new object without pagination properties\n */\nexport function stripPaginationFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n // The parameters \"spage\", \"page\" and possible \"fe\" are deprecated and should no longer be used.\n // However, it may still be useful to remove them from the query parameters here,\n // in case they are used in old links.\n const { spage, paging, page, fe, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an object and returns a new object without savedQueryName properties\n */\nexport function stripSavedQueryNameFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { savedQueryName, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an object and returns a new object without saveSearch properties\n */\nexport function stripSaveSearchNameFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { saveSearch, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an url and adds tradera base url if it is not already an absolute url\n */\nexport const toAbsoluteUrl = (relativeUrl: string): string =>\n relativeUrl.startsWith('http')\n ? relativeUrl\n : `${HOSTS.TRADERA}${\n relativeUrl.startsWith('/') ? relativeUrl : '/' + relativeUrl\n }`;\n\n// Help TS understand that the parameter is a string\nconst isString = (str: unknown): str is string => {\n if (str === null || str === undefined || str === '' || str === false)\n return false;\n\n return true;\n};\n\n/**\n * From URL to URL with language prefix\n */\nexport function toLocalizedUrl(\n url: T,\n languageCodeIso2?: string\n): T | string {\n if (!isString(url)) {\n return url;\n }\n\n const ignoredUrls = [initData.webApiUrl, '/api/webapi/'];\n const isIgnoredUrl = ignoredUrls.find(\n (domain) => url.indexOf(domain) !== -1\n );\n if (isIgnoredUrl) {\n return url;\n }\n\n if (!languageCodeIso2) {\n logger(`Missing language code for URL ${url}`);\n return url;\n }\n\n if (url.startsWith('//')) {\n throw new Error(\n `Attempt to localize protocol relative url: ${url}. This is not supported at the moment`\n );\n }\n\n const RELATIVE_DOMAIN = 'https://example.com';\n const urlObject = new URL(url, RELATIVE_DOMAIN);\n // eslint-disable-next-line better-mutation/no-mutation\n urlObject.pathname = setLanguagePrefix(\n urlObject.pathname,\n languageCodeIso2\n );\n return urlObject.toString().replace(RELATIVE_DOMAIN, '');\n}\n\n/**\n * Creates query parameters object from search string\n */\nexport const toQueryParameters = (search: string) =>\n qs.parse(search, { ignoreQueryPrefix: true });\n\ntype ToSearchStringOptions = {\n addQueryPrefix?: boolean;\n encode?: boolean;\n skipNulls?: boolean;\n arrayFormat?: 'indices' | 'brackets' | 'repeat' | 'comma';\n};\n\n/**\n * Creates search string from all properties in object\n */\nexport const toSearchString = (\n queryParams: object,\n {\n addQueryPrefix = true,\n encode = true,\n skipNulls = true,\n arrayFormat = 'repeat' //qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) ==> 'a=b&a=c'\n }: ToSearchStringOptions = {}\n): string =>\n qs.stringify(queryParams, {\n addQueryPrefix: addQueryPrefix,\n encode: encode,\n skipNulls: skipNulls,\n arrayFormat: arrayFormat\n });\n\nconst setLanguagePrefix = (path: string, languageCodeIso2: string) => {\n // Inspired by `next/src/server/web/next-url.ts`\n const nextConfig = {\n i18n: {\n defaultLocale: DEFAULT_LANGUAGE,\n locales: SUPPORTED_LANGUAGES\n }\n };\n const pathnameInfo = getNextPathnameInfo(path, {\n nextConfig,\n parseData: true\n });\n const localizedPathname = formatNextPathnameInfo({\n ...pathnameInfo,\n defaultLocale: DEFAULT_LANGUAGE,\n locale: languageCodeIso2\n });\n return localizedPathname;\n};\n\nexport const getBackToHereRedirectUrl = () => {\n // Add random query parameter to force reload when redirecting to this url\n // and only the hash differs\n const queryParams = {\n ...qs.parse(location.search, { ignoreQueryPrefix: true }),\n forceRedirect: Math.round(Math.random() * 100000)\n };\n return (\n location.protocol +\n '//' +\n location.host +\n location.pathname +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\nexport const replacePartInPath = (\n path: string,\n oldPart: string,\n newPart: string\n) => {\n if (path.indexOf('?') > -1) {\n throw new Error('? is not valid in argument.');\n }\n return path\n .split('/')\n .map((part) => (part === oldPart ? newPart : part))\n .join('/');\n};\n\n/**\n * Converts an API request to URLSearchParams for use in a GET request\n */\nexport const convertApiRequestToURLParams = (\n apiRequest: Record\n): URLSearchParams => {\n return Object.entries(apiRequest).reduce((acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc.append(key, value.toString());\n }\n return acc;\n }, new URLSearchParams());\n};\n\nexport const getHeroImageUrl = (\n heroImageUrl: string,\n version: 'small' | 'medium' | 'large' = 'medium'\n) => {\n if (heroImageUrl) {\n return `https://img.tradera.net/heroimages/${version}-square/${heroImageUrl}`;\n }\n return undefined;\n};\n"],"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_ref","styles","props","_objectWithoutProperties","_excluded","React","viewBox","xmlns","d","getDefaultSelectedDescriptionLanguageCodeIso2","memberLanguageCodeIso2","memberCountryCodeIso2","countryLanguageCode","getLanguageFromCountryCode","getDefaultShippingFromCountryCodeIso2","memberCountryCodeCodeIso2","includes","isStampProvider","provider","SHIPPING_PROVIDERS","POSTNORD_STAMP","POSTNORD_STAMP_DENMARK","indexOf","Tags","cacheKeySet","Set","savedSearchesApi","createApi","reducerPath","baseQuery","isomorphicWebApiBaseQuery","tagTypes","keys","endpoints","builder","getSavedSearches","query","params","add","isServer","qs","_objectSpread","sortBy","providesTags","SAVED_SEARCHES_LIST","removeSavedSearches","mutation","url","method","body","async","dispatch","queryFulfilled","cacheKey","patchResult","util","updateQueryData","draft","_draft$savedSearches","savedSearches","filter","item","_params$ids","ids","id","undo","invalidatesTags","toggleEmailNotification","_ref2","_draft$savedSearches2","forEach","_params$savedSearchDt","savedSearchDto","hasEnabledEmailNotifications","sendMail","useGetSavedSearchesQuery","useRemoveSavedSearchesMutation","useToggleEmailNotificationMutation","FormFooterLogo","toLocalizedUrl","useUrlLocalizer","_jsx","ALink","href","children","TraderaLogo","FormFooter","registerLink","isCompanyLink","logoOnly","t","useTranslator","countryCodeFromQs","window","location","search","ignoreQueryPrefix","countryCode","countryCodeUrlSuffix","_jsxs","className","_Fragment","Trans","i18nKey","components","a","HOVER_MENUS","TranslationPreferredMenuItem","useAppDispatch","automaticTranslationPreferred","useAppSelector","selectAutomaticTranslationPreferred","selectIsLoggedIn","type","checked","onChange","e","touchWebClient","post","isAutomaticTranslationPreferred","setAutomaticTranslationPreferred","LanguageSelect","inProfileMenu","title","_useQualtive","useQualtive","isQualtiveEnabled","openQualtiveModal","availableLanguages","selectAvailableLanguages","preferredLanguage","selectPreferredLanguage","map","languageCodeIso2","displayName","Button","fluid","theme","onClick","code","setPreferredLanguage","Flag","countryCodeIso2","getCountryCodeForFlagFromLanguage","CheckIcon","SURVEYS","language","ShippingCountrySelectDropdown","_shippingCountries$fi","shippingCountries","selectedShippingCountryCodeIso2","onSelect","_ref$itemsBeforeScrol","itemsBeforeScrollCount","shippingCountryPlaceholder","relative","_ref$style","style","_useState2","_slicedToArray","useState","setSearch","_useState4","isSearchEnabled","setIsSearchEnabled","includesSearch","v","toLowerCase","filteredShippingCountries","name","selectedShippingCountryName","find","x","listLength","listStyle","height","Math","min","width","zIndex","overflowY","SearchInput","autoFocus","placeholder","value","autoComplete","onBlur","setTimeout","onClear","DropdownButton","icon","classNames","onMouseDown","preventDefault","shippingCountry","ShippingCountrySelect","selectShippingCountry","shippingCountryCodes","selectAvailableShippingCountryCodes","isLoadingAvailableShippingCountries","selectIsLoadingAvailableShippingCountries","showShippingCountries","selectHasLoadedAvailableShippingCountries","useMemo","mapCountryCodeToCountryKey","useEffect","getAvailableShippingCountries","Load","updateShippingRegion","LocalizationMenu","showRegionSelection","LocalizationLink","mouseOver","mouseOut","hideRegionSelection","showMenu","_ref$showIconAndTextI","showIconAndTextInsteadOfFlag","preferredLanguageCode","selectPreferredLanguageCode","showRegionSelectionAppState","selectShowRegionSelection","showLocalizationRegionPicker","selectShowLocalizationRegionPicker","onMouseEnter","onMouseLeave","GtmService","trackAction","TranslateIcon","HoverMenu","hoverMenuStyles","alignRight","SwedenCountryCode","showLanguageMenu","onBack","isMobile","useIsMobile","setShowMenu","isNativeAppContext","useSelector","state","environment","BackIcon","transparentHeader","HorizontalSeparator","_ref2$thick","thick","separatorHorizontal","separatorHorizontalThick","SelectCountry","availableCountries","selectedCountryCodeIso2","onCountrySelected","filteredCountries","selectedValue","index","waitForCountSessionId","retryCount","Promise","resolve","_window","ka","tryGetKountSessionId","collectEnd","sessionId","UserRegWrapper","MediaQuery","minWidth","BREAKPOINT_SIZES","BREAKPOINTS","MD","src","alt","Error","acceptsMarketing","setAcceptsMarketing","undefined","getAcceptsMarketing","triggerUserSignedUpEvent","memberId","memberEmail","data","event","memberMarketingSubscribed","dataLayer","push","_queue","payload","callbacks","callback","subscribe","topCountries","getAvailableUserRegistrationCountries","getAvailableCountries","pushToDataLayer","trackEvent","analyticsData","eventCategory","category","eventAction","action","eventLabel","label","eventValue","eventNonInteractive","_isNonInteractive","hitCallback","toString","trackPageView","customPageUrl","pathname","hash","userTriggered","GooglePlayBadgeSv","GooglePlayBadgeDa","GooglePlayBadgeDe","GooglePlayBadgeFr","GooglePlayBadgeNl","GooglePlayBadgeEn","AppstoreBadgeSv","AppstoreBadgeDa","AppstoreBadgeDe","AppstoreBadgeFr","AppstoreBadgeNl","AppstoreBadgeEn","GA_EVENT_SAVE_SEARCH","BID_VALIDATION_RESULTS","LEADING_BIDDER","SUCCESSFULLY_CHANGED_AUTOBID","BELOW_MINIMUM","BELOW_RESERVE_PRICE","BELOW_OWN_LEADING_BID","OFFLINE","slice","createSlice","initialState","wishListNudgeHidden","reducers","shouldShowWishListNudge","reducer","prepare","cookieUtil","readCookie","WISH_LIST_NOTIFICATION_HIDDEN","GdprSettings","isFunctionalEnabled","hideWishListNudge","createCookie","Infinity","eraseCookie","WISH_LIST_NOTIFICATION_DISPLAY_COUNT","_slice$actions","actions","wishListNudge","ITEM_LAYOUT","LIST","GRID","GRID_MEDIUM","GRID_LARGE","getSrc","resolution","replace","identitytoolkitBaseQuery","fetchBaseQuery","prepareHeaders","headers","set","baseUrl","firebaseBaseQueryFn","args","api","extraOptions","firebaseConfiguration","error","status","statusText","region","projectId","firebaseBaseQuery","token","getState","auth","firebaseIdToken","idToken","firebaseApi","currentIdToken","_await$api$dispatch$d","memberApi","getMessagingConfiguration","initiate","messagingConfiguration","argsWithFirebaseConfiguration","result","refreshedIdTokenQuery","apiKey","grant_type","refresh_token","refreshToken","refreshedTokenData","receivedFirebaseIdToken","id_token","expiresIn","expires_in","_customTokenResult$da","_customTokenResult$da2","customTokenResult","returnSecureToken","getToken","addMessage","parameters","initiateThread","getProfile","useAddMessageMutation","useInitiateThreadMutation","useGetProfileQuery","LoadingPortal","Component","constructor","super","el","document","createElement","loadingPortalRoot","getElementById","componentDidMount","appendChild","classList","componentWillUnmount","removeChild","render","_this$props","_this$props$className","ReactDOM","propTypes","ajaxItemApi","getAjaxItem","itemId","languageCode","useGetAjaxItemQuery","quickView","isOpen","openQuickView","_payload$items","items","_payload$item","openedFrom","closeQuickView","_quickView$actions","RatingStars","memberAlias","rating","gaAttributes","link","_ref$dark","dark","displayRating","utils","getDisplayRating","Stars","ratingStarsOverlay","RatingIcon","ratingStarsBase","Fragment","ratingStars","light","useLink","defaultProps","referralModalApi","getReferralCode","useGetReferralCodeQuery","STORAGE_KEYS","COOKIE_NOTIFICATION","ITEMS_CLICK","SAVE_SEARCH_HINT","SHARE_WISHLIST_TOOLTIP","SHARE_WISHLIST_TOOLTIP_SANTA","SAVED_SEARCHES","SEARCH_RECENT","RECENT_BRAND_ATTRIBUTES","WEB_PUSH_ACCEPTED","WEB_PUSH_SHOWN_MODALS","SELLER_LIST_COMPACT_VIEW","SYI_NEW_LAYOUT_INFO_DISMISSED","SYI_RESELL_SHOWN_FOR_DRAFT_IDS","SYI_RESELL_ITEM_SHOWN_FOR_DRAFT_IDS","SHIPPING_CONFIRMATION_PAGE_DIGITAL_STAMP_MODAL_DISMISSED_COUNT","SELLER_LIST_MARK_AS_SENT_HINT","WISHLIST_BADGE_DATE_SHOWN","ONBOARD_BUYER_CATEGORIES","ONBOARD_SELLER_CLOSED","VIEWED_START_PAGE_COUNT","FEATURE_MODAL_MAO_ACTIVE","FEATURE_MODAL_MGM_ACTIVE","CACHE_MESSAGING_BADGES","CACHE_SYSTEM_MESSAGES","CACHE_SYSTEM_BADGE","APPLE_ID_USER","USER_PROFILE","HAS_SHOWED_MFA_VERIFICATION_MESSAGE","DAY_IN_SECONDS","HOUR_IN_SECONDS","MINUTE_IN_SECONDS","MODAL_STATE","useIsFeatureEnabled","featureName","selectIsFeatureEnabled","createWrappedT","i18nObject","hasLoadedAllTranslations","throwOnTransSuffix","isShowingTranslationKeysEnabled","options","endsWith","TRANS_SUFFIX","_len","Array","_key","translation","lng","addTranslationForHydration","isQueryToggleEnabled","isShowingTranslationKeysEnabledQuery","useQuery","_state$status","loadedLanguages","_useTranslation","useTranslation","I18N_FRONTEND_NAMESPACES","ready","i18n","wrappedT","_i18n$translator$extr","translator","extractFromKey","namespaces","namespace","_i18n$translator$reso","ns","res","pluralizedKey","exactUsedKey","addTranslationKey","useCurrentLanguage","useRef","current","_state$status2","_useTranslation2","defaults","TransComponent","NS_TOUCHWEB","isSwedenCountryCodeOrUndefined","isDenmarkCountryCode","isNetherlandsCountryCode","se","dk","de","fr","nl","en","da","getCountryCodeFromLanguage","areLanguageCodesIso2Equal","first","second","toUpperCase","useLocalizedPriceFormatter","_useLocalizedPriceFormatter","_ref$conversion","conversion","roundUp","allowFractions","preferredCurrency","selectPreferredCurrency","useCallback","price","formatPrice","rate","Number","currency","minimumFractionDigits","decimals","maximumFractionDigits","queuedToasts","createQueue","openNextToast","isInProgress","nextItem","next","queueLength","getLength","toastOptions","autoClose","max","onClose","notifyDone","eventData","webApiClient","get","imageUrl","itemUrl","shortDescription","toast","ItemToast","message","_nextItem$eventData","header","messageData","headerData","MessageToast","handleNotification","ttlInMinutes","visibilityState","showSuccessToast","TYPE","SUCCESS","list","topLevelCategories","_initData$allCategori","initData","allCategories","isFetching","categoriesSlice","initialize","requestCategoryList","receiveCategoryList","handleCategoryListError","_categoriesSlice$acti","store","browserHistory","_process$env","isProd","process","env","reduxStore","configureStore","rootReducer","middleware","getDefaultMiddleware","middlewares","discoverApi","feesApi","pickListApi","touchwebSearchApi","touchwebSyiApi","bidHistoryApi","cartApi","draftsApi","templatesApi","shippingComplaintApi","wishListApi","messagingStatsApi","wishListItemsEndingTodayApi","webApi","topListsApi","sellerListApi","bookedShipmentsApi","routerMiddleware","concat","devTools","enhancers","sentryReduxEnhancer","enableWebPackHotModuleReplacementForReducers","module","hot","accept","nextRootReducer","require","replaceReducer","initializeStore","getHistory","initializeState","ProviderWithGlobalStore","Provider","initReducer","_state","requestSearchResults","receiveSearchResults","_payload$result","_payload$endpoint","endpoint","_payload$queryParams","queryParams","_payload$shippingRegi","shippingRegionCountryCodeIso2","hasResult","normalize","handleSearchResultsError","_ref3","setSingleFilterValue","_ref4","filters","updateItem","_ref5","itemData","itemsOnDisplay","addItemOnDisplay","_ref6","some","removeItemOnDisplay","_ref7","setCategoryPath","_ref8","categoryPath","currentCategoryId","setCurrentCategoryId","_ref9","setIsFilterOpen","_ref10","isFilterOpen","reset","_ref11","selectEnvironment","selectFeatureSwitches","_state$environment","featureSwitches","_selectFeatureSwitche","selectIsNativeApp","_state$environment3","itemsSlice","recentItemIds","wishListItemIds","wishListAddedCount","addRecentlyViewed","unshift","setRecentlyViewed","wishlist","_action$payload","exists","delete","from","wishlistCountIncrement","wishlistAddRange","itemIds","wishlistRemoveRange","getInitialState","_itemsSlice$actions","memberServerStorageApi","injectEndpoints","getMemberServerStorage","webApiTags","MemberServerStorage","addToMemberServerStorage","_draft$rows","rows","row","useGetMemberServerStorageQuery","useAddToMemberServerStorageMutation","_state$member","member","isLoggedIn","selectGeolocation","_state$member2","geolocation","selectMemberId","_state$member3","selectIsOutsideSweden","_state$member11","_state$member11$geolo","_state$member12","_state$member12$geolo","isoCode","recentSearchesService","StorageService","recentBrandAttributesService","getRecentSearchesLocalStorage","_recentSearchesServic","_recentSearchesServic2","recentSearches","fetch","orderByTimestamp","formattedRecentSearches","recent","_recent$value","_recent$value2","text","count","q","getRecentBrandAttributesLocalStorage","_recentBrandAttribute","_recentBrandAttribute2","recentBrandAttributes","recentBrand","brands","searches","personalisationSlice","initializeRecentSearches","initializeRecentBrandAttributes","setPersonalisedSearches","setPersonalisedSearchesStatus","setRecentSearches","recentSearchIndex","findIndex","splice","removeRecentSearch","setRecentBrandAttributes","_personalisationSlice","pushNotificationsSlice","enabled","initDone","pushSupported","optedIn","tagGroups","wishlistReminders","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","shownModals","MODAL_TYPES","default","selling","setInitDone","setPushSupported","setOptedInValue","setTagGroupsValue","setShownModalTrue","modalType","localStore","setItem","setAllShownModals","setEnabled","init","sdk","getUrbanSdk","canRegister","isSupported","channel","tags","has","getTagGroupsFromUrbanAirship","isPushEnabled","getItem","CartSummary","values","getCartSummary","cartId","useGetCartSummaryQuery","SavedSearchesSorting","isomorphicBaseQueryForWishListableItems","getBrandSuggestions","getWishListableItems","getFavouriteSellers","shippingCountryCode","userLanguage","_ref3$maxItemsPerFavo","maxItemsPerFavouriteSeller","_ref3$maxItems","maxItems","_ref3$maxFavouriteSel","maxFavouriteSellers","getSellersOfInterest","_ref4$maxSellers","maxSellers","getIdeas","getInstagramFeed","getTrendingSearches","transformResponse","response","_meta","arg","Unsorted","sortSavedSearchesResponseOnLatestTotalCount","getRecommendations","slot","maxResults","pageNumber","getIndependentSearchResult","getCategoryResult","getSavedSearchResults","meta","_response$response","_response$response$re","storeSavedSearch","totalItems","itemsMatched","getItemsByIds","getCausePage","useGetBrandSuggestionsQuery","useGetIdeasQuery","useGetSellersOfInterestQuery","useGetInstagramFeedQuery","useGetIndependentSearchResultQuery","useGetCategoryResultQuery","useGetSavedSearchResultsMutation","useGetRecommendationsQuery","useGetFavouriteSellersQuery","useGetTrendingSearchesQuery","useGetItemsByIdsQuery","useGetCausePageQuery","storageService","getSavedSearch","getPendingKycActions","getQuestionnaire","initializeQuestionnaire","completeQuestionnaire","getVerificationStatus","setMakeAnOfferEnabled","getSilentMessagingEnabled","setSilentMessagingEnabled","onQueryStarted","request","silentMessaging","getCompanyMoneyTransferLicenseStatus","getMemberEmailNotificationsSettingsViewModel","setMessagingEmailNotify","messaging","emailNotifyAll","emailNotify","MessagingEmailNotification","All","getMemberHasTaxIdentificationNumber","getMemberShouldCollectTaxIdentificationNumber","setMemberTaxIdentificationNumber","updateMemberEmailSettings","getCompanyDac7Status","setMemberVatNumber","useGetPendingKycActionsQuery","useGetQuestionnaireQuery","useInitializeQuestionnaireMutation","useCompleteQuestionnaireMutation","useGetVerificationStatusQuery","useSetMakeAnOfferEnabledMutation","useGetSilentMessagingEnabledQuery","useSetSilentMessagingEnabledMutation","useGetCompanyMoneyTransferLicenseStatusQuery","useGetMemberEmailNotificationsSettingsViewModelQuery","useSetMessagingEmailNotifyMutation","useUpdateMemberEmailSettingsMutation","useGetCompanyDac7StatusQuery","useSetMemberVatNumberMutation","useGetMemberHasTaxIdentificationNumberQuery","useGetMemberShouldCollectTaxIdentificationNumberQuery","useSetMemberTaxIdentificationNumberMutation","useGetMessagingConfigurationQuery","getMessagingStats","useGetMessagingStatsQuery","SortBy","httpClientBaseQuery","client","saveSearch","toSearchString","addQueryPrefix","searchGtm","useSaveSearchMutation","SystemMessageSeverity","getWishList","queryString","WISH_LIST","inWishList","deleteWishListItems","getWishListEndless","_","_request$page","page","serializeQueryArgs","_ref4$queryArgs","queryArgs","otherQueryArgs","endpointDefinition","endpointName","defaultSerializeQueryArgs","forceRefetch","currentArg","previousArg","merge","currentCacheData","_currentCacheData$ite","_response$items","totalCount","useGetWishListQuery","useGetWishListEndlessQuery","useDeleteWishListItemsMutation","getWishlistItemsEndingTodayCount","WISH_LIST_ENDING_TODAY","useGetWishlistItemsEndingTodayCountQuery","shippingRegion","availableShippingCountryCodes","hasLoadedAvailableShippingCountries","selectShippingRegionCountryCodeIso2","_state$shippingRegion","regionPickerDismissed","shippingCountryCookieValue","_geoLocation$isoCode","_selectPreferredLangu","_selectPreferredLangu2","geoLocation","country","gpsMatchesLanguage","isActionsPerFullPageLoadDone","hasReportedViewportDiff","setIsActionsPerFullPageLoadDone","setHasReportedViewportDiff","addLoadedLanguage","fetchSystemMessages","_getState2","_systemMessages","systemMessages","cache","read","CACHE_KEYS","SYSTEM_MESSAGES","messages","_fetchedMessages$data","fetchedMessages","getSystemMessages","reduce","acc","notificationCount","severity","Warning","write","setSystemMessages","remove","API_ERRORS","LOGGED_OUT","logOutAction","IGNORE_ME","CANCELLED","NETWORK","TIMEOUT","logger","fetchSystemBadges","_systemBadges","systemBadges","SYSTEM_BADGES","badges","_fetchedBadges$data","fetchedBadges","getSystemBadges","badgeMap","badge","PayoutsActivity","setSystemBadges","MESSAGING_BADGES","indexedDB","deleteDatabase","logOut","signIn","getStore","openProfileMenu","redirectUrl","closeModal","getReturnUrl","openNotificationOptinModalAction","gaLabel","description","pushNotifications","openNotificationOptinModal","updateItemLayout","defaultCookie","DEFAULT_COOKIES","expires","itemLayout","updateSiteLayout","siteLayout","reloadSystemMessages","reloadSystemBadges","uiSlice","toggleHeaderSearch","showHeaderSearch","openVideoModal","videoUrl","videoId","pageType","buttonLink","buttonText","videoModal","open","OPEN","closeVideoModal","CLOSED","openNewMessageModal","newMessageModal","senderId","recipientId","recipientAlias","itemTitle","itemImageUrl","purchaseOrderId","itemSellerId","closeNewMessageModal","notificationOptinModal","closeNotificationOptinModal","openModal","modalId","modals","currentModal","currentModalData","messageNotificationCount","badgeNotificationCount","profileMenu","closeProfileMenu","openCategoryDropdownMenu","categoryDropdownMenu","closeCategoryDropdownMenu","openSearchForm","showSearchForm","closeSearchForm","getInitialBadges","openItemSettings","_ref12","itemSettings","closeItemSettings","openShareModal","_ref13","shareModal","settings","closeShareModal","openHelpSection","_ref14","helpSection","closeHelpSection","openWishListSideSheet","wishListSideSheet","closeWishListSideSheet","openNotificationsSideSheet","notificationsSideSheet","closeNotificationsSideSheet","updateProductCommunications","_ref15","productCommunications","showSaveSearchBanner","_ref16","_ref16$payload","openCollectSsnModal","collectSsnModal","closeCollectSsnModal","openReferralModal","referralModal","closeReferralModal","_uiSlice$actions","cartSlice","setFetching","setCartData","merchantPreOrders","errors","setError","_cartSlice$actions","BUYER_PROTECTION_STATE","buyerMember","checkoutSummary","hasError","payment","paymentOptions","selectedPayment","buyerProtection","orderCalculation","paymentMethodData","paymentMethodAmount","discountCodeValue","isValid","discountCode","validating","showSelectedPaymentAsPayButton","sellerMember","modal","paymentAttemptId","trustlyRedirectUrl","ongoingPaymentAttempt","shippingInfo","shippingOptions","shippingPriceRange","shippingDiscount","collectionPoints","selectedCollectionPoint","isBooked","combinedShippingInfo","purchaseOrder","shippingOptionsLoading","verificationStatus","needsKyc","preselectedValues","shipping","paymentOption","checkoutSlice","receiveCheckout","shippingFeeRule","orderNumber","paidStatus","collectionPointId","receiveShippingOptions","setShippingOptionsLoading","isLoading","receivePaymentOptions","receiveCollectionPoints","cancelPayment","setHasError","setPaymentFetching","setPaymentHasError","setPaymentIsValid","setPaymentMethodData","setCheckoutSummaryFetching","setCheckoutSummaryHasError","setSelectedPayment","setOrderCalculation","setBuyerProtection","_ref17","setSelectedShipping","_ref18","selectedShipping","setOngoingPaymentAttempt","_ref19","setCombinedShippingInfo","_ref20","setBuyerMember","_ref21","setBuyerMemberAddress","_ref22","address","setCollectionPoint","_ref23","setShippingInfoFetching","_ref24","setCollectionPointSaving","_ref25","savingCollectionPoint","setDropinLoading","_ref26","dropinLoading","setDiscountCode","_ref27","setDiscountCodeValidating","_ref28","setPaymentMethodAmount","_ref29","setDiscountCodeValue","_ref30","setPreselectedValues","_ref31","setShowSelectedPaymentAsPayButton","_ref32","_checkoutSlice$action","handleReportItemModel","reportItemModel","setReportItem","VIEW_STATES","FORM","ITEM_ENDED","LOADING","SUBMIT_FAILED","SUBMIT_SUCCESS","SUBMITTING","amount","breadCrumbs","categoryId","categoryNames","categories","categoryLevel","hasEnded","images","reasons","resultMessage","shippingTerms","sellerMemberId","viewState","itemDetails","resetInitialState","_ref$payload","bidInfo","itemState","getItemState","hasStarted","itemType","bidCount","reservePriceReached","nextValidBidAmount","transactionType","leadingBidderMemberId","amountDetails","getAmountDetails","fixedPrice","leadingBidAmount","openingBid","allowedBuyerRegion","breadCrumb","endDate","assertNoUndefinedProperties","setViewState","setCategories","defaultBox","weight","weightMap","shippingCalculatorEnabledCountries","shippingCalculatorSlice","box","availableFromCountryCodes","availableToCountryCodes","weightUnit","weightSliderValue","isLoadingShippingProducts","shippingProviders","providerName","service","internationalProductsGroupedByFromThenToCountry","SE","showError","initializeShippingCalculator","defaultCountry","selectedToCountry","selectedFromCountry","setSelectedToCountry","setSelectedFromCountry","setDefaultValuesOnBox","updateFilter","filterName","setWeightFilter","setWeightUnit","beginFetchingShippingProducts","setShowError","setShippingProducts","internationalShippingCalculatorProducts","prev","product","fromCountryCodeIso2","to","toCountryCodeIso2","_shippingCalculatorSl","handleTraderaShopProduct","traderaShopProduct","setProduct","setItemDetails","setTranslation","itemModel","preferredLanguageCodeIso2","disabledForEnglishLangSwedes","descriptionLanguageCodeIso2","shouldTranslateDescriptionOnLoad","setCurrentDescriptionLanguageCodeIso2","traderaShopSlice","setIsLoading","mapItemDetails","setSellerItems","sellerItems","currentDescriptionLanguageCodeIso2","setTranslationOnDemandDisabled","translatedDescription","translatedDescriptionState","translatedDescriptionStates","TRANSLATION_ON_DEMAND_DISABLED","setTranslatedDescription","DEFAULT","resetTranslatedDescription","beginLoadingTranslatedDescription","failedLoadingTranslatedDescription","SERVER_ERROR","_traderaShopSlice$act","initialPlaceBidResponse","info","isSuccessful","validationResult","bidToasterData","isBidding","categoryItems","shopItems","combinedShippingItems","viewItemState","myMaxBidAmount","placeBidResponse","purchaseInfo","serverSecondsLeft","isWishlistPending","viewItemSlice","resetPlaceBidResponse","setShowBiddingToaster","setIsRestricted","isRestricted","setIsInternationalWacko","wackoInfo","isInternationalWacko","setPurchaseInfo","setBreadCrumbs","setIsBidding","setPlaceBidResponse","setBidInfo","_state$itemDetails","_state$bidInfo$bidId","_state$bidInfo","_bidInfo$bidId","_state$bidInfo2","_state$bidInfo3","_state$bidInfo4","_state$itemDetails2","contexts","currentItemId","bidInfoItemId","isFirstBidInfo","isBinPurchase","TRANSACTION_TYPES","BIN","bidId","bidStatus","getLeadingBidStatus","existingBidCount","incomingBidCount","newBidInfo","leadingBidMemberAlias","setMyMaxBidAmount","setItemState","setViewItemState","setServerSecondsLeft","setCategoryItems","setShopItems","setCombinedShippingItems","setIsWishlistPending","setPaymentAmountForBid","paymentCalculations","paymentAmountForBid","_itemDetails$descript","_itemDetails$images","img","thumbnail","multiThumbnail","medium","small","normal","smallFit","mediumFit","largeFit","video","previousBidInfo","hadLeadingBid","hasLeadingBid","hasLostLeadingBid","_viewItemSlice$action","isSwedenCountryCode","isCountryCode","isEuCountryCode","containsCode","euCountryCodes","codes","c","c1","c2","ABORTED","VERSION_MISMATCH","defaultJsonRequestHeaders","Accept","axiosConfigs","authenticated","withCredentials","notAuthenticated","isUnauthorized","statusCode","addAntiCacheParam","antiCacheRegExp","test","Date","getTime","submitOriginalRequest","axios","config","errorResponseInterceptor","_error$request","_error$request2","responseString","JSON","parse","responseStatus","errorCode","isMissingAuthToken","getLanguage","refreshAccessToken","then","catch","_errorAfterRefreshTok","errorAfterRefreshToken","reject","handleMissingAuthToken","checkLoginState","_response$data","handleUnauthorized","axiosWithTokenRefresh","axiosInstance","instance","interceptors","use","cancelTokens","utilizeCancelToken","tokenId","cancel","cancelToken","checkResponseVersion","version","finalizeResponse","handleError","statusHandlers","plainDayjs","isBetween","isSameOrAfter","utc","timezone","localizedFormat","swedishTimeZone","formatUtcDateAsSwedishTimeZoneDate","date","localizedDayjsFn","format","includeWeekday","includeYear","excludeTime","Boolean","join","swedishTimeZoneDate","locale","tz","TIME_SPAN_UNITS","ensureClientOnly","httpClient","shouldLocalizeUrl","axiosWrapper","httpClientConfig","axiosCaller","cancelTokenId","axiosConfig","_utilizeCancelToken","safeUrl","getSafeUrl","startsWith","substring","localizedUrl","put","enhancedConfig","trpcClient","unpackResponse","command","commandName","queryName","ENDPOINTS","WEB_API","marketingApiClient","MARKETING_PUBLIC_API","shippingRecommendationsClient","schedulerPolyfill","scheduler","yieldToMain","postTask","taskCallback","priority","queueBackgroundTask","scriptPromises","Map","loadScript","optionsWithDefaults","timeout","dataAttributes","promise","newPromise","querySelector","scriptWithKey","_options$unload","head","unload","script","timeoutTimer","_options$unload2","onload","onerror","attribute","setAttribute","clearTimeout","RegExp","URL_LANGUAGES","formatQueryParams","_removePropertiesWith","removePropertiesWithoutValue","queryCategory","queryCategoryId","formattedQueryParams","fromPrice","toPrice","priceRange","prunePriceRange","_excluded2","parseInt","stripItmFromQueryParameters","itm_source","itm_medium","_excluded4","isString","str","webApiUrl","domain","RELATIVE_DOMAIN","urlObject","URL","setLanguagePrefix","toQueryParameters","_ref3$addQueryPrefix","_ref3$encode","encode","_ref3$skipNulls","skipNulls","_ref3$arrayFormat","arrayFormat","path","nextConfig","defaultLocale","DEFAULT_LANGUAGE","locales","SUPPORTED_LANGUAGES","pathnameInfo","getNextPathnameInfo","parseData","formatNextPathnameInfo"],"sourceRoot":""}