{"version":3,"file":"static/js/19.a8277c9611d7922f55d6.chunk.js","mappings":";uRA4BsCA,EAAAA,cCEKA,EAAAA,2DCJpC,MAAMC,EAAiBC,IAC1B,QAAgBC,IAAZD,EACA,OAEJ,IAAIE,EAAQC,KAAKC,MAAMJ,EAAU,MACjC,MAAMK,EAAOH,GAAS,GAAK,KAAO,KAClCA,GAAS,GACTA,EAAQA,GAAgB,GACxB,MAAMI,EAAoBN,EAAU,KAEpC,MAAO,GAAGE,KADMC,KAAKC,MAAME,EAAoB,IAAM,GAAK,IAAIH,KAAKC,MAAME,EAAoB,MAAQH,KAAKC,MAAME,EAAoB,OACtGD,GAAM,EAGlCE,EAAqBA,CAACC,EAAcC,KACtC,OAAQD,GACJ,IAAK,MACD,OAAOC,EAAUC,KAAKC,OAC1B,IAAK,MACD,OAAOF,EAAUC,KAAKE,QAC1B,IAAK,MACD,OAAOH,EAAUC,KAAKG,UAC1B,IAAK,MACD,OAAOJ,EAAUC,KAAKI,SAC1B,IAAK,MACD,OAAOL,EAAUC,KAAKK,OAC1B,IAAK,MACD,OAAON,EAAUC,KAAKM,SAC1B,QAEI,OAAOP,EAAUC,KAAKO,SAI5BC,EAAoBA,CAACV,EAAcC,KACrC,OAAQD,GACJ,IAAK,MACD,OAAOC,EAAUC,KAAKS,WAC1B,IAAK,MACD,OAAOV,EAAUC,KAAKU,YAC1B,IAAK,MACD,OAAOX,EAAUC,KAAKW,cAC1B,IAAK,MACD,OAAOZ,EAAUC,KAAKY,aAC1B,IAAK,MACD,OAAOb,EAAUC,KAAKa,WAC1B,IAAK,MACD,OAAOd,EAAUC,KAAKc,aAC1B,QAEI,OAAOf,EAAUC,KAAKe,aAI5BC,EAAwBA,CAC1BC,EACAC,EACAC,EACApB,KAEO,CACHqB,cAAevB,EAAmBoB,EAAUlB,GAC5CsB,aAAcb,EAAkBS,EAAUlB,GAC1CuB,YAAaL,IAAaC,EAASrB,EAAmBqB,EAAQnB,QAAaR,EAC3EgC,WAAYN,IAAaC,EAASV,EAAkBU,EAAQnB,QAAaR,EACzEiC,UAAWL,IAIbM,EAAmBA,CAACC,EAAuBC,OACzCD,EAAUE,WAAYD,EAAWC,YAIhCF,EAAUE,WAAaD,EAAWC,WAC5BF,EAAUG,WAAaF,EAAWE,UAAYH,EAAUI,YAAcH,EAAWG,WAM1FC,EAAoBA,CAACC,EAA+BC,KAC/C,CACHL,SAAUM,IAAIF,EAAY,aAAaC,KAAiB,GACxDJ,SAAUK,IAAIF,EAAY,GAAGC,iBAAyB1C,GACtDuC,UAAWI,IAAIF,EAAY,GAAGC,kBAA0B1C,KAI1D4C,EAAwBA,CAAChB,EAAuBpB,KAClD,GAAIoB,EAAUS,SACV,OAAO7B,EAAUqC,WAKrB,MAAO,GAH8B/C,EAAc8B,EAAUU,aAC1BxC,EAAc8B,EAAUW,YAE7B,EAGrBO,EAAkBA,CAACL,EAA+BjC,KAC3D,MAAMuC,EAAsC,GAEtCC,EAAcR,EAAkBC,EAAY,UAC5CQ,EAAeT,EAAkBC,EAAY,WAC7CS,EAAiBV,EAAkBC,EAAY,aAC/CU,EAAgBX,EAAkBC,EAAY,YAC9CW,EAAcZ,EAAkBC,EAAY,UAC5CY,EAAgBb,EAAkBC,EAAY,YAC9Ca,EAAcd,EAAkBC,EAAY,UAElD,IAAIc,EAAuB,MACvBC,EAAqB,MA8CzB,OA5CKtB,EAAiBc,EAAaC,KAC/BF,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBI,EAAaxC,GAAYA,IAEjH+C,EAAc,OAElBC,EAAY,MAEPtB,EAAiBe,EAAcC,KAChCH,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBK,EAAczC,GAAYA,IAElH+C,EAAc,OAElBC,EAAY,MAEPtB,EAAiBgB,EAAgBC,KAClCJ,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBM,EAAgB1C,GAAYA,IAEpH+C,EAAc,OAElBC,EAAY,MAEPtB,EAAiBiB,EAAeC,KACjCL,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBO,EAAe3C,GAAYA,IAEnH+C,EAAc,OAElBC,EAAY,MAEPtB,EAAiBkB,EAAaC,KAC/BN,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBQ,EAAa5C,GAAYA,IAEjH+C,EAAc,OAElBC,EAAY,MAEPtB,EAAiBmB,EAAeC,KACjCP,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBS,EAAe7C,GAAYA,IAEnH+C,EAAc,OAElBC,EAAY,MAEZT,EAAeU,KAAKhC,EAAsB8B,EAAaC,EAAWZ,EAAsBU,EAAa9C,GAAYA,IAE1GuC,CAAc,ECVZW,EAAsBA,CAC/BC,EACAC,EACAC,KAEA,QAAiB7D,IAAb2D,IAA0BE,EAEvB,OAAIF,EAAW,EACX,OAAOC,KAEX,IAAI1D,KAAKC,MAAMwD,MAAaC,IAAwB,EA6E/D,MA4FaE,EA5FyEC,IAA8C,IAAAC,EAAAC,EAChI,MAAM,SACFC,EAAQ,UACR1D,EAAS,WACTiC,EAAU,MACV0B,EAAK,mBACLN,EAAkB,wBAClBO,EAAuB,yBACvBC,EAAwB,QACxBC,EAAO,cACPC,GACAR,EAEJ,IAAIS,EAAgCN,EAASO,YAC7C,MAAMC,IAAoB,QAATV,EAAAQ,SAAS,IAAAR,IAATA,EAAWW,WAAW,OACnCH,GAAaE,IACbF,EAAYA,EAAUI,MAAM,IAEhC,MAAMC,EAAoB,QAAZZ,EAAGO,SAAS,IAAAP,OAAA,EAATA,EACXa,cACDC,QAAQ,YAAa,KACrBA,QAAQ,MAAO,KACdC,EAAuCtB,EAAoBQ,EAASe,SAAUlB,EAAMH,sBAAuBC,GAC3GqB,EAxEJ,SAAwBhB,GAC1B,MAAMiB,EAAe,IAGjBjB,EAASkB,QAAUlB,EAASmB,eAC5BF,EAAa1B,KAAK,GAAGS,EAASkB,QAAU,MAAMlB,EAASmB,cAAgB,KAAKC,QAIhF,MAAMC,EAAwB,GAC1BrB,EAASsB,cACTD,EAAsB9B,KAAKS,EAASsB,cAEpCtB,EAASuB,oBACTF,EAAsB9B,KAAKS,EAASuB,oBAEpCF,EAAsBG,OAAS,GAC/BP,EAAa1B,KAAK8B,EAAsBI,KAAK,OAIjD,MAAMC,EAAuB,GAqB7B,OApBI1B,EAAS2B,MACTD,EAAqBnC,KAAKS,EAAS2B,OAElC3B,EAAS4B,OAAS5B,EAAS6B,YAAqC,QAArB7B,EAAS8B,SACrDJ,EAAqBnC,KAAKS,EAAS4B,OAAS5B,EAAS6B,WAErDH,EAAqBF,OAAS,GAC9BP,EAAa1B,KAAKmC,EAAqBD,KAAK,OAI5CzB,EAAS+B,KACTd,EAAa1B,KAAKS,EAAS+B,KAI3B/B,EAAS8B,SACTb,EAAa1B,KAAKS,EAAS8B,SAGxBb,EAAaQ,KAAK,KAC7B,CA6BiCO,CAAchC,GACrCiC,EA7FkBC,KACxB,IAAKA,EACD,OAGJ,MAAMC,EAAmBD,EAASE,QAAOC,GAAwC,IAA7BA,EAAQC,mBAA2BD,EAAQE,YAE/F,GAAIC,EAAAA,gBAAgBC,YAAYN,GAAmB,CAC/C,MAAMO,EAAsBP,EAAiBQ,MAAKN,GAAWA,EAAQO,YAErE,OAAIF,EACOA,EAAoBG,QAGxBV,EAAiB,GAAGU,QAGf,EA4EwBC,CAAmB9C,EAAS+C,UAC9DC,EA3MgBC,EAAC1E,EAAoCyB,OACvDzB,SAAAA,EAAY2E,mBAAsBlD,EAASmD,UAAYnD,EAASoD,QA0M1CH,CAAkB1E,EAAYyB,GAClDqD,EAAkBhD,GAAgC,6CAuBxD,OACI1E,EAAAA,cAAA,OAAK2H,UAAWD,GAChB1H,EAAAA,cAAA,OAAK2H,UAAW9C,EAAW,GAAG6C,yBAAyC,GAAGA,wBACtE1H,EAAAA,cAAA,KAAG2H,UAAW,GAAGD,iBACb1H,EAAAA,cAAA,QAAM2H,UAAW,GAAGD,iBAAgC,GAAG7C,EAAWlE,EAAUiH,mBAAqBjH,EAAUkH,oBAAoBvD,OAC9Ha,GACGnF,EAAAA,cAAA,QAAM2H,UAAW,GAAGD,oBACf,IACAvC,IAGbnF,EAAAA,cAAA,MAAI2H,UAAW,GAAGD,gBAA+B/C,IAErD3E,EAAAA,cAAA,OAAK2H,UAAW,GAAGD,aACf1H,EAAAA,cAAA,OAAK2H,UAAW,GAAGD,kBACdrC,GACGrF,EAAAA,cAAA,OAAK2H,UAAW,GAAGD,0BACf1H,EAAAA,cAAA,QAAM2H,UAAW,0BAA0BD,8BAC3C1H,EAAAA,cAAA,QAAM2H,UAAW,GAAGD,uBAAsCrC,IAGjEiB,GACGtG,EAAAA,cAAA,OAAK2H,UAAW,GAAGD,wBACf1H,EAAAA,cAAA,QAAM2H,UAAW,iBAAiBD,sBAClC1H,EAAAA,cAAA,QAAM2H,UAAW,GAAGD,qBAAoCpB,KA5CnEzB,GAAYL,GAA4BH,EAAS8B,SAAlD,MAA6D5B,GAAAA,EAAyBuD,SAASzD,EAAS8B,SAEpGnG,EAAAA,cAAA,OAAK2H,UAAW,GAAGD,+BACf1H,EAAAA,cAAA,QAAM2H,UAAW,wBAAwBD,6BACzC1H,EAAAA,cAAA,KACI2H,UAAW,GAAGD,2BACdK,OAAO,SACPC,KAAM,GAAGvD,IAAUO,IACnBiD,IAAI,cAEHtH,EAAUuH,mBAKhB,MAkCNb,GACGrH,EAAAA,cAAA,OAAK2H,UAAW,GAAGD,iBACf1H,EAAAA,cAAA,KAAG2H,UAAW,GAAGD,uBAAsC/G,EAAUwH,kBApPrDC,EAC5BxF,EACAyB,EACA1D,KAGA,GAAIiC,SAAAA,EAAY2E,kBAAmB,CAC/B,MAAMrE,EAAsCD,EAAgBL,EAAW2E,kBAAmB5G,GAC1F,OACIX,EAAAA,cAAA,SAAO2H,UAAU,oDAAmD,aAAahH,EAAUwH,kBACvFnI,EAAAA,cAAA,SAAO2H,UAAU,WACb3H,EAAAA,cAAA,UAIIA,EAAAA,cAAA,MAAIqI,MAAM,OAAK,OACfrI,EAAAA,cAAA,MAAIqI,MAAM,OAAK,WAGvBrI,EAAAA,cAAA,aACKkD,EAAeoF,KAAIC,GAChBvI,EAAAA,cAAA,MAAI2H,UAAU,8CAA8Ca,IAAKC,KAAKC,UAAUH,IAC5EvI,EAAAA,cAAA,MAAI2H,UAAU,2CACTY,EAAYrG,YACTlC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAM2I,MAAOJ,EAAYtG,cAAesG,EAAYvG,eAAqB,IACzEhC,EAAAA,cAAA,QAAM2I,MAAOJ,EAAYpG,YAAaoG,EAAYrG,cAGtDlC,EAAAA,cAAA,QAAM2I,MAAOJ,EAAYtG,cAAesG,EAAYvG,gBAG5DhC,EAAAA,cAAA,MAAI2H,UAAU,4CAA4CY,EAAYnG,gBA4B9F,MAAMwG,EAAoC3I,EAAcoE,EAASmD,UAC3DqB,EAAkC5I,EAAcoE,EAASoD,QAE/D,OACIzH,EAAAA,cAAA,OAAK2H,UAAU,+CACViB,EAAa,IAAGC,EACf,EAmLOT,CAAiBxF,EAAYyB,EAAU1D,KAIlD,EC/RV,IAAamI,EAAb,cAAgD9I,EAAAA,cAO5C+I,YAAmB7E,GACf8E,MAAM9E,GA+CO,KAAA+E,eAAkBC,GAAiD,KAChFC,KAAKjF,MAAMkF,QAAQF,aAAe,EAAfA,EAAiBG,cAAc,EA8ErC,KAAAC,gBAAkB,KAC/B,MAAMC,EAAsBJ,KAAKK,oBAAoBC,QAC/CC,EAASH,aAAmB,EAAnBA,EAAqBI,cAChCJ,GAAuBG,IACnBA,EAAOE,UAAYL,EAAoBM,UACvCH,EAAOE,UAAYL,EAAoBM,UAChCN,EAAoBM,UAAYN,EAAoBO,aAAeJ,EAAOE,UAAYF,EAAOI,eACpGJ,EAAOE,UAAYL,EAAoBM,UAAYN,EAAoBO,aAAeJ,EAAOI,gBAwDxF,KAAAC,cAAiBpJ,IACvB,CACHwH,iBAAkBxH,EAAUqJ,SAC5BhH,WAAYrC,EAAUsJ,qBACtBrC,mBAAoBjH,EAAUiH,mBAC9BC,iBAAkBlH,EAAUkH,iBAC5BK,iBAAkBvH,EAAUuH,iBAE5BtH,KAAM,CACFC,OAAQF,EAAUuJ,qBAClBpJ,QAASH,EAAUwJ,sBACnBpJ,UAAWJ,EAAUyJ,wBACrBpJ,SAAUL,EAAU0J,uBACpBpJ,OAAQN,EAAU2J,qBAClBpJ,SAAUP,EAAU4J,uBACpBpJ,OAAQR,EAAU6J,qBAClBnJ,WAAYV,EAAU8J,yBACtBnJ,YAAaX,EAAU+J,0BACvBnJ,cAAeZ,EAAUgK,4BACzBnJ,aAAcb,EAAUiK,2BACxBnJ,WAAYd,EAAUkK,yBACtBnJ,aAAcf,EAAUmK,2BACxBnJ,WAAYhB,EAAUoK,4BAlN9B5B,KAAKK,oBAAsBxJ,EAAAA,YAC3BmJ,KAAK6B,aAAe,CACxB,CAEOC,mBAAmBC,GAClB/B,KAAKjF,MAAMiH,0BAA4BD,EAAcC,yBACrDhC,KAAKG,iBAEb,CAEO8B,oBACCjC,KAAKjF,MAAMmH,YACXlC,KAAKmC,QAAUnC,KAAKoC,YAAYpC,KAAKjF,MAAMmH,aAG/CG,EAAAA,EAAAA,KACI,IAAMrC,KAAKjF,MAAMmH,YACjB,KACQlC,KAAKjF,MAAMmH,YACXlC,KAAKmC,QAAUnC,KAAKoC,YAAYpC,KAAKjF,MAAMmH,cAI3D,CAEOI,SACH,OAAK5E,EAAAA,gBAAgBC,YAAYqC,KAAKmC,UAItCnC,KAAK6B,aAAe,EAGhBhL,EAAAA,cAAA,OAAK2H,UAAW+D,IAAW,oCAAqC,CAAEC,KAAMxC,KAAKjF,MAAM0H,cAAgBC,KAAK,QACnG1C,KAAKmC,QAAQhD,KAAI,CAACwD,EAAOxH,IACf6E,KAAK4C,qBAAqBD,EAAOxH,OARzC,IAYf,CAWQyH,qBAAqBD,EAAiCxH,GAAa,IAAA0H,EACvE,MAAM9C,EAAkB4C,SAA0B,QAArBE,EAALF,EAAOG,2BAAmB,IAAAD,OAAA,EAA1BA,EAA4BE,gBAC9Cf,EAA0BhC,KAAKjF,MAAMiH,wBAG3C,GAAIjC,EAEA,QADEC,KAAK6B,aAEHhL,EAAAA,cAAA,OACI2H,UAAW+D,IAAW,mCAAoC,CACtDS,SAAUhB,IAA4BjC,EAAgBG,gBAE1Db,IAAKlE,EACLuH,KAAK,WAAU,eACDhF,EAAAA,gBAAgBC,YAAYqC,KAAKmC,SAAWnC,KAAKmC,QAAQzF,OAVxD,EAUmF,gBACnFsD,KAAK6B,aACpB5B,QAASD,KAAKF,eAAeC,GAC7BkD,IAAKjB,IAA4BjC,EAAgBG,cAAgBF,KAAKK,yBAAsBrJ,GAE5FH,EAAAA,cAACiE,EAAsC,CACnCI,SAAU6E,EACVtG,WAAYkJ,EAAMO,WAClB1L,UAAWwI,KAAKY,cAAcZ,KAAKjF,MAAMvD,WACzCoD,sBAAuBoF,KAAKjF,MAAMH,sBAClCO,MAAO6E,KAAK6B,aAAasB,WACzBC,iBAAkBpD,KAAKjF,MAAMqI,iBAC7BvI,mBAAoBmF,KAAKjF,MAAMF,mBAC/BS,QAAS0E,KAAKjF,MAAMO,QACpBD,yBAA0B2E,KAAKjF,MAAMM,yBACrCD,wBAAyB4E,KAAKjF,MAAMK,wBACpCG,cAAc,+CAqBlC,CAOQ6G,YAAYiB,GAMhB,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OACrDxD,KAAKjF,MAAM0I,yBACXzD,KAAKjF,MAAM2I,2BACc,QAAzBF,EAAAD,EAAMT,2BAAmB,IAAAU,GAAiB,QAAjBA,EAAzBA,EAA2BT,uBAAe,IAAAS,OAAA,EAA1CA,EAA4CtD,iBAAkBF,KAAKjF,MAAM2I,wBAAwB,EAErG,MAAO,IAAIL,EAAO/F,OAAOgG,MAAsBD,EAAO/F,QAAOqF,IAAUW,EAAiBX,KAC5F,IAhIYgB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,8BADFjE,GAA0BgE,EAAAA,EAAAA,IAAA,CADtCE,EAAAA,IACYlE,wBCCP,MAAOmE,UAAgCjN,EAAAA,cAczC+I,YAAmB7E,GACf8E,MAAM9E,GAdO,KAAAgJ,aAAkDlN,EAAAA,YAClD,KAAAmN,iBAAoDnN,EAAAA,YAQ7D,KAAAoN,cAAwB,GAExB,KAAAC,sBAAgC,EAahC,KAAAC,0BAA4B,KAAK,IAAAC,EACJ,QAAjCA,EAAIpE,KAAKgE,iBAAiB1D,eAAO,IAAA8D,GAA7BA,EAA+BC,cAC/BC,OAAOC,SAAS,CAEZC,IAAKxE,KAAKgE,iBAAiB1D,QAAQ+D,aAAa3D,UAAY,GAC5D+D,SAAU,UAgFL,KAAAC,qBAAwBC,IAIrC,GAAIA,EAAMC,UAAYC,EAAAA,SAASC,SAAWH,EAAMC,UAAYC,EAAAA,SAASE,UAAW,CAC5E,MAAMC,EAAwBL,EAAM/F,OAA4BqG,aAAa,yBAC7E,GAAID,EAAsB,CACtB,GAA2B,KAAvBhF,KAAKiE,cAGL,OAFAjE,KAAKiE,cAAgBe,OACrBhF,KAAKkE,sBAAuB,GAI5Bc,IAAyBhF,KAAKiE,eAC9BjE,KAAKiE,cAAgBe,EACrBhF,KAAKkE,sBAAuB,GAE5BlE,KAAKkE,sBAAuB,KAoB3B,KAAAgB,mBAAqBC,UAClC,MAAMC,EAAqBT,EAAM/F,OAAO2E,YAElCvD,KAAKjF,MAAMsK,kBAAkBD,EAAW,EAOjC,KAAAE,UAAYH,UAAqD,IAAAI,EAC9EZ,EAAMa,iBACmB,QAAzBD,EAAAvF,KAAK+D,aAAazD,eAAO,IAAAiF,GAAzBA,EAA2BE,OACtBzF,KAAKkE,4BACAlE,KAAKjF,MAAM2K,cAAc1F,KAAKjF,MAAMwI,OAE9CvD,KAAKkE,sBAAuB,CAAK,EAWpB,KAAAyB,sBAAwB,CACrC5K,EACA6K,EACAC,EACAC,KAEA,MAAMC,EAAoBA,KACtB/F,KAAKmE,4BACLpJ,EAAMiL,0BAA0B,EAE9BC,EAAoBH,EAAoB,WAAa,YAC3D,OAAID,EAEIhP,EAAAA,cAAA,SAAAqP,OAAAC,OAAA,CACI3H,UAAW,uCAAuCyH,IAClDhG,QAAS8F,GACL/F,KAAKoG,yBAERR,GAIN,IAAI,EApLX5F,KAAKqG,MAAQ,CAAE9C,MAAO,IAEtB,MAAM+C,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASxL,EAAMqI,iBAAmBoD,EAAAA,kBAAkBC,aAC/FzG,KAAK0G,uBAAwBC,EAAAA,EAAAA,wBAAuB5L,EAAMqI,iBAAmBkD,GAC7EA,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkBM,aAEhDR,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkBO,cAChD/G,KAAKoG,yBAA0BO,EAAAA,EAAAA,wBAAuB5L,EAAMqI,iBAAmBkD,EACnF,CAWOhE,SACH,MACI9K,WAAW,sBAAEwP,EAAqB,sBAAEC,EAAqB,aAAEC,EAAY,YAAEC,EAAW,4BAAEC,GAA6B,GACnHC,EAAE,MACF9D,EAAK,cACL+D,EAAa,YAEb7E,EAAW,iBACX8E,EAAgB,mBAEhBC,EAAkB,YAClB3B,EAAW,iBACX4B,EAAgB,8BAChBC,GACA1H,KAAKjF,MAEH6K,EAAmBnD,EAAc0E,EAAcD,EAOrD,OACIrQ,EAAAA,cAAA,OAAK2H,UAAU,iCAAiCyE,IAAKjD,KAAKgE,kBACtDnN,EAAAA,cAAA,QACI2H,UAAU,sCAAqC,aACnCwI,EACZW,KAAK,0BACLC,aAAa,MACbC,SAAU7H,KAAKsF,UACf+B,GAAI,gDAAgDA,KAEpDxQ,EAAAA,cAAA,SACIiR,KAAK,OAAM,aACC9H,KAAKjF,MAAMvD,UAAUuQ,qBACjCvJ,UAAU,wDACVwJ,YAAaf,EACb1D,MAAOA,EACP0E,SAAUjI,KAAKkF,mBACfmC,GAAI,sCAAsCA,IAC1CpE,IAAKjD,KAAK+D,aACVrB,KAAK,WAAU,gBACD,QAAO,gBACP,qBACdwF,QAASlI,KAAK0E,uBAElB7N,EAAAA,cAAA,SAAAqP,OAAAC,OAAA,CACI3H,UAAW,yCAAwC8I,EAAgB,uBAAyB,IAAI,aACpFN,EACZmB,MAAM,WACFnI,KAAK0G,yBAGjB7P,EAAAA,cAAA,OAAK2H,UAAU,2DACVkJ,EACG7Q,EAAAA,cAACuR,EAAAA,EAAW,CACRN,KAAK,SACLT,GAAG,gBACHgB,QAASd,EACTU,SA1CmBtD,IACnC,MAAM2D,EAAY3D,EAAM/F,OAAOyJ,QAC/Bb,EAAmBc,EAAU,EAyCbC,MAAOnB,IAEX,KACHK,EACAzH,KAAK2F,sBAAsB3F,KAAKjF,MAAO6K,EAAkBC,EAAapD,IAIvF,EClJG,MAAM+F,EAAuEC,IAAA,IAAC,UAAEjR,GAAWiR,EAAA,OAC9F5R,EAAAA,cAAA,OAAK2H,UAAU,wCACX3H,EAAAA,cAAA,SAAIW,EAAUkR,oBACZ,EAGGC,EAAiCA,IAC1C9R,EAAAA,cAAA,OAAK2H,UAAW+D,IAAW,cAAe,gDASjCqG,EAA2EC,IAA2C,IAA1C,KAAEC,EAAI,eAAEC,EAAc,aAAEC,GAAcH,EAC3H,GAAIC,EAAM,CACN,MAAMG,EAAoC,CACtCC,UAAWJ,EAAKI,UAChB1K,UAAW,qCACX2K,SAAUL,EAAKK,SACfC,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnB5G,KAAM,QAGV,OACI7L,EAAAA,cAAA,OAAK2H,UAAU,kCACX3H,EAAAA,cAAC0S,EAAAA,GAAa,CAACT,KAAMG,EAAcO,UAAW,CAAER,eAAcD,qBAI1E,OAAO,IAAI,EAUFU,EAAoFC,IAM5F,IAN6F,UAC9FxH,EAAS,UACT1K,EAAS,iBACTmS,EAAgB,aAChBC,EAAY,mBACZC,GACHH,EACG,GAAIxH,EAAW,CACX,MAAM4H,EAAyB5H,EAAU5E,QAAOyM,IAAM,IAAAC,EAClD,QAA8B,QAAvBA,EAAAD,EAAIjH,2BAAmB,IAAAkH,GAAiB,QAAjBA,EAAvBA,EAAyBjH,uBAAe,IAAAiH,GAAa,QAAbA,EAAxCA,EAA0CvO,mBAAW,IAAAuO,IAArDA,EAAuDrO,WAAW,MAAoB,IAC9Fe,OACGuN,EAA4B/H,EAAUxF,OAASoN,EACrD,OACIjT,EAAAA,cAAA,OACI2H,UACIoL,EACM,0CACA,oDAAmDC,EAAqB,OAAS,SAG1FF,EACKnS,EAAU0S,iCACLnO,QAAQ,UAAWkO,EAAkB9G,YACrCpH,QAAQ,mBAAoB+N,EAAe3G,YAChD3L,EAAU2S,qBAAqBpO,QAAQ,UAAWkO,EAAkB9G,aAKtF,OAAO,IAAI,ECVTiH,EAA4BrP,GAA+BoK,gBACvDpK,EAAMsP,SAASC,wBAAwB,EAqEpCC,EA7DiBxP,IAAuD,IAAAyP,EAAAC,EACjF,MAAM,UACFjM,EAAS,sBACTkM,EAAqB,kBACrBC,EAAiB,UACjBC,EAAS,cACTC,EAAa,UACbrT,EAAS,mBACTqD,EAAkB,iBAClBuI,EAAgB,sBAChBxI,EAAqB,uBACrBkQ,GACA/P,EAEEwD,EAAkBC,GAAwB,8CAC1ChD,EAAgCqP,SAAkC,QAArBL,EAAbK,EAAe/H,2BAAmB,IAAA0H,GAAiB,QAAjBA,EAAlCA,EAAoCzH,uBAAe,IAAAyH,OAAA,EAAnDA,EAAqD/O,YACrFP,EAAW2P,SAAkC,QAArBJ,EAAbI,EAAe/H,2BAAmB,IAAA2H,OAAA,EAAlCA,EAAoC1H,gBAC/C/G,EAAuCtB,EAAoBQ,aAAQ,EAARA,EAAUe,SAAUrB,EAAuBC,GAEtGkQ,GAAqBL,GAAyBE,EAC9CtE,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASnD,EAAmBoD,EAAAA,kBAAkBwE,eACzF1E,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkByE,eAChD3E,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkB0E,qBAiChD,MA/B2C,CACvCJ,yBACAD,gBACAF,oBACAI,oBACAvT,YACA2T,iBAAkB,CACdC,IAAK,MACL5M,UAAW,GAAGD,WAElB8M,YAAa,CACTD,IAAK,MACL5M,UAAW,GAAGD,aAElB/C,UAAW3E,IAAAA,cAAA,QAAM2H,UAAW,GAAGD,wBAAuC/C,GACtE8P,wBAAyBzU,IAAAA,cAAC0U,EAAAA,OAAM,CAAC/M,UAAW,GAAGD,yBAAwC0B,QAASmK,EAAyBrP,KAEzHyQ,cAAexP,EAAmBnF,IAAAA,cAAA,QAAM2H,UAAW,GAAGD,4BACrD,IACAvC,GAA2B,GAC5ByP,kCAAmC,CAC/BL,IAAK,MACL5M,UAAW,GAAGD,gBAGlBmN,gBAAiB7U,IAAAA,cAAA,KAAG2H,UAAW,GAAGD,iCAAgD,IAClF8L,SAAU,CACNsB,WAAY5Q,EAAMsP,SAASsB,YAInB,ECpIb,IAAWC,EAAAA,KAAAA,IAAAA,EAAgB,KAC9B,cACAA,EAAA,0mBCkLJ,IAAMC,EAAN,cAA4BhV,EAAAA,UASxB+I,YAAmB7E,GAAwD,IAAA+Q,EACvEjM,MAAM9E,GA+XH,KAAAgR,oBAAsB,CAACnR,EAA+BkL,KAAoE,IAAA0E,EAC7H,MAAM,UACFhT,EACAwU,MACIC,2BAA6BC,OAAQD,GACrCE,gBAAkBD,OAAQC,KAE9BnM,KAAKjF,MAEHqR,EAAUH,EAA4BA,EAA0BG,aAAUpV,EAC1EgL,EAA0BiK,aAAyB,EAAzBA,EAA2BjK,wBAK3D,IAAIqK,EAAqBF,aAAc,EAAdA,EAAgBG,WACrC3J,IAAK,IAAAE,EAAA,OAA6B,QAAzBA,EAAAF,EAAMG,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4C3C,iBAAkB8B,CAAuB,IAGlG,MAAM6I,OAEqB7T,IAAvBqV,GAAoCF,IAA0C,IAAxBE,EAChDF,EAAeE,QACfrV,EAEJ+I,EAAkB8K,SAAkC,QAArBL,EAAbK,EAAe/H,2BAAmB,IAAA0H,OAAA,EAAlCA,EAAoCzH,gBACtDwJ,EAAyBvM,KAAKY,cAAcpJ,GAC5CgV,EAAaxM,KAAKjF,MAAMqR,QAAQK,QAAQC,IAAIC,WAAW9N,KACvDvD,EAAUkR,EAAWI,UAAU,EAAGJ,EAAWK,YAAY,KAAO,GAEtE,IAAK/G,GAAqB+E,GAAiB9K,EAAiB,CACxD,MAAM+M,OAA0C9V,IAAvBqV,GAAoCA,EAAqB,GAAGlJ,WAAa,GAC5F4J,EAAqC,CACvCpC,kBAAmB3K,KAAKgN,mBAAmBjN,EAAiBqM,aAAO,EAAPA,EAASa,yBACrEpC,gBACArT,UAAW+U,EACX1R,mBAAoBmF,KAAKqG,MAAMxL,mBAC/BuI,iBAAkBpD,KAAKoD,iBACvBxI,wBACAyP,SAAU,CACNsB,WAAY3L,KAAKkN,2BACjBC,sBAAuBnN,KAAKoN,mBAC5BC,uBAAwBrN,KAAKsN,sBAC7BhD,uBAAwBtK,KAAKuN,wBAEjCzC,uBACIjU,EAAAA,cAACiE,EAAsC,CACnCI,SAAU6E,EACVtG,WAAYoR,EAAc3H,WAC1B1L,UAAWwI,KAAKY,cAAcZ,KAAKjF,MAAMvD,WACzCoD,sBAAuBA,EACvBO,MAAO2R,EACP1J,iBAAkBpD,KAAKoD,iBACvBvI,mBAAoBmF,KAAKqG,MAAMxL,mBAC/BS,QAASA,EACTD,yBAA0B2E,KAAKjF,MAAMyS,OAAOC,sBAC5CrS,wBAAyB4E,KAAKjF,MAAMyS,OAAOE,uBAC3CnS,cAAc,uDAK1B,OAAOgP,EAAuBwC,GAGlB,EAOb,KAAAY,qBAAwBhJ,IACvB3E,KAAKjF,MAAMyS,OAAOI,qBAClB5N,KAAKjF,MAAMyS,OAAOI,mBAAmBzE,SAAWxE,EAAM/F,OAAO2E,QAQ9D,KAAAsK,oBAAuBlJ,IAC1B3E,KAAKjF,MAAMyS,OAAOM,QAAUnJ,EAAM/F,OAAO2E,KAAK,EAMjC,KAAAwK,uBAAyB,KACtC/N,KAAKgO,4BAA2B,GAChChO,KAAKiO,SAAS,CAAEC,wBAAoBlX,GAAY,EAMnC,KAAAmX,0BAA6BC,IAC1CpO,KAAKiO,SAAS,CAAE1G,iBAAkB6G,IAClCpO,KAAKgO,4BAA4B,EASpB,KAAAK,kBAAoB,CAAChL,EAAoC6K,IAC/D7K,EAAO/F,QAAOpC,IAAW,IAAAoT,EAC5B,OAA0C,QAA1CA,EAAOpT,EAASqT,kCAA0B,IAAAD,GAAiB,QAAjBA,EAAnCA,EAAqCE,uBAAe,IAAAF,OAAA,EAApDA,EAAsDG,MAAKC,GACvDA,EAAeC,OAAST,GACjC,IAiEO,KAAAU,sBAAwBzJ,UACrC,MACIqI,QAAQ,mBAAEqB,GACVzC,SAAS,UACL0C,EACAC,eACIhG,gBAAgB,QAAEiG,KAG1BhD,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAELkR,SAAAA,EAA2BgD,iBAAmBjP,KAAKkP,oBACnDC,UAAUC,KAAKC,WAAW,6BAA8B,CAIpDC,SAAUA,KACN,MAAMC,EAAOC,EAAAA,EAAA,GAAQX,GAAkB,IAAEY,YAAaT,aAAO,EAAPA,EAASU,8BAC/D1P,KAAKkP,mBAAqB,IAAIC,UAAUC,KAAKO,mBAAmBJ,GAChEvP,KAAKkP,mBAAmBU,kBACpB,uCAAuC5P,KAAKjF,MAAMsM,KAClD,iDAAiDrH,KAAKjF,MAAMsM,KAC5DrH,KAAK6P,sBACR,EAMLC,cAAeA,KACPhB,GACAA,EAAUiB,MAAM,uCAGxBC,YAAahB,aAAO,EAAPA,EAASiB,kBASjB,KAAAJ,sBAAwB1K,UAAkE,IAAA+K,EACvG,MAAM9D,EAA0D,QAAnD8D,EAAGlQ,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAgE,OAAA,EAAhDA,EAAkD9D,QAC9DA,GAAWA,EAAQ/E,KAAOrH,KAAKjF,MAAMsM,WAC/BrH,KAAKmQ,mBAAmBjE,EAAOkE,2BAC/BpQ,KAAKqQ,eAAenE,EAAOkE,uBAQxB,KAAAhD,mBAAqBjI,UAAqD,IAAAmL,EAAAC,EAAAC,EACvF,IAAKC,EACD,OAGJ,MACIrE,SACI2C,eACIhG,gBAAgB,QAAE2H,KAG1B1E,MACIC,2BAA6BC,OAAQD,GACrCE,gBAAkBD,OAAQC,GAC1BwE,yBAA2BzE,OAAQyE,KAEvC3Q,KAAKjF,MAET,IAAKkR,EACD,OAGJ,IAAI5I,EAEAA,EADA8I,GAGSwE,EAGb,MAAMC,EAAiBvN,EAAOxF,MAAK8E,IAAK,IAAAkO,EAAA,OAA6B,QAAzBA,EAAAlO,EAAMG,2BAAmB,IAAA+N,GAAiB,QAAjBA,EAAzBA,EAA2B9N,uBAAe,IAAA8N,OAAA,EAA1CA,EAA4C3Q,iBAAkBuQ,CAAO,UAE3GxE,EAA0B6E,0BAC5BL,EACAG,SAAmC,QAArBN,EAAdM,EAAgB9N,2BAAmB,IAAAwN,GAAiB,QAAjBA,EAAnCA,EAAqCvN,uBAAe,IAAAuN,OAAA,EAApDA,EAAsD7U,YACtDiV,EAAQK,iBACRH,SAAmC,QAArBL,EAAdK,EAAgB9N,2BAAmB,IAAAyN,GAAiB,QAAjBA,EAAnCA,EAAqCxN,uBAAe,IAAAwN,OAAA,EAApDA,EAAsDS,SACtDJ,SAAmC,QAArBJ,EAAdI,EAAgB9N,2BAAmB,IAAA0N,GAAiB,QAAjBA,EAAnCA,EAAqCzN,uBAAe,IAAAyN,OAAA,EAApDA,EAAsDS,UACzD,EAMY,KAAA3D,sBAAwBnI,UACrC,MACIiH,SACI2C,eACIhG,gBAAgB,QAAE2H,KAG1B1E,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAEJkR,SAICA,EAA0BiF,oBAAoBR,EAAQK,iBAAiB,EAOhE,KAAAxD,uBAAyBpI,UACtC,MAAM8G,EAA4BjM,KAAKjF,MAAMiR,KAAKC,0BAA0BC,aACtED,aAAyB,EAAzBA,EAA2BkF,gCAA2Bna,GAAU,EAOzD,KAAAoa,kBAAoBjM,UACjC,MACI6G,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAEJkR,SAICA,EAA0BkF,2BAA2BV,EAAQ,EAOtD,KAAAJ,eAAiBlL,UAC9B,MACIiH,SAAS,cAAE2C,GACX/C,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAET,IAAKkR,EACD,OAGJ,IAAKoF,EAED,YADArR,KAAKgO,6BAKThO,KAAKiO,SAAS,CAAEqD,oBAAoB,IAEpC,MAAMpW,QAAiB+Q,EAA0BsF,UAAgC,KAAtBF,EAAW/U,OAAgB+U,EAAa,IAAKtC,GAEpG7T,QACM8E,KAAKwR,iBAAiBtW,EAASuW,SAAUvW,EAASwW,iBAElD1R,KAAKwR,iBAAiB,EAAG,GAInCxR,KAAKiO,SAAS,CAAEqD,oBAAoB,GAAQ,EAO/B,KAAAnB,mBAAqBhL,UAClCnF,KAAKiO,SAAS,CAAEoD,cAAa,EAOhB,KAAArD,2BAA8B2D,IAAuC,IAAAC,EAElF5R,KAAKiO,SAAS,CAAEqD,oBAAoB,IAEvB,QAAbM,EAAIC,iBAAS,IAAAD,GAATA,EAAWE,YACXD,UAAUC,YAAYC,oBAClB5M,UAEInF,KAAKiO,SAAS,CAAEpT,oBAAoB,EAAOyW,oBAAoB,UACzDtR,KAAKwR,iBAAiBQ,EAASC,OAAOR,SAAUO,EAASC,OAAOP,WAGtE1R,KAAKiO,SAAS,CAAEqD,oBAAoB,GAAQ,IAEhDnM,UAEQ+M,EAAMC,oBACNnS,KAAKiO,SAAS,CAAEpT,oBAAoB,EAAMuX,oBAAoB,UACxDpS,KAAKmQ,mBAAmB,UACxBnQ,KAAKwR,iBAAiB,EAAG,IAInCxR,KAAKiO,SAAS,CAAEqD,oBAAoB,GAAQ,GAEhD,CAAEe,QAAS,MAIfrS,KAAKiO,SAAS,CAAEqD,oBAAoB,KAQ3B,KAAAgB,aAAenN,UAC5B,MACI6G,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAIsB,IAAAwX,EAA/B,GAFAvS,KAAKiO,SAAS,CAAEoD,WAAY,KAExBpF,EAEA,OADiC,QAAjCsG,EAAAtG,EAA0BG,eAAO,IAAAmG,GAAkB,QAAlBA,EAAjCA,EAAmCC,wBAAgB,IAAAD,GAAS,QAATA,EAAnDA,EAAqDjS,eAAO,IAAAiS,GAA5DA,EAA8DE,QACvDxG,EAA0ByG,eASxB,KAAAC,4BAA8BxN,UAC3C,MACI6G,MACIC,2BAA6BC,OAAQD,IACxC,UACD6C,GACA9O,KAAKjF,MAET,IAAKkR,EACD,OAGJ,MAAMG,EAAUH,EAA0BG,QACpCwG,EAAmBxG,SAAAA,EAAS/E,GAAK+E,EAAQ/E,GAAKrH,KAAKjF,MAAMsM,GAC/D,IAAIwL,EAAqC,CAKrCC,mBAAoB3N,SAET4N,QAAQC,WAInB/G,EAA0BG,UAC1ByG,EAAQ5G,EAA0BG,SAGtC,MAAMwE,EAAyC3E,EAA0B2E,eACnEqC,EAAsBrC,SAAAA,EAAgBsC,QAAUtC,EAAesC,QAAU,GACzEC,EAAoBnT,KAAKoC,YAAYgR,EAAyBpT,KAAKyD,wBAAyBwP,GAElGJ,EAAKrD,EAAAA,EAAA,GACEqD,GAAK,IACRxL,GAAIuL,EACJS,gBAAiBjH,aAAO,EAAPA,EAASiH,gBAC1Bb,iBAAkBpG,aAAO,EAAPA,EAASoG,iBAC3Bc,UAAU,EACVF,wBAAyBD,EACzBI,QAASnH,aAAO,EAAPA,EAASmH,gBAGhBtH,EAA0BuH,2BAA2BX,GAAOY,OAAOvB,IACjEpD,IACAA,EAAUoD,MAAMA,EAAMwB,SACtB5E,EAAUiB,MAAM,4CAEtB,EAUW,KAAAyB,iBAAmBrM,MAAOsM,EAAmBC,EAAoB/H,KAA6C,IAAAlB,EAC3H,MACI+E,QAAQ,iBAAE5B,GACVI,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAEH4Y,EAAiE,QAAlDlL,EAAGkB,QAAAA,EAAoB3J,KAAKqG,MAAMkB,wBAAgB,IAAAkB,GAAAA,EAEjEmL,EAAoBhI,IAAqBiI,EAAiBC,WAAa,EAAI,EAC3ElD,EAAyC3E,aAAyB,EAAzBA,EAA2B2E,eAC1E,IAAImD,EAAgB/T,KAAKqG,MAAMgL,YAAeT,UAAAA,EAAgBI,SAAWS,EAAWb,EAAeI,SAC/FgD,EAAOhU,KAAKqG,MAAMgL,YAAeT,UAAAA,EAAgBK,UAAYS,EAAYd,EAAeK,UAC5F,MAAMgD,EAA0BhI,aAAyB,EAAzBA,EAA2BiI,yBACvDD,IAA4BjU,KAAKqG,MAAMgL,aACvC0C,EAAgBE,EAAwBjD,SAAWiD,EAAwBjD,SAAW+C,EACtFC,EAAOC,EAAwBhD,UAAYgD,EAAwBhD,UAAY+C,SAE7E/H,aAAyB,EAAzBA,EAA2BkI,uBAAuBJ,EAAeC,UAEjEhU,KAAKoU,yBAAyBT,EAZlB,EAY8CC,EAAmBG,EAAeC,EAC5F,EAWO,KAAAI,yBAA2BjP,MACxCwE,EACA0K,EACAT,EACAnC,EACAC,KAEA,MACItF,SAAS,cAAE2C,IACX/O,KAAKjF,MACHuZ,EAAwB,IAAIC,EAAAA,+BAC9B5K,EACA8H,EACAC,EACA2C,EACAT,EACA5T,KAAKqG,MAAMxL,oBAGT2Z,QAAyBC,EAAAA,EAAAA,qCAAoCH,EAAuBvF,GACtFyF,UACMxU,KAAK2S,4BAA4B6B,SACjCxU,KAAKoR,uBAAkBpa,KAUpB,KAAAkW,2BAA6B/H,MAAOjK,EAAuCwZ,KACxF,MAAM,UACF5F,EACA9C,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MAELkR,IACI/Q,GAAY+Q,EAA0BG,eAEhCH,EAA0BG,QAAQ0G,mBAAmB5X,EAAUwZ,GAAcjB,OAAMvB,IACrFpD,EAAU6F,QAAQzC,GAClBpD,EAAUoD,MAAMA,EAAMwB,SACtB5E,EAAUiB,MAAM,8CAA8C,UAIhE9D,EAA0ByG,gBA+DvB,KAAA9R,cAAiBpJ,IACvB,CACHwH,iBAAkBxH,EAAUqJ,SAC5BhH,WAAYrC,EAAUsJ,qBAEtBpC,iBAAkBlH,EAAUkH,iBAC5BD,mBAAoBjH,EAAUiH,mBAC9BM,iBAAkBvH,EAAUuH,iBAE5BtH,KAAM,CACFC,OAAQF,EAAUuJ,qBAClBpJ,QAASH,EAAUwJ,sBACnBpJ,UAAWJ,EAAUyJ,wBACrBpJ,SAAUL,EAAU0J,uBACpBpJ,OAAQN,EAAU2J,qBAClBpJ,SAAUP,EAAU4J,uBACpBpJ,OAAQR,EAAU6J,qBAClBnJ,WAAYV,EAAU8J,yBACtBnJ,YAAaX,EAAU+J,0BACvBnJ,cAAeZ,EAAUgK,4BACzBnJ,aAAcb,EAAUiK,2BACxBnJ,WAAYd,EAAUkK,yBACtBnJ,aAAcf,EAAUmK,2BACxBnJ,WAAYhB,EAAUoK,4BAKjB,KAAAoL,mBAAqB,CAAC9R,EAAuC0Z,IACzEA,GAAoB1Z,GAAY0Z,EAAiB1U,gBAAkBhF,EAASgF,gBAAkB,EAhhC/FF,KAAKqG,MAAQ,CACTiL,oBAAoB,EACpBD,WAAY,GACZe,oBAAoB,EACpBlE,wBAAoBlX,EACpBuQ,iBAA2D,QAA3CuE,EAAE9L,KAAKjF,MAAMyS,OAAOqH,+BAAuB,IAAA/I,GAAAA,GAE/D9L,KAAKoD,kBAAmB0R,EAAAA,EAAAA,oBACpB9U,KAAKjF,MAAMqR,QAAQK,QAAQsI,kBAC3B/U,KAAKjF,MAAMia,aACXhV,KAAKjF,MAAM+T,WAEf9O,KAAK6B,aAAe,CACxB,CAEOsD,0BAAuB,IAAA8P,EAC1B,MACI7I,SACI2C,eACIhG,gBAAgB,QAAEiG,KAG1BxB,QAAU0H,sBAAuBC,IACjCnV,KAAKjF,MA4ByD,IAAAqa,GAzBlEC,YAAW,KACPrV,KAAKgO,4BAA4B,GAClC,IAEH3L,EAAAA,EAAAA,KACI,SAAAiT,EAAA,OAAsD,QAAtDA,EAAMtV,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAoJ,OAAA,EAAhDA,EAAkDC,YAAY,IACpEpQ,UAAW,IAAAqQ,EACP,MAAMpJ,EAA0D,QAAnDoJ,EAAGxV,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAsJ,OAAA,EAAhDA,EAAkDpJ,SAC9DA,aAAO,EAAPA,EAAS/E,MAAOrH,KAAKjF,MAAMsM,IAC3BrH,KAAKgO,iCAKjB3L,EAAAA,EAAAA,KACI,SAAAoT,EAAA,OAAsD,QAAtDA,EAAMzV,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAuJ,GAAS,QAATA,EAAhDA,EAAkDrJ,eAAO,IAAAqJ,OAAA,EAAzDA,EAA2DpO,EAAE,IACnElC,UAAW,IAAAuQ,EACP,MAAMtJ,EAA0D,QAAnDsJ,EAAG1V,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAwJ,OAAA,EAAhDA,EAAkDtJ,QAC7DA,GAAWA,EAAQ/E,KAAOrH,KAAKjF,MAAMsM,WAChCrH,KAAKmQ,mBAAmB,IAC9BnQ,KAAKgO,iCAKmC,QAApDiH,EAAIjV,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAA+I,GAAhDA,EAAkDU,mBAC5C3V,KAAKjF,MAAMiR,KAAKC,0BAA0BC,OAAOyJ,WAAW,CAC9DtW,IAAK2P,SAAAA,EAAS4G,gBAAkB5G,EAAQiB,eAAiB,GACzD4F,KAAM7V,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eAAe+M,OACtDC,OAA0B,QAApBX,EAAEpV,KAAKjF,MAAMqR,eAAO,IAAAgJ,GAAe,QAAfA,EAAlBA,EAAoBrG,qBAAa,IAAAqG,GAAgB,QAAhBA,EAAjCA,EAAmCrM,sBAAc,IAAAqM,GAAS,QAATA,EAAjDA,EAAmDpG,eAAO,IAAAoG,OAAA,EAA1DA,EAA4D1F,+BAI5ErN,EAAAA,EAAAA,KACI,SAAA2T,EAAA,OAAsD,QAAtDA,EAAMhW,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAA8J,OAAA,EAAhDA,EAAkDL,UAAU,IAClE,KAAK,IAAAM,EAAAC,EAC+C,QAAhDD,EAAAjW,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAA+J,GAAhDA,EAAkDN,WAAW,CACzDtW,IAAK2P,SAAAA,EAAS4G,gBAAkB5G,EAAQiB,eAAiB,GACzD4F,KAAM7V,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eAAe+M,OACtDC,OAA+D,QAAzDG,EAAElW,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eAAeiG,eAAO,IAAAkH,OAAA,EAAvDA,EAAyDxG,6BACnE,KAIVrN,EAAAA,EAAAA,KACI,IAAMrC,KAAKjF,MAAMiR,KAAK2E,wBAAwBzE,SAC9C/G,UAAW,IAAAgR,EACP,GAAoD,QAApDA,EAAInW,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAiK,GAAhDA,EAAkDZ,aAAc,CAChE,MAAMpC,EAAoBnT,KAAKjF,MAAMiR,KAAK2E,wBAAwBzE,OAC9DiH,SACMnT,KAAK2S,4BAA4BQ,OAMnDgC,IACAiB,EAAAA,EAAAA,KACI,KAAK,IAAAC,EAAAC,EAAAC,EACD,MAAMtH,IAAmE,QAAjDoH,EAACrW,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAmK,IAAhDA,EAAkDpH,gBACrEsG,IAAiE,QAAjDe,EAACtW,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAoK,IAAhDA,EAAkDf,cACnEiB,GAAgE,QAAhDD,EAAAvW,KAAKjF,MAAMiR,KAAKC,0BAA0BC,cAAM,IAAAqK,GAAS,QAATA,EAAhDA,EAAkDnK,eAAO,IAAAmK,OAAA,EAAzDA,EAA2DlP,MAAOrH,KAAKjF,MAAMsM,GACnG,OAAO4H,GAAkBsG,GAAgBiB,CAAa,IAE1D,KACInB,YAAWlQ,gBACDnF,KAAK4O,uBAAuB,GACnC,EAAE,GAIrB,CAEO6H,wBACH,MACIzK,MACIC,2BAA6BC,OAAQD,KAEzCjM,KAAKjF,MACHqR,EAAUH,EAA4BA,EAA0BG,aAAUpV,EAChF,SAAIoV,GAAWA,EAAQ/E,KAAOrH,KAAKjF,MAAMsM,GAI7C,CAeO/E,SAAM,IAAAoU,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACItJ,QAAQ,mBACJI,EAAkB,UAClBpP,EAAS,QACTsP,EAAO,8BACPpG,EAA6B,iBAC7BkE,EAAgB,uBAChB8B,EAAsB,sBACtBD,GAEJrB,SAAS,UACL0C,EACAiI,KAAOvJ,OAAQwJ,GACfjI,eACIhG,gBAAgB,QAAEiG,KAG1BiI,OAASC,KAAMC,GAAS,UACxB3f,EACAwU,MACIC,2BAA6BC,OAAQD,GACrCE,gBAAkBD,OAAQC,KAE9BnM,KAAKjF,MAETiF,KAAK6B,aAAe,EACpB,MAAMuV,GAAkBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAASpL,QAASpM,KAAKjF,MAAMqR,QAAQK,UACvFgL,EAAqC,OAApBL,GAAgD,OAApBA,EAE7C9P,IAAkB0H,SAAAA,EAASiB,gBAAkBjB,EAAQ4G,iBACrDxJ,EAAUH,EAA4BA,EAA0BG,aAAUpV,EAC1Eue,IAAwBtJ,IACxBA,EAA0BsJ,eAAgBnJ,aAAO,EAAPA,EAAS/E,MAAOrH,KAAKjF,MAAMsM,IAErErF,EAA0BiK,aAAyB,EAAzBA,EAA2BjK,wBACrD4O,EAAyC3E,aAAyB,EAAzBA,EAA2B2E,eACpE9K,EAAoBmG,SAA2C,QAAlByK,EAAzBzK,EAA2ByL,wBAAgB,IAAAhB,OAAA,EAA3CA,EAA6CjU,YACjEkV,EACFvL,SAAwCpV,IAA5BoV,EAAQiH,iBAAiCjH,EAAQiH,mBAAoBpH,aAAyB,EAAzBA,EAA2B2L,mBAE1GC,EAAuB,CACzB1S,qCACU8G,aAAyB,EAAzBA,EAA2B6L,yBACrC,GAGC9I,SAAAA,EAASiB,gBACVnB,EAAUoD,MAAM,8BAGpB,MAAM6F,EAAgBjK,GAAoBtW,EAAUwgB,uBAC9Cpd,EACFgR,IAAqBiI,EAAiBC,WAAatc,EAAUygB,oBAAsBzgB,EAAU0gB,eACjG,IAAI/E,EAA4DhH,EAGhE,MAAMc,EAA0Bb,EAAUA,EAAQa,6BAA0BjW,EACxEgJ,KAAKqG,MAAM6H,oBAAsBiF,IACjCA,EAAoBnT,KAAKqO,kBAAkB8E,EAAmBnT,KAAKqG,MAAM6H,qBAE7E,MAAMiK,EAAoBnY,KAAKoY,2BAC3BpW,EACiB,QADM2U,EACvBxD,SAAiB,IAAAwD,EAAAA,EAAI,KACrB/b,EACAqS,GAGEoL,EACFxhB,EAAAA,cAAC4S,EAAkC,CAC/BjS,UAAWA,EACX0K,UAAWiR,EACXxJ,iBAA6C,QAA7BiN,EAAE5W,KAAKqG,MAAMkB,wBAAgB,IAAAqP,GAAAA,EAC7ChN,cAAc,EACdC,oBAAoB,IAGtByO,EAAa5a,EAAAA,gBAAgBC,YAAYwZ,GACzCoB,EACF1hB,EAAAA,cAAC4S,EAAkC,CAC/BjS,UAAWA,EACX0K,UAAWiR,EACXxJ,iBAA6C,QAA7BkN,EAAE7W,KAAKqG,MAAMkB,wBAAgB,IAAAsP,GAAAA,EAC7CjN,cAAc,EACdC,mBAAoB/D,SAAAA,IAKtBxK,EAAU,GAFS0E,KAAKjF,MAAMqR,QAAQK,QAAQC,IAAIC,WAAW6L,SACxCxY,KAAKjF,MAAMqR,QAAQK,QAAQgM,YAGhDC,EAASlJ,EAAAA,EAAA,GACPxP,KAAKjF,OAA2D,IACpEsL,MAAOrG,KAAKqG,MACZ6Q,KAAMoB,EAAanB,EAAQ,QAAKngB,EAEhC2hB,YAAa,CACTvN,IAAK,MACLwN,YAAa5Y,KAAKjF,MAClByD,UAAWqa,IAAU,yBAA0Bra,EAT/B,IAUhBsa,WAAW,EACXC,MAAM,EACNC,OAAQzD,EACR,aAAcwC,EACdkB,SAAUjZ,KAAKsS,aACf4G,mBAAoB,SACpBC,iBAAkB,SAClBC,OAAQpZ,KAAKsS,cAEjB+G,aAAc5B,EACd6B,qBAAsB,CAClBlO,IAAK,MACL5M,UAAW,iCACX4a,OAAQpZ,KAAKsS,cAEjBiH,YAAaxB,GACTlhB,EAAAA,cAAC0S,EAAAA,GAAa,CACV/K,UAAU,mBAEV4M,IAAI,KACJoO,KAAMzB,EACNvO,UAAW,CAAEiQ,OAAQzZ,KAAK6N,oBAAqB9E,eAAgB/I,KAAKjF,MAAMqR,QAAQK,WAG1FiN,qBAAsB,CAClBtO,IAAK,MACL5M,UAAW,mCAAmCsH,EAAsC,GAAlB,kBAEtE6T,yBAA0B,CACtBvO,IAAK,MACL5M,UAAW,uCAAuCsH,EAAsC,GAAlB,kBAE1E8T,uCAAwC,IAAI9T,EAAyE,GAArD,oDAChE+T,mBAAoB,CAChBzO,IAAK,MACL5M,UAAW,gCAEfsb,iBAAkB,CACd1O,IAAK,MACL5M,UAAW,wCAEfub,0BAA2B,CACvB3O,IAAK,MACL5M,UAAW,2CAEfwb,kBAAmB,CACf5O,IAAK,MACL5M,UAAW,yCAEfyb,kBAAmB,CACf7O,IAAK,MACL5M,UAAW,uDACPwD,GAA2BuT,IAAiBzP,EAAoB,OAAS,SAGjF2B,iBAAkB8Q,EAClB3D,iBAAkB5U,KAAK+L,oBAAoBnR,EAAuBkL,GAClEoU,OACIrjB,EAAAA,cAACiN,EAAuB,CACpBP,MAAOvD,KAAKqG,MAAMgL,YAAc,GAChC7Z,UAAWA,EACXkO,cAAe1F,KAAKqQ,eACpBhL,kBAAmBrF,KAAKmQ,mBACxBzI,8BAA+BA,SAAAA,EAC/BJ,cAAeA,EACf6S,eAAe,EACf5S,iBAAkBvH,KAAKqG,MAAMkB,iBAC7BF,GAAIrH,KAAKjF,MAAMsM,GACf+S,gBAAiBpa,KAAK+N,uBACtBvG,mBAAoBxH,KAAKmO,0BACzBnI,yBAA0B6R,EAAqBC,uBAC/CrV,YAAaqD,EACbD,YAAa8R,EACbvU,iBAAkBpD,KAAKoD,iBACvBqE,iBAAkB4Q,IAG1BgC,QAASxjB,EAAAA,cAAC8R,EAAoB,MAC9B2R,cAAe5c,EAAAA,gBAAgBC,YAAYwV,GACvCtc,EAAAA,cAAC8I,EAA0B,CACvBuC,UAAWiR,EACX3b,UAAWA,EACXoD,sBAAuBA,EACvBqS,wBAAyBb,EAAUA,EAAQa,6BAA0BjW,EAErEujB,oBAAqBvD,EAAUuD,qBAAuB,EAEtDC,sBAAuBxD,EAAUyD,mBAAoB,EACrD3H,mBAAoB9S,KAAKkN,2BACzBlL,wBAAyBA,EACzB/B,QAASD,KAAKoR,kBACd1N,yBAA0BkN,SAAAA,EAAgBsC,QAAUtC,EAAesC,QAAU,GAC7E/F,sBAAuBnN,KAAKoN,mBAC5BC,uBAAwBrN,KAAKsN,sBAC7B7J,wBAAyBzD,KAAKyD,wBAC9BhB,YAAaqD,EACb1C,iBAAkBpD,KAAKoD,iBACvBvI,mBAAoBmF,KAAKqG,MAAMxL,mBAC/B6f,6BAA8BzO,SAAkC,QAAT6K,EAAzB7K,EAA2BG,eAAO,IAAA0K,GAAiB,QAAjBA,EAAlCA,EAAoC6D,uBAAe,IAAA7D,OAAA,EAAnDA,EAAqDtI,gBACnFN,mBAAoBlO,KAAKqG,MAAM6H,mBAC/B0M,iBAAiB,EACjBtf,QAASA,EACTD,yBAA0BoS,SAAAA,EAC1BrS,wBAAyBsS,SAG7B1W,EAEJ6jB,mBAAoBhkB,EAAAA,cAAC2R,EAAyB,CAAChR,UAAWA,IAC1DsjB,MACIjkB,EAAAA,cAAC+R,EAA2B,CACxBE,KAAM8E,EACN5E,aAAchJ,KAAK2N,qBACnB5E,eAAgB/I,KAAKjF,MAAMqR,QAAQK,UAK3CsO,WAAYlkB,EAAAA,cAAA,YAAOiX,GAAoBtW,EAAUwgB,wBACjDgD,cAAe7H,EACfgF,oBACA8C,UAAW,CACP5V,kBAAmBrF,KAAKmQ,mBACxBzK,cAAe1F,KAAKqQ,eACpBqC,YAAa1S,KAAKsS,aAClBsC,iBAAkB5U,KAAKkN,2BACvBgO,yBAA0B/V,UACtBnF,KAAKgO,6BACE+E,QAAQC,WAEnBmI,qBAAsBnb,KAAK4O,sBAC3BwM,qBAAsBpb,KAAKkN,2BAC3BmO,kBAAmBrb,KAAKoN,mBACxBkO,qBAAsBtb,KAAKsN,sBAC3BiO,iBAAkBvb,KAAKoR,kBACvBoC,2BAA4BxT,KAAK2S,+BAIzC,OAAO3S,KAAKjF,MAAMygB,WAAW9C,EACjC,CAyIQtW,YACJiB,EACAI,EACAC,GAEA,MAAMJ,EAAoBC,IAA+B,IAAAC,EAAA,OACrDC,GACAC,IACyB,QAAzBF,EAAAD,EAAMT,2BAAmB,IAAAU,GAAiB,QAAjBA,EAAzBA,EAA2BT,uBAAe,IAAAS,OAAA,EAA1CA,EAA4CtD,iBAAkBwD,CAAwB,EAE1F,MAAO,IAAIL,EAAO/F,OAAOgG,MAAsBD,EAAO/F,QAAOqF,IAAUW,EAAiBX,KAC5F,CAeQyV,2BACJpW,EACAqB,EACAzI,EACAqS,GAEA,MAAMwO,EAAmD,GAezD,OAdI/d,EAAAA,gBAAgBC,YAAY0F,IAC5BA,EAAOlE,KAAI,CAACwD,EAAOxH,KACf,MAAMugB,EAAiB1b,KAAK2b,yBACxBhZ,EACAxH,EACA6G,EACApH,EACAqS,GAEAyO,GACAD,EAAUhhB,KAAKihB,MAIpBD,CACX,CAgaQE,yBACJhZ,EACAxH,EACA6G,EACApH,EACAqS,GAAyC,IAAA2O,EAEzC,MAAM7b,EAA2C,QAA5B6b,EAAGjZ,EAAMG,2BAAmB,IAAA8Y,OAAA,EAAzBA,EAA2B7Y,gBAC7C8Y,EAAwB7Z,EACxB8Z,EAAgB9b,KAAKY,cAAcZ,KAAKjF,MAAMvD,WAC9CiI,EAAoC3I,EAAciJ,aAAe,EAAfA,EAAiB1B,UACnEqB,EAAkC5I,EAAciJ,aAAe,EAAfA,EAAiBzB,QACjE7E,EAAakJ,EAAMO,WAEzB,GAAInD,EAEA,QADEC,KAAK6B,aACA,CACH3G,SAAU6E,EACViC,wBAAyB6Z,EACzBpiB,aACAjC,UAAWskB,EACXlhB,sBAAuBA,EACvB+P,kBAAmB3K,KAAKgN,mBAAmBjN,EAAiBkN,GAC5D9R,MAAO6E,KAAK6B,aAAasB,WACzBC,iBAAkBpD,KAAKoD,iBACvBvI,mBAAoBmF,KAAKqG,MAAMxL,mBAC/BkhB,aAAc,CAAEC,SAAUvc,EAAewc,OAAQvc,GACjD3F,eAAgBN,SAAAA,EAAY2E,kBAAoBtE,EAAgBL,EAAW2E,kBAAmB0d,GAAiB,GAC/G7b,QAASD,KAAKoR,kBACd/G,SAAU,CACNsB,WAAY3L,KAAKkN,2BACjBC,sBAAuBnN,KAAKoN,mBAC5BC,uBAAwBrN,KAAKsN,sBAC7BhD,uBAAwBtK,KAAKuN,wBAK7C,GA3/BE1B,GAAalI,EAAAA,EAAAA,IAAA,CADlBE,EAAAA,IACKgI,GAkiCN,kGC/sCA,MAiJA,EAtDsE9Q,IAClE,MAAM,qBACF2e,EAAoB,yBACpBC,EAAwB,qBACxBL,EAAoB,YACpBC,EAAW,YACXZ,EAAW,MAEXmC,EAAK,mBACLjB,EAAkB,iBAClBpS,EAAgB,OAChByS,EAAM,MACN7T,EAAK,QACLgU,EAAO,cACPC,EAAa,mBACbO,EAAkB,KAClB3D,EAAI,iBACJ4C,EAAgB,0BAChBC,EAAyB,kBACzBC,EAAiB,kBAEjBC,EAAiB,iBACjBrF,EAAgB,uCAChBgF,GACA7e,EAEJ,OACIlE,EAAAA,cAAA,OAAK2H,UAAU,aACX3H,EAAAA,cAAA,OAAK2H,UAAU,OACX3H,EAAAA,cAAA,OAAK2H,UAAW,qCAAqCob,KACjD/iB,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKwS,GACR9hB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKmT,GAAuBC,GACjC1iB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK0T,GACNhjB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK2T,GACNjjB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK4T,GACLG,EACAzS,EACApB,EAAMiL,mBAAqB+I,EAAUxjB,EAAAA,cAAAA,EAAAA,SAAA,KAAGyjB,GAAgCO,MAIrFhkB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKuT,GAAuBoB,KAGzCjkB,EAAAA,cAAA,OAAK2H,UAAU,sCACX3H,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK6T,GAAqB9C,GAC/BrgB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK8T,GAAqBrF,GAzIY7Z,KAC3D,MAAM,iBACFoQ,EAAgB,uBAOhBL,GACA/P,EAEJ,OACIlE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKgF,GAMLL,EAEE,EAoHwDiB,CAAoB6I,IACvE/d,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKwT,GAA2BmB,KAG3C,orBChId,MAAMsB,UAAqBvlB,EAAAA,cAA3B+I,kCACW,KAAAyG,MAA4B,CAC/BgW,cAAc,EACdC,eAAe,GAsBF,KAAAC,iBAAmB,KAChCvc,KAAKwc,qBACLxc,KAAKiO,SAAS,CAAEqO,eAAe,GAAQ,EAG1B,KAAAG,gBAAkB,KAC/B,GAAIzc,KAAKjF,MAAMyS,OAAOkP,eAET,eADD1c,KAAKjF,MAAMyS,OAAOmP,qBAElBtH,WAAWrV,KAAK4c,kBAAmB,KAO/C5c,KAAKiO,SAAS,CACVoO,cAAc,GAChB,EAGW,KAAAO,kBAAoB,KACjC5c,KAAKiO,SAAS,CACVoO,cAAc,EACdC,eAAe,GACjB,EAGW,KAAAO,iBAAmB,KAC5B7c,KAAKjF,MAAMyS,OAAOsP,gBAClB9c,KAAK+c,eAET/c,KAAKiO,SAAS,CACVoO,cAAc,EACdC,eAAe,GACjB,CAiDV,CAvGWha,SAEH,MAAM,UAAE9D,GAAcwB,KAAKjF,MAAMyS,QAC3B,aAAE6O,EAAY,cAAEC,GAAkBtc,KAAKqG,MAEvCqS,EAASlJ,EAAAA,EAAA,GACRxP,KAAKjF,OAAK,IACbiiB,eAAgBza,IAAW,gBAC3B0a,gBAAiB1a,IAAW,gBAAiB,WAAY/D,GACzD6d,eACAC,gBACAY,gBAAiBld,KAAKuc,iBACtBY,eAAgBnd,KAAKyc,gBACrBW,iBAAkBpd,KAAK6c,mBAG3B,OAAO7c,KAAKjF,MAAMygB,WAAW9C,EACjC,CAwCOvT,0BACH,MAAMkY,EAAS,IAAIC,EAAAA,EACftd,KAAKjF,MAAMyS,OAAO+P,wBACbF,EAAO1jB,IAAI,GAAGqG,KAAKjF,MAAMyS,OAAOgQ,iBAG7Bxd,KAAKjF,MAAMyS,OAAOkP,gBAAkBW,EAAO1jB,IAAI,GAAGqG,KAAKjF,MAAMyS,OAAOgQ,0BACpEnI,WAAWrV,KAAK4c,kBAAmB,KAAQ5c,KAAKjF,MAAMyS,OAAOiQ,aAAe,IAIpFpI,WAAWrV,KAAK6c,iBAAkB,KAAQ7c,KAAKjF,MAAMyS,OAAOkQ,YAAc,GAElF,CAEQX,eACJ,MAAMM,EAAS,IAAIC,EAAAA,EAEnB,GAAItd,KAAKjF,MAAMyS,OAAOmQ,YAAc,EAAG,CACnC,IAAIC,EAAO,IAAIC,KAGfD,EAAKE,QAAQF,EAAKG,WAAa/d,KAAKjF,MAAMyS,OAAOmQ,YAAc,IAC/D,MAAMpO,EAAU,CAAEyO,QAASJ,GAC3BP,EAAOY,IAAI,GAAGje,KAAKjF,MAAMyS,OAAOgQ,iBAAiB,EAAMjO,QAEvD8N,EAAOY,IAAI,GAAGje,KAAKjF,MAAMyS,OAAOgQ,iBAAiB,EAEzD,CAEQhB,qBACJ,MAAMa,EAAS,IAAIC,EAAAA,EAEnB,GAAItd,KAAKjF,MAAMyS,OAAO0Q,0BAA4B,EAAG,CACjD,IAAIN,EAAO,IAAIC,KAEfD,EAAKE,QAEDF,EAAKG,WAAa/d,KAAKjF,MAAMyS,OAAO0Q,0BAA4B,IAEpE,MAAM3O,EAAU,CAAEyO,QAASJ,GAC3BP,EAAOY,IAAI,GAAGje,KAAKjF,MAAMyS,OAAOgQ,yBAAyB,EAAMjO,QAE/D8N,EAAOY,IAAI,GAAGje,KAAKjF,MAAMyS,OAAOgQ,yBAAyB,EAEjE,EAGJ,qFCpIA,MA6EA,EA7E2DziB,IACvD,MAAM,MACFkc,EAAK,aACLoF,EAAY,cACZC,EAAa,eACbU,EAAc,gBACdC,EAAe,gBACfC,EAAe,eACfC,EAAc,iBACdC,GACAriB,GACE,QAAEyiB,EAAO,kBAAEW,EAAiB,YAAEC,EAAW,WAAEC,GAAetjB,EAAMyS,QAChE,qBAAE8Q,EAAoB,iBAAEC,GAAqBxjB,EAAMvD,UAEzDX,EAAAA,WAAgB,KACZ,GAAIwlB,EAAc,KAAAmC,EAAAC,EAEd,MAAMlW,EAAQxN,EAAMyS,OAAOkR,WAAa,UACxB,QAAhBF,EAAAla,OAAOqa,iBAAS,IAAAH,GAAM,QAANC,EAAhBD,EAAkB/jB,YAAI,IAAAgkB,GAAtBA,EAAAG,KAAAJ,EAAyB,CACrB7Z,MAAO,UACPka,cAAe,QACfC,YAAa,YACbC,WAAYxW,OAGrB,CAAC8T,IAEJ,MAAM2C,EAAcnoB,EAAAA,aAAkB,KAClC,MAAMooB,EAAeC,SAASC,cAAc,iBACtCC,EAAOH,aAAY,EAAZA,EAAcI,qBAAqB,QAEhD,GAAID,SAAAA,EAAM1iB,QAAU2f,EAAc,KAAAiD,EAAAC,EAC9B,MAAMhX,EAAQxN,EAAMyS,OAAOkR,UACX,QAAhBY,EAAAhb,OAAOqa,iBAAS,IAAAW,GAAM,QAANC,EAAhBD,EAAkB7kB,YAAI,IAAA8kB,GAAtBA,EAAAX,KAAAU,EAAyB,CACrB3a,MAAO,UACPka,cAAe,QACfC,YAAa,cACbC,WAAYxW,IAGpB4U,GAAgB,GACjB,CAACA,EAAgBd,EAActhB,IAElC,OACIlE,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2oB,EAAAA,MAAK,CAACnY,GAAImW,EAASxE,OAAQqD,EAAcpD,SAAU+F,GAChDnoB,EAAAA,cAAC4oB,EAAAA,YAAW,CAACrG,OAAQ4F,GAAcZ,GACnCvnB,EAAAA,cAAA,OAAK2H,UAAWwe,GACZnmB,EAAAA,cAAC6oB,EAAAA,UAAS,KACN7oB,EAAAA,cAAA,MAAAqP,OAAAC,OAAA,GAASpL,EAAM4kB,uBAAuB5kB,GAAM,CAAEsM,GAAItM,EAAMsM,KACpDxQ,EAAAA,cAAA,OAAK2H,UAAU,OAAOyY,EAAM2I,aAK3CtD,EACGzlB,EAAAA,cAAA,OAAK2H,UAAWye,GACZpmB,EAAAA,cAAA,UAAQ2H,UAAU,sBAAsByB,QAASmd,GAC7CvmB,EAAAA,cAAA,YAAOwnB,IAEVF,EACGtnB,EAAAA,cAAA,UAAQ2H,UAAU,8BAA6B,aAAa8f,EAAsBre,QAASid,GACvFrmB,EAAAA,cAAA,QAAM2H,UAAU,qCAAoC,cAAa,QAC5D+f,IAIT1nB,EAAAA,cAAAA,EAAAA,SAAA,OAIRA,EAAAA,cAAAA,EAAAA,SAAA,MAEL,sGCnEX,MAAMgpB,EAAoCpX,IAA4C,IAA3C,QAAEqX,EAAO,MAAEvX,EAAK,aAAEwX,EAAY,MAAElN,GAAOpK,EAC9E,OACI5R,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK2Z,GACLvX,EACAwX,EACAlN,EACE,EAITmN,EAA8DnX,IAAoE,IAAnE,MAAEoX,EAAK,cAAEC,EAAa,QAAEC,EAAO,eAAEC,EAAc,aAAEL,GAAclX,EAChI,OACIhS,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACgpB,EAAU3Z,OAAAC,OAAA,GAAK8Z,EAAK,CAAE5gB,IAAK4gB,EAAM5gB,OACjC+gB,GACGA,EAAejhB,KAAKuU,GACT7c,EAAAA,cAAAA,EAAAA,SAAA,KAAG6c,KAEjBqM,GACGA,EAAa5gB,KAAKuU,GACP7c,EAAAA,cAAAA,EAAAA,SAAA,KAAG6c,KAElB7c,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+Z,GACLC,GACGA,EAAQhhB,KAAKkhB,GACFxpB,EAAAA,cAAAA,EAAAA,SAAA,KAAGwpB,MAGvB,EAgJLC,EAA0CC,IAAwC,IAAvC,MAAEC,EAAK,UAAEC,EAAS,KAAEC,EAAI,QAAEhN,GAAS6M,EAChF,OACI1pB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKqa,GACN3pB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKsa,GACLC,EACAhN,GAEF,EAmBf,EAf+C3Y,IAC3C,MAAM,OAAE4lB,EAAM,UAAEC,EAAS,QAAEC,EAAO,mBAAEC,EAAkB,YAAEC,EAAW,QAAEjT,EAAO,mBAAEkT,GAAuBjmB,EAErG,OACIlE,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKwa,GACPC,EAAUK,eAAiBpqB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK2a,IACrCF,EAAUK,eAAiBpqB,EAAAA,cAACypB,EAAapa,OAAAC,OAAA,GAAK0a,IAC/ChqB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK4a,GACLjT,EA/JmCoT,EAAAxX,EAEhD3O,KACA,IAAAomB,EAAAC,EAAA,IAFA,aAAEC,EAAY,MAAEC,EAAK,kBAAEC,EAAiB,QAAEpB,EAAO,aAAEJ,EAAY,WAAEyB,GAAY9X,EAG7E,MACMoM,EAAS/a,SAAc,QAATomB,EAALpmB,EAAOqR,eAAO,IAAA+U,GAAS,QAATA,EAAdA,EAAgB1U,eAAO,IAAA0U,OAAA,EAAvBA,EAAyBrL,OAClC2L,EAAY1mB,SAAc,QAATqmB,EAALrmB,EAAOqR,eAAO,IAAAgV,GAAS,QAATA,EAAdA,EAAgB3U,eAAO,IAAA2U,OAAA,EAAvBA,EAAyBM,MAAMC,WAC3CC,EAHS,CAAC,MAAO,OAGEjjB,SAAS8iB,GAAaA,EAAY1mB,EAAMyS,OAAOqU,WAEjEC,EAAWC,GAAgBlrB,EAAAA,SAAe,KAC1CmrB,EAAiBC,GAAsBprB,EAAAA,UAAe,GACvDqrB,EAAU,kUACVC,EAAY,uHAEZC,EAAazd,IACf,MAAMpB,EAAQoB,EAAM0d,cAAc9e,MAC5B+e,EAAQ,IAAIzE,KACJ,KAAVta,KAAkBA,EAAMgf,MAAiB,UAAXzM,EAAqBoM,EAAUC,IAAcG,EAAQ,IAAIzE,KAAKta,IAC5F0e,GAAmB,GAEnBA,GAAmB,GAER,UAAXnM,GACAiM,EAAa,QAAQxe,MAG7B,GAAsB,oBAAXe,OAAwB,CAC/B,MAAMke,EAA4BtD,SAASuD,eAAe,iBAErCzrB,IAAjBwrB,IACAA,EAAaE,QAAUC,IACdX,IACDW,EAAEnd,iBACFmd,EAAEC,qBAMlB,OACI/rB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKkb,GACLC,GACGA,EAAMniB,KAAK0jB,GACU,UAAbA,EAAKxjB,KAAmBkiB,EAAkBuB,WAEtCjsB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKob,EAAkBwB,4BACxBlsB,EAAAA,cAACgpB,EAAU3Z,OAAAC,OAAA,GAAK0c,EAAI,CAAExjB,IAAKwjB,EAAKxjB,OAChCxI,EAAAA,cAAA,OAAK2H,UAAW,mFACZ3H,EAAAA,cAAA,SAAO2H,UAAW,iCAAkCwkB,QAAQ,sBACvDjoB,EAAMvD,UAAUyrB,kBACL,UAAXnN,EAAqB,mBAAqB,gBAE1B,IAApBkM,EACGnrB,EAAAA,cAAA,KAAG2H,UAAU,+BAA+BzD,EAAMvD,UAAU0rB,mBAE5D,GAEQ,UAAXpN,EACGjf,EAAAA,cAAA,SACIiR,KAAK,OACLT,GAAG,qBACHM,KAAK,qBACLwb,UAAW,GACX3kB,UAAU,mEACV0J,QAASya,GAAKP,EAAUO,GACxBS,QAAST,GAAKA,EAAEnd,mBAGpB3O,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,SACIiR,KAAK,OACLT,GAAG,uBACH8b,UAAW,EACXxb,KAAK,uBACLnJ,UAAU,mEACV0J,QAASya,GAAKP,EAAUO,GACxBS,QAAST,GAAKA,EAAEnd,mBAEpB3O,EAAAA,cAAA,SACIiR,KAAK,OACLT,GAAG,qBACH8b,UAAW,GACXxb,KAAK,qBACLnJ,UAAU,0EACV+E,MAAOue,KAKnBjrB,EAAAA,cAAC0S,EAAAA,GAA0B,CAACiQ,KAAMze,EAAMyS,OAAO6V,gBAEnDxsB,EAAAA,cAAA,OAAK2H,UAAW,kBACZ3H,EAAAA,cAAA,SAAOiR,KAAK,OAAOH,KAAK,sBAAsBN,GAAG,sBAAsB9D,MAAOqe,KAElF/qB,EAAAA,cAAA,OAAK2H,UAAU,8BACX3H,EAAAA,cAAA,aACIA,EAAAA,cAAA,SACIiR,KAAK,WAAU,eACD/M,EAAMyS,OAAO8V,wBAA0B,QAAU,OAC/DC,gBAAgBxoB,EAAMyS,OAAO8V,wBAC7B3b,KAAK,6BACLpE,MAAO,SAEX1M,EAAAA,cAAC0S,EAAAA,GAA0B,CAACiQ,KAAMze,EAAMyS,OAAOgW,yBAGtDzoB,EAAMyS,OAAO8V,yBACVzsB,EAAAA,cAAA,OAAK2H,UAAU,8BACX3H,EAAAA,cAAA,aACIA,EAAAA,cAAA,SACIiR,KAAK,WAAU,eACF,QACbyb,gBAAgB,EAChB5b,KAAK,uBACLpE,MAAO,OACPkgB,UAAQ,IAEZ5sB,EAAAA,cAAC0S,EAAAA,GAA0B,CAACiQ,KAAMze,EAAMyS,OAAOkW,mBAI3D7sB,EAAAA,cAACmpB,EAAuB9Z,OAAAC,OAAA,GAAKob,KAIlC1qB,EAAAA,cAACgpB,EAAU3Z,OAAAC,OAAA,GAAK0c,EAAI,CAAExjB,IAAKwjB,EAAKxjB,SAE9C0gB,GACGA,EAAa5gB,KAAI,CAAC+S,EAAwB/W,IAC/BtE,EAAAA,cAACA,EAAAA,SAAc,CAACwI,IAAKlE,GAAQ+W,KAE3CiO,GACGA,EAAQhhB,KAAI,CAACkhB,EAAyBllB,IAC3BtE,EAAAA,cAACA,EAAAA,SAAc,CAACwI,IAAKlE,GAAQklB,KAE3CmB,EACE,EAwBEN,CAAaF,EAAoBjmB,IAEjC,mvBC5KjB,MAAM4oB,UAAmC9sB,EAAAA,UAUrC+I,YAAY7E,GACR8E,MAAM9E,GAENiF,KAAKoD,kBAAmB0R,EAAAA,EAAAA,oBACpB9U,KAAKjF,MAAMqR,QAAQK,QAAQsI,kBAC3B/U,KAAKjF,MAAMia,aACXhV,KAAKjF,MAAM+T,WAGf9O,KAAKqG,MAAKmJ,EAAA,GAAQxP,KAAK4jB,eAEvBvhB,EAAAA,EAAAA,KACI,IAAMrC,KAAK6jB,WACX,KACI7jB,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,6CACnClS,KAAKiO,SAAS,CACV2R,QAAS/oB,EAAAA,cAACitB,EAAAA,GAAc,CAACvgB,MAAOvD,KAAKjF,MAAMvD,UAAUusB,0BACvD,GAGd,CA1BcF,eACV,MAAkD,YAA3ClqB,IAAIqG,KAAKjF,MAAO,sBAC3B,CA0BcipB,sCACV,MAAMC,EAAiBtqB,IAAIqG,KAAKjF,MAAO,mCAEjCmpB,IAAwBD,GAAiBA,EAAeE,sBACxDC,GAAYC,EAAAA,EAAAA,IAAiBrkB,KAAKjF,MAAMqR,QAAQK,SAChD6X,EAA+B3qB,IAAIqG,KAAKjF,MAAO,6DAErD,OACImpB,IACkC,QAAjCI,GACqC,QAAjCA,GAA0CF,GACT,QAAjCE,IAA2CF,EAExD,CAEO3N,sBACH8N,EACAC,GAEA,OAAIxkB,KAAKqG,QAAUme,GAAaxkB,KAAKjF,MAAMiR,OAASuY,EAAUvY,IAIlE,CAEO1J,SACH,IAAKtC,KAAKgkB,gCACN,OAAOntB,EAAAA,cAAAA,EAAAA,SAAA,MAGX,MAAM,UAAE2H,EAAS,QAAEsP,EAAO,MAAE2W,GAAUzkB,KAAKjF,MAAMyS,OAC3CkL,EAASlJ,EAAAA,EAAA,GACRxP,KAAKjF,OAAK,IACb4oB,2BAA4B,CACxB/K,YAAa5Y,KAAKjF,MAClByD,UAAW+D,IAAW,mCAAoC/D,IAE9DsP,QAASA,GACLjX,EAAAA,cAAC6tB,EAAAA,QAAO,CAAClmB,UAAU,4CAA4CmmB,WAAY7W,EAAQ1C,IAAKoO,KAAM1L,EAAQ0L,OAE1GoG,QAAS5f,KAAKqG,MAAMuZ,QACpB6E,MAAOzkB,KAAKqG,MAAMue,wBACd/tB,EAAAA,cAACguB,EAAAA,EAAc3e,OAAAC,OAAA,GACP,CACAse,QACAzb,aAAe7N,GAAmBwJ,IAA+C,EACjFoE,eAAgB/I,KAAKjF,MAAMqR,QAAQK,QACnCrJ,iBAAkBpD,KAAKoD,sBAMvC,OAAOpD,KAAKjF,MAAMygB,WAAW9C,EACjC,CAEQkL,aACJ,MAAMkB,EAA4BnrB,IAAIqG,KAAKjF,MAAO,uBAElD,IAAI6kB,EACAgF,GAAyB,EAE7B,GAAI5kB,KAAK6jB,SACL7jB,KAAKjF,MAAM+T,UAAUoD,MAAM,6CAC3B0N,EAAU/oB,EAAAA,cAACitB,EAAAA,GAAc,CAAC5R,MAAOlS,KAAKjF,MAAMvD,UAAUusB,8BACnD,GACiB,IAApBe,EAAQC,SACgB,IAAxBD,EAAQE,aAC0B,IAAlCF,EAAQG,uBAC8B,IAAtCH,EAAQI,0BAGRtF,EAAU/oB,EAAAA,cAACitB,EAAAA,GAAc,CAAC5R,MAAOlS,KAAKjF,MAAMvD,UAAU2tB,2BACnD,CAEH,MAAM,2BAAEC,EAA0B,4BAAEC,GAAgCrlB,KAAKjF,MAAMvD,UACzE8tB,EAAe3rB,IAAIqG,KAAKjF,MAAO,oCAC/BwqB,EAAiB5rB,IAAIqG,KAAKjF,MAAO,2CACvC,IAAIyqB,EAAiB,EAGjBA,EADsC,IAAtCV,EAAQI,0BACSJ,EAAQE,YAAcF,EAAQC,QAE9BD,EAAQI,0BAA4BJ,EAAQG,sBAGjE,MAAMQ,EAA0B,GAAGF,EAAeC,EAAeE,QAAQ,GAAIJ,KAE7EV,GAAyB,EACzBhF,EACI/oB,EAAAA,cAAC8uB,EAAAA,GAAe,CACZC,cAAeR,EACf7hB,MAAOkiB,EACPI,eAAgBR,EAChB7mB,UAAU,6CAEhB,CAGN,MAAO,CAAEohB,UAASgF,yBACtB,GAhIUjhB,EAAAA,EAAAA,IAAA,CAATmiB,EAAAA,IAAQ,8BA4BCniB,EAAAA,EAAAA,IAAA,CAATmiB,EAAAA,IAAQ,oDAuGb,oFClKA,MAYA,EAZuF/qB,IACnF,MAAM,2BAAE4oB,EAA0B,QAAE7V,EAAO,QAAE8R,EAAO,MAAE6E,GAAU1pB,EAEhE,OACIlE,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKwd,GACP7V,EACA8R,EACA6E,EACI,yDCFV,MAAMX,EAA4Drb,IAAA,IAAC,MAAEyJ,GAAOzJ,EAAA,OAC/E5R,EAAAA,cAAA,QAAM2H,UAAU,2CAA2C0T,EAAa,EAG/DyT,EAA6D9c,IAAwD,IAAvD,cAAE+c,EAAa,eAAEC,EAAc,MAAEtiB,EAAK,UAAE/E,GAAWqK,EAC1H,OACIhS,EAAAA,cAAA,OAAK2H,UAAWA,GACXonB,EACD/uB,EAAAA,cAAA,QAAM2H,UAAU,2CAA2C+E,GAC1DsiB,EACC,qECCd,MAkBME,EAAoBA,CAACC,EAAwB5iB,KAC/C,IAAK4iB,GAAgC,IAApBA,EAAStpB,OACtB,OAAO,KAEX,MAAMupB,EAAuC,GACvC3f,GAAUC,EAAAA,EAAAA,kBAAiB,QAASnD,EAAmB,IAiB7D,OAfA4iB,EAASE,SAAQ,CAACpd,EAAM3N,KACpBmL,EAAQM,cAAcC,MAAQiC,EAAKK,SACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuBvD,EAAmBkD,GACvD2C,EAAoC,CACtCC,UAAWJ,EAAKI,UAChB1K,UAAW,yCACX2K,SAAUL,EAAKK,SACfC,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnB5G,KAAM,OACN0jB,qBAAsBD,GAE1BF,EAAcxrB,KAAKwO,EAAa,IAG7Bgd,CAAa,EAGxB,EA3CoFxd,IAK/E,IALgF,MACjFgc,EAAK,iBACLrhB,EAAgB,aAChB4F,EAAY,eACZD,GACHN,EACG,GAAqB,IAAjBgc,EAAM/nB,OACN,OAAO,KAEX,MAAMupB,EAAgBF,EAAkBtB,EAAOrhB,GAC/C,OACIvM,EAAAA,cAAA,OAAK2H,UAAU,2CACVynB,GAAiBA,EAAcvpB,OAAS,EACrC7F,EAAAA,cAAC0S,EAAAA,GAAc,CAACkb,MAAOwB,EAAezc,UAAW,CAAER,eAAcD,oBACjE,KACF,mKC5BP,MAAMsd,EAAgG5d,IAKxG,IALyG,MAC1GjJ,EAAK,YACL8mB,EAAW,UACX9nB,EAAS,eACT+nB,GACH9d,EACG,OACI5R,EAAAA,cAAA,MAAI2H,UAAWA,GACVgB,GAAS3I,EAAAA,cAAA,KAAG2H,UAAW+nB,GAAiB/mB,GACzC3I,EAAAA,cAAA,SAAIyvB,GACH,ukBCgBN,MAAME,EAA0B,gCAOvC,MAAMC,UAAiC5vB,EAAAA,UAInC+I,YAAY7E,GACR8E,MAAM9E,GA4IO,KAAA2rB,iBAAoB/hB,IACjC3E,KAAKiO,SAAS,CACV0Y,sBAAuBhiB,EAAM/F,OAAOyJ,SACtC,EAGW,KAAAue,2BAA6B,KAC1C5mB,KAAKiO,SAAS,CACV4Y,2BAA4B7mB,KAAKqG,MAAMwgB,2BACzC,EAGW,KAAAhf,SAAW1C,UAA2D,IAAA2hB,EAAAC,EACnF,MAAM,QAAE3a,EAAO,KAAEJ,EAAI,UAAExU,GAAcwI,KAAKjF,OACpC,iBAAEisB,EAAgB,oCAAEC,GAAwCzvB,EAC5D0vB,EAAqE,QAApDJ,EAAiC,QAAjCC,EAAG/a,EAAKmb,mBAAmBjb,cAAM,IAAA6a,OAAA,EAA9BA,EAAgCK,yBAAiB,IAAAN,EAAAA,EAAI,GAE/E,UACUO,EAAAA,EAAAA,sBAAqB,CAAEC,cAAelb,EAAQ2C,eAAiBmY,GACrElnB,KAAKiO,SAAS,CACVsZ,kBAAkB,EAClBC,oBAAoB,EACpBzH,kBAAc/oB,EACdywB,oBAAqBR,GAQtB,CANL,MAAAS,GACE1nB,KAAKiO,SAAS,CACVuZ,oBAAoB,EACpBD,kBAAkB,EAClBxH,aAAciH,EACdS,yBAAqBzwB,GACtB,GA1KPgJ,KAAKqG,MAAQ,CACTmhB,oBAAoB,EACpBD,kBAAkB,EAClBZ,uBAAuB,EACvBE,2BAA2B,EAC3B9G,kBAAc/oB,EACdywB,yBAAqBzwB,EAE7B,CAEOsL,SACH,MAAM,iBACFilB,EAAgB,mBAChBC,EAAkB,sBAClBb,EAAqB,0BACrBE,EAAyB,aACzB9G,EAAY,oBACZ0H,GACAznB,KAAKqG,OACH,UAAE7O,EAAS,KAAEwU,EAAI,OAAEwB,GAAWxN,KAAKjF,OACnC,QAAE+S,EAAO,eAAE6Z,GAAmBna,GAC9B,0BAAEoa,GAA8BpwB,GAChC,mBAAE2vB,GAAuBnb,EACzB6b,EAAY7nB,KAAK8nB,YAAYX,EAAmBjb,QACtD,IAAIgG,EAA4B6N,EAG3B8H,GAA2C,YAA9BV,EAAmBY,SACjC7V,EAAQ0V,GAEZ,MAAMI,EAAaH,GAAalB,EAE1BjO,EAASlJ,EAAAA,EAAA,GACRxP,KAAKjF,OAAK,IACbktB,8BAA+B,CAC3BrP,YAAa5Y,KAAKjF,MAClByD,UAAW+D,IAAWikB,EAAiBA,IAE3C1Y,QAASjX,EAAAA,cAACqxB,EAAAA,GAAIhiB,OAAAC,OAAA,CAAC3H,UAAW,GAAGgoB,cAAgC1Y,IAC7D2Z,oBAAqBznB,KAAKmoB,sBAAsBjW,EAAOuV,GACvDW,mBAAoBpoB,KAAKqoB,2BACzBC,uBAAwBd,GACpB3wB,EAAAA,cAAA,OAAK2H,UAAW,GAAGgoB,gBACf3vB,EAAAA,cAAA,SACI2H,UAAW,GAAGgoB,wBACd1e,KAAK,WAAU,aACHtQ,EAAU+wB,uBACtBtgB,SAAUjI,KAAK0mB,mBAEnB7vB,EAAAA,cAAA,QAAM2H,UAAW,GAAGgoB,qBAAoChvB,EAAUgxB,6BAClE3xB,EAAAA,cAAA,KAAG2H,UAAW,GAAGgoB,oBAAmC9jB,KAAK,SAASzC,QAASD,KAAK4mB,4BAC3EpvB,EAAU+wB,yBAIvBE,oBACI5xB,EAAAA,cAAC2oB,EAAAA,MAAK,CACFhhB,UAAW,GAAGgoB,WACdxN,OAAQ6N,EACR3N,mBAAmB,SACnBC,iBAAiB,SACjBL,WAAS,EACTC,MAAM,EACNK,OAAQpZ,KAAK4mB,2BAA0B,aAC3BpvB,EAAU+wB,wBAEtB1xB,EAAAA,cAAC4oB,EAAAA,YAAW,CAACrG,OAAQpZ,KAAK4mB,4BAA6BpvB,EAAUkxB,4BACjE7xB,EAAAA,cAAC6oB,EAAAA,UAAS,KACN7oB,EAAAA,cAAC8xB,EAAAA,GAA0B,CAACnP,KAAMmO,MAI9CiB,aAAcrB,GACV1wB,EAAAA,cAAA,OAAK2H,UAAW,GAAGgoB,uBACf3vB,EAAAA,cAAC0U,EAAAA,OAAM,CACHtL,QAASD,KAAK6H,SACdrJ,UAAW,GAAGgoB,6BACd9jB,KAAK,SAAQ,aACDlL,EAAUqxB,mBACtBrpB,MAAOhI,EAAUqxB,mBACjBC,UAAWd,EAAU,iBACLA,GAEfxwB,EAAUqxB,uBAM3B,OAAO7oB,KAAKjF,MAAMygB,WAAW9C,EACjC,CAEQyP,sBAAsBpI,EAAkC0H,GAC5D,IAAIsB,EAAmC,KAMvC,OALIhJ,EACAgJ,EAAkBlyB,EAAAA,cAACmyB,EAAAA,MAAK,CAAC7gB,MAAM,UAAU4X,GAClC0H,IACPsB,EAAkBlyB,EAAAA,cAACmyB,EAAAA,MAAK,CAAC7gB,MAAM,WAAWsf,IAEvCsB,CACX,CAEQV,2BACJ,MAAM,OAAE7a,GAAWxN,KAAKjF,MAClBkuB,EAA6B,GAC7Bb,EAAqB5a,EAAO4a,mBAElC,OAAKA,EAIEA,EAAmBjpB,KAAI,CAACmnB,EAAa4C,KAAQ,IAAAC,EAChD,OACItyB,EAAAA,cAAA,OAAKwI,IAAK6pB,EAAM1qB,UAAW,GAAGgoB,qBAC1B3vB,EAAAA,cAACqxB,EAAAA,GAAI,CAAC1pB,UAAW,GAAGgoB,kBAAiChN,KAAM8M,EAAYxY,UACvEjX,EAAAA,cAAA,UAC6B,QAD7BsyB,EACK7C,EAAY8C,oBAAY,IAAAD,OAAA,EAAxBA,EAA0BhqB,KAAI,CAACkqB,EAAaC,IAErCzyB,EAAAA,cAACwvB,EAAsC,CACnChnB,IAAKiqB,EACL9qB,UAAW,GAAGgoB,oBACdD,eAAgB,GAAGC,gBACnBhnB,MAAO6pB,EAAY9gB,MACnB+d,YAAa+C,EAAY7P,UAKvC,IApBHyP,CAuBf,CAEQnB,YAAYyB,GAChB,OACKC,EAAAA,iBAAiBC,kBAAkBF,KAAUG,EAAAA,iBAAiBC,cAAcJ,EAAKnC,qBAAuC,IAAjBmC,EAAKK,OAErH,EAsCJ,qFCrNA,MAsBA,EAtB2E7uB,IACvE,MAAM,8BACFktB,EAA6B,QAC7Bna,EAAO,oBACP2Z,EAAmB,mBACnBW,EAAkB,uBAClBE,EAAsB,oBACtBG,EAAmB,aACnBG,GACA7tB,EACJ,OACIlE,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAK8hB,GACPna,EACA2Z,EACAW,EACAE,EACAG,EACAG,EACI,muBCIV,MAAMiB,UAA2BhzB,EAAAA,cAapC+I,YAAY7E,GACR8E,MAAM9E,GAbF,KAAA+uB,aAAuB,EAEd,KAAAC,qBAA+B,EAE/B,KAAAC,UAAoB,GAqcpB,KAAAC,qBAAuB,CAACC,EAA0BC,IAA0B,KACzF,MAAMhhB,EAAWghB,GAAUA,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GACzDihB,EAAiC,CAAC,CAAEC,IAAKH,EAAkBI,QAASnhB,IAGtEzL,EAAAA,gBAAgBC,YAAYwsB,EAAOI,qBACnCJ,EAAOI,mBAAmBprB,KAAI0jB,IAC1B,GAAIA,GAAQA,EAAK2H,MAAO,CACpB,MAAMC,EAAW5H,EAAK2H,MAAMH,IACtBK,EAA+B7H,EAAK2H,MAAMG,cAChDP,EAAiB3vB,KAAK,CAClB4vB,IAAKI,EACLH,QAASzH,EAAKrJ,KACdmR,cAAeD,EACftE,qBAAsB,CAAEhd,QAASyZ,EAAKzZ,QAAQC,iBAC/C,KAIfrJ,KAAKiO,SAAS,CACV2c,cAAeR,EAAiB1tB,OAAS,EAAI0tB,EAAmB,CAAC,CAAEC,IAAK,UACxEQ,qBAAsB1hB,GACxB,EASW,KAAA2hB,sBAAwB,CAAC9e,EAAqB+e,IAAsB,KAC5E/qB,KAAKjF,MAAMse,aASZrZ,KAAKiO,SAAS,CACV+c,WAAYhf,EAAK3E,GACjB4jB,WAAYF,KAVhB/qB,KAAKiO,SAAS,CACV+c,WAAYhrB,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAehf,EAAK3E,QAAMrQ,EAAYgV,EAAK3E,GAC3F4jB,WAAYF,IAEZ/qB,KAAKjF,MAAMmwB,mBACXlrB,KAAKiqB,qBAAqBje,EAAKmf,YAAcnf,EAA7ChM,IASRA,KAAKorB,aAAa,EAML,KAAAA,YAAc,KACvBprB,KAAKjF,MAAMse,cACXhE,YAAW,KACPrV,KAAKqrB,UAAYrrB,KAAKqrB,SAAS/qB,SAAWN,KAAKqrB,SAAS/qB,QAAQmS,OAAO,GACxE,EAAG,EAQG,KAAA6Y,oBAAuB3mB,IAChC3E,KAAKqrB,SAAS/qB,UAAYN,KAAKqrB,SAAS/qB,QAAQirB,SAAS5mB,EAAM/F,SAC/DoB,KAAKiO,SAAS,CACV+c,gBAAYh0B,EACZ4zB,cAAe,MAChB,EAQM,KAAAY,oBAAuB7mB,IAChC3E,KAAKqrB,SAAS/qB,UAAYN,KAAKqrB,SAAS/qB,QAAQirB,SAAS5mB,EAAM8mB,gBAC/DzrB,KAAK0rB,eAAgB,EAiBZ,KAAAC,aAAgBhnB,IAC7B,GAAIA,EAAMC,UAAY5E,KAAKgqB,UAAW,CAClC,IAAKhqB,KAAKjF,MAAMse,aAAc,CAC1B,MAAMuS,EAAgBC,MAAMC,KAAK9rB,KAAKqrB,SAAS/qB,QAASyrB,YACxD,IAAK,MAAMlJ,KAAQ+I,EAAe,CAC9B,MAAMI,EAAkBnJ,EAAKoJ,WACyB,SAAlDD,EAAgB/mB,aAAa,kBAC7B+mB,EAAgBvZ,OAAO,EAInCzS,KAAK0rB,eAAgB,GAIZ,KAAAQ,kBAAqBtB,IAClC,IAAKA,IAAkBA,EAAcP,IACjC,OAAO,KAGX,MAAM8B,GAAmBC,EAAAA,EAAAA,kBAAiBxB,EAAcP,IAAKrqB,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eAAesjB,aACvGC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCI,UAAU,GAEd,QAAyB/1B,IAArBm1B,EAAgC,CAAC,IAAD1jB,EAAAukB,EAChC,MAAMC,EAAwB,CAAE5C,IAAK8B,GACrC,OACIt1B,EAAAA,cAACq2B,EAAAA,GAAKhnB,OAAAC,OAAA,CACF4C,eAAgB/I,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eACjDvK,UAAU,sBACNyuB,EAAS,CACbE,aAAcntB,KAAKjF,MAAMqR,QAAQK,QAAQ0gB,aACzCxC,cAAqF,QAAxEliB,EAA6B,QAA7BukB,EAAEpC,EAAcD,qBAAa,IAAAqC,EAAAA,EAAIhtB,KAAKjF,MAAMyS,OAAO4f,6BAAqB,IAAA3kB,EAAAA,EAAI6jB,EACzFe,oBAAoB,OACpB3qB,KAAK,WACL2E,GAAI,GAAGujB,EAAcP,qBACrBC,QAASM,EAAcN,UACzB,CAGV,OAAO,IAAI,EAOE,KAAAgD,gBAAmBC,IAChC,MAAM,eAAEC,GAAmBxtB,KAAKqG,MAE1BonB,EAAU,CAAE,MADoCz2B,IAA3Bu2B,EAAYG,WAA2BH,EAAYG,WAAa,IAC3DH,EAAYvU,QAC5ChZ,KAAKiO,SAAS,CAAEuf,eAAche,EAAAA,EAAA,GAAOge,GAAmBC,IAAY,EArlBpEztB,KAAKqrB,SAAWx0B,EAAAA,YAChBmJ,KAAKqG,MAAQ,CAAE2kB,gBAAYh0B,EAAWi0B,gBAAYj0B,EAAW6zB,qBAAsB,GAAI2C,eAAgB,CAAC,GACxGxtB,KAAK0rB,cAAgB1rB,KAAK0rB,cAAciC,KAAK3tB,MAC7CA,KAAK2rB,aAAe3rB,KAAK2rB,aAAagC,KAAK3tB,MAC3CA,KAAKoD,kBAAmB0R,EAAAA,EAAAA,oBACpB9U,KAAKjF,MAAMqR,QAAQK,QAAQsI,kBAC3B/U,KAAKjF,MAAMia,aACXhV,KAAKjF,MAAM+T,WAEf9O,KAAKsG,SAAUC,EAAAA,EAAAA,kBAAiB,QAASvG,KAAKoD,iBAAkB,GAAI,GACxE,CAEOnB,oBACC0mB,EAAAA,GAASiF,YACT1O,SAAS2O,KAAKC,iBAAiB,UAAY9tB,KAAK2rB,cAA2C,GAC3FzM,SAAS2O,KAAKC,iBAAiB,YAAa9tB,KAAKsrB,qBACjDpM,SAAS2O,KAAKC,iBAAiB,WAAY9tB,KAAKwrB,qBAExD,CAEOuC,uBACCpF,EAAAA,GAASiF,YACT1O,SAAS8O,oBAAoB,UAAYhuB,KAAK2rB,cAA2C,GACzFzM,SAAS2O,KAAKG,oBAAoB,YAAahuB,KAAKsrB,qBAAqB,GACzEpM,SAAS2O,KAAKG,oBAAoB,WAAYhuB,KAAKwrB,qBAAqB,GAEhF,CAEOlpB,SACH,MAAM,aAAE+W,GAAiBrZ,KAAKjF,MAG9B,OADAiF,KAAK8pB,aAAe,EACbjzB,EAAAA,cAAAA,EAAAA,SAAA,KAAGwiB,EAAerZ,KAAKiuB,oBAAsBjuB,KAAKkuB,qBAC7D,CAMQD,oBACJ,MAAM,aAAE5U,EAAY,aAAE8U,EAAY,WAAEC,GAAepuB,KAAKjF,MACxD,OACIlE,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKioB,EAAU,CAAE5vB,UAAW+D,IAAW6rB,EAAW5vB,UAAW6a,EAAe,cAAgB,kBAC9F8U,EAAahvB,KAAI,CAACkvB,EAAyBC,IACjCtuB,KAAKuuB,kBAAkBF,EAAUF,EAAazxB,OAAQ4xB,EAAWtuB,KAAK+pB,wBAI7F,CAMQmE,qBACJ,MAAM,SAAEM,EAAQ,WAAEJ,GAAepuB,KAAKjF,MACtC,OACIlE,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKioB,EAAU,CAAE5vB,UAAW+D,IAAW6rB,EAAW5vB,aACrD3H,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKqoB,EAAQ,CAAEvrB,IAAKjD,KAAKqrB,SAAUoD,SAAS,OAC5CzuB,KAAK0uB,kBAItB,CASQH,kBAAkBF,EAAyBM,EAAiBL,GAChE,OAAID,GAAYA,EAASO,SAAWlxB,EAAAA,gBAAgBC,YAAY0wB,EAASO,SAC9D5uB,KAAK6uB,cAAcR,EAAUM,EAASL,GAE1CtuB,KAAK8uB,oBAAoBT,OAAUr3B,GAAW,GAAM,EAAO23B,EAASL,EAC/E,CASQO,cAAcR,EAAyBM,EAAkBL,GAC7D,MAAM1oB,EAAmByoB,EAASllB,SAC5B4lB,EAAW/uB,KAAKqG,MAAMmnB,eACtBE,OAAkC12B,IAArB4O,EAAiCA,EAAmB,GACjEopB,OAAoBh4B,IAAb+3B,EAAyBA,EAAW,CAAC,GAC5C,aAAE1V,GAAiBrZ,KAAKjF,MAE9B,IAAIk0B,GAAe,EACfD,EAAKtB,KACLuB,GAAe,GAEnB,MAAMC,EAA2B,CAAElW,OAAQiW,GAC3C,OACIp4B,EAAAA,cAACs4B,EAAAA,OAAM,CACHzsB,KAAK,UACL0sB,kBAAmB,CACf,eAAgBT,EAChB,gBAAiBL,EACjB5rB,KAAM,YAEVwG,UAAWmQ,EAAegV,EAASnlB,eAAYlS,EAC/CqI,IAAKgvB,EAAShnB,GACd7I,UAAU,iBACV6wB,UAAU,sBACVC,SAAUtvB,KAAKstB,gBACfiC,cAAeL,EACfM,WAAW,uBACXC,eAAe,MACf7pB,iBAAkB5F,KAAK0vB,gBAAgB9pB,EAAkB+oB,EAASL,IAElEz3B,EAAAA,cAAA,OAAK6L,KAAK,WACL2rB,EAASO,QAASzvB,KAAI,CAACwwB,EAA4BC,KAAsB,IAAAC,EAChBC,EAAtD,OAAIpyB,EAAAA,gBAAgBC,YAAYgyB,EAAYf,SACjC5uB,KAAK6uB,cAAcc,EAA6B,QAAlBG,EAAEzB,EAASO,eAAO,IAAAkB,OAAA,EAAhBA,EAAkBpzB,OAAQkzB,EAAa5vB,KAAK+pB,sBAEhF/pB,KAAK+vB,kBAAkBJ,EAA6B,QAAlBE,EAAExB,EAASO,eAAO,IAAAiB,OAAA,EAAhBA,EAAkBnzB,OAAQkzB,EAAa5vB,KAAK+pB,qBAAqB,KAKhI,CASQ2F,gBAAgBvmB,EAA8BwlB,EAA6BL,GAC/E,OACIz3B,EAAAA,cAAA,uBAAoB83B,EAAO,gBAAiBL,GACvCnlB,EAGb,CASQ4mB,kBAAkBlN,EAAqB8L,EAA6BL,GACxE,OAAIzL,GAAQA,EAAK1Z,UAAY0Z,EAAKmN,SAAWnN,EAAKmN,QAAQtzB,OAAS,EACxDsD,KAAK8uB,oBAAoBjM,OAAM7rB,GAAW,GAAM,EAAO23B,EAASL,GAChEzL,GAAQA,EAAK1Z,WAAa0Z,EAAKmN,QAC/BhwB,KAAKiwB,oBAAoBpN,GAE7B,IACX,CAMQ6L,iBACJ,MAAM,SAAEwB,EAAQ,aAAE/B,EAAY,aAAE9U,GAAiBrZ,KAAKjF,OAChD,WAAEiwB,GAAehrB,KAAKqG,MACtB8pB,EAA8B,GAEpC,GAAI9W,QAA+BriB,IAAfg0B,GAA4BmD,EAAazxB,OAAS,EAAG,CACrE,IAAI2xB,EAA0B,CAAC,EAC/B,IAAK,MAAM+B,KAAiBjC,EAAc,CACtC,GAAIiC,GAAiBA,EAAc/oB,KAAO2jB,EAAY,CAClDqD,EAAW+B,EACXpwB,KAAKiO,SAAS,CAAEgd,gBAAYj0B,IAC5B,KAAM,CAGV,GADAq3B,EAAWruB,KAAKqwB,gBAAgBD,GAC5B/B,GAAYA,EAAShnB,KAAO2jB,EAC5B,MAIRqD,GACI8B,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKgvB,EAAShnB,IAAQ6oB,GACvB,IACAlwB,KAAKswB,oBAAoBjC,GACzB,KAEP,MAENF,EAAajI,SAAQ,CAACrD,EAAqB1nB,KACvCg1B,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKlE,GAAW+0B,GACjBlwB,KAAKswB,oBAAoBzN,IAEjC,IAIT,OAAOsN,CACX,CAOQE,gBAAgBxN,GACpB,MAAM0N,EAAW1N,GAAQA,EAAK+L,QAC9B,GAAI2B,GAAYA,EAAS7zB,OAAS,EAC9B,IAAK,IAAI8zB,EAAI,EAAGA,GAAKD,EAAS7zB,OAAS,EAAG8zB,IAAK,CAC3C,GAAID,EAASC,GAAGnpB,KAAOrH,KAAKqG,MAAM2kB,WAE9B,OADAhrB,KAAKiO,SAAS,CAAEgd,WAAYpI,aAAI,EAAJA,EAAMxb,KAC3BkpB,EAASC,GAEpB,MAAMC,EAAQzwB,KAAKqwB,gBAAgBE,EAASC,IAC5C,GAAIC,EACA,OAAOA,CAAK,CAIxB,OAAO,IACX,CAOQH,oBAAoBnC,GACxB,OAAIA,GAAgBA,EAAaS,SAAWT,EAAaS,QAAQlyB,OAAS,EAClEsD,KAAKjF,MAAMse,mBAA0CriB,IAA1BgJ,KAAKqG,MAAM2kB,WAC/BhrB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,IAG9DxQ,EAAAA,cAAAA,EAAAA,SAAA,KACKmJ,KAAK2wB,sBAAsBxC,GAC3BnuB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,KAGzD8mB,GAAgBA,EAAahlB,UAAYglB,EAAa6B,SAAW7B,EAAa6B,QAAQtzB,OAAS,EAC/FsD,KAAK8uB,oBAAoBX,EAAcA,EAAa9mB,IAAI,GAAO,GAC/D8mB,GAAgBA,EAAahlB,WAAaglB,EAAa6B,QACvDhwB,KAAKiwB,oBAAoB9B,EAAcA,EAAa9mB,IAAI,GAG5D,IACX,CAEQqpB,eAAeH,EAA4BvF,EAAqB4F,GACpE,MAAM,aAAEvX,EAAY,SAAE6W,GAAalwB,KAAKjF,MAClC81B,EAAyB7wB,KAAKjF,MAAMyS,OAAOsjB,uBAAwB,EAEnEC,EAA0B/wB,KAAKjF,MAAMyS,OAAOwjB,kBAD7B,EAIrB,GAAIhG,GAAchrB,KAAKqG,MAAM2kB,aAAeA,EAExC,OADAhrB,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,gEAC5B,KAGX,IAAKqe,GAAgC,IAApBA,EAAS7zB,OAEtB,OADAsD,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,4DAC5B,KAGX,IAAI+e,EAAyB,GAC7B,MAAMC,EACFX,GACAA,EAASpxB,KAAI,CAACgrB,EAAuBgH,KACjC,MAAMC,EAAajH,EAAOyE,SAAWzE,EAAOyE,QAAQlyB,OAAS,EAC7D,IAAI2xB,EAMAO,EAJAP,EADA+C,GAAc/X,EACHrZ,KAAK2wB,sBAAsBxG,EAAQa,EAAYmG,GAE/ChH,EAAO6F,QAAUhwB,KAAK8uB,oBAAoB3E,EAAQgH,GAAOnxB,KAAKiwB,oBAAoB9F,GAGjG,MAAMkH,EAAcD,GAAcP,GAA0B7wB,KAAK8pB,cAAgB5yB,KAAKo6B,MAAMP,GAA2B,EAMvH,OALIM,IACArxB,KAAK8pB,eACLmH,EAAiBJ,EAAyB,SAAS7wB,KAAK8pB,aAAa3mB,aAAe,GACpFyrB,EAAU5uB,KAAK0wB,eAAevG,EAAOyE,QAASvV,EAAe8Q,EAAO9iB,QAAKrQ,GAAW,IAGpFH,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+pB,EAAQ,CAAE7wB,IAAK8qB,EAAO9iB,GAAI7I,UAAW+D,IAAW2tB,EAAS1xB,UAAW6yB,GAAe,iBACxFhD,EACAO,EACE,IAGnB,OAAO5uB,KAAKuxB,YAAYN,EAAgBC,EAAalG,EAAY4F,EACrE,CASQD,sBAAsBxG,EAAuBa,EAAqB7vB,GACtE,MAAM,OAAEoQ,GAAWvL,KAAKjF,MACxB,OACIlE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKlE,GACDoQ,EAAM,CACVtL,QAASD,KAAK8qB,sBAAsBX,EAAQa,GAC5CwG,QAASxxB,KAAK0rB,cAAa,kBACV1rB,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,mBAC5DrH,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,cAClE2jB,IAEZb,EAAOhhB,SAGpB,CAYQ2lB,oBACJ3E,EACAhvB,GAIiB,IAHjBs2B,IAAAC,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,KAAAA,UAAA,GACAC,EAAAD,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,IAAAA,UAAA,GACA/C,EAAgB+C,UAAAh1B,OAAA,EAAAg1B,UAAA,QAAA16B,EAChBs3B,EAAiBoD,UAAAh1B,OAAA,EAAAg1B,UAAA,QAAA16B,EAEjB,MAAM,KAAE46B,EAAI,aAAEvY,GAAiBrZ,KAAKjF,MAC9BoO,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GAC/C0oB,EAAc1H,EAAOgB,YAAchB,EAAOgB,YAAc,GAC9DnrB,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OACIzP,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,gBACakT,EAAesV,OAAU33B,EAAS,gBACjCqiB,EAAeiV,OAAWt3B,EAAS,aACtCqiB,EAAe8Q,EAAOjhB,eAAYlS,GAC1C46B,EAAI,CACRvyB,IAAKlE,EACLq2B,QAASG,GAAY3xB,KAAK0rB,cAC1B9sB,OAAQurB,EAAO2H,iBAAmB,cAAW96B,EAC7C+6B,YAAaN,GAAezxB,KAAKiqB,qBAAqB4H,EAAa1H,GACnEtrB,KAAMsrB,EAAO6F,SACT7J,EAAU,CACdlmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KAE9DghB,EAAOhhB,SAGpB,CAQQ8oB,uBAAuB9oB,EAAmBC,GAC9C,MAAM,KAAEwoB,GAAS5xB,KAAKjF,MACtBiF,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OAAI6C,GAAYC,EAERvS,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKyrB,EAAI,CAAE/yB,KAAMuK,GAAa+c,EAAU,CAAElmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KACzGA,GAIN,IACX,CASQ8mB,oBAAoB9F,EAAuBhvB,GAAyC,IAAzBw2B,EAAAD,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,IAAAA,UAAA,GAC/D,MAAM,KAAEQ,GAASlyB,KAAKjF,MACtB,OACIlE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKlE,GAAW+2B,EAAI,CAAEV,QAASG,GAAY3xB,KAAK0rB,gBACjDvB,EAAOhhB,SAGpB,CAUQooB,YAAYY,EAAejB,EAA4BkB,EAAsBC,GACjF,MAAM,aAAEC,EAAY,SAAE9D,EAAQ,kBAAE+D,EAAiB,kBAAErH,EAAiB,aAAE7R,EAAY,uBAAEmZ,GAA2BxyB,KAAKjF,MAC9G03B,GACDpZ,GAAgB6R,GAAkD,OAA7BlrB,KAAKqG,MAAMukB,oBAAuD5zB,IAA7BgJ,KAAKqG,MAAMukB,gBAAgCyH,EACpHK,GACDrZ,GAAgBmZ,GAA0B90B,EAAAA,gBAAgBC,YAAYqC,KAAKqG,MAAMukB,iBAAmByH,EACnGM,EAAoB3yB,KAAK8pB,aAAe,GAAK2I,EAAuBH,EAAc9zB,UAAY,kBAEpG,OADAwB,KAAK8pB,aAAe,EAEhBjzB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKmsB,EAAY,CAAE9zB,UAAWm0B,IAC/B97B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGqoB,EAAQ,CACZhwB,UAAW+D,IACPisB,EAAShwB,UACT2zB,EACAM,GAAwB,gBACxBA,GACIzyB,KAAKjF,MAAMyS,OAAOwjB,kBAClBhxB,KAAKjF,MAAMyS,OAAOwjB,iBAAmB,GACrC,yBAGPE,GAELr6B,EAAAA,cAAA,OAAK2H,UAAU,4BACVi0B,GACGzyB,KAAKqG,MAAMukB,eACX5qB,KAAKqG,MAAMukB,cAAczrB,KAAI0jB,IAAI,IAAA+P,EAAA,OAC7B/7B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKwjB,EAAKwH,KAASkI,EAAiB,CAAE/zB,UAAW+zB,EAAmB/zB,YACrEwB,KAAKqG,MAAMukB,eAAiB5qB,KAAKksB,kBAAkBrJ,GACnD6P,GAA6B1yB,KAAKiyB,uBAAuBpP,EAAKyH,QAAkC,QAA3BsI,EAAE/P,EAAKuD,4BAAoB,IAAAwM,OAAA,EAAzBA,EAA2BxpB,SAChG,KAK/B,CAyFQsiB,gBACC1rB,KAAKjF,MAAMse,cACZrZ,KAAKiO,SAAS,CAAE+c,gBAAYh0B,GAEpC,EAmEJ,qFC7nBA,MAgEM67B,EAA0BA,CAC5BC,EACAC,EACAC,EACAC,IAEOp8B,EAAAA,aACHi8B,EAAWtS,MACX,CAAC,EACDsS,EAAW1U,YACX8U,EAAgBJ,EAAYC,EAAYC,EAAgBC,GACxDH,EAAWK,aAIbD,EAAkBA,CACpBn4B,EACAg4B,EACAC,EACAC,IAEID,EACOn8B,EAAAA,aAAmBkE,EAAM0lB,UAAW,CAAC,EAAG2S,EAAWJ,EAAgBC,GAAmBI,EAAcN,IAExG,KAGLM,EAAiBt4B,IACnB,MAAM,SAAEu4B,EAAQ,oBAAEC,EAAmB,wBAAEC,GAA4Bz4B,EACnE,OAAIu4B,EAEIz8B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKqtB,GACN38B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKotB,GACLD,EAASn0B,KAAI,CAACkzB,EAASl3B,IACpBtE,EAAAA,cAACA,EAAAA,SAAc,CAACwI,IAAKlE,GAAQk3B,OAM1C,IAAI,EAGTe,EAAaA,CAACr4B,EAAyBk4B,KACzC,MAAM,iBAAEQ,EAAgB,eAAET,GAAmBj4B,EAC7C,OAAIi4B,IAAmBC,EACZp8B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKstB,GAAmBT,GAEjC,IAAI,EAGTU,EAA2B34B,IAC7B,MAAM,2BAAE44B,EAA0B,sBAAEC,EAAqB,2BAAEC,GAA+B94B,EAC1F,OAAI64B,EAEI/8B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKwtB,GACLC,EAAsBz0B,KAAI,CAAC20B,EAAU34B,IAClCtE,EAAAA,cAACA,EAAAA,SAAc,CAACwI,IAAKlE,GAChB24B,EACAF,GAAyBA,EAAsBz4B,EAAQ,IAAM04B,MAO3E,IAAI,EAGTE,EAAeh5B,IACjB,MAAM,MAAEyE,EAAK,eAAEw0B,GAAmBj5B,EAClC,OAAIyE,EAEI3I,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK6tB,GACNn9B,EAAAA,cAAA,UACK2I,EAAMy0B,YACNz0B,EAAM00B,UAAS,IAAG10B,EAAM20B,WAAU,MAK5C,IAAI,EAGf,EApJ6Ep5B,IAAQ,IAAAq5B,EACjF,MAAM,sBACFC,EAAqB,SACrBC,EAAQ,WACRC,EAAU,kBACVC,EAAiB,wBACjBC,EAAuB,cACvBC,EAAa,SACbrd,EAAQ,YACRsd,EAAW,kBACXC,EAAiB,eACjBC,EAAc,WACd9B,EAAU,kBACV+B,EAAiB,cACjBC,EAAa,qBACbC,EAAoB,iCACpBC,EAAgC,aAChClV,EAAY,uBACZmV,EAAsB,mBACtBC,GACAp6B,EACEk4B,EAAmE,QAAnDmB,EAAGr5B,EAAMqR,QAAQ2C,cAAchG,eAAe2Y,aAAK,IAAA0S,OAAA,EAAhDA,EAAkDgB,eAC3E,OAAI/d,EAEIxgB,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKkuB,GACPS,GAAqBpB,EAAwBoB,GAC7Cf,EAAYc,GACZH,EACAC,EACA9B,EAAwB+B,EAAmB7B,EAAYgC,EAAe9B,GACvEp8B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+uB,GAAyBC,GACnCt+B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKquB,GACLzU,EACAuU,GAEJC,GAKT19B,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKkuB,GACPS,GAAqBj+B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK6uB,GAAuBtB,EAAwBoB,IAC/Ej+B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK8uB,GACLlC,GAAcM,EAAcN,GAC7Bl8B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKsuB,GACN59B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+uB,GAAyBC,GACnCt+B,EAAAA,cAAA,OAAK2H,UAAU,iDACVq2B,GAAkBd,EAAYc,GAC9BH,GAEL79B,EAAAA,cAAA,OAAK2H,UAAU,6CACVu2B,IAAkB9B,GAAoBG,EAAW2B,IAEtDl+B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKquB,GACLzU,EACAuU,GAEJC,IAGJ,kBC7CV,IAAKc,EASAC,2BATZ,SAAYD,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,oBACH,CAHD,CAAYA,IAAAA,EAAe,KAS3B,SAAYC,GACRA,EAAA,UACAA,EAAA,eACH,CAHD,CAAYA,IAAAA,EAAU,ktBCUtB,MAAMC,UAAuB1+B,EAAAA,cAyBzB+I,YAAY7E,GACR8E,MAAM9E,GAjBF,KAAAy6B,UAAoB,EAEpB,KAAAC,OAAiB,EAmPR,KAAAC,qBAAwBC,IACrC,OAAQA,GACJ,IAAI,mBACA31B,KAAKw1B,UAAW,EAChBx1B,KAAKy1B,OAAQ,EACb,MACJ,IAAI,UACAz1B,KAAKw1B,UAAW,EAChBx1B,KAAKy1B,OAAQ,EACb,MACJ,IAAI,MACAz1B,KAAKw1B,UAAW,EAChBx1B,KAAKy1B,OAAQ,EAET,EAjPZz1B,KAAK41B,gBAAkB51B,KAAK41B,gBAAgBjI,KAAK3tB,MACjDA,KAAK61B,SACD96B,EAAMqR,QAAQK,SAAW1R,EAAMqR,QAAQK,QAAQqpB,QAAgD,WAAtC/6B,EAAMqR,QAAQK,QAAQqpB,OAAOC,KAAoB,KAAO,KACrH/1B,KAAK01B,qBAAqB11B,KAAKjF,MAAMyS,QAAUxN,KAAKjF,MAAMyS,OAAOwoB,sBACjEh2B,KAAKqG,MAAQ,CAAEgR,SAAUrX,KAAKqX,UAC9BrX,KAAKmwB,aAAe,EACxB,CAjBO8F,uBAAuBngB,EAAgBogB,GAC1C,IAAIC,EAKJ,OAJIrgB,GAAUogB,GAAoBA,EAAiBx5B,OAAS,IACxDy5B,EAAkBD,EAAiBr4B,MAAKglB,GAAQA,EAAKuT,SAAUt6B,gBAAkBga,EAAOha,iBAGrFq6B,GAAmBA,EAAgBjO,IAC9C,CAYc7Q,eACV,MAAyB,OAAlBrX,KAAK61B,UAAuC,OAAlB71B,KAAK61B,QAC1C,CAEO5zB,oBACC0mB,EAAAA,GAASiF,YACT5tB,KAAKq2B,6BAA8BC,EAAAA,EAAAA,mBAAkBhyB,OAAQ,SAAUtE,KAAK41B,kBAEhF51B,KAAK41B,iBACT,CAEO7H,uBACCpF,EAAAA,GAASiF,WACTtpB,OAAO0pB,oBAAoB,SAAUhuB,KAAKq2B,6BAA8B,EAEhF,CAEO/zB,SAAM,IAAAi0B,EAAAC,EAET,GADAx2B,KAAKmwB,aAAenwB,KAAKy2B,YACrBC,EAAAA,EAAAA,IAAoB12B,KAAKjF,MAAMiR,MAE/B,OADAhM,KAAKjF,MAAM+T,UAAUoD,MAAM,+BACpB,KAGX,MAQMwG,EAASlJ,EAAAA,EAAAA,EAAA,GACRxP,KAAKjF,OACLiF,KAAKqG,OAAK,IACbskB,cAXyC,CACzC4B,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCgK,GAAI,CAAElK,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCI,UAAU,GAOVI,aAAcntB,KAAKjF,MAAMqR,QAAQK,QAAQ0gB,aACzCiB,WAAY,CACRxV,YAAa5Y,KAAKjF,MAClByD,UAAW+D,IAAW,SAAUvC,KAAKjF,MAAMyS,OAAOhP,UAAWwB,KAAKqG,MAAMgR,SAAW,YAAc,cACjGjM,IAAK,MACL1I,KAAM1C,KAAKqX,SAAW,UAAY,cAEtCmX,SAAU,CACNhwB,UAAW,eACX4M,IAAK,KACL1I,KAAM1C,KAAKqX,SAAW,UAAY,QAEtC6Y,SAAU,CACN1xB,UAAW,qBACXkE,KAAM,eACN0I,IAAK,MAET8f,kBAAyD,QAAxCqL,EAAEv2B,KAAKjF,MAAMyS,OAAOopB,4BAAoB,IAAAL,GAAAA,EACzD/D,uBAAiE,QAA3CgE,EAAEx2B,KAAKjF,MAAMyS,OAAOqpB,+BAAuB,IAAAL,GAAAA,EACjE5E,KAAM,CACFxmB,IAAK,IACL5M,UAAW,2BACXkE,KAAM1C,KAAKqX,SAAW,SAAW,YAErCib,aAAc,CACVlnB,IAAK,MACL5M,UAAW,mBAEf+zB,kBAAmB,CACfnnB,IAAK,MACL5M,UAAW,iBACXkE,KAAM,YAEV6I,OAAQ,CACJ/M,UAAW,6BACX4M,IAAK,SACL1I,KAAM1C,KAAKqX,SAAW,SAAW,WACjCpX,QAASD,KAAKjF,OAElB+7B,eAAgB,CACZt4B,UAAW,6BAEf0zB,KAAM,CACF1zB,UAAW,2BACX4M,IAAK,QAET2rB,2BAA4B,CACxBv4B,UAAW,mCAEfw4B,iBAAkB,CACdx4B,UAAW,0CACX4M,IAAK,SACL,aAAcpL,KAAKjF,MAAMvD,UAAUy/B,oBACnCh3B,QAASD,KAAKjF,OAElBm8B,uBAAwB,CACpB14B,UAAW,wCACX4M,IAAK,QAETiO,aAAcrZ,KAAKqG,MAAMgR,SACzB8W,aAAcnuB,KAAKmwB,aACnB3xB,UAAW+D,IAAW,SAAUvC,KAAKjF,MAAMyS,OAAOhP,aAGtD,OAAOwB,KAAKjF,MAAMygB,WAAW9C,EACjC,CAEQ+d,WACJ,MAAM,KAAEzqB,EAAI,OAAEwB,GAAWxN,KAAKjF,MACxBo8B,EAA8B,GAYpC,OAXIn3B,KAAKw1B,UAAYxpB,GAAQA,EAAKorB,YAAcprB,EAAKorB,WAAWlrB,QAAUF,EAAKorB,WAAWlrB,OAAOxP,OAAS,GACtGsP,EAAKorB,WAAWlrB,OAAO/M,KAAI,CAAC0jB,EAAyB1nB,IACjDg8B,EAAW18B,KAAKuF,KAAKq3B,uBAAuBxU,OAAM7rB,GAAW,EAAMmE,GAAO,MAI9E6E,KAAKy1B,OAASjoB,EAAO8pB,aAAe9pB,EAAO8pB,YAAY56B,OAAS,GAChE8Q,EAAO8pB,YAAYn4B,KAAI,CAAC0jB,EAAwBsO,IAC5CgG,EAAW18B,KAAKuF,KAAKq3B,4BAAuBrgC,EAAW6rB,GAAM,EAAOsO,EAAM,MAG3EnxB,KAAKu3B,0BAA0BJ,EAC1C,CAEQI,0BAA0BJ,GAA2B,IAAAK,EAAAC,EAEzD,KAD0D,QAAlCD,EAAGx3B,KAAKjF,MAAMyS,OAAOkqB,qBAAa,IAAAF,GAAAA,GAEtD,OAAOL,EAEX,MAAMQ,EAAsC,GACtCC,EAAU,CACZvwB,GAAI,EACJ8B,SAA8C,QAAtCsuB,EAAEz3B,KAAKjF,MAAMyS,OAAOqqB,0BAAkB,IAAAJ,EAAAA,EAAI,MAClDzH,QAAS,IACT7E,iBAAan0B,EACb43B,QAASuI,GAIb,OAFAQ,EAAmBl9B,KAAKm9B,GAEjBD,CACX,CAEQN,uBACJS,EACAC,EACAvC,EACArE,EACA6G,GAEA,MAAMliB,EACF9V,KAAKjF,MAAMqR,SAAWpM,KAAKjF,MAAMqR,QAAQK,SAAWzM,KAAKjF,MAAMqR,QAAQK,QAAQqJ,OACzE9V,KAAKjF,MAAMqR,QAAQK,QAAQqJ,OAC3B,SACJ,2BAAEmiB,GAA+Bj4B,KAAKjF,MAAMyS,OAC5C0qB,EAAeH,GAAWA,EAAQ5uB,UAAa,IAC/C,cAAEgvB,GAAkBn4B,KAAKjF,MAAMvD,UAG/B4gC,EACFN,IACAG,aAA0B,EAA1BA,EAA4B36B,QAAO+6B,IAAS,IAAAC,EAAAC,EAAA,OAA0B,QAAtBD,EAAAD,EAAUG,oBAAY,IAAAF,OAAA,EAAtBA,EAAwBx8B,kBAAkBg8B,SAAgB,QAANS,EAAVT,EAAYW,YAAI,IAAAF,OAAA,EAAhBA,EAAkBz8B,cAAc,KAG9H,IAAIqvB,EAAsB,QAIX,IAADuN,EAAAC,EAAd,OAHIj7B,EAAAA,gBAAgBC,YAAYm6B,aAAU,EAAVA,EAAYc,SAAWd,EAAYc,OAAO,GAAGC,MACzE1N,EAAc2M,EAAYc,OAAO,GAAGC,KAEpCrD,EACO,CACHnuB,GAAIkuB,EAAeuD,eACnB3vB,SAA8E,QAAtEuvB,EAAEnD,EAAewD,gBAAgBjjB,EAAQgiB,aAAU,EAAVA,EAAYkB,yBAAiB,IAAAN,EAAAA,EAAI,GAClF1I,QAAS8H,aAAU,EAAVA,EAAYmB,IACrB9N,cACAyD,QAAS5uB,KAAKk5B,mBAAmBpB,EAAY3M,EAAa6M,GAC1DzN,mBAAoBvqB,KAAKjF,MAAMyS,OAAOqpB,yBAA2BuB,EACjEe,WAAY7D,EAAAA,EAAW8D,OACvBlwB,UAAW,GAAuE,QAAvEyvB,EAAGpD,EAAewD,gBAAgBjjB,EAAQgiB,aAAU,EAAVA,EAAYkB,yBAAiB,IAAAL,EAAAA,EAAI,MAAMR,KAG7F,CACH9wB,GAAIkuB,EAAe8D,gBACnBlwB,SAAU+uB,EACVlI,QAAU+H,GAAWA,EAAQ3uB,SAAW2uB,EAAQ3uB,QAAQC,gBAAmB,GAC3EiwB,oBAAsBvB,GAAWA,EAAQwB,WAAaxB,EAAQwB,UAAUlwB,gBAAmB,GAC3F8hB,YAAc4M,GAAWA,EAAQvN,OAASuN,EAAQvN,MAAMH,KAAQ,GAChEuE,QAAS5uB,KAAKw5B,sBAAsBzB,GACpCoB,WAAY7D,EAAAA,EAAWmE,IACvB3H,iBAAkBiG,aAAO,EAAPA,EAASzuB,aAC3BJ,UAAW,GAAGgvB,KAAeC,IAErC,CAEQe,mBAAmBpF,EAA8B4F,GAAsD,IAA7B1B,EAAAtG,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,IAAAA,UAAA,GAC9E,MAAMiI,EAAkC,GACxC,OAAK7F,GAAaA,EAAS8F,UAAyC,IAA7B9F,EAAS8F,SAASl9B,SAGpDsD,KAAKjF,MAAMyS,OAAOkqB,eAAiBM,GACpC2B,EAAel/B,KAAK,CAChB0O,SAAUnJ,KAAKjF,MAAMvD,UAAUqiC,oBAC/B1O,YAAauO,EACb1J,SAAS8J,EAAAA,EAAAA,gBAAehG,EAAW9zB,KAAKjF,MAAMqR,QAAuC,CAAC,KAG9F0nB,EAAS8F,SAASz6B,KAAI,CAAC0jB,EAAyB1nB,KAC5Cw+B,EAAel/B,KAAKuF,KAAKq3B,uBAAuBxU,OAAM7rB,GAAW,EAAMmE,GAAO,GAAO,IAElFw+B,GAZI,EAaf,CAEQH,sBAAsB1F,GAC1B,MAAM6F,EAAkC,GAExC,OAAK7F,GAAaA,EAASvD,UAAyC,IAA7BuD,EAASvD,SAAS7zB,QAIzDo3B,EAASvD,SAASpxB,KAAI,CAAC0jB,EAAqBsO,KACxCwI,EAAel/B,KAAKuF,KAAKq3B,4BAAuBrgC,EAAW6rB,GAAM,EAAOsO,GAAK,IAE1EwI,GANI,EAOf,CAoBQ/D,kBACJ51B,KAAK61B,SAAW71B,KAAK+5B,eACrB/5B,KAAKiO,SAAS,CAAEoJ,SAAUrX,KAAKqX,UACnC,CAEQ0iB,eACJ,MAAM,QAAE3tB,GAAYpM,KAAKjF,MAGzB,GAAIqR,EAAQK,SAAWL,EAAQK,QAAQqpB,QAA0C,WAAhC1pB,EAAQK,QAAQqpB,OAAOC,KACpE,MAAO,KAGX,GAAIpN,EAAAA,GAASiF,WAAatpB,OAAO01B,WAAY,CACzC,MAAM7M,EAAe/gB,EAAQK,QAAQ0gB,aACrC,GAAIA,EACA,OAAIA,EAAaX,IAAMloB,OAAO01B,YAAc7M,EAAaX,GAAGE,EACjD,KACAS,EAAaP,IAAMtoB,OAAO01B,YAAc7M,EAAaP,GAAGF,EACxD,KACAS,EAAaN,IAAMvoB,OAAO01B,YAAc7M,EAAaN,GAAGH,EACxD,KACAS,EAAaL,IAAMxoB,OAAO01B,YAAc7M,EAAaL,GAAGJ,EACxD,KAEJ,IAAI,CAInB,MAAO,IACX,EA7Se6I,EAAA8D,cAAwBhE,EAAAA,EAAgBoE,IAExClE,EAAAuD,aAAuBzD,EAAAA,EAAgB+D,QAWtDz1B,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAsBDD,EAAAA,EAAAA,IAAA,CAATmiB,EAAAA,IAAQ,6BA8Qb,4JC/TO,MAAM+D,UAA2BhzB,EAAAA,cAapC+I,YAAY7E,GACR8E,MAAM9E,GAXF,KAAA+uB,aAAuB,EAmTd,KAAAG,qBAAuB,CAACC,EAA0BC,IAA0B,KACzF,MAAMhhB,EAAWghB,GAAUA,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GACzDihB,EAAiC,CAAC,CAAEC,IAAKH,EAAkBI,QAASnhB,IAGtEzL,EAAAA,gBAAgBC,YAAYwsB,EAAOI,qBACnCJ,EAAOI,mBAAmBprB,KAAI0jB,IAC1B,GAAIA,GAAQA,EAAK2H,MAAO,CACpB,MAAMC,EAAW5H,EAAK2H,MAAMH,IACtBK,EAA+B7H,EAAK2H,MAAMG,cAChDP,EAAiB3vB,KAAK,CAClB4vB,IAAKI,EACLH,QAASzH,EAAKrJ,KACdmR,cAAeD,EACftE,qBAAsB,CAAEhd,QAASyZ,EAAKzZ,QAAQC,iBAC/C,KAIfrJ,KAAKiO,SAAS,CACV2c,cAAeR,EAAiB1tB,OAAS,EAAI0tB,EAAmB,CAAC,CAAEC,IAAK,UACxEQ,qBAAsB1hB,GACxB,EAGW,KAAA2hB,sBAAwB,CAAC9e,EAAqB+e,IAAsB,KAC5E/qB,KAAKjF,MAAMse,cASZwQ,EAAmBoQ,aAAc,EACjCj6B,KAAKiO,SAAS,CACV+c,WAAYhf,EAAK3E,GACjB6yB,oBAAqBluB,EAAK7C,SAC1B8hB,WAAYF,MAZhB/qB,KAAKiO,SAAS,CACV+c,WAAYhrB,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAehf,EAAK3E,QAAMrQ,EAAYgV,EAAK3E,GAC3F4jB,WAAYF,IAEZ/qB,KAAKjF,MAAMmwB,mBACXlrB,KAAKiqB,qBAAqBje,EAAKmf,YAAcnf,EAA7ChM,GAQD,EAIM,KAAAm6B,cAAgB,IAAM,KACnCtQ,EAAmBoQ,aAAc,EACjCj6B,KAAKiO,SAAS,CAAE+c,WAAYhrB,KAAKqG,MAAM4kB,YAAa,EAOvC,KAAAK,oBAAuB3mB,IAChC3E,KAAKqrB,SAAS/qB,UAAYN,KAAKqrB,SAAS/qB,QAAQirB,SAAS5mB,EAAM/F,SAC/DoB,KAAKiO,SAAS,CACV+c,gBAAYh0B,EACZkjC,oBAAqB,GACrBtP,cAAe,MAChB,EAQM,KAAAY,oBAAuB7mB,IAChC3E,KAAKqrB,SAAS/qB,UAAYN,KAAKqrB,SAAS/qB,QAAQirB,SAAS5mB,EAAM8mB,gBAC/DzrB,KAAK0rB,eAAgB,EAWZ,KAAA0O,uBAAyB,CAACj/B,EAAe++B,EAA8BG,KAC/ExQ,EAAmBoQ,aAAyB,IAAV9+B,MAGlCk/B,IAAmBH,IAGjBA,IAAwBG,EASlB,KAAAnO,kBAAqBtB,IAClC,IAAKA,IAAkBA,EAAcP,IACjC,OAAO,KAGX,MACMiC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCI,UAAU,GAEuB,IAADtkB,EAAAukB,EAApC,YAAyBh2B,KAVAo1B,EAAAA,EAAAA,kBAAiB,GAAGxB,EAAcP,MAAOrqB,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eAAesjB,aAY1Gx1B,EAAAA,cAACq2B,EAAAA,GAAKhnB,OAAAC,OAAA,CACF4C,eAAgB/I,KAAKjF,MAAMqR,QAAQ2C,cAAchG,eACjDvK,UAAU,sBACNosB,EAAa,CACjBuC,aAAcntB,KAAKjF,MAAMqR,QAAQK,QAAQ0gB,aACzCxC,cAAqF,QAAxEliB,EAA6B,QAA7BukB,EAAEpC,EAAcD,qBAAa,IAAAqC,EAAAA,EAAIhtB,KAAKjF,MAAMyS,OAAO4f,6BAAqB,IAAA3kB,EAAAA,EAAI6jB,EACzFe,oBAAoB,OACpB3qB,KAAK,WACL2E,GAAG,kCACHijB,QAASM,EAAcN,WAI5B,IAAI,EAraXtqB,KAAKqrB,SAAWx0B,EAAAA,YAChBmJ,KAAKs6B,YAAczjC,EAAAA,YACnBmJ,KAAKqG,MAAQ,CAAE2kB,gBAAYh0B,EAAWkjC,oBAAqB,GAAIjP,gBAAYj0B,EAAW6zB,qBAAsB,IAC5G7qB,KAAK0rB,cAAgB1rB,KAAK0rB,cAAciC,KAAK3tB,MAC7CA,KAAKoD,kBAAmB0R,EAAAA,EAAAA,oBACpB9U,KAAKjF,MAAMqR,QAAQK,QAAQsI,kBAC3B/U,KAAKjF,MAAMia,aACXhV,KAAKjF,MAAM+T,WAEf9O,KAAKsG,SAAUC,EAAAA,EAAAA,kBAAiB,QAASvG,KAAKoD,iBAAkB,GAAI,GACxE,CAEOnB,oBACC0mB,EAAAA,GAASiF,YACT1O,SAAS2O,KAAKC,iBAAiB,YAAa9tB,KAAKsrB,qBACjDpM,SAAS2O,KAAKC,iBAAiB,WAAY9tB,KAAKwrB,qBAExD,CAEO1pB,qBAAkB,IAAAy4B,EACO,QAAxBA,EAAAv6B,KAAKs6B,YAAYh6B,eAAO,IAAAi6B,GAAxBA,EAA0BC,SAAS,IAAMx6B,KAAKjF,MAAMse,cACnDrZ,KAAKs6B,YAAYh6B,QAAQk6B,SAAS,GAAmB/nB,OAE9D,CAEOsb,uBACCpF,EAAAA,GAASiF,YACT1O,SAAS2O,KAAKG,oBAAoB,YAAahuB,KAAKsrB,qBAAqB,GACzEpM,SAAS2O,KAAKG,oBAAoB,WAAYhuB,KAAKwrB,qBAAqB,GAEhF,CAEOlpB,SACH,MAAM,aAAE+W,EAAY,SAAEmV,EAAQ,iBAAEwI,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAE9I,GAAepuB,KAAKjF,MAG1H,OADAiF,KAAK8pB,aAAe,EAEhBjzB,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GACCioB,EAAU,CACd5vB,UAAW+D,IAAW6rB,EAAW5vB,UAAW6a,QAA0CriB,IAA1BgJ,KAAKqG,MAAM2kB,WAA2B,QAAU,YAE5Gn0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKqoB,EAAQ,CAAEvrB,IAAKjD,KAAKqrB,SAAUoD,SAAS,OAC5CpV,QAA0CriB,IAA1BgJ,KAAKqG,MAAM2kB,YACxBn0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK4wB,GACNlgC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK6wB,EAAgB,CAAE/2B,QAASD,KAAKm6B,mBAC1CtjC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+wB,GAAyBl3B,KAAKqG,MAAM6zB,sBAGrDl6B,KAAK0uB,kBAItB,CAEQA,iBACJ,MAAM,SAAEwB,EAAQ,aAAE/B,EAAY,aAAE9U,GAAiBrZ,KAAKjF,OAChD,WAAEiwB,GAAehrB,KAAKqG,MACtB8pB,EAA8B,GAEpC,GAAI9W,QAA+BriB,IAAfg0B,GAA4BmD,EAAazxB,OAAS,EAAG,CACrE,IAAI2xB,EAA0B,CAAC,EAC/B,IAAK,MAAM+B,KAAiBjC,EAAc,CACtC,GAAIiC,GAAiBA,EAAc/oB,KAAO2jB,EAAY,CAClDqD,EAAW+B,EACVvG,EAAmBoQ,YAEdj6B,KAAKiO,SAAS,CAAEgd,gBAAYj0B,EAAWkjC,oBAAqB9J,EAAcjnB,WAD1EnJ,KAAKiO,SAAS,CAAEgd,gBAAYj0B,IAElC,KAAM,CAGV,GADAq3B,EAAWruB,KAAKqwB,gBAAgBD,GAC5B/B,GAAYA,EAAShnB,KAAO2jB,EAC5B,MAIRqD,GACI8B,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKgvB,EAAShnB,IAAQ6oB,GACvB,IACAlwB,KAAKswB,oBAAoBjC,GAAW,KAE3C,MAENF,EAAajI,SAAQ,CAACrD,EAAqB1nB,KACvCg1B,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKlE,GACD+0B,EAAQ,CACZjtB,IAAKjD,KAAKo6B,uBAAuBj/B,EAAO6E,KAAKqG,MAAM6zB,oBAAqBrX,EAAK1Z,UAAYnJ,KAAKs6B,YAAc,OAE3Gt6B,KAAKswB,oBAAoBzN,IAEjC,IAIT,OAAOsN,CACX,CAEQE,gBAAgBxN,GACpB,MAAM0N,EAAW1N,GAAQA,EAAK+L,QAC9B,GAAI2B,GAAYA,EAAS7zB,OAAS,EAC9B,IAAK,IAAI8zB,EAAI,EAAGA,GAAKD,EAAS7zB,OAAS,EAAG8zB,IAAK,CAC3C,GAAID,EAASC,GAAGnpB,KAAOrH,KAAKqG,MAAM2kB,WAI9B,OAHCnB,EAAmBoQ,YAEdj6B,KAAKiO,SAAS,CAAEgd,WAAYpI,GAAQA,EAAKxb,GAAI6yB,oBAAqB3J,EAASC,GAAGrnB,WAD9EnJ,KAAKiO,SAAS,CAAEgd,WAAYpI,aAAI,EAAJA,EAAMxb,KAEjCkpB,EAASC,GAEpB,MAAMC,EAAQzwB,KAAKqwB,gBAAgBE,EAASC,IAC5C,GAAIC,EACA,OAAOA,CAAK,CAKxB,OADAzwB,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,iDAC5B,IACX,CAEQoe,oBAAoBnC,GACxB,OAAIA,GAAgBA,EAAaS,SAAWT,EAAaS,QAAQlyB,OAAS,EAClEsD,KAAKjF,MAAMse,mBAA0CriB,IAA1BgJ,KAAKqG,MAAM2kB,WAC/BhrB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,IAAI,GAGlExQ,EAAAA,cAAAA,EAAAA,SAAA,KACKmJ,KAAK2wB,sBAAsBxC,GAC3BnuB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,IAAI,IAG7D8mB,GAAgBA,EAAahlB,UAAYglB,EAAa6B,SAAW7B,EAAa6B,QAAQtzB,OAAS,EAC/FsD,KAAK8uB,oBAAoBX,EAAcA,EAAa9mB,IAAI,GAAO,GAC/D8mB,GAAgBA,EAAahlB,WAAaglB,EAAa6B,QACvDhwB,KAAKiwB,oBAAoB9B,EAAcA,EAAa9mB,IAAI,IAEnErH,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,yDAC5B,KACX,CAEQwe,eAAeH,EAA4BvF,EAAqB4F,GACpE,MAAM,aAAEvX,EAAY,SAAE6W,GAAalwB,KAAKjF,MAClC81B,EAAyB7wB,KAAKjF,MAAMyS,OAAOsjB,uBAAwB,EACnEC,EAA0B/wB,KAAKjF,MAAMyS,OAAOwjB,kBAAoB,EAGtE,GAAIhG,GAAchrB,KAAKqG,MAAM2kB,aAAeA,EAExC,OADAhrB,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,gEAC5B,KAGX,IAAKqe,GAAgC,IAApBA,EAAS7zB,OAEtB,OADAsD,KAAKjF,MAAMqR,QAAQ0C,UAAUoD,MAAM,4DAC5B,KAGX,IAAI+e,EAAyB,GAC7B,MAAMC,EACFX,GACAA,EAASpxB,KAAI,CAACgrB,EAAuBgH,KACjC,MAAMC,EAAajH,EAAOyE,SAAWzE,EAAOyE,QAAQlyB,OAAS,EAC7D,IAAI2xB,EAOAO,EALAP,EADA+C,GAAc/X,EACHrZ,KAAK2wB,sBAAsBxG,EAAQa,EAAYmG,GAE/ChH,EAAO6F,QAAUhwB,KAAK8uB,oBAAoB3E,EAAQgH,GAAOnxB,KAAKiwB,oBAAoB9F,GAIjG,MAAMkH,EAAcD,GAAcP,GAA0B7wB,KAAK8pB,cAAgB5yB,KAAKo6B,MAAMP,GAA2B,EAMvH,OALIM,IACArxB,KAAK8pB,eACLmH,EAAiBJ,EAAyB,SAAS7wB,KAAK8pB,aAAa3mB,aAAe,GACpFyrB,EAAU5uB,KAAK0wB,eAAevG,EAAOyE,QAASvV,EAAe8Q,EAAO9iB,QAAKrQ,GAAW,IAGpFH,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACG+pB,EAAQ,CACZ7wB,IAAK8qB,EAAO9iB,GACZ7I,UAAW+D,IAAW2tB,EAAS1xB,UAAW6yB,GAAe,eACzDpuB,IAAKjD,KAAKo6B,uBAAuBjJ,EAAKnxB,KAAKqG,MAAM6zB,oBAAqB/P,EAAOhhB,UAAYnJ,KAAKs6B,YAAc,OAE3GjM,EACAO,EACE,IAGnB,OAAO5uB,KAAKuxB,YAAYN,EAAgBC,EAAalG,EAAY4F,EACrE,CAEQD,sBAAsBxG,EAAuBa,EAAqB7vB,GACtE,MAAM,OAAEoQ,GAAWvL,KAAKjF,MACxB,OACIlE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKlE,GACDoQ,EAAM,CACVtL,QAASD,KAAK8qB,sBAAsBX,EAAQa,GAC5CwG,QAASxxB,KAAK0rB,cAAa,kBACV1rB,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,mBAC5DrH,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,cAClE2jB,IAEZb,EAAOhhB,SAGpB,CAEQ2lB,oBACJ3E,EACAhvB,GAEyB,IADzBs2B,IAAAC,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,KAAAA,UAAA,GACAC,EAAAD,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,IAAAA,UAAA,GAEA,MAAM,KAAEE,GAAS5xB,KAAKjF,MAChBoO,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GAC/C0oB,EAAc1H,EAAOgB,YAAchB,EAAOgB,YAAc,GAC9DnrB,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OACIzP,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGyrB,EAAI,CACRvyB,IAAKlE,EACLq2B,QAASG,GAAY3xB,KAAK0rB,cAC1B9sB,OAAQurB,EAAO2H,iBAAmB,cAAW96B,EAC7C+6B,YAAaN,GAAezxB,KAAKiqB,qBAAqB4H,EAAa1H,GACnEtrB,KAAMsrB,EAAO6F,SACT7J,EAAU,CACdlmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KAE9DghB,EAAOhhB,SAGpB,CAEQ8oB,uBAAuB9oB,EAAmBC,GAC9C,MAAM,KAAEwoB,GAAS5xB,KAAKjF,MACtBiF,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OAAI6C,GAAYC,EAERvS,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKyrB,EAAI,CAAE/yB,KAAMuK,GAAa+c,EAAU,CAAElmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KACzGA,GAIN,IACX,CAEQ8mB,oBAAoB9F,EAAuBhvB,GAAyC,IAAzBw2B,EAAAD,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,IAAAA,UAAA,GAC/D,MAAM,KAAEQ,GAASlyB,KAAKjF,MACtB,OACIlE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKlE,GAAW+2B,EAAI,CAAEV,QAASG,GAAY3xB,KAAK0rB,gBACjDvB,EAAOhhB,SAGpB,CAEQooB,YAAYY,EAAejB,EAA4BkB,EAAsBC,GACjF,MAAM,aAAEC,EAAY,SAAE9D,EAAQ,kBAAE+D,EAAiB,kBAAErH,EAAiB,uBAAEsH,EAAsB,aAAEnZ,GAAiBrZ,KAAKjF,MAC9G03B,GACDpZ,IACA6R,GAAqBsH,KACrB90B,EAAAA,gBAAgBC,YAAYqC,KAAKqG,MAAMukB,iBACvCyH,EACCK,GACDrZ,GAAgBmZ,GAA0B90B,EAAAA,gBAAgBC,YAAYqC,KAAKqG,MAAMukB,iBAAmByH,EACnGM,EAAoB3yB,KAAK8pB,aAAe,GAAK2I,EAAuBH,EAAc9zB,UAAY,kBAEpG,OADAwB,KAAK8pB,aAAe,EAEhBjzB,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKmsB,EAAY,CAAE9zB,UAAWm0B,IAC/B97B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGqoB,EAAQ,CACZhwB,UAAW+D,IACPisB,EAAShwB,UACT2zB,EACAM,GAAwB,gBACxBA,GACIzyB,KAAKjF,MAAMyS,OAAOwjB,kBAClBhxB,KAAKjF,MAAMyS,OAAOwjB,iBAAmB,GACrC,yBAGPE,GAEJuB,GACGzyB,KAAKqG,MAAMukB,eACX5qB,KAAKqG,MAAMukB,cAAczrB,KAAI0jB,IAAI,IAAA+P,EAAA,OAC7B/7B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKosB,EAAiB,CAAElzB,IAAKwjB,EAAKwH,IAAK7rB,UAAW+zB,EAAmB/zB,YACrEwB,KAAKqG,MAAMukB,eAAiB5qB,KAAKksB,kBAAkBrJ,GACnD6P,GAA6B1yB,KAAKiyB,uBAAuBpP,EAAKyH,QAAkC,QAA3BsI,EAAE/P,EAAKuD,4BAAoB,IAAAwM,OAAA,EAAzBA,EAA2BxpB,SAChG,IAI3B,CA4FQsiB,gBACC1rB,KAAKjF,MAAMse,cACZrZ,KAAKiO,SAAS,CAAE+c,gBAAYh0B,EAAW4zB,cAAe,KAAMsP,oBAAqB,IAEzF,EAnZerQ,EAAAoQ,aAAuB,EAub1C,4FC7ZA,MAAMQ,UAAkB5jC,EAAAA,cAGpB+I,YAAmB7E,GACf8E,MAAM9E,GA0BO,KAAA2/B,sBAAyB/1B,IACtC,MAAMuN,EAA+B,KAAvBvN,EAAM/F,OAAO2E,MAAe,GAAKvD,KAAKqG,MAAM6L,MAC1DlS,KAAKiO,SAAS,CACV0sB,oBAAqBh2B,EAAM/F,OAAO2E,MAAMjH,OACxC4V,QACA0oB,WAAYj2B,EAAM/F,OAAO2E,OAC3B,EAOW,KAAAs3B,gBAAmBC,IAChC,IAAKA,EACD,OAEJ,MAAMC,EAAe/6B,KAAKqG,MAAMs0B,oBAEhCG,EACKE,aAAa,CAAEC,UAAWF,IAC1BG,MAAKhvB,IACoB,YAAlBA,EAAO6b,OAEP/nB,KAAKiO,SAAS,CAAE0sB,oBAAqB,GAAIzoB,MAAO,GAAI0oB,UAAU,IAClC,iBAArB1uB,EAAOivB,UACdn7B,KAAKiO,SAAS,CAAEiE,MAAOlS,KAAKjF,MAAMqgC,8BAElCp7B,KAAKiO,SAAS,CAAEiE,MAAOlS,KAAKjF,MAAMsgC,2BAA6B,IAGtE5nB,OAAM,KACHzT,KAAKiO,SAAS,CAAEiE,MAAOlS,KAAKjF,MAAMugC,+BAAgC,GACpE,EAQO,KAAAC,iBAAoBT,GAAuCn2B,IACxEA,EAAMa,iBACNxF,KAAK66B,gBAAgBC,EAAU,EAQlB,KAAAU,sBAAyBV,GAAsC,KAC5E96B,KAAK66B,gBAAgBC,EAAU,EAUlB,KAAAW,YAAc,CAACC,EAA8BC,EAAkCb,KAC5F,MAAM3U,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKjF,MAAMqI,iBAAmBpD,KAAKsG,SAE7E,OACIzP,EAAAA,cAAA,QAAMgR,SAAU7H,KAAKu7B,iBAAiBT,GAAYt8B,UAAU,kCACxD3H,EAAAA,cAAA,OAAK2H,UAAU,yBACX3H,EAAAA,cAAA,SACI2H,UAAU,4BACVyJ,SAAUjI,KAAK06B,sBACfn3B,MAAOvD,KAAKqG,MAAMs0B,oBAClB3yB,YAAa0zB,IAEjB7kC,EAAAA,cAAC0U,EAAAA,OAAMrF,OAAAC,OAAA,CACH3G,MAAOm8B,EACPn9B,UAAU,gCACVyB,QAASD,KAAKw7B,sBAAsBV,GACpChS,UAAW9oB,KAAKqG,MAAMu0B,UAClBzU,KAGT,EASE,KAAAyV,iBAAmB,CAACd,EAAmCn2B,KAA2B,IAAAk3B,EAC/F,IAAKf,EACD,OAEJ,MAAMgB,EAAqD,QAAjDD,EAAGl3B,EAAM0d,cAAcpd,aAAa,qBAAa,IAAA42B,EAAAA,EAAI,GAC/Df,EACKiB,iBAAiB,CACdC,WAAY,CAACF,KAEhBZ,MAAKhvB,IACoB,YAAlBA,EAAO6b,QACP/nB,KAAKiO,SAAS,CAAEiE,MAAO,IAAM,IAGpCuB,OAAM,KACHzT,KAAKiO,SAAS,CAAEiE,MAAOlS,KAAKjF,MAAMkhC,kCAAmC,GACvE,EAQO,KAAAC,wBAA2BnhC,IACxC,IAAKA,EAAMohC,OAASphC,EAAMohC,KAAKA,KAAKC,UAAY1+B,EAAAA,gBAAgBC,YAAY5C,EAAMohC,KAAKA,KAAKC,SACxF,OAOJ,MAAMC,EAA0B13B,IAC5B3E,KAAK47B,iBAAiB7gC,EAAMohC,KAAMx3B,EAAM,EAG5C,OACI9N,EAAAA,cAAAA,EAAAA,SAAA,KACKkE,EAAMohC,KAAKA,KAAKC,QAAQj9B,KAAKm9B,IAC1B,MAAMpzB,EAAYnO,EAAMwhC,4BAClBC,EAAAA,EAAAA,QAAOzhC,EAAMwhC,2BAA4BxhC,EAAM0hC,gBAAiBH,EAAO3tB,MACvE,GAEN,OACI9X,EAAAA,cAAA,OAAKwI,IAAKi9B,EAAO3tB,KAAMnQ,UAAU,kCAC7B3H,EAAAA,cAAA,OAAK2H,UAAU,8BACV,QACD3H,EAAAA,cAAA,QAAM2H,UAAU,mCAAmC89B,EAAO3tB,MACzD,YAEL9X,EAAAA,cAAC0U,EAAAA,OAAM,CACH/L,MAAOzE,EAAM0hC,gBACbj+B,UAAU,mCACVyB,QAASo8B,EAAsB,aACnBC,EAAO3tB,KAAI,aACXzF,IAEd,IAGf,EAjLPlJ,KAAKsG,SAAUC,EAAAA,EAAAA,kBAAiB,QAASvG,KAAKjF,MAAMqI,iBAAmBoD,EAAAA,kBAAkBk2B,gBACzF18B,KAAKqG,MAAQ,CACTs0B,oBAAqB,GACrBzoB,MAAO,GACP0oB,UAAU,EAElB,CAEOt4B,SACH,OACIzL,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAK2H,UAAU,0BAA0BwB,KAAKjF,MAAM4hC,sBACnD38B,KAAKy7B,YAAYz7B,KAAKjF,MAAM2gC,qBAAsB17B,KAAKjF,MAAM4gC,yBAA0B37B,KAAKjF,MAAMohC,MACnGtlC,EAAAA,cAAA,KAAG2H,UAAWwB,KAAKqG,MAAM6L,MAAQ,mBAAqB,GAAE,YAAY,aAC/DlS,KAAKqG,MAAM6L,OAEflS,KAAKk8B,wBAAwBl8B,KAAKjF,OAG/C,EAmKJ,4DCvNY6hC,gIAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,sBACH,CARD,CAAYA,IAAAA,EAAgB,KAsBrB,MAAMC,EAAmBA,CAAC9hC,EAAqC6vB,EAAuBkS,KACzF,MAAM3Q,GAAmBC,EAAAA,EAAAA,kBAAiB,GAAGxB,IAAiB7vB,EAAMgiC,SAAS3wB,QAAQ2C,cAAchG,eAAesjB,aAC5GC,EAAgD,CAClDC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCI,UAAU,GAEd,QAAyB/1B,IAArBm1B,EAAgC,CAAC,IAAD6Q,EAChC,MAAMC,EAAiC,CAAE5S,IAAK8B,GAC9C,OACIt1B,EAAAA,cAAC0S,EAAAA,GAAcrD,OAAAC,OAAA,CACX4C,eAAgBhO,EAAMgiC,SAAS3wB,QAAQ2C,cAAchG,eACrDvK,UAAU,sBACNy+B,EAAS,CACb9P,aAAcpyB,EAAMgiC,SAAS3wB,QAAQK,QAAQ0gB,aAC7CxC,cAA0D,QAA7CqS,EAAEjiC,EAAMgiC,SAASvvB,OAAO4f,6BAAqB,IAAA4P,EAAAA,EAAI1Q,EAC9De,oBAAoB,OACpB3qB,KAAK,WACL4nB,QAASwS,IACX,CAGV,OAAO,IAAI,ukBC/CR,MAAMI,UAAmCrmC,EAAAA,cAuB5C+I,YAAmB7E,GACf8E,MAAM9E,GArBO,KAAAoiC,eAAyBP,EAAiBQ,KAEnD,KAAAtT,aAAuB8S,EAAiBS,KAM/B,KAAArT,UAAoB4S,EAAiB5S,UAIrC,KAAAI,iBAA0C,GAmG1C,KAAAkT,cAAgB,KAC7Bt9B,KAAKiO,UAASsvB,IAAa,CACvBvS,WAAY,EACZwS,WAAYD,EAAcC,aAC3B,EA0QU,KAAAC,0BAA4B,CAACC,EAA4BzO,IAA0B,KAChG,MAAM,eAAEzB,GAAmBxtB,KAAKqG,MAC1BonB,EAAU,CAAE,CAACiQ,IAAWzO,GAC9BjvB,KAAKiO,SAAS,CAAEuf,eAAche,EAAAA,EAAA,GAAOge,GAAmBC,IAAY,EAmIvD,KAAAxD,qBAAuB,CAAC0T,EAA6BxT,IAA0B,KAC5F,MAAMhhB,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GAC/CihB,EAA0C,CAAC,CAAEC,IAAKsT,EAAqBrT,QAASnhB,IAGtF,GAAIzL,EAAAA,gBAAgBC,YAAYwsB,EAAOI,oBACnC,IAAK,MAAM1H,KAAQsH,EAAOI,mBAAoB,CAC1C,MAAMY,EAActI,EAAK2H,MAAMH,IAC/BD,EAAiB3vB,KAAK,CAClB4vB,IAAKc,EACLb,QAASzH,EAAKrJ,KACd4M,qBAAsB,CAAEhd,QAASyZ,EAAKzZ,QAAQC,iBAC/C,CAGXrJ,KAAKiO,SAAS,CACV2c,cAAeltB,EAAAA,gBAAgBC,YAAYysB,GAAoBA,EAAmB,CAAC,CAAEC,IAAK,WAC5F,EASW,KAAAS,sBAAwB,CAAC9e,EAAqB+e,IAAsB,KAC5E/qB,KAAKqG,MAAMu3B,cASZV,EAA2BjD,aAAc,EACzCj6B,KAAKiO,SAAS,CACV+c,WAAYhf,EAAK3E,GACjB6yB,oBAAqBluB,EAAK7C,SAC1B8hB,WAAYF,MAZhB/qB,KAAKiO,SAAS,CACV+c,WAAYhf,EAAK3E,GACjB4jB,WAAYF,IAEZ/qB,KAAKjF,MAAMgiC,SAAS7R,mBACpBlrB,KAAKiqB,qBAAqBje,EAAKmf,YAAcnf,EAA7ChM,GAQD,EAQM,KAAAm6B,cAAgB,IAAM,KACnC+C,EAA2BjD,aAAc,EACzCj6B,KAAKiO,UAASsvB,IAAa,CAAOvS,WAAYuS,EAActS,cAAc,EAO7D,KAAAK,oBAAuB3mB,IAChC3E,KAAKqrB,SAAS/qB,UAAYN,KAAKqrB,SAAS/qB,QAAQirB,SAAS5mB,EAAM/F,UAC1DoB,KAAKqG,MAAMu3B,aAGZ59B,KAAKiO,SAAS,CAAE+c,gBAAYh0B,EAAWkjC,oBAAqB,GAAIsD,WAAW,IAF3Ex9B,KAAKiO,SAAS,CAAE+c,WAAY,EAAGkP,oBAAqB,GAAIsD,WAAW,IAEgB,EAY9E,KAAApD,uBAAyB,CAACj/B,EAAe++B,EAA8BG,KAE/E6C,EAA2BjD,aADL,IACoB9+B,MAG1Ck/B,IAAmBH,IAGjBA,IAAwBG,EAMlB,KAAAwD,cAAgB,KAAW,IAAAC,EACnC99B,KAAKqG,MAAMu3B,aAGZ59B,KAAKiO,SAAS,CAAE+c,gBAAYh0B,EAAWkjC,oBAAqB,GAAIsD,WAAW,IAF3Ex9B,KAAKiO,SAAS,CAAE+c,WAAY,EAAGkP,oBAAqB,GAAIsD,WAAW,IAIjD,QAArBM,EAAA99B,KAAKqrB,SAAS/qB,eAAO,IAAAw9B,GAArBA,EAAuBtD,SAAS,GAAmB/nB,OAAO,EAO9C,KAAAkZ,aAAgBhnB,IAC8D,IAADo5B,EAAtFp5B,EAAMC,UAAY5E,KAAKgqB,YAAchqB,KAAKqG,MAAMu3B,cAAgB59B,KAAKqG,MAAMm3B,YAC3Ex9B,KAAKiO,SAAS,CAAE+c,WAAY,EAAGkP,oBAAqB,GAAIsD,WAAW,IAC7C,QAArBO,EAAA/9B,KAAKqrB,SAAS/qB,eAAO,IAAAy9B,GAArBA,EAAuBvD,SAAS,GAAmB/nB,QAAQ,EAOnD,KAAAurB,sBAAwB,KACrCh+B,KAAKiO,SAAS,CAAE2vB,aAAc59B,KAAK49B,cAAe,EA9lBlD59B,KAAKqrB,SAAWx0B,EAAAA,YAChBmJ,KAAKs6B,YAAczjC,EAAAA,YACnB,MAAM,aAAEs3B,GAAiBnuB,KAAKjF,MAAMgiC,SACpC,GAAIr/B,EAAAA,gBAAgBC,YAAYwwB,IAAiBzwB,EAAAA,gBAAgBC,YAAYwwB,EAAa,GAAGS,SAAU,CACnG,MAAMiD,EAAc1D,EAAa,GAAGS,QAAQ,GAAGzD,YAAcgD,EAAa,GAAGS,QAAQ,GAAGzD,YAAc,GAChGhiB,EAAWglB,EAAa,GAAGS,QAAQ,GAAGzlB,SAAWglB,EAAa,GAAGS,QAAQ,GAAGzlB,SAAW,GAC7FnJ,KAAKoqB,iBAAmB,CAAC,CAAEC,IAAKwH,EAAavH,QAASnhB,IAGlDzL,EAAAA,gBAAgBC,YAAYwwB,EAAa,GAAGS,QAAQ,GAAGrE,qBACvD4D,EAAa,GAAGS,QAAQ,GAAGrE,mBAAmBprB,KAAI0jB,IAC9C,MAAMsI,EAActI,EAAK2H,MAAMH,IAM/B,OALArqB,KAAKoqB,iBAAiB3vB,KAAK,CACvB4vB,IAAKc,EACLb,QAASzH,EAAKrJ,KACd4M,qBAAsB,CAAEhd,QAASyZ,EAAKzZ,QAAQC,kBAE3C,IAAI,GACb,CAIVrJ,KAAKqG,MAAQ,CACT2kB,WAAY,EACZkP,oBAAqB,GACrBjP,gBAAYj0B,EACZw2B,eAAgB,CAAC,EACjBoQ,aAAc59B,KAAK49B,aACnBhT,cAAe5qB,KAAKoqB,iBACpBoT,WAAW,GAEfx9B,KAAKoD,kBAAmB0R,EAAAA,EAAAA,oBACpB9U,KAAKjF,MAAMgiC,SAAS3wB,QAAQK,QAAQsI,kBACpC/U,KAAKjF,MAAMgiC,SAAS/nB,aACpBhV,KAAKjF,MAAMgiC,SAASjuB,WAExB9O,KAAKsG,SAAUC,EAAAA,EAAAA,kBAAiB,QAASvG,KAAKoD,iBAAkB,GAAI,IACpEpD,KAAKmmB,YAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,QACzE,CAEqBs3B,mBACjB,MAAoG,QAA7FvmB,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAASpL,QAASpM,KAAKjF,MAAMgiC,SAAS3wB,QAAQK,SACzF,CAEOxK,oBACHjC,KAAKi+B,mCAAoC3H,EAAAA,EAAAA,mBAAkBhyB,OAAQ,SAAUtE,KAAKg+B,uBAClF9e,SAAS4O,iBAAiB,UAAY9tB,KAAK2rB,cAA2C,GACtF3rB,KAAKg+B,wBACL9e,SAAS2O,KAAKC,iBAAiB,YAAa9tB,KAAKsrB,oBACrD,CAEOxpB,qBAAkB,IAAAy4B,EACO,QAAxBA,EAAAv6B,KAAKs6B,YAAYh6B,eAAO,IAAAi6B,GAAxBA,EAA0BC,SAAS,IAAMx6B,KAAKjF,MAAMgiC,SAAS1jB,cAC5DrZ,KAAKs6B,YAAYh6B,QAAQk6B,SAAS,GAAmB/nB,OAE9D,CAEOsb,uBACHzpB,OAAO0pB,oBAAoB,SAAUhuB,KAAKi+B,mCAAoC,GAC9E/e,SAAS2O,KAAKG,oBAAoB,YAAahuB,KAAKsrB,qBAAqB,EAC7E,CAEOhpB,SACHtC,KAAK8pB,aAAe,EAEpB,OACIjzB,EAAAA,cAACslB,EAAAA,KAAI,CAAC3d,UAAU,qBAAqByE,IAAKjD,KAAKqrB,UAC1CrrB,KAAKqG,MAAMu3B,aACR59B,KAAKiuB,oBAELp3B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC0U,EAAAA,OAAMrF,OAAAC,OAAA,CACH3H,UAAU,sBACVyB,QAASD,KAAKs9B,cAAa,gBAT7B,oBAWE99B,MAAOQ,KAAKjF,MAAMgiC,SAASvlC,UAAU0mC,mBAAkB,aAC3Cl+B,KAAKjF,MAAMgiC,SAASvlC,UAAU0mC,oBACtCl+B,KAAKmmB,aAEZnmB,KAAKm+B,uBAK1B,CAYQA,sBACJ,OACItnC,EAAAA,cAACunC,EAAAA,SAAQ,CAAC5/B,UAAU,mCAAmCwa,OAAQhZ,KAAKqG,MAAMm3B,WACrEx9B,KAAKqG,MAAMu3B,aAAe59B,KAAKiuB,oBAAsBjuB,KAAKkuB,qBAGvE,CAEQD,oBACJ,MAAM,SAAEO,EAAQ,iBAAEwI,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAE9I,GAAepuB,KAAKjF,MAAMgiC,SAGlH,OADA/8B,KAAK8pB,aAAe,EAEhBjzB,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GACCioB,EAAU,CACd5vB,UAAW+D,IACP6rB,EAAW5vB,UACXwB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,WAA2B,QAAU,YAG/En0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKqoB,EAAQ,CAAEC,SAAS,OACxBzuB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,YACnCn0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK4wB,GACNlgC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK6wB,EAAgB,CAAE/2B,QAASD,KAAKm6B,mBAC1CtjC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+wB,GAAyBl3B,KAAKqG,MAAM6zB,sBAGrDl6B,KAAK0uB,kBAItB,CAEQR,qBACJ,MAAM,SAAEM,EAAQ,WAAEJ,GAAepuB,KAAKjF,MAAMgiC,SAE5C,OACIlmC,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKioB,EAAU,CAAE5vB,UAAW+D,IAAW6rB,EAAW5vB,UAAW,8BAChE3H,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKqoB,EAAQ,CAAEC,SAAS,OACxBzuB,KAAK0uB,iBACN73B,EAAAA,cAAA,OAAK2H,UAAU,uBACX3H,EAAAA,cAAA,UAAQ2H,UAAU,qBAAoB,aAAY,QAAQyB,QAASD,KAAK69B,kBAK5F,CAEQ9N,kBAAkBlN,GACtB,OAAIA,EAAKmN,UAAYtG,EAAAA,iBAAiB2U,mBAAmBxb,EAAKmN,SACnDhwB,KAAK8uB,oBAAoBjM,GACxBA,EAAKmN,QAGV,KAFIhwB,KAAKiwB,oBAAoBpN,EAGxC,CAEQ6L,iBACJ,MAAM,SAAEwB,GAAalwB,KAAKjF,MAAMgiC,SAC1B5O,EAAgCnuB,KAAKjF,MAAMgiC,SAAS5O,cACpD,WAAEnD,GAAehrB,KAAKqG,MACtB8pB,EAA8B,GAMpC,GAJIzyB,EAAAA,gBAAgBC,YAAYwwB,KAC5BA,EAAa,GAAG9mB,GAAK,GAGrBrH,KAAKqG,MAAMu3B,mBAA+B5mC,IAAfg0B,GAA4BttB,EAAAA,gBAAgBC,YAAYwwB,GAAe,CAClG,MAAME,EAAWruB,KAAKqwB,qBAAgBr5B,EAAWm3B,GAE7CE,GACA8B,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKgvB,EAAShnB,IAAQ6oB,GACvB,IACAlwB,KAAKswB,oBAAoBjC,GAAS,IAAG,KAE7C,MAGL,IAAK,MAAOlzB,EAAO0nB,KAASsL,EAAamQ,UACrCnO,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKwjB,EAAKxb,IACN6oB,EAAQ,CACZjtB,IAAKjD,KAAKo6B,uBAAuBj/B,EAAO6E,KAAKqG,MAAM6zB,oBAAqBrX,EAAK1Z,UAAYnJ,KAAKs6B,YAAc,OAE3Gt6B,KAAKswB,oBAAoBzN,KAM1C,OAAOsN,CACX,CAEQE,gBAAgBkO,EAAuBC,GAC3C,IAAKA,EACD,OAAO,KAGX,IAAK,IAAIrjC,EAAQ,EAAGA,GAASqjC,EAAK9hC,OAASkgC,EAAiB6B,IAAKtjC,IAAS,CACtE,MAAM0nB,EAAsB2b,EAAKE,OAAOvjC,IAExC,GAAI0nB,EAAKxb,KAAOrH,KAAKqG,MAAM2kB,WAMvB,OALKkS,EAA2BjD,YAG5Bj6B,KAAKiO,SAAS,CAAEgd,WAAYsT,EAAcrE,oBAAqBrX,EAAK1Z,WAFpEnJ,KAAKiO,SAAS,CAAEgd,WAAYsT,IAIzB1b,EAEX,MAAM4N,EAAQzwB,KAAKqwB,gBAAgBxN,EAAKxb,GAAIwb,EAAK+L,SACjD,GAAI6B,EACA,OAAOA,CAAK,CAGpB,OAAO,IACX,CAEQH,oBAAoBnC,GACxB,OAAIzwB,EAAAA,gBAAgBC,YAAYwwB,EAAaS,SACrC5uB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,WAC/BhrB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,IAAI,GAIlExQ,EAAAA,cAAAA,EAAAA,SAAA,KACKmJ,KAAK2wB,sBAAsBxC,GAC3BnuB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,KAGzD8mB,EAAa6B,UAAYtG,EAAAA,iBAAiB2U,mBAAmBlQ,EAAa6B,SAC1EhwB,KAAK8uB,oBAAoBX,EAAcA,EAAa9mB,IACnD8mB,EAAa6B,SAAahwB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,WAIrE,KAHIhrB,KAAKiwB,oBAAoB9B,EAIxC,CAEQuC,eAAeiO,EAAgC3T,EAAqB4T,GAAmB,IAAAC,EAAAC,EAC3F,IAAIvO,EAAwCoO,EACxC3T,IAAe4R,EAAiBmC,WAChCxO,EAAWoO,EAAcrhC,QAAO0hC,GAAeA,EAAY33B,IAAM23B,EAAY33B,IAAMguB,EAAAA,EAAgB+D,UAGvG,MAAM,SAAElJ,GAAalwB,KAAKjF,MAAMgiC,SAC1BkC,EAA0E,QAAlDJ,EAAG7+B,KAAKjF,MAAMgiC,SAASvvB,OAAOsjB,4BAAoB,IAAA+N,GAAAA,EAC1E9N,EAAqE,QAA9C+N,EAAG9+B,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,wBAAgB,IAAA8N,EAAAA,EAAIlC,EAAiBsC,MAEhG,GAAIlU,GAAchrB,KAAKqG,MAAM2kB,aAAeA,EAExC,OADAhrB,KAAKjF,MAAMgiC,SAAS3wB,QAAQ0C,UAAUoD,MAAM,gEACrC,KAGX,IAAKqe,IAAa7yB,EAAAA,gBAAgBC,YAAY4yB,GAE1C,OADAvwB,KAAKjF,MAAMgiC,SAAS3wB,QAAQ0C,UAAUoD,MAAM,4DACrC,KAGX,IAAI+e,EAAyB,GAC7B,MAAMC,EAAcX,EAASpxB,KAAI,CAACgrB,EAAuBhvB,KACrD,MAAMi2B,EAAajH,EAAOyE,SAAWlxB,EAAAA,gBAAgBC,YAAYwsB,EAAOyE,SACxE,IAAIP,EAQAO,EANAP,EADA+C,GAAcpxB,KAAKqG,MAAMu3B,aACd59B,KAAK2wB,sBAAsBxG,EAAQa,EAAY7vB,GACnD6E,KAAK8pB,eAAiB8S,EAAiB6B,KAAQrN,EAG3C,KAFApxB,KAAKm/B,YAAYhV,EAAQhvB,GAKxC,MAAMikC,EACFhO,GAAc6N,GAA4Bj/B,KAAK8pB,cAAgB5yB,KAAKo6B,MAAMP,GAA2B6L,EAAiB6B,IAEtHrN,IAAepxB,KAAKqG,MAAMu3B,eACtB59B,KAAK8pB,cAAgB8S,EAAiByC,IACtCzQ,EAAU5uB,KAAKs/B,qBAAqBnV,GAC7BnqB,KAAK8pB,cAAgB9pB,KAAKm9B,iBACjCn9B,KAAK8pB,eACLmH,EAAiB,SAASjxB,KAAK8pB,aAAa3mB,aAC5CyrB,EAAU5uB,KAAK0wB,eAAevG,EAAOyE,aAAS53B,GAAW,KAI7DooC,GAAmBp/B,KAAKqG,MAAMu3B,eAC9B59B,KAAK8pB,eACLmH,EAAiBgO,EAA2B,SAASj/B,KAAK8pB,aAAa3mB,aAAe,GACtFyrB,EAAU5uB,KAAK0wB,eAAevG,EAAOyE,QAASzE,EAAO9iB,IAAI,IAE7D,MAAMwqB,EAAc1H,EAAOgB,YAAchB,EAAOgB,YAAc,GAC9D,OACIt0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACG+pB,EAAQ,CACZ7wB,IAAK8qB,EAAO9iB,GACZ0qB,YAAa/xB,KAAK8pB,eAAiB8S,EAAiB6B,KAAOz+B,KAAKiqB,qBAAqB4H,EAAa1H,GAClG3rB,UAAW+D,IAAW2tB,EAAS1xB,UAAW4gC,GAAmB,eAC7Dn8B,IAAKjD,KAAKo6B,uBAAuBj/B,EAAO6E,KAAKqG,MAAM6zB,oBAAqB/P,EAAOhhB,UAAYnJ,KAAKs6B,YAAc,OAE7GjM,EACAO,EACE,IAGf,OAAO5uB,KAAKuxB,YAAYN,EAAgBC,EAAa0N,EACzD,CAEQO,YAAYhV,EAAuBhvB,GACvC,IAAIkzB,EAMJ,OAJIA,EADAruB,KAAK8pB,eAAiB8S,EAAiB6B,IAC5BtU,EAAO6F,QAAUhwB,KAAKu/B,4BAA4BpV,EAAQhvB,GAAS6E,KAAKiwB,oBAAoB9F,GAE5FA,EAAO6F,QAAUhwB,KAAK8uB,oBAAoB3E,EAAQhvB,GAAS6E,KAAKiwB,oBAAoB9F,GAE5FkE,CACX,CAEQiR,qBAAqBjR,GAAuB,IAAAmR,EAChD,MAAMvO,EAAiB,SAASjxB,KAAK8pB,aAAa3mB,aAC5CyC,EAAmByoB,EAASllB,SAE5BukB,OAAkC12B,IAArB4O,EAAiCA,EAAmB,GACjEopB,EAFWhvB,KAAKqG,MAAMmnB,eAGtBuD,EAAqE,QAA9CyO,EAAGx/B,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,wBAAgB,IAAAwO,EAAAA,EAAI5C,EAAiBsC,MAEhG,IAAIjQ,GAAe,EACfD,EAAKX,EAAShnB,MACd4nB,GAAe,GAEnB,MAAMC,EAA2B,CAAE7c,QAAS,EAAG2G,OAAQiW,GAEvD,OACIp4B,EAAAA,cAACs4B,EAAAA,OAAM,CACHI,cAAeL,EACf7vB,IAAKgvB,EAAShnB,GACd7I,UAAW+D,IAAW,yBAA0B0uB,GAChD5B,UAAU,sBACVG,WAAW,uBACXC,eAAe,QACf7pB,iBAAkB8nB,EAClB4B,SAAUtvB,KAAKy9B,0BAA0BpP,EAAShnB,GAAI4nB,IAEtDp4B,EAAAA,cAAA,WACKw3B,EAASO,QAASzvB,KAAKwwB,GAChBjyB,EAAAA,gBAAgBC,YAAYgyB,EAAYf,WACxC5uB,KAAK8pB,eACD9pB,KAAK8pB,aAAeiH,GACb/wB,KAAKs/B,qBAAqB3P,GAGlC3vB,KAAK+vB,kBAAkBJ,MAKlD,CAcQgB,sBAAsBxG,EAAuBa,EAAqB7vB,GACtE,OACItE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKlE,GACD6E,KAAKjF,MAAMgiC,SAASxxB,OAAM,CAC9BtL,QAASD,KAAK8qB,sBAAsBX,EAAQa,GAAW,kBACtChrB,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,mBAC5DrH,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,cAClE2jB,EAAU,aACXhrB,KAAKqG,MAAMu3B,aAAezT,EAAOjhB,eAAYlS,IAExDmzB,EAAOhhB,SAGpB,CAEQ2lB,oBAAoB3E,EAAuBhvB,GAC/C,MAAM,KAAEy2B,GAAS5xB,KAAKjF,MAAMgiC,SACtB5zB,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GACrDnJ,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OACIzP,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGyrB,EAAI,CACRvyB,IAAKlE,EACL0D,KAAMsrB,EAAO6F,SACT7J,EAAU,CACdvnB,OAAQurB,EAAO2H,iBAAmB,cAAW96B,EAC7CiJ,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KAE9DghB,EAAOhhB,SAGpB,CAEQo2B,4BAA4BpV,EAAuBhvB,GAA6C,IAA7BskC,IAAA/N,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,KAAAA,UAAA,GACvE,MAAM,KAAEE,GAAS5xB,KAAKjF,MAAMgiC,SACtB5zB,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GAC/C0oB,EAAc1H,EAAOgB,YAAchB,EAAOgB,YAAc,GAC9DnrB,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OACIzP,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGyrB,EAAI,CACRvyB,IAAKlE,EACL42B,YAAa0N,GAAiBz/B,KAAKiqB,qBAAqB4H,EAAa1H,GACrEtrB,KAAMsrB,EAAO6F,SACT7J,EAAU,CACdlmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KAE9DghB,EAAOhhB,SAGpB,CAEQ8oB,uBAAuB9oB,EAAmBC,GAC9C,MAAM,KAAEwoB,GAAS5xB,KAAKjF,MAAMgiC,SAC5B/8B,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OAAI6C,GAAYC,EAERvS,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKyrB,EAAI,CAAE/yB,KAAMuK,GAAa+c,EAAU,CAAElmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KACzGA,GAIN,IACX,CAEQ8mB,oBAAoB9F,EAAuBhvB,GAC/C,MAAM,KAAE+2B,GAASlyB,KAAKjF,MAAMgiC,SAC5B,OACIlmC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKlE,GAAW+2B,GACjB/H,EAAOhhB,SAGpB,CAEQooB,YAAYY,EAAejB,EAA4BwO,GAAmB,IAAAC,EAC9E,MAAM,aAAErN,EAAY,SAAE9D,EAAQ,kBAAE+D,EAAiB,kBAAErH,EAAiB,uBAAEsH,GAA2BxyB,KAAKjF,MAAMgiC,SACtG6C,GACD5/B,KAAKqG,MAAMu3B,cACZ1S,GAC6B,OAA7BlrB,KAAKqG,MAAMukB,oBACkB5zB,IAA7BgJ,KAAKqG,MAAMukB,gBACV8U,EACCG,GACD7/B,KAAKqG,MAAMu3B,cAAgBpL,GAA0B90B,EAAAA,gBAAgBC,YAAYqC,KAAKqG,MAAMukB,iBAAmB8U,EAC9GI,EACF9/B,KAAK8pB,aAAe8S,EAAiByC,KAAOO,EAAyBtN,EAAc9zB,UAAY,kBACnGwB,KAAK8pB,aAAe8S,EAAiB6B,IACrC,MAAMsB,EACFH,GACA5/B,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,kBAC3BhxB,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,iBAAmB4L,EAAiByC,KAC/D,sBAEEW,EAAyC,QAA3BL,EAAG3/B,KAAKqG,MAAMukB,qBAAa,IAAA+U,OAAA,EAAxBA,EAA0BriC,QAAOktB,IAAUd,EAAAA,iBAAiB2U,mBAAmB7T,EAAMH,OACtG4V,EAAqBD,aAAc,EAAdA,EAAgB7gC,KAAI0jB,GAAQA,EAAKwH,MAAK1tB,KAAK,KACtE,OACI9F,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKmsB,EAAY,CAAE9zB,UAAWshC,IAC/BjpC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGqoB,EAAQ,CACZhwB,UAAW+D,IAAWisB,EAAShwB,UAAW2zB,EAAOyN,GAA0B,gBAAiBG,KAE3F7O,GAELr6B,EAAAA,cAAA,OAAK2H,UAAU,2BAA2Ba,IAAK4gC,GAC1CL,GACGliC,EAAAA,gBAAgBC,YAAYqiC,IAC5BA,EAAe7gC,KAAI0jB,IAAI,IAAAqd,EAAAtN,EAAA,OACnB/7B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKosB,EAAiB,CAAE/zB,UAAW+zB,EAAmB/zB,UAAWa,IAAKwjB,EAAKwH,MAC3EwS,EAAiB78B,KAAKjF,MAAe,QAAVmlC,EAAErd,EAAKwH,WAAG,IAAA6V,EAAAA,EAAI,GAAIrd,EAAKyH,QAASnnB,YAC3D08B,GACG7/B,KAAKiyB,uBAAuBpP,EAAKyH,QAAkC,QAA3BsI,EAAE/P,EAAKuD,4BAAoB,IAAAwM,OAAA,EAAzBA,EAA2BxpB,SACtE,KAK/B,EA7fe8zB,EAAAjD,aAAuB,GAgE5Bt2B,EAAAA,EAAAA,IAAA,CAATmiB,EAAAA,IAAQ,iCA0jBb,+kBC3nBO,MAAMqa,UAAkCtpC,EAAAA,cAyB3C+I,YAAmB7E,GACf8E,MAAM9E,GAvBO,KAAAoiC,eAAyBP,EAAiBQ,KAEnD,KAAAtT,aAAuB8S,EAAiBS,KAM/B,KAAArT,UAAoB4S,EAAiB5S,UAIrC,KAAAI,iBAA0C,GAEnD,KAAA+D,aAAgC,GAoGvB,KAAAmP,cAAgB,KAC7Bt9B,KAAKiO,UAASsvB,IAAa,CACvBvS,WAAY4R,EAAiBmC,SAC7BvB,WAAYD,EAAcC,aAC3B,EAuTU,KAAAC,0BAA4B,CAACC,EAA4BzO,IAA0B,KAChG,MAAM,eAAEzB,GAAmBxtB,KAAKqG,MAC1BonB,EAAU,CAAE,CAACiQ,IAAWzO,GAC9BjvB,KAAKiO,SAAS,CAAEuf,eAAche,EAAAA,EAAA,GAAOge,GAAmBC,IAAY,EAwIvD,KAAAxD,qBAAuB,CAAC0T,EAA6BxT,IAA0B,KAC5F,MAAMhhB,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GAC/CihB,EAA0C,CAAC,CAAEC,IAAKsT,EAAqBrT,QAASnhB,IAGtF,GAAIzL,EAAAA,gBAAgBC,YAAYwsB,EAAOI,oBACnC,IAAK,MAAM1H,KAAQsH,EAAOI,mBAAoB,CAC1C,MAAMY,EAActI,EAAK2H,MAAMH,IAC/BD,EAAiB3vB,KAAK,CAClB4vB,IAAKc,EACLb,QAASzH,EAAKrJ,KACd4M,qBAAsB,CAAEhd,QAASyZ,EAAKzZ,QAAQC,iBAC/C,CAGXrJ,KAAKiO,SAAS,CACV2c,cAAeltB,EAAAA,gBAAgBC,YAAYysB,GAAoBA,EAAmB,CAAC,CAAEC,IAAK,WAC5F,EASW,KAAAS,sBAAwB,CAAC9e,EAAqB+e,IAAsB,KAC5E/qB,KAAKqG,MAAMu3B,cASZuC,EAA0BlG,aAAc,EACxCj6B,KAAKiO,SAAS,CACV+c,WAAYhf,EAAK3E,GACjB6yB,oBAAqBluB,EAAK7C,SAC1B8hB,WAAYF,MAZhB/qB,KAAKiO,SAAS,CACV+c,WAAYhf,EAAK3E,GACjB4jB,WAAYF,IAEZ/qB,KAAKjF,MAAMgiC,SAAS7R,mBACpBlrB,KAAKiqB,qBAAqBje,EAAKmf,YAAcnf,EAA7ChM,GAQD,EAQM,KAAAm6B,cAAgB,IAAM,KACnCgG,EAA0BlG,aAAc,EACxCj6B,KAAKiO,UAASsvB,IAAa,CAAOvS,WAAYuS,EAActS,cAAc,EAO7D,KAAAK,oBAAuB3mB,IAChC3E,KAAKqrB,SAAS/qB,UAAYN,KAAKqrB,SAAS/qB,QAAQirB,SAAS5mB,EAAM/F,UAC1DoB,KAAKqG,MAAMu3B,aAGZ59B,KAAKiO,SAAS,CAAE+c,gBAAYh0B,EAAWkjC,oBAAqB,GAAIsD,WAAW,IAF3Ex9B,KAAKiO,SAAS,CAAE+c,WAAY4R,EAAiBmC,SAAU7E,oBAAqB,GAAIsD,WAAW,IAER,EAQ9E,KAAA4C,gBAAkB,KAC/B,MAAM,aAAEjS,GAAiBnuB,KAAKjF,MAAMgiC,SAEoE,IAADsD,GADvGrgC,KAAKmuB,aAAeA,EAChBzwB,EAAAA,gBAAgBC,YAAYwwB,IAAiBzwB,EAAAA,gBAAgBC,YAAYwwB,EAAa,GAAGS,YAC7D,QAA5ByR,EAAArgC,KAAKmuB,aAAa,GAAGS,eAAO,IAAAyR,GAA5BA,EAA8BlhC,KAAI0jB,IAC9B,MAAMyd,EAAgB,CAAC,EAOvB,OANAp6B,OAAOC,OAAOm6B,EAAe,CAAEnV,YAAatI,EAAKsI,cACjDjlB,OAAOC,OAAOm6B,EAAe,CAAEn3B,SAAUnJ,KAAKjF,MAAMgiC,SAASvlC,UAAUqiC,sBACvE3zB,OAAOC,OAAOm6B,EAAe,CAAEtQ,QAASnN,EAAKmN,UACzCtyB,EAAAA,gBAAgBC,YAAYklB,EAAK+L,UAAY/L,EAAKsW,aAAe7D,EAAAA,EAAW8D,QAC5EvW,EAAK+L,QAAQ2R,QAAQD,GAElBzd,CAAI,IACZ,EAWM,KAAAuX,uBAAyB,CAACj/B,EAAe++B,EAA8BG,KAE/E8F,EAA0BlG,aADJ,IACmB9+B,MAGzCk/B,IAAmBH,IAGjBA,IAAwBG,EAMlB,KAAAwD,cAAgB,KACxB79B,KAAKqG,MAAMu3B,aAGZ59B,KAAKiO,SAAS,CAAE+c,gBAAYh0B,EAAWkjC,oBAAqB,GAAIsD,WAAW,IAF3Ex9B,KAAKiO,SAAS,CAAE+c,WAAY4R,EAAiBmC,SAAU7E,oBAAqB,GAAIsD,WAAW,GAEP,EAQ3E,KAAA7R,aAAgBhnB,IACzBA,EAAMC,UAAY5E,KAAKgqB,YAAchqB,KAAKqG,MAAMu3B,cAAgB59B,KAAKqG,MAAMm3B,WAC3Ex9B,KAAKiO,SAAS,CAAE+c,WAAY4R,EAAiBmC,SAAU7E,oBAAqB,GAAIsD,WAAW,GAAS,EAO3F,KAAAQ,sBAAwB,KACrCh+B,KAAKiO,SAAS,CAAE2vB,aAAc59B,KAAK49B,cAAe,EAnqBlD59B,KAAKqrB,SAAWx0B,EAAAA,YAChBmJ,KAAKs6B,YAAczjC,EAAAA,YACnB,MAAM,aAAEs3B,GAAiBnuB,KAAKjF,MAAMgiC,SACpC,GAAIr/B,EAAAA,gBAAgBC,YAAYwwB,IAAiBzwB,EAAAA,gBAAgBC,YAAYwwB,EAAa,GAAGS,SAAU,CACnG,MAAMiD,EAAc1D,EAAa,GAAGS,QAAQ,GAAGzD,YAAcgD,EAAa,GAAGS,QAAQ,GAAGzD,YAAc,GAChGhiB,EAAWglB,EAAa,GAAGS,QAAQ,GAAGzlB,SAAWglB,EAAa,GAAGS,QAAQ,GAAGzlB,SAAW,GAC7FnJ,KAAKoqB,iBAAmB,CAAC,CAAEC,IAAKwH,EAAavH,QAASnhB,IAGlDzL,EAAAA,gBAAgBC,YAAYwwB,EAAa,GAAGS,QAAQ,GAAGrE,qBACvD4D,EAAa,GAAGS,QAAQ,GAAGrE,mBAAmBprB,KAAI0jB,IAC9C,MAAMsI,EAActI,EAAK2H,MAAMH,IAM/B,OALArqB,KAAKoqB,iBAAiB3vB,KAAK,CACvB4vB,IAAKc,EACLb,QAASzH,EAAKrJ,KACd4M,qBAAsB,CAAEhd,QAASyZ,EAAKzZ,QAAQC,kBAE3C,IAAI,GACb,CAGVrJ,KAAKqG,MAAQ,CACT2kB,WAAY4R,EAAiBmC,SAC7B7E,oBAAqB,GACrBjP,gBAAYj0B,EACZw2B,eAAgB,CAAC,EACjBoQ,aAAc59B,KAAK49B,aACnBhT,cAAe5qB,KAAKoqB,iBACpBoT,WAAW,GAGfx9B,KAAKoD,kBAAmB0R,EAAAA,EAAAA,oBACpB9U,KAAKjF,MAAMgiC,SAAS3wB,QAAQK,QAAQsI,kBACpC/U,KAAKjF,MAAMgiC,SAAS/nB,aACpBhV,KAAKjF,MAAMgiC,SAASjuB,WAExB9O,KAAKsG,SAAUC,EAAAA,EAAAA,kBAAiB,QAASvG,KAAKoD,iBAAkB,GAAI,IACpEpD,KAAKmmB,YAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,QACzE,CAEqBs3B,mBACjB,MAAoG,QAA7FvmB,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAASpL,QAASpM,KAAKjF,MAAMgiC,SAAS3wB,QAAQK,SACzF,CAEOxK,oBACHjC,KAAKi+B,mCAAoC3H,EAAAA,EAAAA,mBAAkBhyB,OAAQ,SAAUtE,KAAKg+B,uBAClF9e,SAAS4O,iBAAiB,UAAY9tB,KAAK2rB,cAA2C,GACtF3rB,KAAKg+B,wBACL9e,SAAS2O,KAAKC,iBAAiB,YAAa9tB,KAAKsrB,qBACjDtrB,KAAKogC,iBACT,CAEOt+B,qBAAkB,IAAAy4B,EACO,QAAxBA,EAAAv6B,KAAKs6B,YAAYh6B,eAAO,IAAAi6B,GAAxBA,EAA0BC,SAAS,IAAMx6B,KAAKjF,MAAMgiC,SAAS1jB,cAC5DrZ,KAAKs6B,YAAYh6B,QAAQk6B,SAAS,GAAmB/nB,OAE9D,CAEOsb,uBACHzpB,OAAO0pB,oBAAoB,SAAUhuB,KAAKi+B,mCAAoC,GAC9E/e,SAAS2O,KAAKG,oBAAoB,YAAahuB,KAAKsrB,qBAAqB,EAC7E,CAEOhpB,SACHtC,KAAK8pB,aAAe8S,EAAiB6B,IAErC,OACI5nC,EAAAA,cAACslB,EAAAA,KAAI,CAAC3d,UAAU,qBAAqByE,IAAKjD,KAAKqrB,UAC1CrrB,KAAKqG,MAAMu3B,aACR59B,KAAKiuB,oBAELp3B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC0U,EAAAA,OAAMrF,OAAAC,OAAA,CACH3H,UAAU,sBACVyB,QAASD,KAAKs9B,cAAa,gBAT7B,oBAWE99B,MAAOQ,KAAKjF,MAAMgiC,SAASvlC,UAAU0mC,mBAAkB,aAC3Cl+B,KAAKjF,MAAMgiC,SAASvlC,UAAU0mC,oBACtCl+B,KAAKmmB,aAEZnmB,KAAKm+B,uBAK1B,CAYQA,sBACJ,OACItnC,EAAAA,cAACunC,EAAAA,SAAQ,CAAC5/B,UAAU,mCAAmCwa,OAAQhZ,KAAKqG,MAAMm3B,WACrEx9B,KAAKqG,MAAMu3B,aAAe59B,KAAKiuB,oBAAsBjuB,KAAKkuB,qBAGvE,CAEQD,oBACJ,MAAM,iBAAE+I,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAE9I,GAAepuB,KAAKjF,MAAMgiC,SAGxG,OADA/8B,KAAK8pB,aAAe8S,EAAiB6B,IAEjC5nC,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GACCioB,EAAU,CACd5vB,UAAW+D,IACP6rB,EAAW5vB,UACXwB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,WAA2B,QAAU,YAG/En0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKnG,KAAKjF,MAAMgiC,SAASvO,SAAQ,CAAEC,SAAS,OAC5CzuB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,YACnCn0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK4wB,GACNlgC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK6wB,EAAgB,CAAE/2B,QAASD,KAAKm6B,mBAC1CtjC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAK+wB,GAAyBl3B,KAAKqG,MAAM6zB,sBAGrDl6B,KAAK0uB,kBAItB,CAEQR,qBACJ,MAAM,WAAEE,GAAepuB,KAAKjF,MAAMgiC,SAClC,OACIlmC,EAAAA,cAACqlB,EAAAA,OAAMhW,OAAAC,OAAA,GAAKioB,EAAU,CAAE5vB,UAAW+D,IAAW6rB,EAAW5vB,aACrD3H,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKnG,KAAKjF,MAAMgiC,SAASvO,SAAQ,CAAEC,SAAS,OAC5CzuB,KAAK0uB,iBACN73B,EAAAA,cAAA,OAAK2H,UAAU,uBACX3H,EAAAA,cAAA,UAAQ2H,UAAU,qBAAoB,aAAY,QAAQyB,QAASD,KAAK69B,kBAK5F,CAEQ9N,kBAAkBlN,GACtB,OAAIA,EAAKmN,UAAYtG,EAAAA,iBAAiB2U,mBAAmBxb,EAAKmN,SACnDhwB,KAAK8uB,oBAAoBjM,GACxBA,EAAKmN,QAGV,KAFIhwB,KAAKiwB,oBAAoBpN,EAGxC,CAEQ6L,iBACJ,MAAM,SAAEwB,GAAalwB,KAAKjF,MAAMgiC,SAChC,IAAI5O,EAAgC,GAEhCA,EADAnuB,KAAKqG,MAAMu3B,aACI59B,KAAKmuB,aAELnuB,KAAKjF,MAAMgiC,SAAS5O,aAEvC,MAAM,WAAEnD,GAAehrB,KAAKqG,MACtB8pB,EAA8B,GACpC,IAAIqQ,EAA2C,GAC3CC,EAAkD,GACtD,MAAMC,EAAiBphC,KAAKqhC,MAAMrhC,KAAKC,UAAU4uB,IAEjD,IAAK,MAAMtL,KAAQ6d,EACfD,EAAqB5d,EAAK+L,QAAStxB,QAAO0hC,GAAeA,EAAY33B,IAAM23B,EAAY33B,IAAMguB,EAAAA,EAAgB+D,SAC7GvW,EAAK+L,QAAU6R,EAGnB,IAAK,MAAM5d,KAAQsL,EACfqS,EAAc3d,EAAK+L,QAAStxB,QAAO0hC,GAAeA,EAAY33B,IAAM23B,EAAY33B,GAAKguB,EAAAA,EAAgB+D,SAGzG,GAAIp5B,KAAKqG,MAAMu3B,mBAA+B5mC,IAAfg0B,GAA4BttB,EAAAA,gBAAgBC,YAAYwwB,GAAe,CAClG,IAAIE,EAAiC,CAAC,EACtC,IAAK,MAAM+B,KAAiBjC,EAAc,CACtC,GAAIiC,EAAc/oB,KAAO2jB,EAAY,CACjCqD,EAAW+B,EACN+P,EAA0BlG,YAK3Bj6B,KAAKiO,SAAS,CACVgd,gBAAYj0B,EACZkjC,oBAAqB9J,EAAcjnB,WANvCnJ,KAAKiO,SAAS,CACVgd,gBAAYj0B,IAQpB,KAAM,CAGV,GADAq3B,EAAWruB,KAAKqwB,gBAAgBD,GAC5B/B,GAAYA,EAAShnB,KAAO2jB,EAC5B,MAIJqD,GACA8B,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKgvB,EAAShnB,IAAQ6oB,GACvB,IACAlwB,KAAKswB,oBAAoBjC,GAAS,IAAG,KAE7C,KAEF,CACH,IAAK,MAAOlzB,EAAO0nB,KAAS6d,EAAepC,UACvCnO,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKwjB,EAAKxb,IACN6oB,EAAQ,CACZjtB,IAAKjD,KAAKo6B,uBAAuBj/B,EAAO6E,KAAKqG,MAAM6zB,oBAAqBrX,EAAK1Z,UAAYnJ,KAAKs6B,YAAc,OAE3Gt6B,KAAKswB,oBAAoBzN,KAKtC,IAAK,MAAO1nB,EAAO0nB,KAAS2d,EAAYlC,UACpCnO,EAAa11B,KACT5D,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKwjB,EAAKxb,IACN6oB,EAAQ,CACZjtB,IAAKjD,KAAKo6B,uBAAuBj/B,EAAO6E,KAAKqG,MAAM6zB,oBAAqBrX,EAAK1Z,UAAYnJ,KAAKs6B,YAAc,OAE3Gt6B,KAAKswB,oBAAoBzN,IAEjC,CAIT,OAAOsN,CACX,CAEQE,gBAAgBxN,GACpB,MAAM0N,EAAW1N,aAAI,EAAJA,EAAM+L,QACvB,GAAI2B,GAAY7yB,EAAAA,gBAAgBC,YAAY4yB,GACxC,IAAK,IAAIp1B,EAAQ,EAAGA,GAASo1B,EAAS7zB,OAASkgC,EAAiB6B,IAAKtjC,IAAS,CAC1E,MAAMyzB,EAAyB2B,EAASmO,OAAOvjC,IAC/C,IAAIojC,EAAe1b,aAAI,EAAJA,EAAMxb,GAEzB,GAAIunB,EAAQvnB,KAAOrH,KAAKqG,MAAM2kB,WAU1B,OATIuT,IAAiB3B,EAAiBmC,UAAYnQ,EAAQvnB,GAAMguB,EAAAA,EAAgB+D,SAC5EmF,OAAevnC,GAGdmpC,EAA0BlG,YAG3Bj6B,KAAKiO,SAAS,CAAEgd,WAAYsT,EAAcrE,oBAAqBtL,EAAQzlB,WAFvEnJ,KAAKiO,SAAS,CAAEgd,WAAYsT,IAIzB3P,EAEX,MAAM6B,EAAQzwB,KAAKqwB,gBAAgBzB,GACnC,GAAI6B,EACA,OAAOA,CAAK,CAIxB,OAAO,IACX,CAEQH,oBAAoBnC,GACxB,OAAIzwB,EAAAA,gBAAgBC,YAAYwwB,EAAaS,SACrC5uB,KAAKqG,MAAMu3B,mBAA0C5mC,IAA1BgJ,KAAKqG,MAAM2kB,WAC/BhrB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,IAAI,GAGlExQ,EAAAA,cAAAA,EAAAA,SAAA,KACKmJ,KAAK2wB,sBAAsBxC,GAC3BnuB,KAAK0wB,eAAevC,EAAaS,QAAST,EAAa9mB,KAGzD8mB,EAAa6B,UAAYtG,EAAAA,iBAAiB2U,mBAAmBlQ,EAAa6B,SAC1EhwB,KAAK8uB,oBAAoBX,EAAcA,EAAa9mB,IACnD8mB,EAAa6B,QAIlB,KAHIhwB,KAAKiwB,oBAAoB9B,EAIxC,CAEQuC,eAAeiO,EAAgC3T,EAAqB4T,GAAmB,IAAAC,EAAAC,EAC3F,IAAIvO,EAAwCoO,EACxC3T,IAAe4R,EAAiBmC,WAChCxO,EAAWoO,EAAcrhC,QAAO0hC,GAAeA,EAAY33B,IAAM23B,EAAY33B,IAAMguB,EAAAA,EAAgB+D,UAGvG,MAAM,SAAElJ,GAAalwB,KAAKjF,MAAMgiC,SAC1BkC,EAA0E,QAAlDJ,EAAG7+B,KAAKjF,MAAMgiC,SAASvvB,OAAOsjB,4BAAoB,IAAA+N,GAAAA,EAC1E9N,EAAqE,QAA9C+N,EAAG9+B,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,wBAAgB,IAAA8N,EAAAA,EAAIlC,EAAiBsC,MAEhG,GAAIlU,GAAchrB,KAAKqG,MAAM2kB,aAAeA,EAExC,OADAhrB,KAAKjF,MAAMgiC,SAAS3wB,QAAQ0C,UAAUoD,MAAM,gEACrC,KAGX,IAAKqe,IAAa7yB,EAAAA,gBAAgBC,YAAY4yB,GAE1C,OADAvwB,KAAKjF,MAAMgiC,SAAS3wB,QAAQ0C,UAAUoD,MAAM,4DACrC,KAGX,IAAI+e,EAAyB,GAC7B,MAAMC,EAAcX,EAASpxB,KAAI,CAACgrB,EAAuBhvB,KACrD,MAAMi2B,EAAajH,EAAOyE,SAAWlxB,EAAAA,gBAAgBC,YAAYwsB,EAAOyE,SACxE,IAAIP,EAQAO,EANAP,EADA+C,GAAcpxB,KAAKqG,MAAMu3B,aACd59B,KAAK2wB,sBAAsBxG,EAAQa,EAAY7vB,GACnD6E,KAAK8pB,eAAiB8S,EAAiB6B,KAAQrN,EAG3C,KAFApxB,KAAKm/B,YAAYhV,EAAQhvB,GAKxC,MAAMikC,EACFhO,GAAc6N,GAA4Bj/B,KAAK8pB,cAAgB5yB,KAAKo6B,MAAMP,GAA2B6L,EAAiB6B,IAEtHrN,IAAepxB,KAAKqG,MAAMu3B,eACtB59B,KAAK8pB,cAAgB8S,EAAiByC,IACtCzQ,EAAU5uB,KAAKs/B,qBAAqBnV,GAC7BnqB,KAAK8pB,cAAgB9pB,KAAKm9B,eAAiBP,EAAiB6B,MACnEz+B,KAAK8pB,eACLmH,EAAiB,SAASjxB,KAAK8pB,aAAa3mB,aAC5CyrB,EAAU5uB,KAAK0wB,eAAevG,EAAOyE,aAAS53B,GAAW,KAG7DooC,GAAmBp/B,KAAKqG,MAAMu3B,eAC9B59B,KAAK8pB,eACLmH,EAAiBgO,EAA2B,SAASj/B,KAAK8pB,aAAa3mB,aAAe,GACtFyrB,EAAU5uB,KAAK0wB,eAAevG,EAAOyE,QAASzE,EAAO9iB,IAAI,IAE7D,MAAMwqB,EAAc1H,EAAOgB,YAAchB,EAAOgB,YAAc,GAC9D,OACIt0B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACG+pB,EAAQ,CACZ7wB,IAAK8qB,EAAO9iB,GACZ0qB,YAAa/xB,KAAK8pB,eAAiB8S,EAAiB6B,KAAOz+B,KAAKiqB,qBAAqB4H,EAAa1H,GAClG3rB,UAAW+D,IAAW2tB,EAAS1xB,UAAW4gC,GAAmB,eAC7Dn8B,IAAKjD,KAAKo6B,uBAAuBj/B,EAAO6E,KAAKqG,MAAM6zB,oBAAqB/P,EAAOhhB,UAAYnJ,KAAKs6B,YAAc,OAE7GjM,EACAO,EACE,IAGf,OAAO5uB,KAAKuxB,YAAYN,EAAgBC,EAAa0N,EACzD,CAEQO,YAAYhV,EAAuBhvB,GACvC,IAAIkzB,EAMJ,OAJIA,EADAruB,KAAK8pB,eAAiB8S,EAAiB6B,IAC5BtU,EAAO6F,QAAUhwB,KAAKu/B,4BAA4BpV,EAAQhvB,GAAS6E,KAAKiwB,oBAAoB9F,GAE5FA,EAAO6F,QAAUhwB,KAAK8uB,oBAAoB3E,EAAQhvB,GAAS6E,KAAKiwB,oBAAoB9F,GAE5FkE,CACX,CAEQiR,qBAAqBjR,GAAuB,IAAAmR,EAChD,MAAMvO,EAAiB,SAASjxB,KAAK8pB,aAAa3mB,aAC5CyC,EAAmByoB,EAASllB,SAE5BukB,OAAkC12B,IAArB4O,EAAiCA,EAAmB,GACjEopB,EAFWhvB,KAAKqG,MAAMmnB,eAGtBuD,EAAqE,QAA9CyO,EAAGx/B,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,wBAAgB,IAAAwO,EAAAA,EAAI5C,EAAiBsC,MAEhG,IAAIjQ,GAAe,EACfD,EAAKX,EAAShnB,MACd4nB,GAAe,GAEnB,MAAMC,EAA2B,CAAE7c,QAAS,EAAG2G,OAAQiW,GACvD,OACIp4B,EAAAA,cAACs4B,EAAAA,OAAM,CACHI,cAAeL,EACf7vB,IAAKgvB,EAAShnB,GACd7I,UAAW+D,IAAW,yBAA0B0uB,GAChD5B,UAAU,sBACVG,WAAW,uBACXC,eAAe,QACf7pB,iBAAkB8nB,EAClB4B,SAAUtvB,KAAKy9B,0BAA0BpP,EAAShnB,GAAI4nB,IAEtDp4B,EAAAA,cAAA,WACKw3B,EAASO,QAASzvB,KAAKwwB,GAChBjyB,EAAAA,gBAAgBC,YAAYgyB,EAAYf,WACxC5uB,KAAK8pB,eACD9pB,KAAK8pB,aAAeiH,GACb/wB,KAAKs/B,qBAAqB3P,GAGlC3vB,KAAK+vB,kBAAkBJ,MAKlD,CAcQgB,sBAAsBxG,EAAuBa,EAAqB7vB,GACtE,OACItE,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CACD9G,IAAKlE,GACD6E,KAAKjF,MAAMgiC,SAASxxB,OAAM,CAC9BtL,QAASD,KAAK8qB,sBAAsBX,EAAQa,GAAW,kBACtChrB,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,mBAC5DrH,KAAKqG,MAAM2kB,YAAchrB,KAAKqG,MAAM2kB,aAAeb,EAAO9iB,IAAG,cAClE2jB,EAAU,aACXhrB,KAAKqG,MAAMu3B,aAAezT,EAAOjhB,eAAYlS,IAExDmzB,EAAOhhB,SAGpB,CAEQ2lB,oBAAoB3E,EAAuBhvB,GAC/C,MAAM,KAAEy2B,GAAS5xB,KAAKjF,MAAMgiC,SACtB5zB,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GACrDnJ,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OACIzP,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGyrB,EAAI,CACRvyB,IAAKlE,EACL0D,KAAMsrB,EAAO6F,SACT7J,EAAU,CACdvnB,OAAQurB,EAAO2H,iBAAmB,cAAW96B,EAC7CiJ,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KAE9DghB,EAAOhhB,SAGpB,CAEQo2B,4BAA4BpV,EAAuBhvB,GAA6C,IAA7BskC,IAAA/N,UAAAh1B,OAAA,QAAA1F,IAAA06B,UAAA,KAAAA,UAAA,GACvE,MAAM,KAAEE,GAAS5xB,KAAKjF,MAAMgiC,SACtB5zB,EAAWghB,EAAOhhB,SAAWghB,EAAOhhB,SAAW,GAC/C0oB,EAAc1H,EAAOgB,YAAchB,EAAOgB,YAAc,GAC9DnrB,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OACIzP,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGyrB,EAAI,CACRvyB,IAAKlE,EACL42B,YAAa0N,GAAiBz/B,KAAKiqB,qBAAqB4H,EAAa1H,GACrEtrB,KAAMsrB,EAAO6F,SACT7J,EAAU,CACdlmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KAE9DghB,EAAOhhB,SAGpB,CAEQ8oB,uBAAuB9oB,EAAmBC,GAC9C,MAAM,KAAEwoB,GAAS5xB,KAAKjF,MAAMgiC,SAC5B/8B,KAAKsG,QAAQM,cAAcC,MAAQsC,EACnC,MAAMgd,GAAaxf,EAAAA,EAAAA,wBAAuB3G,KAAKoD,iBAAkBpD,KAAKsG,SACtE,OAAI6C,GAAYC,EAERvS,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKyrB,EAAI,CAAE/yB,KAAMuK,GAAa+c,EAAU,CAAElmB,SAAS+xB,EAAAA,EAAAA,kBAAiBhyB,KAAKoD,iBAAkBpD,KAAKsG,QAAS6C,KACzGA,GAIN,IACX,CAEQ8mB,oBAAoB9F,EAAuBhvB,GAC/C,MAAM,KAAE+2B,GAASlyB,KAAKjF,MAAMgiC,SAC5B,OACIlmC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,CAAC9G,IAAKlE,GAAW+2B,GACjB/H,EAAOhhB,SAGpB,CAEQooB,YAAYY,EAAejB,EAA4BwO,GAAmB,IAAAC,EAC9E,MAAM,aAAErN,EAAY,kBAAEC,EAAiB,kBAAErH,EAAiB,uBAAEsH,GAA2BxyB,KAAKjF,MAAMgiC,SAC5F6C,GACD5/B,KAAKqG,MAAMu3B,cACZ1S,GAC6B,OAA7BlrB,KAAKqG,MAAMukB,oBACkB5zB,IAA7BgJ,KAAKqG,MAAMukB,gBACV8U,EACCG,GACD7/B,KAAKqG,MAAMu3B,cAAgBpL,GAA0B90B,EAAAA,gBAAgBC,YAAYqC,KAAKqG,MAAMukB,iBAAmB8U,EAC9GI,EACF9/B,KAAK8pB,aAAe8S,EAAiByC,KAAOO,EAAyBtN,EAAc9zB,UAAY,kBACnGwB,KAAK8pB,aAAe8S,EAAiB6B,IACrC,MAAMsB,EACFH,GACA5/B,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,kBAC3BhxB,KAAKjF,MAAMgiC,SAASvvB,OAAOwjB,iBAAmB4L,EAAiByC,KAC/D,sBAEEW,EAAyC,QAA3BL,EAAG3/B,KAAKqG,MAAMukB,qBAAa,IAAA+U,OAAA,EAAxBA,EAA0BriC,QAAOktB,IAAUd,EAAAA,iBAAiB2U,mBAAmB7T,EAAMH,OACtG4V,EAAqBD,aAAc,EAAdA,EAAgB7gC,KAAI0jB,GAAQA,EAAKwH,MAAK1tB,KAAK,KACtE,OACI9F,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKmsB,EAAY,CAAE9zB,UAAWshC,IAC/BjpC,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GACGnG,KAAKjF,MAAMgiC,SAASvO,SAAQ,CAChChwB,UAAW+D,IACPvC,KAAKjF,MAAMgiC,SAASvO,SAAShwB,UAC7B2zB,EACAyN,GAA0B,gBAC1BG,KAGH7O,GAELr6B,EAAAA,cAAA,OAAK2H,UAAU,2BAA2Ba,IAAK4gC,GAC1CL,GACGliC,EAAAA,gBAAgBC,YAAYqiC,IAC5BA,EAAe7gC,KAAI0jB,IAAI,IAAAqd,EAAAtN,EAAA,OACnB/7B,EAAAA,cAACslB,EAAAA,KAAIjW,OAAAC,OAAA,GAAKosB,EAAiB,CAAE/zB,UAAW+zB,EAAmB/zB,UAAWa,IAAKwjB,EAAKwH,MAC3EwS,EAAiB78B,KAAKjF,MAAe,QAAVmlC,EAAErd,EAAKwH,WAAG,IAAA6V,EAAAA,EAAI,GAAIrd,EAAKyH,QAASnnB,YAC3D08B,GACG7/B,KAAKiyB,uBAAuBpP,EAAKyH,QAAkC,QAA3BsI,EAAE/P,EAAKuD,4BAAoB,IAAAwM,OAAA,EAAzBA,EAA2BxpB,SACtE,KAK/B,EAljBe+2B,EAAAlG,aAAuB,GAkE5Bt2B,EAAAA,EAAAA,IAAA,CAATmiB,EAAAA,IAAQ,iCA+nBb,UC7sBA,EAR4B/qB,GACpBA,EAAMyS,OAAOkqB,cACN7gC,EAAAA,cAACspC,EAAyB,CAACpD,SAAUhiC,IAGzClE,EAAAA,cAACqmC,EAA0B,CAACH,SAAUhiC","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/pickup-option-list.tsx?9899","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/store-pickup-option-list.tsx?fcf6","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/find-store-worldwide-location-line-item/date-time-helpers.ts?31c5","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/find-store-worldwide-location-line-item/find-store-worldwide-location-line-item.components.tsx?9ca8","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/find-store-worldwide-location-lines.tsx?bbef","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/find-store-worldwide-search-form.tsx?05ef","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/find-store-worldwide-small-components.tsx?cef1","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/components/selected-store/selected-store.tsx?d7a6","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/find-store-worldwide.props.autogenerated.ts?b0ff","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/find-store-worldwide.tsx?f58c","webpack://venchi-ecommerce-msdyn365/./src/modules/find-store-worldwide/find-store-worldwide.view.tsx?59ba","webpack://venchi-ecommerce-msdyn365/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://venchi-ecommerce-msdyn365/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/sign-up.view.tsx?e5d6","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://venchi-ecommerce-msdyn365/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://venchi-ecommerce-msdyn365/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://venchi-ecommerce-msdyn365/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Interface Pickup option list.\r\n */\r\nexport interface IPickUpOptionListProps {\r\n pickupListOptionMenuText: string;\r\n pickupmodeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Interface pickup option list state.\r\n */\r\nexport interface IPickOptionListState {\r\n expandSiteOptions: boolean;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class PickUpOptionList extends React.PureComponent {\r\n private readonly _pickupListOptionMenu: React.RefObject;\r\n\r\n private readonly _pickupListOptionButton: React.RefObject;\r\n\r\n private readonly eventsToBeBind = ['click', 'touchstart'];\r\n\r\n public constructor(props: IPickUpOptionListProps) {\r\n super(props);\r\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\r\n this._pickupListOptionMenu = React.createRef();\r\n this._pickupListOptionButton = React.createRef();\r\n this.state = {\r\n expandSiteOptions: false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.addEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.removeEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\r\n\r\n return (\r\n
\r\n \r\n {pickupListOptionMenuText}\r\n \r\n \r\n {this.state.expandSiteOptions ? (\r\n
    \r\n {pickupmodeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handle the document click.\r\n * @param event -- Event object.\r\n */\r\n private readonly handleDocumentClick = (event: Event): void => {\r\n const htmlElement = event.target as HTMLElement;\r\n if (\r\n !(\r\n (this._pickupListOptionButton.current !== null &&\r\n (event.target === this._pickupListOptionButton.current ||\r\n this._pickupListOptionButton.current.contains(htmlElement))) ||\r\n (this._pickupListOptionMenu.current !== null &&\r\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\r\n )\r\n ) {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n };\r\n\r\n private _renderDeliveryOptions(event: React.MouseEvent): void {\r\n event.stopPropagation();\r\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !isExpandSiteOptionsState\r\n });\r\n }\r\n\r\n /**\r\n * Select Delivery option.\r\n * @param event -- Event Object.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode && deliveryCode.length > 0) {\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Pickup option list interface.\r\n */\r\nexport interface IStorePickUpOptionListProps {\r\n productPickupListOptionMenuText?: string;\r\n productPickupModeList?: DeliveryOption[];\r\n defaultOptionText?: string;\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Store Pickup option state interface.\r\n */\r\nexport interface IStorePickOptionListState {\r\n isFilterExpanded: boolean;\r\n selectedPickupMode?: string;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class StorePickUpOptionList extends React.PureComponent {\r\n private readonly _storePickupListOptionMenu: React.RefObject;\r\n\r\n public constructor(props: IStorePickUpOptionListProps) {\r\n super(props);\r\n this._storePickupListOptionMenu = React.createRef();\r\n this.state = {\r\n isFilterExpanded: false,\r\n selectedPickupMode: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\r\n const selectedPickupModeDesc = defaultOptionText\r\n ? defaultOptionText\r\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\r\n const role = 'menu';\r\n return (\r\n
\r\n \r\n {this.state.isFilterExpanded ? (\r\n
    \r\n {productPickupModeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Method to call when drop dwon get selected.\r\n */\r\n private readonly _rendeDeliveryOptions = () => {\r\n const isExpandOptionsState = this.state.isFilterExpanded;\r\n this.setState({\r\n isFilterExpanded: !isExpandOptionsState\r\n });\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\nimport { IStoreSelectorLocationLineItemResources } from '../../find-store-worldwide';\r\n\r\nexport interface IHoursDisplayInfo {\r\n startDayShort: string;\r\n startDayFull: string;\r\n endDayShort?: string;\r\n endDayFull?: string;\r\n timeRange: string;\r\n}\r\n\r\ninterface IHoursInfo {\r\n isClosed: boolean;\r\n openTime?: number;\r\n closeTime?: number;\r\n}\r\n\r\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\r\n\r\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\r\n if (seconds === undefined) {\r\n return undefined;\r\n }\r\n let hours = Math.floor(seconds / (60 * 60));\r\n const ampm = hours >= 12 ? 'pm' : 'am';\r\n hours %= 12;\r\n hours = hours ? hours : 12;\r\n const divisorForMinutes = seconds % (60 * 60);\r\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\r\n return `${hours}:${minutes} ${ampm}`;\r\n};\r\n\r\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.monday;\r\n case 'TUE':\r\n return resources.days.tuesday;\r\n case 'WED':\r\n return resources.days.wednesday;\r\n case 'THU':\r\n return resources.days.thursday;\r\n case 'FRI':\r\n return resources.days.friday;\r\n case 'SAT':\r\n return resources.days.saturday;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sunday;\r\n }\r\n};\r\n\r\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.mondayFull;\r\n case 'TUE':\r\n return resources.days.tuesdayFull;\r\n case 'WED':\r\n return resources.days.wednesdayFull;\r\n case 'THU':\r\n return resources.days.thursdayFull;\r\n case 'FRI':\r\n return resources.days.fridayFull;\r\n case 'SAT':\r\n return resources.days.saturdayFull;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sundayFull;\r\n }\r\n};\r\n\r\nconst buildHoursDisplayInfo = (\r\n startDay: DayType,\r\n endDay: DayType,\r\n hoursInfo: string,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): IHoursDisplayInfo => {\r\n return {\r\n startDayShort: getShortTimeString(startDay, resources),\r\n startDayFull: getFullTimeString(startDay, resources),\r\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\r\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\r\n timeRange: hoursInfo\r\n };\r\n};\r\n\r\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\r\n if (firstLine.isClosed && secondLine.isClosed) {\r\n return true;\r\n }\r\n\r\n if (!firstLine.isClosed && !secondLine.isClosed) {\r\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\r\n return {\r\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\r\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\r\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\r\n };\r\n};\r\n\r\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\r\n if (hoursInfo.isClosed) {\r\n return resources.closedText;\r\n }\r\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\r\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\r\n\r\n return `${openFrom}–${openTo}`;\r\n};\r\n\r\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\r\n const storeHoursList: IHoursDisplayInfo[] = [];\r\n\r\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\r\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\r\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\r\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\r\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\r\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\r\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\r\n\r\n let periodStart: DayType = 'MON';\r\n let periodEnd: DayType = 'MON';\r\n\r\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\r\n\r\n periodStart = 'TUE';\r\n }\r\n periodEnd = 'TUE';\r\n\r\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\r\n\r\n periodStart = 'WED';\r\n }\r\n periodEnd = 'WED';\r\n\r\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\r\n\r\n periodStart = 'THU';\r\n }\r\n periodEnd = 'THU';\r\n\r\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\r\n\r\n periodStart = 'FRI';\r\n }\r\n periodEnd = 'FRI';\r\n\r\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\r\n\r\n periodStart = 'SAT';\r\n }\r\n periodEnd = 'SAT';\r\n\r\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\r\n\r\n periodStart = 'SUN';\r\n }\r\n periodEnd = 'SUN';\r\n\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\r\n\r\n return storeHoursList;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\n// import { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\r\nimport { IStoreSelectorLocationLineItemProps, IStoreSelectorLocationLineItemResources } from '../../find-store-worldwide';\r\n\r\n// /**\r\n// * Store Locator line item resources.\r\n// */\r\n// export interface IStoreSelectorLocationLineItemResources {\r\n// storeHoursHeader: string;\r\n// closedText: string;\r\n// storeLabelRetailer: string;\r\n// storeLabelVenchi: string;\r\n// goToStoreWebPage: string;\r\n\r\n// days: {\r\n// monday: string;\r\n// tuesday: string;\r\n// wednesday: string;\r\n// thursday: string;\r\n// friday: string;\r\n// saturday: string;\r\n// sunday: string;\r\n// mondayFull: string;\r\n// tuesdayFull: string;\r\n// wednesdayFull: string;\r\n// thursdayFull: string;\r\n// fridayFull: string;\r\n// saturdayFull: string;\r\n// sundayFull: string;\r\n// };\r\n// }\r\n\r\n// /**\r\n// * Store Locator line item props.\r\n// */\r\n// export interface IStoreSelectorLocationLineItemProps {\r\n// location: OrgUnitLocation;\r\n// storeHours?: StoreHours;\r\n\r\n// // hideStockStatus?: boolean;\r\n// // isInStock?: boolean;\r\n// // isCurrentLocation?: boolean;\r\n\r\n// resources: IStoreSelectorLocationLineItemResources;\r\n// // stockStatusLabel?: string;\r\n// // storeLocatorView?: boolean;\r\n// // isPreferredStoreEnabled?: boolean;\r\n// index: string;\r\n// // preferredStoreLocationId: string | null;\r\n// // storePickUpOptionList?: DeliveryOption[];\r\n// // productPickUpOptionList?: DeliveryOption[];\r\n// // filteredPickupMode?: string;\r\n// // shouldShowIndex?: boolean;\r\n// baseUrl?: string;\r\n// shouldShowStorePageLinks?: boolean;\r\n// storePageLinksCountries?: string[];\r\n// baseClassName?: string;\r\n\r\n// /**\r\n// * The telemetry content.\r\n// */\r\n// telemetryContent?: ITelemetryContent;\r\n// preferredDistanceUnit: string;\r\n// isLocationDisabled?: boolean;\r\n// // handlers: {\r\n// // onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n// // onSetAsPreferredStore(locationId: string | undefined): void;\r\n// // onRemovePreferredStore(): void;\r\n// // };\r\n// }\r\n\r\nconst hasStoreHoursInfo = (storeHours: StoreHours | undefined, location: OrgUnitLocation): boolean => {\r\n if (storeHours?.RegularStoreHours || (location.OpenFrom && location.OpenTo)) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Function to render store hours.\r\n * @param storeHours - Store Hours object.\r\n * @param location - Store Unit.\r\n * @param resources - Resources.\r\n * @returns - Jsx element.\r\n */\r\nexport const renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n location: OrgUnitLocation,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day houts\r\n if (storeHours?.RegularStoreHours) {\r\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\r\n return (\r\n \r\n \r\n \r\n {\r\n //TODO LOCALIZE\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {storeHoursList.map(displayTime => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
DayHours
\r\n {displayTime.endDayShort ? (\r\n <>\r\n {displayTime.startDayShort}–\r\n {displayTime.endDayShort}\r\n \r\n ) : (\r\n {displayTime.startDayShort}\r\n )}\r\n {displayTime.timeRange}
\r\n );\r\n // return (\r\n //
\r\n // {storeHoursList.map(displayTime => (\r\n //
\r\n // {displayTime.endDayShort ? (\r\n //
\r\n // {displayTime.startDayShort}–\r\n // {displayTime.endDayShort}\r\n //
\r\n // ) : (\r\n //
\r\n // {displayTime.startDayShort}\r\n //
\r\n // )}\r\n //
{displayTime.timeRange}
\r\n //
\r\n // ))}\r\n //
\r\n // );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\r\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\r\n\r\n return (\r\n
\r\n {storeOpenFrom}-{storeOpenTo}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Function to return distance measure unit.\r\n * @param distance - Store location within radius.\r\n * @param preferredDistanceUnit - Unit configuration.\r\n * @param isLocationDisabled - Flag to check user location.\r\n * @returns - Unit of distance.\r\n */\r\nexport const buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < 1) {\r\n return `(<1 ${preferredDistanceUnit})`;\r\n }\r\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\r\n};\r\n\r\n/**\r\n * Function to store contact.\r\n * @param contacts - Store location within radius.\r\n * @returns - Return primary contact number of store.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport function formatAddress(location: OrgUnitLocation): string {\r\n const addressParts = [];\r\n\r\n // Street and Street Number\r\n if (location.Street || location.StreetNumber) {\r\n addressParts.push(`${location.Street || ''} ${location.StreetNumber || ''}`.trim());\r\n }\r\n\r\n // District and Building Compliment\r\n const districtBuildingParts = [];\r\n if (location.DistrictName) {\r\n districtBuildingParts.push(location.DistrictName);\r\n }\r\n if (location.BuildingCompliment) {\r\n districtBuildingParts.push(location.BuildingCompliment);\r\n }\r\n if (districtBuildingParts.length > 0) {\r\n addressParts.push(districtBuildingParts.join(', '));\r\n }\r\n\r\n // City, County, State\r\n const cityCountyStateParts = [];\r\n if (location.City) {\r\n cityCountyStateParts.push(location.City);\r\n }\r\n if ((location.State || location.StateName) && !(location.Country === 'ITA')) {\r\n cityCountyStateParts.push(location.State || location.StateName);\r\n }\r\n if (cityCountyStateParts.length > 0) {\r\n addressParts.push(cityCountyStateParts.join(', '));\r\n }\r\n\r\n // Zipcode\r\n if (location.Zip) {\r\n addressParts.push(location.Zip);\r\n }\r\n\r\n // Country\r\n if (location.Country) {\r\n addressParts.push(location.Country);\r\n }\r\n\r\n return addressParts.join('\\n');\r\n}\r\n/**\r\n * Renders store location line items.\r\n * @param props - Store location line items props.\r\n * @returns - HTML.\r\n */\r\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\r\n const {\r\n location,\r\n resources,\r\n storeHours,\r\n index,\r\n isLocationDisabled,\r\n storePageLinksCountries,\r\n shouldShowStorePageLinks,\r\n baseUrl,\r\n baseClassName\r\n } = props;\r\n\r\n var storeName: string | undefined = location.OrgUnitName;\r\n const retailer = storeName?.startsWith('R ') ? true : false;\r\n if (storeName && retailer) {\r\n storeName = storeName.slice(2);\r\n }\r\n const storeUrl = storeName\r\n ?.toLowerCase()\r\n .replace(/[ .&@',]/g, '-')\r\n .replace(/-+/g, '-');\r\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\r\n const storeAddress: string = formatAddress(location);\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n const displayStoreHours = hasStoreHoursInfo(storeHours, location);\r\n const parentClassName = baseClassName ? baseClassName : 'ms-store-select-venchi__location-line-item';\r\n\r\n const urlStorePage = (): JSX.Element | null => {\r\n if (!retailer && shouldShowStorePageLinks && location.Country && storePageLinksCountries?.includes(location.Country)) {\r\n return (\r\n
\r\n \r\n \r\n {resources.goToStoreWebPage}\r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n /* eslint-disable prettier/prettier */\r\n return (\r\n
\r\n
\r\n

\r\n {`${retailer ? resources.storeLabelRetailer : resources.storeLabelVenchi} ${index}`}\r\n {distanceAsString ?\r\n \r\n {' '}\r\n {distanceAsString}\r\n : false}\r\n

\r\n

{storeName}

\r\n
\r\n
\r\n
\r\n {storeAddress && (\r\n
\r\n \r\n {storeAddress}\r\n
\r\n )}\r\n {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )}\r\n {urlStorePage()}\r\n
\r\n {displayStoreHours && (\r\n
\r\n

{resources.storeHoursHeader}

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

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const StoreSelectorWaiting: React.FC = () => (\r\n
\r\n);\r\n\r\nexport interface IStoreSelectorTermsOfServiceProps {\r\n link?: ITermsOfServiceLinkData;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\r\n if (link) {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-store-select-venchi__terms-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport interface IStoreSelectorFoundLocationsMessage {\r\n resources: IFindStoreWorldwideResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n includeRetailers: boolean;\r\n forSearchBar: boolean;\r\n shouldDisplayLabel: boolean;\r\n}\r\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n resources,\r\n includeRetailers,\r\n forSearchBar,\r\n shouldDisplayLabel\r\n}) => {\r\n if (locations) {\r\n const countRetailers: number = locations.filter(loc => {\r\n return loc.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName?.startsWith('R ') ? true : false;\r\n }).length;\r\n const countVenchiStores: number = locations.length - countRetailers;\r\n return (\r\n \r\n {includeRetailers\r\n ? resources.storeAndRetailersAllCountMessage\r\n .replace('{count}', countVenchiStores.toString())\r\n .replace('{countRetailers}', countRetailers.toString())\r\n : resources.storeAllCountMessage.replace('{count}', countVenchiStores.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent,\r\n NodeTag,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { buildDistanceString } from '../find-store-worldwide-location-line-item';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface ISelectedStoreResources {\r\n closedText: string;\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreProps {\r\n className?: string;\r\n shouldHideStockStatus?: boolean;\r\n isCurrentLocation?: boolean;\r\n isInStock?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n resources: ISelectedStoreResources;\r\n stockStatusLabel?: string;\r\n isLocationDisabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n storeRenderedComponent?: React.ReactNode;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreViewProps {\r\n isCurrentLocation?: boolean;\r\n canSelectLocation?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n deliveryOptions?: DeliveryOption[];\r\n resources: ISelectedStoreResources;\r\n storeRenderedComponent: React.ReactNode;\r\n storeDetailsMain: INodeProps;\r\n storeHeader: INodeProps;\r\n storeName: React.ReactNode;\r\n storeDistance: React.ReactNode;\r\n storeDetailsAvailabilityContainer: INodeProps;\r\n currentLocation: React.ReactNode;\r\n storeDetailsCloseButton?: React.ReactNode;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n };\r\n}\r\n\r\n/**\r\n * On store details close functionality.\r\n * @param props -Store locator location items.\r\n * @returns Void promise.\r\n */\r\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\r\n await props.handlers.closeStoreDetailsModal();\r\n};\r\n\r\n/**\r\n * Renders selected store details.\r\n * @param props - Store location details props.\r\n * @returns - Selected Store view props.\r\n */\r\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\r\n const {\r\n className,\r\n shouldHideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n selectedStore,\r\n resources,\r\n isLocationDisabled,\r\n telemetryContent,\r\n preferredDistanceUnit,\r\n storeRenderedComponent\r\n } = props;\r\n\r\n const parentClassName = className ? className : 'ms-store-select-venchi__map__selected_store';\r\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\r\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\r\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\r\n const canSelectLocation = !shouldHideStockStatus && isInStock;\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n\r\n const viewProps: ISelectedStoreViewProps = {\r\n storeRenderedComponent,\r\n selectedStore,\r\n isCurrentLocation,\r\n canSelectLocation,\r\n resources,\r\n storeDetailsMain: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__main`\r\n },\r\n storeHeader: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__header`\r\n },\r\n storeName: {storeName},\r\n storeDetailsCloseButton: \r\n {recallDismissable ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GenericPopupView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {successMessage &&\r\n successMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {buttons &&\r\n buttons.map((button: React.ReactNode) => {\r\n return <>{button};\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = (\r\n { localAccount, items, emailVerification, buttons, errorMessage, disclaimer },\r\n props\r\n) => {\r\n const europe = ['/fr', '/de'];\r\n const locale = props?.context?.request?.locale;\r\n const uiLocales = props?.context?.request?.query.ui_locales;\r\n const regionCRM = europe.includes(uiLocales) ? uiLocales : props.config.RegionCRM;\r\n\r\n const [birthDate, setBirthDate] = React.useState('');\r\n const [formatDateState, setFormatDateState] = React.useState(true);\r\n const pattern = /^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^((16|[248][048]|[3579][26])00)|(1[6789]|[2-9][0-9])(0[48]|[13579][26]|[2468][048])\\/02\\/(0[1-9]|1[0-9]|2[0-9])$|^(1[6789]|[2-9][0-9])[0-9]{2}\\/02\\/(0[1-9]|1[0-9]|2[0-8])$/gm;\r\n const patternUS = /^((0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^02\\/(0[1-9]|1[0-9]|2[0-9])$/gm;\r\n\r\n const checkDate = (event: React.KeyboardEvent) => {\r\n const value = event.currentTarget.value;\r\n const today = new Date();\r\n if (value !== '' && (!value.match(locale !== 'en-US' ? pattern : patternUS) || today < new Date(value))) {\r\n setFormatDateState(false);\r\n } else {\r\n setFormatDateState(true);\r\n }\r\n if (locale === 'en-US') {\r\n setBirthDate(`1900/${value}`);\r\n }\r\n };\r\n if (typeof window !== 'undefined') {\r\n const signUpButton: HTMLElement = document.getElementById('continue') as HTMLElement;\r\n\r\n if (signUpButton !== undefined) {\r\n signUpButton.onclick = e => {\r\n if (!formatDateState) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n }\r\n }\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n
\r\n \r\n {formatDateState === false ? (\r\n

{props.resources.birthdayErrorText}

\r\n ) : (\r\n ''\r\n )}\r\n {locale !== 'en-US' ? (\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n ) : (\r\n <>\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n \r\n \r\n )}\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {props.config.renderThirdPartyPrivacy && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n
\r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount, props)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
    \n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n \n {errorMessage}\n {products}\n \n {pagination}\n
    \n
    \n
    \n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

    \n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

    \n
    \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n"],"names":["React","secondsToTime","seconds","undefined","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","resources","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","StoreSelectorLocationLineItemComponent","props","_storeName","_storeName2","location","index","storePageLinksCountries","shouldShowStorePageLinks","baseUrl","baseClassName","storeName","OrgUnitName","retailer","startsWith","slice","storeUrl","toLowerCase","replace","distanceAsString","Distance","storeAddress","addressParts","Street","StreetNumber","trim","districtBuildingParts","DistrictName","BuildingCompliment","length","join","cityCountyStateParts","City","State","StateName","Country","Zip","formatAddress","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","ArrayExtensions","hasElements","primaryPhoneContact","find","IsPrimary","Locator","extractPhoneNumber","Contacts","displayStoreHours","hasStoreHoursInfo","RegularStoreHours","OpenFrom","OpenTo","parentClassName","className","storeLabelRetailer","storeLabelVenchi","includes","target","href","rel","goToStoreWebPage","storeHoursHeader","renderStoreHours","scope","map","displayTime","key","JSON","stringify","title","storeOpenFrom","storeOpenTo","StoreSelectorLocationLines","constructor","super","onClickHandler","orgUnitLocation","this","onClick","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_mapResources","timeText","storeHoursClosedText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","componentDidMount","locations","_stores","_sortStores","reaction","render","classnames","show","displayList","role","store","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","selected","ref","StoreHours","toString","telemetryContent","stores","isPreferredStore","value","_value$OrgUnitAvailab","isPreferredStoreEnabled","preferredStoreLocationId","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","searchSectionRef","previousValue","isSearchResultOpened","setScrollPositionToSearch","_this$searchSectionRe","offsetParent","window","scrollTo","top","behavior","_handleInputKeyPress","event","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","getAttribute","_searchTextChanged","async","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","preventDefault","blur","performSearch","renderToggleMapButton","toggleButtonText","locatorView","shouldDisplayList","handleButtonClick","onToggleListMapViewState","toggleButtonClass","Object","assign","toggleMapViewAttributes","state","payLoad","getPayloadObject","TelemetryConstant","SearchStore","storeSearchAttributes","getTelemetryAttributes","contentAction","etext","ShowAllStore","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","viewListText","viewMapText","includeRetailersButtonLabel","id","isMapDisabled","displayRetailers","onDisplayRetailers","locationsMessage","displayIncludeRetailersButton","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","onChange","onKeyUp","color","CustomInput","checked","isChecked","label","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","requestContext","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","includeRetailers","forSearchBar","shouldDisplayLabel","countRetailers","loc","_loc$OrgUnitAvailabil","countVenchiStores","storeAndRetailersAllCountMessage","storeAllCountMessage","storeDetailsModalHandler","handlers","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","isCurrentLocation","isInStock","selectedStore","storeRenderedComponent","canSelectLocation","PickupInStore","PreferredStore","RemovePreferredStore","storeDetailsMain","tag","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","currentLocation","onSelected","searchRadiusUnit","StoreSelector","_this$props$config$de","renderSelectedStore","data","storeSelectorStateManager","result","storeLocations","context","selectedStoreIndex","findIndex","selectedStoreResources","currentUrl","request","url","requestUrl","substring","lastIndexOf","storeIndexString","selectedProps","_isCurrentLocation","alreadySelectedLocation","_onOrgUnitLocationSelected","onSetAsPreferredStore","_setPreferredStore","onRemovePreferredStore","_removePreferredStore","_closeStoreDetailModal","config","displayStorePageLinks","storePageLinksContries","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","setState","filteredPickupMode","onDisplayRetailersHandler","displayRetailersValue","onFilterLocations","_location$OrgUnitPick","OrgUnitPickUpDeliveryModes","DeliveryOptions","some","deliveryOption","Code","_attachMapAutoSuggest","autoSuggestOptions","telemetry","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","availabilitiesWithHours","preferredStore","_store$OrgUnitAvailab2","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","geoLocate","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","navigator","geolocation","getCurrentPosition","position","coords","error","PERMISSION_DENIED","isSeeAllStoreValue","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","input","onLocationSelected","Promise","resolve","preferredLocationId","StoreId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","retailersLookup","distanceUnitValue","SearchRadiusUnit","kilometers","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getOrgUnitLocationByArea","calRadius","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByAreaDataAction","deliveryMode","warning","selectedLocation","defaultIncludeRetailers","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","isDialogOpen","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeLocationList","_this$state$displayRe","_this$state$displayRe2","_storeSelectorStateMa3","app","appConfig","slots","maps","mapSlot","currentViewport","isMobile","variant","VariantType","Browser","isMobileDevice","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","kilometersShortText","milesShortText","locationListProps","_getStoreLocationListProps","locationsMessageForSearch","hasMapSlot","locationsMessageForList","origin","sitePath","viewProps","ModuleProps","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","HeaderProps","text","onEdit","FooterContainerProps","FooterContainerPropsMaps","SearchBarSectionMapOnlyMobileClassName","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","search","showAllStores","onShowAllStores","spinner","locationsList","outOfStockThreshold","enableOutOfStockCheck","enableStockCheck","productPickUpDeliveryOptions","deliveryOptions","shouldShowIndex","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","locationOpen","openFrom","openTo","Module","Node","GenericPopup","popupVisible","recallVisible","_onDismissRecall","createCookieRecall","_onDismissPopup","recallEnabled","recallShowAfterPopup","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","classNamePopup","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","cookie","Cookies","hidePopupIfCookieIsSet","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","expires","set","recallDismissableForDays","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","_window$dataLayer","_window$dataLayer$pus","modalName","dataLayer","call","eventCategory","eventAction","eventLabel","handleClose","popupElement","document","querySelector","form","getElementsByTagName","_window$dataLayer2","_window$dataLayer2$pu","Modal","ModalHeader","ModalBody","renderModuleAttributes","content","SignUpItem","wrapper","errorMessage","SignUpEmailVerification","email","buttonWrapper","buttons","successMessage","button","SignUpLoading","_ref4","modal","modalBody","icon","signUp","viewState","loading","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","LocalAccount","_props$context","_props$context2","localAccount","items","emailVerification","disclaimer","uiLocales","query","ui_locales","regionCRM","RegionCRM","birthDate","setBirthDate","formatDateState","setFormatDateState","pattern","patternUS","checkDate","currentTarget","today","match","signUpButton","getElementById","onclick","e","stopPropagation","item","isRequired","verificationControlWrapper","htmlFor","birthdayLabelText","birthdayErrorText","maxLength","onPaste","BirthdayText","renderThirdPartyPrivacy","defaultChecked","textGenericMarketing","required","textThirdParty","AccountCustomerBalanceTile","_initState","hasError","ErrorComponent","apiGenericErrorMessage","isCustomerAccountPaymentEnabled","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","nextProps","nextState","links","Heading","headingTag","isDetailsLinkDisplayed","LinksComponent","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","computed","_mapEditableLinks","linkdata","editableLinks","forEach","attributes","additionalProperties","BusinessPartnerPromotionTermsParagraph","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","callerContext","showSubmitButton","showTermsOfService","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","termsOfServiceModalHeading","MsDyn365","submitButton","submitRequestLabel","disabled","notificationBar","Alert","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","user","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","_getCategoryImage","categoryImageUrl","generateImageUrl","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","bind","isBrowser","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","Drawer","toggleButtonProps","openGlyph","onToggle","collapseProps","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","round","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","recommendation","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","static","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","_this$menuItemRef$cur","children","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","then","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","promoCodeHeadingText","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","customResizeThrottledEventHandler","hamburgerAriaLabel","_renderCollapseMenu","Collapse","isNullOrWhitespace","entries","parentMenuId","menu","one","Number","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","parse"],"sourceRoot":""}